diff --git a/application/controllers/Adif.php b/application/controllers/Adif.php index 75176baf..cb9dd127 100644 --- a/application/controllers/Adif.php +++ b/application/controllers/Adif.php @@ -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"; diff --git a/application/models/Logbook_model.php b/application/models/Logbook_model.php index e0d1c7fd..748165dd 100755 --- a/application/models/Logbook_model.php +++ b/application/models/Logbook_model.php @@ -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']."
"; + } + } 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_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']."
"; + } + } 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']."
"; + } + } 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; +} + + ?> diff --git a/application/views/adif/import_success.php b/application/views/adif/import_success.php index fb7cca95..e6909a43 100644 --- a/application/views/adif/import_success.php +++ b/application/views/adif/import_success.php @@ -12,8 +12,13 @@ ADIF Imported
-
Yay, its imported!
-

The ADIF File has been imported, and any dupes skipped.

+

Yay, its imported!

+

The ADIF File has been imported, and any dupes skipped.

+ +

ADIF Errors

+

You have ADIF errors, the QSOs have still been added but these fields have not been populated.

+

+