*/
- function push_qso_to_qrz($apikey, $adif, $replaceoption = false) {
- $url = 'http://logbook.qrz.com/api'; // TODO: Move this to database
+ function push_qso_to_qrz($apikey, $adif, $replaceoption = false)
+ {
+ $url = 'http://logbook.qrz.com/api'; // TODO: Move this to database
- $post_data['KEY'] = $apikey;
- $post_data['ACTION'] = 'INSERT';
- $post_data['ADIF'] = $adif;
+ $post_data['KEY'] = $apikey;
+ $post_data['ACTION'] = 'INSERT';
+ $post_data['ADIF'] = $adif;
- if ($replaceoption) {
- $post_data['OPTION'] = 'REPLACE';
+ if ($replaceoption) {
+ $post_data['OPTION'] = 'REPLACE';
+ }
+
+ $ch = curl_init($url);
+ curl_setopt($ch, CURLOPT_POST, true);
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
+ curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
+ curl_setopt($ch, CURLOPT_HEADER, 0);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+
+ $content = curl_exec($ch);
+ if ($content) {
+ if (stristr($content, 'RESULT=OK') || stristr($content, 'RESULT=REPLACE')) {
+ $result['status'] = 'OK';
+ return $result;
+ } else {
+ $result['status'] = 'error';
+ $result['message'] = $content;
+ return $result;
}
-
- $ch = curl_init( $url );
- curl_setopt( $ch, CURLOPT_POST, true);
- curl_setopt( $ch, CURLOPT_POSTFIELDS, $post_data);
- curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
- curl_setopt( $ch, CURLOPT_HEADER, 0);
- curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true);
-
- $content = curl_exec($ch);
- if ($content){
- if (stristr($content,'RESULT=OK') || stristr($content,'RESULT=REPLACE')) {
- $result['status'] = 'OK';
- return $result;
- }
- else {
- $result['status'] = 'error';
- $result['message'] = $content;
- return $result;
- }
- }
- if(curl_errno($ch)){
- $result['status'] = 'error';
- $result['message'] = 'Curl error: '. curl_errno($ch);
- return $result;
- }
- curl_close($ch);
+ }
+ if (curl_errno($ch)) {
+ $result['status'] = 'error';
+ $result['message'] = 'Curl error: ' . curl_errno($ch);
+ return $result;
+ }
+ curl_close($ch);
}
- /*
+ /*
* Function uploads a QSO to WebADIF consumer with the API given.
* $adif contains a line with the QSO in the ADIF format.
*/
- function push_qso_to_webadif($url, $apikey, $adif) : bool{
+ function push_qso_to_webadif($url, $apikey, $adif): bool
+ {
- $headers = array(
- 'Content-Type: text/plain',
- 'X-API-Key: ' . $apikey
- );
+ $headers = array(
+ 'Content-Type: text/plain',
+ 'X-API-Key: ' . $apikey
+ );
- if (substr($url, -1) !== "/") {
- $url .= "/";
- }
+ if (substr($url, -1) !== "/") {
+ $url .= "/";
+ }
- $ch = curl_init( $url . "qso");
- curl_setopt( $ch, CURLOPT_POST, true);
- curl_setopt( $ch, CURLOPT_POSTFIELDS, (string)$adif);
- curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
- curl_setopt( $ch, CURLOPT_HEADER, 0);
- curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers);
- curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true);
+ $ch = curl_init($url . "qso");
+ curl_setopt($ch, CURLOPT_POST, true);
+ curl_setopt($ch, CURLOPT_POSTFIELDS, (string)$adif);
+ curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
+ curl_setopt($ch, CURLOPT_HEADER, 0);
+ curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- $content = curl_exec($ch); // TODO: better error handling
- $errors = curl_error($ch);
- $response = curl_getinfo($ch, CURLINFO_HTTP_CODE);
- curl_close($ch);
- return $response === 200;
- }
+ $content = curl_exec($ch); // TODO: better error handling
+ $errors = curl_error($ch);
+ $response = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+ curl_close($ch);
+ return $response === 200;
+ }
/*
* Function marks QSOs as uploaded to Clublog
* $primarykey is the unique id for that QSO in the logbook
*/
- function mark_clublog_qsos_sent($primarykey) {
- $data = array(
- 'COL_CLUBLOG_QSO_UPLOAD_DATE' => date("Y-m-d H:i:s", strtotime("now")),
- 'COL_CLUBLOG_QSO_UPLOAD_STATUS' => 'Y',
- );
+ function mark_clublog_qsos_sent($primarykey)
+ {
+ $data = array(
+ 'COL_CLUBLOG_QSO_UPLOAD_DATE' => date("Y-m-d H:i:s", strtotime("now")),
+ 'COL_CLUBLOG_QSO_UPLOAD_STATUS' => 'Y',
+ );
- $this->db->where('COL_PRIMARY_KEY', $primarykey);
+ $this->db->where('COL_PRIMARY_KEY', $primarykey);
- $this->db->update($this->config->item('table_name'), $data);
+ $this->db->update($this->config->item('table_name'), $data);
- return true;
+ return true;
}
@@ -909,343 +926,355 @@ class Logbook_model extends CI_Model {
* Function marks QSOs as uploaded to HRDLog.
* $primarykey is the unique id for that QSO in the logbook
*/
- function mark_hrdlog_qsos_sent($primarykey) {
- $data = array(
- 'COL_HRDLOG_QSO_UPLOAD_DATE' => date("Y-m-d H:i:s", strtotime("now")),
- 'COL_HRDLOG_QSO_UPLOAD_STATUS' => 'Y',
- );
+ function mark_hrdlog_qsos_sent($primarykey)
+ {
+ $data = array(
+ 'COL_HRDLOG_QSO_UPLOAD_DATE' => date("Y-m-d H:i:s", strtotime("now")),
+ 'COL_HRDLOG_QSO_UPLOAD_STATUS' => 'Y',
+ );
- $this->db->where('COL_PRIMARY_KEY', $primarykey);
+ $this->db->where('COL_PRIMARY_KEY', $primarykey);
- $this->db->update($this->config->item('table_name'), $data);
+ $this->db->update($this->config->item('table_name'), $data);
- return true;
+ return true;
}
/*
* Function marks QSOs as uploaded to QRZ.
* $primarykey is the unique id for that QSO in the logbook
*/
- function mark_qrz_qsos_sent($primarykey) {
- $data = array(
- 'COL_QRZCOM_QSO_UPLOAD_DATE' => date("Y-m-d H:i:s", strtotime("now")),
- 'COL_QRZCOM_QSO_UPLOAD_STATUS' => 'Y',
- );
+ function mark_qrz_qsos_sent($primarykey)
+ {
+ $data = array(
+ 'COL_QRZCOM_QSO_UPLOAD_DATE' => date("Y-m-d H:i:s", strtotime("now")),
+ 'COL_QRZCOM_QSO_UPLOAD_STATUS' => 'Y',
+ );
- $this->db->where('COL_PRIMARY_KEY', $primarykey);
+ $this->db->where('COL_PRIMARY_KEY', $primarykey);
- $this->db->update($this->config->item('table_name'), $data);
+ $this->db->update($this->config->item('table_name'), $data);
- return true;
- }
+ return true;
+ }
- /*
+ /*
* Function marks QSOs as uploaded to WebADIF.
* $qsoIDs is an arroy of unique id for the QSOs in the logbook
*/
- function mark_webadif_qsos_sent(array $qsoIDs)
- {
- $data = [];
- $now = date("Y-m-d H:i:s", strtotime("now"));
- foreach ($qsoIDs as $qsoID) {
- $data[] = [
- 'upload_date' => $now,
- 'qso_id' => $qsoID,
- ];
- }
- $this->db->insert_batch('webadif', $data);
- return true;
- }
+ function mark_webadif_qsos_sent(array $qsoIDs)
+ {
+ $data = [];
+ $now = date("Y-m-d H:i:s", strtotime("now"));
+ foreach ($qsoIDs as $qsoID) {
+ $data[] = [
+ 'upload_date' => $now,
+ 'qso_id' => $qsoID,
+ ];
+ }
+ $this->db->insert_batch('webadif', $data);
+ return true;
+ }
- function upload_amsat_status($data) {
- $sat_name = '';
- if ($data['COL_SAT_NAME'] == 'AO-7') {
- if ($data['COL_BAND'] == '2m' && $data['COL_BAND_RX'] == '10m') {
- $sat_name = 'AO-7[A]';
- }
- if ($data['COL_BAND'] == '70cm' && $data['COL_BAND_RX'] == '2m') {
- $sat_name = 'AO-7[B]';
- }
- } else if ($data['COL_SAT_NAME'] == 'QO-100') {
- $sat_name = 'QO-100_NB';
- } else if ($data['COL_SAT_NAME'] == 'AO-92') {
- if ($data['COL_BAND'] == '70cm' && $data['COL_BAND_RX'] == '2m') {
- $sat_name = 'AO-92_U/v';
- }
- if ($data['COL_BAND'] == '23cm' && $data['COL_BAND_RX'] == '2m') {
- $sat_name = 'AO-92_L/v';
- }
- } else if ($data['COL_SAT_NAME'] == 'AO-95') {
- if ($data['COL_BAND'] == '70cm' && $data['COL_BAND_RX'] == '2m') {
- $sat_name = 'AO-95_U/v';
- }
- if ($data['COL_BAND'] == '23cm' && $data['COL_BAND_RX'] == '2m') {
- $sat_name = 'AO-95_L/v';
- }
- } else if ($data['COL_SAT_NAME'] == 'PO-101') {
- if ($data['COL_MODE'] == 'PKT') {
- $sat_name = 'PO-101[APRS]';
- } else {
- $sat_name = 'PO-101[FM]';
- }
- } else if ($data['COL_SAT_NAME'] == 'FO-118') {
- if ($data['COL_BAND'] == '2m') {
- if ($data['COL_MODE'] == 'FM') {
- $sat_name = 'FO-118[V/u FM]';
- } else if ($data['COL_MODE'] == 'SSB') {
- $sat_name = 'FO-118[V/u]';
- }
- } else if ($data['COL_BAND'] == '15m') {
- $sat_name = 'FO-118[H/u]';
- }
- } else if ($data['COL_SAT_NAME'] == 'ARISS' || $data['COL_SAT_NAME'] == 'ISS') {
- if ($data['COL_MODE'] == 'FM') {
- $sat_name = 'ISS-FM';
- } else if ($data['COL_MODE'] == 'PKT') {
- $sat_name = 'ISS-DATA';
- }
- } else if ($data['COL_SAT_NAME'] == 'CAS-3H') {
- $sat_name = 'LilacSat-2';
- } else {
- $sat_name = $data['COL_SAT_NAME'];
+ function upload_amsat_status($data)
+ {
+ $sat_name = '';
+ if ($data['COL_SAT_NAME'] == 'AO-7') {
+ if ($data['COL_BAND'] == '2m' && $data['COL_BAND_RX'] == '10m') {
+ $sat_name = 'AO-7[A]';
}
- $datearray = date_parse_from_format("Y-m-d H:i:s", $data['COL_TIME_ON']);
- $url='https://amsat.org/status/submit.php?SatSubmit=yes&Confirm=yes&SatName='.$sat_name.'&SatYear='.$datearray['year'].'&SatMonth='.str_pad($datearray['month'], 2, '0', STR_PAD_LEFT).'&SatDay='.str_pad($datearray['day'], 2, '0', STR_PAD_LEFT).'&SatHour='.str_pad($datearray['hour'], 2, '0', STR_PAD_LEFT).'&SatPeriod='.(intdiv(($datearray['minute']-1), 15)).'&SatCall='.$data['COL_STATION_CALLSIGN'].'&SatReport=Heard&SatGridSquare='.$data['COL_MY_GRIDSQUARE'];
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_exec($ch);
+ if ($data['COL_BAND'] == '70cm' && $data['COL_BAND_RX'] == '2m') {
+ $sat_name = 'AO-7[B]';
+ }
+ } else if ($data['COL_SAT_NAME'] == 'QO-100') {
+ $sat_name = 'QO-100_NB';
+ } else if ($data['COL_SAT_NAME'] == 'AO-92') {
+ if ($data['COL_BAND'] == '70cm' && $data['COL_BAND_RX'] == '2m') {
+ $sat_name = 'AO-92_U/v';
+ }
+ if ($data['COL_BAND'] == '23cm' && $data['COL_BAND_RX'] == '2m') {
+ $sat_name = 'AO-92_L/v';
+ }
+ } else if ($data['COL_SAT_NAME'] == 'AO-95') {
+ if ($data['COL_BAND'] == '70cm' && $data['COL_BAND_RX'] == '2m') {
+ $sat_name = 'AO-95_U/v';
+ }
+ if ($data['COL_BAND'] == '23cm' && $data['COL_BAND_RX'] == '2m') {
+ $sat_name = 'AO-95_L/v';
+ }
+ } else if ($data['COL_SAT_NAME'] == 'PO-101') {
+ if ($data['COL_MODE'] == 'PKT') {
+ $sat_name = 'PO-101[APRS]';
+ } else {
+ $sat_name = 'PO-101[FM]';
+ }
+ } else if ($data['COL_SAT_NAME'] == 'FO-118') {
+ if ($data['COL_BAND'] == '2m') {
+ if ($data['COL_MODE'] == 'FM') {
+ $sat_name = 'FO-118[V/u FM]';
+ } else if ($data['COL_MODE'] == 'SSB') {
+ $sat_name = 'FO-118[V/u]';
+ }
+ } else if ($data['COL_BAND'] == '15m') {
+ $sat_name = 'FO-118[H/u]';
+ }
+ } else if ($data['COL_SAT_NAME'] == 'ARISS' || $data['COL_SAT_NAME'] == 'ISS') {
+ if ($data['COL_MODE'] == 'FM') {
+ $sat_name = 'ISS-FM';
+ } else if ($data['COL_MODE'] == 'PKT') {
+ $sat_name = 'ISS-DATA';
+ }
+ } else if ($data['COL_SAT_NAME'] == 'CAS-3H') {
+ $sat_name = 'LilacSat-2';
+ } else {
+ $sat_name = $data['COL_SAT_NAME'];
+ }
+ $datearray = date_parse_from_format("Y-m-d H:i:s", $data['COL_TIME_ON']);
+ $url = 'https://amsat.org/status/submit.php?SatSubmit=yes&Confirm=yes&SatName=' . $sat_name . '&SatYear=' . $datearray['year'] . '&SatMonth=' . str_pad($datearray['month'], 2, '0', STR_PAD_LEFT) . '&SatDay=' . str_pad($datearray['day'], 2, '0', STR_PAD_LEFT) . '&SatHour=' . str_pad($datearray['hour'], 2, '0', STR_PAD_LEFT) . '&SatPeriod=' . (intdiv(($datearray['minute'] - 1), 15)) . '&SatCall=' . $data['COL_STATION_CALLSIGN'] . '&SatReport=Heard&SatGridSquare=' . $data['COL_MY_GRIDSQUARE'];
+ $ch = curl_init();
+ curl_setopt($ch, CURLOPT_URL, $url);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+ curl_exec($ch);
}
/* Edit QSO */
- function edit() {
- $qso = $this->get_qso($this->input->post('id'))->row();
+ function edit()
+ {
+ $qso = $this->get_qso($this->input->post('id'))->row();
- $entity = $this->get_entity($this->input->post('dxcc_id'));
- $stationId = $this->input->post('station_profile');
- $country = ucwords(strtolower($entity['name']), "- (/");
+ $entity = $this->get_entity($this->input->post('dxcc_id'));
+ $stationId = $this->input->post('station_profile');
+ $country = ucwords(strtolower($entity['name']), "- (/");
- // be sure that station belongs to user
- $CI =& get_instance();
- $CI->load->model('stations');
- if (!$CI->stations->check_station_is_accessible($stationId)) {
- return;
- }
+ // be sure that station belongs to user
+ $CI = &get_instance();
+ $CI->load->model('stations');
+ if (!$CI->stations->check_station_is_accessible($stationId)) {
+ return;
+ }
- if (trim($this->input->post('callsign')) == '') {
- return;
- }
+ if (trim($this->input->post('callsign')) == '') {
+ return;
+ }
- $station_profile=$CI->stations->profile_clean($stationId);
- $stationCallsign=$station_profile->station_callsign;
+ $station_profile = $CI->stations->profile_clean($stationId);
+ $stationCallsign = $station_profile->station_callsign;
+ $iotaRef = $station_profile->station_iota;
+ $sotaRef = $station_profile->station_sota;
+ $wwffRef = $station_profile->station_wwff;
+ $potaRef = $station_profile->station_pota;
- $mode = $this->get_main_mode_if_submode($this->input->post('mode'));
- if ($mode == null) {
- $mode = $this->input->post('mode');
- $submode = null;
- } else {
- $submode = $this->input->post('mode');
- }
+ $mode = $this->get_main_mode_if_submode($this->input->post('mode'));
+ if ($mode == null) {
+ $mode = $this->input->post('mode');
+ $submode = null;
+ } else {
+ $submode = $this->input->post('mode');
+ }
- if($this->input->post('transmit_power')) {
- $txpower = $this->input->post('transmit_power');
- } else {
- $txpower = null;
- }
+ if ($this->input->post('transmit_power')) {
+ $txpower = $this->input->post('transmit_power');
+ } else {
+ $txpower = null;
+ }
- if($this->input->post('stx')) {
- $stx_string = $this->input->post('stx');
- } else {
- $stx_string = null;
- }
+ if ($this->input->post('stx')) {
+ $stx_string = $this->input->post('stx');
+ } else {
+ $stx_string = null;
+ }
- if($this->input->post('srx')) {
- $srx_string = $this->input->post('srx');
- } else {
- $srx_string = null;
- }
+ if ($this->input->post('srx')) {
+ $srx_string = $this->input->post('srx');
+ } else {
+ $srx_string = null;
+ }
- if ($this->input->post('usa_county') && $this->input->post('usa_state')) {
- $uscounty = trim($this->input->post('usa_state') . "," . $this->input->post('usa_county'));
- } else {
- $uscounty = null;
- }
+ if ($this->input->post('usa_county') && $this->input->post('usa_state')) {
+ $uscounty = trim($this->input->post('usa_state') . "," . $this->input->post('usa_county'));
+ } else {
+ $uscounty = null;
+ }
- if ($this->input->post('qsl_sent')) {
- $qsl_sent = $this->input->post('qsl_sent');
- } else {
- $qsl_sent = 'N';
- }
+ if ($this->input->post('qsl_sent')) {
+ $qsl_sent = $this->input->post('qsl_sent');
+ } else {
+ $qsl_sent = 'N';
+ }
- if ($this->input->post('qsl_rcvd')) {
- $qsl_rcvd = $this->input->post('qsl_rcvd');
- } else {
- $qsl_rcvd = 'N';
- }
+ if ($this->input->post('qsl_rcvd')) {
+ $qsl_rcvd = $this->input->post('qsl_rcvd');
+ } else {
+ $qsl_rcvd = 'N';
+ }
- if ($this->input->post('eqsl_sent')) {
- $eqsl_sent = $this->input->post('eqsl_sent');
- } else {
- $eqsl_sent = 'N';
- }
+ if ($this->input->post('eqsl_sent')) {
+ $eqsl_sent = $this->input->post('eqsl_sent');
+ } else {
+ $eqsl_sent = 'N';
+ }
- if ($this->input->post('eqsl_rcvd')) {
- $eqsl_rcvd = $this->input->post('eqsl_rcvd');
- } else {
- $eqsl_rcvd = 'N';
- }
+ if ($this->input->post('eqsl_rcvd')) {
+ $eqsl_rcvd = $this->input->post('eqsl_rcvd');
+ } else {
+ $eqsl_rcvd = 'N';
+ }
- if ($this->input->post('lotw_sent')) {
- $lotw_sent = $this->input->post('lotw_sent');
- } else {
- $lotw_sent = 'N';
- }
+ if ($this->input->post('lotw_sent')) {
+ $lotw_sent = $this->input->post('lotw_sent');
+ } else {
+ $lotw_sent = 'N';
+ }
- if ($this->input->post('lotw_rcvd')) {
- $lotw_rcvd = $this->input->post('lotw_rcvd');
- } else {
- $lotw_rcvd = 'N';
- }
+ if ($this->input->post('lotw_rcvd')) {
+ $lotw_rcvd = $this->input->post('lotw_rcvd');
+ } else {
+ $lotw_rcvd = 'N';
+ }
- if ($qsl_sent == 'N') {
- $qslsdate = null;
- } elseif (!$qso->COL_QSLSDATE || $qso->COL_QSL_SENT != $qsl_sent) {
- $qslsdate = date('Y-m-d H:i:s');
- } else {
- $qslsdate = $qso->COL_QSLSDATE;
- }
+ if ($qsl_sent == 'N') {
+ $qslsdate = null;
+ } elseif (!$qso->COL_QSLSDATE || $qso->COL_QSL_SENT != $qsl_sent) {
+ $qslsdate = date('Y-m-d H:i:s');
+ } else {
+ $qslsdate = $qso->COL_QSLSDATE;
+ }
- if ($qsl_rcvd == 'N') {
- $qslrdate = null;
- } elseif (!$qso->COL_QSLRDATE || $qso->COL_QSL_RCVD != $qsl_rcvd) {
- $qslrdate = date('Y-m-d H:i:s');
- } else {
- $qslrdate = $qso->COL_QSLRDATE;
- }
+ if ($qsl_rcvd == 'N') {
+ $qslrdate = null;
+ } elseif (!$qso->COL_QSLRDATE || $qso->COL_QSL_RCVD != $qsl_rcvd) {
+ $qslrdate = date('Y-m-d H:i:s');
+ } else {
+ $qslrdate = $qso->COL_QSLRDATE;
+ }
- if ($eqsl_sent == 'N') {
- $eqslsdate = null;
- } elseif (!$qso->COL_EQSL_QSLSDATE || $qso->COL_EQSL_QSL_SENT != $eqsl_sent) {
- $eqslsdate = date('Y-m-d H:i:s');
- } else {
- $eqslsdate = $qso->COL_EQSL_QSLSDATE;
- }
+ if ($eqsl_sent == 'N') {
+ $eqslsdate = null;
+ } elseif (!$qso->COL_EQSL_QSLSDATE || $qso->COL_EQSL_QSL_SENT != $eqsl_sent) {
+ $eqslsdate = date('Y-m-d H:i:s');
+ } else {
+ $eqslsdate = $qso->COL_EQSL_QSLSDATE;
+ }
- if ($eqsl_rcvd == 'N') {
- $eqslrdate = null;
- } elseif (!$qso->COL_EQSL_QSLRDATE || $qso->COL_EQSL_QSL_RCVD != $eqsl_rcvd) {
- $eqslrdate = date('Y-m-d H:i:s');
- } else {
- $eqslrdate = $qso->COL_EQSL_QSLRDATE;
- }
+ if ($eqsl_rcvd == 'N') {
+ $eqslrdate = null;
+ } elseif (!$qso->COL_EQSL_QSLRDATE || $qso->COL_EQSL_QSL_RCVD != $eqsl_rcvd) {
+ $eqslrdate = date('Y-m-d H:i:s');
+ } else {
+ $eqslrdate = $qso->COL_EQSL_QSLRDATE;
+ }
- if ($lotw_sent == 'N') {
- $lotwsdate = null;
- } elseif (!$qso->COL_LOTW_QSLSDATE || $qso->COL_LOTW_QSL_SENT != $lotw_sent) {
- $lotwsdate = date('Y-m-d H:i:s');
- } else {
- $lotwsdate = $qso->COL_LOTW_QSLSDATE;
- }
+ if ($lotw_sent == 'N') {
+ $lotwsdate = null;
+ } elseif (!$qso->COL_LOTW_QSLSDATE || $qso->COL_LOTW_QSL_SENT != $lotw_sent) {
+ $lotwsdate = date('Y-m-d H:i:s');
+ } else {
+ $lotwsdate = $qso->COL_LOTW_QSLSDATE;
+ }
- if ($lotw_rcvd == 'N') {
- $lotwrdate = null;
- } elseif (!$qso->COL_LOTW_QSLRDATE || $qso->COL_LOTW_QSL_RCVD != $lotw_rcvd) {
- $lotwrdate = date('Y-m-d H:i:s');
- } else {
- $lotwrdate = $qso->COL_LOTW_QSLRDATE;
- }
+ if ($lotw_rcvd == 'N') {
+ $lotwrdate = null;
+ } elseif (!$qso->COL_LOTW_QSLRDATE || $qso->COL_LOTW_QSL_RCVD != $lotw_rcvd) {
+ $lotwrdate = date('Y-m-d H:i:s');
+ } else {
+ $lotwrdate = $qso->COL_LOTW_QSLRDATE;
+ }
- $data = array(
- 'COL_TIME_ON' => $this->input->post('time_on'),
- 'COL_TIME_OFF' => $this->input->post('time_off'),
- 'COL_CALL' => strtoupper(trim($this->input->post('callsign'))),
- 'COL_BAND' => $this->input->post('band'),
- 'COL_BAND_RX' => $this->input->post('band_rx'),
- 'COL_FREQ' => $this->parse_frequency($this->input->post('freq')),
- 'COL_MODE' => $mode,
- 'COL_SUBMODE' => $submode,
- 'COL_RST_RCVD' => $this->input->post('rst_rcvd'),
- 'COL_RST_SENT' => $this->input->post('rst_sent'),
- 'COL_GRIDSQUARE' => strtoupper(trim($this->input->post('locator'))),
- 'COL_VUCC_GRIDS' => strtoupper(preg_replace('/\s+/', '', $this->input->post('vucc_grids'))),
- 'COL_DISTANCE' => $this->input->post('distance'),
- 'COL_COMMENT' => $this->input->post('comment'),
- 'COL_NAME' => $this->input->post('name'),
- 'COL_COUNTRY' => $country,
- 'COL_CONT' => $this->input->post('continent'),
- 'COL_DXCC'=> $this->input->post('dxcc_id'),
- 'COL_CQZ' => $this->input->post('cqz'),
- 'COL_SAT_NAME' => $this->input->post('sat_name'),
- 'COL_SAT_MODE' => $this->input->post('sat_mode'),
- 'COL_NOTES' => $this->input->post('notes'),
- 'COL_QSLSDATE' => $qslsdate,
- 'COL_QSLRDATE' => $qslrdate,
- 'COL_QSL_SENT' => $qsl_sent,
- 'COL_QSL_RCVD' => $qsl_rcvd,
- 'COL_QSL_SENT_VIA' => $this->input->post('qsl_sent_method'),
- 'COL_QSL_RCVD_VIA' => $this->input->post('qsl_rcvd_method'),
- 'COL_EQSL_QSLSDATE' => $eqslsdate,
- 'COL_EQSL_QSLRDATE' => $eqslrdate,
- 'COL_EQSL_QSL_SENT' => $this->input->post('eqsl_sent'),
- 'COL_EQSL_QSL_RCVD' => $this->input->post('eqsl_rcvd'),
- 'COL_QSLMSG' => $this->input->post('qslmsg'),
- 'COL_LOTW_QSLSDATE' => $lotwsdate,
- 'COL_LOTW_QSLRDATE' => $lotwrdate,
- 'COL_LOTW_QSL_SENT' => $this->input->post('lotw_sent'),
- 'COL_LOTW_QSL_RCVD' => $this->input->post('lotw_rcvd'),
- 'COL_IOTA' => $this->input->post('iota_ref'),
- 'COL_SOTA_REF' => $this->input->post('sota_ref'),
- 'COL_WWFF_REF' => $this->input->post('wwff_ref'),
- 'COL_POTA_REF' => $this->input->post('pota_ref'),
- 'COL_TX_PWR' => $txpower,
- 'COL_SIG' => $this->input->post('sig'),
- 'COL_SIG_INFO' => $this->input->post('sig_info'),
- 'COL_DARC_DOK' => strtoupper($this->input->post('darc_dok')),
- 'COL_QTH' => $this->input->post('qth'),
- 'COL_PROP_MODE' => $this->input->post('prop_mode'),
- 'COL_FREQ_RX' => $this->parse_frequency($this->input->post('freq_display_rx')),
- 'COL_STX_STRING' => strtoupper(trim($this->input->post('stx_string'))),
- 'COL_SRX_STRING' => strtoupper(trim($this->input->post('srx_string'))),
- 'COL_STX' => $stx_string,
- 'COL_SRX' => $srx_string,
- 'COL_CONTEST_ID' => $this->input->post('contest_name'),
- 'COL_QSL_VIA' => $this->input->post('qsl_via_callsign'),
- 'station_id' => $stationId,
- 'COL_STATION_CALLSIGN' => $stationCallsign,
- 'COL_OPERATOR' => $this->input->post('operator_callsign'),
- 'COL_STATE' =>$this->input->post('usa_state'),
- 'COL_CNTY' => $uscounty
- );
+ $data = array(
+ 'COL_TIME_ON' => $this->input->post('time_on'),
+ 'COL_TIME_OFF' => $this->input->post('time_off'),
+ 'COL_CALL' => strtoupper(trim($this->input->post('callsign'))),
+ 'COL_BAND' => $this->input->post('band'),
+ 'COL_BAND_RX' => $this->input->post('band_rx'),
+ 'COL_FREQ' => $this->parse_frequency($this->input->post('freq')),
+ 'COL_MODE' => $mode,
+ 'COL_SUBMODE' => $submode,
+ 'COL_RST_RCVD' => $this->input->post('rst_rcvd'),
+ 'COL_RST_SENT' => $this->input->post('rst_sent'),
+ 'COL_GRIDSQUARE' => strtoupper(trim($this->input->post('locator'))),
+ 'COL_VUCC_GRIDS' => strtoupper(preg_replace('/\s+/', '', $this->input->post('vucc_grids'))),
+ 'COL_DISTANCE' => $this->input->post('distance'),
+ 'COL_COMMENT' => $this->input->post('comment'),
+ 'COL_NAME' => $this->input->post('name'),
+ 'COL_COUNTRY' => $country,
+ 'COL_CONT' => $this->input->post('continent'),
+ 'COL_DXCC' => $this->input->post('dxcc_id'),
+ 'COL_CQZ' => $this->input->post('cqz'),
+ 'COL_SAT_NAME' => $this->input->post('sat_name'),
+ 'COL_SAT_MODE' => $this->input->post('sat_mode'),
+ 'COL_NOTES' => $this->input->post('notes'),
+ 'COL_QSLSDATE' => $qslsdate,
+ 'COL_QSLRDATE' => $qslrdate,
+ 'COL_QSL_SENT' => $qsl_sent,
+ 'COL_QSL_RCVD' => $qsl_rcvd,
+ 'COL_QSL_SENT_VIA' => $this->input->post('qsl_sent_method'),
+ 'COL_QSL_RCVD_VIA' => $this->input->post('qsl_rcvd_method'),
+ 'COL_EQSL_QSLSDATE' => $eqslsdate,
+ 'COL_EQSL_QSLRDATE' => $eqslrdate,
+ 'COL_EQSL_QSL_SENT' => $this->input->post('eqsl_sent'),
+ 'COL_EQSL_QSL_RCVD' => $this->input->post('eqsl_rcvd'),
+ 'COL_QSLMSG' => $this->input->post('qslmsg'),
+ 'COL_LOTW_QSLSDATE' => $lotwsdate,
+ 'COL_LOTW_QSLRDATE' => $lotwrdate,
+ 'COL_LOTW_QSL_SENT' => $this->input->post('lotw_sent'),
+ 'COL_LOTW_QSL_RCVD' => $this->input->post('lotw_rcvd'),
+ 'COL_IOTA' => $this->input->post('iota_ref'),
+ 'COL_SOTA_REF' => $this->input->post('sota_ref'),
+ 'COL_WWFF_REF' => $this->input->post('wwff_ref'),
+ 'COL_POTA_REF' => $this->input->post('pota_ref'),
+ 'COL_TX_PWR' => $txpower,
+ 'COL_SIG' => $this->input->post('sig'),
+ 'COL_SIG_INFO' => $this->input->post('sig_info'),
+ 'COL_DARC_DOK' => strtoupper($this->input->post('darc_dok')),
+ 'COL_QTH' => $this->input->post('qth'),
+ 'COL_PROP_MODE' => $this->input->post('prop_mode'),
+ 'COL_FREQ_RX' => $this->parse_frequency($this->input->post('freq_display_rx')),
+ 'COL_STX_STRING' => strtoupper(trim($this->input->post('stx_string'))),
+ 'COL_SRX_STRING' => strtoupper(trim($this->input->post('srx_string'))),
+ 'COL_STX' => $stx_string,
+ 'COL_SRX' => $srx_string,
+ 'COL_CONTEST_ID' => $this->input->post('contest_name'),
+ 'COL_QSL_VIA' => $this->input->post('qsl_via_callsign'),
+ 'station_id' => $stationId,
+ 'COL_STATION_CALLSIGN' => $stationCallsign,
+ 'COL_MY_IOTA' => $iotaRef,
+ 'COL_MY_SOTA_REF' => $sotaRef,
+ 'COL_MY_WWFF_REF' => $wwffRef,
+ 'COL_MY_POTA_REF' => $potaRef,
+ 'COL_OPERATOR' => $this->input->post('operator_callsign'),
+ 'COL_STATE' => $this->input->post('usa_state'),
+ 'COL_CNTY' => $uscounty
+ );
- if ($this->exists_hrdlog_credentials($data['station_id'])) {
- $data['COL_HRDLOG_QSO_UPLOAD_STATUS'] = 'M';
- }
+ if ($this->exists_hrdlog_credentials($data['station_id'])) {
+ $data['COL_HRDLOG_QSO_UPLOAD_STATUS'] = 'M';
+ }
- if ($this->exists_qrz_api_key($data['station_id'])) {
- $data['COL_QRZCOM_QSO_UPLOAD_STATUS'] = 'M';
- }
-
- $this->db->where('COL_PRIMARY_KEY', $this->input->post('id'));
- $this->db->update($this->config->item('table_name'), $data);
+ if ($this->exists_qrz_api_key($data['station_id'])) {
+ $data['COL_QRZCOM_QSO_UPLOAD_STATUS'] = 'M';
+ }
+ $this->db->where('COL_PRIMARY_KEY', $this->input->post('id'));
+ $this->db->update($this->config->item('table_name'), $data);
}
/* QSL received */
- function qsl_rcvd() {
+ function qsl_rcvd()
+ {
$data = array(
- 'COL_QSLRDATE' => date('Y-m-d H:i:s'),
- 'COL_QSL_RCVD' => "Y"
+ 'COL_QSLRDATE' => date('Y-m-d H:i:s'),
+ 'COL_QSL_RCVD' => "Y"
);
$this->db->where('COL_PRIMARY_KEY', $this->input->post('id'));
$this->db->update($this->config->item('table_name'), $data);
-
}
/* Return last 10 QSOs */
- function last_ten() {
- $CI =& get_instance();
+ function last_ten()
+ {
+ $CI = &get_instance();
$CI->load->model('logbooks_model');
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
@@ -1258,14 +1287,15 @@ class Logbook_model extends CI_Model {
}
/* Show custom number of qsos */
- function last_custom($num) {
- $CI =& get_instance();
+ function last_custom($num)
+ {
+ $CI = &get_instance();
$CI->load->model('logbooks_model');
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
- if(!empty($logbooks_locations_array)) {
+ if (!empty($logbooks_locations_array)) {
$this->db->select('COL_CALL, COL_BAND, COL_FREQ, COL_TIME_ON, COL_RST_RCVD, COL_RST_SENT, COL_MODE, COL_SUBMODE, COL_NAME, COL_COUNTRY, COL_DXCC, COL_PRIMARY_KEY, COL_SAT_NAME, COL_SRX, COL_SRX_STRING, COL_STX, COL_STX_STRING, COL_VUCC_GRIDS, COL_GRIDSQUARE, COL_MY_GRIDSQUARE, COL_OPERATOR, COL_IOTA, COL_WWFF_REF, COL_POTA_REF, COL_STATE, COL_CNTY, COL_DISTANCE, COL_SOTA_REF, COL_CONTEST_ID, dxcc_entities.end AS end');
- $this->db->join('dxcc_entities', $this->config->item('table_name').'.col_dxcc = dxcc_entities.adif', 'left outer');
+ $this->db->join('dxcc_entities', $this->config->item('table_name') . '.col_dxcc = dxcc_entities.adif', 'left outer');
$this->db->where_in('station_id', $logbooks_locations_array);
$this->db->order_by("COL_TIME_ON", "desc");
$this->db->limit($num);
@@ -1283,7 +1313,8 @@ class Logbook_model extends CI_Model {
* Usage: Callsign lookup data for the QSO panel and API/callsign_lookup
*
*/
- function call_lookup_result($callsign) {
+ function call_lookup_result($callsign)
+ {
$this->db->select('COL_CALL, COL_NAME, COL_QSL_VIA, COL_GRIDSQUARE, COL_QTH, COL_IOTA, COL_TIME_ON, COL_STATE, COL_CNTY');
$this->db->where('COL_CALL', $callsign);
$where = "COL_NAME != \"\"";
@@ -1294,8 +1325,7 @@ class Logbook_model extends CI_Model {
$this->db->limit(1);
$query = $this->db->get($this->config->item('table_name'));
$name = "";
- if ($query->num_rows() > 0)
- {
+ if ($query->num_rows() > 0) {
$data = $query->row();
}
@@ -1303,277 +1333,283 @@ class Logbook_model extends CI_Model {
}
/* Callsign QRA */
- function call_qra($callsign) {
- $this->db->select('COL_CALL, COL_GRIDSQUARE, COL_TIME_ON');
- $this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id');
- $this->db->where('COL_CALL', $callsign);
- $this->db->where('station_profile.user_id', $this->session->userdata('user_id'));
- $where = "COL_GRIDSQUARE != \"\"";
+ function call_qra($callsign)
+ {
+ $this->db->select('COL_CALL, COL_GRIDSQUARE, COL_TIME_ON');
+ $this->db->join('station_profile', 'station_profile.station_id = ' . $this->config->item('table_name') . '.station_id');
+ $this->db->where('COL_CALL', $callsign);
+ $this->db->where('station_profile.user_id', $this->session->userdata('user_id'));
+ $where = "COL_GRIDSQUARE != \"\"";
- $this->db->where($where);
+ $this->db->where($where);
- $this->db->order_by("COL_TIME_ON", "desc");
- $this->db->limit(1);
- $query = $this->db->get($this->config->item('table_name'));
- $callsign = "";
- if ($query->num_rows() > 0)
- {
- $data = $query->row();
- $callsign = strtoupper($data->COL_GRIDSQUARE);
- }
-
- return $callsign;
- }
-
- function call_name($callsign) {
- $this->db->select('COL_CALL, COL_NAME, COL_TIME_ON');
- $this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id');
- $this->db->where('COL_CALL', $callsign);
- $this->db->where('station_profile.user_id', $this->session->userdata('user_id'));
- $where = "COL_NAME != \"\"";
-
- $this->db->where($where);
-
- $this->db->order_by("COL_TIME_ON", "desc");
- $this->db->limit(1);
- $query = $this->db->get($this->config->item('table_name'));
- $name = "";
- if ($query->num_rows() > 0)
- {
- $data = $query->row();
- $name = $data->COL_NAME;
- }
-
- return $name;
- }
-
- function times_worked($callsign) {
- $logbooks_locations_array = $this->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
- $this->db->select('count(1) as TWKED');
- $this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id');
- $this->db->group_start();
- $this->db->where($this->config->item('table_name').'.COL_CALL', $callsign);
- $this->db->or_like($this->config->item('table_name').'.COL_CALL', '/'.$callsign,'before');
- $this->db->or_like($this->config->item('table_name').'.COL_CALL', $callsign.'/','after');
- $this->db->or_like($this->config->item('table_name').'.COL_CALL', '/'.$callsign.'/');
-
- $this->db->group_end();
- $this->db->where('station_profile.user_id', $this->session->userdata('user_id'));
- $this->db->where_in('station_profile.station_id', $logbooks_locations_array);
- $this->db->limit(1);
- $query = $this->db->get($this->config->item('table_name'));
- $name = "";
- if ($query->num_rows() > 0)
- {
- $data = $query->row();
- $times_worked = $data->TWKED;
- }
-
- return $times_worked;
- }
-
- function call_qslvia($callsign) {
- $this->db->select('COL_CALL, COL_QSL_VIA, COL_TIME_ON');
- $this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id');
- $this->db->where('COL_CALL', $callsign);
- $this->db->where('station_profile.user_id', $this->session->userdata('user_id'));
- $where = "COL_QSL_VIA != \"\"";
-
- $this->db->where($where);
-
- $this->db->order_by("COL_TIME_ON", "desc");
- $this->db->limit(1);
- $query = $this->db->get($this->config->item('table_name'));
- $qsl_via = "";
- if ($query->num_rows() > 0)
- {
- $data = $query->row();
- $qsl_via = $data->COL_QSL_VIA;
- }
-
- return $qsl_via;
- }
-
- function call_state($callsign) {
- $this->db->select('COL_CALL, COL_STATE');
- $this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id');
- $this->db->where('COL_CALL', $callsign);
- $this->db->where('station_profile.user_id', $this->session->userdata('user_id'));
- $where = "COL_STATE != \"\"";
-
- $this->db->where($where);
-
- $this->db->order_by("COL_TIME_ON", "desc");
- $this->db->limit(1);
- $query = $this->db->get($this->config->item('table_name'));
- $qsl_state = "";
- if ($query->num_rows() > 0)
- {
- $data = $query->row();
- $qsl_state = $data->COL_STATE;
- }
-
- return $qsl_state;
+ $this->db->order_by("COL_TIME_ON", "desc");
+ $this->db->limit(1);
+ $query = $this->db->get($this->config->item('table_name'));
+ $callsign = "";
+ if ($query->num_rows() > 0) {
+ $data = $query->row();
+ $callsign = strtoupper($data->COL_GRIDSQUARE);
}
- function call_us_county($callsign) {
- $this->db->select('COL_CALL, COL_CNTY');
- $this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id');
- $this->db->where('COL_CALL', $callsign);
- $this->db->where('station_profile.user_id', $this->session->userdata('user_id'));
- $where = "COL_CNTY != \"\"";
+ return $callsign;
+ }
- $this->db->where($where);
+ function call_name($callsign)
+ {
+ $this->db->select('COL_CALL, COL_NAME, COL_TIME_ON');
+ $this->db->join('station_profile', 'station_profile.station_id = ' . $this->config->item('table_name') . '.station_id');
+ $this->db->where('COL_CALL', $callsign);
+ $this->db->where('station_profile.user_id', $this->session->userdata('user_id'));
+ $where = "COL_NAME != \"\"";
- $this->db->order_by("COL_TIME_ON", "desc");
- $this->db->limit(1);
- $query = $this->db->get($this->config->item('table_name'));
- if ($query->num_rows() > 0)
- {
- $data = $query->row();
- $qsl_county = $data->COL_CNTY;
- $qsl_county = substr($qsl_county, (strpos($qsl_county, ',')+1));
- return $qsl_county;
- } else {
- return NULL;
- }
+ $this->db->where($where);
+
+ $this->db->order_by("COL_TIME_ON", "desc");
+ $this->db->limit(1);
+ $query = $this->db->get($this->config->item('table_name'));
+ $name = "";
+ if ($query->num_rows() > 0) {
+ $data = $query->row();
+ $name = $data->COL_NAME;
}
- function call_qth($callsign) {
- $this->db->select('COL_CALL, COL_QTH, COL_TIME_ON');
- $this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id');
- $this->db->where('COL_CALL', $callsign);
- $where = "COL_QTH != \"\"";
+ return $name;
+ }
- $this->db->where($where);
+ function times_worked($callsign)
+ {
+ $logbooks_locations_array = $this->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+ $this->db->select('count(1) as TWKED');
+ $this->db->join('station_profile', 'station_profile.station_id = ' . $this->config->item('table_name') . '.station_id');
+ $this->db->group_start();
+ $this->db->where($this->config->item('table_name') . '.COL_CALL', $callsign);
+ $this->db->or_like($this->config->item('table_name') . '.COL_CALL', '/' . $callsign, 'before');
+ $this->db->or_like($this->config->item('table_name') . '.COL_CALL', $callsign . '/', 'after');
+ $this->db->or_like($this->config->item('table_name') . '.COL_CALL', '/' . $callsign . '/');
- $this->db->order_by("COL_TIME_ON", "desc");
- $this->db->limit(1);
- $query = $this->db->get($this->config->item('table_name'));
- $name = "";
- if ($query->num_rows() > 0)
- {
- $data = $query->row();
- $name = $data->COL_QTH;
- }
+ $this->db->group_end();
+ $this->db->where('station_profile.user_id', $this->session->userdata('user_id'));
+ $this->db->where_in('station_profile.station_id', $logbooks_locations_array);
+ $this->db->limit(1);
+ $query = $this->db->get($this->config->item('table_name'));
+ $name = "";
+ if ($query->num_rows() > 0) {
+ $data = $query->row();
+ $times_worked = $data->TWKED;
+ }
- return $name;
- }
+ return $times_worked;
+ }
- function call_iota($callsign) {
- $this->db->select('COL_CALL, COL_IOTA, COL_TIME_ON');
- $this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id');
- $this->db->where('COL_CALL', $callsign);
- $where = "COL_IOTA != \"\"";
+ function call_qslvia($callsign)
+ {
+ $this->db->select('COL_CALL, COL_QSL_VIA, COL_TIME_ON');
+ $this->db->join('station_profile', 'station_profile.station_id = ' . $this->config->item('table_name') . '.station_id');
+ $this->db->where('COL_CALL', $callsign);
+ $this->db->where('station_profile.user_id', $this->session->userdata('user_id'));
+ $where = "COL_QSL_VIA != \"\"";
- $this->db->where($where);
+ $this->db->where($where);
- $this->db->order_by("COL_TIME_ON", "desc");
- $this->db->limit(1);
- $query = $this->db->get($this->config->item('table_name'));
- $name = "";
- if ($query->num_rows() > 0)
- {
- $data = $query->row();
- $name = $data->COL_IOTA;
- }
+ $this->db->order_by("COL_TIME_ON", "desc");
+ $this->db->limit(1);
+ $query = $this->db->get($this->config->item('table_name'));
+ $qsl_via = "";
+ if ($query->num_rows() > 0) {
+ $data = $query->row();
+ $qsl_via = $data->COL_QSL_VIA;
+ }
- return $name;
- }
+ return $qsl_via;
+ }
+
+ function call_state($callsign)
+ {
+ $this->db->select('COL_CALL, COL_STATE');
+ $this->db->join('station_profile', 'station_profile.station_id = ' . $this->config->item('table_name') . '.station_id');
+ $this->db->where('COL_CALL', $callsign);
+ $this->db->where('station_profile.user_id', $this->session->userdata('user_id'));
+ $where = "COL_STATE != \"\"";
+
+ $this->db->where($where);
+
+ $this->db->order_by("COL_TIME_ON", "desc");
+ $this->db->limit(1);
+ $query = $this->db->get($this->config->item('table_name'));
+ $qsl_state = "";
+ if ($query->num_rows() > 0) {
+ $data = $query->row();
+ $qsl_state = $data->COL_STATE;
+ }
+
+ return $qsl_state;
+ }
+
+ function call_us_county($callsign)
+ {
+ $this->db->select('COL_CALL, COL_CNTY');
+ $this->db->join('station_profile', 'station_profile.station_id = ' . $this->config->item('table_name') . '.station_id');
+ $this->db->where('COL_CALL', $callsign);
+ $this->db->where('station_profile.user_id', $this->session->userdata('user_id'));
+ $where = "COL_CNTY != \"\"";
+
+ $this->db->where($where);
+
+ $this->db->order_by("COL_TIME_ON", "desc");
+ $this->db->limit(1);
+ $query = $this->db->get($this->config->item('table_name'));
+ if ($query->num_rows() > 0) {
+ $data = $query->row();
+ $qsl_county = $data->COL_CNTY;
+ $qsl_county = substr($qsl_county, (strpos($qsl_county, ',') + 1));
+ return $qsl_county;
+ } else {
+ return NULL;
+ }
+ }
+
+ function call_qth($callsign)
+ {
+ $this->db->select('COL_CALL, COL_QTH, COL_TIME_ON');
+ $this->db->join('station_profile', 'station_profile.station_id = ' . $this->config->item('table_name') . '.station_id');
+ $this->db->where('COL_CALL', $callsign);
+ $where = "COL_QTH != \"\"";
+
+ $this->db->where($where);
+
+ $this->db->order_by("COL_TIME_ON", "desc");
+ $this->db->limit(1);
+ $query = $this->db->get($this->config->item('table_name'));
+ $name = "";
+ if ($query->num_rows() > 0) {
+ $data = $query->row();
+ $name = $data->COL_QTH;
+ }
+
+ return $name;
+ }
+
+ function call_iota($callsign)
+ {
+ $this->db->select('COL_CALL, COL_IOTA, COL_TIME_ON');
+ $this->db->join('station_profile', 'station_profile.station_id = ' . $this->config->item('table_name') . '.station_id');
+ $this->db->where('COL_CALL', $callsign);
+ $where = "COL_IOTA != \"\"";
+
+ $this->db->where($where);
+
+ $this->db->order_by("COL_TIME_ON", "desc");
+ $this->db->limit(1);
+ $query = $this->db->get($this->config->item('table_name'));
+ $name = "";
+ if ($query->num_rows() > 0) {
+ $data = $query->row();
+ $name = $data->COL_IOTA;
+ }
+
+ return $name;
+ }
/* Return QSO Info */
- function qso_info($id) {
- if ($this->logbook_model->check_qso_is_accessible($id)) {
- $this->db->where('COL_PRIMARY_KEY', $id);
+ function qso_info($id)
+ {
+ if ($this->logbook_model->check_qso_is_accessible($id)) {
+ $this->db->where('COL_PRIMARY_KEY', $id);
- return $this->db->get($this->config->item('table_name'));
- } else {
- return;
- }
- }
+ return $this->db->get($this->config->item('table_name'));
+ } else {
+ return;
+ }
+ }
// Set Paper to received
- function paperqsl_update($qso_id, $method) {
- if ($this->logbook_model->check_qso_is_accessible($qso_id)) {
+ function paperqsl_update($qso_id, $method)
+ {
+ if ($this->logbook_model->check_qso_is_accessible($qso_id)) {
- $data = array(
- 'COL_QSLRDATE' => date('Y-m-d H:i:s'),
- 'COL_QSL_RCVD' => 'Y',
- 'COL_QSL_RCVD_VIA' => $method
- );
+ $data = array(
+ 'COL_QSLRDATE' => date('Y-m-d H:i:s'),
+ 'COL_QSL_RCVD' => 'Y',
+ 'COL_QSL_RCVD_VIA' => $method
+ );
- $this->db->where('COL_PRIMARY_KEY', $qso_id);
+ $this->db->where('COL_PRIMARY_KEY', $qso_id);
- $this->db->update($this->config->item('table_name'), $data);
- } else {
- return;
- }
- }
+ $this->db->update($this->config->item('table_name'), $data);
+ } else {
+ return;
+ }
+ }
// Set Paper to sent
- function paperqsl_update_sent($qso_id, $method) {
- if ($this->logbook_model->check_qso_is_accessible($qso_id)) {
- if ($method != '') {
- $data = array(
- 'COL_QSLSDATE' => date('Y-m-d H:i:s'),
- 'COL_QSL_SENT' => 'Y',
- 'COL_QSL_SENT_VIA' => $method
- );
- } else {
- $data = array(
- 'COL_QSLSDATE' => date('Y-m-d H:i:s'),
- 'COL_QSL_SENT' => 'Y'
- );
- }
+ function paperqsl_update_sent($qso_id, $method)
+ {
+ if ($this->logbook_model->check_qso_is_accessible($qso_id)) {
+ if ($method != '') {
+ $data = array(
+ 'COL_QSLSDATE' => date('Y-m-d H:i:s'),
+ 'COL_QSL_SENT' => 'Y',
+ 'COL_QSL_SENT_VIA' => $method
+ );
+ } else {
+ $data = array(
+ 'COL_QSLSDATE' => date('Y-m-d H:i:s'),
+ 'COL_QSL_SENT' => 'Y'
+ );
+ }
- $this->db->where('COL_PRIMARY_KEY', $qso_id);
+ $this->db->where('COL_PRIMARY_KEY', $qso_id);
- $this->db->update($this->config->item('table_name'), $data);
- } else {
- return;
- }
- }
+ $this->db->update($this->config->item('table_name'), $data);
+ } else {
+ return;
+ }
+ }
// Set Paper to requested
- function paperqsl_requested($qso_id, $method) {
- if ($this->logbook_model->check_qso_is_accessible($qso_id)) {
+ function paperqsl_requested($qso_id, $method)
+ {
+ if ($this->logbook_model->check_qso_is_accessible($qso_id)) {
- $data = array(
- 'COL_QSLSDATE' => date('Y-m-d H:i:s'),
- 'COL_QSL_SENT' => 'R',
- 'COL_QSL_SENT_VIA' => $method
- );
+ $data = array(
+ 'COL_QSLSDATE' => date('Y-m-d H:i:s'),
+ 'COL_QSL_SENT' => 'R',
+ 'COL_QSL_SENT_VIA' => $method
+ );
- $this->db->where('COL_PRIMARY_KEY', $qso_id);
+ $this->db->where('COL_PRIMARY_KEY', $qso_id);
- $this->db->update($this->config->item('table_name'), $data);
- } else {
- return;
- }
+ $this->db->update($this->config->item('table_name'), $data);
+ } else {
+ return;
+ }
}
- function paperqsl_ignore($qso_id, $method) {
- if ($this->logbook_model->check_qso_is_accessible($qso_id)) {
+ function paperqsl_ignore($qso_id, $method)
+ {
+ if ($this->logbook_model->check_qso_is_accessible($qso_id)) {
- $data = array(
- 'COL_QSLSDATE' => date('Y-m-d H:i:s'),
- 'COL_QSL_SENT' => 'I'
- );
+ $data = array(
+ 'COL_QSLSDATE' => date('Y-m-d H:i:s'),
+ 'COL_QSL_SENT' => 'I'
+ );
- $this->db->where('COL_PRIMARY_KEY', $qso_id);
+ $this->db->where('COL_PRIMARY_KEY', $qso_id);
- $this->db->update($this->config->item('table_name'), $data);
- } else {
- return;
- }
+ $this->db->update($this->config->item('table_name'), $data);
+ } else {
+ return;
+ }
}
- function get_qsos_for_printing($station_id2 = null) {
+ function get_qsos_for_printing($station_id2 = null)
+ {
- $CI =& get_instance();
+ $CI = &get_instance();
$CI->load->model('stations');
$station_id = $CI->stations->find_active();
@@ -1595,29 +1631,30 @@ class Logbook_model extends CI_Model {
(select adif from dxcc_prefixes where (CASE WHEN COL_QSL_VIA != \'\' THEN COL_QSL_VIA ELSE COL_CALL END) like concat(dxcc_prefixes.`call`,\'%\') order by end limit 1) as ADIF,
(select entity from dxcc_prefixes where (CASE WHEN COL_QSL_VIA != \'\' THEN COL_QSL_VIA ELSE COL_CALL END) like concat(dxcc_prefixes.`call`,\'%\') order by end limit 1) as ENTITY,
(CASE WHEN COL_QSL_VIA != \'\' THEN COL_QSL_VIA ELSE COL_CALL END) AS COL_ROUTING
- FROM '.$this->config->item('table_name').' thcv
+ FROM ' . $this->config->item('table_name') . ' thcv
join station_profile on thcv.station_id = station_profile.station_id
WHERE
COL_QSL_SENT in (\'R\', \'Q\')';
if ($station_id2 == NULL) {
- $sql .= ' and thcv.station_id = ' . $station_id;
- } else if ($station_id2 != 'All') {
- $sql .= ' and thcv.station_id = ' . $station_id2;
- }
+ $sql .= ' and thcv.station_id = ' . $station_id;
+ } else if ($station_id2 != 'All') {
+ $sql .= ' and thcv.station_id = ' . $station_id2;
+ }
- // always filter user. this ensures that even if the station_id is from another user no inaccesible QSOs will be returned
- $sql .= ' and station_profile.user_id = ' . $this->session->userdata('user_id');
+ // always filter user. this ensures that even if the station_id is from another user no inaccesible QSOs will be returned
+ $sql .= ' and station_profile.user_id = ' . $this->session->userdata('user_id');
- $sql .= ' ORDER BY ADIF, COL_ROUTING';
+ $sql .= ' ORDER BY ADIF, COL_ROUTING';
$query = $this->db->query($sql);
return $query;
}
- function get_qsos($num, $offset, $StationLocationsArray = null) {
- if($StationLocationsArray == null) {
- $CI =& get_instance();
+ function get_qsos($num, $offset, $StationLocationsArray = null)
+ {
+ if ($StationLocationsArray == null) {
+ $CI = &get_instance();
$CI->load->model('logbooks_model');
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
} else {
@@ -1628,18 +1665,18 @@ class Logbook_model extends CI_Model {
return array();
}
- $this->db->select($this->config->item('table_name').'.*, station_profile.*, dxcc_entities.*, lotw_users.callsign, lotw_users.lastupload');
+ $this->db->select($this->config->item('table_name') . '.*, station_profile.*, dxcc_entities.*, lotw_users.callsign, lotw_users.lastupload');
$this->db->from($this->config->item('table_name'));
// remove anything thats duplicated based on COL_PRIMARY_KEY
- $this->db->distinct(''.$this->config->item('table_name').'.COL_PRIMARY_KEY');
+ $this->db->distinct('' . $this->config->item('table_name') . '.COL_PRIMARY_KEY');
- $this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id');
- $this->db->join('dxcc_entities', $this->config->item('table_name').'.col_dxcc = dxcc_entities.adif', 'left');
- $this->db->join('lotw_users', 'lotw_users.callsign = '.$this->config->item('table_name').'.col_call', 'left outer');
+ $this->db->join('station_profile', 'station_profile.station_id = ' . $this->config->item('table_name') . '.station_id');
+ $this->db->join('dxcc_entities', $this->config->item('table_name') . '.col_dxcc = dxcc_entities.adif', 'left');
+ $this->db->join('lotw_users', 'lotw_users.callsign = ' . $this->config->item('table_name') . '.col_call', 'left outer');
$this->db->where_in('station_profile.station_id', $logbooks_locations_array);
- $this->db->order_by(''.$this->config->item('table_name').'.COL_TIME_ON', "desc");
- $this->db->order_by(''.$this->config->item('table_name').'.COL_PRIMARY_KEY', "desc");
+ $this->db->order_by('' . $this->config->item('table_name') . '.COL_TIME_ON', "desc");
+ $this->db->order_by('' . $this->config->item('table_name') . '.COL_PRIMARY_KEY', "desc");
$this->db->limit($num);
$this->db->offset($offset);
@@ -1647,72 +1684,76 @@ class Logbook_model extends CI_Model {
return $this->db->get();
}
- function get_qso($id, $trusted = false) {
- if ($trusted || ($this->logbook_model->check_qso_is_accessible($id))) {
- $this->db->select($this->config->item('table_name').'.*, station_profile.*, dxcc_entities.*, coalesce(dxcc_entities_2.name, "- NONE -") as station_country, dxcc_entities_2.end as station_end, eQSL_images.image_file as eqsl_image_file, lotw_users.callsign as lotwuser, lotw_users.lastupload');
- $this->db->from($this->config->item('table_name'));
- $this->db->join('dxcc_entities', $this->config->item('table_name').'.col_dxcc = dxcc_entities.adif', 'left');
- $this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id', 'left');
- $this->db->join('dxcc_entities as dxcc_entities_2', 'station_profile.station_dxcc = dxcc_entities_2.adif', 'left outer');
- $this->db->join('eQSL_images', $this->config->item('table_name').'.COL_PRIMARY_KEY = eQSL_images.qso_id', 'left outer');
- $this->db->join('lotw_users', $this->config->item('table_name').'.COL_CALL = lotw_users.callsign', 'left outer');
- $this->db->where('COL_PRIMARY_KEY', $id);
+ function get_qso($id, $trusted = false)
+ {
+ if ($trusted || ($this->logbook_model->check_qso_is_accessible($id))) {
+ $this->db->select($this->config->item('table_name') . '.*, station_profile.*, dxcc_entities.*, coalesce(dxcc_entities_2.name, "- NONE -") as station_country, dxcc_entities_2.end as station_end, eQSL_images.image_file as eqsl_image_file, lotw_users.callsign as lotwuser, lotw_users.lastupload');
+ $this->db->from($this->config->item('table_name'));
+ $this->db->join('dxcc_entities', $this->config->item('table_name') . '.col_dxcc = dxcc_entities.adif', 'left');
+ $this->db->join('station_profile', 'station_profile.station_id = ' . $this->config->item('table_name') . '.station_id', 'left');
+ $this->db->join('dxcc_entities as dxcc_entities_2', 'station_profile.station_dxcc = dxcc_entities_2.adif', 'left outer');
+ $this->db->join('eQSL_images', $this->config->item('table_name') . '.COL_PRIMARY_KEY = eQSL_images.qso_id', 'left outer');
+ $this->db->join('lotw_users', $this->config->item('table_name') . '.COL_CALL = lotw_users.callsign', 'left outer');
+ $this->db->where('COL_PRIMARY_KEY', $id);
- return $this->db->get();
- } else {
- return;
- }
+ return $this->db->get();
+ } else {
+ return;
+ }
}
- /*
+ /*
* Function returns the QSOs from the logbook, which have not been either marked as uploaded to hrdlog, or has been modified with an edit
*/
- function get_hrdlog_qsos($station_id){
- $sql = 'select *, dxcc_entities.name as station_country from ' . $this->config->item('table_name') . ' thcv ' .
- ' left join station_profile on thcv.station_id = station_profile.station_id' .
- ' left outer join dxcc_entities on thcv.col_my_dxcc = dxcc_entities.adif' .
- ' where thcv.station_id = ' . $station_id .
- ' and (COL_HRDLOG_QSO_UPLOAD_STATUS is NULL
+ function get_hrdlog_qsos($station_id)
+ {
+ $sql = 'select *, dxcc_entities.name as station_country from ' . $this->config->item('table_name') . ' thcv ' .
+ ' left join station_profile on thcv.station_id = station_profile.station_id' .
+ ' left outer join dxcc_entities on thcv.col_my_dxcc = dxcc_entities.adif' .
+ ' where thcv.station_id = ' . $station_id .
+ ' and (COL_HRDLOG_QSO_UPLOAD_STATUS is NULL
or COL_HRDLOG_QSO_UPLOAD_STATUS = ""
or COL_HRDLOG_QSO_UPLOAD_STATUS = "M"
or COL_HRDLOG_QSO_UPLOAD_STATUS = "N")';
- $query = $this->db->query($sql);
- return $query;
- }
+ $query = $this->db->query($sql);
+ return $query;
+ }
- /*
+ /*
* 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, $trusted = false){
- $CI =& get_instance();
- $CI->load->model('stations');
- if ((!$trusted) && (!$CI->stations->check_station_is_accessible($station_id))) {
- return;
- }
- $sql = 'select *, dxcc_entities.name as station_country from ' . $this->config->item('table_name') . ' thcv ' .
- ' left join station_profile on thcv.station_id = station_profile.station_id' .
- ' left outer join dxcc_entities on thcv.col_my_dxcc = dxcc_entities.adif' .
- ' where thcv.station_id = ' . $station_id .
- ' and (COL_QRZCOM_QSO_UPLOAD_STATUS is NULL
+ function get_qrz_qsos($station_id, $trusted = false)
+ {
+ $CI = &get_instance();
+ $CI->load->model('stations');
+ if ((!$trusted) && (!$CI->stations->check_station_is_accessible($station_id))) {
+ return;
+ }
+ $sql = 'select *, dxcc_entities.name as station_country from ' . $this->config->item('table_name') . ' thcv ' .
+ ' left join station_profile on thcv.station_id = station_profile.station_id' .
+ ' left outer join dxcc_entities on thcv.col_my_dxcc = dxcc_entities.adif' .
+ ' 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;
+ $query = $this->db->query($sql);
+ return $query;
}
- /*
+ /*
* Function returns the QSOs from the logbook, which have not been either marked as uploaded to webADIF
*/
- function get_webadif_qsos($station_id,$from = null, $to = null,$trusted = false){
- $CI =& get_instance();
- $CI->load->model('stations');
- if ((!$trusted) && (!$CI->stations->check_station_is_accessible($station_id))) {
- return;
- }
- $sql = "
+ function get_webadif_qsos($station_id, $from = null, $to = null, $trusted = false)
+ {
+ $CI = &get_instance();
+ $CI->load->model('stations');
+ if ((!$trusted) && (!$CI->stations->check_station_is_accessible($station_id))) {
+ return;
+ }
+ $sql = "
SELECT qsos.*, station_profile.*, dxcc_entities.name as station_country
FROM %s qsos
INNER JOIN station_profile ON qsos.station_id = station_profile.station_id
@@ -1722,118 +1763,120 @@ class Logbook_model extends CI_Model {
AND qsos.COL_SAT_NAME = 'QO-100'
AND webadif.upload_date IS NULL
";
- $sql = sprintf(
- $sql,
- $this->config->item('table_name'),
- $station_id
- );
- if ($from) {
- $from = DateTime::createFromFormat('d/m/Y', $from);
- $from = $from->format('Y-m-d');
+ $sql = sprintf(
+ $sql,
+ $this->config->item('table_name'),
+ $station_id
+ );
+ if ($from) {
+ $from = DateTime::createFromFormat('d/m/Y', $from);
+ $from = $from->format('Y-m-d');
- $sql.=" AND qsos.COL_TIME_ON >= %s";
- $sql=sprintf(
- $sql,
- $this->db->escape($from)
- );
- }
- if ($to) {
- $to = DateTime::createFromFormat('d/m/Y', $to);
- $to = $to->format('Y-m-d');
+ $sql .= " AND qsos.COL_TIME_ON >= %s";
+ $sql = sprintf(
+ $sql,
+ $this->db->escape($from)
+ );
+ }
+ if ($to) {
+ $to = DateTime::createFromFormat('d/m/Y', $to);
+ $to = $to->format('Y-m-d');
- $sql.=" AND qsos.COL_TIME_ON <= %s";
- $sql=sprintf(
- $sql,
- $this->db->escape($to)
- );
- }
-
- return $this->db->query($sql);
+ $sql .= " AND qsos.COL_TIME_ON <= %s";
+ $sql = sprintf(
+ $sql,
+ $this->db->escape($to)
+ );
}
- /*
- * Function returns all the station_id's with QRZ API Key's
- */
- function get_station_id_with_qrz_api() {
- $sql = 'select station_id, qrzapikey from station_profile
- where coalesce(qrzapikey, "") <> ""';
-
- $query = $this->db->query($sql);
-
- $result = $query->result();
-
- if ($result) {
- return $result;
- }
- else {
- return null;
- }
+ return $this->db->query($sql);
}
- /*
+ /*
+ * Function returns all the station_id's with QRZ API Key's
+ */
+ function get_station_id_with_qrz_api()
+ {
+ $sql = 'select station_id, qrzapikey from station_profile
+ where coalesce(qrzapikey, "") <> ""';
+
+ $query = $this->db->query($sql);
+
+ $result = $query->result();
+
+ if ($result) {
+ return $result;
+ } else {
+ return null;
+ }
+ }
+
+ /*
* Function returns all the station_id's with HRDLOG Code
*/
- function get_station_id_with_hrdlog_code() {
- $sql = 'SELECT station_id, hrdlog_username, hrdlog_code
+ function get_station_id_with_hrdlog_code()
+ {
+ $sql = 'SELECT station_id, hrdlog_username, hrdlog_code
FROM station_profile
WHERE coalesce(hrdlog_username, "") <> ""
AND coalesce(hrdlog_code, "") <> ""';
- $query = $this->db->query($sql);
+ $query = $this->db->query($sql);
- $result = $query->result();
+ $result = $query->result();
- if ($result) {
- return $result;
- }
- else {
- return null;
- }
+ if ($result) {
+ return $result;
+ } else {
+ return null;
}
+ }
- /*
+ /*
* Function returns all the station_id's with QRZ API Key's
*/
- function get_qrz_apikeys() {
- $sql = 'select distinct qrzapikey, user_id from station_profile
+ function get_qrz_apikeys()
+ {
+ $sql = 'select distinct qrzapikey, user_id from station_profile
where coalesce(qrzapikey, "") <> "" order by qrzapikey';
- $query = $this->db->query($sql);
+ $query = $this->db->query($sql);
- $result = $query->result();
+ $result = $query->result();
- if ($result) {
- return $result;
- }
- else {
- return null;
- }
+ if ($result) {
+ return $result;
+ } else {
+ return null;
}
+ }
- /*
+ /*
* Function returns all the station_id's with QRZ API Key's
*/
- function get_station_id_with_webadif_api() {
- $sql = "
+ function get_station_id_with_webadif_api()
+ {
+ $sql = "
SELECT station_id, webadifapikey, webadifapiurl
FROM station_profile
WHERE COALESCE(webadifapikey, '') <> ''
AND COALESCE(webadifapiurl, '') <> ''
";
- $query = $this->db->query($sql);
- $result = $query->result();
- if ($result) {
- return $result;
- } else {
- return null;
- }
- }
+ $query = $this->db->query($sql);
+ $result = $query->result();
+ if ($result) {
+ return $result;
+ } else {
+ return null;
+ }
+ }
- function get_last_qsos($num, $StationLocationsArray = null) {
+ function get_last_qsos($num, $StationLocationsArray = null)
+ {
- if($StationLocationsArray == null) {
- $CI =& get_instance();
+ if ($StationLocationsArray == null) {
+ $CI = &get_instance();
$CI->load->model('logbooks_model');
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
} else {
@@ -1841,10 +1884,10 @@ class Logbook_model extends CI_Model {
}
if ($logbooks_locations_array) {
- $location_list = "'".implode("','",$logbooks_locations_array)."'";
+ $location_list = "'" . implode("','", $logbooks_locations_array) . "'";
- $sql = "SELECT * FROM ( select * from " . $this->config->item('table_name'). "
- WHERE station_id IN(". $location_list .")
+ $sql = "SELECT * FROM ( select * from " . $this->config->item('table_name') . "
+ WHERE station_id IN(" . $location_list . ")
order by col_time_on desc, col_primary_key desc
limit " . $num .
") hrd
@@ -1858,71 +1901,71 @@ class Logbook_model extends CI_Model {
} else {
return null;
}
-
}
- function check_if_callsign_cnfmd_in_logbook($callsign, $StationLocationsArray = null, $band = null) {
- $user_default_confirmation = $this->session->userdata('user_default_confirmation');
-
- if($StationLocationsArray == null) {
- $CI =& get_instance();
- $CI->load->model('logbooks_model');
- $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
- } else {
- $logbooks_locations_array = $StationLocationsArray;
- }
-
- $extrawhere='';
- if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'Q') !== false) {
- $extrawhere="COL_QSL_RCVD='Y'";
- }
- if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'L') !== false) {
- if ($extrawhere!='') {
- $extrawhere.=" OR";
- }
- $extrawhere.=" COL_LOTW_QSL_RCVD='Y'";
- }
- if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'E') !== false) {
- if ($extrawhere!='') {
- $extrawhere.=" OR";
- }
- $extrawhere.=" COL_EQSL_QSL_RCVD='Y'";
- }
-
- if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'Z') !== false) {
- if ($extrawhere!='') {
- $extrawhere.=" OR";
- }
- $extrawhere.=" COL_QRZCOM_QSO_DOWNLOAD_STATUS='Y'";
- }
-
-
- $this->db->select('COL_CALL');
- $this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->where('COL_CALL', $callsign);
-
- if($band != null && $band != 'SAT') {
- $this->db->where('COL_BAND', $band);
- } else if($band == 'SAT') {
- // Where col_sat_name is not empty
- $this->db->where('COL_SAT_NAME !=', '');
- }
- if ($extrawhere != '') {
- $this->db->where('('.$extrawhere.')');
- } else {
- $this->db->where("1=0");
- }
- $this->db->limit('2');
- $query = $this->db->get($this->config->item('table_name'));
-
- return $query->num_rows();
+ function check_if_callsign_cnfmd_in_logbook($callsign, $StationLocationsArray = null, $band = null)
+ {
+ $user_default_confirmation = $this->session->userdata('user_default_confirmation');
+ if ($StationLocationsArray == null) {
+ $CI = &get_instance();
+ $CI->load->model('logbooks_model');
+ $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+ } else {
+ $logbooks_locations_array = $StationLocationsArray;
}
-function check_if_callsign_worked_in_logbook($callsign, $StationLocationsArray = null, $band = null) {
+ $extrawhere = '';
+ if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'Q') !== false) {
+ $extrawhere = "COL_QSL_RCVD='Y'";
+ }
+ if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'L') !== false) {
+ if ($extrawhere != '') {
+ $extrawhere .= " OR";
+ }
+ $extrawhere .= " COL_LOTW_QSL_RCVD='Y'";
+ }
+ if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'E') !== false) {
+ if ($extrawhere != '') {
+ $extrawhere .= " OR";
+ }
+ $extrawhere .= " COL_EQSL_QSL_RCVD='Y'";
+ }
- if($StationLocationsArray == null) {
- $CI =& get_instance();
+ if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'Z') !== false) {
+ if ($extrawhere != '') {
+ $extrawhere .= " OR";
+ }
+ $extrawhere .= " COL_QRZCOM_QSO_DOWNLOAD_STATUS='Y'";
+ }
+
+
+ $this->db->select('COL_CALL');
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->where('COL_CALL', $callsign);
+
+ if ($band != null && $band != 'SAT') {
+ $this->db->where('COL_BAND', $band);
+ } else if ($band == 'SAT') {
+ // Where col_sat_name is not empty
+ $this->db->where('COL_SAT_NAME !=', '');
+ }
+ if ($extrawhere != '') {
+ $this->db->where('(' . $extrawhere . ')');
+ } else {
+ $this->db->where("1=0");
+ }
+ $this->db->limit('2');
+ $query = $this->db->get($this->config->item('table_name'));
+
+ return $query->num_rows();
+ }
+
+ function check_if_callsign_worked_in_logbook($callsign, $StationLocationsArray = null, $band = null)
+ {
+
+ if ($StationLocationsArray == null) {
+ $CI = &get_instance();
$CI->load->model('logbooks_model');
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
} else {
@@ -1933,9 +1976,9 @@ function check_if_callsign_worked_in_logbook($callsign, $StationLocationsArray =
$this->db->where_in('station_id', $logbooks_locations_array);
$this->db->where('COL_CALL', $callsign);
- if($band != null && $band != 'SAT') {
+ if ($band != null && $band != 'SAT') {
$this->db->where('COL_BAND', $band);
- } else if($band == 'SAT') {
+ } else if ($band == 'SAT') {
// Where col_sat_name is not empty
$this->db->where('COL_SAT_NAME !=', '');
}
@@ -1943,13 +1986,13 @@ function check_if_callsign_worked_in_logbook($callsign, $StationLocationsArray =
$query = $this->db->get($this->config->item('table_name'));
return $query->num_rows();
-
}
- function check_if_grid_worked_in_logbook($grid, $StationLocationsArray = null, $band = null) {
+ function check_if_grid_worked_in_logbook($grid, $StationLocationsArray = null, $band = null)
+ {
- if($StationLocationsArray == null) {
- $CI =& get_instance();
+ if ($StationLocationsArray == null) {
+ $CI = &get_instance();
$CI->load->model('logbooks_model');
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
} else {
@@ -1963,9 +2006,9 @@ function check_if_callsign_worked_in_logbook($callsign, $StationLocationsArray =
$this->db->or_like('COL_VUCC_GRIDS', $grid);
$this->db->group_end();
- if($band != null && $band != 'SAT') {
+ if ($band != null && $band != 'SAT') {
$this->db->where('COL_BAND', $band);
- } else if($band == 'SAT') {
+ } else if ($band == 'SAT') {
// Where col_sat_name is not empty
$this->db->where('COL_SAT_NAME !=', '');
}
@@ -1974,60 +2017,60 @@ function check_if_callsign_worked_in_logbook($callsign, $StationLocationsArray =
$query = $this->db->get($this->config->item('table_name'));
return $query->num_rows();
-
}
- /* Get all QSOs with a valid grid for use in the KML export */
- function kml_get_all_qsos($band, $mode, $dxcc, $cqz, $propagation, $fromdate, $todate) {
- $CI =& get_instance();
- $CI->load->model('logbooks_model');
- $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+ /* Get all QSOs with a valid grid for use in the KML export */
+ function kml_get_all_qsos($band, $mode, $dxcc, $cqz, $propagation, $fromdate, $todate)
+ {
+ $CI = &get_instance();
+ $CI->load->model('logbooks_model');
+ $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
- $this->db->select('COL_CALL, COL_BAND, COL_TIME_ON, COL_RST_RCVD, COL_RST_SENT, COL_MODE, COL_SUBMODE, COL_NAME, COL_COUNTRY, COL_PRIMARY_KEY, COL_SAT_NAME, COL_GRIDSQUARE');
- $this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->where("coalesce(COL_GRIDSQUARE, '') <> ''");
+ $this->db->select('COL_CALL, COL_BAND, COL_TIME_ON, COL_RST_RCVD, COL_RST_SENT, COL_MODE, COL_SUBMODE, COL_NAME, COL_COUNTRY, COL_PRIMARY_KEY, COL_SAT_NAME, COL_GRIDSQUARE');
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->where("coalesce(COL_GRIDSQUARE, '') <> ''");
- if ($band != 'All') {
- if ($band == 'SAT') {
- $this->db->where('COL_PROP_MODE = \'' . $band . '\'');
- }
- else {
- $this->db->where('COL_PROP_MODE != \'SAT\'');
- $this->db->where('COL_BAND = \'' . $band .'\'');
- }
- }
-
- if ($mode != 'All') {
- $this->db->where('COL_MODE = \'' . $mode . '\'');
- }
-
- if ($dxcc != 'All') {
- $this->db->where('COL_DXCC = ' . $dxcc);
- }
-
- if ($cqz != 'All') {
- $this->db->where('COL_CQZ = ' . $cqz);
- }
-
- if ($propagation != 'All') {
- $this->db->where('COL_PROP_MODE = ' . $propagation);
- }
-
- // If date is set, we add it to the where-statement
- if ($fromdate != "") {
- $this->db->where("date(".$this->config->item('table_name').".COL_TIME_ON) >= '".$fromdate."'");
- }
- if ($todate != "") {
- $this->db->where("date(".$this->config->item('table_name').".COL_TIME_ON) <= '".$todate."'");
- }
-
- $query = $this->db->get($this->config->item('table_name'));
- return $query;
+ if ($band != 'All') {
+ if ($band == 'SAT') {
+ $this->db->where('COL_PROP_MODE = \'' . $band . '\'');
+ } else {
+ $this->db->where('COL_PROP_MODE != \'SAT\'');
+ $this->db->where('COL_BAND = \'' . $band . '\'');
+ }
}
- function totals_year() {
+ if ($mode != 'All') {
+ $this->db->where('COL_MODE = \'' . $mode . '\'');
+ }
- $CI =& get_instance();
+ if ($dxcc != 'All') {
+ $this->db->where('COL_DXCC = ' . $dxcc);
+ }
+
+ if ($cqz != 'All') {
+ $this->db->where('COL_CQZ = ' . $cqz);
+ }
+
+ if ($propagation != 'All') {
+ $this->db->where('COL_PROP_MODE = ' . $propagation);
+ }
+
+ // If date is set, we add it to the where-statement
+ if ($fromdate != "") {
+ $this->db->where("date(" . $this->config->item('table_name') . ".COL_TIME_ON) >= '" . $fromdate . "'");
+ }
+ if ($todate != "") {
+ $this->db->where("date(" . $this->config->item('table_name') . ".COL_TIME_ON) <= '" . $todate . "'");
+ }
+
+ $query = $this->db->get($this->config->item('table_name'));
+ return $query;
+ }
+
+ function totals_year()
+ {
+
+ $CI = &get_instance();
$CI->load->model('logbooks_model');
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
@@ -2045,464 +2088,463 @@ function check_if_callsign_worked_in_logbook($callsign, $StationLocationsArray =
return $query;
}
- /* Return total number of qsos */
- function total_qsos($StationLocationsArray = null, $api_key = null) {
- if($StationLocationsArray == null) {
- $CI =& get_instance();
- $CI->load->model('logbooks_model');
- if ($api_key != null) {
- $CI->load->model('api_model');
- if (strpos($this->api_model->access($api_key), 'r') !== false) {
- $this->api_model->update_last_used($api_key);
- $user_id = $this->api_model->key_userid($api_key);
- $active_station_logbook = $CI->logbooks_model->find_active_station_logbook_from_userid($user_id);
- $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($active_station_logbook);
- } else {
- $logbooks_locations_array = [];
- }
+ /* Return total number of qsos */
+ function total_qsos($StationLocationsArray = null, $api_key = null)
+ {
+ if ($StationLocationsArray == null) {
+ $CI = &get_instance();
+ $CI->load->model('logbooks_model');
+ if ($api_key != null) {
+ $CI->load->model('api_model');
+ if (strpos($this->api_model->access($api_key), 'r') !== false) {
+ $this->api_model->update_last_used($api_key);
+ $user_id = $this->api_model->key_userid($api_key);
+ $active_station_logbook = $CI->logbooks_model->find_active_station_logbook_from_userid($user_id);
+ $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($active_station_logbook);
} else {
- $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+ $logbooks_locations_array = [];
}
} else {
- $logbooks_locations_array = $StationLocationsArray;
- }
-
- if ($logbooks_locations_array) {
- $this->db->select('COUNT( * ) as count', FALSE);
- $this->db->where_in('station_id', $logbooks_locations_array);
- $query = $this->db->get($this->config->item('table_name'));
-
- if ($query->num_rows() > 0)
- {
- foreach ($query->result() as $row)
- {
- return $row->count;
- }
- }
- } else {
- return null;
- }
- }
-
- /* Return number of QSOs had today */
- function todays_qsos($StationLocationsArray = null, $api_key = null) {
- if($StationLocationsArray == null) {
- $CI =& get_instance();
- $CI->load->model('logbooks_model');
- if ($api_key != null) {
- $CI->load->model('api_model');
- if (strpos($this->api_model->access($api_key), 'r') !== false) {
- $this->api_model->update_last_used($api_key);
- $user_id = $this->api_model->key_userid($api_key);
- $active_station_logbook = $CI->logbooks_model->find_active_station_logbook_from_userid($user_id);
- $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($active_station_logbook);
- } else {
- $logbooks_locations_array = [];
- }
- } else {
- $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
- }
- } else {
- $logbooks_locations_array = $StationLocationsArray;
- }
-
- if ($logbooks_locations_array) {
- $morning = date('Y-m-d 00:00:00');
- $night = date('Y-m-d 23:59:59');
-
- $this->db->select('COUNT( * ) as count', FALSE);
- $this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->where('COL_TIME_ON >=', $morning);
- $this->db->where('COL_TIME_ON <=', $night);
- $query = $this->db->get($this->config->item('table_name'));
-
- if ($query->num_rows() > 0)
- {
- foreach ($query->result() as $row)
- {
- return $row->count;
- }
- }
- } else {
- return null;
- }
-
- }
-
- /* Return QSOs over a period of days */
- function map_week_qsos($start, $end) {
- $CI =& get_instance();
- $CI->load->model('logbooks_model');
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
-
- $this->db->where("COL_TIME_ON BETWEEN '".$start."' AND '".$end."'");
- $this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->order_by("COL_TIME_ON", "ASC");
- $query = $this->db->get($this->config->item('table_name'));
-
- return $query;
+ }
+ } else {
+ $logbooks_locations_array = $StationLocationsArray;
}
- /* used to return custom qsos requires start, end date plus a band */
- function map_custom_qsos($start, $end, $band, $mode, $propagation) {
- $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) {
+ $this->db->select('COUNT( * ) as count', FALSE);
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $query = $this->db->get($this->config->item('table_name'));
+
+ if ($query->num_rows() > 0) {
+ foreach ($query->result() as $row) {
+ return $row->count;
+ }
+ }
+ } else {
+ return null;
+ }
+ }
+
+ /* Return number of QSOs had today */
+ function todays_qsos($StationLocationsArray = null, $api_key = null)
+ {
+ if ($StationLocationsArray == null) {
+ $CI = &get_instance();
+ $CI->load->model('logbooks_model');
+ if ($api_key != null) {
+ $CI->load->model('api_model');
+ if (strpos($this->api_model->access($api_key), 'r') !== false) {
+ $this->api_model->update_last_used($api_key);
+ $user_id = $this->api_model->key_userid($api_key);
+ $active_station_logbook = $CI->logbooks_model->find_active_station_logbook_from_userid($user_id);
+ $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($active_station_logbook);
+ } else {
+ $logbooks_locations_array = [];
+ }
+ } else {
+ $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+ }
+ } else {
+ $logbooks_locations_array = $StationLocationsArray;
+ }
+
+ if ($logbooks_locations_array) {
+ $morning = date('Y-m-d 00:00:00');
+ $night = date('Y-m-d 23:59:59');
+
+ $this->db->select('COUNT( * ) as count', FALSE);
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->where('COL_TIME_ON >=', $morning);
+ $this->db->where('COL_TIME_ON <=', $night);
+ $query = $this->db->get($this->config->item('table_name'));
+
+ if ($query->num_rows() > 0) {
+ foreach ($query->result() as $row) {
+ return $row->count;
+ }
+ }
+ } else {
+ return null;
+ }
+ }
+
+ /* Return QSOs over a period of days */
+ function map_week_qsos($start, $end)
+ {
+ $CI = &get_instance();
+ $CI->load->model('logbooks_model');
+ $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+
+ $this->db->where("COL_TIME_ON BETWEEN '" . $start . "' AND '" . $end . "'");
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->order_by("COL_TIME_ON", "ASC");
+ $query = $this->db->get($this->config->item('table_name'));
+
+ return $query;
+ }
+
+ /* used to return custom qsos requires start, end date plus a band */
+ function map_custom_qsos($start, $end, $band, $mode, $propagation)
+ {
+ $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;
}
- $this->db->join('dxcc_entities', $this->config->item('table_name').'.col_dxcc = dxcc_entities.adif', 'left');
- $this->db->where("COL_TIME_ON BETWEEN '".$start." 00:00:00' AND '".$end." 23:59:59'");
- $this->db->where_in("station_id", $logbooks_locations_array);
+ $this->db->join('dxcc_entities', $this->config->item('table_name') . '.col_dxcc = dxcc_entities.adif', 'left');
+ $this->db->where("COL_TIME_ON BETWEEN '" . $start . " 00:00:00' AND '" . $end . " 23:59:59'");
+ $this->db->where_in("station_id", $logbooks_locations_array);
- if($band != "All" && $band != "SAT") {
- $this->db->where("COL_BAND", $band);
- }
+ if ($band != "All" && $band != "SAT") {
+ $this->db->where("COL_BAND", $band);
+ }
- if ($band == "SAT") {
- $this->db->where("COL_PROP_MODE", "SAT");
- }
+ if ($band == "SAT") {
+ $this->db->where("COL_PROP_MODE", "SAT");
+ }
- if ($mode != 'All') {
- $this->db->group_start();
- $this->db->where("COL_MODE", $mode);
- $this->db->or_where("COL_SUBMODE", $mode);
- $this->db->group_end();
- }
+ if ($mode != 'All') {
+ $this->db->group_start();
+ $this->db->where("COL_MODE", $mode);
+ $this->db->or_where("COL_SUBMODE", $mode);
+ $this->db->group_end();
+ }
- if ($propagation != 'All') {
- $this->db->where("COL_PROP_MODE", $propagation);
- }
+ if ($propagation != 'All') {
+ $this->db->where("COL_PROP_MODE", $propagation);
+ }
- $this->db->order_by("COL_TIME_ON", "ASC");
- $query = $this->db->get($this->config->item('table_name'));
+ $this->db->order_by("COL_TIME_ON", "ASC");
+ $query = $this->db->get($this->config->item('table_name'));
- return $query;
+ return $query;
}
- /* Returns QSOs for the date sent eg 2011-09-30 */
- function map_day($date) {
- $CI =& get_instance();
- $CI->load->model('logbooks_model');
+ /* Returns QSOs for the date sent eg 2011-09-30 */
+ function map_day($date)
+ {
+ $CI = &get_instance();
+ $CI->load->model('logbooks_model');
+ $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+
+ $start = $date . " 00:00:00";
+ $end = $date . " 23:59:59";
+
+ $this->db->where("COL_TIME_ON BETWEEN '" . $start . "' AND '" . $end . "'");
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->order_by("COL_TIME_ON", "ASC");
+ $query = $this->db->get($this->config->item('table_name'));
+
+ return $query;
+ }
+
+ // Return QSOs made during the current month
+ function month_qsos($StationLocationsArray = null, $api_key = null)
+ {
+ if ($StationLocationsArray == null) {
+ $CI = &get_instance();
+ $CI->load->model('logbooks_model');
+ if ($api_key != null) {
+ $CI->load->model('api_model');
+ if (strpos($this->api_model->access($api_key), 'r') !== false) {
+ $this->api_model->update_last_used($api_key);
+ $user_id = $this->api_model->key_userid($api_key);
+ $active_station_logbook = $CI->logbooks_model->find_active_station_logbook_from_userid($user_id);
+ $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($active_station_logbook);
+ } else {
+ $logbooks_locations_array = [];
+ }
+ } else {
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
-
- $start = $date." 00:00:00";
- $end = $date." 23:59:59";
-
- $this->db->where("COL_TIME_ON BETWEEN '".$start."' AND '".$end."'");
- $this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->order_by("COL_TIME_ON", "ASC");
- $query = $this->db->get($this->config->item('table_name'));
-
- return $query;
+ }
+ } else {
+ $logbooks_locations_array = $StationLocationsArray;
}
- // Return QSOs made during the current month
- function month_qsos($StationLocationsArray = null, $api_key = null) {
- if($StationLocationsArray == null) {
- $CI =& get_instance();
- $CI->load->model('logbooks_model');
- if ($api_key != null) {
- $CI->load->model('api_model');
- if (strpos($this->api_model->access($api_key), 'r') !== false) {
- $this->api_model->update_last_used($api_key);
- $user_id = $this->api_model->key_userid($api_key);
- $active_station_logbook = $CI->logbooks_model->find_active_station_logbook_from_userid($user_id);
- $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($active_station_logbook);
- } else {
- $logbooks_locations_array = [];
- }
+ if ($logbooks_locations_array) {
+
+ $morning = date('Y-m-01 00:00:00');
+
+ $date = new DateTime('now');
+ $date->modify('last day of this month');
+
+ $night = $date->format('Y-m-d') . " 23:59:59";
+
+ $this->db->select('COUNT( * ) as count', FALSE);
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->where('COL_TIME_ON >=', $morning);
+ $this->db->where('COL_TIME_ON <=', $night);
+ $query = $this->db->get($this->config->item('table_name'));
+
+ if ($query->num_rows() > 0) {
+ foreach ($query->result() as $row) {
+ return $row->count;
+ }
+ }
+ } else {
+ return null;
+ }
+ }
+
+ /* Return QSOs made during the current Year */
+ function year_qsos($StationLocationsArray = null, $api_key = null)
+ {
+
+ if ($StationLocationsArray == null) {
+ $CI = &get_instance();
+ $CI->load->model('logbooks_model');
+ if ($api_key != null) {
+ $CI->load->model('api_model');
+ if (strpos($this->api_model->access($api_key), 'r') !== false) {
+ $this->api_model->update_last_used($api_key);
+ $user_id = $this->api_model->key_userid($api_key);
+ $active_station_logbook = $CI->logbooks_model->find_active_station_logbook_from_userid($user_id);
+ $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($active_station_logbook);
} else {
- $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+ $logbooks_locations_array = [];
}
} else {
- $logbooks_locations_array = $StationLocationsArray;
- }
-
- if ($logbooks_locations_array) {
-
- $morning = date('Y-m-01 00:00:00');
-
- $date = new DateTime('now');
- $date->modify('last day of this month');
-
- $night = $date->format('Y-m-d')." 23:59:59";
-
- $this->db->select('COUNT( * ) as count', FALSE);
- $this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->where('COL_TIME_ON >=', $morning);
- $this->db->where('COL_TIME_ON <=', $night);
- $query = $this->db->get($this->config->item('table_name'));
-
- if ($query->num_rows() > 0)
- {
- foreach ($query->result() as $row)
- {
- return $row->count;
- }
- }
- } else {
- return null;
+ $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
}
+ } else {
+ $logbooks_locations_array = $StationLocationsArray;
}
- /* Return QSOs made during the current Year */
- function year_qsos($StationLocationsArray = null, $api_key = null) {
+ if ($logbooks_locations_array) {
- if($StationLocationsArray == null) {
- $CI =& get_instance();
- $CI->load->model('logbooks_model');
- if ($api_key != null) {
- $CI->load->model('api_model');
- if (strpos($this->api_model->access($api_key), 'r') !== false) {
- $this->api_model->update_last_used($api_key);
- $user_id = $this->api_model->key_userid($api_key);
- $active_station_logbook = $CI->logbooks_model->find_active_station_logbook_from_userid($user_id);
- $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($active_station_logbook);
- } else {
- $logbooks_locations_array = [];
- }
- } else {
- $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
- }
- } else {
- $logbooks_locations_array = $StationLocationsArray;
- }
-
- if ($logbooks_locations_array) {
-
- $morning = date('Y-01-01 00:00:00');
- $night = date('Y-12-31 23:59:59');
-
- $this->db->select('COUNT( * ) as count', FALSE);
- $this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->where('COL_TIME_ON >=', $morning);
- $this->db->where('COL_TIME_ON <=', $night);
- $query = $this->db->get($this->config->item('table_name'));
-
- if ($query->num_rows() > 0)
- {
- foreach ($query->result() as $row)
- {
- return $row->count;
- }
- }
- } else {
- return null;
- }
- }
-
- /* Return total amount of SSB QSOs logged */
- function total_ssb() {
-
- $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;
- }
- $mode[] = 'SSB';
- $mode[] = 'LSB';
- $mode[] = 'USB';
+ $morning = date('Y-01-01 00:00:00');
+ $night = date('Y-12-31 23:59:59');
$this->db->select('COUNT( * ) as count', FALSE);
$this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->where_in('COL_MODE', $mode);
-
+ $this->db->where('COL_TIME_ON >=', $morning);
+ $this->db->where('COL_TIME_ON <=', $night);
$query = $this->db->get($this->config->item('table_name'));
- if ($query->num_rows() > 0)
- {
- foreach ($query->result() as $row)
- {
- return $row->count;
- }
- }
- }
-
- /* Return total number of satellite QSOs */
- function total_sat() {
-
- $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;
- }
-
- $this->db->select('COL_SAT_NAME, COUNT( * ) as count', FALSE);
- $this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->where('COL_SAT_NAME is not null');
- $this->db->where('COL_SAT_NAME !=', '');
- $this->db->order_by('count DESC');
- $this->db->group_by('COL_SAT_NAME');
- $query = $this->db->get($this->config->item('table_name'));
-
- return $query;
- }
-
- /* Return total number of QSOs per continent */
- function total_continents($searchCriteria) {
-
- $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;
- }
-
- $this->db->select('COL_CONT, COUNT( * ) as count', FALSE);
- $this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->where('COL_CONT is not null');
- $this->db->where('COL_CONT !=', '');
-
- if ($searchCriteria['mode'] !== '') {
- $this->db->group_start();
- $this->db->where('COL_MODE', $searchCriteria['mode']);
- $this->db->or_where('COL_SUBMODE', $searchCriteria['mode']);
- $this->db->group_end();
- }
-
- if ($searchCriteria['band'] !== '') {
- if($searchCriteria['band'] != "SAT") {
- $this->db->where('COL_BAND', $searchCriteria['band']);
- $this->db->where('COL_PROP_MODE != "SAT"');
- } else {
- $this->db->where('COL_PROP_MODE', 'SAT');
+ if ($query->num_rows() > 0) {
+ foreach ($query->result() as $row) {
+ return $row->count;
}
}
+ } else {
+ return null;
+ }
+ }
- $this->db->order_by('count DESC');
- $this->db->group_by('COL_CONT');
- $query = $this->db->get($this->config->item('table_name'));
+ /* Return total amount of SSB QSOs logged */
+ function total_ssb()
+ {
- return $query;
+ $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;
+ }
+ $mode[] = 'SSB';
+ $mode[] = 'LSB';
+ $mode[] = 'USB';
+
+ $this->db->select('COUNT( * ) as count', FALSE);
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->where_in('COL_MODE', $mode);
+
+ $query = $this->db->get($this->config->item('table_name'));
+
+ if ($query->num_rows() > 0) {
+ foreach ($query->result() as $row) {
+ return $row->count;
+ }
+ }
+ }
+
+ /* Return total number of satellite QSOs */
+ function total_sat()
+ {
+
+ $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;
}
- /* Return total number of CW QSOs */
- function total_cw() {
+ $this->db->select('COL_SAT_NAME, COUNT( * ) as count', FALSE);
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->where('COL_SAT_NAME is not null');
+ $this->db->where('COL_SAT_NAME !=', '');
+ $this->db->order_by('count DESC');
+ $this->db->group_by('COL_SAT_NAME');
+ $query = $this->db->get($this->config->item('table_name'));
- $CI =& get_instance();
+ return $query;
+ }
+
+ /* Return total number of QSOs per continent */
+ function total_continents($searchCriteria)
+ {
+
+ $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;
+ }
+
+ $this->db->select('COL_CONT, COUNT( * ) as count', FALSE);
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->where('COL_CONT is not null');
+ $this->db->where('COL_CONT !=', '');
+
+ if ($searchCriteria['mode'] !== '') {
+ $this->db->group_start();
+ $this->db->where('COL_MODE', $searchCriteria['mode']);
+ $this->db->or_where('COL_SUBMODE', $searchCriteria['mode']);
+ $this->db->group_end();
+ }
+
+ if ($searchCriteria['band'] !== '') {
+ if ($searchCriteria['band'] != "SAT") {
+ $this->db->where('COL_BAND', $searchCriteria['band']);
+ $this->db->where('COL_PROP_MODE != "SAT"');
+ } else {
+ $this->db->where('COL_PROP_MODE', 'SAT');
+ }
+ }
+
+ $this->db->order_by('count DESC');
+ $this->db->group_by('COL_CONT');
+ $query = $this->db->get($this->config->item('table_name'));
+
+ return $query;
+ }
+
+ /* Return total number of CW QSOs */
+ function total_cw()
+ {
+
+ $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;
+ }
+
+ $this->db->select('COUNT( * ) as count', FALSE);
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->where('COL_MODE', 'CW');
+ $query = $this->db->get($this->config->item('table_name'));
+
+ if ($query->num_rows() > 0) {
+ foreach ($query->result() as $row) {
+ return $row->count;
+ }
+ }
+ }
+
+ /* Return total number of FM QSOs */
+ function total_fm()
+ {
+
+ $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;
+ }
+
+ $this->db->select('COUNT( * ) as count', FALSE);
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->where('COL_MODE', 'FM');
+ $query = $this->db->get($this->config->item('table_name'));
+
+ if ($query->num_rows() > 0) {
+ foreach ($query->result() as $row) {
+ return $row->count;
+ }
+ }
+ }
+
+ /* Return total number of Digital QSOs */
+ function total_digi()
+ {
+
+ $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;
+ }
+
+ $this->db->select('COUNT( * ) as count', FALSE);
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->where('COL_MODE !=', 'SSB');
+ $this->db->where('COL_MODE !=', 'LSB');
+ $this->db->where('COL_MODE !=', 'USB');
+ $this->db->where('COL_MODE !=', 'CW');
+ $this->db->where('COL_MODE !=', 'FM');
+ $this->db->where('COL_MODE !=', 'AM');
+
+ $query = $this->db->get($this->config->item('table_name'));
+
+ if ($query->num_rows() > 0) {
+ foreach ($query->result() as $row) {
+ return $row->count;
+ }
+ }
+ }
+
+ /* Return the list of modes in the logbook */
+ function get_modes()
+ {
+ $query = $this->db->query('select distinct(COL_MODE) from ' . $this->config->item('table_name') . ' order by COL_MODE');
+ return $query;
+ }
+
+ /* Return total number of QSOs per band */
+ function total_bands()
+ {
+ $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;
+ }
+
+ $this->db->select('COL_BAND AS band, count( * ) AS count', FALSE);
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->group_by('band');
+ $this->db->order_by('count', 'DESC');
+
+ $query = $this->db->get($this->config->item('table_name'));
+
+ return $query;
+ }
+
+ function get_QSLStats($StationLocationsArray = null)
+ {
+
+ if ($StationLocationsArray == null) {
+ $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;
- }
-
- $this->db->select('COUNT( * ) as count', FALSE);
- $this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->where('COL_MODE', 'CW');
- $query = $this->db->get($this->config->item('table_name'));
-
- if ($query->num_rows() > 0)
- {
- foreach ($query->result() as $row)
- {
- return $row->count;
- }
- }
+ } else {
+ $logbooks_locations_array = $StationLocationsArray;
}
- /* Return total number of FM QSOs */
- function total_fm() {
-
- $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;
- }
-
- $this->db->select('COUNT( * ) as count', FALSE);
- $this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->where('COL_MODE', 'FM');
- $query = $this->db->get($this->config->item('table_name'));
-
- if ($query->num_rows() > 0)
- {
- foreach ($query->result() as $row)
- {
- return $row->count;
- }
- }
- }
-
- /* Return total number of Digital QSOs */
- function total_digi() {
-
- $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;
- }
-
- $this->db->select('COUNT( * ) as count', FALSE);
- $this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->where('COL_MODE !=', 'SSB');
- $this->db->where('COL_MODE !=', 'LSB');
- $this->db->where('COL_MODE !=', 'USB');
- $this->db->where('COL_MODE !=', 'CW');
- $this->db->where('COL_MODE !=', 'FM');
- $this->db->where('COL_MODE !=', 'AM');
-
- $query = $this->db->get($this->config->item('table_name'));
-
- if ($query->num_rows() > 0)
- {
- foreach ($query->result() as $row)
- {
- return $row->count;
- }
- }
- }
-
- /* Return the list of modes in the logbook */
- function get_modes(){
- $query = $this->db->query('select distinct(COL_MODE) from '.$this->config->item('table_name').' order by COL_MODE');
- return $query;
- }
-
- /* Return total number of QSOs per band */
- function total_bands() {
- $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;
- }
-
- $this->db->select('COL_BAND AS band, count( * ) AS count', FALSE);
- $this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->group_by('band');
- $this->db->order_by('count', 'DESC');
-
- $query = $this->db->get($this->config->item('table_name'));
-
- return $query;
- }
-
- function get_QSLStats($StationLocationsArray = null) {
-
- if($StationLocationsArray == null) {
- $CI =& get_instance();
- $CI->load->model('logbooks_model');
- $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
- } else {
- $logbooks_locations_array = $StationLocationsArray;
- }
-
- if(!empty($logbooks_locations_array)) {
- $this->db->select('
+ if (!empty($logbooks_locations_array)) {
+ $this->db->select('
COUNT(IF(COL_QSL_SENT="Y",COL_QSL_SENT,null)) as QSL_Sent,
COUNT(IF(COL_QSL_RCVD="Y",COL_QSL_RCVD,null)) as QSL_Received,
COUNT(IF(COL_QSL_SENT IN("Q", "R") ,COL_QSL_SENT,null)) as QSL_Requested,
@@ -2522,536 +2564,549 @@ function check_if_callsign_worked_in_logbook($callsign, $StationLocationsArray =
COUNT(IF(COL_QRZCOM_QSO_UPLOAD_STATUS="Y" and DATE(COL_QRZCOM_QSO_UPLOAD_DATE)=DATE(SYSDATE()),COL_QRZCOM_QSO_UPLOAD_STATUS,null)) as QRZ_Sent_today,
COUNT(IF(COL_QRZCOM_QSO_DOWNLOAD_STATUS="Y" and DATE(COL_QRZCOM_QSO_DOWNLOAD_DATE)=DATE(SYSDATE()),COL_QRZCOM_QSO_DOWNLOAD_STATUS,null)) as QRZ_Received_today
');
- $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->where_in('station_id', $logbooks_locations_array);
- if ($query = $this->db->get($this->config->item('table_name'))) {
- $this->db->last_query();
- foreach ($query->result() as $row) {
- $QSLBreakdown['QSL_Sent'] = $row->QSL_Sent;
- $QSLBreakdown['QSL_Received'] = $row->QSL_Received;
- $QSLBreakdown['QSL_Requested'] = $row->QSL_Requested;
- $QSLBreakdown['eQSL_Sent'] = $row->eQSL_Sent;
- $QSLBreakdown['eQSL_Received'] = $row->eQSL_Received;
- $QSLBreakdown['LoTW_Sent'] = $row->LoTW_Sent;
- $QSLBreakdown['LoTW_Received'] = $row->LoTW_Received;
- $QSLBreakdown['QRZ_Sent'] = $row->QRZ_Sent;
- $QSLBreakdown['QRZ_Received'] = $row->QRZ_Received;
- $QSLBreakdown['QSL_Sent_today'] = $row->QSL_Sent_today;
- $QSLBreakdown['QSL_Received_today'] = $row->QSL_Received_today;
- $QSLBreakdown['QSL_Requested_today'] = $row->QSL_Requested_today;
- $QSLBreakdown['eQSL_Sent_today'] = $row->eQSL_Sent_today;
- $QSLBreakdown['eQSL_Received_today'] = $row->eQSL_Received_today;
- $QSLBreakdown['LoTW_Sent_today'] = $row->LoTW_Sent_today;
- $QSLBreakdown['LoTW_Received_today'] = $row->LoTW_Received_today;
- $QSLBreakdown['QRZ_Sent_today'] = $row->QRZ_Sent_today;
- $QSLBreakdown['QRZ_Received_today'] = $row->QRZ_Received_today;
- }
+ if ($query = $this->db->get($this->config->item('table_name'))) {
+ $this->db->last_query();
+ foreach ($query->result() as $row) {
+ $QSLBreakdown['QSL_Sent'] = $row->QSL_Sent;
+ $QSLBreakdown['QSL_Received'] = $row->QSL_Received;
+ $QSLBreakdown['QSL_Requested'] = $row->QSL_Requested;
+ $QSLBreakdown['eQSL_Sent'] = $row->eQSL_Sent;
+ $QSLBreakdown['eQSL_Received'] = $row->eQSL_Received;
+ $QSLBreakdown['LoTW_Sent'] = $row->LoTW_Sent;
+ $QSLBreakdown['LoTW_Received'] = $row->LoTW_Received;
+ $QSLBreakdown['QRZ_Sent'] = $row->QRZ_Sent;
+ $QSLBreakdown['QRZ_Received'] = $row->QRZ_Received;
+ $QSLBreakdown['QSL_Sent_today'] = $row->QSL_Sent_today;
+ $QSLBreakdown['QSL_Received_today'] = $row->QSL_Received_today;
+ $QSLBreakdown['QSL_Requested_today'] = $row->QSL_Requested_today;
+ $QSLBreakdown['eQSL_Sent_today'] = $row->eQSL_Sent_today;
+ $QSLBreakdown['eQSL_Received_today'] = $row->eQSL_Received_today;
+ $QSLBreakdown['LoTW_Sent_today'] = $row->LoTW_Sent_today;
+ $QSLBreakdown['LoTW_Received_today'] = $row->LoTW_Received_today;
+ $QSLBreakdown['QRZ_Sent_today'] = $row->QRZ_Sent_today;
+ $QSLBreakdown['QRZ_Received_today'] = $row->QRZ_Received_today;
+ }
- return $QSLBreakdown;
- } else {
- $QSLBreakdown['QSL_Sent'] = 0;
- $QSLBreakdown['QSL_Received'] = 0;
- $QSLBreakdown['QSL_Requested'] = 0;
- $QSLBreakdown['eQSL_Sent'] = 0;
- $QSLBreakdown['eQSL_Received'] = 0;
- $QSLBreakdown['LoTW_Sent'] = 0;
- $QSLBreakdown['LoTW_Received'] = 0;
- $QSLBreakdown['QRZ_Sent'] = 0;
- $QSLBreakdown['QRZ_Received'] = 0;
- $QSLBreakdown['QSL_Sent_today'] = 0;
- $QSLBreakdown['QSL_Received_today'] = 0;
- $QSLBreakdown['QSL_Requested_today'] = 0;
- $QSLBreakdown['eQSL_Sent_today'] = 0;
- $QSLBreakdown['eQSL_Received_today'] = 0;
- $QSLBreakdown['LoTW_Sent_today'] = 0;
- $QSLBreakdown['LoTW_Received_today'] = 0;
- $QSLBreakdown['QRZ_Sent_today'] = 0;
- $QSLBreakdown['QRZ_Received_today'] = 0;
+ return $QSLBreakdown;
+ } else {
+ $QSLBreakdown['QSL_Sent'] = 0;
+ $QSLBreakdown['QSL_Received'] = 0;
+ $QSLBreakdown['QSL_Requested'] = 0;
+ $QSLBreakdown['eQSL_Sent'] = 0;
+ $QSLBreakdown['eQSL_Received'] = 0;
+ $QSLBreakdown['LoTW_Sent'] = 0;
+ $QSLBreakdown['LoTW_Received'] = 0;
+ $QSLBreakdown['QRZ_Sent'] = 0;
+ $QSLBreakdown['QRZ_Received'] = 0;
+ $QSLBreakdown['QSL_Sent_today'] = 0;
+ $QSLBreakdown['QSL_Received_today'] = 0;
+ $QSLBreakdown['QSL_Requested_today'] = 0;
+ $QSLBreakdown['eQSL_Sent_today'] = 0;
+ $QSLBreakdown['eQSL_Received_today'] = 0;
+ $QSLBreakdown['LoTW_Sent_today'] = 0;
+ $QSLBreakdown['LoTW_Received_today'] = 0;
+ $QSLBreakdown['QRZ_Sent_today'] = 0;
+ $QSLBreakdown['QRZ_Received_today'] = 0;
- return $QSLBreakdown;
- }
- } else {
- $QSLBreakdown['QSL_Sent'] = 0;
- $QSLBreakdown['QSL_Received'] = 0;
- $QSLBreakdown['QSL_Requested'] = 0;
- $QSLBreakdown['eQSL_Sent'] = 0;
- $QSLBreakdown['eQSL_Received'] = 0;
- $QSLBreakdown['LoTW_Sent'] = 0;
- $QSLBreakdown['LoTW_Received'] = 0;
- $QSLBreakdown['QRZ_Sent'] = 0;
- $QSLBreakdown['QRZ_Received'] = 0;
- $QSLBreakdown['QSL_Sent_today'] = 0;
- $QSLBreakdown['QSL_Received_today'] = 0;
- $QSLBreakdown['QSL_Requested_today'] = 0;
- $QSLBreakdown['eQSL_Sent_today'] = 0;
- $QSLBreakdown['eQSL_Received_today'] = 0;
- $QSLBreakdown['LoTW_Sent_today'] = 0;
- $QSLBreakdown['LoTW_Received_today'] = 0;
- $QSLBreakdown['QRZ_Sent_today'] = 0;
- $QSLBreakdown['QRZ_Received_today'] = 0;
-
- return $QSLBreakdown;
+ return $QSLBreakdown;
}
- }
+ } else {
+ $QSLBreakdown['QSL_Sent'] = 0;
+ $QSLBreakdown['QSL_Received'] = 0;
+ $QSLBreakdown['QSL_Requested'] = 0;
+ $QSLBreakdown['eQSL_Sent'] = 0;
+ $QSLBreakdown['eQSL_Received'] = 0;
+ $QSLBreakdown['LoTW_Sent'] = 0;
+ $QSLBreakdown['LoTW_Received'] = 0;
+ $QSLBreakdown['QRZ_Sent'] = 0;
+ $QSLBreakdown['QRZ_Received'] = 0;
+ $QSLBreakdown['QSL_Sent_today'] = 0;
+ $QSLBreakdown['QSL_Received_today'] = 0;
+ $QSLBreakdown['QSL_Requested_today'] = 0;
+ $QSLBreakdown['eQSL_Sent_today'] = 0;
+ $QSLBreakdown['eQSL_Received_today'] = 0;
+ $QSLBreakdown['LoTW_Sent_today'] = 0;
+ $QSLBreakdown['LoTW_Received_today'] = 0;
+ $QSLBreakdown['QRZ_Sent_today'] = 0;
+ $QSLBreakdown['QRZ_Received_today'] = 0;
- /* Return total number of QSL Cards sent */
- function total_qsl_sent() {
- $CI =& get_instance();
+ return $QSLBreakdown;
+ }
+ }
+
+ /* Return total number of QSL Cards sent */
+ function total_qsl_sent()
+ {
+ $CI = &get_instance();
+ $CI->load->model('logbooks_model');
+ $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+
+ if (!empty($logbooks_locations_array)) {
+ $this->db->select('count(COL_QSL_SENT) AS count');
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->where('COL_QSL_SENT =', 'Y');
+
+ $query = $this->db->get($this->config->item('table_name'));
+
+ $row = $query->row();
+
+ if ($row == null) {
+ return 0;
+ } else {
+ return $row->count;
+ }
+ } else {
+ return 0;
+ }
+ }
+
+ /* Return total number of QSL Cards requested for printing - that means "requested" or "queued" */
+ function total_qsl_requested()
+ {
+ $CI = &get_instance();
+ $CI->load->model('logbooks_model');
+ $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+
+ if (!empty($logbooks_locations_array)) {
+ $this->db->select('count(COL_QSL_SENT) AS count');
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->where_in('COL_QSL_SENT', array('Q', 'R'));
+
+ $query = $this->db->get($this->config->item('table_name'));
+
+ $row = $query->row();
+
+ if ($row == null) {
+ return 0;
+ } else {
+ return $row->count;
+ }
+ } else {
+ return 0;
+ }
+ }
+
+ /* Return total number of QSL Cards received */
+ function total_qsl_rcvd()
+ {
+ $CI = &get_instance();
+ $CI->load->model('logbooks_model');
+ $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+
+ if (!empty($logbooks_locations_array)) {
+ $this->db->select('count(COL_QSL_RCVD) AS count');
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->where('COL_QSL_RCVD =', 'Y');
+
+ $query = $this->db->get($this->config->item('table_name'));
+
+ $row = $query->row();
+
+ if ($row == null) {
+ return 0;
+ } else {
+ return $row->count;
+ }
+ } else {
+ return 0;
+ }
+ }
+
+ /* Return total number of eQSL Cards sent */
+ function total_eqsl_sent()
+ {
+ $CI = &get_instance();
+ $CI->load->model('logbooks_model');
+ $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+
+ if (!empty($logbooks_locations_array)) {
+ $this->db->select('count(COL_EQSL_QSL_SENT) AS count');
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->where('COL_EQSL_QSL_SENT =', 'Y');
+
+ $query = $this->db->get($this->config->item('table_name'));
+
+ $row = $query->row();
+
+ if ($row == null) {
+ return 0;
+ } else {
+ return $row->count;
+ }
+ } else {
+ return 0;
+ }
+ }
+
+ /* Return total number of eQSL Cards received */
+ function total_eqsl_rcvd()
+ {
+ $CI = &get_instance();
+ $CI->load->model('logbooks_model');
+ $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+
+ if (!empty($logbooks_locations_array)) {
+ $this->db->select('count(COL_EQSL_QSL_RCVD) AS count');
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->where('COL_EQSL_QSL_RCVD =', 'Y');
+
+ $query = $this->db->get($this->config->item('table_name'));
+
+ $row = $query->row();
+
+ if ($row == null) {
+ return 0;
+ } else {
+ return $row->count;
+ }
+ } else {
+ return 0;
+ }
+ }
+
+ /* Return total number of LoTW sent */
+ function total_lotw_sent()
+ {
+ $CI = &get_instance();
+ $CI->load->model('logbooks_model');
+ $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+
+ if (!empty($logbooks_locations_array)) {
+ $this->db->select('count(COL_LOTW_QSL_SENT) AS count');
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->where('COL_LOTW_QSL_SENT =', 'Y');
+
+ $query = $this->db->get($this->config->item('table_name'));
+
+ $row = $query->row();
+
+ if ($row == null) {
+ return 0;
+ } else {
+ return $row->count;
+ }
+ } else {
+ return 0;
+ }
+ }
+
+ /* Return total number of LoTW received */
+ function total_lotw_rcvd()
+ {
+ $CI = &get_instance();
+ $CI->load->model('logbooks_model');
+ $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+
+ if (!empty($logbooks_locations_array)) {
+ $this->db->select('count(COL_LOTW_QSL_RCVD) AS count');
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->where('COL_LOTW_QSL_RCVD =', 'Y');
+
+ $query = $this->db->get($this->config->item('table_name'));
+
+ $row = $query->row();
+
+ if ($row == null) {
+ return 0;
+ } else {
+ return $row->count;
+ }
+ } else {
+ return 0;
+ }
+ }
+
+ /* Return total number of countries worked */
+ function total_countries()
+ {
+ $CI = &get_instance();
+ $CI->load->model('logbooks_model');
+ $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+
+ if (!empty($logbooks_locations_array)) {
+ $this->db->select('DISTINCT (COL_COUNTRY)');
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->where('COL_COUNTRY !=', 'Invalid');
+ $this->db->where('COL_DXCC >', '0');
+ $query = $this->db->get($this->config->item('table_name'));
+
+ return $query->num_rows();
+ } else {
+ return 0;
+ }
+ }
+
+ /* Return total number of countries worked */
+ function total_countries_current($StationLocationsArray = null)
+ {
+ if ($StationLocationsArray == null) {
+ $CI = &get_instance();
$CI->load->model('logbooks_model');
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
-
- if(!empty($logbooks_locations_array)) {
- $this->db->select('count(COL_QSL_SENT) AS count');
- $this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->where('COL_QSL_SENT =', 'Y');
-
- $query = $this->db->get($this->config->item('table_name'));
-
- $row = $query->row();
-
- if($row == null) {
- return 0;
- } else {
- return $row->count;
- }
- } else {
- return 0;
- }
+ } else {
+ $logbooks_locations_array = $StationLocationsArray;
}
- /* Return total number of QSL Cards requested for printing - that means "requested" or "queued" */
- function total_qsl_requested() {
- $CI =& get_instance();
+ if (!empty($logbooks_locations_array)) {
+ $this->db->select('DISTINCT (' . $this->config->item('table_name') . '.COL_COUNTRY)');
+ $this->db->join('dxcc_entities', 'dxcc_entities.adif = ' . $this->config->item('table_name') . '.col_dxcc');
+ $this->db->where_in($this->config->item('table_name') . '.station_id', $logbooks_locations_array);
+ $this->db->where($this->config->item('table_name') . '.COL_COUNTRY !=', 'Invalid');
+ $this->db->where('dxcc_entities.end is null');
+ $query = $this->db->get($this->config->item('table_name'));
+
+ return $query->num_rows();
+ } else {
+ return 0;
+ }
+ }
+
+ /* Return total number of countries confirmed with along with qsl types confirmed */
+ function total_countries_confirmed($StationLocationsArray = null)
+ {
+
+ if ($StationLocationsArray == null) {
+ $CI = &get_instance();
$CI->load->model('logbooks_model');
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
-
- if(!empty($logbooks_locations_array)) {
- $this->db->select('count(COL_QSL_SENT) AS count');
- $this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->where_in('COL_QSL_SENT', array('Q', 'R'));
-
- $query = $this->db->get($this->config->item('table_name'));
-
- $row = $query->row();
-
- if($row == null) {
- return 0;
- } else {
- return $row->count;
- }
- } else {
- return 0;
- }
+ } else {
+ $logbooks_locations_array = $StationLocationsArray;
}
- /* Return total number of QSL Cards received */
- function total_qsl_rcvd() {
- $CI =& get_instance();
- $CI->load->model('logbooks_model');
- $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
-
- if(!empty($logbooks_locations_array)) {
- $this->db->select('count(COL_QSL_RCVD) AS count');
- $this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->where('COL_QSL_RCVD =', 'Y');
-
- $query = $this->db->get($this->config->item('table_name'));
-
- $row = $query->row();
-
- if($row == null) {
- return 0;
- } else {
- return $row->count;
- }
- } else {
- return 0;
- }
- }
-
- /* Return total number of eQSL Cards sent */
- function total_eqsl_sent() {
- $CI =& get_instance();
- $CI->load->model('logbooks_model');
- $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
-
- if(!empty($logbooks_locations_array)) {
- $this->db->select('count(COL_EQSL_QSL_SENT) AS count');
- $this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->where('COL_EQSL_QSL_SENT =', 'Y');
-
- $query = $this->db->get($this->config->item('table_name'));
-
- $row = $query->row();
-
- if($row == null) {
- return 0;
- } else {
- return $row->count;
- }
- } else {
- return 0;
- }
- }
-
- /* Return total number of eQSL Cards received */
- function total_eqsl_rcvd() {
- $CI =& get_instance();
- $CI->load->model('logbooks_model');
- $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
-
- if(!empty($logbooks_locations_array)) {
- $this->db->select('count(COL_EQSL_QSL_RCVD) AS count');
- $this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->where('COL_EQSL_QSL_RCVD =', 'Y');
-
- $query = $this->db->get($this->config->item('table_name'));
-
- $row = $query->row();
-
- if($row == null) {
- return 0;
- } else {
- return $row->count;
- }
- } else {
- return 0;
- }
- }
-
- /* Return total number of LoTW sent */
- function total_lotw_sent() {
- $CI =& get_instance();
- $CI->load->model('logbooks_model');
- $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
-
- if(!empty($logbooks_locations_array)) {
- $this->db->select('count(COL_LOTW_QSL_SENT) AS count');
- $this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->where('COL_LOTW_QSL_SENT =', 'Y');
-
- $query = $this->db->get($this->config->item('table_name'));
-
- $row = $query->row();
-
- if($row == null) {
- return 0;
- } else {
- return $row->count;
- }
- } else {
- return 0;
- }
- }
-
- /* Return total number of LoTW received */
- function total_lotw_rcvd() {
- $CI =& get_instance();
- $CI->load->model('logbooks_model');
- $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
-
- if(!empty($logbooks_locations_array)) {
- $this->db->select('count(COL_LOTW_QSL_RCVD) AS count');
- $this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->where('COL_LOTW_QSL_RCVD =', 'Y');
-
- $query = $this->db->get($this->config->item('table_name'));
-
- $row = $query->row();
-
- if($row == null) {
- return 0;
- } else {
- return $row->count;
- }
- } else {
- return 0;
- }
- }
-
- /* Return total number of countries worked */
- function total_countries() {
- $CI =& get_instance();
- $CI->load->model('logbooks_model');
- $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
-
- if(!empty($logbooks_locations_array)) {
- $this->db->select('DISTINCT (COL_COUNTRY)');
- $this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->where('COL_COUNTRY !=', 'Invalid');
- $this->db->where('COL_DXCC >', '0');
- $query = $this->db->get($this->config->item('table_name'));
-
- return $query->num_rows();
- } else {
- return 0;
- }
- }
-
- /* Return total number of countries worked */
- function total_countries_current($StationLocationsArray = null) {
- if($StationLocationsArray == null) {
- $CI =& get_instance();
- $CI->load->model('logbooks_model');
- $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
- } else {
- $logbooks_locations_array = $StationLocationsArray;
- }
-
- if(!empty($logbooks_locations_array)) {
- $this->db->select('DISTINCT ('.$this->config->item('table_name').'.COL_COUNTRY)');
- $this->db->join('dxcc_entities', 'dxcc_entities.adif = '.$this->config->item('table_name').'.col_dxcc');
- $this->db->where_in($this->config->item('table_name').'.station_id', $logbooks_locations_array);
- $this->db->where($this->config->item('table_name').'.COL_COUNTRY !=', 'Invalid');
- $this->db->where('dxcc_entities.end is null');
- $query = $this->db->get($this->config->item('table_name'));
-
- return $query->num_rows();
- } else {
- return 0;
- }
- }
-
- /* Return total number of countries confirmed with along with qsl types confirmed */
- function total_countries_confirmed($StationLocationsArray = null) {
-
- if($StationLocationsArray == null) {
- $CI =& get_instance();
- $CI->load->model('logbooks_model');
- $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
- } else {
- $logbooks_locations_array = $StationLocationsArray;
- }
-
- if(!empty($logbooks_locations_array)) {
- $this->db->select('COUNT(DISTINCT COL_COUNTRY) as Countries_Worked,
+ if (!empty($logbooks_locations_array)) {
+ $this->db->select('COUNT(DISTINCT COL_COUNTRY) as Countries_Worked,
COUNT(DISTINCT IF(COL_QSL_RCVD = "Y", COL_COUNTRY, NULL)) as Countries_Worked_QSL,
COUNT(DISTINCT IF(COL_EQSL_QSL_RCVD = "Y", COL_COUNTRY, NULL)) as Countries_Worked_EQSL,
COUNT(DISTINCT IF(COL_LOTW_QSL_RCVD = "Y", COL_COUNTRY, NULL)) as Countries_Worked_LOTW');
- $this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->where('COL_COUNTRY !=', 'Invalid');
- $this->db->where('COL_DXCC >', '0');
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->where('COL_COUNTRY !=', 'Invalid');
+ $this->db->where('COL_DXCC >', '0');
- if ($query = $this->db->get($this->config->item('table_name')))
- {
- foreach ($query->result() as $row)
- {
- $CountriesBreakdown['Countries_Worked'] = $row->Countries_Worked;
- $CountriesBreakdown['Countries_Worked_QSL'] = $row->Countries_Worked_QSL;
- $CountriesBreakdown['Countries_Worked_EQSL'] = $row->Countries_Worked_EQSL;
- $CountriesBreakdown['Countries_Worked_LOTW'] = $row->Countries_Worked_LOTW;
- }
-
- return $CountriesBreakdown;
- }
- else
- {
- $CountriesBreakdown['Countries_Worked'] = 0;
- $CountriesBreakdown['Countries_Worked_QSL'] = 0;
- $CountriesBreakdown['Countries_Worked_EQSL'] = 0;
- $CountriesBreakdown['Countries_Worked_LOTW'] = 0;
- return $CountriesBreakdown;
- }
- } else {
- $CountriesBreakdown['Countries_Worked'] = 0;
- $CountriesBreakdown['Countries_Worked_QSL'] = 0;
- $CountriesBreakdown['Countries_Worked_EQSL'] = 0;
- $CountriesBreakdown['Countries_Worked_LOTW'] = 0;
- return $CountriesBreakdown;
- }
+ if ($query = $this->db->get($this->config->item('table_name'))) {
+ foreach ($query->result() as $row) {
+ $CountriesBreakdown['Countries_Worked'] = $row->Countries_Worked;
+ $CountriesBreakdown['Countries_Worked_QSL'] = $row->Countries_Worked_QSL;
+ $CountriesBreakdown['Countries_Worked_EQSL'] = $row->Countries_Worked_EQSL;
+ $CountriesBreakdown['Countries_Worked_LOTW'] = $row->Countries_Worked_LOTW;
}
- /* Return total number of countries confirmed with paper QSL */
- function total_countries_confirmed_paper() {
- $CI =& get_instance();
- $CI->load->model('logbooks_model');
- $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
-
- if(!empty($logbooks_locations_array)) {
- $this->db->select('DISTINCT (COL_COUNTRY)');
- $this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->where('COL_COUNTRY !=', 'Invalid');
- $this->db->where('COL_DXCC >', '0');
- $this->db->where('COL_QSL_RCVD =', 'Y');
- $query = $this->db->get($this->config->item('table_name'));
-
- return $query->num_rows();
+ return $CountriesBreakdown;
} else {
- return 0;
+ $CountriesBreakdown['Countries_Worked'] = 0;
+ $CountriesBreakdown['Countries_Worked_QSL'] = 0;
+ $CountriesBreakdown['Countries_Worked_EQSL'] = 0;
+ $CountriesBreakdown['Countries_Worked_LOTW'] = 0;
+ return $CountriesBreakdown;
}
+ } else {
+ $CountriesBreakdown['Countries_Worked'] = 0;
+ $CountriesBreakdown['Countries_Worked_QSL'] = 0;
+ $CountriesBreakdown['Countries_Worked_EQSL'] = 0;
+ $CountriesBreakdown['Countries_Worked_LOTW'] = 0;
+ return $CountriesBreakdown;
}
+ }
- /* Return total number of countries confirmed with eQSL */
- function total_countries_confirmed_eqsl() {
- $CI =& get_instance();
- $CI->load->model('logbooks_model');
- $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+ /* Return total number of countries confirmed with paper QSL */
+ function total_countries_confirmed_paper()
+ {
+ $CI = &get_instance();
+ $CI->load->model('logbooks_model');
+ $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
- if(!empty($logbooks_locations_array)) {
- $this->db->select('DISTINCT (COL_COUNTRY)');
- $this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->where('COL_COUNTRY !=', 'Invalid');
- $this->db->where('COL_DXCC >', '0');
- $this->db->where('COL_EQSL_QSL_RCVD =', 'Y');
- $query = $this->db->get($this->config->item('table_name'));
+ if (!empty($logbooks_locations_array)) {
+ $this->db->select('DISTINCT (COL_COUNTRY)');
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->where('COL_COUNTRY !=', 'Invalid');
+ $this->db->where('COL_DXCC >', '0');
+ $this->db->where('COL_QSL_RCVD =', 'Y');
+ $query = $this->db->get($this->config->item('table_name'));
- return $query->num_rows();
- } else {
- return 0;
- }
+ return $query->num_rows();
+ } else {
+ return 0;
}
+ }
- /* Return total number of countries confirmed with LoTW */
- function total_countries_confirmed_lotw() {
- $CI =& get_instance();
- $CI->load->model('logbooks_model');
- $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+ /* Return total number of countries confirmed with eQSL */
+ function total_countries_confirmed_eqsl()
+ {
+ $CI = &get_instance();
+ $CI->load->model('logbooks_model');
+ $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
- if(!empty($logbooks_locations_array)) {
- $this->db->select('DISTINCT (COL_COUNTRY)');
- $this->db->where_in('station_id', $logbooks_locations_array);
- $this->db->where('COL_COUNTRY !=', 'Invalid');
- $this->db->where('COL_DXCC >', '0');
- $this->db->where('COL_LOTW_QSL_RCVD =', 'Y');
- $query = $this->db->get($this->config->item('table_name'));
+ if (!empty($logbooks_locations_array)) {
+ $this->db->select('DISTINCT (COL_COUNTRY)');
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->where('COL_COUNTRY !=', 'Invalid');
+ $this->db->where('COL_DXCC >', '0');
+ $this->db->where('COL_EQSL_QSL_RCVD =', 'Y');
+ $query = $this->db->get($this->config->item('table_name'));
- return $query->num_rows();
- } else {
- return 0;
- }
+ return $query->num_rows();
+ } else {
+ return 0;
}
+ }
- /* Delete QSO based on the QSO ID */
- function delete($id) {
- if ($this->check_qso_is_accessible($id)) {
- $this->db->where('COL_PRIMARY_KEY', $id);
- $this->db->delete($this->config->item('table_name'));
- } else {
- return;
- }
+ /* Return total number of countries confirmed with LoTW */
+ function total_countries_confirmed_lotw()
+ {
+ $CI = &get_instance();
+ $CI->load->model('logbooks_model');
+ $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+
+ if (!empty($logbooks_locations_array)) {
+ $this->db->select('DISTINCT (COL_COUNTRY)');
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $this->db->where('COL_COUNTRY !=', 'Invalid');
+ $this->db->where('COL_DXCC >', '0');
+ $this->db->where('COL_LOTW_QSL_RCVD =', 'Y');
+ $query = $this->db->get($this->config->item('table_name'));
+
+ return $query->num_rows();
+ } else {
+ return 0;
+ }
+ }
+
+ /* Delete QSO based on the QSO ID */
+ function delete($id)
+ {
+ if ($this->check_qso_is_accessible($id)) {
+ $this->db->where('COL_PRIMARY_KEY', $id);
+ $this->db->delete($this->config->item('table_name'));
+ } else {
+ return;
+ }
}
/* Used to check if the qso is already in the database */
- function import_check($datetime, $callsign, $band, $mode, $station_callsign) {
- $mode=$this->get_main_mode_from_mode($mode);
+ function import_check($datetime, $callsign, $band, $mode, $station_callsign, $station_id = null) {
+ $mode=$this->get_main_mode_from_mode($mode);
- $this->db->select('COL_PRIMARY_KEY, COL_TIME_ON, COL_CALL, COL_BAND');
- $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_STATION_CALLSIGN', $station_callsign);
- $this->db->where('COL_BAND', $band);
- $this->db->where('COL_MODE', $mode);
+ $this->db->select('COL_PRIMARY_KEY, COL_TIME_ON, COL_CALL, COL_BAND');
+ $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_STATION_CALLSIGN', $station_callsign);
+ $this->db->where('COL_BAND', $band);
+ $this->db->where('COL_MODE', $mode);
- $query = $this->db->get($this->config->item('table_name'));
-
- if ($query->num_rows() > 0)
- {
- $ret = $query->row();
- return ["Found", $ret->COL_PRIMARY_KEY];
- } else {
- return ["No Match", 0];
- }
+ if(isset($station_id) && $station_id > 0) {
+ $this->db->where('station_id', $station_id);
}
- function qrz_update($datetime, $callsign, $band, $qsl_date, $qsl_status, $station_callsign) {
-
- $data = array(
- 'COL_QRZCOM_QSO_DOWNLOAD_DATE' => $qsl_date,
- 'COL_QRZCOM_QSO_DOWNLOAD_STATUS' => $qsl_status,
- );
-
-
- $this->db->where('date_format(COL_TIME_ON, \'%Y-%m-%d %H:%i\') = "'.$datetime.'"');
- $this->db->where('COL_CALL', $callsign);
- $this->db->where('COL_BAND', $band);
- $this->db->where('COL_STATION_CALLSIGN', $station_callsign);
-
- if ($this->db->update($this->config->item('table_name'), $data)) {
- unset($data);
- return "Updated";
- } else {
- unset($data);
- return "Not updated";
- }
-
+ $query = $this->db->get($this->config->item('table_name'));
+ if ($query->num_rows() > 0) {
+ $ret = $query->row();
+ return ["Found", $ret->COL_PRIMARY_KEY];
+ } else {
+ return ["No Match", 0];
+ }
}
-function lotw_update($datetime, $callsign, $band, $qsl_date, $qsl_status, $state, $qsl_gridsquare, $qsl_vucc_grids, $iota, $cnty, $cqz, $ituz, $station_callsign) {
+ function qrz_update($datetime, $callsign, $band, $qsl_date, $qsl_status, $station_callsign)
+ {
- $data = array(
+ $data = array(
+ 'COL_QRZCOM_QSO_DOWNLOAD_DATE' => $qsl_date,
+ 'COL_QRZCOM_QSO_DOWNLOAD_STATUS' => $qsl_status,
+ );
+
+
+ $this->db->where('date_format(COL_TIME_ON, \'%Y-%m-%d %H:%i\') = "' . $datetime . '"');
+ $this->db->where('COL_CALL', $callsign);
+ $this->db->where('COL_BAND', $band);
+ $this->db->where('COL_STATION_CALLSIGN', $station_callsign);
+
+ if ($this->db->update($this->config->item('table_name'), $data)) {
+ unset($data);
+ return "Updated";
+ } else {
+ unset($data);
+ return "Not updated";
+ }
+ }
+
+ function lotw_update($datetime, $callsign, $band, $qsl_date, $qsl_status, $state, $qsl_gridsquare, $qsl_vucc_grids, $iota, $cnty, $cqz, $ituz, $station_callsign)
+ {
+
+ $data = array(
'COL_LOTW_QSLRDATE' => $qsl_date,
'COL_LOTW_QSL_RCVD' => $qsl_status,
'COL_LOTW_QSL_SENT' => 'Y'
);
- if($state != "") {
+ if ($state != "") {
$data['COL_STATE'] = $state;
- }
- if($iota != "") {
+ }
+ if ($iota != "") {
$data['COL_IOTA'] = $iota;
- }
+ }
- if($cnty != "") {
+ if ($cnty != "") {
$data['COL_CNTY'] = $cnty;
- }
+ }
- if($cqz != "") {
+ if ($cqz != "") {
$data['COL_CQZ'] = $cqz;
- }
+ }
- if($ituz != "") {
+ if ($ituz != "") {
$data['COL_ITUZ'] = $ituz;
- }
+ }
- // Check if QRZ or ClubLog is already uploaded. If so, set qso to reupload to qrz.com (M) or clublog
- $qsql = "select COL_CLUBLOG_QSO_UPLOAD_STATUS as CL_STATE, COL_QRZCOM_QSO_UPLOAD_STATUS as QRZ_STATE from ".$this->config->item('table_name')." where COL_BAND=? and COL_CALL=? and COL_STATION_CALLSIGN=? and date_format(COL_TIME_ON, '%Y-%m-%d %H:%i') = ?";
- $query = $this->db->query($qsql, array($band, $callsign,$station_callsign,$datetime));
- $row = $query->row();
- if (($row->QRZ_STATE ?? '') == 'Y') {
- $data['COL_QRZCOM_QSO_UPLOAD_STATUS'] = 'M';
- }
- if (($row->CL_STATE ?? '') == 'Y') {
- $data['COL_CLUBLOG_QSO_UPLOAD_STATUS'] = 'M';
- }
+ // Check if QRZ or ClubLog is already uploaded. If so, set qso to reupload to qrz.com (M) or clublog
+ $qsql = "select COL_CLUBLOG_QSO_UPLOAD_STATUS as CL_STATE, COL_QRZCOM_QSO_UPLOAD_STATUS as QRZ_STATE from " . $this->config->item('table_name') . " where COL_BAND=? and COL_CALL=? and COL_STATION_CALLSIGN=? and date_format(COL_TIME_ON, '%Y-%m-%d %H:%i') = ?";
+ $query = $this->db->query($qsql, array($band, $callsign, $station_callsign, $datetime));
+ $row = $query->row();
+ if (($row->QRZ_STATE ?? '') == 'Y') {
+ $data['COL_QRZCOM_QSO_UPLOAD_STATUS'] = 'M';
+ }
+ if (($row->CL_STATE ?? '') == 'Y') {
+ $data['COL_CLUBLOG_QSO_UPLOAD_STATUS'] = 'M';
+ }
- $this->db->where('date_format(COL_TIME_ON, \'%Y-%m-%d %H:%i\') = "'.$datetime.'"');
+ $this->db->where('date_format(COL_TIME_ON, \'%Y-%m-%d %H:%i\') = "' . $datetime . '"');
$this->db->where('COL_CALL', $callsign);
$this->db->where('COL_BAND', $band);
$this->db->where('ifnull(COL_LOTW_QSL_RCVD,\'\') !=', $qsl_status); // Prevent QSO from beeing updated twice (or more)
$this->db->where('COL_STATION_CALLSIGN', $station_callsign);
$this->db->update($this->config->item('table_name'), $data);
- unset($data);
+ unset($data);
- if($qsl_gridsquare != "" || $qsl_vucc_grids != "") {
+ if ($qsl_gridsquare != "" || $qsl_vucc_grids != "") {
$data = array(
'COL_DISTANCE' => 0
);
- $this->db->select('station_profile.station_gridsquare as station_gridsquare');
- $this->db->where('date_format(COL_TIME_ON, \'%Y-%m-%d %H:%i\') = "'.$datetime.'"');
- $this->db->where('COL_CALL', $callsign);
- $this->db->where('COL_BAND', $band);
- $this->db->join('station_profile', $this->config->item('table_name').'.station_id = station_profile.station_id', 'left outer');
- $this->db->limit(1);
- $query = $this->db->get($this->config->item('table_name'));
- $row = $query->row();
- $station_gridsquare = '';
- if (isset($row)) {
- $station_gridsquare = $row->station_gridsquare;
- }
- if(!$this->load->is_loaded('Qra')) {
- $this->load->library('Qra');
- }
- if ($qsl_gridsquare != "") {
- $data['COL_GRIDSQUARE'] = $qsl_gridsquare;
- $data['COL_DISTANCE'] = $this->qra->distance($station_gridsquare, $qsl_gridsquare, 'K');
- } elseif ($qsl_vucc_grids != "") {
- $data['COL_VUCC_GRIDS'] = $qsl_vucc_grids;
- $data['COL_DISTANCE'] = $this->qra->distance($station_gridsquare, $qsl_vucc_grids, 'K');
- }
+ $this->db->select('station_profile.station_gridsquare as station_gridsquare');
+ $this->db->where('date_format(COL_TIME_ON, \'%Y-%m-%d %H:%i\') = "' . $datetime . '"');
+ $this->db->where('COL_CALL', $callsign);
+ $this->db->where('COL_BAND', $band);
+ $this->db->join('station_profile', $this->config->item('table_name') . '.station_id = station_profile.station_id', 'left outer');
+ $this->db->limit(1);
+ $query = $this->db->get($this->config->item('table_name'));
+ $row = $query->row();
+ $station_gridsquare = '';
+ if (isset($row)) {
+ $station_gridsquare = $row->station_gridsquare;
+ }
+ if (!$this->load->is_loaded('Qra')) {
+ $this->load->library('Qra');
+ }
+ if ($qsl_gridsquare != "") {
+ $data['COL_GRIDSQUARE'] = $qsl_gridsquare;
+ $data['COL_DISTANCE'] = $this->qra->distance($station_gridsquare, $qsl_gridsquare, 'K');
+ } elseif ($qsl_vucc_grids != "") {
+ $data['COL_VUCC_GRIDS'] = $qsl_vucc_grids;
+ $data['COL_DISTANCE'] = $this->qra->distance($station_gridsquare, $qsl_vucc_grids, 'K');
+ }
- $this->db->where('date_format(COL_TIME_ON, \'%Y-%m-%d %H:%i\') = "'.$datetime.'"');
+ $this->db->where('date_format(COL_TIME_ON, \'%Y-%m-%d %H:%i\') = "' . $datetime . '"');
$this->db->where('COL_CALL', $callsign);
$this->db->where('COL_BAND', $band);
@@ -3061,44 +3116,47 @@ function lotw_update($datetime, $callsign, $band, $qsl_date, $qsl_status, $state
return "Updated";
}
- function qrz_last_qsl_date($user_id) {
- $sql="SELECT date_format(MAX(COALESCE(COL_QRZCOM_QSO_DOWNLOAD_DATE, str_to_date('1900-01-01','%Y-%m-%d'))),'%Y-%m-%d') MAXDATE
- FROM ".$this->config->item('table_name')." INNER JOIN station_profile ON (".$this->config->item('table_name').".station_id = station_profile.station_id)
+ function qrz_last_qsl_date($user_id)
+ {
+ $sql = "SELECT date_format(MAX(COALESCE(COL_QRZCOM_QSO_DOWNLOAD_DATE, str_to_date('1900-01-01','%Y-%m-%d'))),'%Y-%m-%d') MAXDATE
+ FROM " . $this->config->item('table_name') . " INNER JOIN station_profile ON (" . $this->config->item('table_name') . ".station_id = station_profile.station_id)
WHERE station_profile.user_id=? and station_profile.qrzapikey is not null and COL_QRZCOM_QSO_DOWNLOAD_DATE is not null";
- $query = $this->db->query($sql,$user_id);
- $row = $query->row();
- if (isset($row) && ($row->MAXDATE ?? '' != '')) {
- return $row->MAXDATE;
- } else {
- return '1900-01-01';
- }
+ $query = $this->db->query($sql, $user_id);
+ $row = $query->row();
+ if (isset($row) && ($row->MAXDATE ?? '' != '')) {
+ return $row->MAXDATE;
+ } else {
+ return '1900-01-01';
+ }
}
-function lotw_last_qsl_date($user_id) {
- $sql="SELECT MAX(COALESCE(COL_LOTW_QSLRDATE, '1900-01-01 00:00:00')) MAXDATE
- FROM ".$this->config->item('table_name')." INNER JOIN station_profile ON (".$this->config->item('table_name').".station_id = station_profile.station_id)
- WHERE station_profile.user_id=".$user_id." and COL_LOTW_QSLRDATE is not null";
- $query = $this->db->query($sql);
- $row = $query->row();
+ function lotw_last_qsl_date($user_id)
+ {
+ $sql = "SELECT MAX(COALESCE(COL_LOTW_QSLRDATE, '1900-01-01 00:00:00')) MAXDATE
+ FROM " . $this->config->item('table_name') . " INNER JOIN station_profile ON (" . $this->config->item('table_name') . ".station_id = station_profile.station_id)
+ WHERE station_profile.user_id=" . $user_id . " and COL_LOTW_QSLRDATE is not null";
+ $query = $this->db->query($sql);
+ $row = $query->row();
- if (isset($row)) {
- return $row->MAXDATE;
- }
+ if (isset($row)) {
+ return $row->MAXDATE;
+ }
- return '1900-01-01 00:00:00.000';
+ return '1900-01-01 00:00:00.000';
}
- function import_bulk($records, $station_id = "0", $skipDuplicate = false, $markClublog = false, $markLotw = false, $dxccAdif = false, $markQrz = false, $markHrd = false,$skipexport = false, $operatorName = false, $apicall = false, $skipStationCheck = false) {
- $custom_errors='';
- foreach ($records as $record) {
- $one_error = $this->logbook_model->import($record, $station_id, $skipDuplicate, $markClublog, $markLotw,$dxccAdif, $markQrz, $markHrd, $skipexport, $operatorName, $apicall, $skipStationCheck);
- if ($one_error != '') {
- $custom_errors.=$one_error."
";
- }
- }
- return $custom_errors;
+ function import_bulk($records, $station_id = "0", $skipDuplicate = false, $markClublog = false, $markLotw = false, $dxccAdif = false, $markQrz = false, $markHrd = false, $skipexport = false, $operatorName = false, $apicall = false, $skipStationCheck = false)
+ {
+ $custom_errors = '';
+ foreach ($records as $record) {
+ $one_error = $this->logbook_model->import($record, $station_id, $skipDuplicate, $markClublog, $markLotw, $dxccAdif, $markQrz, $markHrd, $skipexport, $operatorName, $apicall, $skipStationCheck);
+ if ($one_error != '') {
+ $custom_errors .= $one_error . "
";
+ }
+ }
+ return $custom_errors;
}
- /*
+ /*
* $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
* $dxccAdif - used in ADIF import to determine if DXCC From ADIF is used, or if Cloudlog should try to guess
@@ -3106,787 +3164,791 @@ function lotw_last_qsl_date($user_id) {
* $markHrd - used in ADIF import to mark QSOs as exported to HRDLog.net Logbook when importing QSOs
* $skipexport - used in ADIF import to skip the realtime upload to QRZ Logbook when importing QSOs from ADIF
*/
- function import($record, $station_id = "0", $skipDuplicate = false, $markClublog = false, $markLotw = false, $dxccAdif = false, $markQrz = false, $markHrd = false,$skipexport = false, $operatorName = false, $apicall = false, $skipStationCheck = false) {
- // be sure that station belongs to user
- $this->load->model('stations');
- if (!$this->stations->check_station_is_accessible($station_id) && $apicall == false ) {
- return 'Station not accessible
';
- }
+ function import($record, $station_id = "0", $skipDuplicate = false, $markClublog = false, $markLotw = false, $dxccAdif = false, $markQrz = false, $markHrd = false, $skipexport = false, $operatorName = false, $apicall = false, $skipStationCheck = false)
+ {
+ // be sure that station belongs to user
+ $this->load->model('stations');
+ if (!$this->stations->check_station_is_accessible($station_id) && $apicall == false) {
+ return 'Station not accessible
';
+ }
- $station_profile=$this->stations->profile_clean($station_id);
- $station_profile_call=$station_profile->station_callsign;
+ $station_profile = $this->stations->profile_clean($station_id);
+ $station_profile_call = $station_profile->station_callsign;
- if (($station_id !=0 ) && (!(isset($record['station_callsign'])))) {
- $record['station_callsign']=$station_profile_call;
- }
+ if (($station_id != 0) && (!(isset($record['station_callsign'])))) {
+ $record['station_callsign'] = $station_profile_call;
+ }
- if ((!$skipStationCheck) && ($station_id != 0) && (strtoupper($record['station_callsign']) != strtoupper($station_profile_call))) { // Check if station_call from import matches profile ONLY when submitting via GUI.
- return "Wrong station callsign \"".htmlentities($record['station_callsign'])."\" while importing QSO with ".$record['call']." for ".$station_profile_call." : SKIPPED" .
- "
See the Cloudlog Wiki for hints about errors in ADIF files.";
- }
+ if ((!$skipStationCheck) && ($station_id != 0) && (strtoupper($record['station_callsign']) != strtoupper($station_profile_call))) { // Check if station_call from import matches profile ONLY when submitting via GUI.
+ return "Wrong station callsign \"" . htmlentities($record['station_callsign']) . "\" while importing QSO with " . $record['call'] . " for " . $station_profile_call . " : SKIPPED" .
+ "
See the Cloudlog Wiki for hints about errors in ADIF files.";
+ }
- $this->load->library('frequency');
- $my_error = "";
+ $this->load->library('frequency');
+ $my_error = "";
- // Join date+time
- $time_on = date('Y-m-d', strtotime($record['qso_date'])) ." ".date('H:i:s', strtotime($record['time_on']));
+ // Join date+time
+ $time_on = date('Y-m-d', strtotime($record['qso_date'])) . " " . date('H:i:s', strtotime($record['time_on']));
- if (isset($record['time_off'])) {
- if (isset($record['date_off'])) {
- // date_off and time_off set
- $time_off = date('Y-m-d', strtotime($record['date_off'])) . ' ' . date('H:i:s', strtotime($record['time_off']));
- } elseif (strtotime($record['time_off']) < strtotime($record['time_on'])) {
- // date_off is not set, QSO ends next day
- $time_off = date('Y-m-d', strtotime($record['qso_date'] . ' + 1 day')) . ' ' . date('H:i:s', strtotime($record['time_off']));
- } else {
- // date_off is not set, QSO ends same day
- $time_off = date('Y-m-d', strtotime($record['qso_date'])) . ' ' . date('H:i:s', strtotime($record['time_off']));
- }
- } else {
- // date_off and time_off not set, QSO end == QSO start
- $time_off = $time_on;
- }
+ if (isset($record['time_off'])) {
+ if (isset($record['date_off'])) {
+ // date_off and time_off set
+ $time_off = date('Y-m-d', strtotime($record['date_off'])) . ' ' . date('H:i:s', strtotime($record['time_off']));
+ } elseif (strtotime($record['time_off']) < strtotime($record['time_on'])) {
+ // date_off is not set, QSO ends next day
+ $time_off = date('Y-m-d', strtotime($record['qso_date'] . ' + 1 day')) . ' ' . date('H:i:s', strtotime($record['time_off']));
+ } else {
+ // date_off is not set, QSO ends same day
+ $time_off = date('Y-m-d', strtotime($record['qso_date'])) . ' ' . date('H:i:s', strtotime($record['time_off']));
+ }
+ } else {
+ // date_off and time_off not set, QSO end == QSO start
+ $time_off = $time_on;
+ }
- // Store Freq
- // Check if 'freq' is defined in the import?
- if (isset($record['freq'])){ // record[freq] in MHz
- $freq = floatval($record['freq']) * 1E6; // store in Hz
- } else {
- $freq = 0;
- }
+ // Store Freq
+ // Check if 'freq' is defined in the import?
+ if (isset($record['freq'])) { // record[freq] in MHz
+ $freq = floatval($record['freq']) * 1E6; // store in Hz
+ } else {
+ $freq = 0;
+ }
- // Check for RX Freq
- // Check if 'freq' is defined in the import?
- if (isset($record['freq_rx'])){ // record[freq] in MHz
- $freqRX = floatval($record['freq_rx']) * 1E6; // store in Hz
- } else {
- $freqRX = NULL;
- }
+ // Check for RX Freq
+ // Check if 'freq' is defined in the import?
+ if (isset($record['freq_rx'])) { // record[freq] in MHz
+ $freqRX = floatval($record['freq_rx']) * 1E6; // store in Hz
+ } else {
+ $freqRX = NULL;
+ }
- // Store Band
- if(isset($record['band'])) {
- $band = strtolower($record['band']);
- } else {
- if (isset($record['freq'])){
- if($freq != "0") {
- $band = $this->frequency->GetBand($freq);
- }
- }
- }
+ // Store Band
+ if (isset($record['band'])) {
+ $band = strtolower($record['band']);
+ } else {
+ if (isset($record['freq'])) {
+ if ($freq != "0") {
+ $band = $this->frequency->GetBand($freq);
+ }
+ }
+ }
- if(isset($record['band_rx'])) {
- $band_rx = strtolower($record['band_rx']);
- } else {
- if (isset($record['freq_rx'])){
- if($freq != "0") {
- $band_rx = $this->frequency->GetBand($freqRX);
- }
- } else {
- $band_rx = "";
- }
- }
+ if (isset($record['band_rx'])) {
+ $band_rx = strtolower($record['band_rx']);
+ } else {
+ if (isset($record['freq_rx'])) {
+ if ($freq != "0") {
+ $band_rx = $this->frequency->GetBand($freqRX);
+ }
+ } else {
+ $band_rx = "";
+ }
+ }
- if (isset($record['mode'])) {
- $input_mode = $record['mode'];
- } else {
- $input_mode = '';
- }
+ if (isset($record['mode'])) {
+ $input_mode = $record['mode'];
+ } else {
+ $input_mode = '';
+ }
- $mode = $this->get_main_mode_if_submode($input_mode);
- if ($mode == null) {
- $submode = null;
- } else {
- $submode = $input_mode;
- $input_mode = $mode;
- }
+ $mode = $this->get_main_mode_if_submode($input_mode);
+ if ($mode == null) {
+ $submode = null;
+ } else {
+ $submode = $input_mode;
+ $input_mode = $mode;
+ }
- if (empty($submode)) {
- $input_submode = (!empty($record['submode'])) ? $record['submode'] : '';
- } else {
- $input_submode = $submode;
- }
+ if (empty($submode)) {
+ $input_submode = (!empty($record['submode'])) ? $record['submode'] : '';
+ } else {
+ $input_submode = $submode;
+ }
- // Check if QSO is already in the database
- if ($skipDuplicate != NULL) {
- $skip = false;
- } else {
- if (isset($record['call'])){
- $this->db->where('COL_CALL', $record['call']);
- }
- $this->db->where("DATE_FORMAT(COL_TIME_ON, '%Y-%m-%d %H:%i') = DATE_FORMAT(\"".$time_on."\", '%Y-%m-%d %H:%i')");
- $this->db->where('COL_BAND', $band);
- $this->db->where('COL_MODE', $input_mode);
- $this->db->where('station_id', $station_id);
- $check = $this->db->get($this->config->item('table_name'));
+ // Check if QSO is already in the database
+ if ($skipDuplicate != NULL) {
+ $skip = false;
+ } else {
+ if (isset($record['call'])) {
+ $this->db->where('COL_CALL', $record['call']);
+ }
+ $this->db->where("DATE_FORMAT(COL_TIME_ON, '%Y-%m-%d %H:%i') = DATE_FORMAT(\"" . $time_on . "\", '%Y-%m-%d %H:%i')");
+ $this->db->where('COL_BAND', $band);
+ $this->db->where('COL_MODE', $input_mode);
+ $this->db->where('station_id', $station_id);
+ $check = $this->db->get($this->config->item('table_name'));
- // If dupe is not found, set variable to add QSO
- if ($check->num_rows() <= 0) {
- $skip = false;
- } else {
- $skip = true;
- }
- }
+ // If dupe is not found, set variable to add QSO
+ if ($check->num_rows() <= 0) {
+ $skip = false;
+ } else {
+ $skip = true;
+ }
+ }
- if (!($skip)) {
- // DXCC id
- if (isset($record['call'])){
- if ($dxccAdif != NULL) {
- if (isset($record['dxcc'])) {
- $entity = $this->get_entity($record['dxcc']);
- $dxcc = array($record['dxcc'], $entity['name']);
- } else {
- $dxcc = $this->check_dxcc_table($record['call'], $time_off);
- }
- } else {
- $dxcc = $this->check_dxcc_table($record['call'], $time_off);
- }
- } else {
- $dxcc = NULL;
- }
+ if (!($skip)) {
+ // DXCC id
+ if (isset($record['call'])) {
+ if ($dxccAdif != NULL) {
+ if (isset($record['dxcc'])) {
+ $entity = $this->get_entity($record['dxcc']);
+ $dxcc = array($record['dxcc'], $entity['name']);
+ } else {
+ $dxcc = $this->check_dxcc_table($record['call'], $time_off);
+ }
+ } else {
+ $dxcc = $this->check_dxcc_table($record['call'], $time_off);
+ }
+ } else {
+ $dxcc = NULL;
+ }
- // Store or find country name
- // dxcc has higher priority to be consistent with qso create and edit
- if (isset($dxcc[1])) {
- $country = ucwords(strtolower($dxcc[1]), "- (/");
- } else if (isset($record['country'])) {
- $country = $record['country'];
- }
+ // Store or find country name
+ // dxcc has higher priority to be consistent with qso create and edit
+ if (isset($dxcc[1])) {
+ $country = ucwords(strtolower($dxcc[1]), "- (/");
+ } else if (isset($record['country'])) {
+ $country = $record['country'];
+ }
- // RST recevied
- if(isset($record['rst_rcvd'])) {
- $rst_rx = $record['rst_rcvd'];
- } else {
- $rst_rx = "59";
- }
+ // RST recevied
+ if (isset($record['rst_rcvd'])) {
+ $rst_rx = $record['rst_rcvd'];
+ } else {
+ $rst_rx = "59";
+ }
- // RST Sent
- if(isset($record['rst_sent'])) {
- $rst_tx = $record['rst_sent'];
- } else {
- $rst_tx = "59";
- }
+ // RST Sent
+ if (isset($record['rst_sent'])) {
+ $rst_tx = $record['rst_sent'];
+ } else {
+ $rst_tx = "59";
+ }
- if(isset($record['cqz'])) {
- $cq_zone = $record['cqz'];
- } elseif(isset($dxcc[2])) {
- $cq_zone = $dxcc[2];
- } else {
- $cq_zone = NULL;
- }
+ if (isset($record['cqz'])) {
+ $cq_zone = $record['cqz'];
+ } elseif (isset($dxcc[2])) {
+ $cq_zone = $dxcc[2];
+ } else {
+ $cq_zone = NULL;
+ }
- // Sanitise gridsquare input to make sure its a gridsquare
- if (isset($record['gridsquare'])){
- $a_grids=explode(',',$record['gridsquare']); // Split at , if there are junctions
- foreach ($a_grids as $singlegrid) {
- $singlegrid=strtoupper($singlegrid);
- if (strlen($singlegrid) == 4) $singlegrid .= "LL"; // Only 4 Chars? Fill with center "LL" as only A-R allowed
- if (strlen($singlegrid) == 6) $singlegrid .= "55"; // Only 6 Chars? Fill with center "55"
- if (strlen($singlegrid) == 8) $singlegrid .= "LL"; // Only 8 Chars? Fill with center "LL" as only A-R allowed
- if (strlen($singlegrid)%2 != 0) { // Check if grid is structually valid
- $record['gridsquare']=''; // If not: Set to ''
- } else {
- if (!preg_match('/^[A-R]{2}[0-9]{2}[A-X]{2}[0-9]{2}[A-X]{2}$/', $singlegrid)) $record['gridsquare']='';
- }
- }
- $input_gridsquare = $record['gridsquare'];
- } else {
- $input_gridsquare = NULL;
- }
+ // Sanitise gridsquare input to make sure its a gridsquare
+ if (isset($record['gridsquare'])) {
+ $a_grids = explode(',', $record['gridsquare']); // Split at , if there are junctions
+ foreach ($a_grids as $singlegrid) {
+ $singlegrid = strtoupper($singlegrid);
+ if (strlen($singlegrid) == 4) $singlegrid .= "LL"; // Only 4 Chars? Fill with center "LL" as only A-R allowed
+ if (strlen($singlegrid) == 6) $singlegrid .= "55"; // Only 6 Chars? Fill with center "55"
+ if (strlen($singlegrid) == 8) $singlegrid .= "LL"; // Only 8 Chars? Fill with center "LL" as only A-R allowed
+ if (strlen($singlegrid) % 2 != 0) { // Check if grid is structually valid
+ $record['gridsquare'] = ''; // If not: Set to ''
+ } else {
+ if (!preg_match('/^[A-R]{2}[0-9]{2}[A-X]{2}[0-9]{2}[A-X]{2}$/', $singlegrid)) $record['gridsquare'] = '';
+ }
+ }
+ $input_gridsquare = $record['gridsquare'];
+ } else {
+ $input_gridsquare = NULL;
+ }
- // Sanitise vucc-gridsquare input to make sure its a gridsquare
- if (isset($record['vucc_grids'])){
- $a_grids=explode(',',$record['vucc_grids']); // Split at , if there are junctions
- foreach ($a_grids as $singlegrid) {
- $singlegrid=strtoupper(trim($singlegrid));
- if (strlen($singlegrid) == 4) $singlegrid .= "LL"; // Only 4 Chars? Fill with center "LL" as only A-R allowed
- if (strlen($singlegrid) == 6) $singlegrid .= "55"; // Only 6 Chars? Fill with center "55"
- if (strlen($singlegrid) == 8) $singlegrid .= "LL"; // Only 8 Chars? Fill with center "LL" as only A-R allowed
- if (strlen($singlegrid)%2 != 0) { // Check if grid is structually valid
- $record['vucc_grids']=''; // If not: Set to ''
- } else {
- if (!preg_match('/^[A-R]{2}[0-9]{2}[A-X]{2}[0-9]{2}[A-X]{2}$/', $singlegrid)) $record['vucc_grids']='';
- }
- }
- $input_vucc_grids = preg_replace('/\s+/', '', $record['vucc_grids']);
- } else {
- $input_vucc_grids = NULL;
- }
+ // Sanitise vucc-gridsquare input to make sure its a gridsquare
+ if (isset($record['vucc_grids'])) {
+ $a_grids = explode(',', $record['vucc_grids']); // Split at , if there are junctions
+ foreach ($a_grids as $singlegrid) {
+ $singlegrid = strtoupper(trim($singlegrid));
+ if (strlen($singlegrid) == 4) $singlegrid .= "LL"; // Only 4 Chars? Fill with center "LL" as only A-R allowed
+ if (strlen($singlegrid) == 6) $singlegrid .= "55"; // Only 6 Chars? Fill with center "55"
+ if (strlen($singlegrid) == 8) $singlegrid .= "LL"; // Only 8 Chars? Fill with center "LL" as only A-R allowed
+ if (strlen($singlegrid) % 2 != 0) { // Check if grid is structually valid
+ $record['vucc_grids'] = ''; // If not: Set to ''
+ } else {
+ if (!preg_match('/^[A-R]{2}[0-9]{2}[A-X]{2}[0-9]{2}[A-X]{2}$/', $singlegrid)) $record['vucc_grids'] = '';
+ }
+ }
+ $input_vucc_grids = preg_replace('/\s+/', '', $record['vucc_grids']);
+ } else {
+ $input_vucc_grids = NULL;
+ }
- // Sanitise lat input to make sure its 11 chars
- if (isset($record['lat'])){
- $input_lat = mb_strimwidth($record['lat'], 0, 11);
- }else{
- $input_lat = NULL;
- }
+ // Sanitise lat input to make sure its 11 chars
+ if (isset($record['lat'])) {
+ $input_lat = mb_strimwidth($record['lat'], 0, 11);
+ } else {
+ $input_lat = NULL;
+ }
- // Sanitise lon input to make sure its 11 chars
- if (isset($record['lon'])){
- $input_lon = mb_strimwidth($record['lon'], 0, 11);
- }else{
- $input_lon = NULL;
- }
+ // Sanitise lon input to make sure its 11 chars
+ if (isset($record['lon'])) {
+ $input_lon = mb_strimwidth($record['lon'], 0, 11);
+ } else {
+ $input_lon = NULL;
+ }
- // Sanitise my_lat input to make sure its 11 chars
- if (isset($record['my_lat'])){
- $input_my_lat = mb_strimwidth($record['my_lat'], 0, 11);
- }else{
- $input_my_lat = NULL;
- }
+ // Sanitise my_lat input to make sure its 11 chars
+ if (isset($record['my_lat'])) {
+ $input_my_lat = mb_strimwidth($record['my_lat'], 0, 11);
+ } else {
+ $input_my_lat = NULL;
+ }
- // Sanitise my_lon input to make sure its 11 chars
- if (isset($record['my_lon'])){
- $input_my_lon = mb_strimwidth($record['my_lon'], 0, 11);
- }else{
- $input_my_lon = NULL;
- }
+ // Sanitise my_lon input to make sure its 11 chars
+ if (isset($record['my_lon'])) {
+ $input_my_lon = mb_strimwidth($record['my_lon'], 0, 11);
+ } else {
+ $input_my_lon = NULL;
+ }
- // Sanitise TX_POWER
- if (isset($record['tx_pwr'])){
- $tx_pwr = filter_var($record['tx_pwr'],FILTER_VALIDATE_FLOAT);
- }else{
- $tx_pwr = NULL;
- }
+ // Sanitise TX_POWER
+ if (isset($record['tx_pwr'])) {
+ $tx_pwr = filter_var($record['tx_pwr'], FILTER_VALIDATE_FLOAT);
+ } else {
+ $tx_pwr = NULL;
+ }
- // Sanitise RX Power
- if (isset($record['rx_pwr'])){
- // Check if RX_PWR is "K" which N1MM+ uses to indicate 1000W
- if($record['rx_pwr'] == "K") {
- $rx_pwr = 1000;
- } else {
- $rx_pwr = filter_var($record['rx_pwr'],FILTER_VALIDATE_FLOAT);
- }
- }else{
- $rx_pwr = NULL;
- }
+ // Sanitise RX Power
+ if (isset($record['rx_pwr'])) {
+ // Check if RX_PWR is "K" which N1MM+ uses to indicate 1000W
+ if ($record['rx_pwr'] == "K") {
+ $rx_pwr = 1000;
+ } else {
+ $rx_pwr = filter_var($record['rx_pwr'], FILTER_VALIDATE_FLOAT);
+ }
+ } else {
+ $rx_pwr = NULL;
+ }
- if (isset($record['a_index'])){
- $input_a_index = filter_var($record['a_index'],FILTER_SANITIZE_NUMBER_INT);
- } else {
- $input_a_index = NULL;
- }
+ if (isset($record['a_index'])) {
+ $input_a_index = filter_var($record['a_index'], FILTER_SANITIZE_NUMBER_INT);
+ } else {
+ $input_a_index = NULL;
+ }
- if (isset($record['age'])){
- $input_age = filter_var($record['age'],FILTER_SANITIZE_NUMBER_INT);
- } else {
- $input_age = NULL;
- }
+ if (isset($record['age'])) {
+ $input_age = filter_var($record['age'], FILTER_SANITIZE_NUMBER_INT);
+ } else {
+ $input_age = NULL;
+ }
- if (isset($record['ant_az'])){
- $input_ant_az = filter_var($record['ant_az'],FILTER_SANITIZE_NUMBER_INT);
- } else {
- $input_ant_az = NULL;
- }
+ if (isset($record['ant_az'])) {
+ $input_ant_az = filter_var($record['ant_az'], FILTER_SANITIZE_NUMBER_INT);
+ } else {
+ $input_ant_az = NULL;
+ }
- if (isset($record['ant_el'])){
- $input_ant_el = filter_var($record['ant_el'],FILTER_SANITIZE_NUMBER_INT);
- } else {
- $input_ant_el = NULL;
- }
+ if (isset($record['ant_el'])) {
+ $input_ant_el = filter_var($record['ant_el'], FILTER_SANITIZE_NUMBER_INT);
+ } else {
+ $input_ant_el = NULL;
+ }
- if (isset($record['ant_path'])){
- $input_ant_path = mb_strimwidth($record['ant_path'], 0, 1);
- } else {
- $input_ant_path = NULL;
- }
+ if (isset($record['ant_path'])) {
+ $input_ant_path = mb_strimwidth($record['ant_path'], 0, 1);
+ } else {
+ $input_ant_path = NULL;
+ }
- /*
+ /*
Validate QSL Fields
qslrdate, qslsdate
*/
- if (isset($record['qslrdate'])){
- if(validateADIFDate($record['qslrdate']) == true){
- $input_qslrdate = $record['qslrdate'];
- } else {
- $input_qslrdate = NULL;
- $my_error .= "Error QSO: Date: ".$time_on." Callsign: ".$record['call']." the qslrdate is invalid (YYYYMMDD): ".$record['qslrdate']."
";
- }
- } else {
- $input_qslrdate = NULL;
- }
+ if (isset($record['qslrdate'])) {
+ if (validateADIFDate($record['qslrdate']) == true) {
+ $input_qslrdate = $record['qslrdate'];
+ } else {
+ $input_qslrdate = NULL;
+ $my_error .= "Error QSO: Date: " . $time_on . " Callsign: " . $record['call'] . " the qslrdate is invalid (YYYYMMDD): " . $record['qslrdate'] . "
";
+ }
+ } else {
+ $input_qslrdate = NULL;
+ }
- if (isset($record['qslsdate'])){
- if(validateADIFDate($record['qslsdate']) == true){
- $input_qslsdate = $record['qslsdate'];
- } else {
- $input_qslsdate = NULL;
- $my_error .= "Error QSO: Date: ".$time_on." Callsign: ".$record['call']." the qslsdate is invalid (YYYYMMDD): ".$record['qslsdate']."
";
- }
- } else {
- $input_qslsdate = NULL;
- }
+ if (isset($record['qslsdate'])) {
+ if (validateADIFDate($record['qslsdate']) == true) {
+ $input_qslsdate = $record['qslsdate'];
+ } else {
+ $input_qslsdate = NULL;
+ $my_error .= "Error QSO: Date: " . $time_on . " Callsign: " . $record['call'] . " the qslsdate is invalid (YYYYMMDD): " . $record['qslsdate'] . "
";
+ }
+ } else {
+ $input_qslsdate = NULL;
+ }
- if (isset($record['qsl_rcvd'])){
- $input_qsl_rcvd = mb_strimwidth($record['qsl_rcvd'], 0, 1);
- } else {
- $input_qsl_rcvd = "N";
- }
+ if (isset($record['qsl_rcvd'])) {
+ $input_qsl_rcvd = mb_strimwidth($record['qsl_rcvd'], 0, 1);
+ } else {
+ $input_qsl_rcvd = "N";
+ }
- if (isset($record['qsl_rcvd_via'])){
- $input_qsl_rcvd_via = mb_strimwidth($record['qsl_rcvd_via'], 0, 1);
- } else {
- $input_qsl_rcvd_via = "";
- }
+ if (isset($record['qsl_rcvd_via'])) {
+ $input_qsl_rcvd_via = mb_strimwidth($record['qsl_rcvd_via'], 0, 1);
+ } else {
+ $input_qsl_rcvd_via = "";
+ }
- if (isset($record['qsl_sent'])){
- $input_qsl_sent = mb_strimwidth($record['qsl_sent'], 0, 1);
- } else {
- $input_qsl_sent = "N";
- }
+ if (isset($record['qsl_sent'])) {
+ $input_qsl_sent = mb_strimwidth($record['qsl_sent'], 0, 1);
+ } else {
+ $input_qsl_sent = "N";
+ }
- if (isset($record['qsl_sent_via'])){
- $input_qsl_sent_via = mb_strimwidth($record['qsl_sent_via'], 0, 1);
- } else {
- $input_qsl_sent_via = "";
- }
+ if (isset($record['qsl_sent_via'])) {
+ $input_qsl_sent_via = mb_strimwidth($record['qsl_sent_via'], 0, 1);
+ } else {
+ $input_qsl_sent_via = "";
+ }
- // Validate Clublog-Fields
- if (isset($record['clublog_qso_upload_status'])){
- $input_clublog_qsl_sent = mb_strimwidth($record['clublog_qso_upload_status'], 0, 1);
- } else if ($markClublog != NULL) {
- $input_clublog_qsl_sent = "Y";
- } else {
- $input_clublog_qsl_sent = NULL;
- }
+ // Validate Clublog-Fields
+ if (isset($record['clublog_qso_upload_status'])) {
+ $input_clublog_qsl_sent = mb_strimwidth($record['clublog_qso_upload_status'], 0, 1);
+ } else if ($markClublog != NULL) {
+ $input_clublog_qsl_sent = "Y";
+ } else {
+ $input_clublog_qsl_sent = NULL;
+ }
- if (isset($record['clublog_qso_upload_date'])){
- if(validateADIFDate($record['clublog_qso_upload_date']) == true){
- $input_clublog_qslsdate = $record['clublog_qso_upload_date'];
- } else {
- $input_clublog_qslsdate = NULL;
- $my_error .= "Error QSO: Date: ".$time_on." Callsign: ".$record['call']." the clublog_qso_upload_date is invalid (YYYYMMDD): ".$record['clublog_qso_upload_date']."
";
- }
- } else {
- $input_clublog_qslsdate = NULL;
- }
+ if (isset($record['clublog_qso_upload_date'])) {
+ if (validateADIFDate($record['clublog_qso_upload_date']) == true) {
+ $input_clublog_qslsdate = $record['clublog_qso_upload_date'];
+ } else {
+ $input_clublog_qslsdate = NULL;
+ $my_error .= "Error QSO: Date: " . $time_on . " Callsign: " . $record['call'] . " the clublog_qso_upload_date is invalid (YYYYMMDD): " . $record['clublog_qso_upload_date'] . "
";
+ }
+ } else {
+ $input_clublog_qslsdate = NULL;
+ }
- /*
+ /*
Validate LoTW Fields
*/
- if (isset($record['lotw_qsl_rcvd'])){
- $input_lotw_qsl_rcvd = mb_strimwidth($record['lotw_qsl_rcvd'], 0, 1);
- } else {
- $input_lotw_qsl_rcvd = NULL;
- }
+ if (isset($record['lotw_qsl_rcvd'])) {
+ $input_lotw_qsl_rcvd = mb_strimwidth($record['lotw_qsl_rcvd'], 0, 1);
+ } else {
+ $input_lotw_qsl_rcvd = NULL;
+ }
- if (isset($record['lotw_qslrdate'])){
- if(validateADIFDate($record['lotw_qslrdate']) == true){
- $input_lotw_qslrdate = $record['lotw_qslrdate'];
- } else {
- $input_lotw_qslrdate = NULL;
- $my_error .= "Error QSO: Date: ".$time_on." Callsign: ".$record['call']." the lotw_qslrdate is invalid (YYYYMMDD): ".$record['lotw_qslrdate']."
";
- }
- } else {
- $input_lotw_qslrdate = NULL;
- }
-
- if (isset($record['lotw_qsl_sent'])){
- $input_lotw_qsl_sent = mb_strimwidth($record['lotw_qsl_sent'], 0, 1);
- } else if ($markLotw != NULL) {
- $input_lotw_qsl_sent = "Y";
- } else {
- $input_lotw_qsl_sent = NULL;
- }
-
- if (isset($record['lotw_qslsdate'])){
- if(validateADIFDate($record['lotw_qslsdate']) == true){
- $input_lotw_qslsdate = $record['lotw_qslsdate'];
- } else {
- $input_lotw_qslsdate = NULL;
- $my_error .= "Error QSO: Date: ".$time_on." Callsign: ".$record['call']." the lotw_qslsdate is invalid (YYYYMMDD): ".$record['lotw_qslsdate']."
";
- }
- } else if ($markLotw != NULL) {
- $input_lotw_qslsdate = $date = date("Y-m-d H:i:s", strtotime("now"));
- } else {
- $input_lotw_qslsdate = NULL;
- }
-
- // Get active station_id from station profile if one hasn't been provided
- if($station_id == "" || $station_id == "0") {
- $this->load->model('stations');
- $station_id = $this->stations->find_active();
- }
-
-
- if ($operatorName != false) {
- $operatorName = $this->session->userdata('user_callsign');
- } else {
- $operatorName = (!empty($record['operator'])) ? $record['operator'] : '';
- }
-
- // If user checked to mark QSOs as uploaded to QRZ or HRDLog Logbook, or else we try to find info in ADIF import.
- if ($markHrd != null) {
- $input_hrdlog_qso_upload_status = 'Y';
- $input_hrdlog_qso_upload_date = $date = date("Y-m-d H:i:s", strtotime("now"));
- } else {
- $input_hrdlog_qso_upload_date = (!empty($record['hrdlog_qso_upload_date'])) ? $record['hrdlog_qso_upload_date'] : null;
- $input_hrdlog_qso_upload_status = (!empty($record['hrdlog_qso_upload_status'])) ? $record['hrdlog_qso_upload_status'] : '';
- }
-
- if ($markQrz != null) {
- $input_qrzcom_qso_upload_status = 'Y';
- $input_qrzcom_qso_upload_date = $date = date("Y-m-d H:i:s", strtotime("now"));
- } else {
- $input_qrzcom_qso_upload_date = (!empty($record['qrzcom_qso_upload_date'])) ? $record['qrzcom_qso_upload_date'] : null;
- $input_qrzcom_qso_upload_status = (!empty($record['qrzcom_qso_upload_status'])) ? $record['qrzcom_qso_upload_status'] : '';
- }
-
- // Create array with QSO Data use ?:
- $data = array(
- 'COL_A_INDEX' => $input_a_index,
- 'COL_ADDRESS' => (!empty($record['address'])) ? $record['address'] : '',
- 'COL_ADDRESS_INTL' => (!empty($record['address_intl'])) ? $record['address_intl'] : '',
- 'COL_AGE' => $input_age,
- 'COL_ANT_AZ' => $input_ant_az,
- 'COL_ANT_EL' => $input_ant_el,
- 'COL_ANT_PATH' => $input_ant_path,
- 'COL_ARRL_SECT' => (!empty($record['arrl_sect'])) ? $record['arrl_sect'] : '',
- 'COL_AWARD_GRANTED' => (!empty($record['award_granted'])) ? $record['award_granted'] : '',
- 'COL_AWARD_SUBMITTED' => (!empty($record['award_submitted'])) ? $record['award_submitted'] : '',
- 'COL_BAND' => $band,
- 'COL_BAND_RX' => $band_rx,
- 'COL_BIOGRAPHY' => (!empty($record['biography'])) ? $record['biography'] : '',
- 'COL_CALL' => (!empty($record['call'])) ? strtoupper($record['call']) : '',
- 'COL_CHECK' => (!empty($record['check'])) ? $record['check'] : '',
- 'COL_CLASS' => (!empty($record['class'])) ? $record['class'] : '',
- 'COL_CLUBLOG_QSO_UPLOAD_DATE' => $input_clublog_qslsdate,
- 'COL_CLUBLOG_QSO_UPLOAD_STATUS' => $input_clublog_qsl_sent,
- 'COL_CNTY' => (!empty($record['cnty'])) ? $record['cnty'] : '',
- 'COL_COMMENT' => (!empty($record['comment'])) ? $record['comment'] : '',
- 'COL_COMMENT_INTL' => (!empty($record['comment_intl'])) ? $record['comment_intl'] : '',
- 'COL_CONT' => (!empty($record['cont'])) ? $record['cont'] : '',
- 'COL_CONTACTED_OP' => (!empty($record['contacted_op'])) ? $record['contacted_op'] : '',
- 'COL_CONTEST_ID' => (!empty($record['contest_id'])) ? $record['contest_id'] : '',
- 'COL_COUNTRY' => $country,
- 'COL_COUNTRY_INTL' => (!empty($record['country_intl'])) ? $record['country_intl'] : '',
- 'COL_CQZ' => $cq_zone,
- 'COL_CREDIT_GRANTED' => (!empty($record['credit_granted'])) ? $record['credit_granted'] : '',
- 'COL_CREDIT_SUBMITTED' => (!empty($record['credit_submitted'])) ? $record['credit_submitted'] : '',
- 'COL_DARC_DOK' => (!empty($record['darc_dok'])) ? strtoupper($record['darc_dok']) : '',
- 'COL_DISTANCE' => (!empty($record['distance'])) ? $record['distance'] : null,
- 'COL_DXCC' => $dxcc[0],
- 'COL_EMAIL' => (!empty($record['email'])) ? $record['email'] : '',
- 'COL_EQ_CALL' => (!empty($record['eq_call'])) ? $record['eq_call'] : '',
- 'COL_EQSL_QSL_RCVD' => (!empty($record['eqsl_qsl_rcvd'])) ? $record['eqsl_qsl_rcvd'] : null,
- 'COL_EQSL_QSL_SENT' => (!empty($record['eqsl_qsl_sent'])) ? $record['eqsl_qsl_sent'] : null,
- 'COL_EQSL_QSLRDATE' => (!empty($record['eqsl_qslrdate'])) ? $record['eqsl_qslrdate'] : null,
- 'COL_EQSL_QSLSDATE' => (!empty($record['eqsl_qslsdate'])) ? $record['eqsl_qslsdate'] : null,
- 'COL_EQSL_STATUS' => (!empty($record['eqsl_status'])) ? $record['eqsl_status'] : '',
- 'COL_FISTS' => (!empty($record['fists'])) ? $record['fists'] : null,
- 'COL_FISTS_CC' => (!empty($record['fists_cc'])) ? $record['fists_cc'] : null,
- 'COL_FORCE_INIT' => (!empty($record['force_init'])) ? $record['force_init'] : null,
- 'COL_FREQ' => $freq,
- 'COL_FREQ_RX' => (!empty($record['freq_rx'])) ? $freqRX : null,
- 'COL_GRIDSQUARE' => $input_gridsquare,
- 'COL_HEADING' => (!empty($record['heading'])) ? $record['heading'] : null,
- 'COL_HRDLOG_QSO_UPLOAD_DATE' => (!empty($record['hrdlog_qso_upload_date'])) ? $record['hrdlog_qso_upload_date'] : null,
- 'COL_HRDLOG_QSO_UPLOAD_STATUS' => (!empty($record['hrdlog_qso_upload_status'])) ? $record['hrdlog_qso_upload_status'] : '',
- 'COL_IOTA' => (!empty($record['iota'])) ? $record['iota'] : '',
- 'COL_ITUZ' => (!empty($record['ituz'])) ? $record['ituz'] : null,
- 'COL_K_INDEX' => (!empty($record['k_index'])) ? $record['k_index'] : null,
- 'COL_LAT' => $input_lat,
- 'COL_LON' => $input_lon,
- 'COL_LOTW_QSL_RCVD' => $input_lotw_qsl_rcvd,
- 'COL_LOTW_QSL_SENT' => $input_lotw_qsl_sent,
- 'COL_LOTW_QSLRDATE' => $input_lotw_qslrdate,
- 'COL_LOTW_QSLSDATE' => $input_lotw_qslsdate,
- 'COL_LOTW_STATUS' => (!empty($record['lotw_status'])) ? $record['lotw_status'] : '',
- 'COL_MAX_BURSTS' => (!empty($record['max_bursts'])) ? $record['max_bursts'] : null,
- 'COL_MODE' => $input_mode,
- 'COL_MS_SHOWER' => (!empty($record['ms_shower'])) ? $record['ms_shower'] : '',
- 'COL_MY_ANTENNA' => (!empty($record['my_antenna'])) ? $record['my_antenna'] : '',
- 'COL_MY_ANTENNA_INTL' => (!empty($record['my_antenna_intl'])) ? $record['my_antenna_intl'] : '',
- 'COL_MY_CITY' => (!empty($record['my_city'])) ? $record['my_city'] : '',
- 'COL_MY_CITY_INTL' => (!empty($record['my_city_intl'])) ? $record['my_city_intl'] : '',
- 'COL_MY_CNTY' => (!empty($record['my_cnty'])) ? $record['my_cnty'] : '',
- 'COL_MY_COUNTRY' => (!empty($record['my_country'])) ? $record['my_country'] : '',
- 'COL_MY_COUNTRY_INTL' => (!empty($record['my_country_intl'])) ? $record['my_country_intl'] : null,
- 'COL_MY_CQ_ZONE' => (!empty($record['my_dxcc'])) ? $record['my_dxcc'] : null,
- 'COL_MY_DXCC' => (!empty($record['my_dxcc'])) ? $record['my_dxcc'] : null,
- 'COL_MY_FISTS' => (!empty($record['my_fists'])) ? $record['my_fists'] : null,
- 'COL_MY_GRIDSQUARE' => (!empty($record['my_gridsquare'])) ? $record['my_gridsquare'] : '',
- 'COL_MY_IOTA' => (!empty($record['my_iota'])) ? $record['my_iota'] : '',
- 'COL_MY_IOTA_ISLAND_ID' => (!empty($record['my_iota_island_id'])) ? $record['my_iota_island_id'] : '',
- 'COL_MY_ITU_ZONE' => (!empty($record['my_itu_zone'])) ? $record['my_itu_zone'] : null,
- 'COL_MY_LAT' => $input_my_lat,
- 'COL_MY_LON' => $input_my_lon,
- 'COL_MY_NAME' => (!empty($record['my_name'])) ? $record['my_name'] : '',
- 'COL_MY_NAME_INTL' => (!empty($record['my_name_intl'])) ? $record['my_name_intl'] : '',
- 'COL_MY_POSTAL_CODE' => (!empty($record['my_postal_code'])) ? $record['my_postal_code'] : '',
- 'COL_MY_POSTCODE_INTL' => (!empty($record['my_postcode_intl'])) ? $record['my_postcode_intl'] : '',
- 'COL_MY_RIG' => (!empty($record['my_rig'])) ? $record['my_rig'] : '',
- 'COL_MY_RIG_INTL' => (!empty($record['my_rig_intl'])) ? $record['my_rig_intl'] : '',
- 'COL_MY_SIG' => (!empty($record['my_sig'])) ? $record['my_sig'] : '',
- 'COL_MY_SIG_INFO' => (!empty($record['my_sig_info'])) ? $record['my_sig_info'] : '',
- 'COL_MY_SIG_INFO_INTL' => (!empty($record['my_sig_info_intl'])) ? $record['my_sig_info_intl'] : '',
- 'COL_MY_SIG_INTL' => (!empty($record['my_sig_intl'])) ? $record['my_sig_intl'] : '',
- 'COL_MY_SOTA_REF' => (!empty($record['my_sota_ref'])) ? $record['my_sota_ref'] : '',
- 'COL_MY_WWFF_REF' => (!empty($record['my_wwff_ref'])) ? $record['my_wwff_ref'] : '',
- 'COL_MY_POTA_REF' => (!empty($record['my_pota_ref'])) ? $record['my_pota_ref'] : '',
- 'COL_MY_STATE' => (!empty($record['my_state'])) ? $record['my_state'] : '',
- 'COL_MY_STREET' => (!empty($record['my_street'])) ? $record['my_street'] : '',
- 'COL_MY_STREET_INTL' => (!empty($record['my_street_intl'])) ? $record['my_street_intl'] : '',
- 'COL_MY_USACA_COUNTIES' => (!empty($record['my_usaca_counties'])) ? $record['my_usaca_counties'] : '',
- 'COL_MY_VUCC_GRIDS' => (!empty($record['my_vucc_grids'])) ? $record['my_vucc_grids'] : '',
- 'COL_NAME' => (!empty($record['name'])) ? $record['name'] : '',
- 'COL_NAME_INTL' => (!empty($record['name_intl'])) ? $record['name_intl']: '',
- 'COL_NOTES' => (!empty($record['notes'])) ? $record['notes'] : '',
- 'COL_NOTES_INTL' => (!empty($record['notes_intl'])) ? $record['notes_intl'] : '',
- 'COL_NR_BURSTS' => (!empty($record['nr_bursts'])) ? $record['nr_bursts'] : null,
- 'COL_NR_PINGS' => (!empty($record['nr_pings'])) ? $record['nr_pings'] : null,
- 'COL_OPERATOR' => $operatorName,
- 'COL_OWNER_CALLSIGN' => (!empty($record['owner_callsign'])) ? $record['owner_callsign'] : '',
- 'COL_PFX' => (!empty($record['pfx'])) ? $record['pfx'] : '',
- 'COL_PRECEDENCE' => (!empty($record['precedence'])) ? $record['precedence'] : '',
- 'COL_PROP_MODE' => (!empty($record['prop_mode'])) ? $record['prop_mode'] : '',
- 'COL_PUBLIC_KEY' => (!empty($record['public_key'])) ? $record['public_key'] : '',
- 'COL_HRDLOG_QSO_UPLOAD_DATE' => $input_hrdlog_qso_upload_date,
- 'COL_HRDLOG_QSO_UPLOAD_STATUS' => $input_hrdlog_qso_upload_status,
- 'COL_QRZCOM_QSO_UPLOAD_DATE' => $input_qrzcom_qso_upload_date,
- 'COL_QRZCOM_QSO_UPLOAD_STATUS' => $input_qrzcom_qso_upload_status,
- 'COL_QSL_RCVD' => $input_qsl_rcvd,
- 'COL_QSL_RCVD_VIA' => $input_qsl_rcvd_via,
- 'COL_QSL_SENT' => $input_qsl_sent,
- 'COL_QSL_SENT_VIA' => $input_qsl_sent_via,
- 'COL_QSL_VIA' => (!empty($record['qsl_via'])) ? $record['qsl_via'] : '',
- 'COL_QSLMSG' => (!empty($record['qslmsg'])) ? $record['qslmsg'] : '',
- 'COL_QSLRDATE' => $input_qslrdate,
- 'COL_QSLSDATE' => $input_qslsdate,
- 'COL_QSO_COMPLETE' => (!empty($record['qso_complete'])) ? $record['qso_complete'] : '',
- 'COL_QSO_DATE' => (!empty($record['qso_date'])) ? $record['qso_date'] : null,
- 'COL_QSO_DATE_OFF' => (!empty($record['qso_date_off'])) ? $record['qso_date_off'] : null,
- 'COL_QTH' => (!empty($record['qth'])) ? $record['qth'] : '',
- 'COL_QTH_INTL' => (!empty($record['qth_intl'])) ? $record['qth_intl'] : '',
- 'COL_REGION' => (!empty($record['region'])) ? $record['region'] : '',
- 'COL_RIG' => (!empty($record['rig'])) ? $record['rig'] : '',
- 'COL_RIG_INTL' => (!empty($record['rig_intl'])) ? $record['rig_intl'] : '',
- 'COL_RST_RCVD' => $rst_rx,
- 'COL_RST_SENT' => $rst_tx,
- 'COL_RX_PWR' => $rx_pwr,
- 'COL_SAT_MODE' => (!empty($record['sat_mode'])) ? $record['sat_mode'] : '',
- 'COL_SAT_NAME' => (!empty($record['sat_name'])) ? $record['sat_name'] : '',
- 'COL_SFI' => (!empty($record['sfi'])) ? $record['sfi'] : null,
- 'COL_SIG' => (!empty($record['sig'])) ? $record['sig'] : '',
- 'COL_SIG_INFO' => (!empty($record['sig_info'])) ? $record['sig_info'] : '',
- 'COL_SIG_INFO_INTL' => (!empty($record['sig_info_intl'])) ? $record['sig_info_intl'] : '',
- 'COL_SIG_INTL' => (!empty($record['sig_intl'])) ? $record['sig_intl'] : '',
- 'COL_SILENT_KEY' => (!empty($record['silent_key'])) ? $record['silent_key'] : '',
- 'COL_SKCC' => (!empty($record['skcc'])) ? $record['skcc'] : '',
- 'COL_SOTA_REF' => (!empty($record['sota_ref'])) ? $record['sota_ref'] : '',
- 'COL_WWFF_REF' => (!empty($record['wwff_ref'])) ? $record['wwff_ref'] : '',
- 'COL_POTA_REF' => (!empty($record['pota_ref'])) ? $record['pota_ref'] : '',
- 'COL_SRX' => (!empty($record['srx'])) ? (int)$record['srx'] : null,
- //convert to integer to make sure no invalid entries are imported
- 'COL_SRX_STRING' => (!empty($record['srx_string'])) ? $record['srx_string'] : '',
- 'COL_STATE' => (!empty($record['state'])) ? strtoupper($record['state']) : '',
- 'COL_STATION_CALLSIGN' => (!empty($record['station_callsign'])) ? $record['station_callsign'] : '',
- //convert to integer to make sure no invalid entries are imported
- 'COL_STX' => (!empty($record['stx'])) ? (int)$record['stx'] : null,
- 'COL_STX_STRING' => (!empty($record['stx_string'])) ? $record['stx_string'] : '',
- 'COL_SUBMODE' => $input_submode,
- 'COL_SWL' => (!empty($record['swl'])) ? $record['swl'] : null,
- 'COL_TEN_TEN' => (!empty($record['ten_ten'])) ? $record['ten_ten'] : null,
- 'COL_TIME_ON' => $time_on,
- 'COL_TIME_OFF' => $time_off,
- 'COL_TX_PWR' => (!empty($tx_pwr)) ? $tx_pwr : null,
- 'COL_UKSMG' => (!empty($record['uksmg'])) ? $record['uksmg'] : '',
- 'COL_USACA_COUNTIES' => (!empty($record['usaca_counties'])) ? $record['usaca_counties'] : '',
- 'COL_VUCC_GRIDS' => $input_vucc_grids,
- 'COL_WEB' => (!empty($record['web'])) ? $record['web'] : ''
- );
-
- // Collect field information from the station profile table thats required for the QSO.
- if($station_id != "0") {
- $this->db->select('station_profile.*, dxcc_entities.name as station_country');
- $this->db->where('station_id', $station_id);
- $this->db->join('dxcc_entities', 'station_profile.station_dxcc = dxcc_entities.adif', 'left outer');
- $station_result = $this->db->get('station_profile');
-
- if ($station_result->num_rows() > 0){
- $data['station_id'] = $station_id;
-
- $row = $station_result->row_array();
-
- if (strpos(trim($row['station_gridsquare']), ',') !== false) {
- $data['COL_MY_VUCC_GRIDS'] = strtoupper(trim($row['station_gridsquare']));
- } else {
- $data['COL_MY_GRIDSQUARE'] = strtoupper(trim($row['station_gridsquare']));
- }
-
- $data['COL_MY_CITY'] = trim($row['station_city']);
- $data['COL_MY_IOTA'] = strtoupper(trim($row['station_iota']));
- $data['COL_MY_SOTA_REF'] = strtoupper(trim($row['station_sota']));
- $data['COL_MY_WWFF_REF'] = strtoupper(trim($row['station_wwff']));
- $data['COL_MY_POTA_REF'] = $row['station_pota'] == null ? '' : strtoupper(trim($row['station_pota']));
-
- $data['COL_STATION_CALLSIGN'] = strtoupper(trim($row['station_callsign']));
- $data['COL_MY_DXCC'] = strtoupper(trim($row['station_dxcc']));
- $data['COL_MY_COUNTRY'] = strtoupper(trim($row['station_country']));
- $data['COL_MY_CNTY'] = strtoupper(trim($row['station_cnty']));
- $data['COL_MY_CQ_ZONE'] = strtoupper(trim($row['station_cq']));
- $data['COL_MY_ITU_ZONE'] = strtoupper(trim($row['station_itu']));
- }
- }
-
- // Save QSO
- $this->add_qso($data, $skipexport);
- } else {
- $my_error .= "Date/Time: ".$time_on." Callsign: ".$record['call']." Band: ".$band." Duplicate
";
- }
-
- return $my_error;
- }
-
- function update_dok($record, $ignoreAmbiguous, $onlyConfirmed, $overwriteDok) {
- $this->load->model('logbooks_model');
- $custom_date_format = $this->session->userdata('user_date_format');
- $logbooks_locations_array = $this->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
-
- if(isset($record['call'])) {
- $call = strtoupper($record['call']);
+ if (isset($record['lotw_qslrdate'])) {
+ if (validateADIFDate($record['lotw_qslrdate']) == true) {
+ $input_lotw_qslrdate = $record['lotw_qslrdate'];
} else {
- return array(3, 'Callsign not found');
+ $input_lotw_qslrdate = NULL;
+ $my_error .= "Error QSO: Date: " . $time_on . " Callsign: " . $record['call'] . " the lotw_qslrdate is invalid (YYYYMMDD): " . $record['lotw_qslrdate'] . "
";
}
+ } else {
+ $input_lotw_qslrdate = NULL;
+ }
- // Join date+time
- $time_on = date('Y-m-d', strtotime($record['qso_date'])) ." ".date('H:i', strtotime($record['time_on']));
+ if (isset($record['lotw_qsl_sent'])) {
+ $input_lotw_qsl_sent = mb_strimwidth($record['lotw_qsl_sent'], 0, 1);
+ } else if ($markLotw != NULL) {
+ $input_lotw_qsl_sent = "Y";
+ } else {
+ $input_lotw_qsl_sent = NULL;
+ }
- // Store Band
- if(isset($record['band'])) {
- $band = strtolower($record['band']);
+ if (isset($record['lotw_qslsdate'])) {
+ if (validateADIFDate($record['lotw_qslsdate']) == true) {
+ $input_lotw_qslsdate = $record['lotw_qslsdate'];
} else {
- if (isset($record['freq'])){
- if($record['freq'] != "0") {
- $band = $this->frequency->GetBand($record['freq']);
- }
- }
+ $input_lotw_qslsdate = NULL;
+ $my_error .= "Error QSO: Date: " . $time_on . " Callsign: " . $record['call'] . " the lotw_qslsdate is invalid (YYYYMMDD): " . $record['lotw_qslsdate'] . "
";
}
+ } else if ($markLotw != NULL) {
+ $input_lotw_qslsdate = $date = date("Y-m-d H:i:s", strtotime("now"));
+ } else {
+ $input_lotw_qslsdate = NULL;
+ }
- if (isset($record['mode'])) {
- $mode = $record['mode'];
- } else {
- $mode = '';
- }
+ // Get active station_id from station profile if one hasn't been provided
+ if ($station_id == "" || $station_id == "0") {
+ $this->load->model('stations');
+ $station_id = $this->stations->find_active();
+ }
- if (isset($record['darc_dok'])) {
- $darc_dok = $record['darc_dok'];
- } else {
- $darc_dok = '';
- }
- if ($darc_dok != '') {
- $this->db->select('COL_PRIMARY_KEY, COL_DARC_DOK');
- $this->db->where('COL_CALL', $call);
- $this->db->like('COL_TIME_ON', $time_on, 'after');
- $this->db->where('COL_BAND', $band);
- $this->db->where('COL_MODE', $mode);
- $this->db->where_in('station_id', $logbooks_locations_array);
- $check = $this->db->get($this->config->item('table_name'));
- if ($check->num_rows() != 1) {
- if ($ignoreAmbiguous == '1') {
- return array();
- } else {
- return array(2, $result['message'] = "".date($custom_date_format, strtotime($record['qso_date']))." | ".date('H:i', strtotime($record['time_on']))." | ".str_replace('0', 'Ø', $call)." | ".$band." | ".$mode." | | ".(preg_match('/^[A-Y]\d{2}$/', $darc_dok) ? ''.$darc_dok.'' : (preg_match('/^Z\d{2}$/', $darc_dok) ? ''.$darc_dok.'' : $darc_dok))." | ".lang('dcl_no_match')." |
");
- }
- } else {
- $dcl_qsl_status = '';
- switch($record['app_dcl_status']) {
- case 'c':
- $dcl_qsl_status = lang('dcl_qsl_status_c');
- break;
- case 'm':
- case 'n':
- case 'o':
- $dcl_qsl_status = lang('dcl_qsl_status_mno');
- break;
- case 'i':
- $dcl_qsl_status = lang('dcl_qsl_status_i');
- break;
- case 'w':
- $dcl_qsl_status = lang('dcl_qsl_status_w');
- break;
- case 'x':
- $dcl_qsl_status = lang('dcl_qsl_status_x');
- break;
- default:
- $dcl_qsl_status = lang('dcl_qsl_status_unknown');
- }
- if ($check->row()->COL_DARC_DOK != $darc_dok) {
- $dcl_cnfm = array('c', 'm', 'n', 'o', 'i');
- // Ref https://confluence.darc.de/pages/viewpage.action?pageId=21037270
- if ($onlyConfirmed == '1') {
- if (in_array($record['app_dcl_status'], $dcl_cnfm)) {
- if ($check->row()->COL_DARC_DOK == '' || $overwriteDok == '1') {
- $this->set_dok($check->row()->COL_PRIMARY_KEY, $darc_dok);
- return array(0, '');
- } else {
- return array(1, $result['message'] = "".date($custom_date_format, strtotime($record['qso_date']))." | ".date('H:i', strtotime($record['time_on']))." | row()->COL_PRIMARY_KEY.")\">".str_replace('0', 'Ø', $call)." | ".$band." | ".$mode." | ".($check->row()->COL_DARC_DOK == '' ? 'n/a' : (preg_match('/^[A-Y]\d{2}$/', $check->row()->COL_DARC_DOK) ? ''.$check->row()->COL_DARC_DOK.'' : (preg_match('/^Z\d{2}$/', $check->row()->COL_DARC_DOK) ? ''.$check->row()->COL_DARC_DOK.'' : $check->row()->COL_DARC_DOK)))." | ".(preg_match('/^[A-Y]\d{2}$/', $darc_dok) ? ''.$darc_dok.'' : (preg_match('/^Z\d{2}$/', $darc_dok) ? ''.$darc_dok.'' : $darc_dok))." | ".$dcl_qsl_status." |
");
- }
+ if ($operatorName != false) {
+ $operatorName = $this->session->userdata('user_callsign');
+ } else {
+ $operatorName = (!empty($record['operator'])) ? $record['operator'] : '';
+ }
- } else {
- return array(1, $result['message'] = "".date($custom_date_format, strtotime($record['qso_date']))." | ".date('H:i', strtotime($record['time_on']))." | row()->COL_PRIMARY_KEY.")\">".str_replace('0', 'Ø', $call)." | ".$band." | ".$mode." | ".($check->row()->COL_DARC_DOK == '' ? 'n/a' : (preg_match('/^[A-Y]\d{2}$/', $check->row()->COL_DARC_DOK) ? ''.$check->row()->COL_DARC_DOK.'' : (preg_match('/^Z\d{2}$/', $check->row()->COL_DARC_DOK) ? ''.$check->row()->COL_DARC_DOK.'' : $check->row()->COL_DARC_DOK)))." | ".(preg_match('/^[A-Y]\d{2}$/', $darc_dok) ? ''.$darc_dok.'' : (preg_match('/^Z\d{2}$/', $darc_dok) ? ''.$darc_dok.'' : $darc_dok))." | ".$dcl_qsl_status." |
");
- }
- } else {
- if ($check->row()->COL_DARC_DOK == '' || $overwriteDok == '1') {
- $this->set_dok($check->row()->COL_PRIMARY_KEY, $darc_dok);
- return array(0, '');
- } else {
- return array(1, $result['message'] = "".date($custom_date_format, strtotime($record['qso_date']))." | ".date('H:i', strtotime($record['time_on']))." | row()->COL_PRIMARY_KEY.")\">".str_replace('0', 'Ø', $call)." | ".$band." | ".$mode." | ".($check->row()->COL_DARC_DOK == '' ? 'n/a' : (preg_match('/^[A-Y]\d{2}$/', $check->row()->COL_DARC_DOK) ? ''.$check->row()->COL_DARC_DOK.'' : (preg_match('/^Z\d{2}$/', $check->row()->COL_DARC_DOK) ? ''.$check->row()->COL_DARC_DOK.'' : $check->row()->COL_DARC_DOK)))." | ".(preg_match('/^[A-Y]\d{2}$/', $darc_dok) ? ''.$darc_dok.'' : (preg_match('/^Z\d{2}$/', $darc_dok) ? ''.$darc_dok.'' : $darc_dok))." | ".$dcl_qsl_status." |
");
- }
- }
- }
- }
- }
+ // If user checked to mark QSOs as uploaded to QRZ or HRDLog Logbook, or else we try to find info in ADIF import.
+ if ($markHrd != null) {
+ $input_hrdlog_qso_upload_status = 'Y';
+ $input_hrdlog_qso_upload_date = $date = date("Y-m-d H:i:s", strtotime("now"));
+ } else {
+ $input_hrdlog_qso_upload_date = (!empty($record['hrdlog_qso_upload_date'])) ? $record['hrdlog_qso_upload_date'] : null;
+ $input_hrdlog_qso_upload_status = (!empty($record['hrdlog_qso_upload_status'])) ? $record['hrdlog_qso_upload_status'] : '';
+ }
- }
+ if ($markQrz != null) {
+ $input_qrzcom_qso_upload_status = 'Y';
+ $input_qrzcom_qso_upload_date = $date = date("Y-m-d H:i:s", strtotime("now"));
+ } else {
+ $input_qrzcom_qso_upload_date = (!empty($record['qrzcom_qso_upload_date'])) ? $record['qrzcom_qso_upload_date'] : null;
+ $input_qrzcom_qso_upload_status = (!empty($record['qrzcom_qso_upload_status'])) ? $record['qrzcom_qso_upload_status'] : '';
+ }
- function set_dok($key, $dok) {
+ // Create array with QSO Data use ?:
$data = array(
- 'COL_DARC_DOK' => $dok,
+ 'COL_A_INDEX' => $input_a_index,
+ 'COL_ADDRESS' => (!empty($record['address'])) ? $record['address'] : '',
+ 'COL_ADDRESS_INTL' => (!empty($record['address_intl'])) ? $record['address_intl'] : '',
+ 'COL_AGE' => $input_age,
+ 'COL_ANT_AZ' => $input_ant_az,
+ 'COL_ANT_EL' => $input_ant_el,
+ 'COL_ANT_PATH' => $input_ant_path,
+ 'COL_ARRL_SECT' => (!empty($record['arrl_sect'])) ? $record['arrl_sect'] : '',
+ 'COL_AWARD_GRANTED' => (!empty($record['award_granted'])) ? $record['award_granted'] : '',
+ 'COL_AWARD_SUBMITTED' => (!empty($record['award_submitted'])) ? $record['award_submitted'] : '',
+ 'COL_BAND' => $band,
+ 'COL_BAND_RX' => $band_rx,
+ 'COL_BIOGRAPHY' => (!empty($record['biography'])) ? $record['biography'] : '',
+ 'COL_CALL' => (!empty($record['call'])) ? strtoupper($record['call']) : '',
+ 'COL_CHECK' => (!empty($record['check'])) ? $record['check'] : '',
+ 'COL_CLASS' => (!empty($record['class'])) ? $record['class'] : '',
+ 'COL_CLUBLOG_QSO_UPLOAD_DATE' => $input_clublog_qslsdate,
+ 'COL_CLUBLOG_QSO_UPLOAD_STATUS' => $input_clublog_qsl_sent,
+ 'COL_CNTY' => (!empty($record['cnty'])) ? $record['cnty'] : '',
+ 'COL_COMMENT' => (!empty($record['comment'])) ? $record['comment'] : '',
+ 'COL_COMMENT_INTL' => (!empty($record['comment_intl'])) ? $record['comment_intl'] : '',
+ 'COL_CONT' => (!empty($record['cont'])) ? $record['cont'] : '',
+ 'COL_CONTACTED_OP' => (!empty($record['contacted_op'])) ? $record['contacted_op'] : '',
+ 'COL_CONTEST_ID' => (!empty($record['contest_id'])) ? $record['contest_id'] : '',
+ 'COL_COUNTRY' => $country,
+ 'COL_COUNTRY_INTL' => (!empty($record['country_intl'])) ? $record['country_intl'] : '',
+ 'COL_CQZ' => $cq_zone,
+ 'COL_CREDIT_GRANTED' => (!empty($record['credit_granted'])) ? $record['credit_granted'] : '',
+ 'COL_CREDIT_SUBMITTED' => (!empty($record['credit_submitted'])) ? $record['credit_submitted'] : '',
+ 'COL_DARC_DOK' => (!empty($record['darc_dok'])) ? strtoupper($record['darc_dok']) : '',
+ 'COL_DISTANCE' => (!empty($record['distance'])) ? $record['distance'] : null,
+ 'COL_DXCC' => $dxcc[0],
+ 'COL_EMAIL' => (!empty($record['email'])) ? $record['email'] : '',
+ 'COL_EQ_CALL' => (!empty($record['eq_call'])) ? $record['eq_call'] : '',
+ 'COL_EQSL_QSL_RCVD' => (!empty($record['eqsl_qsl_rcvd'])) ? $record['eqsl_qsl_rcvd'] : null,
+ 'COL_EQSL_QSL_SENT' => (!empty($record['eqsl_qsl_sent'])) ? $record['eqsl_qsl_sent'] : null,
+ 'COL_EQSL_QSLRDATE' => (!empty($record['eqsl_qslrdate'])) ? $record['eqsl_qslrdate'] : null,
+ 'COL_EQSL_QSLSDATE' => (!empty($record['eqsl_qslsdate'])) ? $record['eqsl_qslsdate'] : null,
+ 'COL_EQSL_STATUS' => (!empty($record['eqsl_status'])) ? $record['eqsl_status'] : '',
+ 'COL_FISTS' => (!empty($record['fists'])) ? $record['fists'] : null,
+ 'COL_FISTS_CC' => (!empty($record['fists_cc'])) ? $record['fists_cc'] : null,
+ 'COL_FORCE_INIT' => (!empty($record['force_init'])) ? $record['force_init'] : null,
+ 'COL_FREQ' => $freq,
+ 'COL_FREQ_RX' => (!empty($record['freq_rx'])) ? $freqRX : null,
+ 'COL_GRIDSQUARE' => $input_gridsquare,
+ 'COL_HEADING' => (!empty($record['heading'])) ? $record['heading'] : null,
+ 'COL_HRDLOG_QSO_UPLOAD_DATE' => (!empty($record['hrdlog_qso_upload_date'])) ? $record['hrdlog_qso_upload_date'] : null,
+ 'COL_HRDLOG_QSO_UPLOAD_STATUS' => (!empty($record['hrdlog_qso_upload_status'])) ? $record['hrdlog_qso_upload_status'] : '',
+ 'COL_IOTA' => (!empty($record['iota'])) ? $record['iota'] : '',
+ 'COL_ITUZ' => (!empty($record['ituz'])) ? $record['ituz'] : null,
+ 'COL_K_INDEX' => (!empty($record['k_index'])) ? $record['k_index'] : null,
+ 'COL_LAT' => $input_lat,
+ 'COL_LON' => $input_lon,
+ 'COL_LOTW_QSL_RCVD' => $input_lotw_qsl_rcvd,
+ 'COL_LOTW_QSL_SENT' => $input_lotw_qsl_sent,
+ 'COL_LOTW_QSLRDATE' => $input_lotw_qslrdate,
+ 'COL_LOTW_QSLSDATE' => $input_lotw_qslsdate,
+ 'COL_LOTW_STATUS' => (!empty($record['lotw_status'])) ? $record['lotw_status'] : '',
+ 'COL_MAX_BURSTS' => (!empty($record['max_bursts'])) ? $record['max_bursts'] : null,
+ 'COL_MODE' => $input_mode,
+ 'COL_MS_SHOWER' => (!empty($record['ms_shower'])) ? $record['ms_shower'] : '',
+ 'COL_MY_ANTENNA' => (!empty($record['my_antenna'])) ? $record['my_antenna'] : '',
+ 'COL_MY_ANTENNA_INTL' => (!empty($record['my_antenna_intl'])) ? $record['my_antenna_intl'] : '',
+ 'COL_MY_CITY' => (!empty($record['my_city'])) ? $record['my_city'] : '',
+ 'COL_MY_CITY_INTL' => (!empty($record['my_city_intl'])) ? $record['my_city_intl'] : '',
+ 'COL_MY_CNTY' => (!empty($record['my_cnty'])) ? $record['my_cnty'] : '',
+ 'COL_MY_COUNTRY' => (!empty($record['my_country'])) ? $record['my_country'] : '',
+ 'COL_MY_COUNTRY_INTL' => (!empty($record['my_country_intl'])) ? $record['my_country_intl'] : null,
+ 'COL_MY_CQ_ZONE' => (!empty($record['my_dxcc'])) ? $record['my_dxcc'] : null,
+ 'COL_MY_DXCC' => (!empty($record['my_dxcc'])) ? $record['my_dxcc'] : null,
+ 'COL_MY_FISTS' => (!empty($record['my_fists'])) ? $record['my_fists'] : null,
+ 'COL_MY_GRIDSQUARE' => (!empty($record['my_gridsquare'])) ? $record['my_gridsquare'] : '',
+ 'COL_MY_IOTA' => (!empty($record['my_iota'])) ? $record['my_iota'] : '',
+ 'COL_MY_IOTA_ISLAND_ID' => (!empty($record['my_iota_island_id'])) ? $record['my_iota_island_id'] : '',
+ 'COL_MY_ITU_ZONE' => (!empty($record['my_itu_zone'])) ? $record['my_itu_zone'] : null,
+ 'COL_MY_LAT' => $input_my_lat,
+ 'COL_MY_LON' => $input_my_lon,
+ 'COL_MY_NAME' => (!empty($record['my_name'])) ? $record['my_name'] : '',
+ 'COL_MY_NAME_INTL' => (!empty($record['my_name_intl'])) ? $record['my_name_intl'] : '',
+ 'COL_MY_POSTAL_CODE' => (!empty($record['my_postal_code'])) ? $record['my_postal_code'] : '',
+ 'COL_MY_POSTCODE_INTL' => (!empty($record['my_postcode_intl'])) ? $record['my_postcode_intl'] : '',
+ 'COL_MY_RIG' => (!empty($record['my_rig'])) ? $record['my_rig'] : '',
+ 'COL_MY_RIG_INTL' => (!empty($record['my_rig_intl'])) ? $record['my_rig_intl'] : '',
+ 'COL_MY_SIG' => (!empty($record['my_sig'])) ? $record['my_sig'] : '',
+ 'COL_MY_SIG_INFO' => (!empty($record['my_sig_info'])) ? $record['my_sig_info'] : '',
+ 'COL_MY_SIG_INFO_INTL' => (!empty($record['my_sig_info_intl'])) ? $record['my_sig_info_intl'] : '',
+ 'COL_MY_SIG_INTL' => (!empty($record['my_sig_intl'])) ? $record['my_sig_intl'] : '',
+ 'COL_MY_SOTA_REF' => (!empty($record['my_sota_ref'])) ? $record['my_sota_ref'] : '',
+ 'COL_MY_WWFF_REF' => (!empty($record['my_wwff_ref'])) ? $record['my_wwff_ref'] : '',
+ 'COL_MY_POTA_REF' => (!empty($record['my_pota_ref'])) ? $record['my_pota_ref'] : '',
+ 'COL_MY_STATE' => (!empty($record['my_state'])) ? $record['my_state'] : '',
+ 'COL_MY_STREET' => (!empty($record['my_street'])) ? $record['my_street'] : '',
+ 'COL_MY_STREET_INTL' => (!empty($record['my_street_intl'])) ? $record['my_street_intl'] : '',
+ 'COL_MY_USACA_COUNTIES' => (!empty($record['my_usaca_counties'])) ? $record['my_usaca_counties'] : '',
+ 'COL_MY_VUCC_GRIDS' => (!empty($record['my_vucc_grids'])) ? $record['my_vucc_grids'] : '',
+ 'COL_NAME' => (!empty($record['name'])) ? $record['name'] : '',
+ 'COL_NAME_INTL' => (!empty($record['name_intl'])) ? $record['name_intl'] : '',
+ 'COL_NOTES' => (!empty($record['notes'])) ? $record['notes'] : '',
+ 'COL_NOTES_INTL' => (!empty($record['notes_intl'])) ? $record['notes_intl'] : '',
+ 'COL_NR_BURSTS' => (!empty($record['nr_bursts'])) ? $record['nr_bursts'] : null,
+ 'COL_NR_PINGS' => (!empty($record['nr_pings'])) ? $record['nr_pings'] : null,
+ 'COL_OPERATOR' => $operatorName,
+ 'COL_OWNER_CALLSIGN' => (!empty($record['owner_callsign'])) ? $record['owner_callsign'] : '',
+ 'COL_PFX' => (!empty($record['pfx'])) ? $record['pfx'] : '',
+ 'COL_PRECEDENCE' => (!empty($record['precedence'])) ? $record['precedence'] : '',
+ 'COL_PROP_MODE' => (!empty($record['prop_mode'])) ? $record['prop_mode'] : '',
+ 'COL_PUBLIC_KEY' => (!empty($record['public_key'])) ? $record['public_key'] : '',
+ 'COL_HRDLOG_QSO_UPLOAD_DATE' => $input_hrdlog_qso_upload_date,
+ 'COL_HRDLOG_QSO_UPLOAD_STATUS' => $input_hrdlog_qso_upload_status,
+ 'COL_QRZCOM_QSO_UPLOAD_DATE' => $input_qrzcom_qso_upload_date,
+ 'COL_QRZCOM_QSO_UPLOAD_STATUS' => $input_qrzcom_qso_upload_status,
+ 'COL_QSL_RCVD' => $input_qsl_rcvd,
+ 'COL_QSL_RCVD_VIA' => $input_qsl_rcvd_via,
+ 'COL_QSL_SENT' => $input_qsl_sent,
+ 'COL_QSL_SENT_VIA' => $input_qsl_sent_via,
+ 'COL_QSL_VIA' => (!empty($record['qsl_via'])) ? $record['qsl_via'] : '',
+ 'COL_QSLMSG' => (!empty($record['qslmsg'])) ? $record['qslmsg'] : '',
+ 'COL_QSLRDATE' => $input_qslrdate,
+ 'COL_QSLSDATE' => $input_qslsdate,
+ 'COL_QSO_COMPLETE' => (!empty($record['qso_complete'])) ? $record['qso_complete'] : '',
+ 'COL_QSO_DATE' => (!empty($record['qso_date'])) ? $record['qso_date'] : null,
+ 'COL_QSO_DATE_OFF' => (!empty($record['qso_date_off'])) ? $record['qso_date_off'] : null,
+ 'COL_QTH' => (!empty($record['qth'])) ? $record['qth'] : '',
+ 'COL_QTH_INTL' => (!empty($record['qth_intl'])) ? $record['qth_intl'] : '',
+ 'COL_REGION' => (!empty($record['region'])) ? $record['region'] : '',
+ 'COL_RIG' => (!empty($record['rig'])) ? $record['rig'] : '',
+ 'COL_RIG_INTL' => (!empty($record['rig_intl'])) ? $record['rig_intl'] : '',
+ 'COL_RST_RCVD' => $rst_rx,
+ 'COL_RST_SENT' => $rst_tx,
+ 'COL_RX_PWR' => $rx_pwr,
+ 'COL_SAT_MODE' => (!empty($record['sat_mode'])) ? $record['sat_mode'] : '',
+ 'COL_SAT_NAME' => (!empty($record['sat_name'])) ? $record['sat_name'] : '',
+ 'COL_SFI' => (!empty($record['sfi'])) ? $record['sfi'] : null,
+ 'COL_SIG' => (!empty($record['sig'])) ? $record['sig'] : '',
+ 'COL_SIG_INFO' => (!empty($record['sig_info'])) ? $record['sig_info'] : '',
+ 'COL_SIG_INFO_INTL' => (!empty($record['sig_info_intl'])) ? $record['sig_info_intl'] : '',
+ 'COL_SIG_INTL' => (!empty($record['sig_intl'])) ? $record['sig_intl'] : '',
+ 'COL_SILENT_KEY' => (!empty($record['silent_key'])) ? $record['silent_key'] : '',
+ 'COL_SKCC' => (!empty($record['skcc'])) ? $record['skcc'] : '',
+ 'COL_SOTA_REF' => (!empty($record['sota_ref'])) ? $record['sota_ref'] : '',
+ 'COL_WWFF_REF' => (!empty($record['wwff_ref'])) ? $record['wwff_ref'] : '',
+ 'COL_POTA_REF' => (!empty($record['pota_ref'])) ? $record['pota_ref'] : '',
+ 'COL_SRX' => (!empty($record['srx'])) ? (int)$record['srx'] : null,
+ //convert to integer to make sure no invalid entries are imported
+ 'COL_SRX_STRING' => (!empty($record['srx_string'])) ? $record['srx_string'] : '',
+ 'COL_STATE' => (!empty($record['state'])) ? strtoupper($record['state']) : '',
+ 'COL_STATION_CALLSIGN' => (!empty($record['station_callsign'])) ? $record['station_callsign'] : '',
+ //convert to integer to make sure no invalid entries are imported
+ 'COL_STX' => (!empty($record['stx'])) ? (int)$record['stx'] : null,
+ 'COL_STX_STRING' => (!empty($record['stx_string'])) ? $record['stx_string'] : '',
+ 'COL_SUBMODE' => $input_submode,
+ 'COL_SWL' => (!empty($record['swl'])) ? $record['swl'] : null,
+ 'COL_TEN_TEN' => (!empty($record['ten_ten'])) ? $record['ten_ten'] : null,
+ 'COL_TIME_ON' => $time_on,
+ 'COL_TIME_OFF' => $time_off,
+ 'COL_TX_PWR' => (!empty($tx_pwr)) ? $tx_pwr : null,
+ 'COL_UKSMG' => (!empty($record['uksmg'])) ? $record['uksmg'] : '',
+ 'COL_USACA_COUNTIES' => (!empty($record['usaca_counties'])) ? $record['usaca_counties'] : '',
+ 'COL_VUCC_GRIDS' => $input_vucc_grids,
+ 'COL_WEB' => (!empty($record['web'])) ? $record['web'] : ''
);
- $this->db->where(array('COL_PRIMARY_KEY' => $key));
- $this->db->update($this->config->item('table_name'), $data);
- return;
- }
+ // Collect field information from the station profile table thats required for the QSO.
+ if ($station_id != "0") {
+ $this->db->select('station_profile.*, dxcc_entities.name as station_country');
+ $this->db->where('station_id', $station_id);
+ $this->db->join('dxcc_entities', 'station_profile.station_dxcc = dxcc_entities.adif', 'left outer');
+ $station_result = $this->db->get('station_profile');
- function get_main_mode_from_mode($mode) {
- return ($this->get_main_mode_if_submode($mode) == null ? $mode : $this->get_main_mode_if_submode($mode));
- }
+ if ($station_result->num_rows() > 0) {
+ $data['station_id'] = $station_id;
- function get_main_mode_if_submode($mode) {
- $this->db->select('mode');
- $this->db->where('submode', $mode);
+ $row = $station_result->row_array();
- $query = $this->db->get('adif_modes');
- if ($query->num_rows() > 0){
- $row = $query->row_array();
- return $row['mode'];
- } else {
- return null;
+ if (strpos(trim($row['station_gridsquare']), ',') !== false) {
+ $data['COL_MY_VUCC_GRIDS'] = strtoupper(trim($row['station_gridsquare']));
+ } else {
+ $data['COL_MY_GRIDSQUARE'] = strtoupper(trim($row['station_gridsquare']));
+ }
+
+ $data['COL_MY_CITY'] = trim($row['station_city']);
+ $data['COL_MY_IOTA'] = strtoupper(trim($row['station_iota']));
+ $data['COL_MY_SOTA_REF'] = strtoupper(trim($row['station_sota']));
+ $data['COL_MY_WWFF_REF'] = strtoupper(trim($row['station_wwff']));
+ $data['COL_MY_POTA_REF'] = $row['station_pota'] == null ? '' : strtoupper(trim($row['station_pota']));
+
+ $data['COL_STATION_CALLSIGN'] = strtoupper(trim($row['station_callsign']));
+ $data['COL_MY_DXCC'] = strtoupper(trim($row['station_dxcc']));
+ $data['COL_MY_COUNTRY'] = strtoupper(trim($row['station_country']));
+ $data['COL_MY_CNTY'] = strtoupper(trim($row['station_cnty']));
+ $data['COL_MY_CQ_ZONE'] = strtoupper(trim($row['station_cq']));
+ $data['COL_MY_ITU_ZONE'] = strtoupper(trim($row['station_itu']));
}
- }
+ }
- /*
+ // Save QSO
+ $this->add_qso($data, $skipexport);
+ } else {
+ $my_error .= "Date/Time: " . $time_on . " Callsign: " . $record['call'] . " Band: " . $band . " Duplicate
";
+ }
+
+ return $my_error;
+ }
+
+ function update_dok($record, $ignoreAmbiguous, $onlyConfirmed, $overwriteDok)
+ {
+ $this->load->model('logbooks_model');
+ $custom_date_format = $this->session->userdata('user_date_format');
+ $logbooks_locations_array = $this->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+
+ if (isset($record['call'])) {
+ $call = strtoupper($record['call']);
+ } else {
+ return array(3, 'Callsign not found');
+ }
+
+ // Join date+time
+ $time_on = date('Y-m-d', strtotime($record['qso_date'])) . " " . date('H:i', strtotime($record['time_on']));
+
+ // Store Band
+ if (isset($record['band'])) {
+ $band = strtolower($record['band']);
+ } else {
+ if (isset($record['freq'])) {
+ if ($record['freq'] != "0") {
+ $band = $this->frequency->GetBand($record['freq']);
+ }
+ }
+ }
+
+ if (isset($record['mode'])) {
+ $mode = $record['mode'];
+ } else {
+ $mode = '';
+ }
+
+ if (isset($record['darc_dok'])) {
+ $darc_dok = $record['darc_dok'];
+ } else {
+ $darc_dok = '';
+ }
+
+ if ($darc_dok != '') {
+ $this->db->select('COL_PRIMARY_KEY, COL_DARC_DOK');
+ $this->db->where('COL_CALL', $call);
+ $this->db->like('COL_TIME_ON', $time_on, 'after');
+ $this->db->where('COL_BAND', $band);
+ $this->db->where('COL_MODE', $mode);
+ $this->db->where_in('station_id', $logbooks_locations_array);
+ $check = $this->db->get($this->config->item('table_name'));
+ if ($check->num_rows() != 1) {
+ if ($ignoreAmbiguous == '1') {
+ return array();
+ } else {
+ return array(2, $result['message'] = "" . date($custom_date_format, strtotime($record['qso_date'])) . " | " . date('H:i', strtotime($record['time_on'])) . " | " . str_replace('0', 'Ø', $call) . " | " . $band . " | " . $mode . " | | " . (preg_match('/^[A-Y]\d{2}$/', $darc_dok) ? '' . $darc_dok . '' : (preg_match('/^Z\d{2}$/', $darc_dok) ? '' . $darc_dok . '' : $darc_dok)) . " | " . lang('dcl_no_match') . " |
");
+ }
+ } else {
+ $dcl_qsl_status = '';
+ switch ($record['app_dcl_status']) {
+ case 'c':
+ $dcl_qsl_status = lang('dcl_qsl_status_c');
+ break;
+ case 'm':
+ case 'n':
+ case 'o':
+ $dcl_qsl_status = lang('dcl_qsl_status_mno');
+ break;
+ case 'i':
+ $dcl_qsl_status = lang('dcl_qsl_status_i');
+ break;
+ case 'w':
+ $dcl_qsl_status = lang('dcl_qsl_status_w');
+ break;
+ case 'x':
+ $dcl_qsl_status = lang('dcl_qsl_status_x');
+ break;
+ default:
+ $dcl_qsl_status = lang('dcl_qsl_status_unknown');
+ }
+ if ($check->row()->COL_DARC_DOK != $darc_dok) {
+ $dcl_cnfm = array('c', 'm', 'n', 'o', 'i');
+ // Ref https://confluence.darc.de/pages/viewpage.action?pageId=21037270
+ if ($onlyConfirmed == '1') {
+ if (in_array($record['app_dcl_status'], $dcl_cnfm)) {
+ if ($check->row()->COL_DARC_DOK == '' || $overwriteDok == '1') {
+ $this->set_dok($check->row()->COL_PRIMARY_KEY, $darc_dok);
+ return array(0, '');
+ } else {
+ return array(1, $result['message'] = "" . date($custom_date_format, strtotime($record['qso_date'])) . " | " . date('H:i', strtotime($record['time_on'])) . " | row()->COL_PRIMARY_KEY . ")\">" . str_replace('0', 'Ø', $call) . " | " . $band . " | " . $mode . " | " . ($check->row()->COL_DARC_DOK == '' ? 'n/a' : (preg_match('/^[A-Y]\d{2}$/', $check->row()->COL_DARC_DOK) ? '' . $check->row()->COL_DARC_DOK . '' : (preg_match('/^Z\d{2}$/', $check->row()->COL_DARC_DOK) ? '' . $check->row()->COL_DARC_DOK . '' : $check->row()->COL_DARC_DOK))) . " | " . (preg_match('/^[A-Y]\d{2}$/', $darc_dok) ? '' . $darc_dok . '' : (preg_match('/^Z\d{2}$/', $darc_dok) ? '' . $darc_dok . '' : $darc_dok)) . " | " . $dcl_qsl_status . " |
");
+ }
+ } else {
+ return array(1, $result['message'] = "" . date($custom_date_format, strtotime($record['qso_date'])) . " | " . date('H:i', strtotime($record['time_on'])) . " | row()->COL_PRIMARY_KEY . ")\">" . str_replace('0', 'Ø', $call) . " | " . $band . " | " . $mode . " | " . ($check->row()->COL_DARC_DOK == '' ? 'n/a' : (preg_match('/^[A-Y]\d{2}$/', $check->row()->COL_DARC_DOK) ? '' . $check->row()->COL_DARC_DOK . '' : (preg_match('/^Z\d{2}$/', $check->row()->COL_DARC_DOK) ? '' . $check->row()->COL_DARC_DOK . '' : $check->row()->COL_DARC_DOK))) . " | " . (preg_match('/^[A-Y]\d{2}$/', $darc_dok) ? '' . $darc_dok . '' : (preg_match('/^Z\d{2}$/', $darc_dok) ? '' . $darc_dok . '' : $darc_dok)) . " | " . $dcl_qsl_status . " |
");
+ }
+ } else {
+ if ($check->row()->COL_DARC_DOK == '' || $overwriteDok == '1') {
+ $this->set_dok($check->row()->COL_PRIMARY_KEY, $darc_dok);
+ return array(0, '');
+ } else {
+ return array(1, $result['message'] = "" . date($custom_date_format, strtotime($record['qso_date'])) . " | " . date('H:i', strtotime($record['time_on'])) . " | row()->COL_PRIMARY_KEY . ")\">" . str_replace('0', 'Ø', $call) . " | " . $band . " | " . $mode . " | " . ($check->row()->COL_DARC_DOK == '' ? 'n/a' : (preg_match('/^[A-Y]\d{2}$/', $check->row()->COL_DARC_DOK) ? '' . $check->row()->COL_DARC_DOK . '' : (preg_match('/^Z\d{2}$/', $check->row()->COL_DARC_DOK) ? '' . $check->row()->COL_DARC_DOK . '' : $check->row()->COL_DARC_DOK))) . " | " . (preg_match('/^[A-Y]\d{2}$/', $darc_dok) ? '' . $darc_dok . '' : (preg_match('/^Z\d{2}$/', $darc_dok) ? '' . $darc_dok . '' : $darc_dok)) . " | " . $dcl_qsl_status . " |
");
+ }
+ }
+ }
+ }
+ }
+ }
+
+ function set_dok($key, $dok)
+ {
+ $data = array(
+ 'COL_DARC_DOK' => $dok,
+ );
+
+ $this->db->where(array('COL_PRIMARY_KEY' => $key));
+ $this->db->update($this->config->item('table_name'), $data);
+ return;
+ }
+
+ function get_main_mode_from_mode($mode)
+ {
+ return ($this->get_main_mode_if_submode($mode) == null ? $mode : $this->get_main_mode_if_submode($mode));
+ }
+
+ function get_main_mode_if_submode($mode)
+ {
+ $this->db->select('mode');
+ $this->db->where('submode', $mode);
+
+ $query = $this->db->get('adif_modes');
+ if ($query->num_rows() > 0) {
+ $row = $query->row_array();
+ return $row['mode'];
+ } else {
+ return null;
+ }
+ }
+
+ /*
* Check the dxxc_prefixes table and return (dxcc, country)
*/
- public function check_dxcc_table($call, $date){
+ public function check_dxcc_table($call, $date)
+ {
$csadditions = '/^P$|^R$|^A$|^M$/';
- $dxcc_exceptions = $this->db->select('`entity`, `adif`, `cqz`, `cont`')
- ->where('call', $call)
- ->where('(start <= ', $date)
- ->or_where('start is null)', NULL, false)
- ->where('(end >= ', $date)
- ->or_where('end is null)', NULL, false)
- ->get('dxcc_exceptions');
+ $dxcc_exceptions = $this->db->select('`entity`, `adif`, `cqz`, `cont`')
+ ->where('call', $call)
+ ->where('(start <= ', $date)
+ ->or_where('start is null)', NULL, false)
+ ->where('(end >= ', $date)
+ ->or_where('end is null)', NULL, false)
+ ->get('dxcc_exceptions');
- if ($dxcc_exceptions->num_rows() > 0){
- $row = $dxcc_exceptions->row_array();
- return array($row['adif'], $row['entity'], $row['cqz'], $row['cont']);
- }
+ if ($dxcc_exceptions->num_rows() > 0) {
+ $row = $dxcc_exceptions->row_array();
+ return array($row['adif'], $row['entity'], $row['cqz'], $row['cont']);
+ }
if (preg_match('/(^KG4)[A-Z09]{3}/', $call)) { // KG4/ and KG4 5 char calls are Guantanamo Bay. If 4 or 6 char, it is USA
$call = "K";
} elseif (preg_match('/(^OH\/)|(\/OH[1-9]?$)/', $call)) { # non-Aland prefix!
@@ -3903,627 +3965,645 @@ function lotw_last_qsl_date($user_id) {
$call = "KG4";
} elseif (preg_match('/(^KG4)[A-Z09]{1}/', $call)) {
$call = "K";
- } elseif (preg_match('/\w\/\w/', $call)) {
+ } elseif (preg_match('/\w\/\w/', $call)) {
if (preg_match_all('/^((\d|[A-Z])+\/)?((\d|[A-Z]){3,})(\/(\d|[A-Z])+)?(\/(\d|[A-Z])+)?$/', $call, $matches)) {
$prefix = $matches[1][0];
$callsign = $matches[3][0];
$suffix = $matches[5][0];
- if ($prefix) {
- $prefix = substr($prefix, 0, -1); # Remove the / at the end
- }
- if ($suffix) {
- $suffix = substr($suffix, 1); # Remove the / at the beginning
- };
- if (preg_match($csadditions, $suffix)) {
if ($prefix) {
- $call = $prefix;
- } else {
- $call = $callsign;
+ $prefix = substr($prefix, 0, -1); # Remove the / at the end
}
- } else {
- $result = $this->wpx($call, 1); # use the wpx prefix instead
- if ($result == '') {
- $row['adif'] = 0;
- $row['entity'] = '- NONE -';
- $row['cqz'] = 0;
- $row['cont'] = '';
- return array($row['adif'], $row['entity'], $row['cqz'], $row['cont']);
+ if ($suffix) {
+ $suffix = substr($suffix, 1); # Remove the / at the beginning
+ };
+ if (preg_match($csadditions, $suffix)) {
+ if ($prefix) {
+ $call = $prefix;
+ } else {
+ $call = $callsign;
+ }
} else {
- $call = $result . "AA";
+ $result = $this->wpx($call, 1); # use the wpx prefix instead
+ if ($result == '') {
+ $row['adif'] = 0;
+ $row['entity'] = '- NONE -';
+ $row['cqz'] = 0;
+ $row['cont'] = '';
+ return array($row['adif'], $row['entity'], $row['cqz'], $row['cont']);
+ } else {
+ $call = $result . "AA";
+ }
}
}
}
+
+ $len = strlen($call);
+
+ // query the table, removing a character from the right until a match
+ for ($i = $len; $i > 0; $i--) {
+ //printf("searching for %s\n", substr($call, 0, $i));
+ $dxcc_result = $this->db->select('`call`, `entity`, `adif`, `cqz`, `cont`')
+ ->where('call', substr($call, 0, $i))
+ ->where('(start <= ', $date)
+ ->or_where("start is null)", NULL, false)
+ ->where('(end >= ', $date)
+ ->or_where("end is null)", NULL, false)
+ ->get('dxcc_prefixes');
+
+ //$dxcc_result = $this->db->query("select `call`, `entity`, `adif` from dxcc_prefixes where `call` = '".substr($call, 0, $i) ."'");
+ //print $this->db->last_query();
+
+ if ($dxcc_result->num_rows() > 0) {
+ $row = $dxcc_result->row_array();
+ return array($row['adif'], $row['entity'], $row['cqz'], $row['cont']);
+ }
+ }
+
+ return array("Not Found", "Not Found");
}
- $len = strlen($call);
-
- // query the table, removing a character from the right until a match
- for ($i = $len; $i > 0; $i--){
- //printf("searching for %s\n", substr($call, 0, $i));
- $dxcc_result = $this->db->select('`call`, `entity`, `adif`, `cqz`, `cont`')
- ->where('call', substr($call, 0, $i))
- ->where('(start <= ', $date)
- ->or_where("start is null)", NULL, false)
- ->where('(end >= ', $date)
- ->or_where("end is null)", NULL, false)
- ->get('dxcc_prefixes');
-
- //$dxcc_result = $this->db->query("select `call`, `entity`, `adif` from dxcc_prefixes where `call` = '".substr($call, 0, $i) ."'");
- //print $this->db->last_query();
-
- if ($dxcc_result->num_rows() > 0){
- $row = $dxcc_result->row_array();
- return array($row['adif'], $row['entity'], $row['cqz'], $row['cont']);
- }
- }
-
- return array("Not Found", "Not Found");
-
- }
-
- public function dxcc_lookup($call, $date){
+ public function dxcc_lookup($call, $date)
+ {
$csadditions = '/^P$|^R$|^A$|^M$/';
- $dxcc_exceptions = $this->db->select('`entity`, `adif`, `cqz`')
- ->where('call', $call)
- ->where('(start <= ', $date)
- ->or_where('start is null)', NULL, false)
- ->where('(end >= ', $date)
- ->or_where('end is null)', NULL, false)
- ->get('dxcc_exceptions');
+ $dxcc_exceptions = $this->db->select('`entity`, `adif`, `cqz`')
+ ->where('call', $call)
+ ->where('(start <= ', $date)
+ ->or_where('start is null)', NULL, false)
+ ->where('(end >= ', $date)
+ ->or_where('end is null)', NULL, false)
+ ->get('dxcc_exceptions');
- if ($dxcc_exceptions->num_rows() > 0){
- $row = $dxcc_exceptions->row_array();
- return $row;
- } else {
+ if ($dxcc_exceptions->num_rows() > 0) {
+ $row = $dxcc_exceptions->row_array();
+ return $row;
+ } else {
- if (preg_match('/(^KG4)[A-Z09]{3}/', $call)) { // KG4/ and KG4 5 char calls are Guantanamo Bay. If 4 or 6 char, it is USA
- $call = "K";
- } elseif (preg_match('/(^OH\/)|(\/OH[1-9]?$)/', $call)) { # non-Aland prefix!
- $call = "OH"; # make callsign OH = finland
- } elseif (preg_match('/(^CX\/)|(\/CX[1-9]?$)/', $call)) { # non-Antarctica prefix!
- $call = "CX"; # make callsign CX = Uruguay
- } elseif (preg_match('/(^3D2R)|(^3D2.+\/R)/', $call)) { # seems to be from Rotuma
- $call = "3D2/R"; # will match with Rotuma
- } elseif (preg_match('/^3D2C/', $call)) { # seems to be from Conway Reef
- $call = "3D2/C"; # will match with Conway
- } elseif (preg_match('/(^LZ\/)|(\/LZ[1-9]?$)/', $call)) { # LZ/ is LZ0 by DXCC but this is VP8h
- $call = "LZ";
- } elseif (preg_match('/(^KG4)[A-Z09]{2}/', $call)) {
- $call = "KG4";
- } elseif (preg_match('/(^KG4)[A-Z09]{1}/', $call)) {
- $call = "K";
- } elseif (preg_match('/\w\/\w/', $call)) {
- if (preg_match_all('/^((\d|[A-Z])+\/)?((\d|[A-Z]){3,})(\/(\d|[A-Z])+)?(\/(\d|[A-Z])+)?$/', $call, $matches)) {
- $prefix = $matches[1][0];
- $callsign = $matches[3][0];
- $suffix = $matches[5][0];
- if ($prefix) {
- $prefix = substr($prefix, 0, -1); # Remove the / at the end
- }
- if ($suffix) {
- $suffix = substr($suffix, 1); # Remove the / at the beginning
- };
- if (preg_match($csadditions, $suffix)) {
- if ($prefix) {
- $call = $prefix;
- } else {
- $call = $callsign;
- }
- } else {
- $result = $this->wpx($call, 1); # use the wpx prefix instead
- if ($result == '') {
- $row['adif'] = 0;
- $row['entity'] = '- NONE -';
- $row['cqz'] = 0;
- $row['long'] = '0';
- $row['lat'] = '0';
- return $row;
- } else {
- $call = $result . "AA";
- }
+ if (preg_match('/(^KG4)[A-Z09]{3}/', $call)) { // KG4/ and KG4 5 char calls are Guantanamo Bay. If 4 or 6 char, it is USA
+ $call = "K";
+ } elseif (preg_match('/(^OH\/)|(\/OH[1-9]?$)/', $call)) { # non-Aland prefix!
+ $call = "OH"; # make callsign OH = finland
+ } elseif (preg_match('/(^CX\/)|(\/CX[1-9]?$)/', $call)) { # non-Antarctica prefix!
+ $call = "CX"; # make callsign CX = Uruguay
+ } elseif (preg_match('/(^3D2R)|(^3D2.+\/R)/', $call)) { # seems to be from Rotuma
+ $call = "3D2/R"; # will match with Rotuma
+ } elseif (preg_match('/^3D2C/', $call)) { # seems to be from Conway Reef
+ $call = "3D2/C"; # will match with Conway
+ } elseif (preg_match('/(^LZ\/)|(\/LZ[1-9]?$)/', $call)) { # LZ/ is LZ0 by DXCC but this is VP8h
+ $call = "LZ";
+ } elseif (preg_match('/(^KG4)[A-Z09]{2}/', $call)) {
+ $call = "KG4";
+ } elseif (preg_match('/(^KG4)[A-Z09]{1}/', $call)) {
+ $call = "K";
+ } elseif (preg_match('/\w\/\w/', $call)) {
+ if (preg_match_all('/^((\d|[A-Z])+\/)?((\d|[A-Z]){3,})(\/(\d|[A-Z])+)?(\/(\d|[A-Z])+)?$/', $call, $matches)) {
+ $prefix = $matches[1][0];
+ $callsign = $matches[3][0];
+ $suffix = $matches[5][0];
+ if ($prefix) {
+ $prefix = substr($prefix, 0, -1); # Remove the / at the end
}
- }
+ if ($suffix) {
+ $suffix = substr($suffix, 1); # Remove the / at the beginning
+ };
+ if (preg_match($csadditions, $suffix)) {
+ if ($prefix) {
+ $call = $prefix;
+ } else {
+ $call = $callsign;
+ }
+ } else {
+ $result = $this->wpx($call, 1); # use the wpx prefix instead
+ if ($result == '') {
+ $row['adif'] = 0;
+ $row['entity'] = '- NONE -';
+ $row['cqz'] = 0;
+ $row['long'] = '0';
+ $row['lat'] = '0';
+ return $row;
+ } else {
+ $call = $result . "AA";
+ }
+ }
+ }
}
- $len = strlen($call);
+ $len = strlen($call);
- // query the table, removing a character from the right until a match
- for ($i = $len; $i > 0; $i--){
- //printf("searching for %s\n", substr($call, 0, $i));
- $dxcc_result = $this->db->select('*')
- ->where('call', substr($call, 0, $i))
- ->where('(start <= ', $date)
- ->or_where("start is null)", NULL, false)
- ->where('(end >= ', $date)
- ->or_where("end is null)", NULL, false)
- ->get('dxcc_prefixes');
+ // query the table, removing a character from the right until a match
+ for ($i = $len; $i > 0; $i--) {
+ //printf("searching for %s\n", substr($call, 0, $i));
+ $dxcc_result = $this->db->select('*')
+ ->where('call', substr($call, 0, $i))
+ ->where('(start <= ', $date)
+ ->or_where("start is null)", NULL, false)
+ ->where('(end >= ', $date)
+ ->or_where("end is null)", NULL, false)
+ ->get('dxcc_prefixes');
- //$dxcc_result = $this->db->query("select `call`, `entity`, `adif` from dxcc_prefixes where `call` = '".substr($call, 0, $i) ."'");
- //print $this->db->last_query();
+ //$dxcc_result = $this->db->query("select `call`, `entity`, `adif` from dxcc_prefixes where `call` = '".substr($call, 0, $i) ."'");
+ //print $this->db->last_query();
- if ($dxcc_result->num_rows() > 0){
- $row = $dxcc_result->row_array();
- return $row;
- }
- }
- }
-
- return array("Not Found", "Not Found");
+ if ($dxcc_result->num_rows() > 0) {
+ $row = $dxcc_result->row_array();
+ return $row;
+ }
+ }
}
- function wpx($testcall, $i) {
- $prefix = '';
- $a = '';
- $b = '';
- $c = '';
-
- $lidadditions = '/^QRP$|^LGT$/';
- $csadditions = '/^P$|^R$|^A$|^M$|^LH$/';
- $noneadditions = '/^MM$|^AM$/';
-
- # First check if the call is in the proper format, A/B/C where A and C
- # are optional (prefix of guest country and P, MM, AM etc) and B is the
- # callsign. Only letters, figures and "/" is accepted, no further check if the
- # callsign "makes sense".
- # 23.Apr.06: Added another "/X" to the regex, for calls like RV0AL/0/P
- # as used by RDA-DXpeditions....
-
- if (preg_match_all('/^((\d|[A-Z])+\/)?((\d|[A-Z]){3,})(\/(\d|[A-Z])+)?(\/(\d|[A-Z])+)?$/', $testcall, $matches)) {
-
- # Now $1 holds A (incl /), $3 holds the callsign B and $5 has C
- # We save them to $a, $b and $c respectively to ensure they won't get
- # lost in further Regex evaluations.
- $a = $matches[1][0];
- $b = $matches[3][0];
- $c = $matches[5][0];
-
- if ($a) {
- $a = substr($a, 0, -1); # Remove the / at the end
- }
- if ($c) {
- $c = substr($c, 1); # Remove the / at the beginning
- };
-
- # In some cases when there is no part A but B and C, and C is longer than 2
- # letters, it happens that $a and $b get the values that $b and $c should
- # have. This often happens with liddish callsign-additions like /QRP and
- # /LGT, but also with calls like DJ1YFK/KP5. ~/.yfklog has a line called
- # "lidadditions", which has QRP and LGT as defaults. This sorts out half of
- # the problem, but not calls like DJ1YFK/KH5. This is tested in a second
- # try: $a looks like a call (.\d[A-Z]) and $b doesn't (.\d), they are
- # swapped. This still does not properly handle calls like DJ1YFK/KH7K where
- # only the OP's experience says that it's DJ1YFK on KH7K.
- if (!$c && $a && $b) { # $a and $b exist, no $c
- if (preg_match($lidadditions, $b)) { # check if $b is a lid-addition
- $b = $a;
- $a = null; # $a goes to $b, delete lid-add
- } elseif ((preg_match('/\d[A-Z]+$/', $a)) && (preg_match('/\d$/', $b))) { # check for call in $a
- $temp = $b;
- $b = $a;
- $a = $temp;
- }
- }
-
- # *** Added later *** The check didn't make sure that the callsign
- # contains a letter. there are letter-only callsigns like RAEM, but not
- # figure-only calls.
-
- if (preg_match('/^[0-9]+$/', $b)) { # Callsign only consists of numbers. Bad!
- return null; # exit, undef
- }
-
- # Depending on these values we have to determine the prefix.
- # Following cases are possible:
- #
- # 1. $a and $c undef --> only callsign, subcases
- # 1.1 $b contains a number -> everything from start to number
- # 1.2 $b contains no number -> first two letters plus 0
- # 2. $a undef, subcases:
- # 2.1 $c is only a number -> $a with changed number
- # 2.2 $c is /P,/M,/MM,/AM -> 1.
- # 2.3 $c is something else and will be interpreted as a Prefix
- # 3. $a is defined, will be taken as PFX, regardless of $c
-
- if (($a == null) && ($c == null)) { # Case 1
- if (preg_match('/\d/', $b)) { # Case 1.1, contains number
- preg_match('/(.+\d)[A-Z]*/', $b, $matches); # Prefix is all but the last
- $prefix = $matches[1]; # Letters
- } else { # Case 1.2, no number
- $prefix = substr($b, 0, 2) . "0"; # first two + 0
- }
- } elseif (($a == null) && (isset($c))) { # Case 2, CALL/X
- if (preg_match('/^(\d)/', $c)) { # Case 2.1, number
- preg_match('/(.+\d)[A-Z]*/', $b, $matches); # regular Prefix in $1
- # Here we need to find out how many digits there are in the
- # prefix, because for example A45XR/0 is A40. If there are 2
- # numbers, the first is not deleted. If course in exotic cases
- # like N66A/7 -> N7 this brings the wrong result of N67, but I
- # think that's rather irrelevant cos such calls rarely appear
- # and if they do, it's very unlikely for them to have a number
- # attached. You can still edit it by hand anyway..
- if (preg_match('/^([A-Z]\d)\d$/', $matches[1])) { # e.g. A45 $c = 0
- $prefix = $matches[1] . $c; # -> A40
- } else { # Otherwise cut all numbers
- preg_match('/(.*[A-Z])\d+/', $matches[1], $match); # Prefix w/o number in $1
- $prefix = $match[1] . $c; # Add attached number
- }
- } elseif (preg_match($csadditions, $c)) {
- preg_match('/(.+\d)[A-Z]*/', $b, $matches); # Known attachment -> like Case 1.1
- $prefix = $matches[1];
- } elseif (preg_match($noneadditions, $c)) {
- return '';
- } elseif (preg_match('/^\d\d+$/', $c)) { # more than 2 numbers -> ignore
- preg_match('/(.+\d)[A-Z]* /', $b, $matches); # see above
- $prefix = $matches[1][0];
- } else { # Must be a Prefix!
- if (preg_match('/\d$/', $c)) { # ends in number -> good prefix
- $prefix = $c;
- } else { # Add Zero at the end
- $prefix = $c . "0";
- }
- }
- } elseif (($a) && (preg_match($noneadditions, $c))) { # Case 2.1, X/CALL/X ie TF/DL2NWK/MM - DXCC none
- return '';
- } elseif ($a) {
- # $a contains the prefix we want
- if (preg_match('/\d$/', $a)) { # ends in number -> good prefix
- $prefix = $a;
- } else { # add zero if no number
- $prefix = $a . "0";
- }
- }
- # In very rare cases (right now I can only think of KH5K and KH7K and FRxG/T
- # etc), the prefix is wrong, for example KH5K/DJ1YFK would be KH5K0. In this
- # case, the superfluous part will be cropped. Since this, however, changes the
- # DXCC of the prefix, this will NOT happen when invoked from with an
- # extra parameter $_[1]; this will happen when invoking it from &dxcc.
-
- if (preg_match('/(\w+\d)[A-Z]+\d/', $prefix, $matches) && $i == null) {
- $prefix = $matches[1][0];
- }
- return $prefix;
- } else {
- return '';
- }
+ return array("Not Found", "Not Found");
}
- public function get_entity($dxcc){
- $sql = "select name, cqz, lat, 'long' from dxcc_entities where adif = " . $dxcc;
- $query = $this->db->query($sql);
+ function wpx($testcall, $i)
+ {
+ $prefix = '';
+ $a = '';
+ $b = '';
+ $c = '';
- if ($query->result() > 0){
- $row = $query->row_array();
- return $row;
+ $lidadditions = '/^QRP$|^LGT$/';
+ $csadditions = '/^P$|^R$|^A$|^M$|^LH$/';
+ $noneadditions = '/^MM$|^AM$/';
+
+ # First check if the call is in the proper format, A/B/C where A and C
+ # are optional (prefix of guest country and P, MM, AM etc) and B is the
+ # callsign. Only letters, figures and "/" is accepted, no further check if the
+ # callsign "makes sense".
+ # 23.Apr.06: Added another "/X" to the regex, for calls like RV0AL/0/P
+ # as used by RDA-DXpeditions....
+
+ if (preg_match_all('/^((\d|[A-Z])+\/)?((\d|[A-Z]){3,})(\/(\d|[A-Z])+)?(\/(\d|[A-Z])+)?$/', $testcall, $matches)) {
+
+ # Now $1 holds A (incl /), $3 holds the callsign B and $5 has C
+ # We save them to $a, $b and $c respectively to ensure they won't get
+ # lost in further Regex evaluations.
+ $a = $matches[1][0];
+ $b = $matches[3][0];
+ $c = $matches[5][0];
+
+ if ($a) {
+ $a = substr($a, 0, -1); # Remove the / at the end
}
+ if ($c) {
+ $c = substr($c, 1); # Remove the / at the beginning
+ };
+
+ # In some cases when there is no part A but B and C, and C is longer than 2
+ # letters, it happens that $a and $b get the values that $b and $c should
+ # have. This often happens with liddish callsign-additions like /QRP and
+ # /LGT, but also with calls like DJ1YFK/KP5. ~/.yfklog has a line called
+ # "lidadditions", which has QRP and LGT as defaults. This sorts out half of
+ # the problem, but not calls like DJ1YFK/KH5. This is tested in a second
+ # try: $a looks like a call (.\d[A-Z]) and $b doesn't (.\d), they are
+ # swapped. This still does not properly handle calls like DJ1YFK/KH7K where
+ # only the OP's experience says that it's DJ1YFK on KH7K.
+ if (!$c && $a && $b) { # $a and $b exist, no $c
+ if (preg_match($lidadditions, $b)) { # check if $b is a lid-addition
+ $b = $a;
+ $a = null; # $a goes to $b, delete lid-add
+ } elseif ((preg_match('/\d[A-Z]+$/', $a)) && (preg_match('/\d$/', $b))) { # check for call in $a
+ $temp = $b;
+ $b = $a;
+ $a = $temp;
+ }
+ }
+
+ # *** Added later *** The check didn't make sure that the callsign
+ # contains a letter. there are letter-only callsigns like RAEM, but not
+ # figure-only calls.
+
+ if (preg_match('/^[0-9]+$/', $b)) { # Callsign only consists of numbers. Bad!
+ return null; # exit, undef
+ }
+
+ # Depending on these values we have to determine the prefix.
+ # Following cases are possible:
+ #
+ # 1. $a and $c undef --> only callsign, subcases
+ # 1.1 $b contains a number -> everything from start to number
+ # 1.2 $b contains no number -> first two letters plus 0
+ # 2. $a undef, subcases:
+ # 2.1 $c is only a number -> $a with changed number
+ # 2.2 $c is /P,/M,/MM,/AM -> 1.
+ # 2.3 $c is something else and will be interpreted as a Prefix
+ # 3. $a is defined, will be taken as PFX, regardless of $c
+
+ if (($a == null) && ($c == null)) { # Case 1
+ if (preg_match('/\d/', $b)) { # Case 1.1, contains number
+ preg_match('/(.+\d)[A-Z]*/', $b, $matches); # Prefix is all but the last
+ $prefix = $matches[1]; # Letters
+ } else { # Case 1.2, no number
+ $prefix = substr($b, 0, 2) . "0"; # first two + 0
+ }
+ } elseif (($a == null) && (isset($c))) { # Case 2, CALL/X
+ if (preg_match('/^(\d)/', $c)) { # Case 2.1, number
+ preg_match('/(.+\d)[A-Z]*/', $b, $matches); # regular Prefix in $1
+ # Here we need to find out how many digits there are in the
+ # prefix, because for example A45XR/0 is A40. If there are 2
+ # numbers, the first is not deleted. If course in exotic cases
+ # like N66A/7 -> N7 this brings the wrong result of N67, but I
+ # think that's rather irrelevant cos such calls rarely appear
+ # and if they do, it's very unlikely for them to have a number
+ # attached. You can still edit it by hand anyway..
+ if (preg_match('/^([A-Z]\d)\d$/', $matches[1])) { # e.g. A45 $c = 0
+ $prefix = $matches[1] . $c; # -> A40
+ } else { # Otherwise cut all numbers
+ preg_match('/(.*[A-Z])\d+/', $matches[1], $match); # Prefix w/o number in $1
+ $prefix = $match[1] . $c; # Add attached number
+ }
+ } elseif (preg_match($csadditions, $c)) {
+ preg_match('/(.+\d)[A-Z]*/', $b, $matches); # Known attachment -> like Case 1.1
+ $prefix = $matches[1];
+ } elseif (preg_match($noneadditions, $c)) {
+ return '';
+ } elseif (preg_match('/^\d\d+$/', $c)) { # more than 2 numbers -> ignore
+ preg_match('/(.+\d)[A-Z]* /', $b, $matches); # see above
+ $prefix = $matches[1][0];
+ } else { # Must be a Prefix!
+ if (preg_match('/\d$/', $c)) { # ends in number -> good prefix
+ $prefix = $c;
+ } else { # Add Zero at the end
+ $prefix = $c . "0";
+ }
+ }
+ } elseif (($a) && (preg_match($noneadditions, $c))) { # Case 2.1, X/CALL/X ie TF/DL2NWK/MM - DXCC none
+ return '';
+ } elseif ($a) {
+ # $a contains the prefix we want
+ if (preg_match('/\d$/', $a)) { # ends in number -> good prefix
+ $prefix = $a;
+ } else { # add zero if no number
+ $prefix = $a . "0";
+ }
+ }
+ # In very rare cases (right now I can only think of KH5K and KH7K and FRxG/T
+ # etc), the prefix is wrong, for example KH5K/DJ1YFK would be KH5K0. In this
+ # case, the superfluous part will be cropped. Since this, however, changes the
+ # DXCC of the prefix, this will NOT happen when invoked from with an
+ # extra parameter $_[1]; this will happen when invoking it from &dxcc.
+
+ if (preg_match('/(\w+\d)[A-Z]+\d/', $prefix, $matches) && $i == null) {
+ $prefix = $matches[1][0];
+ }
+ return $prefix;
+ } else {
return '';
}
+ }
- /*
+ public function get_entity($dxcc)
+ {
+ $sql = "select name, cqz, lat, 'long' from dxcc_entities where adif = " . $dxcc;
+ $query = $this->db->query($sql);
+
+ if ($query->result() > 0) {
+ $row = $query->row_array();
+ return $row;
+ }
+ return '';
+ }
+
+ /*
* Same as check_dxcc_table, but the functionality is in
* a stored procedure which we call
*/
- public function check_dxcc_stored_proc($call, $date){
- $this->db->query("call find_country('".$call."','".$date."', @country, @adif, @cqz)");
- $res = $this->db->query("select @country as country, @adif as adif, @cqz as cqz");
- $d = $res->result_array();
+ public function check_dxcc_stored_proc($call, $date)
+ {
+ $this->db->query("call find_country('" . $call . "','" . $date . "', @country, @adif, @cqz)");
+ $res = $this->db->query("select @country as country, @adif as adif, @cqz as cqz");
+ $d = $res->result_array();
- // Should only be one result.
- // NOTE: might cause unexpected data if there's an
- // error with clublog.org data.
- return $d[0];
+ // Should only be one result.
+ // NOTE: might cause unexpected data if there's an
+ // error with clublog.org data.
+ return $d[0];
+ }
+
+ public function check_missing_dxcc_id($all)
+ {
+ // get all records with no COL_DXCC
+ $this->db->select("COL_PRIMARY_KEY, COL_CALL, COL_TIME_ON, COL_TIME_OFF");
+
+ // check which to update - records with no dxcc or all records
+ if (!$all) {
+ $this->db->where("COL_DXCC is NULL");
}
- public function check_missing_dxcc_id($all){
- // get all records with no COL_DXCC
- $this->db->select("COL_PRIMARY_KEY, COL_CALL, COL_TIME_ON, COL_TIME_OFF");
+ $r = $this->db->get($this->config->item('table_name'));
- // check which to update - records with no dxcc or all records
- if (!$all){
- $this->db->where("COL_DXCC is NULL");
+ $count = 0;
+ $this->db->trans_start();
+ //query dxcc_prefixes
+ if ($r->num_rows() > 0) {
+ foreach ($r->result_array() as $row) {
+ $qso_date = $row['COL_TIME_OFF'] == '' ? $row['COL_TIME_ON'] : $row['COL_TIME_OFF'];
+ $qso_date = date("Y-m-d", strtotime($qso_date));
+
+ // Manual call
+ $d = $this->check_dxcc_table($row['COL_CALL'], $qso_date);
+
+ // Stored procedure call
+ //$d = $this->check_dxcc_stored_proc($row["COL_CALL"], $qso_date);
+
+ if ($d[0] != 'Not Found') {
+ $sql = sprintf(
+ "update %s set COL_COUNTRY = '%s', COL_DXCC='%s' where COL_PRIMARY_KEY=%d",
+ $this->config->item('table_name'),
+ addslashes(ucwords(strtolower($d[1]), "- (/")),
+ $d[0],
+ $row['COL_PRIMARY_KEY']
+ );
+ $this->db->query($sql);
+ //print($sql."\n");
+ printf("Updating %s to %s and %s\n
", $row['COL_PRIMARY_KEY'], ucwords(strtolower($d[1]), "- (/"), $d[0]);
+ $count++;
+ }
+ }
+ }
+ $this->db->trans_complete();
+
+ print("$count updated\n");
+ }
+
+ public function check_missing_continent()
+ {
+ // get all records with no COL_CONT
+ $this->db->trans_start();
+ $sql = "UPDATE " . $this->config->item('table_name') . " JOIN dxcc_entities ON " . $this->config->item('table_name') . ".col_dxcc = dxcc_entities.adif SET col_cont = dxcc_entities.cont WHERE COALESCE(" . $this->config->item('table_name') . ".col_cont, '') = ''";
+
+ $query = $this->db->query($sql);
+ print($this->db->affected_rows() . " updated\n");
+ $this->db->trans_complete();
+ }
+
+ public function check_missing_grid_id($all)
+ {
+ // get all records with no COL_GRIDSQUARE
+ $this->db->select("COL_PRIMARY_KEY, COL_CALL, COL_TIME_ON, COL_TIME_OFF");
+
+ $this->db->where("(COL_GRIDSQUARE is NULL or COL_GRIDSQUARE = '') AND (COL_VUCC_GRIDS is NULL or COL_VUCC_GRIDS = '')");
+
+ $r = $this->db->get($this->config->item('table_name'));
+
+ $count = 0;
+ $this->db->trans_start();
+ if ($r->num_rows() > 0) {
+ foreach ($r->result_array() as $row) {
+ $callsign = $row['COL_CALL'];
+ if ($this->config->item('callbook') == "qrz" && $this->config->item('qrz_username') != null && $this->config->item('qrz_password') != null) {
+ // Lookup using QRZ
+ if (!$this->load->is_loaded('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);
+ }
+
+ $callbook = $this->qrz->search($callsign, $this->session->userdata('qrz_session_key'));
}
- $r = $this->db->get($this->config->item('table_name'));
+ if ($this->config->item('callbook') == "hamqth" && $this->config->item('hamqth_username') != null && $this->config->item('hamqth_password') != null) {
+ // Load the HamQTH library
+ if (!$this->load->is_loaded('hamqth')) {
+ $this->load->library('hamqth');
+ }
- $count = 0;
- $this->db->trans_start();
- //query dxcc_prefixes
- if ($r->num_rows() > 0){
- foreach($r->result_array() as $row){
- $qso_date = $row['COL_TIME_OFF']=='' ? $row['COL_TIME_ON'] : $row['COL_TIME_OFF'];
- $qso_date = date("Y-m-d", strtotime($qso_date));
+ if (!$this->session->userdata('hamqth_session_key')) {
+ $hamqth_session_key = $this->hamqth->session($this->config->item('hamqth_username'), $this->config->item('hamqth_password'));
+ $this->session->set_userdata('hamqth_session_key', $hamqth_session_key);
+ }
- // Manual call
- $d = $this->check_dxcc_table($row['COL_CALL'], $qso_date);
+ $callbook = $this->hamqth->search($callsign, $this->session->userdata('hamqth_session_key'));
- // Stored procedure call
- //$d = $this->check_dxcc_stored_proc($row["COL_CALL"], $qso_date);
-
- if ($d[0] != 'Not Found'){
- $sql = sprintf("update %s set COL_COUNTRY = '%s', COL_DXCC='%s' where COL_PRIMARY_KEY=%d",
- $this->config->item('table_name'), addslashes(ucwords(strtolower($d[1]), "- (/")), $d[0], $row['COL_PRIMARY_KEY']);
- $this->db->query($sql);
- //print($sql."\n");
- printf("Updating %s to %s and %s\n
", $row['COL_PRIMARY_KEY'], ucwords(strtolower($d[1]), "- (/"), $d[0]);
- $count++;
- }
- }
+ // If HamQTH session has expired, start a new session and retry the search.
+ if ($callbook['error'] == "Session does not exist or expired") {
+ $hamqth_session_key = $this->hamqth->session($this->config->item('hamqth_username'), $this->config->item('hamqth_password'));
+ $this->session->set_userdata('hamqth_session_key', $hamqth_session_key);
+ $callbook = $this->hamqth->search($callsign, $this->session->userdata('hamqth_session_key'));
+ }
}
- $this->db->trans_complete();
-
- print("$count updated\n");
- }
-
- public function check_missing_continent(){
- // get all records with no COL_CONT
- $this->db->trans_start();
- $sql = "UPDATE ".$this->config->item('table_name')." JOIN dxcc_entities ON ".$this->config->item('table_name').".col_dxcc = dxcc_entities.adif SET col_cont = dxcc_entities.cont WHERE COALESCE(".$this->config->item('table_name').".col_cont, '') = ''";
-
- $query = $this->db->query($sql);
- print($this->db->affected_rows()." updated\n");
- $this->db->trans_complete();
- }
-
- public function check_missing_grid_id($all){
- // get all records with no COL_GRIDSQUARE
- $this->db->select("COL_PRIMARY_KEY, COL_CALL, COL_TIME_ON, COL_TIME_OFF");
-
- $this->db->where("(COL_GRIDSQUARE is NULL or COL_GRIDSQUARE = '') AND (COL_VUCC_GRIDS is NULL or COL_VUCC_GRIDS = '')");
-
- $r = $this->db->get($this->config->item('table_name'));
-
- $count = 0;
- $this->db->trans_start();
- if ($r->num_rows() > 0){
- foreach($r->result_array() as $row){
- $callsign = $row['COL_CALL'];
- if ($this->config->item('callbook') == "qrz" && $this->config->item('qrz_username') != null && $this->config->item('qrz_password') != null)
- {
- // Lookup using QRZ
- if(!$this->load->is_loaded('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);
- }
-
- $callbook = $this->qrz->search($callsign, $this->session->userdata('qrz_session_key'));
- }
-
- if ($this->config->item('callbook') == "hamqth" && $this->config->item('hamqth_username') != null && $this->config->item('hamqth_password') != null)
- {
- // Load the HamQTH library
- if(!$this->load->is_loaded('hamqth')) {
- $this->load->library('hamqth');
- }
-
- if(!$this->session->userdata('hamqth_session_key')) {
- $hamqth_session_key = $this->hamqth->session($this->config->item('hamqth_username'), $this->config->item('hamqth_password'));
- $this->session->set_userdata('hamqth_session_key', $hamqth_session_key);
- }
-
- $callbook = $this->hamqth->search($callsign, $this->session->userdata('hamqth_session_key'));
-
- // If HamQTH session has expired, start a new session and retry the search.
- if($callbook['error'] == "Session does not exist or expired") {
- $hamqth_session_key = $this->hamqth->session($this->config->item('hamqth_username'), $this->config->item('hamqth_password'));
- $this->session->set_userdata('hamqth_session_key', $hamqth_session_key);
- $callbook = $this->hamqth->search($callsign, $this->session->userdata('hamqth_session_key'));
- }
- }
- if (isset($callbook))
- {
- if (isset($callbook['error'])) {
- printf("Error: ".$callbook['error']."
");
- } else {
- $return['callsign_qra'] = $callbook['gridsquare'];
- if ($return['callsign_qra'] != ''){
- $sql = sprintf("update %s set COL_GRIDSQUARE = '%s' where COL_PRIMARY_KEY=%d",
- $this->config->item('table_name'), $return['callsign_qra'], $row['COL_PRIMARY_KEY']);
- $this->db->query($sql);
- printf("Updating %s to %s\n
", $row['COL_PRIMARY_KEY'], $return['callsign_qra']);
- $count++;
- }
- }
- }
- }
- }
- $this->db->trans_complete();
-
- print("$count updated\n");
- }
-
- public function update_distances(){
- $this->db->select("COL_PRIMARY_KEY, COL_GRIDSQUARE, station_gridsquare");
- $this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id');
- $this->db->where("((COL_DISTANCE is NULL) or (COL_DISTANCE = 0))");
- $this->db->where("COL_GRIDSQUARE is NOT NULL");
- $this->db->where("COL_GRIDSQUARE != ''");
- $this->db->where("COL_GRIDSQUARE != station_gridsquare");
- $this->db->trans_start();
- $query = $this->db->get($this->config->item('table_name'));
-
- $count = 0;
- if ($query->num_rows() > 0){
- print("Affected QSOs: ".$this->db->affected_rows()."
");
- $this->load->library('Qra');
- foreach ($query->result() as $row) {
- $distance = $this->qra->distance($row->station_gridsquare, $row->COL_GRIDSQUARE, 'K');
- $data = array(
- 'COL_DISTANCE' => $distance,
+ if (isset($callbook)) {
+ if (isset($callbook['error'])) {
+ printf("Error: " . $callbook['error'] . "
");
+ } else {
+ $return['callsign_qra'] = $callbook['gridsquare'];
+ if ($return['callsign_qra'] != '') {
+ $sql = sprintf(
+ "update %s set COL_GRIDSQUARE = '%s' where COL_PRIMARY_KEY=%d",
+ $this->config->item('table_name'),
+ $return['callsign_qra'],
+ $row['COL_PRIMARY_KEY']
);
-
- $this->db->where(array('COL_PRIMARY_KEY' => $row->COL_PRIMARY_KEY));
- $this->db->update($this->config->item('table_name'), $data);
+ $this->db->query($sql);
+ printf("Updating %s to %s\n
", $row['COL_PRIMARY_KEY'], $return['callsign_qra']);
$count++;
- }
- print("QSOs updated: ".$count);
- } else {
- print "No QSOs affected.";
+ }
+ }
}
- $this->db->trans_complete();
- }
-
- public function calls_without_station_id() {
- $query=$this->db->query("select distinct COL_STATION_CALLSIGN from ".$this->config->item('table_name')." where station_id is null or station_id = ''");
- $result = $query->result_array();
- return $result;
- }
-
- public function check_for_station_id() {
- $this->db->select('COL_PRIMARY_KEY, COL_TIME_ON, COL_CALL, COL_MODE, COL_BAND');
- $this->db->where('station_id =', NULL);
- $query = $this->db->get($this->config->item('table_name'));
- if($query->num_rows() >= 1) {
- return $query->result();
- } else {
- return 0;
}
}
+ $this->db->trans_complete();
- // This should be in a helper? copied from Logbook controller
- function get_plaincall($callsign) {
- $split_callsign=explode('/',$callsign);
- if (count($split_callsign)==1) { // case F0ABC --> return cel 0 //
- $lookupcall = $split_callsign[0];
- } else if (count($split_callsign)==3) { // case EA/F0ABC/P --> return cel 1 //
- $lookupcall = $split_callsign[1];
- } else { // case F0ABC/P --> return cel 0 OR case EA/FOABC --> retunr 1 (normaly not exist) //
- if (in_array(strtoupper($split_callsign[1]), array('P','M','MM','QRP','0','1','2','3','4','5','6','7','8','9'))) {
- $lookupcall = $split_callsign[0];
- } else if (strlen($split_callsign[1])>3) { // Last Element longer than 3 chars? Take that as call
- $lookupcall = $split_callsign[1];
- } else { // Last Element up to 3 Chars? Take first element as Call
- $lookupcall = $split_callsign[0];
- }
- }
- return $lookupcall;
- }
+ print("$count updated\n");
+ }
+ public function update_distances()
+ {
+ $this->db->select("COL_PRIMARY_KEY, COL_GRIDSQUARE, station_gridsquare");
+ $this->db->join('station_profile', 'station_profile.station_id = ' . $this->config->item('table_name') . '.station_id');
+ $this->db->where("((COL_DISTANCE is NULL) or (COL_DISTANCE = 0))");
+ $this->db->where("COL_GRIDSQUARE is NOT NULL");
+ $this->db->where("COL_GRIDSQUARE != ''");
+ $this->db->where("COL_GRIDSQUARE != station_gridsquare");
+ $this->db->trans_start();
+ $query = $this->db->get($this->config->item('table_name'));
- public function loadCallBook($callsign, $use_fullname=false)
- {
- $callbook = null;
- try {
- 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');
+ $count = 0;
+ if ($query->num_rows() > 0) {
+ print("Affected QSOs: " . $this->db->affected_rows() . "
");
+ $this->load->library('Qra');
+ foreach ($query->result() as $row) {
+ $distance = $this->qra->distance($row->station_gridsquare, $row->COL_GRIDSQUARE, 'K');
+ $data = array(
+ 'COL_DISTANCE' => $distance,
+ );
- 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);
- }
-
- $callbook = $this->qrz->search($callsign, $this->session->userdata('qrz_session_key'), $use_fullname);
-
- // if we got nothing, it's probably because our session key is invalid, try again
- if (($callbook['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);
- $callbook = $this->qrz->search($callsign, $this->session->userdata('qrz_session_key'), $use_fullname);
- // if we still got nothing, and it's a compound callsign, then try a search for the base call
- if (($callbook['callsign'] ?? '') == '' && strpos($callsign,"/")!==false){
- $callbook = $this->qrz->search($this->get_plaincall($callsign), $this->session->userdata('qrz_session_key'), $use_fullname);
- }
- }
- }
-
- if ($this->config->item('callbook') == "hamqth" && $this->config->item('hamqth_username') != null && $this->config->item('hamqth_password') != null) {
- // Load the HamQTH library
- $this->load->library('hamqth');
-
- if (!$this->session->userdata('hamqth_session_key')) {
- $hamqth_session_key = $this->hamqth->session($this->config->item('hamqth_username'), $this->config->item('hamqth_password'));
- $this->session->set_userdata('hamqth_session_key', $hamqth_session_key);
- }
-
- $callbook = $this->hamqth->search($callsign, $this->session->userdata('hamqth_session_key'));
-
- // If HamQTH session has expired, start a new session and retry the search.
- if ($callbook['error'] == "Session does not exist or expired") {
- $hamqth_session_key = $this->hamqth->session($this->config->item('hamqth_username'), $this->config->item('hamqth_password'));
- $this->session->set_userdata('hamqth_session_key', $hamqth_session_key);
- $callbook = $this->hamqth->search($callsign, $this->session->userdata('hamqth_session_key'));
- }
- }
- } finally {
- return $callbook;
- }
- }
-
- public function update_station_ids($station_id,$station_callsign,$qsoids) {
-
- if (! empty($qsoids)) {
- $data = array(
- 'station_id' => $station_id,
- );
-
- $this->db->where_in('COL_PRIMARY_KEY', $qsoids);
- $this->db->where(array('station_id' => NULL));
- if ($station_callsign == '') {
- $this->db->where(array('col_station_callsign' => NULL));
- } else {
- $this->db->where('col_station_callsign', $station_callsign);
- }
- $this->db->update($this->config->item('table_name'), $data);
- if ($this->db->affected_rows() > 0) {
- return TRUE;
- } else {
- return FALSE;
- }
- } else {
- return FALSE;
- }
- }
-
- public function parse_frequency($frequency)
- {
- if (is_int($frequency))
- return $frequency;
-
- if (is_string($frequency))
- {
- $frequency = strtoupper($frequency);
- $frequency = str_replace(" ", "", $frequency);
- $frequency = str_replace("HZ", "", $frequency);
- $frequency = str_replace(["K", "M", "G", "T"], ["E3", "E6", "E9", "E12"], $frequency);
-
- // this double conversion will take a string like "3700e3" and convert it into 3700000
- return (int)(float) $frequency;
+ $this->db->where(array('COL_PRIMARY_KEY' => $row->COL_PRIMARY_KEY));
+ $this->db->update($this->config->item('table_name'), $data);
+ $count++;
}
+ print("QSOs updated: " . $count);
+ } else {
+ print "No QSOs affected.";
+ }
+ $this->db->trans_complete();
+ }
+ public function calls_without_station_id()
+ {
+ $query = $this->db->query("select distinct COL_STATION_CALLSIGN from " . $this->config->item('table_name') . " where station_id is null or station_id = ''");
+ $result = $query->result_array();
+ return $result;
+ }
+
+ public function check_for_station_id()
+ {
+ $this->db->select('COL_PRIMARY_KEY, COL_TIME_ON, COL_CALL, COL_MODE, COL_BAND');
+ $this->db->where('station_id =', NULL);
+ $query = $this->db->get($this->config->item('table_name'));
+ if ($query->num_rows() >= 1) {
+ return $query->result();
+ } else {
return 0;
}
+ }
- /*
+ // This should be in a helper? copied from Logbook controller
+ function get_plaincall($callsign)
+ {
+ $split_callsign = explode('/', $callsign);
+ if (count($split_callsign) == 1) { // case F0ABC --> return cel 0 //
+ $lookupcall = $split_callsign[0];
+ } else if (count($split_callsign) == 3) { // case EA/F0ABC/P --> return cel 1 //
+ $lookupcall = $split_callsign[1];
+ } else { // case F0ABC/P --> return cel 0 OR case EA/FOABC --> retunr 1 (normaly not exist) //
+ if (in_array(strtoupper($split_callsign[1]), array('P', 'M', 'MM', 'QRP', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'))) {
+ $lookupcall = $split_callsign[0];
+ } else if (strlen($split_callsign[1]) > 3) { // Last Element longer than 3 chars? Take that as call
+ $lookupcall = $split_callsign[1];
+ } else { // Last Element up to 3 Chars? Take first element as Call
+ $lookupcall = $split_callsign[0];
+ }
+ }
+ return $lookupcall;
+ }
+
+
+ public function loadCallBook($callsign, $use_fullname = false)
+ {
+ $callbook = null;
+ try {
+ 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);
+ }
+
+ $callbook = $this->qrz->search($callsign, $this->session->userdata('qrz_session_key'), $use_fullname);
+
+ // if we got nothing, it's probably because our session key is invalid, try again
+ if (($callbook['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);
+ $callbook = $this->qrz->search($callsign, $this->session->userdata('qrz_session_key'), $use_fullname);
+ // if we still got nothing, and it's a compound callsign, then try a search for the base call
+ if (($callbook['callsign'] ?? '') == '' && strpos($callsign, "/") !== false) {
+ $callbook = $this->qrz->search($this->get_plaincall($callsign), $this->session->userdata('qrz_session_key'), $use_fullname);
+ }
+ }
+ }
+
+ if ($this->config->item('callbook') == "hamqth" && $this->config->item('hamqth_username') != null && $this->config->item('hamqth_password') != null) {
+ // Load the HamQTH library
+ $this->load->library('hamqth');
+
+ if (!$this->session->userdata('hamqth_session_key')) {
+ $hamqth_session_key = $this->hamqth->session($this->config->item('hamqth_username'), $this->config->item('hamqth_password'));
+ $this->session->set_userdata('hamqth_session_key', $hamqth_session_key);
+ }
+
+ $callbook = $this->hamqth->search($callsign, $this->session->userdata('hamqth_session_key'));
+
+ // If HamQTH session has expired, start a new session and retry the search.
+ if ($callbook['error'] == "Session does not exist or expired") {
+ $hamqth_session_key = $this->hamqth->session($this->config->item('hamqth_username'), $this->config->item('hamqth_password'));
+ $this->session->set_userdata('hamqth_session_key', $hamqth_session_key);
+ $callbook = $this->hamqth->search($callsign, $this->session->userdata('hamqth_session_key'));
+ }
+ }
+ } finally {
+ return $callbook;
+ }
+ }
+
+ public function update_station_ids($station_id, $station_callsign, $qsoids)
+ {
+
+ if (!empty($qsoids)) {
+ $data = array(
+ 'station_id' => $station_id,
+ );
+
+ $this->db->where_in('COL_PRIMARY_KEY', $qsoids);
+ $this->db->where(array('station_id' => NULL));
+ if ($station_callsign == '') {
+ $this->db->where(array('col_station_callsign' => NULL));
+ } else {
+ $this->db->where('col_station_callsign', $station_callsign);
+ }
+ $this->db->update($this->config->item('table_name'), $data);
+ if ($this->db->affected_rows() > 0) {
+ return TRUE;
+ } else {
+ return FALSE;
+ }
+ } else {
+ return FALSE;
+ }
+ }
+
+ public function parse_frequency($frequency)
+ {
+ if (is_int($frequency))
+ return $frequency;
+
+ if (is_string($frequency)) {
+ $frequency = strtoupper($frequency);
+ $frequency = str_replace(" ", "", $frequency);
+ $frequency = str_replace("HZ", "", $frequency);
+ $frequency = str_replace(["K", "M", "G", "T"], ["E3", "E6", "E9", "E12"], $frequency);
+
+ // this double conversion will take a string like "3700e3" and convert it into 3700000
+ return (int)(float) $frequency;
+ }
+
+ return 0;
+ }
+
+ /*
* This function returns the the whole list of dxcc_entities used in various places
*/
- function fetchDxcc() {
- $sql = "select adif, prefix, name, date(end) Enddate, date(start) Startdate from dxcc_entities";
+ function fetchDxcc()
+ {
+ $sql = "select adif, prefix, name, date(end) Enddate, date(start) Startdate from dxcc_entities";
- $sql .= ' order by prefix';
- $query = $this->db->query($sql);
+ $sql .= ' order by prefix';
+ $query = $this->db->query($sql);
- return $query->result();
- }
+ return $query->result();
+ }
- /*
+ /*
* This function returns the whole list of iotas used in various places
*/
- function fetchIota() {
- $sql = "select tag, name from iota";
+ function fetchIota()
+ {
+ $sql = "select tag, name from iota";
- $sql .= ' order by tag';
- $query = $this->db->query($sql);
+ $sql .= ' order by tag';
+ $query = $this->db->query($sql);
- return $query->result();
- }
+ return $query->result();
+ }
- function get_lotw_qsos_to_upload($station_id, $start_date, $end_date) {
+ function get_lotw_qsos_to_upload($station_id, $start_date, $end_date)
+ {
$this->db->select('COL_PRIMARY_KEY,COL_CALL, COL_BAND, COL_BAND_RX, COL_TIME_ON, COL_RST_RCVD, COL_RST_SENT, COL_MODE, COL_SUBMODE, COL_FREQ, COL_FREQ_RX, COL_GRIDSQUARE, COL_SAT_NAME, COL_PROP_MODE, COL_LOTW_QSL_SENT, station_id');
@@ -4542,12 +4622,13 @@ function lotw_last_qsl_date($user_id) {
return $query;
}
- function mark_lotw_sent($qso_id) {
+ function mark_lotw_sent($qso_id)
+ {
- $data = array(
- 'COL_LOTW_QSLSDATE' => date("Y-m-d H:i:s"),
- 'COL_LOTW_QSL_SENT' => 'Y',
- );
+ $data = array(
+ 'COL_LOTW_QSLSDATE' => date("Y-m-d H:i:s"),
+ 'COL_LOTW_QSL_SENT' => 'Y',
+ );
$this->db->where('COL_PRIMARY_KEY', $qso_id);
@@ -4557,94 +4638,96 @@ function lotw_last_qsl_date($user_id) {
return "Updated";
}
- function county_qso_details($state, $county) {
- $CI =& get_instance();
- $CI->load->model('logbooks_model');
- $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+ function county_qso_details($state, $county)
+ {
+ $CI = &get_instance();
+ $CI->load->model('logbooks_model');
+ $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
- $this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id');
- $this->db->join('lotw_users', 'lotw_users.callsign = '.$this->config->item('table_name').'.col_call', 'left outer');
- $this->db->where_in($this->config->item('table_name').'.station_id', $logbooks_locations_array);
- $this->db->where('COL_STATE', $state);
- $this->db->where('COL_CNTY', $county);
- $this->db->where('COL_PROP_MODE !=', 'SAT');
+ $this->db->join('station_profile', 'station_profile.station_id = ' . $this->config->item('table_name') . '.station_id');
+ $this->db->join('lotw_users', 'lotw_users.callsign = ' . $this->config->item('table_name') . '.col_call', 'left outer');
+ $this->db->where_in($this->config->item('table_name') . '.station_id', $logbooks_locations_array);
+ $this->db->where('COL_STATE', $state);
+ $this->db->where('COL_CNTY', $county);
+ $this->db->where('COL_PROP_MODE !=', 'SAT');
- return $this->db->get($this->config->item('table_name'));
+ return $this->db->get($this->config->item('table_name'));
+ }
+
+ public function check_qso_is_accessible($id)
+ {
+ // check if qso belongs to user
+ $this->db->select($this->config->item('table_name') . '.COL_PRIMARY_KEY');
+ $this->db->join('station_profile', $this->config->item('table_name') . '.station_id = station_profile.station_id');
+ $this->db->where('station_profile.user_id', $this->session->userdata('user_id'));
+ $this->db->where($this->config->item('table_name') . '.COL_PRIMARY_KEY', $id);
+ $query = $this->db->get($this->config->item('table_name'));
+ if ($query->num_rows() == 1) {
+ return true;
}
+ return false;
+ }
- public function check_qso_is_accessible($id) {
- // check if qso belongs to user
- $this->db->select($this->config->item('table_name').'.COL_PRIMARY_KEY');
- $this->db->join('station_profile', $this->config->item('table_name').'.station_id = station_profile.station_id');
- $this->db->where('station_profile.user_id', $this->session->userdata('user_id'));
- $this->db->where($this->config->item('table_name').'.COL_PRIMARY_KEY', $id);
- $query = $this->db->get($this->config->item('table_name'));
- if ($query->num_rows() == 1) {
- return true;
+ // [JSON PLOT] return array for plot qso for map //
+ public function get_plot_array_for_map($qsos_result, $isVisitor = false)
+ {
+ $this->load->library('qra');
+
+ $json["markers"] = array();
+
+ foreach ($qsos_result as $row) {
+ $plot = array('lat' => 0, 'lng' => 0, 'html' => '', 'label' => '', 'confirmed' => 'N');
+
+ $plot['label'] = $row->COL_CALL;
+
+ $plot['html'] = "Callsign: " . $row->COL_CALL . "
Date/Time: " . $row->COL_TIME_ON . "
";
+ $plot['html'] .= ($row->COL_SAT_NAME != null) ? ("SAT: " . $row->COL_SAT_NAME . "
") : ("Band: " . $row->COL_BAND . "
");
+ $plot['html'] .= "Mode: " . ($row->COL_SUBMODE == null ? $row->COL_MODE : $row->COL_SUBMODE) . "
";
+
+ // check if qso is confirmed //
+ if (!$isVisitor) {
+ if (($row->COL_EQSL_QSL_RCVD == 'Y') || ($row->COL_LOTW_QSL_RCVD == 'Y') || ($row->COL_QSL_RCVD == 'Y')) {
+ $plot['confirmed'] = "Y";
}
- return false;
- }
-
- // [JSON PLOT] return array for plot qso for map //
- public function get_plot_array_for_map($qsos_result, $isVisitor=false) {
- $this->load->library('qra');
-
- $json["markers"] = array();
-
- foreach ($qsos_result as $row) {
- $plot = array('lat'=>0, 'lng'=>0, 'html'=>'', 'label'=>'', 'confirmed'=>'N');
-
- $plot['label'] = $row->COL_CALL;
-
- $plot['html'] = "Callsign: ".$row->COL_CALL."
Date/Time: ".$row->COL_TIME_ON."
";
- $plot['html'] .= ($row->COL_SAT_NAME != null) ? ("SAT: ".$row->COL_SAT_NAME."
") : ("Band: ".$row->COL_BAND."
");
- $plot['html'] .= "Mode: ".($row->COL_SUBMODE==null?$row->COL_MODE:$row->COL_SUBMODE)."
";
-
- // check if qso is confirmed //
- if (!$isVisitor) {
- if (($row->COL_EQSL_QSL_RCVD=='Y') || ($row->COL_LOTW_QSL_RCVD=='Y') || ($row->COL_QSL_RCVD=='Y')) {
- $plot['confirmed'] = "Y";
- }
- }
- // check lat / lng (depend info source) //
- if ($row->COL_GRIDSQUARE != null) {
- $stn_loc = $this->qra->qra2latlong($row->COL_GRIDSQUARE);
-
- } 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);
- }
- } else {
- if (isset($row->lat) && isset($row->long)) {
- $stn_loc = array($row->lat, $row->long);
- }
- }
- list($plot['lat'], $plot['lng']) = $stn_loc;
- // add plot //
- $json["markers"][] = $plot;
}
- return $json;
+ // check lat / lng (depend info source) //
+ if ($row->COL_GRIDSQUARE != null) {
+ $stn_loc = $this->qra->qra2latlong($row->COL_GRIDSQUARE);
+ } 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);
+ }
+ } else {
+ if (isset($row->lat) && isset($row->long)) {
+ $stn_loc = array($row->lat, $row->long);
+ }
+ }
+ list($plot['lat'], $plot['lng']) = $stn_loc;
+ // add plot //
+ $json["markers"][] = $plot;
}
+ return $json;
+ }
}
function validateADIFDate($date, $format = 'Ymd')
@@ -4652,4 +4735,3 @@ function validateADIFDate($date, $format = 'Ymd')
$d = DateTime::createFromFormat($format, $date);
return $d && $d->format($format) == $date;
}
-?>
diff --git a/application/views/components/hamsat/table.php b/application/views/components/hamsat/table.php
index 80dad90b..0a76fade 100644
--- a/application/views/components/hamsat/table.php
+++ b/application/views/components/hamsat/table.php
@@ -21,7 +21,7 @@
-
+
-
|
-
+
|
load->model('logbooks_model');
- $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+ $CI->load->model('logbooks_model');
+ $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
$CI->load->model('logbook_model');
$call_worked = $CI->logbook_model->check_if_callsign_worked_in_logbook($rove['callsign'], $logbooks_locations_array, "SAT");
if ($call_worked != 0) {
@@ -60,48 +60,54 @@
|
|
- = $rove['satellite'] ?> |
+
+ ">= $rove['satellite']['name'] ?> |
logbook_model->check_if_grid_worked_in_logbook($grid, null, "SAT");
- if ($worked != 0) {
- echo " " . $grid . "";
- } else {
- echo " " . $grid . "";
- }
- }
- } else {
- $worked = $CI->logbook_model->check_if_grid_worked_in_logbook($rove['gridsquare'], null, "SAT");
+ foreach ($rove['grids'] as $grid) {
+ $worked = $CI->logbook_model->check_if_grid_worked_in_logbook($grid, null, "SAT");
if ($worked != 0) {
- echo " " . $rove['gridsquare'] . "";
+ echo " " . $grid . "";
} else {
- echo " " . $rove['gridsquare'] . "";
+ echo " " . $grid . "";
}
}
?>
|
- Track |
+ Track |
- Sked |
+ Sked |
diff --git a/application/views/eqsl/import.php b/application/views/eqsl/import.php
index 55ebb169..c6801e89 100644
--- a/application/views/eqsl/import.php
+++ b/application/views/eqsl/import.php
@@ -31,20 +31,18 @@
Upload the Exported ADIF file from eQSL from the Download Inbox page, to mark QSOs as confirmed on eQSL.
- Important Log files must have the file type .adi
-
-
Choose Station(location) eQSL File belongs to:
+ ImportantLog files must have the file type .adi
+
-
-
-
+
-
-
+
diff --git a/application/views/sattimers/index.php b/application/views/sattimers/index.php
index 53a494aa..3a05c895 100644
--- a/application/views/sattimers/index.php
+++ b/application/views/sattimers/index.php
@@ -32,10 +32,10 @@ var custom_date_format = "";
Time(d)-Out |
AOS |
LOS |
- AOS Azimuth |
- LOS Azimuth |
- Max Elevation |
- Duration |
+ AOS Azimuth |
+ LOS Azimuth |
+ Max Elevation |
+ Duration |
|
@@ -49,10 +49,10 @@ var custom_date_format = "";
... |
|
|
- ° |
- ° |
- ° |
- min |
+ ° |
+ ° |
+ ° |
+ min |
+ COL_MY_IOTA) { ?>
+ |
+ |
+ COL_MY_IOTA; ?> |
+
+
+
+ COL_MY_SOTA_REF) { ?>
+
+ |
+ COL_MY_SOTA_REF; ?> |
+
+
+
COL_MY_WWFF_REF) { ?>
|
diff --git a/application/views/visitor/index.php b/application/views/visitor/index.php
index f8974ac5..898e9fcd 100644
--- a/application/views/visitor/index.php
+++ b/application/views/visitor/index.php
@@ -48,6 +48,8 @@ function echoQrbCalcLink($mygrid, $grid, $vucc) {
+
+
diff --git a/assets/css/default/overrides.css b/assets/css/default/overrides.css
index 943d0165..ae07e3e7 100644
--- a/assets/css/default/overrides.css
+++ b/assets/css/default/overrides.css
@@ -60,4 +60,4 @@ thead > tr > td {
.dxccsummaryheader:after {
background-image: linear-gradient(to right, black 0, black 12ch, black 12ch, black 100%);
-}
\ No newline at end of file
+}
diff --git a/assets/css/general.css b/assets/css/general.css
index 1443a1e8..4f17f87b 100644
--- a/assets/css/general.css
+++ b/assets/css/general.css
@@ -767,4 +767,19 @@ label {
.dxccsummaryheaderopened:after {
content: "\2796"; /* Unicode character for "minus" sign (-) */
-}
\ No newline at end of file
+}
+
+.hamsatBgLin {
+ background-color: rgb(224 242 254) !important;
+ --bs-badge-color: rgb(2 132 199) !important;
+}
+
+.hamsatBgData {
+ background-color: rgb(250 232 255) !important;
+ --bs-badge-color: rgb(192 38 211) !important;
+}
+
+.hamsatBgFm {
+ background-color: rgb(254 243 199) !important;
+ --bs-badge-color: rgb(217 119 6) !important;
+}
diff --git a/src/QSLManager/QSO.php b/src/QSLManager/QSO.php
index 5296a9d5..53b57623 100644
--- a/src/QSLManager/QSO.php
+++ b/src/QSLManager/QSO.php
@@ -194,7 +194,7 @@ class QSO
$this->lotw = $this->getLotwString($data, $custom_date_format);
$this->eqsl = $this->getEqslString($data, $custom_date_format);
- $this->cqzone = ($data['COL_CQZ'] === null) ? '' : '
'.$data['COL_CQZ'].'';
+ $this->cqzone = ($data['COL_CQZ'] === null) ? '' : $this->geCqLink($data['COL_CQZ']);
$this->state = ($data['COL_STATE'] === null) ? '' :$data['COL_STATE'];
$this->dxcc = (($data['name'] ?? null) === null) ? '- NONE -' : '
'.ucwords(strtolower($data['name']), "- (/").'';
$this->iota = ($data['COL_IOTA'] === null) ? '' : $this->getIotaLink($data['COL_IOTA']);
@@ -209,6 +209,18 @@ class QSO
$this->operator = ($data['COL_OPERATOR'] === null) ? '' :$data['COL_OPERATOR'];
}
+ /**
+ * @return string
+ */
+ function geCqLink($cqz): string
+ {
+ $cqz_link = '';
+ if ($cqz <= '40') {
+ return '
'.$cqz.'';
+ }
+ return $cqz;
+ }
+
/**
* @return string
*/
diff --git a/system/libraries/Email.php b/system/libraries/Email.php
index 01f513b2..489e82d5 100644
--- a/system/libraries/Email.php
+++ b/system/libraries/Email.php
@@ -1059,7 +1059,7 @@ class CI_Email {
*
* Provides the raw message for use in plain-text headers of
* HTML-formatted emails.
- * If the user hasn't specified his own alternative message
+ * If the user hasn't specified their own alternative message
* it creates one by stripping the HTML
*
* @return string