2011-06-17 20:52:00 +08:00
< ? php
class DXCC extends CI_Model {
2019-06-17 16:10:55 +08:00
public $bandslots = array ( " 160m " => 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 ,
2019-12-04 01:36:35 +08:00
" 1.25cm " => 0 ,
" SAT " => 0 ,
);
2019-06-17 16:10:55 +08:00
2011-06-17 20:52:00 +08:00
function __construct ()
{
// Call the Model constructor
parent :: __construct ();
2019-09-25 07:05:45 +08:00
2011-06-17 20:52:00 +08:00
}
2016-02-13 00:31:29 +08:00
2019-06-17 16:10:55 +08:00
function get_worked_bands () {
2019-09-25 07:05:45 +08:00
$CI =& get_instance ();
$CI -> load -> model ( 'Stations' );
$station_id = $CI -> Stations -> find_active ();
2019-06-17 16:10:55 +08:00
// get all worked slots from database
$data = $this -> db -> query (
2019-12-04 01:36:35 +08:00
" SELECT distinct LOWER(`COL_BAND`) as `COL_BAND` FROM ` " . $this -> config -> item ( 'table_name' ) . " ` WHERE station_id = " . $station_id . " AND COL_PROP_MODE != \" SAT \" "
2019-06-17 16:10:55 +08:00
);
$worked_slots = array ();
foreach ( $data -> result () as $row ){
array_push ( $worked_slots , $row -> COL_BAND );
}
2019-12-04 01:36:35 +08:00
$SAT_data = $this -> db -> query (
" SELECT distinct LOWER(`COL_PROP_MODE`) as `COL_PROP_MODE` FROM ` " . $this -> config -> item ( 'table_name' ) . " ` WHERE station_id = " . $station_id . " AND COL_PROP_MODE = \" SAT \" "
);
foreach ( $SAT_data -> result () as $row ){
array_push ( $worked_slots , strtoupper ( $row -> COL_PROP_MODE ));
}
2019-06-17 16:10:55 +08:00
// 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 );
}
}
2019-12-04 01:36:35 +08:00
2019-06-17 16:10:55 +08:00
return $results ;
}
2016-02-13 00:31:29 +08:00
function show_stats (){
2019-09-25 07:05:45 +08:00
$CI =& get_instance ();
$CI -> load -> model ( 'Stations' );
$station_id = $CI -> Stations -> find_active ();
2016-02-13 00:31:29 +08:00
$data = $this -> db -> query (
" select COL_COUNTRY, COL_MODE, lcase(COL_BAND) as COL_BAND, count(COL_COUNTRY) as cnt
2019-09-25 07:05:45 +08:00
from " . $this->config ->item('table_name'). "
2019-12-04 01:36:35 +08:00
where station_id = " . $station_id . " AND COL_PROP_MODE != \ " SAT \"
2016-02-13 00:31:29 +08:00
group by COL_COUNTRY , COL_MODE , COL_BAND "
);
$results = array ();
$last_country = " " ;
foreach ( $data -> result () as $row ){
if ( $last_country != $row -> COL_COUNTRY ){
// new row
2019-06-17 16:10:55 +08:00
$results [ $row -> COL_COUNTRY ] = $this -> bandslots ;
2016-02-13 00:31:29 +08:00
$last_country = $row -> COL_COUNTRY ;
}
// update stats
2019-06-18 00:42:57 +08:00
if ( ! isset ( $results [ $row -> COL_COUNTRY ]))
$results [ $row -> COL_COUNTRY ] = [];
if ( ! isset ( $results [ $row -> COL_COUNTRY ][ $row -> COL_BAND ]))
$results [ $row -> COL_COUNTRY ][ $row -> COL_BAND ] = 0 ;
2016-02-29 18:27:23 +08:00
$results [ $row -> COL_COUNTRY ][ $row -> COL_BAND ] += $row -> cnt ;
2016-02-13 00:31:29 +08:00
}
2019-12-04 01:36:35 +08:00
// Satellite DXCC
$satellite_data = $this -> db -> query (
2019-12-04 03:06:19 +08:00
" select COL_COUNTRY, COL_PROP_MODE as COL_PROP_MODE, count(COL_COUNTRY) as cnt
2019-12-04 01:36:35 +08:00
from " . $this->config ->item('table_name'). "
where station_id = " . $station_id . " AND COL_PROP_MODE = \ " SAT \"
2019-12-04 03:04:44 +08:00
group by COL_COUNTRY "
2019-12-04 01:36:35 +08:00
);
foreach ( $satellite_data -> result () as $row ){
if ( $last_country != $row -> COL_COUNTRY ){
// new row
$results [ $row -> COL_COUNTRY ] = $this -> bandslots ;
$last_country = $row -> COL_COUNTRY ;
}
// update stats
if ( ! isset ( $results [ $row -> COL_COUNTRY ]))
$results [ $row -> COL_COUNTRY ] = [];
if ( ! isset ( $results [ $row -> COL_COUNTRY ][ $row -> COL_PROP_MODE ]))
$results [ $row -> COL_COUNTRY ][ $row -> COL_PROP_MODE ] = 0 ;
$results [ $row -> COL_COUNTRY ][ $row -> COL_PROP_MODE ] += $row -> cnt ;
}
2016-02-16 01:46:33 +08:00
// print_r($results);
// return;
2016-02-13 00:31:29 +08:00
return $results ;
}
2011-06-17 20:52:00 +08:00
/**
* Function : mostactive
* Information : Returns the most active band
**/
function info ( $callsign )
{
$exceptions = $this -> db -> query ( '
SELECT *
FROM `dxccexceptions`
WHERE `prefix` = \ '' . $callsign . ' \ '
2014-09-26 06:09:44 +08:00
LIMIT 1
2011-06-17 20:52:00 +08:00
' );
2014-09-26 06:09:44 +08:00
2011-06-17 20:52:00 +08:00
if ( $exceptions -> num_rows () > 0 )
{
return $exceptions ;
} else {
2014-09-26 06:09:44 +08:00
2011-06-17 20:52:00 +08:00
$query = $this -> db -> query ( '
SELECT *
2019-06-25 00:34:01 +08:00
FROM dxcc_entities
2014-09-26 06:09:44 +08:00
WHERE prefix = SUBSTRING ( \ '' . $callsign . ' \ ' , 1 , LENGTH ( prefix ) )
2011-06-17 20:52:00 +08:00
ORDER BY LENGTH ( prefix ) DESC
2014-09-26 06:09:44 +08:00
LIMIT 1
2011-06-17 20:52:00 +08:00
' );
2014-09-26 06:09:44 +08:00
2011-06-17 20:52:00 +08:00
return $query ;
}
}
2014-09-26 06:09:44 +08:00
2016-02-16 01:46:33 +08:00
function search (){
print_r ( $this -> input -> get ());
return ;
}
2012-11-20 06:24:10 +08:00
function empty_table ( $table ) {
2014-09-26 06:09:44 +08:00
$this -> db -> empty_table ( $table );
2012-11-20 06:24:10 +08:00
}
2019-01-02 03:14:25 +08:00
function list () {
$this -> db -> order_by ( 'name' , 'ASC' );
return $this -> db -> get ( 'dxcc_entities' );
}
2011-06-17 20:52:00 +08:00
}
2014-09-26 06:09:44 +08:00
?>