| 
									
										
										
										
											2022-12-18 23:49:54 +08:00
										 |  |  | <?php | 
					
						
							|  |  |  | use Cloudlog\QSLManager\QSO; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Logbookadvanced_model extends CI_Model { | 
					
						
							|  |  |  |   /* | 
					
						
							|  |  |  |    * @param array $searchCriteria | 
					
						
							|  |  |  |    * @return array | 
					
						
							|  |  |  |    */ | 
					
						
							|  |  |  |   public function searchQsos($searchCriteria) : array { | 
					
						
							|  |  |  | 		$conditions = []; | 
					
						
							|  |  |  | 		$binding = [$searchCriteria['user_id']]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if ($searchCriteria['dateFrom'] !== '') { | 
					
						
							|  |  |  |             $from = DateTime::createFromFormat('d/m/Y', $searchCriteria['dateFrom']); | 
					
						
							|  |  |  | 			$from = $from->format('Y-m-d'); | 
					
						
							|  |  |  | 			$conditions[] = "date(COL_TIME_ON) >= ?"; | 
					
						
							|  |  |  | 			$binding[] = $from; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  |         if ($searchCriteria['dateTo'] !== '') { | 
					
						
							|  |  |  |             $to = DateTime::createFromFormat('d/m/Y', $searchCriteria['dateTo']); | 
					
						
							|  |  |  | 			$to = $to->format('Y-m-d'); | 
					
						
							|  |  |  | 			$conditions[] = "date(COL_TIME_ON) <= ?"; | 
					
						
							|  |  |  | 			$binding[] = $to; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		if ($searchCriteria['de'] !== '') { | 
					
						
							|  |  |  | 			$conditions[] = "COL_STATION_CALLSIGN = ?"; | 
					
						
							|  |  |  | 			$binding[] = trim($searchCriteria['de']); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		if ($searchCriteria['dx'] !== '') { | 
					
						
							|  |  |  | 			$conditions[] = "COL_CALL LIKE ?"; | 
					
						
							|  |  |  | 			$binding[] = '%' . trim($searchCriteria['dx']) . '%'; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		if ($searchCriteria['mode'] !== '') { | 
					
						
							| 
									
										
										
										
											2022-12-28 01:56:04 +08:00
										 |  |  | 			$conditions[] = "(COL_MODE = ? or COL_SUBMODE = ?)"; | 
					
						
							|  |  |  | 			$binding[] = $searchCriteria['mode']; | 
					
						
							|  |  |  | 			$binding[] = $searchCriteria['mode']; | 
					
						
							| 
									
										
										
										
											2022-12-18 23:49:54 +08:00
										 |  |  | 		} | 
					
						
							|  |  |  | 		if ($searchCriteria['band'] !== '') { | 
					
						
							| 
									
										
										
										
											2022-12-21 17:49:23 +08:00
										 |  |  | 			if($searchCriteria['band'] != "SAT") { | 
					
						
							|  |  |  | 				$conditions[] = "COL_BAND = ? and COL_PROP_MODE != 'SAT'"; | 
					
						
							|  |  |  | 				$binding[] = trim($searchCriteria['band']); | 
					
						
							|  |  |  | 			} else { | 
					
						
							|  |  |  | 				$conditions[] = "COL_PROP_MODE = 'SAT'"; | 
					
						
							| 
									
										
										
										
											2023-05-01 14:58:13 +08:00
										 |  |  | 				if ($searchCriteria['sats'] !== 'All') { | 
					
						
							|  |  |  | 					$conditions[] = "COL_SAT_NAME = ?"; | 
					
						
							|  |  |  | 					$binding[] = trim($searchCriteria['sats']); | 
					
						
							|  |  |  | 				} | 
					
						
							| 
									
										
										
										
											2022-12-21 17:49:23 +08:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2022-12-18 23:49:54 +08:00
										 |  |  | 		} | 
					
						
							|  |  |  | 		if ($searchCriteria['qslSent'] !== '') { | 
					
						
							|  |  |  | 			$conditions[] = "COL_QSL_SENT = ?"; | 
					
						
							|  |  |  | 			$binding[] = $searchCriteria['qslSent']; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		if ($searchCriteria['qslReceived'] !== '') { | 
					
						
							|  |  |  | 			$conditions[] = "COL_QSL_RCVD = ?"; | 
					
						
							|  |  |  | 			$binding[] = $searchCriteria['qslReceived']; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if ($searchCriteria['iota'] !== '') { | 
					
						
							|  |  |  | 			$conditions[] = "COL_IOTA = ?"; | 
					
						
							|  |  |  | 			$binding[] = $searchCriteria['iota']; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if ($searchCriteria['dxcc'] !== '') { | 
					
						
							|  |  |  | 			$conditions[] = "COL_DXCC = ?"; | 
					
						
							|  |  |  | 			$binding[] = $searchCriteria['dxcc']; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if ($searchCriteria['state'] !== '') { | 
					
						
							|  |  |  | 			$conditions[] = "COL_STATE = ?"; | 
					
						
							|  |  |  | 			$binding[] = $searchCriteria['state']; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if ($searchCriteria['gridsquare'] !== '') { | 
					
						
							|  |  |  |                 $conditions[] = "(COL_GRIDSQUARE like ? or COL_VUCC_GRIDS like ?)"; | 
					
						
							|  |  |  |                 $binding[] = '%' . $searchCriteria['gridsquare'] . '%'; | 
					
						
							|  |  |  |                 $binding[] = '%' . $searchCriteria['gridsquare'] . '%'; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if ($searchCriteria['propmode'] !== '') { | 
					
						
							|  |  |  |                 $conditions[] = "COL_PROP_MODE = ?"; | 
					
						
							|  |  |  |                 $binding[] = $searchCriteria['propmode']; | 
					
						
							| 
									
										
										
										
											2023-05-09 02:27:53 +08:00
										 |  |  |                 if($searchCriteria['propmode'] == "SAT") { | 
					
						
							|  |  |  |                         if ($searchCriteria['sats'] !== 'All') { | 
					
						
							|  |  |  |                                 $conditions[] = "COL_SAT_NAME = ?"; | 
					
						
							|  |  |  |                                 $binding[] = trim($searchCriteria['sats']); | 
					
						
							|  |  |  |                         } | 
					
						
							|  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2022-12-18 23:49:54 +08:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2023-05-01 14:58:13 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-18 23:49:54 +08:00
										 |  |  | 		$where = trim(implode(" AND ", $conditions)); | 
					
						
							|  |  |  | 		if ($where != "") { | 
					
						
							|  |  |  | 			$where = "AND $where"; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-20 01:20:55 +08:00
										 |  |  | 		$limit = $searchCriteria['qsoresults']; | 
					
						
							| 
									
										
										
										
											2022-12-18 23:49:54 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		$sql = "
 | 
					
						
							|  |  |  | 			SELECT * | 
					
						
							|  |  |  | 			FROM " . $this->config->item('table_name') . " qsos | 
					
						
							|  |  |  | 			INNER JOIN station_profile ON qsos.station_id=station_profile.station_id | 
					
						
							| 
									
										
										
										
											2023-04-27 22:00:02 +08:00
										 |  |  | 			LEFT OUTER JOIN dxcc_entities ON qsos.col_dxcc=dxcc_entities.adif | 
					
						
							| 
									
										
										
										
											2023-05-26 16:38:31 +08:00
										 |  |  | 			LEFT OUTER JOIN lotw_users ON qsos.col_call=lotw_users.callsign | 
					
						
							| 
									
										
										
										
											2022-12-18 23:49:54 +08:00
										 |  |  | 			WHERE station_profile.user_id =  ? | 
					
						
							|  |  |  | 			$where | 
					
						
							| 
									
										
										
										
											2023-01-26 07:57:38 +08:00
										 |  |  | 			ORDER BY qsos.COL_TIME_ON desc, qsos.COL_PRIMARY_KEY desc | 
					
						
							| 
									
										
										
										
											2022-12-18 23:49:54 +08:00
										 |  |  | 			LIMIT $limit | 
					
						
							|  |  |  | 		";
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$data = $this->db->query($sql, $binding); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $results = $data->result('array'); | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         $qsos = []; | 
					
						
							|  |  |  |         foreach ($results as $data) { | 
					
						
							|  |  |  |             $qsos[] = new QSO($data); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | 	    return $qsos; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-02 19:46:23 +08:00
										 |  |  |     public function getQsosForAdif($ids, $user_id, $sortorder = null) : object { | 
					
						
							| 
									
										
										
										
											2022-12-18 23:49:54 +08:00
										 |  |  | 		$binding = [$user_id]; | 
					
						
							|  |  |  |         $conditions[] = "COL_PRIMARY_KEY in ?"; | 
					
						
							|  |  |  |         $binding[] = json_decode($ids, true); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$where = trim(implode(" AND ", $conditions)); | 
					
						
							|  |  |  | 		if ($where != "") { | 
					
						
							|  |  |  | 			$where = "AND $where"; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-03 02:53:29 +08:00
										 |  |  | 		$order = $this->getSortorder($sortorder); | 
					
						
							| 
									
										
										
										
											2023-05-02 19:46:23 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-18 23:49:54 +08:00
										 |  |  |         $sql = "
 | 
					
						
							| 
									
										
										
										
											2023-06-28 15:17:48 +08:00
										 |  |  |             SELECT qsos.*, d2.*, lotw_users.*, station_profile.*, dxcc_entities.name AS station_country | 
					
						
							| 
									
										
										
										
											2022-12-18 23:49:54 +08:00
										 |  |  | 			FROM " . $this->config->item('table_name') . " qsos | 
					
						
							|  |  |  | 			INNER JOIN station_profile ON qsos.station_id = station_profile.station_id | 
					
						
							| 
									
										
										
										
											2023-04-28 21:14:59 +08:00
										 |  |  | 			LEFT OUTER JOIN dxcc_entities ON qsos.COL_MY_DXCC = dxcc_entities.adif | 
					
						
							| 
									
										
										
										
											2023-06-28 15:17:48 +08:00
										 |  |  | 			LEFT OUTER JOIN dxcc_entities d2 ON qsos.COL_DXCC = d2.adif | 
					
						
							| 
									
										
										
										
											2023-06-28 14:27:44 +08:00
										 |  |  | 			LEFT OUTER JOIN lotw_users ON qsos.col_call=lotw_users.callsign | 
					
						
							| 
									
										
										
										
											2022-12-18 23:49:54 +08:00
										 |  |  | 			WHERE station_profile.user_id =  ? | 
					
						
							|  |  |  | 			$where | 
					
						
							| 
									
										
										
										
											2023-05-01 18:35:24 +08:00
										 |  |  | 			$order | 
					
						
							| 
									
										
										
										
											2022-12-18 23:49:54 +08:00
										 |  |  | 		";
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		return $this->db->query($sql, $binding); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-03 02:53:29 +08:00
										 |  |  | 	public function getSortOrder($sortorder) { | 
					
						
							|  |  |  | 		if ($sortorder == null) { | 
					
						
							|  |  |  | 			return 'ORDER BY qsos.COL_TIME_ON desc'; | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			$sortorder = explode(',', $sortorder); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			if ($this->session->userdata('user_lotw_name') != "" && $this->session->userdata('user_eqsl_name') != ""){ | 
					
						
							|  |  |  | 				switch($sortorder[0]) { | 
					
						
							|  |  |  | 					case 1: return 'ORDER BY qsos.COL_TIME_ON ' . $sortorder[1]; | 
					
						
							|  |  |  | 					case 2: return 'ORDER BY station_profile.station_callsign ' . $sortorder[1]; | 
					
						
							|  |  |  | 					case 3: return 'ORDER BY qsos.COL_CALL ' . $sortorder[1]; | 
					
						
							|  |  |  | 					case 4: return 'ORDER BY qsos.COL_MODE' .  $sortorder[1] . ', qsos.COL_SUBMODE ' . $sortorder[1]; | 
					
						
							|  |  |  | 					case 7: return 'ORDER BY qsos.COL_BAND ' . $sortorder[1] . ', qsos.COL_SAT_NAME ' . $sortorder[1]; | 
					
						
							|  |  |  | 					case 16: return 'ORDER BY qsos.COL_COUNTRY ' . $sortorder[1]; | 
					
						
							|  |  |  | 					case 17: return 'ORDER BY qso.COL_STATE ' . $sortorder[1]; | 
					
						
							|  |  |  | 					case 18: return 'ORDER BY qsos.COL_CQZ ' . $sortorder[1]; | 
					
						
							|  |  |  | 					case 19: return 'ORDER BY qsos.COL_IOTA ' . $sortorder[1]; | 
					
						
							|  |  |  | 					default: return 'ORDER BY qsos.COL_TIME_ON desc'; | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			else if (($this->session->userdata('user_eqsl_name') != "" && $this->session->userdata('user_lotw_name') == "") || ($this->session->userdata('user_eqsl_name') == "" && $this->session->userdata('user_lotw_name') != "")) { | 
					
						
							|  |  |  | 				switch($sortorder[0]) { | 
					
						
							|  |  |  | 					case 1: return 'ORDER BY qsos.COL_TIME_ON ' . $sortorder[1]; | 
					
						
							|  |  |  | 					case 2: return 'ORDER BY station_profile.station_callsign ' . $sortorder[1]; | 
					
						
							|  |  |  | 					case 3: return 'ORDER BY qsos.COL_CALL ' . $sortorder[1]; | 
					
						
							|  |  |  | 					case 4: return 'ORDER BY qsos.COL_MODE' .  $sortorder[1] . ', qsos.COL_SUBMODE ' . $sortorder[1]; | 
					
						
							|  |  |  | 					case 7: return 'ORDER BY qsos.COL_BAND ' . $sortorder[1] . ', qsos.COL_SAT_NAME ' . $sortorder[1]; | 
					
						
							|  |  |  | 					case 15: return 'ORDER BY qsos.COL_COUNTRY ' . $sortorder[1]; | 
					
						
							|  |  |  | 					case 16: return 'ORDER BY qso.COL_STATE ' . $sortorder[1]; | 
					
						
							|  |  |  | 					case 17: return 'ORDER BY qsos.COL_CQZ ' . $sortorder[1]; | 
					
						
							|  |  |  | 					case 18: return 'ORDER BY qsos.COL_IOTA ' . $sortorder[1]; | 
					
						
							|  |  |  | 					default: return 'ORDER BY qsos.COL_TIME_ON desc'; | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			else if ($this->session->userdata('user_eqsl_name') == "" && $this->session->userdata('user_lotw_name') == ""){ | 
					
						
							|  |  |  | 				switch($sortorder[0]) { | 
					
						
							|  |  |  | 					case 1: return 'ORDER BY qsos.COL_TIME_ON ' . $sortorder[1]; | 
					
						
							|  |  |  | 					case 2: return 'ORDER BY station_profile.station_callsign ' . $sortorder[1]; | 
					
						
							|  |  |  | 					case 3: return 'ORDER BY qsos.COL_CALL ' . $sortorder[1]; | 
					
						
							|  |  |  | 					case 4: return 'ORDER BY qsos.COL_MODE' .  $sortorder[1] . ', qsos.COL_SUBMODE ' . $sortorder[1]; | 
					
						
							|  |  |  | 					case 7: return 'ORDER BY qsos.COL_BAND ' . $sortorder[1] . ', qsos.COL_SAT_NAME ' . $sortorder[1]; | 
					
						
							|  |  |  | 					case 14: return 'ORDER BY qsos.COL_COUNTRY ' . $sortorder[1]; | 
					
						
							|  |  |  | 					case 15: return 'ORDER BY qso.COL_STATE ' . $sortorder[1]; | 
					
						
							|  |  |  | 					case 16: return 'ORDER BY qsos.COL_CQZ ' . $sortorder[1]; | 
					
						
							|  |  |  | 					case 17: return 'ORDER BY qsos.COL_IOTA ' . $sortorder[1]; | 
					
						
							|  |  |  | 					default: return 'ORDER BY qsos.COL_TIME_ON desc'; | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-18 23:49:54 +08:00
										 |  |  |     public function updateQsl($ids, $user_id, $method, $sent) { | 
					
						
							|  |  |  |         $this->load->model('user_model'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if(!$this->user_model->authorize(2)) { | 
					
						
							|  |  |  |             return array('message' => 'Error'); | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $data = array( | 
					
						
							|  |  |  |                 'COL_QSLSDATE' => date('Y-m-d H:i:s'), | 
					
						
							|  |  |  |                 'COL_QSL_SENT' => $sent, | 
					
						
							|  |  |  |                 'COL_QSL_SENT_VIA' => $method | 
					
						
							|  |  |  |             ); | 
					
						
							|  |  |  |             $this->db->where_in('COL_PRIMARY_KEY', json_decode($ids, true)); | 
					
						
							|  |  |  |             $this->db->update($this->config->item('table_name'), $data); | 
					
						
							|  |  |  |              | 
					
						
							|  |  |  |             return array('message' => 'OK'); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2022-12-21 05:23:22 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-28 14:27:44 +08:00
										 |  |  | 	public function updateQslReceived($ids, $user_id, $method, $sent) { | 
					
						
							|  |  |  |         $this->load->model('user_model'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if(!$this->user_model->authorize(2)) { | 
					
						
							|  |  |  |             return array('message' => 'Error'); | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $data = array( | 
					
						
							|  |  |  |                 'COL_QSLRDATE' => date('Y-m-d H:i:s'), | 
					
						
							|  |  |  |                 'COL_QSL_RCVD' => $sent, | 
					
						
							|  |  |  |                 'COL_QSL_RCVD_VIA' => $method | 
					
						
							|  |  |  |             ); | 
					
						
							|  |  |  |             $this->db->where_in('COL_PRIMARY_KEY', json_decode($ids, true)); | 
					
						
							|  |  |  |             $this->db->update($this->config->item('table_name'), $data); | 
					
						
							|  |  |  |              | 
					
						
							|  |  |  |             return array('message' => 'OK'); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-21 05:23:22 +08:00
										 |  |  | 	public function updateQsoWithCallbookInfo($qsoID, $qso, $callbook) { | 
					
						
							|  |  |  | 		$updatedData = array(); | 
					
						
							|  |  |  | 		if (!empty($callbook['name']) && empty($qso['COL_NAME'])) { | 
					
						
							|  |  |  | 			$updatedData['COL_NAME'] = $callbook['name']; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		if (!empty($callbook['gridsquare']) && empty($qso['COL_GRIDSQUARE']) && empty($qso['COL_VUCC_GRIDS'] )) { | 
					
						
							|  |  |  | 			if (strpos(trim($callbook['gridsquare']), ',') === false) { | 
					
						
							|  |  |  | 				$updatedData['COL_GRIDSQUARE'] = strtoupper(trim($callbook['gridsquare'])); | 
					
						
							|  |  |  | 			} else { | 
					
						
							|  |  |  | 				$updatedData['COL_VUCC_GRIDS'] = strtoupper(trim($callbook['gridsquare'])); | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		if (!empty($callbook['city']) && empty($qso['COL_QTH'])) { | 
					
						
							|  |  |  | 			$updatedData['COL_QTH'] = $callbook['city']; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		if (!empty($callbook['lat']) && empty($qso['COL_LAT'])) { | 
					
						
							|  |  |  | 			$updatedData['COL_LAT'] = $callbook['lat']; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		if (!empty($callbook['long']) && empty($qso['COL_LON'])) { | 
					
						
							|  |  |  | 			$updatedData['COL_LON'] = $callbook['long']; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		if (!empty($callbook['iota']) && empty($qso['COL_IOTA'])) { | 
					
						
							|  |  |  | 			$updatedData['COL_IOTA'] = $callbook['iota']; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		if (!empty($callbook['state']) && empty($qso['COL_STATE'])) { | 
					
						
							|  |  |  | 			$updatedData['COL_STATE'] = $callbook['state']; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		if (!empty($callbook['us_county']) && empty($qso['COL_USACA_COUNTIES'])) { | 
					
						
							|  |  |  | 			$updatedData['COL_USACA_COUNTIES'] = $callbook['us_county']; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		if (!empty($callbook['qslmgr']) && empty($qso['COL_QSL_VIA'])) { | 
					
						
							|  |  |  | 			$updatedData['COL_QSL_VIA'] = $callbook['qslmgr']; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		if (count($updatedData) > 0) { | 
					
						
							|  |  |  | 			$this->db->where('COL_PRIMARY_KEY', $qsoID); | 
					
						
							|  |  |  | 			$this->db->update($this->config->item('table_name'), $updatedData); | 
					
						
							|  |  |  | 			return true; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		return false; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2022-12-28 01:56:04 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	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 { | 
					
						
							| 
									
										
										
										
											2023-02-11 00:02:40 +08:00
										 |  |  | 				// Make sure we don't add LSB or USB as submodes in the array list
 | 
					
						
							|  |  |  | 				if ($mode->col_mode != "SSB") { | 
					
						
							|  |  |  | 					array_push($modes, $mode->col_submode); | 
					
						
							|  |  |  | 				} | 
					
						
							| 
									
										
										
										
											2022-12-28 01:56:04 +08:00
										 |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		return $modes; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2023-01-26 07:57:38 +08:00
										 |  |  | } |