mirror of
https://github.com/wavelog/wavelog.git
synced 2026-03-22 10:24:14 +00:00
Option to prioritize Database or 3rd party callsign information fetch
This commit is contained in:
@@ -162,18 +162,21 @@ class Logbook extends CI_Controller {
|
||||
$measurement_base = $this->session->userdata('user_measurement_base');
|
||||
}
|
||||
|
||||
$return['callsign_name'] = $this->nval($callbook['name'] ?? '', $this->logbook_model->call_name($callsign));
|
||||
$return['callsign_qra'] = $this->nval($callbook['gridsquare'] ?? '', $this->logbook_model->call_qra($callsign));
|
||||
// Get user's lookup priority preference
|
||||
$lookup_priority = $this->get_lookup_priority();
|
||||
|
||||
$return['callsign_name'] = $this->nval($this->logbook_model->call_name($callsign), $callbook['name'] ?? '', $lookup_priority);
|
||||
$return['callsign_qra'] = $this->nval($this->logbook_model->call_qra($callsign), $callbook['gridsquare'] ?? '', $lookup_priority);
|
||||
$return['callsign_geoloc'] = $callbook['geoloc'] ?? '';
|
||||
$return['callsign_distance'] = $this->distance($return['callsign_qra'], $station_id);
|
||||
$return['callsign_qth'] = $this->nval($callbook['city'] ?? '', $this->logbook_model->call_qth($callsign));
|
||||
$return['callsign_iota'] = $this->nval($callbook['iota'] ?? '', $this->logbook_model->call_iota($callsign));
|
||||
$return['callsign_email'] = $this->nval($callbook['email'] ?? '', $this->logbook_model->call_email($callsign));
|
||||
$return['qsl_manager'] = $this->nval($callbook['qslmgr'] ?? '', $this->logbook_model->call_qslvia($callsign));
|
||||
$return['callsign_state'] = $this->nval($callbook['state'] ?? '', $this->logbook_model->call_state($callsign));
|
||||
$return['callsign_us_county'] = $this->nval($callbook['us_county'] ?? '', $this->logbook_model->call_us_county($callsign));
|
||||
$return['callsign_ituz'] = $this->nval($callbook['ituz'] ?? '', $this->logbook_model->call_ituzone($callsign));
|
||||
$return['callsign_cqz'] = $this->nval($callbook['cqz'] ?? '', $this->logbook_model->call_cqzone($callsign));
|
||||
$return['callsign_qth'] = $this->nval($this->logbook_model->call_qth($callsign), $callbook['city'] ?? '', $lookup_priority);
|
||||
$return['callsign_iota'] = $this->nval($this->logbook_model->call_iota($callsign), $callbook['iota'] ?? '', $lookup_priority);
|
||||
$return['callsign_email'] = $this->nval($this->logbook_model->call_email($callsign), $callbook['email'] ?? '', $lookup_priority);
|
||||
$return['qsl_manager'] = $this->nval($this->logbook_model->call_qslvia($callsign), $callbook['qslmgr'] ?? '', $lookup_priority);
|
||||
$return['callsign_state'] = $this->nval($this->logbook_model->call_state($callsign), $callbook['state'] ?? '', $lookup_priority);
|
||||
$return['callsign_us_county'] = $this->nval($this->logbook_model->call_us_county($callsign), $callbook['us_county'] ?? '', $lookup_priority);
|
||||
$return['callsign_ituz'] = $this->nval($this->logbook_model->call_ituzone($callsign), $callbook['ituz'] ?? '', $lookup_priority);
|
||||
$return['callsign_cqz'] = $this->nval($this->logbook_model->call_cqzone($callsign), $callbook['cqz'] ?? '', $lookup_priority);
|
||||
$return['workedBefore'] = $this->worked_grid_before($return['callsign_qra'], $band, $mode);
|
||||
$return['confirmed'] = $this->confirmed_grid_before($return['callsign_qra'], $band, $mode);
|
||||
$return['timesWorked'] = $this->logbook_model->times_worked($lookupcall);
|
||||
@@ -200,8 +203,21 @@ class Logbook extends CI_Controller {
|
||||
return;
|
||||
}
|
||||
|
||||
// Helper function to get user's lookup priority setting
|
||||
// Returns 1 for database priority, 2 for external lookup priority (default)
|
||||
function get_lookup_priority() {
|
||||
$this->load->model('user_options_model');
|
||||
$priority = $this->user_options_model->get_options('qso_db_search_priority', array('option_name'=>'enable', 'option_key'=>'boolean'))->row();
|
||||
// If setting is 'Y' (Yes), prioritize database (return 1), otherwise prioritize external lookup (return 2)
|
||||
return (isset($priority->option_value) && $priority->option_value == 'Y') ? 1 : 2;
|
||||
}
|
||||
|
||||
// Returns $val2 first if it has value, even if it is null or empty string, if not return $val1.
|
||||
function nval($val1, $val2) {
|
||||
// When $priority is set to 1, returns $val1 first if it has value, if not return $val2.
|
||||
function nval($val1, $val2, $priority = 2) {
|
||||
if ($priority == 1) {
|
||||
return (($val1 ?? "") === "" ? ($val2 ?? "") : ($val1 ?? ""));
|
||||
}
|
||||
return (($val2 ?? "") === "" ? ($val1 ?? "") : ($val2 ?? ""));
|
||||
}
|
||||
|
||||
|
||||
@@ -226,6 +226,7 @@ class User extends CI_Controller {
|
||||
$data['user_default_band'] = $this->input->post('user_default_band');
|
||||
$data['user_default_confirmation'] = ($this->input->post('user_default_confirmation_qsl') !== null ? 'Q' : '').($this->input->post('user_default_confirmation_lotw') !== null ? 'L' : '').($this->input->post('user_default_confirmation_eqsl') !== null ? 'E' : '').($this->input->post('user_default_confirmation_qrz') !== null ? 'Z' : '').($this->input->post('user_default_confirmation_clublog') !== null ? 'C' : '').($this->input->post('user_default_confirmation_dcl') !== null ? 'D' : '');
|
||||
$data['user_qso_end_times'] = $this->input->post('user_qso_end_times');
|
||||
$data['user_qso_db_search_priority'] = $this->input->post('user_qso_db_search_priority') ?? 'Y';
|
||||
$data['user_quicklog'] = $this->input->post('user_quicklog');
|
||||
$data['user_quicklog_enter'] = $this->input->post('user_quicklog_enter');
|
||||
$data['user_hamsat_key'] = $this->input->post('user_hamsat_key');
|
||||
@@ -278,6 +279,7 @@ class User extends CI_Controller {
|
||||
$this->input->post('user_default_band'),
|
||||
($this->input->post('user_default_confirmation_qsl') !== null ? 'Q' : '').($this->input->post('user_default_confirmation_lotw') !== null ? 'L' : '').($this->input->post('user_default_confirmation_eqsl') !== null ? 'E' : '').($this->input->post('user_default_confirmation_qrz') !== null ? 'Z' : '').($this->input->post('user_default_confirmation_clublog') !== null ? 'C' : '').($this->input->post('user_default_confirmation_dcl') !== null ? 'D' : ''),
|
||||
$this->input->post('user_qso_end_times'),
|
||||
$this->input->post('user_qso_db_search_priority') ?? 'Y',
|
||||
$this->input->post('user_quicklog'),
|
||||
$this->input->post('user_quicklog_enter'),
|
||||
$this->input->post('user_language'),
|
||||
@@ -358,6 +360,7 @@ class User extends CI_Controller {
|
||||
$data['user_default_band'] = $this->input->post('user_default_band');
|
||||
$data['user_default_confirmation'] = ($this->input->post('user_default_confirmation_qsl') !== null ? 'Q' : '').($this->input->post('user_default_confirmation_lotw') !== null ? 'L' : '').($this->input->post('user_default_confirmation_eqsl') !== null ? 'E' : '').($this->input->post('user_default_confirmation_qrz') !== null ? 'Z' : '').($this->input->post('user_default_confirmation_clublog') !== null ? 'C' : '').($this->input->post('user_default_confirmation_dcl') !== null ? 'D' : '');
|
||||
$data['user_qso_end_times'] = $this->input->post('user_qso_end_times');
|
||||
$data['user_qso_db_search_priority'] = $this->input->post('user_qso_db_search_priority') ?? 'Y';
|
||||
$data['user_quicklog'] = $this->input->post('user_quicklog');
|
||||
$data['user_quicklog_enter'] = $this->input->post('user_quicklog_enter');
|
||||
$data['user_language'] = $this->input->post('user_language');
|
||||
@@ -832,6 +835,15 @@ class User extends CI_Controller {
|
||||
}
|
||||
}
|
||||
|
||||
if($this->input->post('user_qso_db_search_priority')) {
|
||||
$data['user_qso_db_search_priority'] = $this->input->post('user_qso_db_search_priority', false);
|
||||
} else {
|
||||
$qkey_opt=$this->user_options_model->get_options('qso_db_search_priority',array('option_name'=>'enable','option_key'=>'boolean'), $this->uri->segment(3))->result();
|
||||
if (count($qkey_opt)>0) {
|
||||
$data['user_qso_db_search_priority'] = $qkey_opt[0]->option_value;
|
||||
}
|
||||
}
|
||||
|
||||
if($this->input->post('oqrs_direct_auto_matching')) {
|
||||
$data['oqrs_direct_auto_matching'] = $this->input->post('oqrs_direct_auto_matching', false);
|
||||
} else {
|
||||
@@ -999,6 +1011,7 @@ class User extends CI_Controller {
|
||||
$data['oqrs_grouped_search_show_station_name'] = $this->input->post('oqrs_grouped_search_show_station_name', true);
|
||||
$data['oqrs_auto_matching'] = $this->input->post('oqrs_auto_matching', true);
|
||||
$data['oqrs_direct_auto_matching'] = $this->input->post('oqrs_direct_auto_matching', true);
|
||||
$data['user_qso_db_search_priority'] = $this->input->post('user_qso_db_search_priority', true);
|
||||
|
||||
$this->load->view('user/edit');
|
||||
$this->load->view('interface_assets/footer');
|
||||
|
||||
@@ -219,7 +219,7 @@ class User_Model extends CI_Model {
|
||||
$measurement, $dashboard_map, $user_date_format, $user_stylesheet, $user_qth_lookup, $user_sota_lookup, $user_wwff_lookup,
|
||||
$user_pota_lookup, $user_show_notes, $user_column1, $user_column2, $user_column3, $user_column4, $user_column5,
|
||||
$user_show_profile_image, $user_previous_qsl_type, $user_amsat_status_upload, $user_mastodon_url,
|
||||
$user_default_band, $user_default_confirmation, $user_qso_end_times, $user_quicklog, $user_quicklog_enter,
|
||||
$user_default_band, $user_default_confirmation, $user_qso_end_times, $user_qso_db_search_priority,$user_quicklog, $user_quicklog_enter,
|
||||
$user_language, $user_hamsat_key, $user_hamsat_workable_only, $user_iota_to_qso_tab, $user_sota_to_qso_tab,
|
||||
$user_wwff_to_qso_tab, $user_pota_to_qso_tab, $user_sig_to_qso_tab, $user_dok_to_qso_tab,
|
||||
$user_lotw_name, $user_lotw_password, $user_eqsl_name, $user_eqsl_password, $user_clublog_name, $user_clublog_password,
|
||||
@@ -258,6 +258,7 @@ class User_Model extends CI_Model {
|
||||
'user_default_band' => xss_clean($user_default_band),
|
||||
'user_default_confirmation' => xss_clean($user_default_confirmation),
|
||||
'user_qso_end_times' => xss_clean($user_qso_end_times),
|
||||
'user_qso_db_search_priority' => xss_clean($user_qso_db_search_priority),
|
||||
'user_quicklog' => xss_clean($user_quicklog),
|
||||
'user_quicklog_enter' => xss_clean($user_quicklog_enter),
|
||||
'user_language' => xss_clean($user_language),
|
||||
@@ -314,6 +315,7 @@ class User_Model extends CI_Model {
|
||||
$this->db->query("insert into user_options (user_id, option_type, option_name, option_key, option_value) values (" . $insert_id . ", 'widget','on_air','display_last_seen','".(xss_clean($on_air_widget_display_last_seen ?? 'false'))."');");
|
||||
$this->db->query("insert into user_options (user_id, option_type, option_name, option_key, option_value) values (" . $insert_id . ", 'widget','on_air','display_only_most_recent_radio','".(xss_clean($on_air_widget_show_only_most_recent_radio ?? 'true'))."');");
|
||||
$this->db->query("insert into user_options (user_id, option_type, option_name, option_key, option_value) values (" . $insert_id . ", 'widget','qso','display_qso_time','".(xss_clean($qso_widget_display_qso_time ?? 'false'))."');");
|
||||
$this->db->query("insert into user_options (user_id, option_type, option_name, option_key, option_value) values (" . $insert_id . ", 'qso_db_search_priority','enable','boolean','".(xss_clean($user_qso_db_search_priority ?? 'Y'))."');");
|
||||
|
||||
return OK;
|
||||
} else {
|
||||
@@ -388,6 +390,7 @@ class User_Model extends CI_Model {
|
||||
$this->db->query("replace into user_options (user_id, option_type, option_name, option_key, option_value) values (" . $fields['id'] . ", 'dashboard','show_map','boolean','".xss_clean($fields['user_dashboard_map'] ?? 'Y')."');");
|
||||
$this->db->query("replace into user_options (user_id, option_type, option_name, option_key, option_value) values (" . $fields['id'] . ", 'dashboard','show_dashboard_banner','boolean','".xss_clean($fields['user_dashboard_banner'] ?? 'Y')."');");
|
||||
$this->db->query("replace into user_options (user_id, option_type, option_name, option_key, option_value) values (" . $fields['id'] . ", 'dashboard','show_dashboard_solar','boolean','".xss_clean($fields['user_dashboard_solar'] ?? 'N')."');");
|
||||
$this->db->query("replace into user_options (user_id, option_type, option_name, option_key, option_value) values (" . $fields['id'] . ", 'qso_db_search_priority','enable','boolean','".xss_clean($fields['user_qso_db_search_priority'] ?? 'Y')."');");
|
||||
$this->session->set_userdata('dashboard_last_qso_count', $dashboard_last_qso_count);
|
||||
$this->session->set_userdata('qso_page_last_qso_count', $qso_page_last_qso_count);
|
||||
$this->session->set_userdata('user_dashboard_map',xss_clean($fields['user_dashboard_map'] ?? 'Y'));
|
||||
@@ -552,6 +555,7 @@ class User_Model extends CI_Model {
|
||||
'user_dashboard_map' => ((($this->session->userdata('user_dashboard_map') ?? 'Y') == 'Y') ? $this->user_options_model->get_options('dashboard', array('option_name' => 'show_map', 'option_key' => 'boolean'))->row()->option_value ?? 'Y' : $this->session->userdata('user_dashboard_map')),
|
||||
'user_dashboard_banner' => ((($this->session->userdata('user_dashboard_banner') ?? 'Y') == 'Y') ? $this->user_options_model->get_options('dashboard', array('option_name' => 'show_dashboard_banner', 'option_key' => 'boolean'))->row()->option_value ?? 'Y' : $this->session->userdata('user_dashboard_banner')),
|
||||
'user_dashboard_solar' => ((($this->session->userdata('user_dashboard_solar') ?? 'N') == 'Y') ? $this->session->userdata('user_dashboard_solar') : $this->user_options_model->get_options('dashboard', array('option_name' => 'show_dashboard_solar', 'option_key' => 'boolean'))->row()->option_value ?? 'N'),
|
||||
'user_qso_db_search_priority' => ((($this->session->userdata('user_qso_db_search_priority') ?? 'Y') == 'Y') ? $this->session->userdata('user_qso_db_search_priority') : $this->user_options_model->get_options('qso_db_search_priority', array('option_name' => 'enable', 'option_key' => 'boolean'))->row()->option_value ?? 'Y'),
|
||||
'user_date_format' => $u->row()->user_date_format,
|
||||
'user_stylesheet' => $u->row()->user_stylesheet,
|
||||
'user_qth_lookup' => isset($u->row()->user_qth_lookup) ? $u->row()->user_qth_lookup : 0,
|
||||
|
||||
@@ -370,6 +370,16 @@
|
||||
<small id="SelectDateFormatHelp" class="form-text text-muted"><?= __("Choose yes here if you want to log QSO start and end times separately. If set to 'No' the end time will be the same as start time."); ?></small>
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
<div class="mb-3">
|
||||
<label for="logendtime"><?= __("Prioritize database search over external lookup"); ?></label>
|
||||
<?php if(!isset($user_qso_db_search_priority)) { $user_qso_db_search_priority='Y'; }?>
|
||||
<select class="form-select" id="logendtimes" name="user_qso_db_search_priority">
|
||||
<option value="Y" <?php if ($user_qso_db_search_priority == 'Y') { echo " selected =\"selected\""; } ?>><?= __("Yes"); ?></option>
|
||||
<option value="N" <?php if ($user_qso_db_search_priority == 'N') { echo " selected =\"selected\""; } ?>><?= __("No"); ?></option>
|
||||
</select>
|
||||
<small id="SelectDateFormatHelp" class="form-text text-muted"><?= __("When set to \"Yes\", callsign lookup will first use data from your previous QSOs before querying external services. Set to \"No\" to always use external lookup services instead."); ?></small>
|
||||
</div>
|
||||
<hr />
|
||||
<div class="mb-3">
|
||||
<label for="profileimages"><?= __("Show profile picture of QSO partner from qrz.com/hamqth.com profile in the log QSO section."); ?></label>
|
||||
|
||||
Reference in New Issue
Block a user