2021-03-14 09:11:21 +00:00
< ? php
class Lookup_model extends CI_Model {
2021-03-17 17:23:01 +00:00
function getSearchResult ( $queryinfo ){
2021-09-10 21:13:25 +00:00
$modes = $this -> get_worked_modes ( $queryinfo [ 'location_list' ]);
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 ) {
2023-02-18 08:58:54 +00:00
if ( in_array ( $w -> col_band , $queryinfo [ 'bands' ])) {
$resultArray [ $w -> col_mode ][ $w -> col_band ] = 'W' ;
}
2021-03-14 09:11:21 +00:00
}
// 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 ) {
2023-02-18 08:58:54 +00:00
if ( in_array ( $c -> col_band , $queryinfo [ 'bands' ])) {
$resultArray [ $c -> col_mode ][ $c -> col_band ] = 'C' ;
}
2021-03-14 09:11:21 +00:00
}
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 ;
2023-02-18 13:19:02 +00:00
case 'vucc' : $sqlquerytypestring .= " and (col_gridsquare like '% " . $fixedgrid . " %' or col_vucc_grids like '% " . $fixedgrid . " %') " ; break ;
case 'cq' : $sqlquerytypestring .= " and col_cqz = " . $queryinfo [ 'cqz' ]; break ;
2021-03-17 17:23:01 +00:00
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-09-10 21:13:25 +00:00
$sql .= " where station_id in ( " . $queryinfo [ 'location_list' ] . " ) " ;
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-09-10 21:13:25 +00:00
$sql .= " where station_id in ( " . $queryinfo [ 'location_list' ] . " ) " ;
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-09-10 21:13:25 +00:00
$sql .= " where station_id in ( " . $queryinfo [ 'location_list' ] . " ) " ;
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-09-10 21:13:25 +00:00
$sql .= " where station_id in ( " . $queryinfo [ 'location_list' ] . " ) " ;
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 ();
}
/*
* Get ' s the worked modes from the log
*/
2021-09-10 21:13:25 +00:00
function get_worked_modes ( $location_list )
2021-03-14 09:11:21 +00:00
{
// get all worked modes from database
$data = $this -> db -> query (
2021-09-10 21:13:25 +00:00
" SELECT distinct LOWER(`COL_MODE`) as `COL_MODE` FROM ` " . $this -> config -> item ( 'table_name' ) . " ` WHERE station_id in ( " . $location_list . " ) order by COL_MODE ASC "
2021-03-14 09:11:21 +00:00
);
$results = array ();
foreach ( $data -> result () as $row ) {
array_push ( $results , $row -> COL_MODE );
}
$data = $this -> db -> query (
2021-09-10 21:13:25 +00:00
" SELECT distinct LOWER(`COL_SUBMODE`) as `COL_SUBMODE` FROM ` " . $this -> config -> item ( 'table_name' ) . " ` WHERE station_id in ( " . $location_list . " ) and coalesce(COL_SUBMODE, '') <> '' order by COL_SUBMODE ASC "
2021-03-14 09:11:21 +00:00
);
foreach ( $data -> result () as $row ) {
if ( ! in_array ( $row , $results )) {
array_push ( $results , $row -> COL_SUBMODE );
}
}
return $results ;
}
}