From d5dda2ef99cf2276ad9863259d2c9918bf754090 Mon Sep 17 00:00:00 2001 From: int2001 Date: Mon, 18 Dec 2023 08:51:47 +0000 Subject: [PATCH] Reordered processing of incoming QSOs here. 1st check for dupes afterwards other logic --- application/models/Logbook_model.php | 1071 +++++++++++++------------- 1 file changed, 536 insertions(+), 535 deletions(-) diff --git a/application/models/Logbook_model.php b/application/models/Logbook_model.php index 26a53d7f..6a6336c7 100755 --- a/application/models/Logbook_model.php +++ b/application/models/Logbook_model.php @@ -3095,598 +3095,599 @@ 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; + } - // 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 Band + if(isset($record['band'])) { + $band = strtolower($record['band']); + } else { + if (isset($record['freq'])){ + if($freq != "0") { + $band = $this->frequency->GetBand($freq); + } + } + } - // 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']; - } + 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 = ""; + } + } - // RST recevied - if(isset($record['rst_rcvd'])) { - $rst_rx = $record['rst_rcvd']; - } else { - $rst_rx = "59"; - } + if (isset($record['mode'])) { + $input_mode = $record['mode']; + } else { + $input_mode = ''; + } - // RST Sent - if(isset($record['rst_sent'])) { - $rst_tx = $record['rst_sent']; - } else { - $rst_tx = "59"; - } + $mode = $this->get_main_mode_if_submode($input_mode); + if ($mode == null) { + $submode = null; + } else { + $submode = $input_mode; + $input_mode = $mode; + } - // Store Band - if(isset($record['band'])) { - $band = strtolower($record['band']); - } else { - if (isset($record['freq'])){ - if($freq != "0") { - $band = $this->frequency->GetBand($freq); - } - } - } + if (empty($submode)) { + $input_submode = (!empty($record['submode'])) ? $record['submode'] : ''; + } else { + $input_submode = $submode; + } - 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['cqz'])) { - $cq_zone = $record['cqz']; - } elseif(isset($dxcc[2])) { - $cq_zone = $dxcc[2]; - } else { - $cq_zone = NULL; - } + // 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')); - // 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; - } + // If dupe is not found, set variable to add QSO + if ($check->num_rows() <= 0) { + $skip = false; + } else { + $skip = true; + } + } - // 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; - } + 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; + } - // 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; - } + // 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']; + } - // 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; - } + // RST recevied + if(isset($record['rst_rcvd'])) { + $rst_rx = $record['rst_rcvd']; + } else { + $rst_rx = "59"; + } - // Sanitise TX_POWER - if (isset($record['tx_pwr'])){ - $tx_pwr = filter_var($record['tx_pwr'],FILTER_VALIDATE_FLOAT); - }else{ - $tx_pwr = NULL; - } + // RST Sent + if(isset($record['rst_sent'])) { + $rst_tx = $record['rst_sent']; + } else { + $rst_tx = "59"; + } - // 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['cqz'])) { + $cq_zone = $record['cqz']; + } elseif(isset($dxcc[2])) { + $cq_zone = $dxcc[2]; + } else { + $cq_zone = NULL; + } - if (isset($record['a_index'])){ - $input_a_index = filter_var($record['a_index'],FILTER_SANITIZE_NUMBER_INT); - } else { - $input_a_index = 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; + } - if (isset($record['age'])){ - $input_age = filter_var($record['age'],FILTER_SANITIZE_NUMBER_INT); - } else { - $input_age = 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; + } - if (isset($record['ant_az'])){ - $input_ant_az = filter_var($record['ant_az'],FILTER_SANITIZE_NUMBER_INT); - } else { - $input_ant_az = 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; + } - if (isset($record['ant_el'])){ - $input_ant_el = filter_var($record['ant_el'],FILTER_SANITIZE_NUMBER_INT); - } else { - $input_ant_el = 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; + } - if (isset($record['ant_path'])){ - $input_ant_path = mb_strimwidth($record['ant_path'], 0, 1); - } else { - $input_ant_path = NULL; - } + // Sanitise TX_POWER + if (isset($record['tx_pwr'])){ + $tx_pwr = filter_var($record['tx_pwr'],FILTER_VALIDATE_FLOAT); + }else{ + $tx_pwr = NULL; + } - /* - Validate QSL Fields - qslrdate, qslsdate - */ + // 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['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['a_index'])){ + $input_a_index = filter_var($record['a_index'],FILTER_SANITIZE_NUMBER_INT); + } else { + $input_a_index = 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['age'])){ + $input_age = filter_var($record['age'],FILTER_SANITIZE_NUMBER_INT); + } else { + $input_age = NULL; + } - if (isset($record['qsl_rcvd'])){ - $input_qsl_rcvd = mb_strimwidth($record['qsl_rcvd'], 0, 1); - } else { - $input_qsl_rcvd = "N"; - } + 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['qsl_rcvd_via'])){ - $input_qsl_rcvd_via = mb_strimwidth($record['qsl_rcvd_via'], 0, 1); - } else { - $input_qsl_rcvd_via = ""; - } + 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['qsl_sent'])){ - $input_qsl_sent = mb_strimwidth($record['qsl_sent'], 0, 1); - } else { - $input_qsl_sent = "N"; - } + if (isset($record['ant_path'])){ + $input_ant_path = mb_strimwidth($record['ant_path'], 0, 1); + } else { + $input_ant_path = NULL; + } - if (isset($record['qsl_sent_via'])){ - $input_qsl_sent_via = mb_strimwidth($record['qsl_sent_via'], 0, 1); - } else { - $input_qsl_sent_via = ""; - } + /* + Validate QSL Fields + qslrdate, qslsdate + */ - // 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['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['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['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; + } - /* - 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['qsl_rcvd'])){ + $input_qsl_rcvd = mb_strimwidth($record['qsl_rcvd'], 0, 1); + } else { + $input_qsl_rcvd = "N"; + } - 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['qsl_rcvd_via'])){ + $input_qsl_rcvd_via = mb_strimwidth($record['qsl_rcvd_via'], 0, 1); + } else { + $input_qsl_rcvd_via = ""; + } - 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['qsl_sent'])){ + $input_qsl_sent = mb_strimwidth($record['qsl_sent'], 0, 1); + } else { + $input_qsl_sent = "N"; + } - 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; - } + 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['mode'])) { - $input_mode = $record['mode']; - } else { - $input_mode = ''; - } + // 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; + } - $mode = $this->get_main_mode_if_submode($input_mode); - if ($mode == null) { - $submode = null; - } else { - $submode = $input_mode; - $input_mode = $mode; - } + 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 (empty($submode)) { - $input_submode = (!empty($record['submode'])) ? $record['submode'] : ''; - } else { - $input_submode = $submode; - } + /* + 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; + } - // 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['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; + } - // 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 (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 dupe is not found, set variable to add QSO - if ($check->num_rows() <= 0) { - $skip = false; - } else { - $skip = true; - } - } + 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; + } - if ($operatorName != false) { - $operatorName = $this->session->userdata('user_callsign'); - } else { - $operatorName = (!empty($record['operator'])) ? $record['operator'] : ''; - } + // 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 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'] : ''; - } + if ($operatorName != false) { + $operatorName = $this->session->userdata('user_callsign'); + } else { + $operatorName = (!empty($record['operator'])) ? $record['operator'] : ''; + } - if (!$skip) - { - // 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' => (!empty($record['gridsquare'])) ? $record['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' =>((!empty($record['vucc_grids']))) ? $record['vucc_grids'] : '', - 'COL_WEB' => (!empty($record['web'])) ? $record['web'] : '' - ); + // 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'] : ''; + } - // 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 ($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'] : ''; + } - if ($station_result->num_rows() > 0){ - $data['station_id'] = $station_id; + // 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' => (!empty($record['gridsquare'])) ? $record['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' =>((!empty($record['vucc_grids']))) ? $record['vucc_grids'] : '', + 'COL_WEB' => (!empty($record['web'])) ? $record['web'] : '' + ); - $row = $station_result->row_array(); + // 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 (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'])); - } + if ($station_result->num_rows() > 0){ + $data['station_id'] = $station_id; - $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'])); + $row = $station_result->row_array(); - $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'])); - } - } + 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'])); + } - // Save QSO - $this->add_qso($data, $skipexport); - } else { - $my_error .= "Date/Time: ".$time_on." Callsign: ".$record['call']." Band: ".$band." Duplicate
"; - } + $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'])); - return $my_error; - } + $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');