2012-11-14 01:44:23 +00:00
< ? php if ( ! defined ( 'BASEPATH' )) exit ( 'No direct script access allowed' );
2019-02-26 13:19:52 +00:00
2012-11-14 01:44:23 +00:00
class Logbook extends CI_Controller {
2021-02-08 21:18:36 +00:00
function __construct ()
{
parent :: __construct ();
// Load language files
$this -> lang -> load ( array (
2022-01-02 13:21:50 +00:00
'contesting' ,
2021-02-08 21:18:36 +00:00
'qslcard' ,
'lotw' ,
2022-01-12 19:51:24 +00:00
'eqsl' ,
2021-02-08 21:18:36 +00:00
'qso'
));
}
2019-02-26 21:08:12 +00:00
function index ()
{
2021-11-08 15:28:16 +00:00
// Check if users logged in
$this -> load -> model ( 'user_model' );
if ( $this -> user_model -> validate_session () == 0 ) {
// user is not logged in
redirect ( 'user/login' );
}
2022-05-02 10:38:55 +00:00
$this -> load -> model ( 'stations' );
2019-02-26 21:08:12 +00:00
2022-02-19 21:19:13 +00:00
// If environment is set to development then show the debug toolbar
if ( ENVIRONMENT == 'development' ) {
$this -> output -> enable_profiler ( TRUE );
}
2021-10-17 09:25:01 +00:00
$this -> load -> model ( 'logbook_model' );
2019-02-26 21:08:12 +00:00
$this -> load -> library ( 'pagination' );
$config [ 'base_url' ] = base_url () . 'index.php/logbook/index/' ;
2021-10-17 09:25:01 +00:00
$config [ 'total_rows' ] = $this -> logbook_model -> total_qsos ();
2019-02-26 21:08:12 +00:00
$config [ 'per_page' ] = '25' ;
$config [ 'num_links' ] = 6 ;
$config [ 'full_tag_open' ] = '' ;
$config [ 'full_tag_close' ] = '' ;
$config [ 'cur_tag_open' ] = '<strong class="active"><a href="">' ;
$config [ 'cur_tag_close' ] = '</a></strong>' ;
$this -> pagination -> initialize ( $config );
2022-02-18 13:30:26 +00:00
2019-02-26 21:08:12 +00:00
//load the model and get results
$data [ 'results' ] = $this -> logbook_model -> get_qsos ( $config [ 'per_page' ], $this -> uri -> segment ( 3 ));
2022-07-03 11:32:12 +00:00
if ( ! $data [ 'results' ]) {
2023-05-14 11:54:10 +00:00
$this -> session -> set_flashdata ( 'notice' , lang ( 'error_no_logbook_found' ) . ' <a href="' . site_url ( 'logbooks' ) . '" title="Station Logbooks">Station Logbooks</a>' );
2022-07-03 11:32:12 +00:00
}
2019-02-26 21:08:12 +00:00
// Calculate Lat/Lng from Locator to use on Maps
if ( $this -> session -> userdata ( 'user_locator' )) {
$this -> load -> library ( 'qra' );
$qra_position = $this -> qra -> qra2latlong ( $this -> session -> userdata ( 'user_locator' ));
2022-10-27 13:17:52 +00:00
if ( isset ( $qra_position [ 0 ]) and isset ( $qra_position [ 1 ])) {
$data [ 'qra' ] = " set " ;
$data [ 'qra_lat' ] = $qra_position [ 0 ];
$data [ 'qra_lng' ] = $qra_position [ 1 ];
} else {
$data [ 'qra' ] = " none " ;
}
2019-02-26 21:08:12 +00:00
} else {
$data [ 'qra' ] = " none " ;
}
// load the view
$data [ 'page_title' ] = " Logbook " ;
2019-05-14 15:46:16 +00:00
$this -> load -> view ( 'interface_assets/header' , $data );
2019-02-26 21:08:12 +00:00
$this -> load -> view ( 'view_log/index' );
2019-05-14 15:46:16 +00:00
$this -> load -> view ( 'interface_assets/footer' );
2019-02-26 21:08:12 +00:00
}
2020-04-13 08:34:02 +00:00
function jsonentity ( $adif ) {
$this -> load -> model ( 'user_model' );
if ( ! $this -> user_model -> authorize ( $this -> config -> item ( 'auth_mode' ))) { return ; }
$return [ 'dxcc' ] = $this -> getentity ( $adif );
2020-04-13 17:23:19 +00:00
header ( 'Content-Type: application/json' );
2020-04-13 08:34:02 +00:00
echo json_encode ( $return , JSON_PRETTY_PRINT );
}
2021-12-31 16:49:44 +00:00
function json ( $callsign , $type , $band , $mode , $station_id = null )
2019-02-26 21:08:12 +00:00
{
$this -> load -> model ( 'user_model' );
if ( ! $this -> user_model -> authorize ( $this -> config -> item ( 'auth_mode' ))) { return ; }
2021-01-29 20:11:35 +00:00
// Convert - in Callsign to / Used for URL processing
$callsign = str_replace ( " - " , " / " , $callsign );
2023-07-27 07:16:55 +00:00
// Check if callsign is an LoTW User
2020-09-21 13:02:50 +00:00
// Check Database for all other data
2019-02-26 21:08:12 +00:00
$this -> load -> model ( 'logbook_model' );
2023-07-13 15:19:08 +00:00
$lotw_days = $this -> logbook_model -> check_last_lotw ( $callsign );
if ( $lotw_days != null ) {
$lotw_member = " active " ;
} else {
$lotw_member = " not found " ;
}
2019-02-26 21:08:12 +00:00
$return = [
2022-12-01 14:01:15 +00:00
" callsign " => strtoupper ( $callsign ),
2019-02-26 21:08:12 +00:00
" dxcc " => false ,
" callsign_name " => " " ,
" callsign_qra " => " " ,
2023-06-15 14:03:24 +00:00
" callsign_distance " => 0 ,
2019-02-26 21:08:12 +00:00
" callsign_qth " => " " ,
" callsign_iota " => " " ,
2020-03-07 16:36:21 +00:00
" callsign_state " => " " ,
2020-03-07 16:46:31 +00:00
" callsign_us_county " => " " ,
2019-06-17 10:15:05 +00:00
" qsl_manager " => " " ,
2019-02-26 21:08:12 +00:00
" bearing " => " " ,
2019-06-16 15:37:26 +00:00
" workedBefore " => false ,
" lotw_member " => $lotw_member ,
2023-07-13 15:19:08 +00:00
" lotw_days " => $lotw_days ,
2022-04-03 08:28:36 +00:00
" image " => " " ,
2019-02-26 21:08:12 +00:00
];
2019-06-13 23:14:39 +00:00
$return [ 'dxcc' ] = $this -> dxcheck ( $callsign );
2019-02-26 21:08:12 +00:00
$return [ 'partial' ] = $this -> partial ( $callsign );
2019-02-26 13:19:52 +00:00
2022-04-03 08:28:36 +00:00
$callbook = $this -> logbook_model -> loadCallBook ( $callsign , $this -> config -> item ( 'use_fullname' ));
2021-12-31 16:49:44 +00:00
// Do we have local data for the Callsign?
if ( $this -> logbook_model -> call_name ( $callsign ) != null )
{
if ( $this -> session -> userdata ( 'user_measurement_base' ) == NULL ) {
$measurement_base = $this -> config -> item ( 'measurement_base' );
} else {
$measurement_base = $this -> session -> userdata ( 'user_measurement_base' );
}
2019-02-26 13:19:52 +00:00
2021-12-31 16:49:44 +00:00
$return [ 'callsign_name' ] = $this -> logbook_model -> call_name ( $callsign );
$return [ 'callsign_qra' ] = $this -> logbook_model -> call_qra ( $callsign );
2023-06-15 14:03:24 +00:00
$return [ 'callsign_distance' ] = $this -> distance ( $return [ 'callsign_qra' ], $station_id );
2021-12-31 16:49:44 +00:00
$return [ 'callsign_qth' ] = $this -> logbook_model -> call_qth ( $callsign );
$return [ 'callsign_iota' ] = $this -> logbook_model -> call_iota ( $callsign );
$return [ 'qsl_manager' ] = $this -> logbook_model -> call_qslvia ( $callsign );
$return [ 'callsign_state' ] = $this -> logbook_model -> call_state ( $callsign );
2022-04-16 20:07:13 +00:00
$return [ 'callsign_us_county' ] = $this -> logbook_model -> call_us_county ( $callsign );
2021-12-31 16:49:44 +00:00
$return [ 'bearing' ] = $this -> bearing ( $return [ 'callsign_qra' ], $measurement_base , $station_id );
$return [ 'workedBefore' ] = $this -> worked_grid_before ( $return [ 'callsign_qra' ], $type , $band , $mode );
2022-07-03 09:39:05 +00:00
if ( $this -> session -> userdata ( 'user_show_profile_image' )) {
2022-04-03 12:05:05 +00:00
if ( isset ( $callbook )) {
if ( $callbook [ 'image' ] == " " ) {
$return [ 'image' ] = " n/a " ;
} else {
$return [ 'image' ] = $callbook [ 'image' ];
}
2022-04-03 08:28:36 +00:00
} else {
2022-04-03 12:05:05 +00:00
$return [ 'image' ] = " n/a " ;
2022-04-03 08:28:36 +00:00
}
}
2021-12-31 16:49:44 +00:00
if ( $return [ 'callsign_qra' ] != " " ) {
$return [ 'latlng' ] = $this -> qralatlng ( $return [ 'callsign_qra' ]);
}
2019-06-16 15:37:26 +00:00
2021-12-31 16:49:44 +00:00
echo json_encode ( $return , JSON_PRETTY_PRINT );
return ;
}
2019-02-26 13:19:52 +00:00
2021-12-31 16:49:44 +00:00
if ( isset ( $callbook ))
{
$return [ 'callsign_name' ] = $callbook [ 'name' ];
$return [ 'callsign_qra' ] = $callbook [ 'gridsquare' ];
2023-06-21 10:42:46 +00:00
$return [ 'callsign_distance' ] = $this -> distance ( $callbook [ 'gridsquare' ], $station_id );
2021-12-31 16:49:44 +00:00
$return [ 'callsign_qth' ] = $callbook [ 'city' ];
$return [ 'callsign_iota' ] = $callbook [ 'iota' ];
$return [ 'callsign_state' ] = $callbook [ 'state' ];
$return [ 'callsign_us_county' ] = $callbook [ 'us_county' ];
2022-07-03 09:39:05 +00:00
if ( $this -> session -> userdata ( 'user_show_profile_image' )) {
2022-04-03 12:05:05 +00:00
if ( $callbook [ 'image' ] == " " ) {
$return [ 'image' ] = " n/a " ;
} else {
$return [ 'image' ] = $callbook [ 'image' ];
}
2022-04-03 08:28:36 +00:00
}
2021-12-31 16:49:44 +00:00
if ( isset ( $callbook [ 'qslmgr' ])) {
$return [ 'qsl_manager' ] = $callbook [ 'qslmgr' ];
}
if ( $return [ 'callsign_qra' ] != " " ) {
$return [ 'latlng' ] = $this -> qralatlng ( $return [ 'callsign_qra' ]);
}
$return [ 'workedBefore' ] = $this -> worked_grid_before ( $return [ 'callsign_qra' ], $type , $band , $mode );
2019-06-13 23:14:39 +00:00
}
2020-09-14 18:24:57 +00:00
2021-12-31 16:49:44 +00:00
if ( $this -> session -> userdata ( 'user_measurement_base' ) == NULL ) {
$measurement_base = $this -> config -> item ( 'measurement_base' );
} else {
$measurement_base = $this -> session -> userdata ( 'user_measurement_base' );
}
2020-09-14 18:24:57 +00:00
2021-12-31 16:49:44 +00:00
$return [ 'bearing' ] = $this -> bearing ( $return [ 'callsign_qra' ], $measurement_base , $station_id );
2019-02-26 13:19:52 +00:00
2021-12-31 16:49:44 +00:00
echo json_encode ( $return , JSON_PRETTY_PRINT );
2019-06-16 15:37:26 +00:00
2021-12-31 16:49:44 +00:00
return ;
2019-02-26 21:08:12 +00:00
}
2019-08-16 11:25:31 +00:00
function worked_grid_before ( $gridsquare , $type , $band , $mode )
2019-02-26 21:08:12 +00:00
{
if ( strlen ( $gridsquare ) < 4 )
2021-05-05 15:52:42 +00:00
return false ;
2019-02-26 21:08:12 +00:00
2019-09-26 20:11:10 +00:00
$CI =& get_instance ();
2022-01-09 11:09:35 +00:00
$CI -> load -> model ( 'logbooks_model' );
$logbooks_locations_array = $CI -> logbooks_model -> list_logbook_relationships ( $this -> session -> userdata ( 'active_station_logbook' ));
2019-08-16 11:25:31 +00:00
2021-11-14 22:48:39 +00:00
if ( ! empty ( $logbooks_locations_array )) {
if ( $type == " SAT " ) {
$this -> db -> where ( 'COL_PROP_MODE' , 'SAT' );
} else {
2023-07-25 14:10:08 +00:00
$this -> db -> where ( 'COL_MODE' , $this -> logbook_model -> get_main_mode_from_mode ( $mode ));
2021-11-14 22:48:39 +00:00
$this -> db -> where ( 'COL_BAND' , $band );
$this -> db -> where ( 'COL_PROP_MODE !=' , 'SAT' );
2019-08-16 11:25:31 +00:00
2021-11-14 22:48:39 +00:00
}
$this -> db -> where_in ( 'station_id' , $logbooks_locations_array );
$this -> db -> like ( 'SUBSTRING(COL_GRIDSQUARE, 1, 4)' , substr ( $gridsquare , 0 , 4 ));
$this -> db -> order_by ( $this -> config -> item ( 'table_name' ) . " .COL_TIME_ON " , " desc " );
$this -> db -> limit ( 1 );
2019-09-26 20:26:20 +00:00
2021-11-14 22:48:39 +00:00
$query = $this -> db -> get ( $this -> config -> item ( 'table_name' ));
2019-09-26 20:26:20 +00:00
2021-11-14 22:48:39 +00:00
foreach ( $query -> result () as $workedBeforeRow )
{
return true ;
}
2019-02-26 21:08:12 +00:00
}
return false ;
}
2019-08-16 11:06:19 +00:00
/*
* Function : jsonlookupgrid
*
2021-05-05 15:52:42 +00:00
* Usage : Used to look up gridsquares when creating a QSO to check whether its needed or not
2019-08-16 11:11:46 +00:00
* the $type variable is only used for satellites , set this to SAT .
*
2019-08-16 11:06:19 +00:00
*/
function jsonlookupgrid ( $gridsquare , $type , $band , $mode ) {
$return = [
" workedBefore " => false ,
];
2019-09-26 20:11:10 +00:00
$CI =& get_instance ();
2021-09-28 10:21:12 +00:00
$CI -> load -> model ( 'logbooks_model' );
$logbooks_locations_array = $CI -> logbooks_model -> list_logbook_relationships ( $this -> session -> userdata ( 'active_station_logbook' ));
2019-09-26 20:11:10 +00:00
2019-08-16 11:06:19 +00:00
if ( $type == " SAT " ) {
2021-05-05 15:52:42 +00:00
$this -> db -> where ( 'COL_PROP_MODE' , 'SAT' );
2019-08-16 11:06:19 +00:00
} else {
2023-07-25 14:10:08 +00:00
$this -> db -> where ( 'COL_MODE' , $this -> logbook_model -> get_main_mode_from_mode ( $mode ));
2021-05-05 15:52:42 +00:00
$this -> db -> where ( 'COL_BAND' , $band );
2019-08-16 11:06:19 +00:00
$this -> db -> where ( 'COL_PROP_MODE !=' , 'SAT' );
}
2021-09-28 10:21:12 +00:00
$this -> db -> where_in ( 'station_id' , $logbooks_locations_array );
2021-05-05 15:52:42 +00:00
2019-08-16 11:06:19 +00:00
$this -> db -> like ( 'SUBSTRING(COL_GRIDSQUARE, 1, 4)' , substr ( $gridsquare , 0 , 4 ));
$query = $this -> db -> get ( $this -> config -> item ( 'table_name' ), 1 , 0 );
foreach ( $query -> result () as $workedBeforeRow )
{
$return [ 'workedBefore' ] = true ;
2019-10-13 20:42:41 +00:00
}
header ( 'Content-Type: application/json' );
echo json_encode ( $return , JSON_PRETTY_PRINT );
return ;
}
function jsonlookupdxcc ( $country , $type , $band , $mode ) {
2021-05-05 15:52:42 +00:00
2019-10-13 20:42:41 +00:00
$return = [
" workedBefore " => false ,
];
$CI =& get_instance ();
2021-09-28 10:21:12 +00:00
$CI -> load -> model ( 'logbooks_model' );
$logbooks_locations_array = $CI -> logbooks_model -> list_logbook_relationships ( $this -> session -> userdata ( 'active_station_logbook' ));
2023-07-25 14:10:08 +00:00
$CI -> load -> model ( 'logbook_model' );
2019-10-13 20:42:41 +00:00
2021-11-14 22:48:39 +00:00
if ( ! empty ( $logbooks_locations_array )) {
if ( $type == " SAT " ) {
$this -> db -> where ( 'COL_PROP_MODE' , 'SAT' );
} else {
2023-07-25 14:10:08 +00:00
$this -> db -> where ( 'COL_MODE' , $this -> logbook_model -> get_main_mode_from_mode ( $mode ));
2021-11-14 22:48:39 +00:00
$this -> db -> where ( 'COL_BAND' , $band );
$this -> db -> where ( 'COL_PROP_MODE !=' , 'SAT' );
2019-10-13 20:42:41 +00:00
2021-11-14 22:48:39 +00:00
}
2019-10-13 20:42:41 +00:00
2021-11-14 22:48:39 +00:00
$this -> db -> where_in ( 'station_id' , $logbooks_locations_array );
$this -> db -> where ( 'COL_COUNTRY' , urldecode ( $country ));
2021-05-05 15:52:42 +00:00
2021-11-14 22:48:39 +00:00
$query = $this -> db -> get ( $this -> config -> item ( 'table_name' ), 1 , 0 );
foreach ( $query -> result () as $workedBeforeRow )
{
$return [ 'workedBefore' ] = true ;
}
2019-10-13 20:42:41 +00:00
2021-11-14 22:48:39 +00:00
header ( 'Content-Type: application/json' );
echo json_encode ( $return , JSON_PRETTY_PRINT );
2019-10-13 20:42:41 +00:00
2021-11-14 22:48:39 +00:00
return ;
} else {
$return [ 'workedBefore' ] = false ;
header ( 'Content-Type: application/json' );
echo json_encode ( $return , JSON_PRETTY_PRINT );
return ;
}
2019-10-13 20:42:41 +00:00
}
function jsonlookupcallsign ( $callsign , $type , $band , $mode ) {
2021-05-05 15:52:42 +00:00
2021-01-29 20:20:01 +00:00
// Convert - in Callsign to / Used for URL processing
$callsign = str_replace ( " - " , " / " , $callsign );
2019-10-13 20:42:41 +00:00
$return = [
" workedBefore " => false ,
];
$CI =& get_instance ();
2022-01-09 11:09:35 +00:00
$CI -> load -> model ( 'logbooks_model' );
$logbooks_locations_array = $CI -> logbooks_model -> list_logbook_relationships ( $this -> session -> userdata ( 'active_station_logbook' ));
2023-07-25 14:10:08 +00:00
$CI -> load -> model ( 'logbook_model' );
2019-10-13 20:42:41 +00:00
2021-11-14 22:48:39 +00:00
if ( ! empty ( $logbooks_locations_array )) {
if ( $type == " SAT " ) {
$this -> db -> where ( 'COL_PROP_MODE' , 'SAT' );
} else {
2023-07-25 14:10:08 +00:00
$this -> db -> where ( 'COL_MODE' , $this -> logbook_model -> get_main_mode_from_mode ( $mode ));
2021-11-14 22:48:39 +00:00
$this -> db -> where ( 'COL_BAND' , $band );
$this -> db -> where ( 'COL_PROP_MODE !=' , 'SAT' );
2019-10-13 20:42:41 +00:00
2021-11-14 22:48:39 +00:00
}
2021-05-05 15:52:42 +00:00
2021-11-14 22:48:39 +00:00
$this -> db -> where_in ( 'station_id' , $logbooks_locations_array );
$this -> db -> where ( 'COL_CALL' , strtoupper ( $callsign ));
2019-08-16 11:06:19 +00:00
2021-11-14 22:48:39 +00:00
$query = $this -> db -> get ( $this -> config -> item ( 'table_name' ), 1 , 0 );
foreach ( $query -> result () as $workedBeforeRow )
{
$return [ 'workedBefore' ] = true ;
}
2019-08-16 11:06:19 +00:00
2021-11-14 22:48:39 +00:00
header ( 'Content-Type: application/json' );
echo json_encode ( $return , JSON_PRETTY_PRINT );
return ;
} else {
$return [ 'workedBefore' ] = false ;
header ( 'Content-Type: application/json' );
echo json_encode ( $return , JSON_PRETTY_PRINT );
return ;
}
2019-08-16 11:06:19 +00:00
}
2019-02-26 21:08:12 +00:00
/* Used to generate maps for displaying on /logbook/ */
function qso_map () {
2022-04-25 10:01:32 +00:00
header ( 'Content-Type: application/json; charset=utf-8' );
2019-02-26 21:08:12 +00:00
$this -> load -> model ( 'logbook_model' );
$this -> load -> library ( 'qra' );
$data [ 'qsos' ] = $this -> logbook_model -> get_qsos ( $this -> uri -> segment ( 3 ), $this -> uri -> segment ( 4 ));
echo " { \" markers \" : [ " ;
$count = 1 ;
foreach ( $data [ 'qsos' ] -> result () as $row ) {
if ( $row -> COL_GRIDSQUARE != null ) {
$stn_loc = $this -> qra -> qra2latlong ( $row -> COL_GRIDSQUARE );
if ( $count != 1 ) {
echo " , " ;
}
if ( $row -> COL_SAT_NAME != null ) {
2022-07-17 21:12:54 +00:00
echo " { \" lat \" : \" " . $stn_loc [ 0 ] . " \" , \" lng \" : \" " . $stn_loc [ 1 ] . " \" , \" html \" : \" Callsign: " . $row -> COL_CALL . " <br />Date/Time: " . $row -> COL_TIME_ON . " <br />SAT: " . $row -> COL_SAT_NAME . " <br />Mode: " ;
echo $row -> COL_SUBMODE == null ? $row -> COL_MODE : $row -> COL_SUBMODE ;
echo " \" , \" label \" : \" " . $row -> COL_CALL . " \" } " ;
2019-02-26 21:08:12 +00:00
} else {
2022-07-17 21:12:54 +00:00
echo " { \" lat \" : \" " . $stn_loc [ 0 ] . " \" , \" lng \" : \" " . $stn_loc [ 1 ] . " \" , \" html \" : \" Callsign: " . $row -> COL_CALL . " <br />Date/Time: " . $row -> COL_TIME_ON . " <br />Band: " . $row -> COL_BAND . " <br />Mode: " ;
echo $row -> COL_SUBMODE == null ? $row -> COL_MODE : $row -> COL_SUBMODE ;
echo " \" , \" label \" : \" " . $row -> COL_CALL . " \" } " ;
2019-02-26 21:08:12 +00:00
}
$count ++ ;
2022-04-04 14:15:24 +00:00
} elseif ( $row -> COL_VUCC_GRIDS != null ) {
$grids = explode ( " , " , $row -> COL_VUCC_GRIDS );
if ( count ( $grids ) == 2 ) {
$grid1 = $this -> qra -> qra2latlong ( trim ( $grids [ 0 ]));
$grid2 = $this -> qra -> qra2latlong ( trim ( $grids [ 1 ]));
$coords [] = array ( 'lat' => $grid1 [ 0 ], 'lng' => $grid1 [ 1 ]);
$coords [] = array ( 'lat' => $grid2 [ 0 ], 'lng' => $grid2 [ 1 ]);
$stn_loc = $this -> qra -> get_midpoint ( $coords );
}
if ( count ( $grids ) == 4 ) {
$grid1 = $this -> qra -> qra2latlong ( trim ( $grids [ 0 ]));
$grid2 = $this -> qra -> qra2latlong ( trim ( $grids [ 1 ]));
$grid3 = $this -> qra -> qra2latlong ( trim ( $grids [ 2 ]));
$grid4 = $this -> qra -> qra2latlong ( trim ( $grids [ 3 ]));
$coords [] = array ( 'lat' => $grid1 [ 0 ], 'lng' => $grid1 [ 1 ]);
$coords [] = array ( 'lat' => $grid2 [ 0 ], 'lng' => $grid2 [ 1 ]);
$coords [] = array ( 'lat' => $grid3 [ 0 ], 'lng' => $grid3 [ 1 ]);
$coords [] = array ( 'lat' => $grid4 [ 0 ], 'lng' => $grid4 [ 1 ]);
$stn_loc = $this -> qra -> get_midpoint ( $coords );
}
2019-02-26 21:08:12 +00:00
2022-04-04 14:15:24 +00:00
if ( $count != 1 ) {
echo " , " ;
}
if ( $row -> COL_SAT_NAME != null ) {
2022-07-17 21:12:54 +00:00
echo " { \" lat \" : \" " . $stn_loc [ 0 ] . " \" , \" lng \" : \" " . $stn_loc [ 1 ] . " \" , \" html \" : \" Callsign: " . $row -> COL_CALL . " <br />Date/Time: " . $row -> COL_TIME_ON . " <br />SAT: " . $row -> COL_SAT_NAME . " <br />Mode: " ;
echo $row -> COL_SUBMODE == null ? $row -> COL_MODE : $row -> COL_SUBMODE ;
echo " \" , \" label \" : \" " . $row -> COL_CALL . " \" } " ;
2022-04-04 14:15:24 +00:00
} else {
2022-07-17 21:12:54 +00:00
echo " { \" lat \" : \" " . $stn_loc [ 0 ] . " \" , \" lng \" : \" " . $stn_loc [ 1 ] . " \" , \" html \" : \" Callsign: " . $row -> COL_CALL . " <br />Date/Time: " . $row -> COL_TIME_ON . " <br />Band: " . $row -> COL_BAND . " <br />Mode: " ;
echo $row -> COL_SUBMODE == null ? $row -> COL_MODE : $row -> COL_SUBMODE ;
echo " \" , \" label \" : \" " . $row -> COL_CALL . " \" } " ;
2022-04-04 14:15:24 +00:00
}
$count ++ ;
2019-02-26 21:08:12 +00:00
} else {
2022-04-25 10:01:32 +00:00
if ( $count != 1 ) {
2019-02-26 21:08:12 +00:00
echo " , " ;
}
2022-04-25 10:01:32 +00:00
$result = $this -> logbook_model -> dxcc_lookup ( $row -> COL_CALL , $row -> COL_TIME_ON );
if ( isset ( $result )) {
$lat = $result [ 'lat' ];
$lng = $result [ 'long' ];
}
2022-07-17 21:12:54 +00:00
echo " { \" lat \" : \" " . $lat . " \" , \" lng \" : \" " . $lng . " \" , \" html \" : \" Callsign: " . $row -> COL_CALL . " <br />Date/Time: " . $row -> COL_TIME_ON . " <br />Band: " . $row -> COL_BAND . " <br />Mode: " ;
echo $row -> COL_SUBMODE == null ? $row -> COL_MODE : $row -> COL_SUBMODE ;
echo " \" , \" label \" : \" " . $row -> COL_CALL . " \" } " ;
2022-04-25 10:01:32 +00:00
$count ++ ;
2019-02-26 21:08:12 +00:00
}
}
echo " ] " ;
echo " } " ;
}
2021-05-05 15:52:42 +00:00
2019-02-26 21:08:12 +00:00
function view ( $id ) {
$this -> load -> model ( 'user_model' );
2021-11-14 16:50:11 +00:00
if ( ! $this -> user_model -> authorize ( $this -> config -> item ( 'auth_mode' ))) { return ; }
2019-02-26 21:08:12 +00:00
$this -> load -> library ( 'qra' );
2019-09-24 22:10:59 +00:00
$this -> load -> model ( 'logbook_model' );
$data [ 'query' ] = $this -> logbook_model -> get_qso ( $id );
2020-09-14 18:24:57 +00:00
if ( $this -> session -> userdata ( 'user_measurement_base' ) == NULL ) {
$data [ 'measurement_base' ] = $this -> config -> item ( 'measurement_base' );
}
else {
$data [ 'measurement_base' ] = $this -> session -> userdata ( 'user_measurement_base' );
}
2020-09-13 12:42:49 +00:00
2020-10-28 22:20:03 +00:00
$this -> load -> model ( 'Qsl_model' );
$data [ 'qslimages' ] = $this -> Qsl_model -> getQslForQsoId ( $id );
2020-11-02 17:23:41 +00:00
$data [ 'max_upload' ] = ini_get ( 'upload_max_filesize' );
2019-05-25 17:43:32 +00:00
$this -> load -> view ( 'interface_assets/mini_header' , $data );
$this -> load -> view ( 'view_log/qso' );
$this -> load -> view ( 'interface_assets/footer' );
2019-02-26 21:08:12 +00:00
}
2021-05-05 15:52:42 +00:00
2019-02-26 21:08:12 +00:00
function partial ( $id ) {
$this -> load -> model ( 'user_model' );
2021-11-14 16:50:11 +00:00
if ( ! $this -> user_model -> authorize ( $this -> config -> item ( 'auth_mode' ))) { return ; }
2021-05-05 15:52:42 +00:00
2021-11-14 16:50:11 +00:00
$CI =& get_instance ();
$CI -> load -> model ( 'logbooks_model' );
$logbooks_locations_array = $CI -> logbooks_model -> list_logbook_relationships ( $this -> session -> userdata ( 'active_station_logbook' ));
2019-09-26 20:26:20 +00:00
2021-11-14 16:50:11 +00:00
$html = " " ;
2019-09-26 20:26:20 +00:00
2021-11-14 22:48:39 +00:00
if ( ! empty ( $logbooks_locations_array )) {
2022-12-14 11:45:32 +00:00
$this -> db -> select ( '' . $this -> config -> item ( 'table_name' ) . '.COL_CALL, ' . $this -> config -> item ( 'table_name' ) . '.COL_BAND, ' . $this -> config -> item ( 'table_name' ) . '.COL_FREQ, ' . $this -> config -> item ( 'table_name' ) . '.COL_TIME_ON, ' . $this -> config -> item ( 'table_name' ) . '.COL_RST_RCVD, ' . $this -> config -> item ( 'table_name' ) . '.COL_RST_SENT, ' . $this -> config -> item ( 'table_name' ) . '.COL_MODE, ' . $this -> config -> item ( 'table_name' ) . '.COL_SUBMODE, ' . $this -> config -> item ( 'table_name' ) . '.COL_PRIMARY_KEY, ' . $this -> config -> item ( 'table_name' ) . '.COL_SAT_NAME, ' . $this -> config -> item ( 'table_name' ) . '.COL_GRIDSQUARE, ' . $this -> config -> item ( 'table_name' ) . '.COL_QSL_RCVD, ' . $this -> config -> item ( 'table_name' ) . '.COL_EQSL_QSL_RCVD, ' . $this -> config -> item ( 'table_name' ) . '.COL_EQSL_QSL_SENT, ' . $this -> config -> item ( 'table_name' ) . '.COL_QSL_SENT, ' . $this -> config -> item ( 'table_name' ) . '.COL_STX, ' . $this -> config -> item ( 'table_name' ) . '.COL_STX_STRING, ' . $this -> config -> item ( 'table_name' ) . '.COL_SRX, ' . $this -> config -> item ( 'table_name' ) . '.COL_SRX_STRING, ' . $this -> config -> item ( 'table_name' ) . '.COL_LOTW_QSL_SENT, ' . $this -> config -> item ( 'table_name' ) . '.COL_LOTW_QSL_RCVD, ' . $this -> config -> item ( 'table_name' ) . '.COL_VUCC_GRIDS, station_profile.*' );
2019-09-26 20:26:20 +00:00
$this -> db -> from ( $this -> config -> item ( 'table_name' ));
$this -> db -> join ( 'station_profile' , 'station_profile.station_id = ' . $this -> config -> item ( 'table_name' ) . '.station_id' );
2021-11-14 16:50:11 +00:00
$this -> db -> where_in ( 'station_profile.station_id' , $logbooks_locations_array );
2019-09-26 20:26:20 +00:00
$this -> db -> order_by ( '' . $this -> config -> item ( 'table_name' ) . '.COL_TIME_ON' , " desc " );
$this -> db -> like ( $this -> config -> item ( 'table_name' ) . '.COL_CALL' , $id );
$this -> db -> order_by ( $this -> config -> item ( 'table_name' ) . " .COL_TIME_ON " , " desc " );
2019-05-21 12:44:22 +00:00
$this -> db -> limit ( 5 );
2019-09-26 20:26:20 +00:00
$query = $this -> db -> get ();
2021-11-14 22:48:39 +00:00
}
2019-02-26 21:08:12 +00:00
2021-11-14 22:48:39 +00:00
if ( ! empty ( $logbooks_locations_array ) && $query -> num_rows () > 0 )
2019-02-26 21:08:12 +00:00
{
2019-05-21 12:44:22 +00:00
$html .= " <div class= \" table-responsive \" > " ;
$html .= " <table class= \" table \" > " ;
2019-02-26 21:08:12 +00:00
$html .= " <tr> " ;
$html .= " <td>Date</td> " ;
$html .= " <td>Callsign</td> " ;
2022-12-14 11:45:32 +00:00
$html .= " <td>Mode</td> " ;
2019-09-26 20:26:20 +00:00
$html .= " <td>RST (S)</td> " ;
$html .= " <td>RST (R)</td> " ;
2022-12-14 11:45:32 +00:00
if ( $this -> session -> userdata ( 'user_column1' ) == 'Frequency' || $this -> session -> userdata ( 'user_column2' ) == 'Frequency' || $this -> session -> userdata ( 'user_column3' ) == 'Frequency' || $this -> session -> userdata ( 'user_column4' ) == 'Frequency' || $this -> session -> userdata ( 'user_column5' ) == 'Frequency' ) {
$html .= " <td>Frequency</td> " ;
} else {
$html .= " <td>Band</td> " ;
}
2022-11-24 23:22:31 +00:00
switch ( $this -> session -> userdata ( 'user_previous_qsl_type' )) {
case 0 :
2023-05-14 11:54:10 +00:00
$html .= " <td> " . lang ( 'gen_hamradio_qsl' ) . " </td> " ;
2022-11-24 23:22:31 +00:00
break ;
case 1 :
2023-05-14 11:54:10 +00:00
$html .= " <td> " . lang ( 'lotw_short' ) . " </td> " ;
2022-11-24 23:22:31 +00:00
break ;
case 2 :
2023-05-14 11:54:10 +00:00
$html .= " <td> " . lang ( 'eqsl_short' ) . " </td> " ;
2022-11-24 23:22:31 +00:00
break ;
default :
2023-05-14 11:54:10 +00:00
$html .= " <td> " . lang ( 'gen_hamradio_qsl' ) . " </td> " ;
2022-11-24 23:22:31 +00:00
break ;
}
2019-09-26 20:26:20 +00:00
$html .= " <td></td> " ;
2019-02-26 21:08:12 +00:00
$html .= " </tr> " ;
2021-07-23 17:26:10 +00:00
// Get Date format
if ( $this -> session -> userdata ( 'user_date_format' )) {
// If Logged in and session exists
$custom_date_format = $this -> session -> userdata ( 'user_date_format' );
} else {
// Get Default date format from /config/cloudlog.php
$custom_date_format = $this -> config -> item ( 'qso_date_format' );
}
2019-02-26 21:08:12 +00:00
foreach ( $query -> result () as $row )
{
2021-07-23 17:26:10 +00:00
$timestamp = strtotime ( $row -> COL_TIME_ON );
2019-02-26 21:08:12 +00:00
$html .= " <tr> " ;
2021-07-23 17:26:10 +00:00
$html .= " <td> " . date ( $custom_date_format , $timestamp ) . date ( ' H:i' , strtotime ( $row -> COL_TIME_ON )) . " </td> " ;
2021-12-28 19:08:41 +00:00
$html .= " <td><a id='edit_qso' href='javascript:displayQso( " . $row -> COL_PRIMARY_KEY . " );'> " . str_replace ( '0' , 'Ø' , strtoupper ( $row -> COL_CALL )) . " </a></td> " ;
2022-12-14 11:45:32 +00:00
if ( $row -> COL_SUBMODE == null )
$html .= " <td> " . $row -> COL_MODE . " </td> " ;
else
$html .= " <td> " . $row -> COL_SUBMODE . " </td> " ;
2019-02-26 21:08:12 +00:00
$html .= " <td> " . $row -> COL_RST_SENT . " </td> " ;
$html .= " <td> " . $row -> COL_RST_RCVD . " </td> " ;
if ( $row -> COL_SAT_NAME != null ) {
2022-12-14 11:45:32 +00:00
$html .= " <td> " . $row -> COL_SAT_NAME . " </td> " ;
2019-02-26 21:08:12 +00:00
} else {
2022-12-14 11:45:32 +00:00
if ( $this -> session -> userdata ( 'user_column1' ) == 'Frequency' || $this -> session -> userdata ( 'user_column2' ) == 'Frequency' || $this -> session -> userdata ( 'user_column3' ) == 'Frequency' || $this -> session -> userdata ( 'user_column4' ) == 'Frequency' || $this -> session -> userdata ( 'user_column5' ) == 'Frequency' ) {
$html .= " <td> " . $this -> frequency -> hz_to_mhz ( $row -> COL_FREQ ) . " </td> " ;
} else {
$html .= " <td> " . $row -> COL_BAND . " </td> " ;
}
2019-02-26 21:08:12 +00:00
}
2022-11-24 23:22:31 +00:00
if ( $this -> session -> userdata ( 'user_previous_qsl_type' ) == 1 ) {
$html .= " <td class= \" lotw \" > " ;
$html .= " <span class= \" qsl- " ;
switch ( $row -> COL_LOTW_QSL_SENT ) {
case " Y " :
$html .= " green " ;
break ;
default :
$html .= " red " ;
}
$html .= " \" >▲</span> " ;
$html .= " <span class= \" qsl- " ;
switch ( $row -> COL_LOTW_QSL_RCVD ) {
case " Y " :
$html .= " green " ;
break ;
default :
$html .= " red " ;
}
$html .= " \" >▼</span> " ;
$html .= " </td> " ;
} else if ( $this -> session -> userdata ( 'user_previous_qsl_type' ) == 2 ) {
$html .= " <td class= \" eqsl \" > " ;
$html .= " <span class= \" qsl- " ;
switch ( $row -> COL_EQSL_QSL_SENT ) {
case " Y " :
$html .= " green " ;
break ;
default :
$html .= " red " ;
}
$html .= " \" >▲</span> " ;
$html .= " <span class= \" qsl- " ;
switch ( $row -> COL_EQSL_QSL_RCVD ) {
case " Y " :
$html .= " green " ;
break ;
default :
$html .= " red " ;
}
$html .= " \" >▼</span> " ;
$html .= " </td> " ;
} else {
$html .= " <td class= \" qsl \" > " ;
$html .= " <span class= \" qsl- " ;
switch ( $row -> COL_QSL_SENT ) {
case " Y " :
$html .= " green " ;
break ;
case " Q " :
$html .= " yellow " ;
break ;
case " R " :
$html .= " yellow " ;
break ;
case " I " :
$html .= " grey " ;
break ;
default :
$html .= " red " ;
}
$html .= " \" >▲</span> " ;
$html .= " <span class= \" qsl- " ;
switch ( $row -> COL_QSL_RCVD ) {
case " Y " :
$html .= " green " ;
break ;
case " Q " :
$html .= " yellow " ;
break ;
case " R " :
$html .= " yellow " ;
break ;
case " I " :
$html .= " grey " ;
break ;
default :
$html .= " red " ;
}
$html .= " \" >▼</span> " ;
$html .= " </td> " ;
2019-10-12 19:23:58 +00:00
}
2019-09-26 20:26:20 +00:00
$html .= " <td><span class= \" badge badge-info \" > " . $row -> station_callsign . " </span></td> " ;
2019-02-26 21:08:12 +00:00
$html .= " </tr> " ;
}
$html .= " </table> " ;
2019-05-21 12:44:22 +00:00
$html .= " </div> " ;
2019-02-26 21:08:12 +00:00
return $html ;
} else {
if ( $this -> config -> item ( 'callbook' ) == " qrz " && $this -> config -> item ( 'qrz_username' ) != null && $this -> config -> item ( 'qrz_password' ) != null ) {
// Lookup using QRZ
$this -> load -> library ( 'qrz' );
if ( ! $this -> session -> userdata ( 'qrz_session_key' )) {
$qrz_session_key = $this -> qrz -> session ( $this -> config -> item ( 'qrz_username' ), $this -> config -> item ( 'qrz_password' ));
$this -> session -> set_userdata ( 'qrz_session_key' , $qrz_session_key );
}
2020-11-16 15:00:47 +00:00
$data = $this -> qrz -> search ( $id , $this -> session -> userdata ( 'qrz_session_key' ), $this -> config -> item ( 'use_fullname' ));
if ( empty ( $data [ 'callsign' ]))
{
$qrz_session_key = $this -> qrz -> session ( $this -> config -> item ( 'qrz_username' ), $this -> config -> item ( 'qrz_password' ));
$this -> session -> set_userdata ( 'qrz_session_key' , $qrz_session_key );
$data = $this -> qrz -> search ( $id , $this -> session -> userdata ( 'qrz_session_key' ), $this -> config -> item ( 'use_fullname' ));
}
2019-02-26 21:08:12 +00:00
}
// There's no hamli integration? Disabled for now.
/* else {
// Lookup using hamli
$this -> load -> library ( 'hamli' );
$data [ 'callsign' ] = $this -> hamli -> callsign ( $id );
} */
$data [ 'id' ] = strtoupper ( $id );
return $this -> load -> view ( 'search/result' , $data , true );
}
}
2022-10-28 08:53:45 +00:00
function search_result ( $id = " " , $id2 = " " ) {
2019-02-26 21:08:12 +00:00
$this -> load -> model ( 'user_model' );
2022-10-28 08:53:45 +00:00
2019-02-26 21:08:12 +00:00
if ( ! $this -> user_model -> authorize ( $this -> config -> item ( 'auth_mode' ))) { return ; }
2022-10-28 08:53:45 +00:00
2022-10-28 09:28:03 +00:00
$fixedid = $id ;
2022-10-28 08:53:45 +00:00
if ( $id2 != " " ) {
$fixedid = $id . '/' . $id2 ;
}
2019-02-26 21:08:12 +00:00
2022-10-28 08:53:45 +00:00
$query = $this -> querydb ( $fixedid );
2021-05-05 15:52:42 +00:00
2022-10-28 08:53:45 +00:00
if ( $query -> num_rows () == 0 ) {
$query = $this -> querydb ( $id );
if ( $query -> num_rows () > 0 ) {
$data [ 'results' ] = $query ;
$this -> load -> view ( 'view_log/partial/log_ajax.php' , $data );
}
else {
$this -> load -> model ( 'search' );
2019-02-26 21:08:12 +00:00
2022-10-28 08:53:45 +00:00
$iota_search = $this -> search -> callsign_iota ( $id );
2019-02-26 21:08:12 +00:00
2022-10-28 08:53:45 +00:00
if ( $iota_search -> num_rows () > 0 )
{
$data [ 'results' ] = $iota_search ;
$this -> load -> view ( 'view_log/partial/log_ajax.php' , $data );
} else {
if ( $this -> config -> item ( 'callbook' ) == " qrz " && $this -> config -> item ( 'qrz_username' ) != null && $this -> config -> item ( 'qrz_password' ) != null ) {
// Lookup using QRZ
$this -> load -> library ( 'qrz' );
2019-02-26 21:08:12 +00:00
2022-10-28 08:53:45 +00:00
if ( ! $this -> session -> userdata ( 'qrz_session_key' )) {
$qrz_session_key = $this -> qrz -> session ( $this -> config -> item ( 'qrz_username' ), $this -> config -> item ( 'qrz_password' ));
$this -> session -> set_userdata ( 'qrz_session_key' , $qrz_session_key );
}
2019-02-26 21:08:12 +00:00
2022-10-28 08:53:45 +00:00
$data [ 'callsign' ] = $this -> qrz -> search ( $id , $this -> session -> userdata ( 'qrz_session_key' ), $this -> config -> item ( 'use_fullname' ));
} /* else {
// Lookup using hamli
$this -> load -> library ( 'hamli' );
2019-02-26 21:08:12 +00:00
2022-10-28 08:53:45 +00:00
$data [ 'callsign' ] = $this -> hamli -> callsign ( $id );
} */
2019-02-26 21:08:12 +00:00
2022-10-28 08:53:45 +00:00
$data [ 'id' ] = strtoupper ( $id );
2019-02-26 21:08:12 +00:00
2022-10-28 08:53:45 +00:00
$this -> load -> view ( 'search/result' , $data );
}
2019-02-26 21:08:12 +00:00
}
2022-10-28 08:53:45 +00:00
} else {
$data [ 'results' ] = $query ;
$this -> load -> view ( 'view_log/partial/log_ajax.php' , $data );
2019-02-26 21:08:12 +00:00
}
}
2022-10-28 08:53:45 +00:00
function querydb ( $id ) {
$this -> db -> from ( $this -> config -> item ( 'table_name' ));
$this -> db -> join ( 'station_profile' , 'station_profile.station_id = ' . $this -> config -> item ( 'table_name' ) . '.station_id' );
2023-06-29 12:08:57 +00:00
$this -> db -> join ( 'dxcc_entities' , 'dxcc_entities.adif = ' . $this -> config -> item ( 'table_name' ) . '.COL_DXCC' , 'left outer' );
2023-06-19 11:05:44 +00:00
$this -> db -> join ( 'lotw_users' , 'lotw_users.callsign = ' . $this -> config -> item ( 'table_name' ) . '.col_call' , 'left outer' );
2022-10-28 08:53:45 +00:00
$this -> db -> group_start ();
$this -> db -> like ( '' . $this -> config -> item ( 'table_name' ) . '.COL_CALL' , $id );
$this -> db -> or_like ( '' . $this -> config -> item ( 'table_name' ) . '.COL_GRIDSQUARE' , $id );
$this -> db -> or_like ( '' . $this -> config -> item ( 'table_name' ) . '.COL_VUCC_GRIDS' , $id );
$this -> db -> group_end ();
$this -> db -> where ( 'station_profile.user_id' , $this -> session -> userdata ( 'user_id' ));
$this -> db -> order_by ( '' . $this -> config -> item ( 'table_name' ) . '.COL_TIME_ON' , 'desc' );
return $this -> db -> get ();
2022-11-04 15:40:15 +00:00
}
2022-10-31 11:25:56 +00:00
function search_duplicates ( $station_id ) {
$station_id = $this -> security -> xss_clean ( $station_id );
2019-02-26 21:08:12 +00:00
2022-10-31 11:25:56 +00:00
$this -> load -> model ( 'user_model' );
if ( ! $this -> user_model -> authorize ( $this -> config -> item ( 'auth_mode' ))) { return ; }
$CI =& get_instance ();
$CI -> load -> model ( 'logbooks_model' );
$logbooks_locations_array = $CI -> logbooks_model -> list_logbook_relationships ( $this -> session -> userdata ( 'active_station_logbook' ));
if ( ! $logbooks_locations_array ) {
return null ;
}
$location_list = " ' " . implode ( " ',' " , $logbooks_locations_array ) . " ' " ;
$sql = 'select count(*) as occurence, COL_CALL, COL_MODE, COL_SUBMODE, station_callsign, COL_SAT_NAME, COL_BAND, min(col_time_on) Mintime, max(col_time_on) Maxtime from ' . $this -> config -> item ( 'table_name' ) .
' join station_profile on ' . $this -> config -> item ( 'table_name' ) . '.station_id = station_profile.station_id where ' . $this -> config -> item ( 'table_name' ) . '.station_id in (' . $location_list . ')' ;
if ( $station_id != 'All' ) {
$sql .= ' and station_profile.station_id = ' . $station_id ;
}
$sql .= ' group by col_call, col_mode, COL_SUBMODE, STATION_CALLSIGN, col_band, COL_SAT_NAME having count(*) > 1 and timediff(maxtime, mintime) < 3000' ;
$query = $this -> db -> query ( $sql );
$data [ 'qsos' ] = $query ;
$this -> load -> view ( 'search/duplicates_result.php' , $data );
2022-11-04 15:40:15 +00:00
2022-10-28 08:53:45 +00:00
}
2019-02-26 21:08:12 +00:00
2023-05-26 08:38:31 +00:00
function search_lotw_unconfirmed ( $station_id ) {
$station_id = $this -> security -> xss_clean ( $station_id );
$this -> load -> model ( 'user_model' );
if ( ! $this -> user_model -> authorize ( $this -> config -> item ( 'auth_mode' ))) { return ; }
$CI =& get_instance ();
$CI -> load -> model ( 'logbooks_model' );
$logbooks_locations_array = $CI -> logbooks_model -> list_logbook_relationships ( $this -> session -> userdata ( 'active_station_logbook' ));
if ( ! $logbooks_locations_array ) {
return null ;
}
$location_list = " ' " . implode ( " ',' " , $logbooks_locations_array ) . " ' " ;
$sql = 'select COL_CALL, COL_MODE, COL_SUBMODE, station_callsign, COL_SAT_NAME, COL_BAND, COL_TIME_ON, lotw_users.lastupload from ' . $this -> config -> item ( 'table_name' ) .
' join station_profile on ' . $this -> config -> item ( 'table_name' ) . ' . station_id = station_profile . station_id
join lotw_users on ' . $this->config->item(' table_name ') . ' . col_call = lotw_users . callsign
where ' . $this->config->item(' table_name ') .' . station_id in ( '. $location_list . ' ) ' ;
if ( $station_id != 'All' ) {
$sql .= ' and station_profile.station_id = ' . $station_id ;
}
$sql .= " and COL_LOTW_QSL_RCVD <> 'Y' and " . $this -> config -> item ( 'table_name' ) . " .COL_TIME_ON < lotw_users.lastupload " ;
$query = $this -> db -> query ( $sql );
$data [ 'qsos' ] = $query ;
$this -> load -> view ( 'search/lotw_unconfirmed_result.php' , $data );
}
2022-10-31 19:09:19 +00:00
function search_incorrect_cq_zones ( $station_id ) {
$station_id = $this -> security -> xss_clean ( $station_id );
$this -> load -> model ( 'user_model' );
if ( ! $this -> user_model -> authorize ( $this -> config -> item ( 'auth_mode' ))) { return ; }
$CI =& get_instance ();
$CI -> load -> model ( 'logbooks_model' );
$logbooks_locations_array = $CI -> logbooks_model -> list_logbook_relationships ( $this -> session -> userdata ( 'active_station_logbook' ));
if ( ! $logbooks_locations_array ) {
return null ;
}
$location_list = " ' " . implode ( " ',' " , $logbooks_locations_array ) . " ' " ;
2022-11-01 18:47:06 +00:00
$sql = 'select *, (select group_concat(distinct cqzone order by cqzone) from dxcc_master where countrycode = thcv.col_dxcc and cqzone <> \'\' order by cqzone asc) as correctcqzone from ' . $this -> config -> item ( 'table_name' ) .
2022-10-31 19:09:19 +00:00
' thcv join station_profile on thcv.station_id = station_profile.station_id where thcv.station_id in (' . $location_list . ' )
2022-11-01 18:47:06 +00:00
and not exists ( select 1 from dxcc_master where countrycode = thcv . col_dxcc and cqzone = col_cqz ) and col_dxcc > 0
2022-10-31 19:09:19 +00:00
' ;
if ( $station_id != 'All' ) {
$sql .= ' and station_profile.station_id = ' . $station_id ;
}
$query = $this -> db -> query ( $sql );
$data [ 'qsos' ] = $query ;
$this -> load -> view ( 'search/cqzones_result.php' , $data );
}
2019-02-26 21:08:12 +00:00
/*
* Provide a dxcc search , returning results json encoded
*/
function local_find_dxcc ( $call = " " , $date = " " ) {
$this -> load -> model ( " logbook_model " );
if ( $date == '' ){
$date = date ( " Y-m-d " );
}
$ans = $this -> logbook_model -> check_dxcc_stored_proc ( $call , $date );
print json_encode ( $ans );
}
2019-06-13 23:14:39 +00:00
function dxcheck ( $call = " " , $date = " " ) {
$this -> load -> model ( " logbook_model " );
if ( $date == '' ){
$date = date ( " Y-m-d " );
}
$ans = $this -> logbook_model -> dxcc_lookup ( $call , $date );
return $ans ;
}
2020-04-13 08:34:02 +00:00
function getentity ( $adif ) {
$this -> load -> model ( " logbook_model " );
$entity = $this -> logbook_model -> get_entity ( $adif );
return $entity ;
}
2019-02-26 21:08:12 +00:00
2019-05-21 12:44:22 +00:00
/* return station bearing */
2021-12-22 12:31:01 +00:00
function searchbearing ( $locator , $station_id = null ) {
2019-05-21 12:44:22 +00:00
$this -> load -> library ( 'Qra' );
if ( $locator != null ) {
2021-12-22 12:31:01 +00:00
if ( isset ( $station_id )) {
// be sure that station belongs to user
$this -> load -> model ( 'Stations' );
if ( ! $this -> Stations -> check_station_is_accessible ( $station_id )) {
return " " ;
}
// get station profile
$station_profile = $this -> Stations -> profile_clean ( $station_id );
// get locator
$mylocator = $station_profile -> station_gridsquare ;
} else if ( $this -> session -> userdata ( 'user_locator' ) != null ){
2019-05-21 12:44:22 +00:00
$mylocator = $this -> session -> userdata ( 'user_locator' );
} else {
$mylocator = $this -> config -> item ( 'locator' );
}
2021-12-22 12:31:01 +00:00
if ( $this -> session -> userdata ( 'user_measurement_base' ) == NULL ) {
$measurement_base = $this -> config -> item ( 'measurement_base' );
}
else {
$measurement_base = $this -> session -> userdata ( 'user_measurement_base' );
}
2020-09-14 18:24:57 +00:00
$bearing = $this -> qra -> bearing ( $mylocator , $locator , $measurement_base );
2019-05-21 12:44:22 +00:00
echo $bearing ;
}
return " " ;
}
2023-06-15 16:15:29 +00:00
/* return distance */
function searchdistance ( $locator , $station_id = null ) {
$this -> load -> library ( 'Qra' );
if ( $locator != null ) {
if ( isset ( $station_id )) {
// be sure that station belongs to user
$this -> load -> model ( 'Stations' );
if ( ! $this -> Stations -> check_station_is_accessible ( $station_id )) {
return 0 ;
}
// get station profile
$station_profile = $this -> Stations -> profile_clean ( $station_id );
// get locator
$mylocator = $station_profile -> station_gridsquare ;
} else if ( $this -> session -> userdata ( 'user_locator' ) != null ){
$mylocator = $this -> session -> userdata ( 'user_locator' );
} else {
$mylocator = $this -> config -> item ( 'locator' );
}
$distance = $this -> qra -> distance ( $mylocator , $locator , 'K' );
2023-06-15 19:37:01 +00:00
echo $distance ;
2023-06-15 16:15:29 +00:00
}
return 0 ;
}
2019-02-26 21:08:12 +00:00
/* return station bearing */
2021-12-31 16:49:44 +00:00
function bearing ( $locator , $unit = 'M' , $station_id = null ) {
2019-02-26 21:08:12 +00:00
$this -> load -> library ( 'Qra' );
if ( $locator != null ) {
2021-12-31 16:49:44 +00:00
if ( isset ( $station_id )) {
// be sure that station belongs to user
$this -> load -> model ( 'Stations' );
if ( ! $this -> Stations -> check_station_is_accessible ( $station_id )) {
return " " ;
}
// get station profile
$station_profile = $this -> Stations -> profile_clean ( $station_id );
// get locator
$mylocator = $station_profile -> station_gridsquare ;
} else if ( $this -> session -> userdata ( 'user_locator' ) != null ){
2019-02-26 21:08:12 +00:00
$mylocator = $this -> session -> userdata ( 'user_locator' );
} else {
$mylocator = $this -> config -> item ( 'locator' );
}
2019-06-24 13:57:48 +00:00
$bearing = $this -> qra -> bearing ( $mylocator , $locator , $unit );
2019-02-26 21:08:12 +00:00
return $bearing ;
}
return " " ;
}
2019-06-13 23:14:39 +00:00
2023-06-15 14:03:24 +00:00
/* return distance */
function distance ( $locator , $station_id = null ) {
$distance = 0 ;
$this -> load -> library ( 'Qra' );
if ( $locator != null ) {
if ( isset ( $station_id )) {
// be sure that station belongs to user
$this -> load -> model ( 'Stations' );
if ( ! $this -> Stations -> check_station_is_accessible ( $station_id )) {
return 0 ;
}
// get station profile
$station_profile = $this -> Stations -> profile_clean ( $station_id );
// get locator
$mylocator = $station_profile -> station_gridsquare ;
} else if ( $this -> session -> userdata ( 'user_locator' ) != null ){
$mylocator = $this -> session -> userdata ( 'user_locator' );
} else {
$mylocator = $this -> config -> item ( 'locator' );
}
$distance = $this -> qra -> distance ( $mylocator , $locator , 'K' );
}
2023-06-15 19:37:01 +00:00
return $distance ;
2023-06-15 14:03:24 +00:00
}
2019-06-13 23:14:39 +00:00
function qralatlng ( $qra ) {
$this -> load -> library ( 'Qra' );
$latlng = $this -> qra -> qra2latlong ( $qra );
return $latlng ;
}
function qralatlngjson ( $qra ) {
$this -> load -> library ( 'Qra' );
$latlng = $this -> qra -> qra2latlong ( $qra );
print json_encode ( $latlng );
}
2019-06-17 13:29:03 +00:00
2020-09-13 12:42:49 +00:00
function get_qsos ( $num , $offset ) {
$this -> db -> select ( '' . $this -> config -> item ( 'table_name' ) . '.COL_CALL, ' . $this -> config -> item ( 'table_name' ) . '.COL_BAND, ' . $this -> config -> item ( 'table_name' ) . '.COL_TIME_ON, ' . $this -> config -> item ( 'table_name' ) . '.COL_RST_RCVD, ' . $this -> config -> item ( 'table_name' ) . '.COL_RST_SENT, ' . $this -> config -> item ( 'table_name' ) . '.COL_MODE, ' . $this -> config -> item ( 'table_name' ) . '.COL_SUBMODE, ' . $this -> config -> item ( 'table_name' ) . '.COL_NAME, ' . $this -> config -> item ( 'table_name' ) . '.COL_COUNTRY, ' . $this -> config -> item ( 'table_name' ) . '.COL_PRIMARY_KEY, ' . $this -> config -> item ( 'table_name' ) . '.COL_SAT_NAME, ' . $this -> config -> item ( 'table_name' ) . '.COL_GRIDSQUARE, ' . $this -> config -> item ( 'table_name' ) . '.COL_QSL_RCVD, ' . $this -> config -> item ( 'table_name' ) . '.COL_EQSL_QSL_RCVD, ' . $this -> config -> item ( 'table_name' ) . '.COL_EQSL_QSL_SENT, ' . $this -> config -> item ( 'table_name' ) . '.COL_QSL_SENT, ' . $this -> config -> item ( 'table_name' ) . '.COL_STX, ' . $this -> config -> item ( 'table_name' ) . '.COL_STX_STRING, ' . $this -> config -> item ( 'table_name' ) . '.COL_SRX, ' . $this -> config -> item ( 'table_name' ) . '.COL_SRX_STRING, ' . $this -> config -> item ( 'table_name' ) . '.COL_LOTW_QSL_SENT, ' . $this -> config -> item ( 'table_name' ) . '.COL_LOTW_QSL_RCVD, ' . $this -> config -> item ( 'table_name' ) . '.COL_VUCC_GRIDS, station_profile.*' );
$this -> db -> from ( $this -> config -> item ( 'table_name' ));
$this -> db -> join ( 'station_profile' , 'station_profile.station_id = ' . $this -> config -> item ( 'table_name' ) . '.station_id' );
$this -> db -> order_by ( '' . $this -> config -> item ( 'table_name' ) . '.COL_TIME_ON' , " desc " );
$this -> db -> limit ( $num );
$this -> db -> offset ( $offset );
return $this -> db -> get ();
}
2021-05-05 15:52:42 +00:00
}