diff --git a/application/controllers/Logbookadvanced.php b/application/controllers/Logbookadvanced.php index 1ace1b340..03750cd2b 100644 --- a/application/controllers/Logbookadvanced.php +++ b/application/controllers/Logbookadvanced.php @@ -615,6 +615,7 @@ class Logbookadvanced extends CI_Controller { $json_string['qth']['show'] = $this->def_boolean($this->input->post('qth')); $json_string['frequency']['show'] = $this->def_boolean($this->input->post('frequency')); $json_string['dcl']['show'] = $this->def_boolean($this->input->post('dcl')); + $json_string['last_modification']['show'] = $this->def_boolean($this->input->post('last_modification')); $obj['column_settings']= json_encode($json_string); diff --git a/application/models/Logbookadvanced_model.php b/application/models/Logbookadvanced_model.php index e30514004..3ce89043c 100644 --- a/application/models/Logbookadvanced_model.php +++ b/application/models/Logbookadvanced_model.php @@ -603,7 +603,7 @@ class Logbookadvanced_model extends CI_Model { } $sql = " - SELECT qsos.*, dxcc_entities.*, lotw_users.*, station_profile.*, satellite.*, dxcc_entities.name as dxccname, mydxcc.name AS station_country, exists(select 1 from qsl_images where qsoid = qsos.COL_PRIMARY_KEY) as qslcount, coalesce(contest.name, qsos.col_contest_id) as contestname + SELECT qsos.*, qsos.last_modified AS qso_last_modified, dxcc_entities.*, lotw_users.*, station_profile.*, satellite.*, dxcc_entities.name as dxccname, mydxcc.name AS station_country, exists(select 1 from qsl_images where qsoid = qsos.COL_PRIMARY_KEY) as qslcount, coalesce(contest.name, qsos.col_contest_id) as contestname FROM " . $this->config->item('table_name') . " qsos INNER JOIN station_profile ON qsos.station_id=station_profile.station_id LEFT OUTER JOIN satellite ON qsos.col_prop_mode='SAT' and qsos.COL_SAT_NAME = COALESCE(NULLIF(satellite.name, ''), NULLIF(satellite.displayname, '')) diff --git a/application/views/logbookadvanced/index.php b/application/views/logbookadvanced/index.php index b6350a4ee..e3b34bd4d 100644 --- a/application/views/logbookadvanced/index.php +++ b/application/views/logbookadvanced/index.php @@ -20,62 +20,62 @@ let lang_gen_hamradio_nightshadow = ''; let lang_gen_hamradio_ituzone = ''; let lang_gen_hamradio_cqzone = ''; - let lang_gen_advanced_logbook_help = ''; - let lang_gen_advanced_logbook_continent_fix = ''; - let lang_gen_advanced_logbook_problem_fixing_itu_zones = ''; - let lang_gen_advanced_logbook_problem_fixing_cq_zones = ''; - let lang_gen_advanced_logbook_itu_zones_updated = ''; - let lang_gen_advanced_logbook_cq_zones_updated = ''; - let lang_gen_advanced_logbook_select_row_itu_zones = ''; - let lang_gen_advanced_logbook_select_row_cq_zones = ''; - let lang_gen_advanced_logbook_select_row_state = ''; - let lang_gen_advanced_logbook_state_updated = ''; - let lang_gen_advanced_logbook_problem_fixing_state = ''; - let lang_gen_advanced_logbook_fixing_state = ''; - let lang_gen_advanced_logbook_fixing_state_qsos = ''; - let lang_gen_advanced_logbook_fixing_state_remaining = ''; - let lang_gen_advanced_logbook_fixed = ''; - let lang_gen_advanced_logbook_fixed_with_count = ''; - let lang_gen_advanced_logbook_skipped = ''; - let lang_gen_advanced_logbook_skipped_with_count = ''; - let lang_gen_advanced_logbook_state_fix_complete = ''; - let lang_gen_advanced_logbook_state_not_supported = ''; - let lang_gen_advanced_logbook_github_url = 'https://github.com/wavelog/wavelog/issues'; - let lang_gen_advanced_logbook_github_link = 'Wavelog GitHub'; - let lang_gen_advanced_logbook_select_only_one_row_quickfilter = '' - let lang_gen_advanced_logbook_select_at_least_one_row_quickfilter = ''; - let lang_gen_advanced_logbook_select_at_least_one_row_qslcard = ''; - let lang_gen_advanced_logbook_continents_updated = ''; - let lang_gen_advanced_logbook_problem_fixing_continents = ''; - let lang_gen_advanced_logbook_error = ''; - let lang_gen_advanced_logbook_success = ''; - let lang_gen_advanced_logbook_info = ''; - let lang_gen_advanced_logbook_warning = ''; - let lang_gen_advanced_logbook_qsl_card = ''; - let lang_gen_advanced_logbook_close = ''; - let lang_gen_advanced_logbook_save = ''; - let lang_gen_advanced_logbook_update_now = ''; - let lang_gen_advanced_logbook_options = ''; - let lang_gen_advanced_logbook_label_print_error = ''; - let lang_gen_advanced_logbook_select_at_least_one_row = ''; - let lang_gen_advanced_logbook_start_printing_at_which_label = ''; - let lang_gen_advanced_logbook_select_at_least_one_row_label = ''; - let lang_gen_advanced_logbook_error_saving_options = ''; - let lang_gen_advanced_logbook_select_at_least_one_row_delete = ''; - let lang_gen_advanced_logbook_select_at_least_one_row_callbook = ''; - let lang_gen_advanced_logbook_an_error_ocurred_while_making_request = ''; - let lang_gen_advanced_logbook_select_at_least_one_location = ''; - let lang_gen_advanced_logbook_update_distances = ''; - let lang_gen_advanced_logbook_records_updated = ''; - let lang_gen_advanced_logbook_problem_updating_distances = ''; - let lang_gen_advanced_logbook_distances_updated = ''; + let lang_gen_advanced_logbook_help = ''; + let lang_gen_advanced_logbook_continent_fix = ''; + let lang_gen_advanced_logbook_problem_fixing_itu_zones = ''; + let lang_gen_advanced_logbook_problem_fixing_cq_zones = ''; + let lang_gen_advanced_logbook_itu_zones_updated = ''; + let lang_gen_advanced_logbook_cq_zones_updated = ''; + let lang_gen_advanced_logbook_select_row_itu_zones = ''; + let lang_gen_advanced_logbook_select_row_cq_zones = ''; + let lang_gen_advanced_logbook_select_row_state = ''; + let lang_gen_advanced_logbook_state_updated = ''; + let lang_gen_advanced_logbook_problem_fixing_state = ''; + let lang_gen_advanced_logbook_fixing_state = ''; + let lang_gen_advanced_logbook_fixing_state_qsos = ''; + let lang_gen_advanced_logbook_fixing_state_remaining = ''; + let lang_gen_advanced_logbook_fixed = ''; + let lang_gen_advanced_logbook_fixed_with_count = ''; + let lang_gen_advanced_logbook_skipped = ''; + let lang_gen_advanced_logbook_skipped_with_count = ''; + let lang_gen_advanced_logbook_state_fix_complete = ''; + let lang_gen_advanced_logbook_state_not_supported = ''; + let lang_gen_advanced_logbook_github_url = 'https://github.com/wavelog/wavelog/issues'; + let lang_gen_advanced_logbook_github_link = 'Wavelog GitHub'; + let lang_gen_advanced_logbook_select_only_one_row_quickfilter = '' + let lang_gen_advanced_logbook_select_at_least_one_row_quickfilter = ''; + let lang_gen_advanced_logbook_select_at_least_one_row_qslcard = ''; + let lang_gen_advanced_logbook_continents_updated = ''; + let lang_gen_advanced_logbook_problem_fixing_continents = ''; + let lang_gen_advanced_logbook_error = ''; + let lang_gen_advanced_logbook_success = ''; + let lang_gen_advanced_logbook_info = ''; + let lang_gen_advanced_logbook_warning = ''; + let lang_gen_advanced_logbook_qsl_card = ''; + let lang_gen_advanced_logbook_close = ''; + let lang_gen_advanced_logbook_save = ''; + let lang_gen_advanced_logbook_update_now = ''; + let lang_gen_advanced_logbook_options = ''; + let lang_gen_advanced_logbook_label_print_error = ''; + let lang_gen_advanced_logbook_select_at_least_one_row = ''; + let lang_gen_advanced_logbook_start_printing_at_which_label = ''; + let lang_gen_advanced_logbook_select_at_least_one_row_label = ''; + let lang_gen_advanced_logbook_error_saving_options = ''; + let lang_gen_advanced_logbook_select_at_least_one_row_delete = ''; + let lang_gen_advanced_logbook_select_at_least_one_row_callbook = ''; + let lang_gen_advanced_logbook_an_error_ocurred_while_making_request = ''; + let lang_gen_advanced_logbook_select_at_least_one_location = ''; + let lang_gen_advanced_logbook_update_distances = ''; + let lang_gen_advanced_logbook_records_updated = ''; + let lang_gen_advanced_logbook_problem_updating_distances = ''; + let lang_gen_advanced_logbook_distances_updated = ''; - let lang_gen_advanced_logbook_confirm_fix_missing_dxcc = ''; - let lang_gen_advanced_logbook_dupe_search = ''; - let lang_gen_advanced_logbook_search = ''; + let lang_gen_advanced_logbook_confirm_fix_missing_dxcc = ''; + let lang_gen_advanced_logbook_dupe_search = ''; + let lang_gen_advanced_logbook_search = ''; - let lang_gen_advanced_logbook_show_more = ''; - let lang_gen_advanced_logbook_show_less = ''; + let lang_gen_advanced_logbook_show_more = ''; + let lang_gen_advanced_logbook_show_less = ''; @@ -126,6 +126,7 @@ \"qth\":{\"show\":\"true\"}, \"frequency\":{\"show\":\"true\"}, \"dcl\":{\"show\":\"true\"}, + \"last_modification\":{\"show\":\"true\"}, }"; } $current_opts = json_decode($options); @@ -218,23 +219,26 @@ echo "\nvar o_template = { antennaelevation: {show: 'true'}};"; echo "\nuser_options={...user_options, ...o_template};"; } - if (!isset($current_opts->county)) { + if (!isset($current_opts->county)) { echo "\nvar o_template = { county: {show: 'true'}};"; echo "\nuser_options={...user_options, ...o_template};"; } - if (!isset($current_opts->qth)) { + if (!isset($current_opts->qth)) { echo "\nvar o_template = { qth: {show: 'true'}};"; echo "\nuser_options={...user_options, ...o_template};"; } - if (!isset($current_opts->frequency)) { + if (!isset($current_opts->frequency)) { echo "\nvar o_template = { frequency: {show: 'true'}};"; echo "\nuser_options={...user_options, ...o_template};"; } - if (!isset($current_opts->dcl)) { + if (!isset($current_opts->dcl)) { echo "\nvar o_template = { dcl: {show: 'true'}};"; echo "\nuser_options={...user_options, ...o_template};"; } - + if (!isset($current_opts->last_modification)) { + echo "\nvar o_template = { last_modification: {show: 'true'}};"; + echo "\nuser_options={...user_options, ...o_template};"; + } foreach ($mapoptions as $mo) { if ($mo != null) { @@ -870,6 +874,9 @@ $options = json_decode($options); datetime->show ?? "true") == "true") { echo '' . __("Date/Time") . ''; } ?> + last_modification->show ?? "true") == "true") { + echo '' . __("Last modified") . ''; + } ?> de->show ?? "true") == "true") { echo '' . __("De") . ''; } ?> @@ -888,7 +895,7 @@ $options = json_decode($options); band->show ?? "true") == "true") { echo '' . __("Band") . ''; } ?> - frequency->show ?? "true") == "true") { + frequency->show ?? "true") == "true") { echo '' . __("Frequency") . ''; } ?> gridsquare->show ?? "true") == "true") { @@ -897,7 +904,7 @@ $options = json_decode($options); name->show ?? "true") == "true") { echo '' . __("Name") . ''; } ?> - qth->show ?? "true") == "true") { + qth->show ?? "true") == "true") { echo '' . __("QTH") . ''; } ?> qslvia->show ?? "true") == "true") { @@ -909,16 +916,16 @@ $options = json_decode($options); qsl->show ?? "true") == "true") { echo '' . __("QSL") . ''; } ?> - eqsl->show ?? "true") == "true") { - echo 'eQSL'; - } ?> - lotw->show ?? "true") == "true") { - echo 'LoTW'; - } ?> + eqsl->show ?? "true") == "true") { + echo 'eQSL'; + } ?> + lotw->show ?? "true") == "true") { + echo 'LoTW'; + } ?> qrz->show ?? "true") == "true") { echo '' . __("QRZ") . ''; } ?> - dcl->show ?? "true") == "true") { + dcl->show ?? "true") == "true") { echo '' . __("DCL") . ''; } ?> qslmsgs->show ?? "false") == "true") { @@ -933,7 +940,7 @@ $options = json_decode($options); state->show ?? "true") == "true") { echo '' . __("State") . ''; } ?> - county->show ?? "true") == "true") { + county->show ?? "true") == "true") { echo '' . __("County") . ''; } ?> cqzone->show ?? "true") == "true") { diff --git a/application/views/logbookadvanced/useroptions.php b/application/views/logbookadvanced/useroptions.php index 817a3db10..b2f6569fb 100644 --- a/application/views/logbookadvanced/useroptions.php +++ b/application/views/logbookadvanced/useroptions.php @@ -190,6 +190,10 @@
stationpower->show ?? "true") == "true") { echo 'checked'; } ?>>
+ + +
last_modification->show ?? "true") == "true") { echo 'checked'; } ?>>
+ diff --git a/assets/js/sections/logbookadvanced.js b/assets/js/sections/logbookadvanced.js index 0c2d12f84..f3aaf434d 100644 --- a/assets/js/sections/logbookadvanced.js +++ b/assets/js/sections/logbookadvanced.js @@ -63,6 +63,9 @@ function updateRow(qso) { if ((user_options.datetime.show ?? 'true') == "true"){ cells.eq(c++).text(qso.qsoDateTime); } + if ((user_options.last_modification.show ?? 'true') == "true"){ + cells.eq(c++).text(qso.last_modified); + } if ((user_options.de.show ?? 'true') == "true"){ cells.eq(c++).text(qso.de); } @@ -280,6 +283,9 @@ function loadQSOTable(rows) { data.push(qso.qsoDateTime); } } + if ((user_options.last_modification.show ?? 'true') == "true"){ + data.push(qso.last_modified); + } if ((user_options.de.show ?? 'true') == "true"){ data.push(qso.de.replaceAll('0', 'Ø')); } @@ -1875,6 +1881,7 @@ function saveOptions() { type: 'post', data: { datetime: $('input[name="datetime"]').is(':checked') ? true : false, + last_modification: $('input[name="last_modification"]').is(':checked') ? true : false, de: $('input[name="de"]').is(':checked') ? true : false, dx: $('input[name="dx"]').is(':checked') ? true : false, mode: $('input[name="mode"]').is(':checked') ? true : false, diff --git a/src/QSLManager/QSO.php b/src/QSLManager/QSO.php index 999dffbf0..56ac89717 100644 --- a/src/QSLManager/QSO.php +++ b/src/QSLManager/QSO.php @@ -106,6 +106,8 @@ class QSO private string $morse_key_type; private string $qslmsg_rcvd; + private string $last_modified; + private $CI; /** @@ -160,6 +162,7 @@ class QSO 'COL_IOTA', 'COL_OPERATOR', 'COL_COMMENT', + 'last_modified', ]; foreach ($requiredKeys as $requiredKey) { @@ -290,6 +293,8 @@ class QSO $this->antennaazimuth = $data['COL_ANT_AZ'] ?? ''; $this->antennaelevation = $data['COL_ANT_EL'] ?? ''; + $this->last_modified = date($custom_date_format . " H:i:s", strtotime($data['qso_last_modified'] ?? '')); + if ($this->CI->session->userdata('user_measurement_base') == NULL) { $measurement_base = $this->CI->config->item('measurement_base'); } else { @@ -1304,6 +1309,7 @@ class QSO 'county' => $this->county, 'qth' => $this->qth, 'frequency' => $this->getFormattedFrequency(), + 'last_modified' => $this->last_modified, ]; }