From 0eb4d892fd9a7e44a351f18c67e3b4f72f7b5b52 Mon Sep 17 00:00:00 2001 From: Kim Huebel Date: Wed, 26 Jun 2019 10:17:06 +0200 Subject: [PATCH 1/2] Added new Awards - DOK This gives us a list of worked DOKs (counted only, if DXCC is 230 = Germany) --- application/controllers/Awards.php | 50 +++++++++ application/models/Api_model.php | 1 + application/models/Dok.php | 127 +++++++++++++++++++++++ application/views/awards/dok/details.php | 40 +++++++ application/views/awards/dok/index.php | 66 ++++++++++++ application/views/awards/nav_bar.php | 1 + 6 files changed, 285 insertions(+) create mode 100644 application/models/Dok.php create mode 100644 application/views/awards/dok/details.php create mode 100644 application/views/awards/dok/index.php diff --git a/application/controllers/Awards.php b/application/controllers/Awards.php index b132649f..4fed4a6d 100644 --- a/application/controllers/Awards.php +++ b/application/controllers/Awards.php @@ -17,6 +17,56 @@ class Awards extends CI_Controller { $this->load->view('interface_assets/footer'); } + public function dok () + { + //echo "Needs Developed"; + $this->load->model('dok'); + $data['doks'] = $this->dok->show_stats(); + $data['worked_bands'] = $this->dok->get_worked_bands(); + + // Render Page + $data['page_title'] = "Awards - DXCC"; + $this->load->view('interface_assets/header', $data); + $this->load->view('awards/dok/index'); + $this->load->view('interface_assets/footer'); + + } + + public function dok_details(){ + $a = $this->input->get(); + $q = ""; + foreach ($a as $key => $value) { + $q .= $key."=".$value.("(and)"); + } + $q = substr($q, 0, strlen($q)-13); + + $arguments["query"] = $q; + $arguments["fields"] = ''; + $arguments["format"] = "json"; + $arguments["limit"] = ''; + $arguments["order"] = ''; + + // print_r($arguments); + // return; + + // Load the API and Logbook models + $this->load->model('api_model'); + $this->load->model('logbook_model'); + + // Call the parser within the API model to build the query + $query = $this->api_model->select_parse($arguments); + + // Execute the query, and retrieve the results + $data = $this->logbook_model->api_search_query($query); + + // Render Page + $data['page_title'] = "Log View - DOK"; + $data['filter'] = str_replace("(and)", ", ", $q);//implode(", ", array_keys($a)); + $this->load->view('interface_assets/header', $data); + $this->load->view('awards/dok/details'); + $this->load->view('interface_assets/footer'); + } + public function dxcc () { //echo "Needs Developed"; diff --git a/application/models/Api_model.php b/application/models/Api_model.php index 4c41b8b2..ef1fca3e 100644 --- a/application/models/Api_model.php +++ b/application/models/Api_model.php @@ -337,6 +337,7 @@ class API_Model extends CI_Model { 'COL_CONTEST_ID' => array('Name' => 'ContestID', 'Description' => '', 'Type' => ''), 'COL_COUNTRY' => array('Name' => 'Country', 'Description' => '', 'Type' => ''), 'COL_CQZ' => array('Name' => 'CQZone', 'Description' => '', 'Type' => ''), + 'COL_DARC_DOK' => array('Name' => 'Dok', 'Description' => '', 'Type' => ''), 'COL_DISTANCE' => array('Name' => 'Distance', 'Description' => '', 'Type' => ''), 'COL_DXCC' => array('Name' => 'DXCC', 'Description' => '', 'Type' => ''), 'COL_EMAIL' => array('Name' => 'EMail', 'Description' => '', 'Type' => ''), diff --git a/application/models/Dok.php b/application/models/Dok.php new file mode 100644 index 00000000..271b8370 --- /dev/null +++ b/application/models/Dok.php @@ -0,0 +1,127 @@ +0, + "80m"=>0, + "60m"=>0, + "40m"=>0, + "30m"=>0, + "20m"=>0, + "17m"=>0, + "15m"=>0, + "12m"=>0, + "10m"=>0, + "6m" =>0, + "4m" =>0, + "2m" =>0, + "70cm"=>0, + "23cm"=>0, + "13cm"=>0, + "9cm"=>0, + "6cm"=>0, + "3cm"=>0, + "1.25cm"=>0); + + function __construct() + { + // Call the Model constructor + parent::__construct(); + } + + function get_worked_bands() { + // get all worked slots from database + $data = $this->db->query( + "SELECT distinct LOWER(`COL_BAND`) as `COL_BAND` FROM `".$this->config->item('table_name')."` WHERE COL_DARC_DOK IS NOT NULL AND COL_DARC_DOK != '' AND COL_DXCC = 230 " + ); + $worked_slots = array(); + foreach($data->result() as $row){ + array_push($worked_slots, $row->COL_BAND); + } + + + // bring worked-slots in order of defined $bandslots + $results = array(); + foreach(array_keys($this->bandslots) as $slot) { + if(in_array($slot, $worked_slots)) { + array_push($results, $slot); + } + } + return $results; + } + + function show_stats(){ + + $data = $this->db->query( + "select upper(COL_DARC_DOK) as COL_DARC_DOK, COL_MODE, lcase(COL_BAND) as COL_BAND, count(COL_DARC_DOK) as cnt + from ".$this->config->item('table_name')." WHERE COL_DARC_DOK IS NOT NULL AND COL_DARC_DOK != '' AND COL_DXCC = 230 + group by COL_DARC_DOK, COL_MODE, COL_BAND" + ); + + $results = array(); + $last_dok = ""; + foreach($data->result() as $row){ + if ($last_dok != $row->COL_DARC_DOK){ + // new row + $results[$row->COL_DARC_DOK] = $this->bandslots; + $last_dok = $row->COL_DARC_DOK; + } + + // update stats + if (!isset($results[$row->COL_DARC_DOK])) + $results[$row->COL_DARC_DOK] = []; + + if (!isset($results[$row->COL_DARC_DOK][$row->COL_BAND])) + $results[$row->COL_DARC_DOK][$row->COL_BAND] = 0; + + $results[$row->COL_DARC_DOK][$row->COL_BAND] += $row->cnt; + } + + return $results; + } + + /** + * Function: mostactive + * Information: Returns the most active band + **/ + function info($callsign) + { + $exceptions = $this->db->query(' + SELECT * + FROM `dxccexceptions` + WHERE `prefix` = \''.$callsign.'\' + LIMIT 1 + '); + + if ($exceptions->num_rows() > 0) + { + return $exceptions; + } else { + + $query = $this->db->query(' + SELECT * + FROM dxcc_entities + WHERE prefix = SUBSTRING( \''.$callsign.'\', 1, LENGTH( prefix ) ) + ORDER BY LENGTH( prefix ) DESC + LIMIT 1 + '); + + return $query; + } + } + + function search(){ + print_r($this->input->get()); + return; + } + + function empty_table($table) { + $this->db->empty_table($table); + } + + function list() { + $this->db->order_by('name', 'ASC'); + return $this->db->get('dxcc_entities'); + } +} +?> diff --git a/application/views/awards/dok/details.php b/application/views/awards/dok/details.php new file mode 100644 index 00000000..0a438521 --- /dev/null +++ b/application/views/awards/dok/details.php @@ -0,0 +1,40 @@ + + + + + + + + + +
+ +

Logbook

+ +

Filtering on

+ + load->view('view_log/partial/log') ?> diff --git a/application/views/awards/dok/index.php b/application/views/awards/dok/index.php new file mode 100644 index 00000000..d43ebb4a --- /dev/null +++ b/application/views/awards/dok/index.php @@ -0,0 +1,66 @@ + +
+

+ + + + load->view("awards/nav_bar")?> + + + + + + $slot\n"; + } + ?> + + + + $val){ + print(""); + foreach($val as $band=>$count){ + if (in_array($band, $worked_bands)) { + if ($count == 0){ + print(""); + }else{ + printf("", str_replace("&", "%26", $dok), $band, $count); + } + } + } + print(""); + } + + ?> + + +
DOKs ()
$dok %d
+ + +
diff --git a/application/views/awards/nav_bar.php b/application/views/awards/nav_bar.php index 4a6d44ad..fa7ae0fa 100644 --- a/application/views/awards/nav_bar.php +++ b/application/views/awards/nav_bar.php @@ -4,4 +4,5 @@ WAB SOTA CQ + DOK \ No newline at end of file From f4068b2c03edd68b0c4d7a80a4b5fb829576e0c1 Mon Sep 17 00:00:00 2001 From: Kim Huebel Date: Wed, 26 Jun 2019 11:07:41 +0200 Subject: [PATCH 2/2] Corrected Typo / forgotten pagetitle --- application/controllers/Awards.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/controllers/Awards.php b/application/controllers/Awards.php index 4fed4a6d..2495ba92 100644 --- a/application/controllers/Awards.php +++ b/application/controllers/Awards.php @@ -25,7 +25,7 @@ class Awards extends CI_Controller { $data['worked_bands'] = $this->dok->get_worked_bands(); // Render Page - $data['page_title'] = "Awards - DXCC"; + $data['page_title'] = "Awards - DOK"; $this->load->view('interface_assets/header', $data); $this->load->view('awards/dok/index'); $this->load->view('interface_assets/footer');