Fix ADIF export
* Fix ADIF format to specification * Export (almost) all ADIF fields from DB
这个提交包含在:
父节点
ceab35a0c5
当前提交
98c133e680
共有 5 个文件被更改,包括 175 次插入 和 82 次删除
|
|
@ -3,13 +3,144 @@
|
||||||
class AdifHelper {
|
class AdifHelper {
|
||||||
|
|
||||||
public function getAdifLine($qso) {
|
public function getAdifLine($qso) {
|
||||||
$line = "";
|
$normalFields = array(
|
||||||
$line .= $this->getAdifFieldLine("CALL", $qso->COL_CALL);
|
'ADDRESS',
|
||||||
$line .= $this->getAdifFieldLine("BAND", $qso->COL_BAND);
|
'AGE',
|
||||||
$line .= $this->getAdifFieldLine("MODE", $qso->COL_MODE);
|
'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) {
|
$dateFields = array(
|
||||||
$line .= $this->getAdifFieldLine("SUBMODE", $qso->COL_SUBMODE);
|
'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) {
|
if ($qso->COL_FREQ != 0) {
|
||||||
|
|
@ -22,59 +153,23 @@ class AdifHelper {
|
||||||
$line .= $this->getAdifFieldLine("FREQ_RX", $freq_rx_in_mhz);
|
$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);
|
$date_on = strtotime($qso->COL_TIME_ON);
|
||||||
$new_date = date('Ymd', $date_on);
|
$date_on = date('Ymd', $date_on);
|
||||||
$line .= $this->getAdifFieldLine("QSO_DATE", $new_date);
|
$line .= $this->getAdifFieldLine("QSO_DATE", $date_on);
|
||||||
|
|
||||||
$time_on = strtotime($qso->COL_TIME_ON);
|
$time_on = strtotime($qso->COL_TIME_ON);
|
||||||
$new_on = date('His', $time_on);
|
$time_on = date('His', $time_on);
|
||||||
$line .= $this->getAdifFieldLine("TIME_ON", $new_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);
|
$time_off = strtotime($qso->COL_TIME_OFF);
|
||||||
$new_off = date('His', $time_off);
|
$time_off = date('His', $time_off);
|
||||||
$line .= $this->getAdifFieldLine("TIME_OFF", $new_off);
|
$line .= $this->getAdifFieldLine("TIME_OFF", $time_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);
|
|
||||||
|
|
||||||
|
// "MY" information
|
||||||
$line .= $this->getAdifFieldLine("STATION_CALLSIGN", $qso->station_callsign);
|
$line .= $this->getAdifFieldLine("STATION_CALLSIGN", $qso->station_callsign);
|
||||||
|
|
||||||
$line .= $this->getAdifFieldLine("MY_CITY", $qso->station_city);
|
$line .= $this->getAdifFieldLine("MY_CITY", $qso->station_city);
|
||||||
|
|
@ -85,8 +180,7 @@ class AdifHelper {
|
||||||
|
|
||||||
if (strpos($qso->station_gridsquare, ',') !== false ) {
|
if (strpos($qso->station_gridsquare, ',') !== false ) {
|
||||||
$line .= $this->getAdifFieldLine("MY_VUCC_GRIDS", $qso->station_gridsquare);
|
$line .= $this->getAdifFieldLine("MY_VUCC_GRIDS", $qso->station_gridsquare);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$line .= $this->getAdifFieldLine("MY_GRIDSQUARE", $qso->station_gridsquare);
|
$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_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", $qso->station_sig);
|
||||||
|
|
||||||
$line .= $this->getAdifFieldLine("MY_SIG_INFO", $qso->station_sig_info);
|
$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 .= "<eor>\r\n\r\n";
|
||||||
|
|
||||||
$line .= "<eor>\r\n";
|
|
||||||
|
|
||||||
return $line;
|
return $line;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getAdifFieldLine($adifcolumn, $dbvalue) {
|
function getAdifFieldLine($adifcolumn, $dbvalue) {
|
||||||
if ($dbvalue != "") {
|
if ($dbvalue !== "" && $dbvalue !== null && $dbvalue !== 0) {
|
||||||
return "<" . $adifcolumn . ":" . mb_strlen($dbvalue, "UTF-8") . ">" . $dbvalue;
|
return "<" . $adifcolumn . ":" . mb_strlen($dbvalue, "UTF-8") . ">" . $dbvalue . "\r\n";
|
||||||
} else {
|
} else {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
<ADIF_VERS:5>3.1.0
|
Cloudlog ADIF export
|
||||||
|
<ADIF_VER:5>3.1.2
|
||||||
<PROGRAMID:<?php echo strlen($this->config->item('app_name')); ?>><?php echo $this->config->item('app_name')."\r\n"; ?>
|
<PROGRAMID:<?php echo strlen($this->config->item('app_name')); ?>><?php echo $this->config->item('app_name')."\r\n"; ?>
|
||||||
<PROGRAMVERSION:<?php echo strlen('Version ' . $this->config->item('app_version')); ?>>Version <?php echo $this->config->item('app_version')."\r\n"; ?>
|
<PROGRAMVERSION:<?php echo strlen('Version ' . $this->config->item('app_version')); ?>>Version <?php echo $this->config->item('app_version')."\r\n"; ?>
|
||||||
<EOH>
|
<EOH>
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,8 @@
|
||||||
header('Content-Type: text/plain; charset=utf-8');
|
header('Content-Type: text/plain; charset=utf-8');
|
||||||
header('Content-Disposition: attachment; filename="'.$this->session->userdata('user_callsign').'-'.date('dmY-Hi').'.adi"')
|
header('Content-Disposition: attachment; filename="'.$this->session->userdata('user_callsign').'-'.date('dmY-Hi').'.adi"')
|
||||||
?>
|
?>
|
||||||
<ADIF_VERS:5>3.1.0
|
Cloudlog ADIF export
|
||||||
|
<ADIF_VER:5>3.1.2
|
||||||
<PROGRAMID:<?php echo strlen($this->config->item('app_name')); ?>><?php echo $this->config->item('app_name')."\r\n"; ?>
|
<PROGRAMID:<?php echo strlen($this->config->item('app_name')); ?>><?php echo $this->config->item('app_name')."\r\n"; ?>
|
||||||
<PROGRAMVERSION:<?php echo strlen('Version ' . $this->config->item('app_version')); ?>>Version <?php echo $this->config->item('app_version')."\r\n"; ?>
|
<PROGRAMVERSION:<?php echo strlen('Version ' . $this->config->item('app_version')); ?>>Version <?php echo $this->config->item('app_version')."\r\n"; ?>
|
||||||
<EOH>
|
<EOH>
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,8 @@
|
||||||
header('Content-Type: text/plain; charset=utf-8');
|
header('Content-Type: text/plain; charset=utf-8');
|
||||||
header('Content-Disposition: attachment; filename="'.$this->session->userdata('user_callsign').'-'.date('dmY-Hi').'.adi"')
|
header('Content-Disposition: attachment; filename="'.$this->session->userdata('user_callsign').'-'.date('dmY-Hi').'.adi"')
|
||||||
?>
|
?>
|
||||||
<ADIF_VERS:5>3.1.0
|
Cloudlog ADIF export
|
||||||
|
<ADIF_VER:5>3.1.2
|
||||||
<PROGRAMID:<?php echo strlen($this->config->item('app_name')); ?>><?php echo $this->config->item('app_name')."\r\n"; ?>
|
<PROGRAMID:<?php echo strlen($this->config->item('app_name')); ?>><?php echo $this->config->item('app_name')."\r\n"; ?>
|
||||||
<PROGRAMVERSION:<?php echo strlen('Version ' . $this->config->item('app_version')); ?>>Version <?php echo $this->config->item('app_version')."\r\n"; ?>
|
<PROGRAMVERSION:<?php echo strlen('Version ' . $this->config->item('app_version')); ?>>Version <?php echo $this->config->item('app_version')."\r\n"; ?>
|
||||||
<EOH>
|
<EOH>
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
<ADIF_VERS:5>3.1.0
|
Cloudlog ADIF export
|
||||||
|
<ADIF_VER:5>3.1.2
|
||||||
<PROGRAMID:<?php echo strlen($this->config->item('app_name')); ?>><?php echo $this->config->item('app_name')."\n"; ?>
|
<PROGRAMID:<?php echo strlen($this->config->item('app_name')); ?>><?php echo $this->config->item('app_name')."\n"; ?>
|
||||||
<PROGRAMVERSION:<?php echo strlen($this->config->item('app_version')); ?>>Version <?php echo $this->config->item('app_version')."\n"; ?>
|
<PROGRAMVERSION:<?php echo strlen($this->config->item('app_version')); ?>>Version <?php echo $this->config->item('app_version')."\n"; ?>
|
||||||
<EOH>
|
<EOH>
|
||||||
|
|
|
||||||
正在加载…
在新工单中引用