2020-08-13 17:24:07 +01:00
< ? php
class LotwCert extends CI_Model {
2020-08-13 17:28:22 +01:00
/*
|--------------------------------------------------------------------------
| Function : lotw_certs
|--------------------------------------------------------------------------
2023-07-01 17:25:21 +01:00
|
2020-08-13 17:28:22 +01:00
| Returns all lotw_certs for a selected user via the $user_id parameter
|
*/
2020-08-13 17:24:07 +01:00
function lotw_certs ( $user_id ) {
2020-09-03 23:05:38 +01:00
2025-08-22 17:15:51 +01:00
$this -> db -> select ( 'lotw_certs.lotw_cert_id as lotw_cert_id, lotw_certs.callsign as callsign, dxcc_entities.name as cert_dxcc, dxcc_entities.end as cert_dxcc_end, lotw_certs.qso_start_date as qso_start_date, lotw_certs.qso_end_date as qso_end_date, lotw_certs.date_created as date_created, lotw_certs.date_expires as date_expires, lotw_certs.last_upload as last_upload, lotw_certs.archived as archived' );
2020-08-13 17:24:07 +01:00
$this -> db -> where ( 'user_id' , $user_id );
2023-04-19 15:32:32 +02:00
$this -> db -> join ( 'dxcc_entities' , 'lotw_certs.cert_dxcc_id = dxcc_entities.adif' , 'left' );
2020-08-17 17:02:54 +01:00
$this -> db -> order_by ( 'cert_dxcc' , 'ASC' );
2020-08-13 17:24:07 +01:00
$query = $this -> db -> get ( 'lotw_certs' );
2023-07-01 17:25:21 +01:00
2020-08-13 17:24:07 +01:00
return $query ;
}
2020-08-17 17:02:54 +01:00
2020-12-26 12:08:43 +00:00
function lotw_cert_details ( $callsign , $dxcc ) {
2023-04-19 22:06:32 +02:00
$this -> db -> where ( 'cert_dxcc_id' , $dxcc );
2020-08-22 22:26:04 +01:00
$this -> db -> where ( 'callsign' , $callsign );
$query = $this -> db -> get ( 'lotw_certs' );
return $query -> row ();
}
2020-12-28 13:42:26 +00:00
function find_cert ( $callsign , $dxcc , $user_id ) {
2020-08-17 17:02:54 +01:00
$this -> db -> where ( 'user_id' , $user_id );
2023-04-19 15:32:32 +02:00
$this -> db -> where ( 'cert_dxcc_id' , $dxcc );
2020-08-17 17:02:54 +01:00
$this -> db -> where ( 'callsign' , $callsign );
$query = $this -> db -> get ( 'lotw_certs' );
return $query -> num_rows ();
}
2022-08-26 16:24:28 +02:00
function store_certificate ( $user_id , $callsign , $dxcc , $date_created , $date_expires , $qso_start_date , $qso_end_date , $cert_key , $general_cert ) {
2020-08-17 17:02:54 +01:00
$data = array (
'user_id' => $user_id ,
'callsign' => $callsign ,
2023-04-19 15:32:32 +02:00
'cert_dxcc_id' => $dxcc ,
2020-08-17 17:02:54 +01:00
'date_created' => $date_created ,
'date_expires' => $date_expires ,
2022-08-24 12:16:41 +02:00
'qso_start_date' => $qso_start_date ,
2023-07-01 17:25:21 +01:00
'qso_end_date' => $qso_end_date . ' 23:59:59' ,
2020-08-17 17:02:54 +01:00
'cert_key' => $cert_key ,
2020-08-26 16:31:35 +01:00
'cert' => $general_cert ,
2020-08-17 17:02:54 +01:00
);
$this -> db -> insert ( 'lotw_certs' , $data );
}
2023-05-21 18:18:58 +02:00
function update_certificate ( $user_id , $callsign , $dxcc , $date_created , $date_expires , $qso_start_date , $qso_end_date , $cert_key , $general_cert ) {
2020-08-17 17:02:54 +01:00
$data = array (
2023-04-19 15:32:32 +02:00
'cert_dxcc_id' => $dxcc ,
2020-08-17 17:02:54 +01:00
'date_created' => $date_created ,
'date_expires' => $date_expires ,
2023-05-21 18:18:58 +02:00
'qso_start_date' => $qso_start_date ,
2023-07-01 17:25:21 +01:00
'qso_end_date' => $qso_end_date . ' 23:59:59' ,
2020-08-17 17:02:54 +01:00
'cert_key' => $cert_key ,
2020-08-26 16:31:35 +01:00
'cert' => $general_cert
2020-08-17 17:02:54 +01:00
);
$this -> db -> where ( 'user_id' , $user_id );
$this -> db -> where ( 'callsign' , $callsign );
2023-04-19 15:32:32 +02:00
$this -> db -> where ( 'cert_dxcc_id' , $dxcc );
2020-08-17 17:02:54 +01:00
$this -> db -> update ( 'lotw_certs' , $data );
}
2023-03-30 12:33:09 +02:00
function delete_certificate ( $user_id , $lotw_cert_id ) {
2020-08-17 17:02:54 +01:00
$this -> db -> where ( 'lotw_cert_id' , $lotw_cert_id );
$this -> db -> where ( 'user_id' , $user_id );
$this -> db -> delete ( 'lotw_certs' );
}
2020-08-26 21:20:58 +01:00
2025-08-22 17:15:51 +01:00
function toggle_archive_certificate ( $user_id , $lotw_cert_id ) {
2026-02-11 11:14:59 +00:00
// Use single UPDATE with calculated toggle instead of SELECT+UPDATE
// archived = 1 - archived toggles between 0 and 1
$this -> db -> set ( 'archived' , '1 - archived' , FALSE );
2025-08-22 17:15:51 +01:00
$this -> db -> where ( 'lotw_cert_id' , $lotw_cert_id );
$this -> db -> where ( 'user_id' , $user_id );
2026-02-11 11:14:59 +00:00
$this -> db -> update ( 'lotw_certs' );
2025-08-22 17:15:51 +01:00
2026-02-11 11:14:59 +00:00
if ( $this -> db -> affected_rows () == 0 ) {
2025-08-22 17:15:51 +01:00
return false ;
}
2026-02-11 11:14:59 +00:00
// Get final status to return
$this -> db -> select ( 'archived' );
2025-08-22 17:15:51 +01:00
$this -> db -> where ( 'lotw_cert_id' , $lotw_cert_id );
$this -> db -> where ( 'user_id' , $user_id );
2026-02-11 11:14:59 +00:00
$query = $this -> db -> get ( 'lotw_certs' );
if ( $query -> num_rows () > 0 ) {
return array ( 'archived' => $query -> row () -> archived );
}
2025-08-22 17:15:51 +01:00
2026-02-11 11:14:59 +00:00
return false ;
2025-08-22 17:15:51 +01:00
}
2020-08-26 21:20:58 +01:00
function last_upload ( $certID ) {
$data = array (
'last_upload' => date ( " Y-m-d H:i:s " ),
);
$this -> db -> where ( 'lotw_cert_id' , $certID );
$this -> db -> update ( 'lotw_certs' , $data );
return " Updated " ;
}
2023-07-01 17:25:21 +01:00
2020-08-13 17:24:07 +01:00
function empty_table ( $table ) {
2023-07-01 17:25:21 +01:00
$this -> db -> empty_table ( $table );
2020-08-13 17:24:07 +01:00
}
2022-12-23 14:49:03 +01:00
function lotw_cert_expired ( $user_id , $date ) {
2025-08-22 17:20:26 +01:00
$array = array ( 'user_id' => $user_id , 'date_expires <' => $date , 'archived' => 0 );
2022-12-23 14:49:03 +01:00
$this -> db -> where ( $array );
$query = $this -> db -> get ( 'lotw_certs' );
if ( $query -> num_rows () > 0 ) {
return true ;
} else {
return false ;
}
}
function lotw_cert_expiring ( $user_id , $date ) {
2025-08-22 17:20:26 +01:00
$array = array ( 'user_id' => $user_id , 'DATE_SUB(date_expires, INTERVAL 30 DAY) <' => $date , 'date_expires >' => $date , 'archived' => 0 );
2022-12-23 14:49:03 +01:00
$this -> db -> where ( $array );
$query = $this -> db -> get ( 'lotw_certs' );
if ( $query -> num_rows () > 0 ) {
return true ;
} else {
return false ;
}
}
2020-08-13 17:24:07 +01:00
}
2022-08-24 12:16:41 +02:00
?>