| 
									
										
										
										
											2011-04-25 23:24:01 +08:00
										 |  |  | <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-06-17 20:52:00 +08:00
										 |  |  | /* | 
					
						
							|  |  |  | TODO | 
					
						
							|  |  |  | 	- Update Edit | 
					
						
							|  |  |  | 	- Store Radio Information | 
					
						
							|  |  |  | 	- Upload to clublog (request api key) | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-04-25 23:24:01 +08:00
										 |  |  | class QSO extends CI_Controller { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-06 00:56:42 +08:00
										 |  |  | 	function __construct() | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		parent::__construct(); | 
					
						
							|  |  |  | 		$this->lang->load('qso'); | 
					
						
							| 
									
										
										
										
											2021-02-26 17:37:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-06 00:56:42 +08:00
										 |  |  | 		$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'); } | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-04-25 23:24:01 +08:00
										 |  |  | 	public function index() | 
					
						
							|  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2012-04-08 20:17:14 +08:00
										 |  |  | 		$this->load->model('cat'); | 
					
						
							| 
									
										
										
										
											2019-01-02 03:14:25 +08:00
										 |  |  | 		$this->load->model('stations'); | 
					
						
							| 
									
										
										
										
											2011-07-22 08:08:47 +08:00
										 |  |  | 		$this->load->model('logbook_model'); | 
					
						
							| 
									
										
										
										
											2011-08-20 00:12:13 +08:00
										 |  |  | 		$this->load->model('user_model'); | 
					
						
							| 
									
										
										
										
											2020-05-17 20:57:28 +08:00
										 |  |  | 		$this->load->model('modes'); | 
					
						
							| 
									
										
										
										
											2022-09-09 02:12:11 +08:00
										 |  |  |         $this->load->model('bands'); | 
					
						
							| 
									
										
										
										
											2020-05-17 20:57:28 +08:00
										 |  |  |         if(!$this->user_model->authorize(2)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); } | 
					
						
							| 
									
										
										
										
											2021-02-26 17:37:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-27 22:43:07 +08:00
										 |  |  | 		$data['active_station_profile'] = $this->stations->find_active(); | 
					
						
							| 
									
										
										
										
											2022-02-18 21:46:16 +08:00
										 |  |  |          | 
					
						
							| 
									
										
										
										
											2012-04-08 20:17:14 +08:00
										 |  |  | 		$data['notice'] = false; | 
					
						
							| 
									
										
										
										
											2021-10-31 17:25:35 +08:00
										 |  |  | 		$data['stations'] = $this->stations->all_of_user(); | 
					
						
							| 
									
										
										
										
											2012-04-08 20:17:14 +08:00
										 |  |  | 		$data['radios'] = $this->cat->radios(); | 
					
						
							| 
									
										
										
										
											2019-05-21 20:44:22 +08:00
										 |  |  | 		$data['query'] = $this->logbook_model->last_custom('5'); | 
					
						
							| 
									
										
										
										
											2020-04-13 16:34:02 +08:00
										 |  |  | 		$data['dxcc'] = $this->logbook_model->fetchDxcc(); | 
					
						
							| 
									
										
										
										
											2020-05-17 20:57:28 +08:00
										 |  |  | 		$data['iota'] = $this->logbook_model->fetchIota(); | 
					
						
							|  |  |  | 		$data['modes'] = $this->modes->active(); | 
					
						
							| 
									
										
										
										
											2022-10-06 05:23:32 +08:00
										 |  |  | 		$data['bands'] = $this->bands->get_user_bands_for_qso_entry(); | 
					
						
							|  |  |  | 		$data['sat_active'] = array_search("SAT", $this->bands->get_user_bands(), true); | 
					
						
							| 
									
										
										
										
											2021-02-26 17:37:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-06-17 20:52:00 +08:00
										 |  |  | 		$this->load->library('form_validation'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$this->form_validation->set_rules('start_date', 'Date', 'required'); | 
					
						
							|  |  |  | 		$this->form_validation->set_rules('start_time', 'Time', 'required'); | 
					
						
							|  |  |  | 		$this->form_validation->set_rules('callsign', 'Callsign', 'required'); | 
					
						
							| 
									
										
										
										
											2022-03-28 18:41:14 +08:00
										 |  |  | 		$this->form_validation->set_rules('locator', 'Locator', 'callback_check_locator'); | 
					
						
							| 
									
										
										
										
											2011-06-17 20:52:00 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		if ($this->form_validation->run() == FALSE) | 
					
						
							|  |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2011-11-05 01:32:03 +08:00
										 |  |  | 			$data['page_title'] = "Add QSO"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-21 20:44:22 +08:00
										 |  |  | 			$this->load->view('interface_assets/header', $data); | 
					
						
							| 
									
										
										
										
											2011-11-05 01:32:03 +08:00
										 |  |  | 			$this->load->view('qso/index'); | 
					
						
							| 
									
										
										
										
											2019-05-21 20:44:22 +08:00
										 |  |  | 			$this->load->view('interface_assets/footer'); | 
					
						
							| 
									
										
										
										
											2011-06-17 20:52:00 +08:00
										 |  |  | 		} | 
					
						
							|  |  |  | 		else | 
					
						
							|  |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2011-07-22 08:08:47 +08:00
										 |  |  | 			// Store Basic QSO Info for reuse
 | 
					
						
							| 
									
										
										
										
											2019-02-26 06:13:09 +08:00
										 |  |  | 			// Put data in an array first, then call set_userdata once.
 | 
					
						
							|  |  |  | 			// This solves the problem of CI dumping out the session
 | 
					
						
							|  |  |  | 			// cookie each time set_userdata is called.
 | 
					
						
							|  |  |  | 			// For more info, see http://bizhole.com/codeigniter-nginx-error-502-bad-gateway/
 | 
					
						
							|  |  |  | 			// $qso_data = [
 | 
					
						
							|  |  |  | 			// 18-Jan-2016 - make php v5.3 friendly!
 | 
					
						
							|  |  |  | 			$qso_data = array( | 
					
						
							| 
									
										
										
										
											2020-05-02 22:54:13 +08:00
										 |  |  |                 'start_date' => $this->input->post('start_date'), | 
					
						
							|  |  |  |                 'start_time' => $this->input->post('start_time'), | 
					
						
							| 
									
										
										
										
											2020-06-05 04:29:20 +08:00
										 |  |  | 				'time_stamp' => time(), | 
					
						
							| 
									
										
										
										
											2019-02-26 06:13:09 +08:00
										 |  |  | 				'band' => $this->input->post('band'), | 
					
						
							| 
									
										
										
										
											2020-12-28 21:53:44 +08:00
										 |  |  | 				'band_rx' => $this->input->post('band_rx'), | 
					
						
							| 
									
										
										
										
											2019-02-26 06:13:09 +08:00
										 |  |  | 				'freq' => $this->input->post('freq_display'), | 
					
						
							|  |  |  | 				'freq_rx' => $this->input->post('freq_display_rx'), | 
					
						
							|  |  |  | 				'mode' => $this->input->post('mode'), | 
					
						
							|  |  |  | 				'sat_name' => $this->input->post('sat_name'), | 
					
						
							|  |  |  | 				'sat_mode' => $this->input->post('sat_mode'), | 
					
						
							| 
									
										
										
										
											2020-03-03 03:53:50 +08:00
										 |  |  | 				'prop_mode' => $this->input->post('prop_mode'), | 
					
						
							| 
									
										
										
										
											2019-02-26 06:13:09 +08:00
										 |  |  | 				'radio' => $this->input->post('radio'), | 
					
						
							| 
									
										
										
										
											2020-04-13 23:47:58 +08:00
										 |  |  | 				'station_profile_id' => $this->input->post('station_profile'), | 
					
						
							|  |  |  | 				'transmit_power' => $this->input->post('transmit_power') | 
					
						
							| 
									
										
										
										
											2019-02-26 06:13:09 +08:00
										 |  |  | 			); | 
					
						
							|  |  |  | 			// ];
 | 
					
						
							| 
									
										
										
										
											2021-02-26 17:37:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-25 19:46:13 +08:00
										 |  |  | 			setcookie("radio", $qso_data['radio'], time()+3600*24*99); | 
					
						
							|  |  |  | 			setcookie("station_profile_id", $qso_data['station_profile_id'], time()+3600*24*99); | 
					
						
							| 
									
										
										
										
											2015-03-18 16:12:12 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-26 06:13:09 +08:00
										 |  |  | 			$this->session->set_userdata($qso_data); | 
					
						
							| 
									
										
										
										
											2020-03-03 03:53:50 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 			// If SAT name is set make it session set to sat
 | 
					
						
							|  |  |  | 			if($this->input->post('sat_name')) { | 
					
						
							|  |  |  |         		$this->session->set_userdata('prop_mode', 'SAT'); | 
					
						
							|  |  |  |     		} | 
					
						
							| 
									
										
										
										
											2021-02-26 17:37:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-14 22:41:24 +08:00
										 |  |  | 			// Add QSO
 | 
					
						
							|  |  |  | 			// $this->logbook_model->add();
 | 
					
						
							|  |  |  | 			//change to create_qso function as add and create_qso duplicate functionality
 | 
					
						
							|  |  |  | 			$this->logbook_model->create_qso(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-21 20:44:22 +08:00
										 |  |  | 			// Get last 5 qsos
 | 
					
						
							|  |  |  | 			$data['query'] = $this->logbook_model->last_custom('5'); | 
					
						
							| 
									
										
										
										
											2021-02-26 17:37:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-07-22 08:08:47 +08:00
										 |  |  | 			// Set Any Notice Messages
 | 
					
						
							| 
									
										
										
										
											2011-06-17 20:52:00 +08:00
										 |  |  | 			$data['notice'] = "QSO Added"; | 
					
						
							| 
									
										
										
										
											2021-02-26 17:37:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-06-17 20:52:00 +08:00
										 |  |  | 			// Load view to create another contact
 | 
					
						
							| 
									
										
										
										
											2011-11-05 01:32:03 +08:00
										 |  |  | 			$data['page_title'] = "Add QSO"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-21 20:44:22 +08:00
										 |  |  | 			$this->load->view('interface_assets/header', $data); | 
					
						
							| 
									
										
										
										
											2011-11-05 01:32:03 +08:00
										 |  |  | 			$this->load->view('qso/index'); | 
					
						
							| 
									
										
										
										
											2019-05-21 20:44:22 +08:00
										 |  |  | 			$this->load->view('interface_assets/footer'); | 
					
						
							| 
									
										
										
										
											2011-06-17 20:52:00 +08:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2020-11-17 02:20:45 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/* | 
					
						
							|  |  |  | 	 * This is used for contest-logging and the ajax-call | 
					
						
							|  |  |  | 	 */ | 
					
						
							|  |  |  | 	public function saveqso() { | 
					
						
							|  |  |  |         $this->load->model('logbook_model'); | 
					
						
							|  |  |  |         $this->logbook_model->create_qso(); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-02-26 17:37:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-06-17 20:52:00 +08:00
										 |  |  | 	function edit() { | 
					
						
							| 
									
										
										
										
											2021-02-26 17:37:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-07-22 08:08:47 +08:00
										 |  |  | 		$this->load->model('logbook_model'); | 
					
						
							| 
									
										
										
										
											2011-08-20 00:12:13 +08:00
										 |  |  | 		$this->load->model('user_model'); | 
					
						
							| 
									
										
										
										
											2020-05-17 21:08:21 +08:00
										 |  |  | 		$this->load->model('modes'); | 
					
						
							| 
									
										
										
										
											2011-08-20 00:12:13 +08:00
										 |  |  | 		if(!$this->user_model->authorize(2)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); } | 
					
						
							| 
									
										
										
										
											2011-07-22 08:08:47 +08:00
										 |  |  | 		$query = $this->logbook_model->qso_info($this->uri->segment(3)); | 
					
						
							| 
									
										
										
										
											2021-02-26 17:37:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-06-17 20:52:00 +08:00
										 |  |  | 		$this->load->library('form_validation'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$this->form_validation->set_rules('time_on', 'Start Date', 'required'); | 
					
						
							|  |  |  | 		$this->form_validation->set_rules('time_off', 'End Date', 'required'); | 
					
						
							|  |  |  | 		$this->form_validation->set_rules('callsign', 'Callsign', 'required'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-17 18:38:01 +08:00
										 |  |  |         $data['qso'] = $query->row(); | 
					
						
							|  |  |  |         $data['dxcc'] = $this->logbook_model->fetchDxcc(); | 
					
						
							|  |  |  |         $data['iota'] = $this->logbook_model->fetchIota(); | 
					
						
							| 
									
										
										
										
											2020-05-17 21:08:21 +08:00
										 |  |  | 		$data['modes'] = $this->modes->all(); | 
					
						
							| 
									
										
										
										
											2021-02-26 17:37:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-06-17 20:52:00 +08:00
										 |  |  | 		if ($this->form_validation->run() == FALSE) | 
					
						
							|  |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2019-06-13 21:34:31 +08:00
										 |  |  | 			$this->load->view('qso/edit', $data); | 
					
						
							| 
									
										
										
										
											2011-06-17 20:52:00 +08:00
										 |  |  | 		} | 
					
						
							|  |  |  | 		else | 
					
						
							|  |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2011-07-22 08:08:47 +08:00
										 |  |  | 			$this->logbook_model->edit(); | 
					
						
							| 
									
										
										
										
											2011-06-17 20:52:00 +08:00
										 |  |  | 			$this->session->set_flashdata('notice', 'Record Updated'); | 
					
						
							| 
									
										
										
										
											2011-11-26 01:29:46 +08:00
										 |  |  | 			$this->load->view('qso/edit_done'); | 
					
						
							| 
									
										
										
										
											2011-06-17 20:52:00 +08:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2011-08-28 21:51:57 +08:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2020-08-25 02:16:06 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     function edit_ajax() { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $this->load->model('logbook_model'); | 
					
						
							|  |  |  |         $this->load->model('user_model'); | 
					
						
							| 
									
										
										
										
											2020-09-16 03:02:36 +08:00
										 |  |  |         $this->load->model('modes'); | 
					
						
							| 
									
										
										
										
											2022-09-10 05:11:52 +08:00
										 |  |  |         $this->load->model('bands'); | 
					
						
							| 
									
										
										
										
											2021-08-20 18:49:57 +08:00
										 |  |  | 		$this->load->model('contesting_model'); | 
					
						
							| 
									
										
										
										
											2020-08-25 02:16:06 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $this->load->library('form_validation'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-26 04:03:54 +08:00
										 |  |  |         if(!$this->user_model->authorize(2)) { | 
					
						
							|  |  |  |             $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $id = str_replace('"', "", $this->input->post("id")); | 
					
						
							|  |  |  |         $query = $this->logbook_model->qso_info($id); | 
					
						
							| 
									
										
										
										
											2020-08-25 02:16:06 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $data['qso'] = $query->row(); | 
					
						
							|  |  |  |         $data['dxcc'] = $this->logbook_model->fetchDxcc(); | 
					
						
							|  |  |  |         $data['iota'] = $this->logbook_model->fetchIota(); | 
					
						
							| 
									
										
										
										
											2020-09-16 03:02:36 +08:00
										 |  |  |         $data['modes'] = $this->modes->all(); | 
					
						
							| 
									
										
										
										
											2022-09-10 05:11:52 +08:00
										 |  |  |         $data['bands'] = $this->bands->get_user_bands_for_qso_entry(true); | 
					
						
							| 
									
										
										
										
											2021-08-20 18:49:57 +08:00
										 |  |  |         $data['contest'] = $this->contesting_model->getActivecontests(); | 
					
						
							| 
									
										
										
										
											2020-08-25 02:16:06 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-26 04:03:54 +08:00
										 |  |  |         $this->load->view('qso/edit_ajax', $data); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function qso_save_ajax() { | 
					
						
							|  |  |  |         $this->load->model('logbook_model'); | 
					
						
							|  |  |  |         $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'); | 
					
						
							| 
									
										
										
										
											2020-08-25 02:16:06 +08:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2020-08-26 04:03:54 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $this->logbook_model->edit(); | 
					
						
							| 
									
										
										
										
											2020-08-25 02:16:06 +08:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-02-26 17:37:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-16 22:29:31 +08:00
										 |  |  | 	function qsl_rcvd($id, $method) { | 
					
						
							| 
									
										
										
										
											2019-06-16 02:20:20 +08:00
										 |  |  | 		$this->load->model('logbook_model'); | 
					
						
							|  |  |  | 		$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'); } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-16 22:29:31 +08:00
										 |  |  | 			// Update Logbook to Mark Paper Card Received
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			$this->logbook_model->paperqsl_update($id, $method); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			$this->session->set_flashdata('notice', 'QSL Card: Marked as Received'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			redirect('logbook'); | 
					
						
							| 
									
										
										
										
											2019-06-16 02:20:20 +08:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2020-08-25 02:16:06 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     function qsl_rcvd_ajax() { | 
					
						
							|  |  |  |         $id = str_replace('"', "", $this->input->post("id")); | 
					
						
							|  |  |  |         $method = str_replace('"', "", $this->input->post("method")); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $this->load->model('logbook_model'); | 
					
						
							|  |  |  |         $this->load->model('user_model'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         header('Content-Type: application/json'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if(!$this->user_model->authorize(2)) { | 
					
						
							|  |  |  |             echo json_encode(array('message' => 'Error')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         else { | 
					
						
							|  |  |  |             // Update Logbook to Mark Paper Card Received
 | 
					
						
							|  |  |  |             $this->logbook_model->paperqsl_update($id, $method); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             echo json_encode(array('message' => 'OK')); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-02-26 17:37:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-16 03:38:17 +08:00
										 |  |  |     function qsl_sent_ajax() { | 
					
						
							|  |  |  |         $id = str_replace('"', "", $this->input->post("id")); | 
					
						
							|  |  |  |         $method = str_replace('"', "", $this->input->post("method")); | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         $this->load->model('logbook_model'); | 
					
						
							|  |  |  |         $this->load->model('user_model'); | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         header('Content-Type: application/json'); | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         if(!$this->user_model->authorize(2)) { | 
					
						
							|  |  |  |             echo json_encode(array('message' => 'Error')); | 
					
						
							|  |  |  |              | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         else { | 
					
						
							|  |  |  |             // Update Logbook to Mark Paper Card Sent
 | 
					
						
							|  |  |  |             $this->logbook_model->paperqsl_update_sent($id, $method); | 
					
						
							|  |  |  |              | 
					
						
							|  |  |  |             echo json_encode(array('message' => 'OK')); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-11 23:05:49 +08:00
										 |  |  |     function qsl_requested_ajax() { | 
					
						
							|  |  |  |         $id = str_replace('"', "", $this->input->post("id")); | 
					
						
							|  |  |  |         $method = str_replace('"', "", $this->input->post("method")); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $this->load->model('logbook_model'); | 
					
						
							|  |  |  |         $this->load->model('user_model'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         header('Content-Type: application/json'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if(!$this->user_model->authorize(2)) { | 
					
						
							|  |  |  |             echo json_encode(array('message' => 'Error')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         else { | 
					
						
							|  |  |  |             // Update Logbook to Mark Paper Card Received
 | 
					
						
							|  |  |  |             $this->logbook_model->paperqsl_requested($id, $method); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             echo json_encode(array('message' => 'OK')); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-11 23:14:34 +08:00
										 |  |  | 	function qsl_ignore_ajax() { | 
					
						
							|  |  |  |         $id = str_replace('"', "", $this->input->post("id")); | 
					
						
							|  |  |  |         $method = str_replace('"', "", $this->input->post("method")); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $this->load->model('logbook_model'); | 
					
						
							|  |  |  |         $this->load->model('user_model'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         header('Content-Type: application/json'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if(!$this->user_model->authorize(2)) { | 
					
						
							|  |  |  |             echo json_encode(array('message' => 'Error')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         else { | 
					
						
							|  |  |  |             // Update Logbook to Mark Paper Card Received
 | 
					
						
							|  |  |  |             $this->logbook_model->paperqsl_ignore($id, $method); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             echo json_encode(array('message' => 'OK')); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-28 21:51:57 +08:00
										 |  |  | 	/* Delete QSO */ | 
					
						
							|  |  |  | 	function delete($id) { | 
					
						
							|  |  |  | 		$this->load->model('logbook_model'); | 
					
						
							| 
									
										
										
										
											2021-02-26 17:37:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-31 13:03:05 +08:00
										 |  |  | 		if ($this->logbook_model->check_qso_is_accessible($id)) { | 
					
						
							|  |  |  | 			$this->logbook_model->delete($id); | 
					
						
							|  |  |  | 			$this->session->set_flashdata('notice', 'QSO Deleted Successfully'); | 
					
						
							|  |  |  | 			$data['message_title'] = "Deleted"; | 
					
						
							|  |  |  | 			$data['message_contents'] = "QSO Deleted Successfully"; | 
					
						
							|  |  |  | 			$this->load->view('messages/message', $data); | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2019-06-23 23:11:55 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		// If deletes from /logbook dropdown redirect
 | 
					
						
							|  |  |  | 		if (strpos($_SERVER['HTTP_REFERER'], '/logbook') !== false) { | 
					
						
							|  |  |  | 		    redirect($_SERVER['HTTP_REFERER']); | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2011-04-25 23:24:01 +08:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2020-08-25 02:16:06 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /* Delete QSO */ | 
					
						
							|  |  |  |     function delete_ajax() { | 
					
						
							|  |  |  |         $id = str_replace('"', "", $this->input->post("id")); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $this->load->model('logbook_model'); | 
					
						
							| 
									
										
										
										
											2023-07-31 13:03:05 +08:00
										 |  |  | 	if ($this->logbook_model->check_qso_is_accessible($id)) { | 
					
						
							|  |  |  |         	$this->logbook_model->delete($id); | 
					
						
							|  |  |  |         	header('Content-Type: application/json'); | 
					
						
							|  |  |  |         	echo json_encode(array('message' => 'OK')); | 
					
						
							|  |  |  | 	} else { | 
					
						
							|  |  |  |         	header('Content-Type: application/json'); | 
					
						
							|  |  |  |         	echo json_encode(array('message' => 'not allowed')); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2020-08-25 02:16:06 +08:00
										 |  |  |         return; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-02-26 17:37:43 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-18 19:21:51 +08:00
										 |  |  | 	function band_to_freq($band, $mode) { | 
					
						
							| 
									
										
										
										
											2021-02-26 17:37:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-14 01:01:19 +08:00
										 |  |  | 		$this->load->library('frequency'); | 
					
						
							| 
									
										
										
										
											2021-02-26 17:37:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-10 02:15:57 +08:00
										 |  |  | 		echo $this->frequency->convert_band($band, $mode); | 
					
						
							| 
									
										
										
										
											2011-09-14 01:01:19 +08:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2021-01-16 06:55:53 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/* | 
					
						
							|  |  |  | 	 * Function is used for autocompletion of SOTA in the QSO entry form | 
					
						
							|  |  |  | 	 */ | 
					
						
							|  |  |  | 	public function get_sota() { | 
					
						
							| 
									
										
										
										
											2022-08-18 04:15:06 +08:00
										 |  |  | 		$this->load->library('sota'); | 
					
						
							|  |  |  | 		$json = []; | 
					
						
							| 
									
										
										
										
											2021-01-16 06:55:53 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-18 04:15:06 +08:00
										 |  |  | 		if (!empty($this->input->get("query"))) { | 
					
						
							|  |  |  | 			$query = $_GET['query'] ?? FALSE; | 
					
						
							|  |  |  | 			$json = $this->sota->get($query); | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2021-01-16 06:55:53 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-18 04:15:06 +08:00
										 |  |  | 		header('Content-Type: application/json'); | 
					
						
							|  |  |  | 		echo json_encode($json); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2021-01-20 19:56:53 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-15 22:04:33 +08:00
										 |  |  | 	public function get_wwff() { | 
					
						
							|  |  |  |         $json = []; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if(!empty($this->input->get("query"))) { | 
					
						
							|  |  |  |             $query = isset($_GET['query']) ? $_GET['query'] : FALSE; | 
					
						
							|  |  |  |             $wwff = strtoupper($query); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $file = 'assets/json/wwff.txt'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if (is_readable($file)) { | 
					
						
							|  |  |  |                 $lines = file($file, FILE_IGNORE_NEW_LINES); | 
					
						
							|  |  |  |                 $input = preg_quote($wwff, '~'); | 
					
						
							|  |  |  |                 $reg = '~^'. $input .'(.*)$~'; | 
					
						
							|  |  |  |                 $result = preg_grep($reg, $lines); | 
					
						
							|  |  |  |                 $json = []; | 
					
						
							|  |  |  |                 $i = 0; | 
					
						
							|  |  |  |                 foreach ($result as &$value) { | 
					
						
							|  |  |  |                     // Limit to 100 as to not slowdown browser too much
 | 
					
						
							|  |  |  |                     if (count($json) <= 100) { | 
					
						
							| 
									
										
										
										
											2021-01-16 06:55:53 +08:00
										 |  |  |                         $json[] = ["name"=>$value]; | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         header('Content-Type: application/json'); | 
					
						
							|  |  |  |         echo json_encode($json); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-01-20 19:56:53 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-05 23:05:53 +08:00
										 |  |  | 	public function get_pota() { | 
					
						
							|  |  |  |         $json = []; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if(!empty($this->input->get("query"))) { | 
					
						
							|  |  |  |             $query = isset($_GET['query']) ? $_GET['query'] : FALSE; | 
					
						
							|  |  |  |             $pota = strtoupper($query); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $file = 'assets/json/pota.txt'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if (is_readable($file)) { | 
					
						
							|  |  |  |                 $lines = file($file, FILE_IGNORE_NEW_LINES); | 
					
						
							|  |  |  |                 $input = preg_quote($pota, '~'); | 
					
						
							|  |  |  |                 $reg = '~^'. $input .'(.*)$~'; | 
					
						
							|  |  |  |                 $result = preg_grep($reg, $lines); | 
					
						
							|  |  |  |                 $json = []; | 
					
						
							|  |  |  |                 $i = 0; | 
					
						
							|  |  |  |                 foreach ($result as &$value) { | 
					
						
							| 
									
										
										
										
											2022-08-15 22:04:33 +08:00
										 |  |  |                     // Limit to 100 as to not slowdown browser too much
 | 
					
						
							|  |  |  |                     if (count($json) <= 100) { | 
					
						
							| 
									
										
										
										
											2021-01-16 06:55:53 +08:00
										 |  |  |                         $json[] = ["name"=>$value]; | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         header('Content-Type: application/json'); | 
					
						
							|  |  |  |         echo json_encode($json); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-01-20 19:56:53 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /* | 
					
						
							|  |  |  | 	 * Function is used for autocompletion of DOK in the QSO entry form | 
					
						
							|  |  |  | 	 */ | 
					
						
							|  |  |  |     public function get_dok() { | 
					
						
							|  |  |  |         $json = []; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if(!empty($this->input->get("query"))) { | 
					
						
							|  |  |  |             $query = isset($_GET['query']) ? $_GET['query'] : FALSE; | 
					
						
							| 
									
										
										
										
											2021-02-04 23:46:11 +08:00
										 |  |  |             $dok = strtoupper($query); | 
					
						
							| 
									
										
										
										
											2021-01-20 19:56:53 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |             $file = 'assets/json/dok.txt'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if (is_readable($file)) { | 
					
						
							|  |  |  |                 $lines = file($file, FILE_IGNORE_NEW_LINES); | 
					
						
							| 
									
										
										
										
											2021-02-04 23:46:11 +08:00
										 |  |  |                 $input = preg_quote($dok, '~'); | 
					
						
							| 
									
										
										
										
											2021-01-20 19:56:53 +08:00
										 |  |  |                 $reg = '~^'. $input .'(.*)$~'; | 
					
						
							|  |  |  |                 $result = preg_grep($reg, $lines); | 
					
						
							|  |  |  |                 $json = []; | 
					
						
							|  |  |  |                 $i = 0; | 
					
						
							|  |  |  |                 foreach ($result as &$value) { | 
					
						
							|  |  |  |                     // Limit to 100 as to not slowdown browser too much
 | 
					
						
							|  |  |  |                     if (count($json) <= 100) { | 
					
						
							|  |  |  |                         $json[] = ["name"=>$value]; | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         header('Content-Type: application/json'); | 
					
						
							|  |  |  |         echo json_encode($json); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-01-31 22:02:23 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /* | 
					
						
							|  |  |  | 	 * Function is used for autocompletion of Counties in the station profile form | 
					
						
							|  |  |  | 	 */ | 
					
						
							|  |  |  |     public function get_county() { | 
					
						
							|  |  |  |         $json = []; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if(!empty($this->input->get("query"))) { | 
					
						
							|  |  |  |             //$query = isset($_GET['query']) ? $_GET['query'] : FALSE;
 | 
					
						
							|  |  |  |             $county = $this->input->get("state"); | 
					
						
							|  |  |  |             $cleanedcounty = explode('(', $county); | 
					
						
							|  |  |  |             $cleanedcounty = trim($cleanedcounty[0]); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $file = 'assets/json/US_counties.csv'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if (is_readable($file)) { | 
					
						
							|  |  |  |                 $lines = file($file, FILE_IGNORE_NEW_LINES); | 
					
						
							|  |  |  |                 $input = preg_quote($cleanedcounty, '~'); | 
					
						
							|  |  |  |                 $reg = '~^'. $input .'(.*)$~'; | 
					
						
							|  |  |  |                 $result = preg_grep($reg, $lines); | 
					
						
							|  |  |  |                 $json = []; | 
					
						
							|  |  |  |                 $i = 0; | 
					
						
							|  |  |  |                 foreach ($result as &$value) { | 
					
						
							|  |  |  |                     $county = explode(',', $value); | 
					
						
							|  |  |  |                     // Limit to 100 as to not slowdown browser too much
 | 
					
						
							| 
									
										
										
										
											2021-09-19 01:12:42 +08:00
										 |  |  |                     if (count($json) <= 300) { | 
					
						
							| 
									
										
										
										
											2021-01-31 22:02:23 +08:00
										 |  |  |                         $json[] = ["name"=>$county[1]]; | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         header('Content-Type: application/json'); | 
					
						
							|  |  |  |         echo json_encode($json); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-02-26 17:37:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-19 20:52:43 +08:00
										 |  |  |    public function get_sota_info() { | 
					
						
							|  |  |  |       $this->load->library('sota'); | 
					
						
							| 
									
										
										
										
											2021-02-26 17:37:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-19 20:52:43 +08:00
										 |  |  |       $sota = xss_clean($this->input->post('sota')); | 
					
						
							| 
									
										
										
										
											2021-02-26 17:37:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-19 20:52:43 +08:00
										 |  |  |       header('Content-Type: application/json'); | 
					
						
							|  |  |  |       echo $this->sota->info($sota); | 
					
						
							|  |  |  |    } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    public function get_wwff_info() { | 
					
						
							|  |  |  |       $this->load->library('wwff'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       $wwff = xss_clean($this->input->post('wwff')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       header('Content-Type: application/json'); | 
					
						
							|  |  |  |       echo $this->wwff->info($wwff); | 
					
						
							|  |  |  |    } | 
					
						
							| 
									
										
										
										
											2022-03-28 18:41:14 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-02 03:14:30 +08:00
										 |  |  |    public function get_pota_info() { | 
					
						
							|  |  |  |       $this->load->library('pota'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       $pota = xss_clean($this->input->post('pota')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       header('Content-Type: application/json'); | 
					
						
							|  |  |  |       echo $this->pota->info($pota); | 
					
						
							|  |  |  |    } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-28 05:02:57 +08:00
										 |  |  |    public function get_station_power() { | 
					
						
							|  |  |  |       $this->load->model('stations'); | 
					
						
							|  |  |  |       $stationProfile = xss_clean($this->input->post('stationProfile')); | 
					
						
							|  |  |  |       $data = array('station_power' => $this->stations->get_station_power($stationProfile)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       header('Content-Type: application/json'); | 
					
						
							|  |  |  |       echo json_encode($data); | 
					
						
							|  |  |  |    } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-28 18:41:14 +08:00
										 |  |  |    function check_locator($grid) { | 
					
						
							|  |  |  |       $grid = $this->input->post('locator'); | 
					
						
							|  |  |  |       // Allow empty locator
 | 
					
						
							|  |  |  |       if (preg_match('/^$/', $grid)) return true; | 
					
						
							|  |  |  |       // Allow 6-digit locator
 | 
					
						
							| 
									
										
										
										
											2022-04-01 23:04:06 +08:00
										 |  |  |       if (preg_match('/^[A-Ra-r]{2}[0-9]{2}[A-Za-z]{2}$/', $grid)) return true; | 
					
						
							| 
									
										
										
										
											2022-03-28 18:41:14 +08:00
										 |  |  |       // Allow 4-digit locator
 | 
					
						
							|  |  |  |       else if (preg_match('/^[A-Ra-r]{2}[0-9]{2}$/', $grid)) return true; | 
					
						
							|  |  |  |       // Allow 4-digit grid line
 | 
					
						
							|  |  |  |       else if (preg_match('/^[A-Ra-r]{2}[0-9]{2},[A-Ra-r]{2}[0-9]{2}$/', $grid)) return true; | 
					
						
							|  |  |  |       // Allow 4-digit grid corner
 | 
					
						
							|  |  |  |       else if (preg_match('/^[A-Ra-r]{2}[0-9]{2},[A-Ra-r]{2}[0-9]{2},[A-Ra-r]{2}[0-9]{2},[A-Ra-r]{2}[0-9]{2}$/', $grid)) return true; | 
					
						
							|  |  |  |       // Allow 2-digit locator
 | 
					
						
							|  |  |  |       else if (preg_match('/^[A-Ra-r]{2}$/', $grid)) return true; | 
					
						
							|  |  |  |       // Allow 8-digit locator
 | 
					
						
							| 
									
										
										
										
											2022-04-01 23:06:04 +08:00
										 |  |  |       else if (preg_match('/^[A-Ra-r]{2}[0-9]{2}[A-Za-z]{2}[0-9]{2}$/', $grid)) return true; | 
					
						
							| 
									
										
										
										
											2022-03-28 18:41:14 +08:00
										 |  |  |       else { | 
					
						
							|  |  |  |          $this->form_validation->set_message('check_locator', 'Please check value for grid locator ('.strtoupper($grid).').'); | 
					
						
							|  |  |  |          return false; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |    } | 
					
						
							| 
									
										
										
										
											2011-08-20 00:12:13 +08:00
										 |  |  | } |