From 1fadec7e7bf662d7d563fb3c6b88b290a661cd04 Mon Sep 17 00:00:00 2001 From: phl0 Date: Thu, 3 Feb 2022 22:09:05 +0100 Subject: [PATCH] Add basic function to show activated grids --- application/controllers/Activated_grids.php | 285 ++++++++++++++++++ application/models/Activated_grids_model.php | 177 +++++++++++ application/views/activated_grids/index.php | 69 +++++ application/views/activated_grids/main.php | 18 ++ application/views/interface_assets/footer.php | 116 +++++++ application/views/interface_assets/header.php | 2 + 6 files changed, 667 insertions(+) create mode 100644 application/controllers/Activated_grids.php create mode 100644 application/models/Activated_grids_model.php create mode 100644 application/views/activated_grids/index.php create mode 100644 application/views/activated_grids/main.php diff --git a/application/controllers/Activated_grids.php b/application/controllers/Activated_grids.php new file mode 100644 index 00000000..4484f3b6 --- /dev/null +++ b/application/controllers/Activated_grids.php @@ -0,0 +1,285 @@ +load->model('logbook_model'); + $total_sat = $this->logbook_model->total_sat(); + if ($total_sat->num_rows() == 0) { + redirect('activated_grids/band/2m'); + return; + } + + $data['page_title'] = "Activated Gridsquare Map"; + + $this->load->view('interface_assets/header', $data); + $this->load->view('activated_grids/main.php'); + $this->load->view('interface_assets/footer'); + } + + public function satellites() + { + $this->load->model('activated_grids_model'); + + $data['page_title'] = "Satellite Activated Gridsquare Map"; + + + $array_grid_2char = array(); + $array_grid_4char = array(); + $array_grid_6char = array(); + + + $array_confirmed_grid_2char = array(); + $array_confirmed_grid_4char = array(); + $array_confirmed_grid_6char = array(); + + $grid_2char = ""; + $grid_4char = ""; + $grid_6char = ""; + + $grid_2char_confirmed = ""; + $grid_4char_confirmed = ""; + $grid_6char_confirmed = ""; + + + // Get Confirmed LOTW & Paper Activated Squares (non VUCC) + $query = $this->activated_grids_model->get_activated_confirmed_sat_squares(); + + + if ($query && $query->num_rows() > 0) + { + foreach ($query->result() as $row) + { + + $grid_2char_confirmed = strtoupper(substr($row->SAT_SQUARE,0,2)); + $grid_4char_confirmed = strtoupper(substr($row->SAT_SQUARE,0,4)); + if ($this->config->item('map_6digit_grids')) { + $grid_6char_confirmed = strtoupper(substr($row->SAT_SQUARE,0,6)); + } + + // Check if 2 Char is in array + if(!in_array($grid_2char_confirmed, $array_confirmed_grid_2char)){ + array_push($array_confirmed_grid_2char, $grid_2char_confirmed); + } + + + if(!in_array($grid_4char_confirmed, $array_confirmed_grid_4char)){ + array_push($array_confirmed_grid_4char, $grid_4char_confirmed); + } + + + if ($this->config->item('map_6digit_grids')) { + if(!in_array($grid_6char_confirmed, $array_confirmed_grid_6char)){ + array_push($array_confirmed_grid_6char, $grid_6char_confirmed); + } + } + + + } + } + + // Get activated squares + $query = $this->activated_grids_model->get_activated_sat_squares(); + + if ($query && $query->num_rows() > 0) + { + foreach ($query->result() as $row) + { + + $grid_two = strtoupper(substr($row->SAT_SQUARE,0,2)); + $grid_four = strtoupper(substr($row->SAT_SQUARE,0,4)); + if ($this->config->item('map_6digit_grids')) { + $grid_six = strtoupper(substr($row->SAT_SQUARE,0,6)); + } + + // Check if 2 Char is in array + if(!in_array($grid_two, $array_grid_2char)){ + array_push($array_grid_2char, $grid_two); + } + + + if(!in_array($grid_four, $array_grid_4char)){ + array_push($array_grid_4char, $grid_four); + } + + + if ($this->config->item('map_6digit_grids')) { + if(!in_array($grid_six, $array_grid_6char)){ + array_push($array_grid_6char, $grid_six); + } + } + + + } + } + + function js_str($s) + { + return '"' . addcslashes($s, "\0..\37\"\\") . '"'; + } + + function js_array($array) + { + $temp = array_map('js_str', $array); + return '[' . implode(',', $temp) . ']'; + } + + + $data['grid_2char_confirmed'] = js_array($array_confirmed_grid_2char); + $data['grid_4char_confirmed'] = js_array($array_confirmed_grid_4char); + $data['grid_6char_confirmed'] = js_array($array_confirmed_grid_6char); + + $data['grid_2char'] = js_array($array_grid_2char); + $data['grid_4char'] = js_array($array_grid_4char); + $data['grid_6char'] = js_array($array_grid_6char); + + + $this->load->view('interface_assets/header', $data); + $this->load->view('activated_grids/index.php'); + $this->load->view('interface_assets/footer'); + } + + + public function band($band) + { + $this->load->model('activated_grids_model'); + + $data['page_title'] = strtoupper($band)." Activated Gridsquare Map"; + + $array_grid_2char = array(); + $array_grid_4char = array(); + $array_grid_6char = array(); + + $array_grid_2char_confirmed = array(); + $array_grid_4char_confirmed = array(); + $array_grid_6char_confirmed = array(); + + $grid_2char = ""; + $grid_4char = ""; + $grid_6char = ""; + + $grid_2char_confirmed = ""; + $grid_4char_confirmed = ""; + $grid_6char_confirmed = ""; + + $query = $this->activated_grids_model->get_band_confirmed($band); + + if ($query && $query->num_rows() > 0) + { + foreach ($query->result() as $row) + { + $grid_2char_confirmed = strtoupper(substr($row->GRID_SQUARES,0,2)); + $grid_4char_confirmed = strtoupper(substr($row->GRID_SQUARES,0,4)); + if ($this->config->item('map_6digit_grids')) { + $grid_6char_confirmed = strtoupper(substr($row->GRID_SQUARES,0,6)); + } + + // Check if 2 Char is in array + if(!in_array($grid_2char_confirmed, $array_grid_2char_confirmed)){ + array_push($array_grid_2char_confirmed, $grid_2char_confirmed); + } + + if(!in_array($grid_4char_confirmed, $array_grid_4char_confirmed)){ + array_push($array_grid_4char_confirmed, $grid_4char_confirmed); + } + + if ($this->config->item('map_6digit_grids')) { + if(!in_array($grid_6char_confirmed, $array_grid_6char_confirmed)){ + array_push($array_grid_6char_confirmed, $grid_6char_confirmed); + } + } + } + } + + $query = $this->activated_grids_model->get_band($band); + + if ($query && $query->num_rows() > 0) + { + foreach ($query->result() as $row) + { + + $grid_two = strtoupper(substr($row->GRID_SQUARES,0,2)); + $grid_four = strtoupper(substr($row->GRID_SQUARES,0,4)); + if ($this->config->item('map_6digit_grids')) { + $grid_six = strtoupper(substr($row->GRID_SQUARES,0,6)); + } + + // Check if 2 Char is in array + if(!in_array($grid_two, $array_grid_2char)){ + array_push($array_grid_2char, $grid_two); + } + + + if(!in_array($grid_four, $array_grid_4char)){ + array_push($array_grid_4char, $grid_four); + } + + + if ($this->config->item('map_6digit_grids')) { + if(!in_array($grid_six, $array_grid_6char)){ + array_push($array_grid_6char, $grid_six); + } + } + + + } + } + + function js_str($s) + { + return '"' . addcslashes($s, "\0..\37\"\\") . '"'; + } + + function js_array($array) + { + $temp = array_map('js_str', $array); + return '[' . implode(',', $temp) . ']'; + } + + $data['grid_2char_confirmed'] = js_array($array_grid_2char_confirmed); + $data['grid_4char_confirmed'] = js_array($array_grid_4char_confirmed); + $data['grid_6char_confirmed'] = js_array($array_grid_6char_confirmed); + + $data['grid_2char'] = js_array($array_grid_2char); + $data['grid_4char'] = js_array($array_grid_4char); + $data['grid_6char'] = js_array($array_grid_6char); + + $data['bands_available'] = js_array($this->config->item('bands_available')); + + $this->load->view('interface_assets/header', $data); + $this->load->view('activated_grids/index.php'); + $this->load->view('interface_assets/footer'); + } + + function search_band($band, $gridsquare){ + $this->load->model('activated_grids_model'); + header('Content-Type: application/json'); + $result = $this->activated_grids_model->search_band($band, $gridsquare); + + echo $result; + } + + function search_sat($gridsquare){ + $this->load->model('activated_grids_model'); + header('Content-Type: application/json'); + $result = $this->activated_grids_model->search_sat($gridsquare); + + echo $result; + } + +} diff --git a/application/models/Activated_grids_model.php b/application/models/Activated_grids_model.php new file mode 100644 index 00000000..570ffbcb --- /dev/null +++ b/application/models/Activated_grids_model.php @@ -0,0 +1,177 @@ +load->model('logbooks_model'); + $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook')); + + if (!$logbooks_locations_array) { + return null; + } + + $this->db->select('distinct substring(COL_MY_GRIDSQUARE,1,6) as SAT_SQUARE, COL_SAT_NAME', FALSE); +// $this->db->where_in('station_id', $logbooks_locations_array); + $this->db->where('COL_MY_GRIDSQUARE !=', ''); + $this->db->where('COL_SAT_NAME !=', ''); + + return $this->db->get($this->config->item('table_name')); + } + + function get_activated_confirmed_sat_squares() { + $CI =& get_instance(); + $CI->load->model('logbooks_model'); + $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook')); + + if (!$logbooks_locations_array) { + return null; + } + + $location_list = "'".implode("','",$logbooks_locations_array)."'"; + + $sql = 'SELECT distinct substring(COL_MY_GRIDSQUARE,1,6) as SAT_SQUARE, COL_SAT_NAME FROM ' + . $this->config->item('table_name') + . ' WHERE COL_MY_GRIDSQUARE != "" AND COL_SAT_NAME != "" AND (COL_LOTW_QSL_SENT = "Y" OR COL_QSL_SENT = "Y")'; + // . ' WHERE station_id in (' . $location_list . ') AND COL_MY_GRIDSQUARE != "" AND COL_SAT_NAME != "" AND (COL_LOTW_QSL_SENT = "Y" OR COL_QSL_SENT = "Y")'; + + return $this->db->query($sql); + } + + + function get_confirmed_sat_vucc_squares() { + $CI =& get_instance(); + $CI->load->model('logbooks_model'); + $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook')); + + if (!$logbooks_locations_array) { + return null; + } + + $location_list = "'".implode("','",$logbooks_locations_array)."'"; + + $sql = 'SELECT COL_VUCC_GRIDS, COL_SAT_NAME FROM ' + . $this->config->item('table_name') + . ' WHERE station_id in (' . $location_list . ') AND COL_VUCC_GRIDS != "" AND COL_SAT_NAME != "" AND (COL_LOTW_QSL_RCVD = "Y" OR COL_QSL_RCVD = "Y") AND (COL_LOTW_QSL_RCVD = "Y" OR COL_QSL_RCVD = "Y")'; + + return $this->db->query($sql); + } + + function get_worked_sat_vucc_squares() { + $CI =& get_instance(); + $CI->load->model('logbooks_model'); + $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook')); + + if (!$logbooks_locations_array) { + return null; + } + + $this->db->select('COL_PRIMARY_KEY, COL_VUCC_GRIDS, COL_SAT_NAME', FALSE); + $this->db->where_in('station_id', $logbooks_locations_array); + $this->db->where('COL_VUCC_GRIDS !=', ""); + $this->db->where('COL_SAT_NAME !=', ""); + return $this->db->get($this->config->item('table_name')); + } + + function get_band($band) { + $CI =& get_instance(); + $CI->load->model('logbooks_model'); + $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook')); + + if (!$logbooks_locations_array) { + return null; + } + + $this->db->select('distinct substring(COL_GRIDSQUARE,1,6) as GRID_SQUARES, COL_BAND', FALSE); + $this->db->where_in('station_id', $logbooks_locations_array); + $this->db->where('COL_GRIDSQUARE !=', ''); + + if ($band != 'All') { + $this->db->where('COL_BAND', $band); + $this->db->where('COL_PROP_MODE !=', "SAT"); + $this->db->where('COL_PROP_MODE !=', "INTERNET"); + $this->db->where('COL_PROP_MODE !=', "ECH"); + $this->db->where('COL_PROP_MODE !=', "RPT"); + $this->db->where('COL_SAT_NAME =', ""); + } + + return $this->db->get($this->config->item('table_name')); + } + + function get_band_confirmed($band) { + $CI =& get_instance(); + $CI->load->model('logbooks_model'); + $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook')); + + if (!$logbooks_locations_array) { + return null; + } + + $location_list = "'".implode("','",$logbooks_locations_array)."'"; + + $sql = 'SELECT distinct substring(COL_GRIDSQUARE,1,6) as GRID_SQUARES, COL_BAND FROM ' + .$this->config->item('table_name') + .' WHERE station_id in (' + .$location_list.') AND COL_GRIDSQUARE != ""'; + if ($band != 'All') { + $sql .= ' AND COL_BAND = "' . $band + .'" + AND COL_PROP_MODE != "SAT" + AND COL_PROP_MODE != "INTERNET" + AND COL_PROP_MODE != "ECH" + AND COL_PROP_MODE != "RPT" + AND COL_SAT_NAME = ""'; + } + + $sql .= ' AND (COL_LOTW_QSL_RCVD = "Y" OR COL_QSL_RCVD = "Y")'; + + return $this->db->query($sql); + } + + function search_band($band, $gridsquare) { + $CI =& get_instance(); + $CI->load->model('logbooks_model'); + $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook')); + + $location_list = "'".implode("','",$logbooks_locations_array)."'"; + + $sql = 'SELECT COL_CALL, COL_TIME_ON, COL_BAND, COL_MODE, COL_GRIDSQUARE, COL_VUCC_GRIDS FROM ' + .$this->config->item('table_name') + .' WHERE station_id IN (' . $location_list . ') ' + . ' AND (COL_GRIDSQUARE LIKE "%'.$gridsquare.'%" or COL_VUCC_GRIDS LIKE "%'.$gridsquare.'%")'; + + if ($band != 'All') { + $sql .= ' AND COL_BAND = "' . $band + .'" + AND COL_PROP_MODE != "SAT" + AND COL_PROP_MODE != "INTERNET" + AND COL_PROP_MODE != "ECH" + AND COL_PROP_MODE != "RPT" + AND COL_SAT_NAME = ""'; + } + + $result = $this->db->query($sql); + + //print_r($result); + return json_encode($result->result()); + } + + function search_sat($gridsquare) { + $CI =& get_instance(); + $CI->load->model('logbooks_model'); + $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook')); + + $location_list = "'".implode("','",$logbooks_locations_array)."'"; + + $sql = 'SELECT COL_CALL, COL_TIME_ON, COL_BAND, COL_MODE, COL_SAT_NAME, COL_GRIDSQUARE, COL_VUCC_GRIDS FROM ' . + $this->config->item('table_name'). + ' WHERE station_id IN ('.$location_list. ')' . + ' AND (COL_GRIDSQUARE LIKE "%'.$gridsquare.'%" or COL_VUCC_GRIDS LIKE "%'.$gridsquare.'%")'. + ' AND COL_PROP_MODE = "SAT"'; + + $result = $this->db->query($sql); + + //print_r($result); + return json_encode($result->result()); + } +} diff --git a/application/views/activated_grids/index.php b/application/views/activated_grids/index.php new file mode 100644 index 00000000..5f344cb8 --- /dev/null +++ b/application/views/activated_grids/index.php @@ -0,0 +1,69 @@ +
+ +
+ +

+ + uri->segment(1) == "activated_grids" && $this->uri->segment(2) == "band") { ?> +
+ + +
+ + + + session->flashdata('message')) { ?> + +
+

session->flashdata('message'); ?>

+
+ +
+ +
+ +
+ uri->segment(2) == "satellites") { ?> + + + + uri->segment(2) == "band") { ?> + + +
+ + diff --git a/application/views/activated_grids/main.php b/application/views/activated_grids/main.php new file mode 100644 index 00000000..bb753951 --- /dev/null +++ b/application/views/activated_grids/main.php @@ -0,0 +1,18 @@ +
+ +
+ + session->flashdata('message')) { ?> + +
+

session->flashdata('message'); ?>

+
+ + +

+ + +
diff --git a/application/views/interface_assets/footer.php b/application/views/interface_assets/footer.php index b70ee4c6..cc9de1d4 100644 --- a/application/views/interface_assets/footer.php +++ b/application/views/interface_assets/footer.php @@ -1175,6 +1175,122 @@ $(document).ready(function(){ +uri->segment(1) == "activated_grids") { ?> + + + + + + uri->segment(1) == "dayswithqso") { ?> diff --git a/application/views/interface_assets/header.php b/application/views/interface_assets/header.php index 44a10bf2..4ffb44dc 100644 --- a/application/views/interface_assets/header.php +++ b/application/views/interface_assets/header.php @@ -86,6 +86,8 @@ Gridsquares + Activated Gridsquares + Distances Worked Days with QSOs