diff --git a/application/controllers/Timeline.php b/application/controllers/Timeline.php index 58c80e7a2..b494b6466 100644 --- a/application/controllers/Timeline.php +++ b/application/controllers/Timeline.php @@ -3,130 +3,126 @@ defined('BASEPATH') OR exit('No direct script access allowed'); class Timeline extends CI_Controller { - function __construct() { - parent::__construct(); + function __construct() { + parent::__construct(); - $this->load->model('user_model'); - if(!$this->user_model->authorize(2)) { $this->session->set_flashdata('error', __("You're not allowed to do that!")); redirect('dashboard'); } - } + $this->load->model('user_model'); + if(!$this->user_model->authorize(2)) { $this->session->set_flashdata('error', __("You're not allowed to do that!")); redirect('dashboard'); } + } - public function index() { - // Render Page - $data['page_title'] = __("Timeline"); + public function index() { + // Render Page + $data['page_title'] = __("Timeline"); - $this->load->model('Timeline_model'); + $this->load->model('Timeline_model'); - if ($this->input->post('band') != NULL) { // Band is not set when page first loads. - $band = $this->input->post('band'); - } - else { - $band = 'All'; - } + if ($this->input->post('band') != NULL) { // Band is not set when page first loads. + $band = $this->input->post('band'); + } else { + $band = 'All'; + } - if ($this->input->post('propmode') != NULL) { - $propmode = $this->input->post('propmode'); - } - else { - $propmode = 'All'; - } + if ($this->input->post('propmode') != NULL) { + $propmode = $this->input->post('propmode'); + } else { + $propmode = 'All'; + } - if ($this->input->post('mode') != NULL) { - $mode = $this->input->post('mode'); - } - else { - $mode = 'All'; - } + if ($this->input->post('mode') != NULL) { + $mode = $this->input->post('mode'); + } else { + $mode = 'All'; + } - if ($this->input->post('award') != NULL) { - $award = $this->input->post('award'); - } - else { - $award = 'dxcc'; - } + if ($this->input->post('award') != NULL) { + $award = $this->input->post('award'); + } else { + $award = 'dxcc'; + } - if ($this->input->post('qsl') != NULL) { - $qsl = $this->input->post('qsl'); - } - else { - $qsl = '0'; - } + if ($this->input->post('qsl') != NULL) { + $qsl = $this->input->post('qsl'); + } else { + $qsl = '0'; + } - if ($this->input->post('lotw') != NULL) { - $lotw = $this->input->post('lotw'); - } - else { - $lotw = '0'; - } + if ($this->input->post('lotw') != NULL) { + $lotw = $this->input->post('lotw'); + } else { + $lotw = '0'; + } - if ($this->input->post('clublog') != NULL) { - $clublog = $this->input->post('clublog'); - } - else { - $clublog = '0'; - } + if ($this->input->post('clublog') != NULL) { + $clublog = $this->input->post('clublog'); + } else { + $clublog = '0'; + } - if ($this->input->post('eqsl') != NULL) { - $eqsl = $this->input->post('eqsl'); - } - else { - $eqsl = '0'; - } + if ($this->input->post('eqsl') != NULL) { + $eqsl = $this->input->post('eqsl'); + } else { + $eqsl = '0'; + } - $this->load->model('modes'); - $this->load->model('bands'); + $this->load->model('modes'); + $this->load->model('bands'); - $data['modes'] = $this->modes->active(); + $data['modes'] = $this->modes->active(); - $data['timeline_array'] = $this->Timeline_model->get_timeline($band, $mode, $propmode, $award, $qsl, $lotw, $eqsl, $clublog); - $data['worked_bands'] = $this->bands->get_worked_bands(); - $data['bandselect'] = $band; - $data['modeselect'] = $mode; - $data['user_default_band'] = $this->session->userdata('user_default_band'); + $data['timeline_array'] = $this->Timeline_model->get_timeline($band, $mode, $propmode, $award, $qsl, $lotw, $eqsl, $clublog); + $data['worked_bands'] = $this->bands->get_worked_bands(); + $data['bandselect'] = $band; + $data['modeselect'] = $mode; + $data['propmode'] = $propmode; + $data['user_default_band'] = $this->session->userdata('user_default_band'); - $this->load->view('interface_assets/header', $data); - $this->load->view('timeline/index'); - $this->load->view('interface_assets/footer'); - } + $footerData['scripts'] = [ 'assets/js/sections/timeline.js?' ]; + $this->load->view('interface_assets/header', $data); + $this->load->view('timeline/index'); + $this->load->view('interface_assets/footer', $footerData); + } - public function details() { - $this->load->model('logbook_model'); - $this->load->model('timeline_model'); + public function details() { + $this->load->model('logbook_model'); + $this->load->model('timeline_model'); - $querystring = str_replace('"', "", $this->input->post("Querystring")); + $querystring = str_replace('"', "", $this->security->xss_clean($this->input->post("Querystring"))); - $band = str_replace('"', "", $this->input->post("Band")); - $mode = str_replace('"', "", $this->input->post("Mode")); - $type = str_replace('"', "", $this->input->post("Type")); - $data['results'] = $this->timeline_model->timeline_qso_details($querystring, $band, $mode, $type); + $band = str_replace('"', "", $this->security->xss_clean($this->input->post("Band"))); + $mode = str_replace('"', "", $this->security->xss_clean($this->input->post("Mode"))); + $type = str_replace('"', "", $this->security->xss_clean($this->input->post("Type"))); + $propmode = str_replace('"', "", $this->security->xss_clean($this->input->post("propmode"))); + + $data['results'] = $this->timeline_model->timeline_qso_details($querystring, $band, $propmode, $mode, $type); - switch($type) { - case 'dxcc': $country = $this->logbook_model->get_entity($querystring); - $data['page_title'] = __("Log View")." - DXCC"; - $data['filter'] = "country ". $country['name']; - break; - case 'was' : $data['page_title'] = __("Log View")." - WAS"; - $data['filter'] = "state ". $querystring; - break; - case 'iota': $data['page_title'] = __("Log View")." - IOTA"; - $data['filter'] = "iota ". $querystring; - break; - case 'waz' : $data['page_title'] = __("Log View")." - WAZ"; - $data['filter'] = "CQ zone ". $querystring; - break; - case 'vucc' : $data['page_title'] = __("Log View")." - VUCC"; - $data['filter'] = "Gridsquare ". $querystring; - break; - case 'waja' : $data['page_title'] = __("Log View")." - WAJA"; - $data['filter'] = "WAJA ". $querystring; - break; - } + switch($type) { + case 'dxcc': $country = $this->logbook_model->get_entity($querystring); + $data['page_title'] = __("Log View")." - DXCC"; + $data['filter'] = "country ". $country['name']; + break; + case 'was' : $data['page_title'] = __("Log View")." - WAS"; + $data['filter'] = "state ". $querystring; + break; + case 'iota': $data['page_title'] = __("Log View")." - IOTA"; + $data['filter'] = "iota ". $querystring; + break; + case 'waz' : $data['page_title'] = __("Log View")." - WAZ"; + $data['filter'] = "CQ zone ". $querystring; + break; + case 'vucc' : $data['page_title'] = __("Log View")." - VUCC"; + $data['filter'] = "Gridsquare ". $querystring; + break; + case 'waja' : $data['page_title'] = __("Log View")." - WAJA"; + $data['filter'] = "WAJA ". $querystring; + break; + } - if ($band != "All") { - $data['filter'] .= " and " . $band; - } + if ($band != "All") { + $data['filter'] .= " and " . $band; + } - $this->load->view('timeline/details', $data); - } + $this->load->view('timeline/details', $data); + } } diff --git a/application/models/Timeline_model.php b/application/models/Timeline_model.php index d40a3e78d..be65d9870 100644 --- a/application/models/Timeline_model.php +++ b/application/models/Timeline_model.php @@ -1,229 +1,238 @@ load->model('logbooks_model'); $logbooks_locations_array = $this->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook')); - if (!$logbooks_locations_array) { - return null; - } + if (!$logbooks_locations_array) { + return null; + } $location_list = "'".implode("','",$logbooks_locations_array)."'"; - switch ($award) { - case 'dxcc': $result = $this->get_timeline_dxcc($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog); break; - case 'was': $result = $this->get_timeline_was($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog); break; - case 'iota': $result = $this->get_timeline_iota($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog); break; - case 'waz': $result = $this->get_timeline_waz($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog); break; - case 'vucc': $result = $this->get_timeline_vucc($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog); break; - case 'waja': $result = $this->get_timeline_waja($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog); break; - } + switch ($award) { + case 'dxcc': $result = $this->get_timeline_dxcc($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog); break; + case 'was': $result = $this->get_timeline_was($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog); break; + case 'iota': $result = $this->get_timeline_iota($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog); break; + case 'waz': $result = $this->get_timeline_waz($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog); break; + case 'vucc': $result = $this->get_timeline_vucc($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog); break; + case 'waja': $result = $this->get_timeline_waja($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog); break; + } - return $result; - } + return $result; + } - public function get_timeline_dxcc($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog) { - $binding = []; - $sql = "select min(date(COL_TIME_ON)) date, prefix, col_country, end, adif from " - .$this->config->item('table_name'). " thcv - join dxcc_entities on thcv.col_dxcc = dxcc_entities.adif - where station_id in (" . $location_list . ")"; - - if ($band != 'All') { - if ($band == 'SAT') { - $sql .= " and col_prop_mode = ?"; - $binding[] = $band; - } else { - $sql .= " and col_prop_mode !='SAT'"; - $sql .= " and col_band = ?"; - $binding[] = $band; - } - } - - if ($mode != 'All') { - $sql .= " and col_mode = ?"; - $binding[] = $mode; - } - - $sql .= $this->addQslToQuery($qsl, $lotw, $eqsl, $clublog); - - $sql .= " group by col_dxcc, col_country - order by date desc"; - - $query = $this->db->query($sql, $binding); - - return $query->result(); - } - - public function get_timeline_waja($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog) { + public function get_timeline_dxcc($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog) { $binding = []; - $sql = "select min(date(COL_TIME_ON)) date, col_state from " - .$this->config->item('table_name'). " thcv - where station_id in (" . $location_list . ")"; + $sql = "select min(date(COL_TIME_ON)) date, prefix, col_country, end, adif from " + .$this->config->item('table_name'). " thcv + join dxcc_entities on thcv.col_dxcc = dxcc_entities.adif + where station_id in (" . $location_list . ")"; - if ($band != 'All') { - if ($band == 'SAT') { - $sql .= " and col_prop_mode = ?"; - $binding[] = $band; - } - else { - $sql .= " and col_prop_mode !='SAT'"; - $sql .= " and col_band = ?"; - $binding[] = $band; - } - } + if ($band == 'SAT') { // SAT == Don't care for band but for prop + $sql .= " and col_prop_mode = ?"; + $binding[] = $band; + } else { // Not SAT + if ( $propmode == 'All' ) { // Not SAT and Prop=All -> Show everything but not prop_mode SAT + $sql .= " and col_prop_mode !='SAT'"; + } elseif ($propmode == 'None') { // Not SAT and prop=None --> Take only care of Band (if set) + if ($band != 'All') { + $sql .= " and col_band = ?"; + $binding[] = $band; + } + } else { // Not SAT and not All and no prop in ('All','None') take care of band and propmode + if ($band != 'All') { + $sql .= " and col_band = ?"; + $binding[] = $band; + } + $sql .= " and col_prop_mode = ?"; + $binding[] = $propmode; + } + } - if ($mode != 'All') { - $sql .= " and col_mode = ?"; + if ($mode != 'All') { + $sql .= " and col_mode = ?"; $binding[] = $mode; - } + } - $sql .= " and COL_DXCC = '339' and trim(coalesce(COL_STATE,'')) != '' "; + $sql .= $this->addQslToQuery($qsl, $lotw, $eqsl, $clublog); - $sql .= $this->addQslToQuery($qsl, $lotw, $eqsl, $clublog); + $sql .= " group by col_dxcc, col_country + order by date desc"; - $sql .= " group by col_state - order by date desc"; + $query = $this->db->query($sql, $binding); - $query = $this->db->query($sql, $binding); + return $query->result(); + } - return $query->result(); - } - - public function get_timeline_was($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog) { + public function get_timeline_waja($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog) { $binding = []; - $sql = "select min(date(COL_TIME_ON)) date, col_state from " - .$this->config->item('table_name'). " thcv - where station_id in (" . $location_list . ")"; + $sql = "select min(date(COL_TIME_ON)) date, col_state from " + .$this->config->item('table_name'). " thcv + where station_id in (" . $location_list . ")"; - if ($band != 'All') { - if ($band == 'SAT') { - $sql .= " and col_prop_mode = ?"; + if ($band != 'All') { + if ($band == 'SAT') { + $sql .= " and col_prop_mode = ?"; $binding[] = $band; - } - else { - $sql .= " and col_prop_mode !='SAT'"; - $sql .= " and col_band = ?"; + } + else { + $sql .= " and col_prop_mode !='SAT'"; + $sql .= " and col_band = ?"; $binding[] = $band; - } - } + } + } - if ($mode != 'All') { - $sql .= " and col_mode = ?"; + if ($mode != 'All') { + $sql .= " and col_mode = ?"; $binding[] = $mode; - } + } - $sql .= " and COL_DXCC in ('291', '6', '110')"; - $sql .= " and COL_STATE in ('AK','AL','AR','AZ','CA','CO','CT','DE','FL','GA','HI','IA','ID','IL','IN','KS','KY','LA','MA','MD','ME','MI','MN','MO','MS','MT','NC','ND','NE','NH','NJ','NM','NV','NY','OH','OK','OR','PA','RI','SC','SD','TN','TX','UT','VA','VT','WA','WI','WV','WY')"; + $sql .= " and COL_DXCC = '339' and trim(coalesce(COL_STATE,'')) != '' "; - $sql .= $this->addQslToQuery($qsl, $lotw, $eqsl, $clublog); + $sql .= $this->addQslToQuery($qsl, $lotw, $eqsl, $clublog); - $sql .= " group by col_state - order by date desc"; + $sql .= " group by col_state + order by date desc"; - $query = $this->db->query($sql, $binding); + $query = $this->db->query($sql, $binding); - return $query->result(); - } + return $query->result(); + } - public function get_timeline_iota($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog) { + public function get_timeline_was($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog) { $binding = []; - $sql = "select min(date(COL_TIME_ON)) date, col_iota, name, prefix from " - .$this->config->item('table_name'). " thcv - join iota on thcv.col_iota = iota.tag - where station_id in (" . $location_list . ")"; + $sql = "select min(date(COL_TIME_ON)) date, col_state from " + .$this->config->item('table_name'). " thcv + where station_id in (" . $location_list . ")"; - if ($band != 'All') { - if ($band == 'SAT') { - $sql .= " and col_prop_mode = ?"; + if ($band != 'All') { + if ($band == 'SAT') { + $sql .= " and col_prop_mode = ?"; $binding[] = $band; - } - else { - $sql .= " and col_prop_mode !='SAT'"; - $sql .= " and col_band = ?"; + } + else { + $sql .= " and col_prop_mode !='SAT'"; + $sql .= " and col_band = ?"; $binding[] = $band; - } - } + } + } - if ($mode != 'All') { - $sql .= " and col_mode = ?"; + if ($mode != 'All') { + $sql .= " and col_mode = ?"; $binding[] = $mode; - } + } - $sql .= $this->addQslToQuery($qsl, $lotw, $eqsl, $clublog); + $sql .= " and COL_DXCC in ('291', '6', '110')"; + $sql .= " and COL_STATE in ('AK','AL','AR','AZ','CA','CO','CT','DE','FL','GA','HI','IA','ID','IL','IN','KS','KY','LA','MA','MD','ME','MI','MN','MO','MS','MT','NC','ND','NE','NH','NJ','NM','NV','NY','OH','OK','OR','PA','RI','SC','SD','TN','TX','UT','VA','VT','WA','WI','WV','WY')"; - $sql .= " and col_iota <> '' group by col_iota, name, prefix - order by date desc"; + $sql .= $this->addQslToQuery($qsl, $lotw, $eqsl, $clublog); - $query = $this->db->query($sql, $binding); + $sql .= " group by col_state + order by date desc"; - return $query->result(); - } + $query = $this->db->query($sql, $binding); - public function get_timeline_waz($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog) { + return $query->result(); + } + + public function get_timeline_iota($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog) { $binding = []; - $sql = "select min(date(COL_TIME_ON)) date, col_cqz from " - .$this->config->item('table_name'). " thcv - where station_id in (" . $location_list . ")"; + $sql = "select min(date(COL_TIME_ON)) date, col_iota, name, prefix from " + .$this->config->item('table_name'). " thcv + join iota on thcv.col_iota = iota.tag + where station_id in (" . $location_list . ")"; - if ($band != 'All') { - if ($band == 'SAT') { - $sql .= " and col_prop_mode = ?"; + if ($band != 'All') { + if ($band == 'SAT') { + $sql .= " and col_prop_mode = ?"; $binding[] = $band; - } - else { - $sql .= " and col_prop_mode !='SAT'"; - $sql .= " and col_band = ?"; + } + else { + $sql .= " and col_prop_mode !='SAT'"; + $sql .= " and col_band = ?"; $binding[] = $band; - } - } + } + } - if ($mode != 'All') { - $sql .= " and col_mode = ?"; + if ($mode != 'All') { + $sql .= " and col_mode = ?"; $binding[] = $mode; - } + } - $sql .= $this->addQslToQuery($qsl, $lotw, $eqsl, $clublog); + $sql .= $this->addQslToQuery($qsl, $lotw, $eqsl, $clublog); - $sql .= " and col_cqz <> '' group by col_cqz - order by date desc"; + $sql .= " and col_iota <> '' group by col_iota, name, prefix + order by date desc"; - $query = $this->db->query($sql, $binding); + $query = $this->db->query($sql, $binding); - return $query->result(); - } + return $query->result(); + } + + public function get_timeline_waz($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog) { + $binding = []; + $sql = "select min(date(COL_TIME_ON)) date, col_cqz from " + .$this->config->item('table_name'). " thcv + where station_id in (" . $location_list . ")"; + + if ($band != 'All') { + if ($band == 'SAT') { + $sql .= " and col_prop_mode = ?"; + $binding[] = $band; + } + else { + $sql .= " and col_prop_mode !='SAT'"; + $sql .= " and col_band = ?"; + $binding[] = $band; + } + } + + if ($mode != 'All') { + $sql .= " and col_mode = ?"; + $binding[] = $mode; + } + + $sql .= $this->addQslToQuery($qsl, $lotw, $eqsl, $clublog); + + $sql .= " and col_cqz <> '' group by col_cqz + order by date desc"; + + $query = $this->db->query($sql, $binding); + + return $query->result(); + } // Adds confirmation to query - function addQslToQuery($qsl, $lotw, $eqsl, $clublog) { - $sql = ''; - if ( (($lotw ?? 0) != 0) || (($qsl ?? 0) != 0) || (($eqsl ?? 0) != 0) || (($clublog ?? 0) != 0) ) { - $sql .= 'and ('; + function addQslToQuery($qsl, $lotw, $eqsl, $clublog) { + $sql = ''; + if ( (($lotw ?? 0) != 0) || (($qsl ?? 0) != 0) || (($eqsl ?? 0) != 0) || (($clublog ?? 0) != 0) ) { + $sql .= 'and ('; - if ($lotw ?? 0 == 1) { - $sql .= "col_lotw_qsl_rcvd = 'Y' or"; - } + if ($lotw ?? 0 == 1) { + $sql .= "col_lotw_qsl_rcvd = 'Y' or"; + } - if ($qsl ?? 0 == 1) { - $sql .= " col_qsl_rcvd = 'Y' or"; - } + if ($qsl ?? 0 == 1) { + $sql .= " col_qsl_rcvd = 'Y' or"; + } - if ($eqsl ?? 0 == 1) { - $sql .= " col_eqsl_qsl_rcvd = 'Y' or"; - } + if ($eqsl ?? 0 == 1) { + $sql .= " col_eqsl_qsl_rcvd = 'Y' or"; + } - if ($clublog ?? 0 == 1) { - $sql .= " col_clublog_qso_download_status = 'Y' or"; - } - $sql.=' 1=0)'; - } - return $sql; - } + if ($clublog ?? 0 == 1) { + $sql .= " col_clublog_qso_download_status = 'Y' or"; + } + $sql.=' 1=0)'; + } + return $sql; + } - public function timeline_qso_details($querystring, $band, $propmode, $mode, $type){ + public function timeline_qso_details($querystring, $band, $propmode, $mode, $type){ $this->load->model('logbooks_model'); $logbooks_locations_array = $this->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook')); @@ -231,128 +240,128 @@ class Timeline_model extends CI_Model $this->db->join('dxcc_entities', 'dxcc_entities.adif = '.$this->config->item('table_name').'.COL_DXCC', 'left outer'); $this->db->join('lotw_users', 'lotw_users.callsign = '.$this->config->item('table_name').'.col_call', 'left outer'); - if ($band != 'All') { - if ($band == 'SAT') { - $this->db->where('col_prop_mode', $band); - } else { - $this->db->where('COL_PROP_MODE !=', 'SAT'); - $this->db->where('col_band', $band); - } - } + if ($band != 'All') { + if ($band == 'SAT') { + $this->db->where('col_prop_mode', $band); + } else { + $this->db->where('COL_PROP_MODE !=', 'SAT'); + $this->db->where('col_band', $band); + } + } - if ($mode != 'All') { - $this->db->where('col_mode', $mode); - } + if ($mode != 'All') { + $this->db->where('col_mode', $mode); + } - $this->db->where_in('station_profile.station_id', $logbooks_locations_array); + $this->db->where_in('station_profile.station_id', $logbooks_locations_array); - switch($type) { - case 'dxcc': $this->db->where('COL_DXCC', $querystring); break; - case 'was': $this->db->where('COL_STATE', $querystring); break; - case 'iota': $this->db->where('COL_IOTA', $querystring); break; - case 'waz': $this->db->where('COL_CQZ', $querystring); break; - case 'vucc': $this->db->group_start(); $this->db->like('COL_GRIDSQUARE', $querystring); $this->db->or_like('COL_VUCC_GRIDS',$querystring); $this->db->group_end();break; - case 'waja': $this->db->where('COL_STATE', $querystring); break; - } - $this->db->order_by('COL_TIME_ON', 'DESC'); + switch($type) { + case 'dxcc': $this->db->where('COL_DXCC', $querystring); break; + case 'was': $this->db->where('COL_STATE', $querystring); break; + case 'iota': $this->db->where('COL_IOTA', $querystring); break; + case 'waz': $this->db->where('COL_CQZ', $querystring); break; + case 'vucc': $this->db->group_start(); $this->db->like('COL_GRIDSQUARE', $querystring); $this->db->or_like('COL_VUCC_GRIDS',$querystring); $this->db->group_end();break; + case 'waja': $this->db->where('COL_STATE', $querystring); break; + } + $this->db->order_by('COL_TIME_ON', 'DESC'); - return $this->db->get($this->config->item('table_name')); - } + return $this->db->get($this->config->item('table_name')); + } - public function get_timeline_vucc($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog) { - $timeline = array(); + public function get_timeline_vucc($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog) { + $timeline = array(); - $col_gridsquare = $this->get_gridsquare($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog); + $col_gridsquare = $this->get_gridsquare($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog); - foreach ($col_gridsquare as $grid) { - $timeline[] = array( - 'gridsquare' => $grid->gridsquare, - 'date' => $grid->date); - } + foreach ($col_gridsquare as $grid) { + $timeline[] = array( + 'gridsquare' => $grid->gridsquare, + 'date' => $grid->date); + } - $col_vucc_grids = $this->get_vucc_grids($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog); + $col_vucc_grids = $this->get_vucc_grids($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog); - foreach ($col_vucc_grids as $gridSplit) { - $grids = explode(",", $gridSplit->gridsquare); - foreach($grids as $key) { - $grid_four = strtoupper(substr(trim($key),0,4)); - if (!array_search($grid_four, array_column($timeline, 'gridsquare'))) { - $timeline[] = array( - 'gridsquare' => $grid_four, - 'date' => $gridSplit->date); - } - } - } - usort($timeline, function($a, $b) { - return $b['date'] <=> $a['date']; - }); + foreach ($col_vucc_grids as $gridSplit) { + $grids = explode(",", $gridSplit->gridsquare); + foreach($grids as $key) { + $grid_four = strtoupper(substr(trim($key),0,4)); + if (!array_search($grid_four, array_column($timeline, 'gridsquare'))) { + $timeline[] = array( + 'gridsquare' => $grid_four, + 'date' => $gridSplit->date); + } + } + } + usort($timeline, function($a, $b) { + return $b['date'] <=> $a['date']; + }); - return $timeline; - } + return $timeline; + } - public function get_gridsquare($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog) { + public function get_gridsquare($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog) { $binding = []; - $sql = "select min(COL_TIME_ON) date, upper(substring(col_gridsquare, 1, 4)) gridsquare from " - .$this->config->item('table_name'). " thcv - where station_id in (" . $location_list . ")"; + $sql = "select min(COL_TIME_ON) date, upper(substring(col_gridsquare, 1, 4)) gridsquare from " + .$this->config->item('table_name'). " thcv + where station_id in (" . $location_list . ")"; - if ($band != 'All') { - if ($band == 'SAT') { - $sql .= " and col_prop_mode = ?"; + if ($band != 'All') { + if ($band == 'SAT') { + $sql .= " and col_prop_mode = ?"; $binding[] = $band; - } - else { - $sql .= " and col_prop_mode !='SAT'"; - $sql .= " and col_band = ?"; + } + else { + $sql .= " and col_prop_mode !='SAT'"; + $sql .= " and col_band = ?"; $binding[] = $band; - } - } + } + } - if ($mode != 'All') { - $sql .= " and col_mode = ?"; + if ($mode != 'All') { + $sql .= " and col_mode = ?"; $binding[] = $mode; - } + } - $sql .= $this->addQslToQuery($qsl, $lotw, $eqsl, $clublog); + $sql .= $this->addQslToQuery($qsl, $lotw, $eqsl, $clublog); - $sql .= " and col_gridsquare <> '' group by upper(substring(col_gridsquare, 1, 4)) - order by date desc"; + $sql .= " and col_gridsquare <> '' group by upper(substring(col_gridsquare, 1, 4)) + order by date desc"; - $query = $this->db->query($sql, $binding); + $query = $this->db->query($sql, $binding); - return $query->result(); - } + return $query->result(); + } - public function get_vucc_grids($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog) { + public function get_vucc_grids($band, $mode, $propmode, $location_list, $qsl, $lotw, $eqsl, $clublog) { $binding = []; - $sql = "select COL_TIME_ON as date, upper(col_vucc_grids) gridsquare from " - .$this->config->item('table_name'). " thcv - where station_id in (" . $location_list . ")"; + $sql = "select COL_TIME_ON as date, upper(col_vucc_grids) gridsquare from " + .$this->config->item('table_name'). " thcv + where station_id in (" . $location_list . ")"; - if ($band != 'All') { - if ($band == 'SAT') { - $sql .= " and col_prop_mode = ?"; + if ($band != 'All') { + if ($band == 'SAT') { + $sql .= " and col_prop_mode = ?"; $binding[] = $band; - } - else { - $sql .= " and col_prop_mode !='SAT'"; - $sql .= " and col_band = ?"; + } + else { + $sql .= " and col_prop_mode !='SAT'"; + $sql .= " and col_band = ?"; $binding[] = $band; - } - } + } + } - if ($mode != 'All') { - $sql .= " and col_mode = ?"; + if ($mode != 'All') { + $sql .= " and col_mode = ?"; $binding[] = $mode; - } + } - $sql .= $this->addQslToQuery($qsl, $lotw, $eqsl, $clublog); + $sql .= $this->addQslToQuery($qsl, $lotw, $eqsl, $clublog); - $sql .= " and col_vucc_grids <> ''"; + $sql .= " and col_vucc_grids <> ''"; - $query = $this->db->query($sql, $binding); + $query = $this->db->query($sql, $binding); - return $query->result(); - } + return $query->result(); + } } diff --git a/application/views/timeline/index.php b/application/views/timeline/index.php index 97341fda3..2f40d9826 100644 --- a/application/views/timeline/index.php +++ b/application/views/timeline/index.php @@ -71,9 +71,9 @@