Lots more ADIF validation.

这个提交包含在:
Peter Goodhall 2019-10-21 17:41:21 +01:00
父节点 e5a822556a
当前提交 4252a3ab2d
共有 3 个文件被更改,包括 131 次插入15 次删除

查看文件

@ -13,6 +13,15 @@ class adif extends CI_Controller {
if(!$this->user_model->authorize(2)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }
}
public function test() {
if(validateADIFDate('20120228') == true){
echo "valid date";
} else {
echo "date incorrect";
}
}
/* Shows Export Views */
public function export() {
@ -153,7 +162,7 @@ class adif extends CI_Controller {
$this->adif_parser->load_from_file('./uploads/'.$data['upload_data']['file_name']);
$this->adif_parser->initialize();
$custom_errors = "";
while($record = $this->adif_parser->get_record())
{
if(count($record) == 0)
@ -162,10 +171,12 @@ class adif extends CI_Controller {
};
$this->logbook_model->import($record, $this->input->post('station_profile'));
$custom_errors .= $this->logbook_model->import($record, $this->input->post('station_profile'));
};
$data['adif_errors'] = $custom_errors;
unlink('./uploads/'.$data['upload_data']['file_name']);
$data['page_title'] = "ADIF Imported";

查看文件

@ -969,9 +969,10 @@ class Logbook_model extends CI_Model {
function import($record, $station_id = "0") {
$CI =& get_instance();
$CI->load->library('frequency');
$my_error = "";
// Join date+time
$time_on = date('Y-m-d', strtotime($record['qso_date'])) ." ".date('H:i', strtotime($record['time_on']));
if (isset($record['time_off'])) {
$time_off = date('Y-m-d', strtotime($record['qso_date'])) ." ".date('H:i', strtotime($record['time_off']));
} else {
@ -1144,6 +1145,96 @@ class Logbook_model extends CI_Model {
$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']."<br>";
}
} 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']."<br>";
}
} else {
$input_qslrdate = 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_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_via'])){
$input_qsl_sent_via = mb_strimwidth($record['qsl_sent_via'], 0, 1);
} else {
$input_qsl_sent_via = "";
}
/*
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 = "";
}
if (isset($record['lotw_qsl_sent'])){
$input_lotw_qsl_sent = mb_strimwidth($record['lotw_qsl_sent'], 0, 1);
} else {
$input_lotw_qsl_sent = "";
}
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']."<br>";
}
} else {
$input_lotw_qslrdate = 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']."<br>";
}
} else {
$input_lotw_qslsdate = NULL;
}
if (isset($record['call'])){
@ -1209,10 +1300,10 @@ class Logbook_model extends CI_Model {
'COL_K_INDEX' => (!empty($record['k_index'])) ? $record['k_index'] : null,
'COL_LAT' => $input_lat,
'COL_LON' => $input_lon,
'COL_LOTW_QSL_RCVD' => (!empty($record['lotw_qsl_rcvd'])) ? $record['lotw_qsl_rcvd'] : '',
'COL_LOTW_QSL_SENT' => (!empty($record['lotw_qsl_sent'])) ? $record['lotw_qsl_sent'] : '',
'COL_LOTW_QSLRDATE' => (!empty($record['lotw_qslrdate'])) ? $record['lotw_qslrdate'] : null,
'COL_LOTW_QSLSDATE' => (!empty($record['lotw_qslsdate'])) ? $record['lotw_qslsdate'] : null,
'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' => (!empty($record['mode'])) ? $record['mode'] : '',
@ -1263,14 +1354,14 @@ class Logbook_model extends CI_Model {
'COL_PUBLIC_KEY' => (!empty($record['public_key'])) ? $record['public_key'] : '',
'COL_QRZCOM_QSO_UPLOAD_DATE' => (!empty($record['qrzcom_qso_upload_date'])) ? $record['qrzcom_qso_upload_date'] : null,
'COL_QRZCOM_QSO_UPLOAD_STATUS' => (!empty($record['qrzcom_qso_upload_status'])) ? $record['qrzcom_qso_upload_status'] : '',
'COL_QSL_RCVD' => (!empty($record['qsl_rcvd'])) ? $record['qsl_rcvd'] : '',
'COL_QSL_RCVD_VIA' => (!empty($record['qsl_rcvd_via'])) ? $record['qsl_rcvd_via'] : '',
'COL_QSL_SENT' => (!empty($record['qsl_sent'])) ? $record['qsl_sent'] : '',
'COL_QSL_SENT_VIA' => (!empty($record['qsl_sent_via'])) ? $record['qsl_sent_via'] : '',
'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' => (!empty($record['qslrdate'])) ? $record['qslrdate']: null,
'COL_QSLSDATE' => (!empty($record['qslsdate'])) ? $record['qslsdate'] : null,
'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,
@ -1350,6 +1441,8 @@ class Logbook_model extends CI_Model {
$this->add_qso($data);
}
return $my_error;
}
@ -1523,4 +1616,11 @@ class Logbook_model extends CI_Model {
}
function validateADIFDate($date, $format = 'Ymd')
{
$d = DateTime::createFromFormat($format, $date);
return $d && $d->format($format) == $date;
}
?>

查看文件

@ -12,8 +12,13 @@
ADIF Imported
</div>
<div class="card-body">
<h5 class="card-title">Yay, its imported!</h5>
<p class="card-text"><p>The ADIF File has been imported, and any dupes skipped.</p></p>
<h3 class="card-title">Yay, its imported!</h3>
<p class="card-text">The ADIF File has been imported, and any dupes skipped.</p>
<?php if($adif_errors) { ?>
<h3>ADIF Errors</h3>
<p>You have ADIF errors, the QSOs have still been added but these fields have not been populated.</p>
<p class="card-text"><?php echo $adif_errors; ?></p>
<?php } ?>
</div>
</div>