[eQSL] Refactored and moved stuff from logbook_model to eqslmethods_model
这个提交包含在:
父节点
678a33d452
当前提交
86312d16aa
共有 3 个文件被更改,包括 69 次插入 和 73 次删除
|
|
@ -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.";
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -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
|
||||
|
|
|
|||
正在加载…
在新工单中引用