diff --git a/application/libraries/AdifHelper.php b/application/libraries/AdifHelper.php index c2d045e4..60bf9565 100644 --- a/application/libraries/AdifHelper.php +++ b/application/libraries/AdifHelper.php @@ -3,13 +3,144 @@ class AdifHelper { public function getAdifLine($qso) { - $line = ""; - $line .= $this->getAdifFieldLine("CALL", $qso->COL_CALL); - $line .= $this->getAdifFieldLine("BAND", $qso->COL_BAND); - $line .= $this->getAdifFieldLine("MODE", $qso->COL_MODE); + $normalFields = array( + 'ADDRESS', + 'AGE', + 'A_INDEX', + 'ANT_AZ', + 'ANT_EL', + 'ANT_PATH', + 'ARRL_SECT', + 'AWARD_GRANTED', + 'AWARD_SUMMITED', // Typo in DB! + 'BAND', + 'BAND_RX', + 'BIOGRAPHY', + 'CALL', + 'CHECK', + 'CLASS', + 'CLUBLOG_QSO_UPLOAD_STATUS', + 'CNTY', + 'COMMENT', + 'CONT', + 'CONTACTED_OP', + 'CONTEST_ID', + 'COUNTRY', + 'CQZ', + 'CREDIT_GRANTED', + 'CREDIT_SUBMITTED', + 'DARC_DOK', + 'DISTANCE', + 'DXCC', + 'EMAIL', + 'EQ_CALL', + 'EQSL_QSL_RCVD', + 'EQSL_QSL_SENT', + 'EQSL_STATUS', + 'FISTS', + 'FISTS_CC', + 'FORCE_INIT', + 'GRIDSQUARE', + 'HEADING', + 'HRDLOG_QSO_UPLOAD_STATUS', + 'IOTA', + 'ITUZ', + 'K_INDEX', + 'LAT', + 'LON', + 'LOTW_QSL_RCVD', + 'LOTW_QSL_SENT', + 'LOTW_STATUS', + 'MAX_BURSTS', + 'MODE', + 'MS_SHOWER', + 'NAME', + 'NOTES', + 'NR_BURSTS', + 'NR_PINGS', + 'OPERATOR', + 'OWNER_CALLSIGN', + 'PFX', + 'PRECEDENCE', + 'PROP_MODE', + 'PUBLIC_KEY', + 'QRZCOM_QSO_UPLOAD_STATUS', + 'QSLMSG', + 'QSL_RCVD', + 'QSL_RCVD_VIA', + 'QSL_SENT', + 'QSL_SENT_VIA', + 'QSL_VIA', + 'QSO_COMPLETE', + 'QSO_RANDOM', + 'QTH', + 'REGION', + 'RIG', + 'RST_RCVD', + 'RST_SENT', + 'RX_PWR', + 'SAT_MODE', + 'SAT_NAME', + 'SFI', + 'SIG', + 'SIG_INFO', + 'SILENT_KEY', + 'SKCC', + 'SOTA_REF', + 'SRX', + 'SRX_STRING', + 'STATE', + 'STX', + 'STX_STRING', + 'SUBMODE', + 'SWL', + 'TEN_TEN', + 'TX_PWR', + 'UKSMG', + 'USACA_COUNTIES', + 'VUCC_GRIDS', + 'WEB', + ); - if ($qso->COL_SUBMODE) { - $line .= $this->getAdifFieldLine("SUBMODE", $qso->COL_SUBMODE); + $dateFields = array( + 'EQSL_QSLRDATE', + 'EQSL_QSLSDATE', + 'LOTW_QSLRDATE', + 'LOTW_QSLSDATE', + 'QSLRDATE', + 'QSLSDATE', + 'CLUBLOG_QSO_UPLOAD_DATE', + 'HRDLOG_QSO_UPLOAD_DATE', + 'QRZCOM_QSO_UPLOAD_DATE', + ); + + /** + Missing: + USER_DEFINED_0 + USER_DEFINED_1 + USER_DEFINED_2 + USER_DEFINED_3 + USER_DEFINED_4 + USER_DEFINED_5 + USER_DEFINED_6 + USER_DEFINED_7 + USER_DEFINED_8 + USER_DEFINED_9 + */ + + // Build ADIF fields + + $line = ""; + foreach ($normalFields as $field) { + $line .= $this->getAdifFieldLine($field, $qso->{'COL_' . $field}); + } + + foreach ($dateFields as $field) { + if ($qso->{'COL_' . $field}) { + $date = strtotime($qso->{'COL_' . $field}); + $date = date('Ymd', $date); + $line .= $this->getAdifFieldLine($field, $date); + } } if ($qso->COL_FREQ != 0) { @@ -22,59 +153,23 @@ class AdifHelper { $line .= $this->getAdifFieldLine("FREQ_RX", $freq_rx_in_mhz); } - if ($qso->COL_BAND_RX) { - $line .= $this->getAdifFieldLine("BAND_RX", $qso->COL_BAND_RX); - } - $date_on = strtotime($qso->COL_TIME_ON); - $new_date = date('Ymd', $date_on); - $line .= $this->getAdifFieldLine("QSO_DATE", $new_date); + $date_on = date('Ymd', $date_on); + $line .= $this->getAdifFieldLine("QSO_DATE", $date_on); $time_on = strtotime($qso->COL_TIME_ON); - $new_on = date('His', $time_on); - $line .= $this->getAdifFieldLine("TIME_ON", $new_on); + $time_on = date('His', $time_on); + $line .= $this->getAdifFieldLine("TIME_ON", $time_on); + + $date_off = strtotime($qso->COL_TIME_OFF); + $date_off = date('Ymd', $date_off); + $line .= $this->getAdifFieldLine("QSO_DATE_OFF", $date_off); $time_off = strtotime($qso->COL_TIME_OFF); - $new_off = date('His', $time_off); - $line .= $this->getAdifFieldLine("TIME_OFF", $new_off); - - $line .= $this->getAdifFieldLine("RST_RCVD", $qso->COL_RST_RCVD); - - $line .= $this->getAdifFieldLine("RST_SENT", $qso->COL_RST_SENT); - - $line .= $this->getAdifFieldLine("QSL_RCVD", $qso->COL_QSL_RCVD); - - $line .= $this->getAdifFieldLine("QSL_SENT", $qso->COL_QSL_SENT); - - if ($qso->COL_QSL_VIA) { - $line .= $this->getAdifFieldLine("QSL_VIA", $qso->COL_QSL_VIA); - } - - $line .= $this->getAdifFieldLine("COUNTRY", $qso->COL_COUNTRY); - - if ($qso->COL_VUCC_GRIDS != "") { - $line .= $this->getAdifFieldLine("VUCC_GRIDS", $qso->COL_VUCC_GRIDS); - } - if ($qso->COL_VUCC_GRIDS == "" && $qso->COL_GRIDSQUARE != "") { - $line .= $this->getAdifFieldLine("GRIDSQUARE", $qso->COL_GRIDSQUARE); - } - if ($qso->COL_SAT_NAME) { - if ($qso->COL_SAT_MODE != 0 || $qso->COL_SAT_MODE !="") { - $line .= $this->getAdifFieldLine("SAT_MODE", $qso->COL_SAT_MODE); - $line .= $this->getAdifFieldLine("SAT_NAME", $qso->COL_SAT_NAME); - } - } - - $line .= $this->getAdifFieldLine("PROP_MODE", $qso->COL_PROP_MODE); - - $line .= $this->getAdifFieldLine("NAME", $qso->COL_NAME); - - $line .= $this->getAdifFieldLine("STATE", $qso->COL_STATE); - - $line .= $this->getAdifFieldLine("SOTA_REF", $qso->COL_SOTA_REF); - - $line .= $this->getAdifFieldLine("OPERATOR", $qso->COL_OPERATOR); + $time_off = date('His', $time_off); + $line .= $this->getAdifFieldLine("TIME_OFF", $time_off); + // "MY" information $line .= $this->getAdifFieldLine("STATION_CALLSIGN", $qso->station_callsign); $line .= $this->getAdifFieldLine("MY_CITY", $qso->station_city); @@ -85,8 +180,7 @@ class AdifHelper { if (strpos($qso->station_gridsquare, ',') !== false ) { $line .= $this->getAdifFieldLine("MY_VUCC_GRIDS", $qso->station_gridsquare); - } - else { + } else { $line .= $this->getAdifFieldLine("MY_GRIDSQUARE", $qso->station_gridsquare); } @@ -100,40 +194,35 @@ class AdifHelper { $line .= $this->getAdifFieldLine("MY_CNTY", $qso->station_cnty); - $line .= $this->getAdifFieldLine("MY_STATE", $qso->COL_MY_STATE); - - $line .= $this->getAdifFieldLine("STX", $qso->COL_STX); - - $line .= $this->getAdifFieldLine("STX_STRING", $qso->COL_STX_STRING); - - $line .= $this->getAdifFieldLine("SRX", $qso->COL_SRX); - - $line .= $this->getAdifFieldLine("SRX_STRING", $qso->COL_SRX_STRING); - - $line .= $this->getAdifFieldLine("CONTEST_ID", $qso->COL_CONTEST_ID); - - $line .= $this->getAdifFieldLine("TX_PWR", $qso->COL_TX_PWR); - - $line .= $this->getAdifFieldLine("COMMENT", $qso->COL_COMMENT); - $line .= $this->getAdifFieldLine("MY_SIG", $qso->station_sig); $line .= $this->getAdifFieldLine("MY_SIG_INFO", $qso->station_sig_info); - $line .= $this->getAdifFieldLine("SIG", $qso->COL_SIG); + /* + Missing: + MY_ANTENNA + MY_FISTS + MY_IOTA_ISLAND_ID + MY_LAT + MY_LON + MY_NAME + MY_POSTAL_CODE + MY_RIG + MY_STATE + MY_STREET + MY_USACA_COUNTIES + */ - $line .= $this->getAdifFieldLine("SIG_INFO", $qso->COL_SIG_INFO); - - $line .= "\r\n"; + $line .= "\r\n\r\n"; return $line; } function getAdifFieldLine($adifcolumn, $dbvalue) { - if ($dbvalue != "") { - return "<" . $adifcolumn . ":" . mb_strlen($dbvalue, "UTF-8") . ">" . $dbvalue; + if ($dbvalue !== "" && $dbvalue !== null && $dbvalue !== 0) { + return "<" . $adifcolumn . ":" . mb_strlen($dbvalue, "UTF-8") . ">" . $dbvalue . "\r\n"; } else { return ""; } } -} \ No newline at end of file +} diff --git a/application/views/adif/data/clublog.php b/application/views/adif/data/clublog.php index 14e84471..86fbae01 100644 --- a/application/views/adif/data/clublog.php +++ b/application/views/adif/data/clublog.php @@ -1,4 +1,5 @@ -3.1.0 +Cloudlog ADIF export +3.1.2 config->item('app_name')); ?>>config->item('app_name')."\r\n"; ?> config->item('app_version')); ?>>Version config->item('app_version')."\r\n"; ?> diff --git a/application/views/adif/data/exportall.php b/application/views/adif/data/exportall.php index 220ab293..04780f7f 100644 --- a/application/views/adif/data/exportall.php +++ b/application/views/adif/data/exportall.php @@ -2,7 +2,8 @@ header('Content-Type: text/plain; charset=utf-8'); header('Content-Disposition: attachment; filename="'.$this->session->userdata('user_callsign').'-'.date('dmY-Hi').'.adi"') ?> -3.1.0 +Cloudlog ADIF export +3.1.2 config->item('app_name')); ?>>config->item('app_name')."\r\n"; ?> config->item('app_version')); ?>>Version config->item('app_version')."\r\n"; ?> diff --git a/application/views/adif/data/exportsat.php b/application/views/adif/data/exportsat.php index 220ab293..04780f7f 100644 --- a/application/views/adif/data/exportsat.php +++ b/application/views/adif/data/exportsat.php @@ -2,7 +2,8 @@ header('Content-Type: text/plain; charset=utf-8'); header('Content-Disposition: attachment; filename="'.$this->session->userdata('user_callsign').'-'.date('dmY-Hi').'.adi"') ?> -3.1.0 +Cloudlog ADIF export +3.1.2 config->item('app_name')); ?>>config->item('app_name')."\r\n"; ?> config->item('app_version')); ?>>Version config->item('app_version')."\r\n"; ?> diff --git a/application/views/backup/exportall.php b/application/views/backup/exportall.php index 7cd134dd..3d52d220 100644 --- a/application/views/backup/exportall.php +++ b/application/views/backup/exportall.php @@ -1,4 +1,5 @@ -3.1.0 +Cloudlog ADIF export +3.1.2 config->item('app_name')); ?>>config->item('app_name')."\n"; ?> config->item('app_version')); ?>>Version config->item('app_version')."\n"; ?>