[Logbook Advanced] Fixed mode listing and search
这个提交包含在:
		
							父节点
							
								
									e16e7ed18a
								
							
						
					
					
						当前提交
						3ab8204009
					
				
					共有  3 个文件被更改,包括 33 次插入 和 68 次删除
				
			
		|  | @ -35,21 +35,6 @@ class Logbookadvanced extends CI_Controller { | ||||||
| 		} | 		} | ||||||
| 		ksort($deOptions); | 		ksort($deOptions); | ||||||
| 		$deOptions = array_keys($deOptions); | 		$deOptions = array_keys($deOptions); | ||||||
| 		$modes = []; |  | ||||||
| 		if ($stationIds !== []) { |  | ||||||
| 			foreach ($this->logbookadvanced_model->get_worked_modes($stationIds) as $mode) { |  | ||||||
| 				$key = $mode['mode']; |  | ||||||
| 				if ($mode['submode'] != null) { |  | ||||||
| 					$key .= "|" . $mode['submode']; |  | ||||||
| 				} |  | ||||||
| 
 |  | ||||||
| 				if ($mode['submode'] == null) { |  | ||||||
| 					$modes[$key] = $mode['mode']; |  | ||||||
| 				} else { |  | ||||||
| 					$modes[$key] = $mode['mode'] . " | ".$mode['submode']; |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 
 | 
 | ||||||
| 		$data = []; | 		$data = []; | ||||||
| 		$data['page_title'] = "Advanced logbook"; | 		$data['page_title'] = "Advanced logbook"; | ||||||
|  | @ -58,7 +43,7 @@ class Logbookadvanced extends CI_Controller { | ||||||
| 		$pageData = []; | 		$pageData = []; | ||||||
| 		$pageData['datePlaceholder'] = 'DD/MM/YYYY'; | 		$pageData['datePlaceholder'] = 'DD/MM/YYYY'; | ||||||
| 		$pageData['deOptions'] = $deOptions; | 		$pageData['deOptions'] = $deOptions; | ||||||
| 		$pageData['modes'] = $modes; | 		$pageData['modes'] = $this->logbookadvanced_model->get_modes(); | ||||||
| 		$pageData['dxccarray'] = $this->logbook_model->fetchDxcc(); | 		$pageData['dxccarray'] = $this->logbook_model->fetchDxcc(); | ||||||
| 		$pageData['iotaarray'] = $this->logbook_model->fetchIota(); | 		$pageData['iotaarray'] = $this->logbook_model->fetchIota(); | ||||||
| 		 | 		 | ||||||
|  |  | ||||||
|  | @ -2,48 +2,6 @@ | ||||||
| use Cloudlog\QSLManager\QSO; | use Cloudlog\QSLManager\QSO; | ||||||
| 
 | 
 | ||||||
| class Logbookadvanced_model extends CI_Model { | class Logbookadvanced_model extends CI_Model { | ||||||
|     /** |  | ||||||
| 	 * Returns worked modes in the supplied stations as a simple array |  | ||||||
| 	 * @param array $stationIds |  | ||||||
| 	 * @return array |  | ||||||
| 	 */ |  | ||||||
| 	function get_worked_modes(array $stationIds): array	{ |  | ||||||
| 		$CI =& get_instance(); |  | ||||||
| 		$CI->load->model('logbooks_model'); |  | ||||||
| 
 |  | ||||||
| 		$ids =  "'".implode("','",$stationIds)."'"; |  | ||||||
| 
 |  | ||||||
| 		$sql = " |  | ||||||
| 		SELECT distinct COL_MODE, COL_SUBMODE |  | ||||||
| 		FROM `" . $this->config->item('table_name') . "` qsos |  | ||||||
| 		WHERE qsos.station_id IN (".$ids.") |  | ||||||
| 		ORDER BY COL_MODE, COL_SUBMODE";
 |  | ||||||
| 
 |  | ||||||
| 		$data = $this->db->query($sql); |  | ||||||
| 			 |  | ||||||
| 		$results = []; |  | ||||||
| 		foreach ($data->result() as $row) { |  | ||||||
| 			if(!empty($row->COL_SUBMODE)) { |  | ||||||
| 				$results[] = [ |  | ||||||
| 					'mode' => $row->COL_MODE, |  | ||||||
| 					'submode' => $row->COL_SUBMODE |  | ||||||
| 				]; |  | ||||||
| 			} else { |  | ||||||
| 				// if mode is not already in the results array
 |  | ||||||
| 				if (!in_array($row->COL_MODE, array_column($results, 'mode'))) { |  | ||||||
| 					$results[] = [ |  | ||||||
| 						'mode' => $row->COL_MODE, |  | ||||||
| 						'submode' => null |  | ||||||
| 					]; |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 		return $results; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
|   /* |   /* | ||||||
|    * @param array $searchCriteria |    * @param array $searchCriteria | ||||||
|    * @return array |    * @return array | ||||||
|  | @ -73,15 +31,9 @@ class Logbookadvanced_model extends CI_Model { | ||||||
| 			$binding[] = '%' . trim($searchCriteria['dx']) . '%'; | 			$binding[] = '%' . trim($searchCriteria['dx']) . '%'; | ||||||
| 		} | 		} | ||||||
| 		if ($searchCriteria['mode'] !== '') { | 		if ($searchCriteria['mode'] !== '') { | ||||||
| 			list ($mode, $subMode) = explode("|", trim($searchCriteria['mode'])); | 			$conditions[] = "(COL_MODE = ? or COL_SUBMODE = ?)"; | ||||||
| 			$mode = trim($mode); | 			$binding[] = $searchCriteria['mode']; | ||||||
| 			$subMode = trim($subMode); | 			$binding[] = $searchCriteria['mode']; | ||||||
| 			$conditions[] = "COL_MODE = ?"; |  | ||||||
| 			$binding[] = $mode; |  | ||||||
| 			if ($subMode !== '') { |  | ||||||
| 				$conditions[] = "COL_SUBMODE = ?"; |  | ||||||
| 				$binding[] = $subMode; |  | ||||||
| 			} |  | ||||||
| 		} | 		} | ||||||
| 		if ($searchCriteria['band'] !== '') { | 		if ($searchCriteria['band'] !== '') { | ||||||
| 			if($searchCriteria['band'] != "SAT") { | 			if($searchCriteria['band'] != "SAT") { | ||||||
|  | @ -237,4 +189,32 @@ class Logbookadvanced_model extends CI_Model { | ||||||
| 
 | 
 | ||||||
| 		return false; | 		return false; | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  | 	function get_modes() { | ||||||
|  | 		$CI =& get_instance(); | ||||||
|  | 		$CI->load->model('logbooks_model'); | ||||||
|  | 		$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook')); | ||||||
|  | 	 | ||||||
|  | 		if (!$logbooks_locations_array) { | ||||||
|  | 			return null; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		$modes = array(); | ||||||
|  | 	 | ||||||
|  | 		$this->db->select('distinct col_mode, coalesce(col_submode, "") col_submode', FALSE); | ||||||
|  | 		$this->db->where_in('station_id', $logbooks_locations_array); | ||||||
|  | 		$this->db->order_by('col_mode, col_submode', 'ASC'); | ||||||
|  | 
 | ||||||
|  | 		$query = $this->db->get($this->config->item('table_name')); | ||||||
|  | 	 | ||||||
|  | 		foreach($query->result() as $mode){ | ||||||
|  | 			if ($mode->col_submode == null || $mode->col_submode == "") { | ||||||
|  | 				array_push($modes, $mode->col_mode); | ||||||
|  | 			} else { | ||||||
|  | 				array_push($modes, $mode->col_submode); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		return $modes; | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  | @ -84,7 +84,7 @@ | ||||||
| 					<option value="">All</option> | 					<option value="">All</option> | ||||||
| 					<?php | 					<?php | ||||||
| 					foreach($modes as $modeId => $mode){ | 					foreach($modes as $modeId => $mode){ | ||||||
| 						?><option value="<?php echo htmlentities($modeId);?>"><?php echo htmlspecialchars($mode);?></option><?php
 | 						?><option value="<?php echo htmlspecialchars($mode);?>"><?php echo htmlspecialchars($mode);?></option><?php
 | ||||||
| 					} | 					} | ||||||
| 					?>
 | 					?>
 | ||||||
| 				</select> | 				</select> | ||||||
|  |  | ||||||
		正在加载…
	
		在新工单中引用