| 
									
										
										
										
											2020-11-08 17:46:08 +08:00
										 |  |  | <?php | 
					
						
							|  |  |  | class Contesting_model extends CI_Model { | 
					
						
							| 
									
										
										
										
											2020-12-29 02:55:51 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /* | 
					
						
							|  |  |  |      * This function gets the QSOs to fill the "Contest Logbook" under the contesting form. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     function getSessionQsos($qso) { | 
					
						
							|  |  |  |         $CI =& get_instance(); | 
					
						
							|  |  |  |         $CI->load->model('Stations'); | 
					
						
							|  |  |  |         $station_id = $CI->Stations->find_active(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $qsoarray = explode(',', $qso); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $contestid = $qsoarray[2]; | 
					
						
							|  |  |  |         $date = DateTime::createFromFormat('d-m-Y H:i:s', $qsoarray[0]); | 
					
						
							|  |  |  |         $date = $date->format('Y-m-d H:i:s'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-13 18:47:17 +08:00
										 |  |  |         $sql = "SELECT date_format(col_time_on, '%d-%m-%Y %H:%i:%s') as col_time_on, col_call, col_band, col_mode,
 | 
					
						
							|  |  |  |        		col_submode, col_rst_sent, col_rst_rcvd, coalesce(col_srx, '') col_srx, coalesce(col_srx_string, '') col_srx_string, | 
					
						
							|  |  |  |        		coalesce(col_stx, '') col_stx, coalesce(col_stx_string, '') col_stx_string, coalesce(col_gridsquare, '') col_gridsquare, | 
					
						
							|  |  |  |        		coalesce(col_vucc_grids, '') col_vucc_grids FROM " .
 | 
					
						
							| 
									
										
										
										
											2020-12-29 02:55:51 +08:00
										 |  |  |             $this->config->item('table_name') . | 
					
						
							|  |  |  |             " WHERE station_id = " . $station_id . | 
					
						
							|  |  |  |             " AND COL_TIME_ON >= '" . $date . "'" . | 
					
						
							|  |  |  |             " AND COL_CONTEST_ID = '" . $contestid . "'" . | 
					
						
							|  |  |  |             " ORDER BY COL_PRIMARY_KEY ASC"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $data = $this->db->query($sql); | 
					
						
							| 
									
										
										
										
											2023-04-11 00:54:24 +08:00
										 |  |  |         return $data->result(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	function getSession() { | 
					
						
							|  |  |  |         $CI =& get_instance(); | 
					
						
							|  |  |  |         $CI->load->model('Stations'); | 
					
						
							|  |  |  |         $station_id = $CI->Stations->find_active(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $sql = "SELECT * from contest_session where station_id = " . $station_id; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $data = $this->db->query($sql); | 
					
						
							|  |  |  |         return $data->row(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	function deleteSession() { | 
					
						
							|  |  |  |         $CI =& get_instance(); | 
					
						
							|  |  |  |         $CI->load->model('Stations'); | 
					
						
							|  |  |  |         $station_id = $CI->Stations->find_active(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $sql = "delete from contest_session where station_id = " . $station_id; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $this->db->query($sql); | 
					
						
							|  |  |  | 		return; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	function setSession() { | 
					
						
							|  |  |  |         $CI =& get_instance(); | 
					
						
							|  |  |  |         $CI->load->model('Stations'); | 
					
						
							|  |  |  |         $station_id = $CI->Stations->find_active(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$qso = ""; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		if ($this->input->post('callsign')) { | 
					
						
							|  |  |  | 			$qso = xss_clean($this->input->post('start_date', true)) . ' ' . xss_clean($this->input->post('start_time', true)) . ',' . xss_clean($this->input->post('callsign', true)) . ',' . xss_clean($this->input->post('contestname', true)); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$data = array( | 
					
						
							|  |  |  | 			'contestid' 			=> xss_clean($this->input->post('contestname', true)), | 
					
						
							|  |  |  | 			'exchangetype' 			=> xss_clean($this->input->post('exchangetype', true)), | 
					
						
							|  |  |  | 			'exchangesent' 			=> xss_clean($this->input->post('exch_sent', true)), | 
					
						
							|  |  |  | 			'serialsent' 			=> xss_clean($this->input->post('exch_serial_s', true)), | 
					
						
							| 
									
										
										
										
											2023-04-11 14:14:18 +08:00
										 |  |  | 			'copytodok'             => $this->input->post('copyexchangetodok', true) == "" ? 0 : xss_clean($this->input->post('copyexchangetodok', true)), | 
					
						
							| 
									
										
										
										
											2023-04-11 00:54:24 +08:00
										 |  |  | 			'qso' 					=> $qso, | 
					
						
							|  |  |  | 			'station_id' 			=> $station_id, | 
					
						
							|  |  |  | 		); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $sql = "SELECT * from contest_session where station_id = " . $station_id; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $querydata = $this->db->query($sql); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		if ($querydata->num_rows() == 0) { | 
					
						
							|  |  |  | 			$this->db->insert('contest_session', $data); | 
					
						
							|  |  |  | 			return; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$result = $querydata->row(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		if ($result->qso != "") { | 
					
						
							|  |  |  | 			$data['qso'] = $result->qso; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$this->updateSession($data, $station_id); | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | 		return; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	function updateSession($data, $station_id) { | 
					
						
							|  |  |  | 		$this->db->where('station_id', $station_id); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$this->db->update('contest_session', $data); | 
					
						
							| 
									
										
										
										
											2020-12-29 02:55:51 +08:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-02-13 06:27:08 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     function getActivecontests() { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$sql = "SELECT name, adifname FROM contest WHERE active = 1 ORDER BY name ASC"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$data = $this->db->query($sql); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		return($data->result_array()); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	function getAllContests() { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$sql = "SELECT id, name, adifname, active FROM contest ORDER BY name ASC"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$data = $this->db->query($sql); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		return($data->result_array()); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	function delete($id) { | 
					
						
							|  |  |  | 		// Clean ID
 | 
					
						
							|  |  |  | 		$clean_id = $this->security->xss_clean($id); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		// Delete Contest
 | 
					
						
							|  |  |  | 		$this->db->delete('contest', array('id' => $clean_id)); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	function activate($id) { | 
					
						
							|  |  |  | 		// Clean ID
 | 
					
						
							|  |  |  | 		$clean_id = $this->security->xss_clean($id); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$data = array( | 
					
						
							|  |  |  | 			'active' => '1', | 
					
						
							|  |  |  | 		); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$this->db->where('id', $clean_id); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$this->db->update('contest', $data); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		return true; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	function deactivate($id) { | 
					
						
							|  |  |  | 		// Clean ID
 | 
					
						
							|  |  |  | 		$clean_id = $this->security->xss_clean($id); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$data = array( | 
					
						
							|  |  |  | 			'active' => '0', | 
					
						
							|  |  |  | 		); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$this->db->where('id', $clean_id); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$this->db->update('contest', $data); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		return true; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	function add() { | 
					
						
							|  |  |  | 		$data = array( | 
					
						
							|  |  |  | 			'name' => xss_clean($this->input->post('name', true)), | 
					
						
							|  |  |  | 			'adifname' => xss_clean($this->input->post('adifname', true)), | 
					
						
							|  |  |  | 		); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$this->db->insert('contest', $data); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	function contest($id) { | 
					
						
							|  |  |  | 		// Clean ID
 | 
					
						
							|  |  |  | 		$clean_id = $this->security->xss_clean($id); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$sql = "SELECT id, name, adifname, active FROM contest where id =" . $clean_id; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$data = $this->db->query($sql); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		return ($data->row()); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	function edit($id) { | 
					
						
							|  |  |  | 		$data = array( | 
					
						
							|  |  |  | 			'name' => xss_clean($this->input->post('name', true)), | 
					
						
							|  |  |  | 			'adifname' => xss_clean($this->input->post('adifname', true)), | 
					
						
							|  |  |  | 			'active' =>  xss_clean($this->input->post('active', true)), | 
					
						
							|  |  |  | 		); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$this->db->where('id', $id); | 
					
						
							|  |  |  | 		$this->db->update('contest', $data); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2021-10-24 01:44:41 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	function activateall() { | 
					
						
							|  |  |  | 		$data = array( | 
					
						
							|  |  |  | 			'active' => '1', | 
					
						
							|  |  |  | 		); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$this->db->update('contest', $data); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		return true; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	function deactivateall() { | 
					
						
							|  |  |  | 		$data = array( | 
					
						
							|  |  |  | 			'active' => '0', | 
					
						
							|  |  |  | 		); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$this->db->update('contest', $data); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		return true; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2021-10-24 22:48:23 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-11 00:54:24 +08:00
										 |  |  | 	function checkIfWorkedBefore($call, $band, $mode, $contest) { | 
					
						
							| 
									
										
										
										
											2021-10-24 22:48:23 +08:00
										 |  |  | 		$CI =& get_instance(); | 
					
						
							|  |  |  | 		$CI->load->model('Stations'); | 
					
						
							|  |  |  | 		$station_id = $CI->Stations->find_active(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-11 00:54:24 +08:00
										 |  |  | 		$contest_session = $this->getSession(); | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | 		if ($contest_session) { | 
					
						
							|  |  |  | 			$qsoarray = explode(',', $contest_session->qso); | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 			$date = DateTime::createFromFormat('d-m-Y H:i:s', $qsoarray[0]); | 
					
						
							|  |  |  | 			$date = $date->format('Y-m-d H:i:s'); | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 			$this->db->where('STATION_ID', $station_id); | 
					
						
							|  |  |  | 			$this->db->where('COL_CALL', xss_clean($call)); | 
					
						
							|  |  |  | 			$this->db->where("COL_BAND", xss_clean($band)); | 
					
						
							|  |  |  | 			$this->db->where("COL_CONTEST_ID", xss_clean($contest)); | 
					
						
							|  |  |  | 			$this->db->where("COL_TIME_ON >=", $date); | 
					
						
							|  |  |  | 			$this->db->group_start(); | 
					
						
							|  |  |  | 			$this->db->where("COL_MODE", xss_clean($mode)); | 
					
						
							|  |  |  | 			$this->db->or_where("COL_SUBMODE", xss_clean($mode)); | 
					
						
							|  |  |  | 			$this->db->group_end(); | 
					
						
							|  |  |  | 			$query = $this->db->get($this->config->item('table_name')); | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 			return $query; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		return; | 
					
						
							| 
									
										
										
										
											2021-10-24 22:48:23 +08:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2023-04-12 17:58:47 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-12 20:24:03 +08:00
										 |  |  | 	function export_custom($from, $to, $contest_id, $station_id) { | 
					
						
							| 
									
										
										
										
											2023-04-12 17:58:47 +08:00
										 |  |  |         $this->db->select(''.$this->config->item('table_name').'.*, station_profile.*'); | 
					
						
							|  |  |  |         $this->db->from($this->config->item('table_name')); | 
					
						
							|  |  |  |         $this->db->where($this->config->item('table_name').'.station_id', $station_id); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // If date is set, we format the date and add it to the where-statement
 | 
					
						
							|  |  |  |         if ($from != 0) { | 
					
						
							|  |  |  |             $from = DateTime::createFromFormat('Y-m-d', $from); | 
					
						
							|  |  |  |             $from = $from->format('Y-m-d'); | 
					
						
							|  |  |  |             $this->db->where("date(".$this->config->item('table_name').".COL_TIME_ON) >= '".$from."'"); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         if ($to != 0) { | 
					
						
							|  |  |  |             $to = DateTime::createFromFormat('Y-m-d', $to); | 
					
						
							|  |  |  |             $to = $to->format('Y-m-d'); | 
					
						
							|  |  |  |             $this->db->where("date(".$this->config->item('table_name').".COL_TIME_ON) <= '".$to."'"); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$this->db->where($this->config->item('table_name').'.COL_CONTEST_ID', $contest_id); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $this->db->order_by($this->config->item('table_name').".COL_TIME_ON", "ASC"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $this->db->get(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	function get_logged_contests2() { | 
					
						
							|  |  |  | 		$CI =& get_instance(); | 
					
						
							|  |  |  |         $CI->load->model('Stations'); | 
					
						
							|  |  |  |         $station_id = $CI->Stations->find_active(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$sql = "select col_contest_id, min(date(col_time_on)) mindate, max(date(col_time_on)) maxdate, year(col_time_on) year, month(col_time_on) month
 | 
					
						
							| 
									
										
										
										
											2023-04-12 19:25:15 +08:00
										 |  |  | 		from " . $this->config->item('table_name') . "  | 
					
						
							| 
									
										
										
										
											2023-04-12 17:58:47 +08:00
										 |  |  | 		where coalesce(COL_CONTEST_ID, '') <> ''  | 
					
						
							|  |  |  | 		and station_id =" . $station_id;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$sql .= " group by COL_CONTEST_ID , year(col_time_on), month(col_time_on) order by year(col_time_on) desc"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$data = $this->db->query($sql); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		return ($data->result()); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-12 20:24:03 +08:00
										 |  |  | 	function get_logged_years($station_id) { | 
					
						
							| 
									
										
										
										
											2023-04-12 17:58:47 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		$sql = "select distinct year(col_time_on) year
 | 
					
						
							| 
									
										
										
										
											2023-04-12 19:25:15 +08:00
										 |  |  | 		from " . $this->config->item('table_name') . "  | 
					
						
							| 
									
										
										
										
											2023-04-12 17:58:47 +08:00
										 |  |  | 		where coalesce(COL_CONTEST_ID, '') <> ''  | 
					
						
							|  |  |  | 		and station_id =" . $station_id;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$sql .= " order by year(col_time_on) desc"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$data = $this->db->query($sql); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-12 20:24:03 +08:00
										 |  |  | 		return $data->result(); | 
					
						
							| 
									
										
										
										
											2023-04-12 17:58:47 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-12 20:24:03 +08:00
										 |  |  | 	function get_logged_contests($station_id, $year) { | 
					
						
							| 
									
										
										
										
											2023-04-12 17:58:47 +08:00
										 |  |  | 		$sql = "select distinct col_contest_id
 | 
					
						
							| 
									
										
										
										
											2023-04-12 19:25:15 +08:00
										 |  |  | 		from " . $this->config->item('table_name') . "  | 
					
						
							| 
									
										
										
										
											2023-04-12 17:58:47 +08:00
										 |  |  | 		where coalesce(COL_CONTEST_ID, '') <> ''  | 
					
						
							|  |  |  | 		and station_id =" . $station_id .
 | 
					
						
							|  |  |  | 		" and year(col_time_on) ='" . $year . "'"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$sql .= " order by COL_CONTEST_ID asc"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$data = $this->db->query($sql); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $data->result(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-12 20:24:03 +08:00
										 |  |  | 	function get_contest_dates($station_id, $year, $contestid) { | 
					
						
							| 
									
										
										
										
											2023-04-12 21:01:53 +08:00
										 |  |  | 		$sql = "select distinct (date(col_time_on)) date
 | 
					
						
							| 
									
										
										
										
											2023-04-12 19:25:15 +08:00
										 |  |  | 		from " . $this->config->item('table_name') . "  | 
					
						
							| 
									
										
										
										
											2023-04-12 17:58:47 +08:00
										 |  |  | 		where coalesce(COL_CONTEST_ID, '') <> ''  | 
					
						
							|  |  |  | 		and station_id =" . $station_id .
 | 
					
						
							|  |  |  | 		" and year(col_time_on) ='" . $year . "' and col_contest_id ='" . $contestid . "'"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$data = $this->db->query($sql); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $data->result(); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2021-02-13 06:27:08 +08:00
										 |  |  | } |