| 
									
										
										
										
											2022-12-18 23:49:54 +08:00
										 |  |  | <?php  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | use Cloudlog\QSLManager\QSO; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if ( ! defined('BASEPATH')) exit('No direct script access allowed'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Logbookadvanced extends CI_Controller { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	function __construct() | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		parent::__construct(); | 
					
						
							|  |  |  | 		$this->load->helper(array('form', 'url', 'psr4_autoloader')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$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'); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	function index() { | 
					
						
							|  |  |  | 		$this->load->model('stations'); | 
					
						
							|  |  |  | 		$this->load->model('logbookadvanced_model'); | 
					
						
							|  |  |  | 		$this->load->model('logbook_model'); | 
					
						
							|  |  |  | 		$this->load->model('bands'); | 
					
						
							|  |  |  | 		$this->load->model('iota'); | 
					
						
							|  |  |  | 		$this->load->model('dxcc'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$stationIds = []; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$deOptions = []; | 
					
						
							|  |  |  | 		foreach ($this->stations->all_of_user()->result() as $station) { | 
					
						
							|  |  |  | 			$deOptions[$station->station_callsign] = 1; | 
					
						
							|  |  |  | 			$stationIds[] = $station->station_id; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		ksort($deOptions); | 
					
						
							|  |  |  | 		$deOptions = array_keys($deOptions); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$data = []; | 
					
						
							|  |  |  | 		$data['page_title'] = "Advanced logbook"; | 
					
						
							|  |  |  | 		$data['hasDatePicker'] = true; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$pageData = []; | 
					
						
							|  |  |  | 		$pageData['datePlaceholder'] = 'DD/MM/YYYY'; | 
					
						
							|  |  |  | 		$pageData['deOptions'] = $deOptions; | 
					
						
							| 
									
										
										
										
											2022-12-28 01:56:04 +08:00
										 |  |  | 		$pageData['modes'] = $this->logbookadvanced_model->get_modes(); | 
					
						
							| 
									
										
										
										
											2022-12-18 23:49:54 +08:00
										 |  |  | 		$pageData['dxccarray'] = $this->logbook_model->fetchDxcc(); | 
					
						
							|  |  |  | 		$pageData['iotaarray'] = $this->logbook_model->fetchIota(); | 
					
						
							| 
									
										
										
										
											2023-05-01 14:58:13 +08:00
										 |  |  | 		$pageData['sats'] = $this->bands->get_worked_sats(); | 
					
						
							| 
									
										
										
										
											2022-12-18 23:49:54 +08:00
										 |  |  | 		 | 
					
						
							|  |  |  | 		$pageData['bands'] = $this->bands->get_worked_bands(); | 
					
						
							| 
									
										
										
										
											2023-05-28 01:05:11 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		$CI =& get_instance();  | 
					
						
							|  |  |  | 		// Get Date format
 | 
					
						
							|  |  |  | 		if($CI->session->userdata('user_date_format')) { | 
					
						
							|  |  |  | 			// If Logged in and session exists
 | 
					
						
							|  |  |  | 			$pageData['custom_date_format'] = $CI->session->userdata('user_date_format'); | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			// Get Default date format from /config/cloudlog.php
 | 
					
						
							|  |  |  | 			$pageData['custom_date_format'] = $CI->config->item('qso_date_format'); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		switch ($pageData['custom_date_format']) { | 
					
						
							|  |  |  | 			case "d/m/y": $pageData['custom_date_format'] = 'DD/MM/YY'; break; | 
					
						
							|  |  |  | 			case "d/m/Y": $pageData['custom_date_format'] = 'DD/MM/YYYY'; break; | 
					
						
							|  |  |  | 			case "m/d/y": $pageData['custom_date_format'] = 'MM/DD/YY'; break; | 
					
						
							|  |  |  | 			case "m/d/Y": $pageData['custom_date_format'] = 'MM/DD/YYYY'; break; | 
					
						
							|  |  |  | 			case "d.m.Y": $pageData['custom_date_format'] = 'DD.MM.YYYY'; break; | 
					
						
							|  |  |  | 			case "y/m/d": $pageData['custom_date_format'] = 'YY/MM/DD'; break; | 
					
						
							|  |  |  | 			case "Y-m-d": $pageData['custom_date_format'] = 'YYYY-MM-DD'; break; | 
					
						
							|  |  |  | 			case "M d, Y": $pageData['custom_date_format'] = 'MMM DD, YYYY'; break; | 
					
						
							|  |  |  | 			case "M d, y": $pageData['custom_date_format'] = 'MMM DD, YY'; break; | 
					
						
							|  |  |  | 			default: $pageData['custom_date_format'] = 'DD/MM/YYYY'; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-18 23:49:54 +08:00
										 |  |  | 		$footerData = []; | 
					
						
							|  |  |  | 		$footerData['scripts'] = [ | 
					
						
							|  |  |  | 			'assets/js/moment.min.js', | 
					
						
							|  |  |  | 			'assets/js/tempusdominus-bootstrap-4.min.js', | 
					
						
							| 
									
										
										
										
											2023-05-28 01:05:11 +08:00
										 |  |  | 			'assets/js/datetime-moment.js', | 
					
						
							| 
									
										
										
										
											2022-12-18 23:49:54 +08:00
										 |  |  | 			'assets/js/sections/logbookadvanced.js?' . filemtime(realpath(__DIR__ . "/../../assets/js/sections/logbookadvanced.js")) | 
					
						
							|  |  |  | 		]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$this->load->view('interface_assets/header', $data); | 
					
						
							|  |  |  | 		$this->load->view('logbookadvanced/index', $pageData); | 
					
						
							|  |  |  | 		$this->load->view('interface_assets/footer', $footerData); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	public function search() { | 
					
						
							|  |  |  | 		$this->load->model('logbookadvanced_model'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$searchCriteria = array( | 
					
						
							|  |  |  | 			'user_id' => (int)$this->session->userdata('user_id'), | 
					
						
							|  |  |  | 			'dateFrom' => xss_clean($this->input->post('dateFrom')), | 
					
						
							|  |  |  | 			'dateTo' => xss_clean($this->input->post('dateTo')), | 
					
						
							|  |  |  | 			'de' => xss_clean($this->input->post('de')), | 
					
						
							|  |  |  | 			'dx' => xss_clean($this->input->post('dx')), | 
					
						
							|  |  |  | 			'mode' => xss_clean($this->input->post('mode')), | 
					
						
							|  |  |  | 			'band' => xss_clean($this->input->post('band')), | 
					
						
							|  |  |  | 			'qslSent' => xss_clean($this->input->post('qslSent')), | 
					
						
							|  |  |  | 			'qslReceived' => xss_clean($this->input->post('qslReceived')), | 
					
						
							|  |  |  | 			'iota' => xss_clean($this->input->post('iota')), | 
					
						
							|  |  |  | 			'dxcc' => xss_clean($this->input->post('dxcc')), | 
					
						
							|  |  |  | 			'propmode' => xss_clean($this->input->post('propmode')), | 
					
						
							|  |  |  | 			'gridsquare' => xss_clean($this->input->post('gridsquare')), | 
					
						
							|  |  |  | 			'state' => xss_clean($this->input->post('state')), | 
					
						
							| 
									
										
										
										
											2022-12-20 01:20:55 +08:00
										 |  |  | 			'qsoresults' => xss_clean($this->input->post('qsoresults')), | 
					
						
							| 
									
										
										
										
											2023-05-01 14:58:13 +08:00
										 |  |  | 			'sats' => xss_clean($this->input->post('sats')), | 
					
						
							| 
									
										
										
										
											2022-12-18 23:49:54 +08:00
										 |  |  | 		); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$qsos = []; | 
					
						
							|  |  |  | 		foreach ($this->logbookadvanced_model->searchQsos($searchCriteria) as $qso) { | 
					
						
							|  |  |  | 			$qsos[] = $qso->toArray(); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		header("Content-Type: application/json"); | 
					
						
							|  |  |  | 		print json_encode($qsos); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	public function updateFromCallbook() { | 
					
						
							|  |  |  | 		$this->load->model('logbook_model'); | 
					
						
							| 
									
										
										
										
											2022-12-21 05:23:22 +08:00
										 |  |  | 		$this->load->model('logbookadvanced_model'); | 
					
						
							| 
									
										
										
										
											2022-12-18 23:49:54 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		$qsoID = xss_clean($this->input->post('qsoID')); | 
					
						
							|  |  |  | 		$qso = $this->logbook_model->qso_info($qsoID)->row_array(); | 
					
						
							|  |  |  | 		if ($qso === null) { | 
					
						
							|  |  |  | 			header("Content-Type: application/json"); | 
					
						
							|  |  |  | 			echo json_encode([]); | 
					
						
							|  |  |  | 			return; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$callbook = $this->logbook_model->loadCallBook($qso['COL_CALL'], $this->config->item('use_fullname')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		if ($callbook['callsign'] !== "") { | 
					
						
							| 
									
										
										
										
											2022-12-21 05:23:22 +08:00
										 |  |  | 			$this->logbookadvanced_model->updateQsoWithCallbookInfo($qsoID, $qso, $callbook); | 
					
						
							| 
									
										
										
										
											2022-12-18 23:49:54 +08:00
										 |  |  | 			$qso['COL_NAME'] = trim($callbook['name']); | 
					
						
							| 
									
										
										
										
											2022-12-21 05:23:22 +08:00
										 |  |  | 			if (isset($callbook['qslmgr'])) { | 
					
						
							|  |  |  | 				$qso['COL_QSL_VIA'] = trim($callbook['qslmgr']); | 
					
						
							|  |  |  | 			} | 
					
						
							| 
									
										
										
										
											2022-12-18 23:49:54 +08:00
										 |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$qsoObj = new QSO($qso); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		header("Content-Type: application/json"); | 
					
						
							|  |  |  | 		echo json_encode($qsoObj->toArray()); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	function export_to_adif() { | 
					
						
							|  |  |  | 		$this->load->model('logbookadvanced_model'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$ids = xss_clean($this->input->post('id')); | 
					
						
							| 
									
										
										
										
											2023-05-01 18:35:24 +08:00
										 |  |  | 		$sortorder = xss_clean($this->input->post('sortorder')); | 
					
						
							| 
									
										
										
										
											2022-12-18 23:49:54 +08:00
										 |  |  | 		$user_id = (int)$this->session->userdata('user_id'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-01 18:35:24 +08:00
										 |  |  | 		$data['qsos'] = $this->logbookadvanced_model->getQsosForAdif($ids, $user_id, $sortorder); | 
					
						
							| 
									
										
										
										
											2022-12-18 23:49:54 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		$this->load->view('adif/data/exportall', $data); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	function update_qsl() { | 
					
						
							|  |  |  | 		$this->load->model('logbookadvanced_model'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$ids = xss_clean($this->input->post('id')); | 
					
						
							|  |  |  | 		$user_id = (int)$this->session->userdata('user_id'); | 
					
						
							|  |  |  | 		$method = xss_clean($this->input->post('method')); | 
					
						
							|  |  |  | 		$sent = xss_clean($this->input->post('sent')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$status = $this->logbookadvanced_model->updateQsl($ids, $user_id, $method, $sent); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$data = $this->logbookadvanced_model->getQsosForAdif($ids, $user_id); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$results = $data->result('array'); | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         $qsos = []; | 
					
						
							|  |  |  |         foreach ($results as $data) { | 
					
						
							|  |  |  |             $qsos[] = new QSO($data); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$q = []; | 
					
						
							|  |  |  | 		foreach ($qsos as $qso) { | 
					
						
							|  |  |  | 			$q[] = $qso->toArray(); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		header("Content-Type: application/json"); | 
					
						
							|  |  |  | 		print json_encode($q); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } |