Add bulk download function for eqsl cards
这个提交包含在:
		
							父节点
							
								
									c6d9428678
								
							
						
					
					
						当前提交
						7705cc8dcc
					
				
					共有  2 个文件被更改,包括 89 次插入 和 13 次删除
				
			
		|  | @ -539,6 +539,57 @@ class eqsl extends CI_Controller { | |||
| 
 | ||||
| 	} | ||||
| 
 | ||||
| 	function bulk_download_image($id) { | ||||
| 		$this->load->model('Eqsl_images'); | ||||
| 
 | ||||
| 		$this->load->model('logbook_model'); | ||||
| 		$this->load->model('user_model'); | ||||
| 		$qso_query = $this->logbook_model->get_qso($id); | ||||
| 		$qso = $qso_query->row(); | ||||
| 		$qso_timestamp = strtotime($qso->COL_TIME_ON); | ||||
| 		$callsign = $qso->COL_CALL; | ||||
| 		$band = $qso->COL_BAND; | ||||
| 		$mode = $qso->COL_MODE; | ||||
| 		$year = date('Y', $qso_timestamp); | ||||
| 		$month = date('m', $qso_timestamp); | ||||
| 		$day = date('d', $qso_timestamp); | ||||
| 		$hour = date('H', $qso_timestamp); | ||||
| 		$minute = date('i', $qso_timestamp); | ||||
| 
 | ||||
| 		$query = $this->user_model->get_by_id($this->session->userdata('user_id')); | ||||
| 		$q = $query->row(); | ||||
| 		$username = $q->user_eqsl_name; | ||||
| 		$password = $q->user_eqsl_password; | ||||
| 
 | ||||
| 		$image_url = $this->electronicqsl->card_image($username, urlencode($password), $callsign, $band, $mode, $year, $month, $day, $hour, $minute); | ||||
| 		$file = file_get_contents($image_url, true); | ||||
| 
 | ||||
| 		$dom = new domDocument; | ||||
| 		$dom->loadHTML($file); | ||||
| 		$dom->preserveWhiteSpace = false; | ||||
| 		$images = $dom->getElementsByTagName('img'); | ||||
| 
 | ||||
| 		if(!isset($images) || count($images) == 0) { | ||||
| 			echo "Rate Limited"; | ||||
| 			exit; | ||||
| 		} | ||||
| 
 | ||||
| 		foreach ($images as $image) | ||||
| 		{ | ||||
| 			$content = file_get_contents("https://www.eqsl.cc".$image->getAttribute('src')); | ||||
| 			if ($content === false) { | ||||
| 				echo "No response"; | ||||
| 				exit; | ||||
| 			} | ||||
| 			$filename = uniqid().'.jpg'; | ||||
| 			if (file_put_contents('images/eqsl_card_images/' . '/'.$filename, $content) !== false) { | ||||
| 				$this->Eqsl_images->save_image($id, $filename); | ||||
| 			} | ||||
| 		} | ||||
| 		print "Image saved (QSO ID: ".$id.").<br />"; | ||||
| 
 | ||||
| 	} | ||||
| 
 | ||||
| 	public function tools() { | ||||
| 		// Check logged in
 | ||||
| 		$this->load->model('user_model'); | ||||
|  | @ -557,6 +608,16 @@ class eqsl extends CI_Controller { | |||
| 		$this->load->model('user_model'); | ||||
| 		if(!$this->user_model->authorize(2)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); } | ||||
| 
 | ||||
| 		if ($this->input->post('eqsldownload') == 'download') { | ||||
| 			$this->load->model('eqslmethods_model'); | ||||
| 			$qslsnotdownloaded = $this->eqslmethods_model->eqsl_not_yet_downloaded(); | ||||
| 			foreach ($qslsnotdownloaded->result_array() as $qsl) { | ||||
| 				//var_dump($qsl);
 | ||||
| 				$this->bulk_download_image($qsl['COL_PRIMARY_KEY']); | ||||
| 				//print "---------------------------------<br /><br />";
 | ||||
| 			} | ||||
| 		} else { | ||||
| 
 | ||||
| 			$data['page_title'] = "eQSL Card Image Download"; | ||||
| 			$this->load->model('eqslmethods_model'); | ||||
| 
 | ||||
|  | @ -567,6 +628,7 @@ class eqsl extends CI_Controller { | |||
| 			$this->load->view('eqsl/download'); | ||||
| 			$this->load->view('interface_assets/footer'); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	public function mark_all_sent() { | ||||
| 		// Check logged in
 | ||||
|  |  | |||
|  | @ -65,6 +65,20 @@ foreach ($qslsnotdownloaded->result_array() as $qsl) { | |||
| 	} | ||||
| ?>
 | ||||
| </div> | ||||
|   <div class="card-body"> | ||||
| 		<?php $this->load->view('layout/messages'); ?>
 | ||||
| 
 | ||||
| 		<?php echo form_open_multipart('eqsl/download');?>
 | ||||
| 
 | ||||
| 			<div class="form-check"> | ||||
| 			  <input class="form-check-input" type="hidden" name="eqsldownload" id="download" value="download" checked /> | ||||
| 			  <p>Cloudlog will use the eQSL credentials from your Cloudlog user profile to connect to eQSL and download confirmations.</p> | ||||
| 			</div> | ||||
| 
 | ||||
| 		<input class="btn btn-primary" type="submit" value="Download un-synced eQSL cards" /> | ||||
| 
 | ||||
| 		</form> | ||||
|   </div> | ||||
| 
 | ||||
| </div> | ||||
| </div> | ||||
|  |  | |||
		正在加载…
	
		在新工单中引用