[QRZ Logbook] Bugfix for mass upload. Rewrote export to use AdifHelper.

这个提交包含在:
Andreas 2020-11-21 14:25:02 +01:00
父节点 38e9c18b37
当前提交 85c5a09a20
共有 2 个文件被更改,包括 37 次插入157 次删除

查看文件

@ -25,7 +25,8 @@ class Qrz extends CI_Controller {
if ($station_ids) {
foreach ($station_ids as $station_id) {
$qrz_api_key = $this->logbook_model->exists_qrz_api_key($station_id);
$result = $this->logbook_model->exists_qrz_api_key($station_id);
$qrz_api_key = $result->qrzapikey;
if($this->mass_upload_qsos($station_id, $qrz_api_key)) {
echo "QSOs have been uploaded to QRZ.com.";
log_message('info', 'QSOs have been uploaded to QRZ.com.');
@ -58,23 +59,26 @@ class Qrz extends CI_Controller {
$data['qsos'] = $this->logbook_model->get_qrz_qsos($station_id);
$errormessages=array();
if ($data['qsos']) {
foreach ($data['qsos'] as $qso) {
$adif = $this->logbook_model->create_adif_from_data($qso);
$CI =& get_instance();
$CI->load->library('AdifHelper');
if ($qso['COL_QRZCOM_QSO_UPLOAD_STATUS'] == 'M') {
if ($data['qsos']) {
foreach ($data['qsos']->result() as $qso) {
$adif = $CI->adifhelper->getAdifLine($qso);
if ($qso->COL_QRZCOM_QSO_UPLOAD_STATUS == 'M') {
$result = $this->logbook_model->push_qso_to_qrz($qrz_api_key, $adif, true);
} else {
$result = $this->logbook_model->push_qso_to_qrz($qrz_api_key, $adif);
}
if ($result['status'] == 'OK') {
$this->markqso($qso['COL_PRIMARY_KEY']);
$this->markqso($qso->COL_PRIMARY_KEY);
$i++;
} else {
log_message('error', 'QRZ upload failed for qso: Call: ' . $qso['COL_CALL'] . ' Band: ' . $qso['COL_BAND'] . ' Mode: ' . $qso['COL_MODE'] . ' Time: ' . $qso['COL_TIME_ON']);
log_message('error', 'QRZ upload failed for qso: Call: ' . $qso->COL_CALL . ' Band: ' . $qso->COL_BAND . ' Mode: ' . $qso->COL_MODE . ' Time: ' . $qso->COL_TIME_ON);
log_message('error', 'QRZ upload failed with the following message: ' .$result['message']);
$errormessages[] = $result['message'] . ' Call: ' . $qso['COL_CALL'] . ' Band: ' . $qso['COL_BAND'] . ' Mode: ' . $qso['COL_MODE'] . ' Time: ' . $qso['COL_TIME_ON'];
$errormessages[] = $result['message'] . ' Call: ' . $qso->COL_CALL . ' Band: ' . $qso->COL_BAND . ' Mode: ' . $qso->COL_MODE . ' Time: ' . $qso->COL_TIME_ON;
}
}
$result['status'] = 'OK';
@ -124,8 +128,8 @@ class Qrz extends CI_Controller {
$postData = $this->input->post();
$this->load->model('logbook_model');
$qrz_api_key = $this->logbook_model->exists_qrz_api_key($postData['station_id']);
$result = $this->logbook_model->exists_qrz_api_key($postData['station_id']);
$qrz_api_key = $result->qrzapikey;
header('Content-type: application/json');
$result = $this->mass_upload_qsos($postData['station_id'], $qrz_api_key);
if ($result['status'] == 'OK') {

查看文件

@ -338,22 +338,25 @@ class Logbook_model extends CI_Model {
$data['COL_RX_PWR'] = str_replace("W", "", $data['COL_RX_PWR']);
}
$result = $this->exists_qrz_api_key($data['station_id']);
// Push qso to qrz if apikey is set
if ($result) {
if ($result->qrzrealtime == 1) {
$adif = $this->create_adif_from_data($data);
$result = $this->push_qso_to_qrz($result->qrzapikey, $adif);
IF ($result['status'] == 'OK') {
$data['COL_QRZCOM_QSO_UPLOAD_STATUS'] = 'Y';
$data['COL_QRZCOM_QSO_UPLOAD_DATE'] = date("Y-m-d H:i:s", strtotime("now"));
}
}
}
// Add QSO to database
$this->db->insert($this->config->item('table_name'), $data);
// Add QSO to database
$this->db->insert($this->config->item('table_name'), $data);
$last_id = $this->db->insert_id();
$result = $this->exists_qrz_api_key($data['station_id']);
// Push qso to qrz if apikey is set, and realtime upload is enabled
if (isset($result->qrzapikey) && $result->qrzrealtime == 1) {
$CI =& get_instance();
$CI->load->library('AdifHelper');
$qso = $this->get_qso($last_id)->result();
$adif = $CI->adifhelper->getAdifLine($qso[0]);
$result = $this->push_qso_to_qrz($result->qrzapikey, $adif);
if ($result['status'] == 'OK') {
$this->mark_qrz_qsos_sent($last_id);
}
}
}
/*
@ -434,133 +437,6 @@ class Logbook_model extends CI_Model {
return true;
}
/*
* Function is used to build an ADIF string from an array that contains the QSO data
*/
function create_adif_from_data($data) {
$adif = '<call:' . strlen($data['COL_CALL']) . '>' . $data['COL_CALL'];
$adif .= '<band:' . strlen($data['COL_BAND']) . '>' . $data['COL_BAND'];
$adif .= '<mode:' . strlen($data['COL_MODE']) . '>' . $data['COL_MODE'];
if ($data['COL_SUBMODE']) {
$adif .= '<submode:' . strlen($data['COL_SUBMODE']) . '>' . $data['COL_SUBMODE'];
}
if($data['COL_FREQ'] != "0") {
$freq_in_mhz = $data['COL_FREQ'] / 1000000;
$adif .= '<freq:' . strlen($freq_in_mhz) . '>' . $freq_in_mhz;
}
$date_on = strtotime($data['COL_TIME_ON']);
$new_date = date('Ymd', $date_on);
$adif .= '<qso_date:' . strlen($new_date) . '>' . $new_date;
$time_on = strtotime($data['COL_TIME_ON']);
$new_on = date('His', $time_on);
$adif .= '<time_on:' . strlen($new_on) . '>' . $new_on;
$time_off = strtotime($data['COL_TIME_OFF']);
$new_off = date('His', $time_off);
$adif .= '<time_off:' . strlen($new_off) . '>' . $new_off;
$adif .= '<rst_rcvd:' . strlen($data['COL_RST_RCVD']) . '>' . $data['COL_RST_RCVD'];
$adif .= '<rst_sent:' . strlen($data['COL_RST_SENT']) . '>' . $data['COL_RST_SENT'];
if ($data['COL_QSL_RCVD']) {
$adif .= '<qsl_rcvd:' . strlen($data['COL_QSL_RCVD']) . '>' . $data['COL_QSL_RCVD'];
}
$adif .= '<qsl_sent:' . strlen($data['COL_QSL_SENT']) . '>' . $data['COL_QSL_SENT'];
$adif .= '<country:' . strlen($data['COL_COUNTRY']) . '>' . $data['COL_COUNTRY'];
$adif .= '<station_callsign:' . strlen($data['COL_STATION_CALLSIGN']) . '>' . $data['COL_STATION_CALLSIGN'];
$adif .= '<dxcc:' . strlen($data['COL_DXCC']) . '>' . $data['COL_DXCC'];
$adif .= '<cqz:' . strlen($data['COL_CQZ']) . '>' . $data['COL_CQZ'];
//$adif .= '<ituz:' . strlen($data['COL_ITUZ']) . '>' . $data['COL_ITUZ']; -- not yet implemented
if(isset($data['COL_LOTW_QSL_SENT'])) {
$adif .= '<lotw_qsl_sent:' . strlen($data['COL_LOTW_QSL_SENT']) . '>' . $data['COL_LOTW_QSL_SENT'];
}
if(isset($data['COL_LOTW_QSL_RCVD'])) {
$adif .= '<lotw_qsl_rcvd:' . strlen($data['COL_LOTW_QSL_RCVD']) . '>' . $data['COL_LOTW_QSL_RCVD'];
}
if($data['COL_IOTA']) {
$adif .= '<iota:' . strlen($data['COL_IOTA']) . '>' . $data['COL_IOTA'];
}
if($data['COL_GRIDSQUARE']) {
$adif .= '<gridsquare:' . strlen($data['COL_GRIDSQUARE']) . '>' . $data['COL_GRIDSQUARE'];
}
if($data['COL_SOTA_REF']) {
$adif .= '<SOTA_REF:' . strlen($data['COL_SOTA_REF']) . '>' . $data['COL_SOTA_REF'];
}
if($data['COL_COMMENT']) {
$adif .= '<COMMENT:' . strlen($data['COL_COMMENT']) . '>' . $data['COL_COMMENT'];
}
if($data['COL_SAT_NAME']) {
if($data['COL_SAT_MODE'] != 0 || $data['COL_SAT_MODE'] !="") {
$adif .= '<sat_mode:' . strlen($data['COL_SAT_MODE']) . '>' . $data['COL_SAT_MODE'];
$adif .= 'sat_name:' . strlen($data['COL_SAT_NAME']) . '>' . $data['COL_SAT_NAME'];
}
}
if($data['COL_STATE']) {
$adif .= '<state:' . strlen($data['COL_STATE']) . '>' . $data['COL_STATE'];
}
if($data['COL_PROP_MODE']) {
$adif .= '<prop_mode:' . strlen($data['COL_PROP_MODE']) . '>' . $data['COL_PROP_MODE'];
}
if($data['COL_NAME']) {
$adif .= '<name:' . strlen($data['COL_NAME']) . '>' . $data['COL_NAME'];
}
if($data['COL_OPERATOR']) {
$adif .= '<operator:' . strlen($data['COL_OPERATOR']) . '>' . $data['COL_OPERATOR'];
}
if($data['COL_MY_CITY']) {
$adif .= '<MY_CITY:' . strlen($data['COL_MY_CITY']) . '>' . $data['COL_MY_CITY'];
}
if($data['COL_MY_COUNTRY']) {
$adif .= '<MY_COUNTRY:' . strlen($data['COL_MY_COUNTRY']) . '>' . $data['COL_MY_COUNTRY'];
}
if($data['COL_MY_DXCC']) {
$adif .= '<MY_DXCC:' . strlen($data['COL_MY_DXCC']) . '>' . $data['COL_MY_DXCC'];
}
if($data['COL_MY_IOTA']) {
$adif .= '<MY_IOTA:' . strlen($data['COL_MY_IOTA']) . '>' . $data['COL_MY_IOTA'];
}
if($data['COL_MY_SOTA_REF']) {
$adif .= '<MY_SOTA_REF:' . strlen($data['COL_MY_SOTA_REF']) . '>' . $data['COL_MY_SOTA_REF'];
}
if($data['COL_MY_CQ_ZONE']) {
$adif .= '<MY_CQ_ZONE:' . strlen($data['COL_MY_CQ_ZONE']) . '>' . $data['COL_MY_CQ_ZONE'];
}
if($data['COL_MY_ITU_ZONE']) {
$adif .= '<MY_ITU_ZONE:' . strlen($data['COL_MY_ITU_ZONE']) . '>' . $data['COL_MY_ITU_ZONE'];
}
if($data['COL_MY_CNTY']) {
$adif .= '<MY_CNTY:' . strlen($data['COL_MY_CNTY']) . '>' . $data['COL_MY_CNTY'];
}
if(strpos($data['COL_MY_GRIDSQUARE'], ',') !== false ) {
$adif .= '<my_gridsquare:' . strlen($data['COL_MY_GRIDSQUARE']) . '>' . $data['COL_MY_GRIDSQUARE'];
}
$adif .= '<eor>';
return $adif;
}
/* Edit QSO */
function edit() {
$entity = $this->get_entity($this->input->post('dxcc_id'));
@ -887,16 +763,18 @@ class Logbook_model extends CI_Model {
* Function returns the QSOs from the logbook, which have not been either marked as uploaded to qrz, or has been modified with an edit
*/
function get_qrz_qsos($station_id){
$sql = 'select * from ' . $this->config->item('table_name') .
' where station_id = ' . $station_id .
$sql = 'select * from ' . $this->config->item('table_name') . ' thcv ' .
' join station_profile on thcv.station_id = station_profile.station_id' .
' where thcv.station_id = ' . $station_id .
' and (COL_QRZCOM_QSO_UPLOAD_STATUS is NULL
or COL_QRZCOM_QSO_UPLOAD_STATUS = ""
or COL_QRZCOM_QSO_UPLOAD_STATUS = "M"
or COL_QRZCOM_QSO_UPLOAD_STATUS = "N")';
$query = $this->db->query($sql);
return $query->result_array();
return $query;
}
/*
* Function returns all the station_id's with QRZ API Key's
*/
@ -916,8 +794,6 @@ class Logbook_model extends CI_Model {
}
}
function get_last_qsos($num) {
$CI =& get_instance();