2021-03-14 09:11:21 +00:00
< ? php
class Lookup_model extends CI_Model {
function __construct (){
// Call the Model constructor
parent :: __construct ();
}
2021-03-17 17:23:01 +00:00
function getSearchResult ( $queryinfo ){
$modes = $this -> get_worked_modes ( $queryinfo [ 'station_id' ]);
2021-03-14 09:11:21 +00:00
2021-03-17 17:23:01 +00:00
return $this -> getResultFromDatabase ( $queryinfo , $modes );
2021-03-14 09:11:21 +00:00
}
2021-03-17 17:23:01 +00:00
function getResultFromDatabase ( $queryinfo , $modes ) {
2021-03-14 09:11:21 +00:00
// Creating an empty array with all the bands and modes from the database
foreach ( $modes as $mode ) {
2021-03-17 17:23:01 +00:00
foreach ( $queryinfo [ 'bands' ] as $band ) {
2021-03-14 09:11:21 +00:00
$resultArray [ $mode ][ $band ] = '-' ;
}
}
// Populating array with worked band/mode combinations
2021-03-17 17:23:01 +00:00
$worked = $this -> getQueryData ( $queryinfo , 'worked' );
2021-03-14 09:11:21 +00:00
foreach ( $worked as $w ) {
$resultArray [ $w -> col_mode ][ $w -> col_band ] = 'W' ;
}
// Populating array with confirmed band/mode combinations
2021-03-17 17:23:01 +00:00
$confirmed = $this -> getQueryData ( $queryinfo , 'confirmed' );
2021-03-14 09:11:21 +00:00
foreach ( $confirmed as $c ) {
$resultArray [ $c -> col_mode ][ $c -> col_band ] = 'C' ;
}
return $resultArray ;
}
/*
* Builds query depending on what we are searching for
*/
2021-03-17 17:23:01 +00:00
function getQueryData ( $queryinfo , $confirmedtype ) {
2021-03-14 10:56:45 +00:00
// If user inputs longer grid than 4 chars, we use only the first 4
2021-03-17 17:23:01 +00:00
if ( strlen ( $queryinfo [ 'grid' ]) > 4 ) {
$fixedgrid = substr ( $queryinfo [ 'grid' ], 0 , 4 );
2021-03-14 10:56:45 +00:00
}
else {
2021-03-17 17:23:01 +00:00
$fixedgrid = $queryinfo [ 'grid' ];
2021-03-14 10:56:45 +00:00
}
2021-03-17 17:23:01 +00:00
$sqlquerytypestring = '' ;
switch ( $queryinfo [ 'type' ]) {
case 'dxcc' : $sqlquerytypestring .= " and col_dxcc = " . $queryinfo [ 'dxcc' ]; break ;
case 'iota' : $sqlquerytypestring .= " and col_iota = ' " . $queryinfo [ 'iota' ] . " ' " ; break ;
case 'grid' : $sqlquerytypestring .= " and (col_gridsquare like '% " . $fixedgrid . " %' or col_vucc_grids like '% " . $fixedgrid . " %') " ; break ;
case 'cqz' : $sqlquerytypestring .= " and col_cqz = " . $queryinfo [ 'cqz' ]; break ;
case 'was' : $sqlquerytypestring .= " and col_state = ' " . $queryinfo [ 'was' ] . " ' and COL_DXCC in ('291', '6', '110') " ;; break ;
case 'sota' : $sqlquerytypestring .= " and col_sota_ref = ' " . $queryinfo [ 'sota' ] . " ' " ; break ;
case 'wwff' : $sqlquerytypestring .= " and col_sig = 'WWFF' and col_sig_info = ' " . $queryinfo [ 'wwff' ] . " ' " ; break ;
default : break ;
}
$sqlqueryconfirmationstring = '' ;
if ( $confirmedtype == 'confirmed' ) {
$sqlqueryconfirmationstring .= " and (col_qsl_rcvd = 'Y' or col_lotw_qsl_rcvd = 'Y') " ;
}
// Fetching info for all modes and bands except satellite
2021-03-14 09:11:21 +00:00
$sql = " SELECT distinct col_band, lower(col_mode) as col_mode FROM " . $this -> config -> item ( 'table_name' ) . " thcv " ;
2021-03-17 17:23:01 +00:00
$sql .= " where station_id = " . $queryinfo [ 'station_id' ];
2021-03-14 09:11:21 +00:00
$sql .= " and coalesce(col_submode, '') = '' " ;
$sql .= " and col_prop_mode != 'SAT' " ;
2021-03-17 17:23:01 +00:00
$sql .= $sqlquerytypestring ;
2021-03-14 09:11:21 +00:00
2021-03-17 17:23:01 +00:00
$sql .= $sqlqueryconfirmationstring ;
2021-03-14 09:11:21 +00:00
2021-03-17 17:23:01 +00:00
// Fetching info for all sub_modes and bands except satellite
2021-03-14 09:11:21 +00:00
$sql .= " union SELECT distinct col_band, lower(col_submode) as col_mode FROM " . $this -> config -> item ( 'table_name' ) . " thcv " ;
2021-03-17 17:23:01 +00:00
$sql .= " where station_id = " . $queryinfo [ 'station_id' ];
2021-03-14 09:11:21 +00:00
$sql .= " and coalesce(col_submode, '') <> '' " ;
$sql .= " and col_prop_mode != 'SAT' " ;
2021-03-17 17:23:01 +00:00
$sql .= $sqlquerytypestring ;
2021-03-14 09:11:21 +00:00
2021-03-17 17:23:01 +00:00
$sql .= $sqlqueryconfirmationstring ;
2021-03-14 09:11:21 +00:00
2021-03-17 17:23:01 +00:00
// Fetching info for all modes on satellite
2021-03-14 09:11:21 +00:00
$sql .= " union SELECT distinct 'SAT' col_band, lower(col_mode) as col_mode FROM " . $this -> config -> item ( 'table_name' ) . " thcv " ;
2021-03-17 17:23:01 +00:00
$sql .= " where station_id = " . $queryinfo [ 'station_id' ];
2021-03-14 09:11:21 +00:00
$sql .= " and coalesce(col_submode, '') = '' " ;
$sql .= " and col_prop_mode = 'SAT' " ;
2021-03-17 17:23:01 +00:00
$sql .= $sqlquerytypestring ;
2021-03-14 09:11:21 +00:00
2021-03-17 17:23:01 +00:00
$sql .= $sqlqueryconfirmationstring ;
2021-03-14 09:11:21 +00:00
2021-03-17 17:23:01 +00:00
// Fetching info for all sub_modes on satellite
2021-03-14 09:11:21 +00:00
$sql .= " union SELECT distinct 'SAT' col_band, lower(col_submode) as col_mode FROM " . $this -> config -> item ( 'table_name' ) . " thcv " ;
2021-03-17 17:23:01 +00:00
$sql .= " where station_id = " . $queryinfo [ 'station_id' ];
2021-03-14 09:11:21 +00:00
$sql .= " and coalesce(col_submode, '') <> '' " ;
$sql .= " and col_prop_mode = 'SAT' " ;
2021-03-17 17:23:01 +00:00
$sql .= $sqlquerytypestring ;
2021-03-14 09:11:21 +00:00
2021-03-17 17:23:01 +00:00
$sql .= $sqlqueryconfirmationstring ;
2021-03-14 09:11:21 +00:00
$query = $this -> db -> query ( $sql );
return $query -> result ();
}
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 ,
" 1.25cm " => 0 ,
" SAT " => 0 ,
);
/*
* Get ' s the worked bands from the log
*/
function get_worked_bands ( $station_id )
{
// 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 station_id = " . $station_id . " AND COL_PROP_MODE != \" SAT \" "
);
$worked_slots = array ();
foreach ( $data -> result () as $row ) {
array_push ( $worked_slots , $row -> COL_BAND );
}
$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 ));
}
// 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 ;
}
/*
* Get ' s the worked modes from the log
*/
function get_worked_modes ( $station_id )
{
// get all worked modes from database
$data = $this -> db -> query (
" SELECT distinct LOWER(`COL_MODE`) as `COL_MODE` FROM ` " . $this -> config -> item ( 'table_name' ) . " ` WHERE station_id = " . $station_id . " order by COL_MODE ASC "
);
$results = array ();
foreach ( $data -> result () as $row ) {
array_push ( $results , $row -> COL_MODE );
}
$data = $this -> db -> query (
" SELECT distinct LOWER(`COL_SUBMODE`) as `COL_SUBMODE` FROM ` " . $this -> config -> item ( 'table_name' ) . " ` WHERE station_id = " . $station_id . " and coalesce(COL_SUBMODE, '') <> '' order by COL_SUBMODE ASC "
);
foreach ( $data -> result () as $row ) {
if ( ! in_array ( $row , $results )) {
array_push ( $results , $row -> COL_SUBMODE );
}
}
return $results ;
}
}