From 0015d4a1cf85c81047044f559bd92e3ecd2d53c7 Mon Sep 17 00:00:00 2001 From: Andreas <6977712+AndreasK79@users.noreply.github.com> Date: Thu, 29 Jul 2021 12:05:52 +0200 Subject: [PATCH] [DX Atlas Gridsquare Export] Initial work begun for export --- application/controllers/Dxatlas.php | 104 +++++++++++++++ application/views/dxatlas/index.php | 119 ++++++++++++++++++ application/views/interface_assets/header.php | 2 + 3 files changed, 225 insertions(+) create mode 100644 application/controllers/Dxatlas.php create mode 100644 application/views/dxatlas/index.php diff --git a/application/controllers/Dxatlas.php b/application/controllers/Dxatlas.php new file mode 100644 index 00000000..ac8c46ff --- /dev/null +++ b/application/controllers/Dxatlas.php @@ -0,0 +1,104 @@ +load->model('user_model'); + $this->load->model('modes'); + $this->load->model('dxcc'); + $this->load->model('logbook_model'); + + if(!$this->user_model->authorize(99)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); } + + $data['worked_bands'] = $this->dxcc->get_worked_bands(); // Used in the view for band select + $data['modes'] = $this->modes->active(); // Used in the view for mode select + $data['dxcc'] = $this->logbook_model->fetchDxcc(); // Used in the view for dxcc select + + $data['page_title'] = "DX Atlas Gridsquare Export"; + + $this->load->view('interface_assets/header', $data); + $this->load->view('dxatlas/index'); + $this->load->view('interface_assets/footer'); + + } + + public function export() + { + // Load Librarys + $this->load->library('qra'); + $this->load->helper('file'); + + // Load Database connections + $this->load->model('logbook_model'); + + // Parameters + $band = $this->input->post('band'); + $mode = $this->input->post('mode'); + $dxcc = $this->input->post('dxcc_id'); + $cqz = $this->input->post('cqz'); + $propagation = $this->input->post('prop_mode'); + $fromdate = $this->input->post('fromdate'); + $todate = $this->input->post('todate'); + + // Get QSOs with Valid QRAs + $qsos = $this->logbook_model->kml_get_all_qsos($band, $mode, $dxcc, $cqz, $propagation, $fromdate, $todate); + + $output = ""; + $output .= ""; + + $output .= ""; + + foreach ($qsos->result() as $row) + { + $output .= ""; + + if($row->COL_GRIDSQUARE != null) { + $stn_loc = $this->qra->qra2latlong($row->COL_GRIDSQUARE); + + $lat = $stn_loc[0]; + $lng = $stn_loc[1]; + } else { + $query = $this->db->query(' + SELECT * + FROM dxcc_entities + WHERE prefix = SUBSTRING( \''.$row->COL_CALL.'\', 1, LENGTH( prefix ) ) + ORDER BY LENGTH( prefix ) DESC + LIMIT 1 + '); + + foreach ($query->result() as $dxcc) { + $lat = $dxcc->lat; + $lng = $dxcc->long; + } + } + + $timestamp = strtotime($row->COL_TIME_ON); + + $output .= "".$row->COL_CALL.""; + $output .= "Date/Time: ".date('Y-m-d H:i:s', ($timestamp))."
Band: ".$row->COL_BAND."

]]>
"; + $output .= ""; + $output .= "".$lng.",".$lat.",0"; + $output .= ""; + $output .= "
"; + } + + $output .= "
"; + $output .= "
"; + + if (!file_exists('kml')) { + mkdir('kml', 0755, true); + } + + if ( ! write_file('kml/qsos.kml', $output)) + { + echo 'Unable to write the file. Make sure the folder KML has write permissions.'; + } + else + { + header("Content-Disposition: attachment; filename=\"qsos.kml\""); + echo $output; + } + + } +} diff --git a/application/views/dxatlas/index.php b/application/views/dxatlas/index.php new file mode 100644 index 00000000..7e7f3521 --- /dev/null +++ b/application/views/dxatlas/index.php @@ -0,0 +1,119 @@ +
+
+

+ +
+
+ Export your logbook for use in DX Atlas to display worked / confirmed gridsquares. +
+ + + +
+ +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +

From date:

+
+
+ +
+
+
+
+
+ +

To date:

+
+
+ +
+
+
+
+
+
+ +
+
+
+
diff --git a/application/views/interface_assets/header.php b/application/views/interface_assets/header.php index 088d02da..aa264458 100644 --- a/application/views/interface_assets/header.php +++ b/application/views/interface_assets/header.php @@ -195,6 +195,8 @@ KML Export + DX Atlas Gridsquare Export + Logbook of the World