From 86312d16aabf2ec145ff1819060e4b4f9c054169 Mon Sep 17 00:00:00 2001 From: Andreas <6977712+AndreasK79@users.noreply.github.com> Date: Sat, 6 May 2023 11:35:09 +0200 Subject: [PATCH] [eQSL] Refactored and moved stuff from logbook_model to eqslmethods_model --- application/libraries/EqslImporter.php | 7 ++- application/models/Eqslmethods_model.php | 65 ++++++++++++++++++++++ application/models/Logbook_model.php | 70 ------------------------ 3 files changed, 69 insertions(+), 73 deletions(-) diff --git a/application/libraries/EqslImporter.php b/application/libraries/EqslImporter.php index a8dd6841..77cc8701 100644 --- a/application/libraries/EqslImporter.php +++ b/application/libraries/EqslImporter.php @@ -18,6 +18,7 @@ class EqslImporter $this->CI->load->model('logbook_model'); $this->CI->load->library('adif_parser'); + $this->CI->load->model('eqslmethods_model'); } private function init($name, $adif_file) { @@ -62,7 +63,7 @@ class EqslImporter $eqsl_url = $q->eqsl_download_url; // Query the logbook to determine when the last eQSL confirmation was - $eqsl_last_qsl_date = $this->CI->logbook_model->eqsl_last_qsl_rcvd_date($this->callsign, $this->qth_nickname); + $eqsl_last_qsl_date = $this->CI->eqslmethods_model->eqsl_last_qsl_rcvd_date($this->callsign, $this->qth_nickname); // Build parameters for eQSL inbox file $eqsl_params = http_build_query(array( @@ -157,10 +158,10 @@ class EqslImporter $qsoid = 0; if ($status[0] == "Found") { $qsoid = $status[1]; - $dupe = $this->CI->logbook_model->eqsl_dupe_check($time_on, $record['call'], $record['band'], $config['eqsl_rcvd_mark']); + $dupe = $this->CI->eqslmethods_model->eqsl_dupe_check($time_on, $record['call'], $record['band'], $config['eqsl_rcvd_mark']); if ($dupe == false) { $updated += 1; - $eqsl_status = $this->CI->logbook_model->eqsl_update($time_on, $record['call'], $record['band'], $config['eqsl_rcvd_mark']); + $eqsl_status = $this->CI->eqslmethods_model->eqsl_update($time_on, $record['call'], $record['band'], $config['eqsl_rcvd_mark']); } else { $dupes += 1; $eqsl_status = "Already received an eQSL for this QSO."; diff --git a/application/models/Eqslmethods_model.php b/application/models/Eqslmethods_model.php index 2a66562b..eb7546f5 100644 --- a/application/models/Eqslmethods_model.php +++ b/application/models/Eqslmethods_model.php @@ -98,6 +98,71 @@ class Eqslmethods_model extends CI_Model { return $this->db->get(); } + // Get the last date we received an eQSL + function eqsl_last_qsl_rcvd_date($callsign, $nickname) { + $qso_table_name = $this->config->item('table_name'); + $this->db->from($qso_table_name); + + $this->db->join('station_profile', + 'station_profile.station_id = '.$qso_table_name.'.station_id AND station_profile.eqslqthnickname != ""'); + $this->db->where('station_profile.station_callsign', $callsign); + $this->db->where('station_profile.eqslqthnickname', $nickname); + + $this->db->select("DATE_FORMAT(COL_EQSL_QSLRDATE,'%Y%m%d') AS COL_EQSL_QSLRDATE", FALSE); + $this->db->where('COL_EQSL_QSLRDATE IS NOT NULL'); + $this->db->order_by("COL_EQSL_QSLRDATE", "desc"); + $this->db->limit(1); + + $query = $this->db->get(); + $row = $query->row(); + + if (isset($row->COL_EQSL_QSLRDATE)){ + return $row->COL_EQSL_QSLRDATE; + } else { + // No previous date (first time import has run?), so choose UNIX EPOCH! + // Note: date is yyyy/mm/dd format + return '1970/01/01'; + } + } + + // Update a QSO with eQSL QSL info + // We could also probably use this use this: http://eqsl.cc/qslcard/VerifyQSO.txt + // http://www.eqsl.cc/qslcard/ImportADIF.txt + function eqsl_update($datetime, $callsign, $band, $qsl_status) { + $data = array( + 'COL_EQSL_QSLRDATE' => date('Y-m-d H:i:s'), // eQSL doesn't give us a date, so let's use current + 'COL_EQSL_QSL_RCVD' => $qsl_status + ); + + $this->db->where('COL_TIME_ON >= DATE_ADD(DATE_FORMAT("'.$datetime.'", \'%Y-%m-%d %H:%i\' ), INTERVAL -15 MINUTE )'); + $this->db->where('COL_TIME_ON <= DATE_ADD(DATE_FORMAT("'.$datetime.'", \'%Y-%m-%d %H:%i\' ), INTERVAL 15 MINUTE )'); + $this->db->where('COL_CALL', $callsign); + $this->db->where('COL_BAND', $band); + + $this->db->update($this->config->item('table_name'), $data); + + return "Updated"; + } + + // Determine if we've already received an eQSL for this QSO + function eqsl_dupe_check($datetime, $callsign, $band, $qsl_status) { + $this->db->select('COL_EQSL_QSLRDATE'); + $this->db->where('COL_TIME_ON >= DATE_ADD(DATE_FORMAT("'.$datetime.'", \'%Y-%m-%d %H:%i\' ), INTERVAL -15 MINUTE )'); + $this->db->where('COL_TIME_ON <= DATE_ADD(DATE_FORMAT("'.$datetime.'", \'%Y-%m-%d %H:%i\' ), INTERVAL 15 MINUTE )'); + $this->db->where('COL_CALL', $callsign); + $this->db->where('COL_BAND', $band); + $this->db->where('COL_EQSL_QSL_RCVD', $qsl_status); + $this->db->limit(1); + + $query = $this->db->get($this->config->item('table_name')); + $row = $query->row(); + + if ($row != null) { + return true; + } + return false; + } + } ?> \ No newline at end of file diff --git a/application/models/Logbook_model.php b/application/models/Logbook_model.php index b301148f..692803aa 100755 --- a/application/models/Logbook_model.php +++ b/application/models/Logbook_model.php @@ -2553,76 +2553,6 @@ class Logbook_model extends CI_Model { return '1900-01-01 00:00:00.000'; } -////////////////////////////// - // Update a QSO with eQSL QSL info - // We could also probably use this use this: http://eqsl.cc/qslcard/VerifyQSO.txt - // http://www.eqsl.cc/qslcard/ImportADIF.txt - function eqsl_update($datetime, $callsign, $band, $qsl_status) { - $data = array( - 'COL_EQSL_QSLRDATE' => date('Y-m-d H:i:s'), // eQSL doesn't give us a date, so let's use current - 'COL_EQSL_QSL_RCVD' => $qsl_status - ); - - $this->db->where('COL_TIME_ON >= DATE_ADD(DATE_FORMAT("'.$datetime.'", \'%Y-%m-%d %H:%i\' ), INTERVAL -15 MINUTE )'); - $this->db->where('COL_TIME_ON <= DATE_ADD(DATE_FORMAT("'.$datetime.'", \'%Y-%m-%d %H:%i\' ), INTERVAL 15 MINUTE )'); - $this->db->where('COL_CALL', $callsign); - $this->db->where('COL_BAND', $band); - - $this->db->update($this->config->item('table_name'), $data); - - return "Updated"; - } - - // Get the last date we received an eQSL - function eqsl_last_qsl_rcvd_date($callsign, $nickname) { - $qso_table_name = $this->config->item('table_name'); - $this->db->from($qso_table_name); - - $this->db->join('station_profile', - 'station_profile.station_id = '.$qso_table_name.'.station_id AND station_profile.eqslqthnickname != ""'); - $this->db->where('station_profile.station_callsign', $callsign); - $this->db->where('station_profile.eqslqthnickname', $nickname); - - $this->db->select("DATE_FORMAT(COL_EQSL_QSLRDATE,'%Y%m%d') AS COL_EQSL_QSLRDATE", FALSE); - $this->db->where('COL_EQSL_QSLRDATE IS NOT NULL'); - $this->db->order_by("COL_EQSL_QSLRDATE", "desc"); - $this->db->limit(1); - - $query = $this->db->get(); - $row = $query->row(); - - if (isset($row->COL_EQSL_QSLRDATE)){ - return $row->COL_EQSL_QSLRDATE; - }else{ - // No previous date (first time import has run?), so choose UNIX EPOCH! - // Note: date is yyyy/mm/dd format - return '1970/01/01'; - } - } - - // Determine if we've already received an eQSL for this QSO - function eqsl_dupe_check($datetime, $callsign, $band, $qsl_status) { - $this->db->select('COL_EQSL_QSLRDATE'); - $this->db->where('COL_TIME_ON >= DATE_ADD(DATE_FORMAT("'.$datetime.'", \'%Y-%m-%d %H:%i\' ), INTERVAL -15 MINUTE )'); - $this->db->where('COL_TIME_ON <= DATE_ADD(DATE_FORMAT("'.$datetime.'", \'%Y-%m-%d %H:%i\' ), INTERVAL 15 MINUTE )'); - $this->db->where('COL_CALL', $callsign); - $this->db->where('COL_BAND', $band); - $this->db->where('COL_EQSL_QSL_RCVD', $qsl_status); - $this->db->limit(1); - - $query = $this->db->get($this->config->item('table_name')); - $row = $query->row(); - - if ($row != null) - { - return true; - } - else - { - return false; - } - } - /* * $skipDuplicate - used in ADIF import to skip duplicate checking when importing QSOs * $markLoTW - used in ADIF import to mark QSOs as exported to LoTW when importing QSOs