diff --git a/application/controllers/Awards.php b/application/controllers/Awards.php index b132649f..2495ba92 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 - DOK"; + $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