From 68ae85ed024134f7f0f18a84a77aafc738ef8928 Mon Sep 17 00:00:00 2001 From: Phillip Hunter Date: Sat, 18 Apr 2026 16:58:34 +0000 Subject: [PATCH 1/5] Fix visitor gridmap showing no confirmed grids --- application/controllers/Visitor.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/application/controllers/Visitor.php b/application/controllers/Visitor.php index 628adf79a..1bffc43d6 100644 --- a/application/controllers/Visitor.php +++ b/application/controllers/Visitor.php @@ -310,7 +310,7 @@ public function satellites() $array_confirmed_grid_6char = array(); // Get initial data for "All" bands - $query = $this->gridmap_model->get_band_confirmed($default_band, $default_mode, 'false', 'false', 'false', 'false', $default_sat, $logbooks_locations_array); + $query = $this->gridmap_model->get_band_confirmed($default_band, $default_mode, 'true', 'true', 'true', 'true', $default_sat, $logbooks_locations_array); if ($query && $query->num_rows() > 0) { @@ -395,7 +395,7 @@ public function satellites() } // Confirmed VUCC Squares - $query_vucc = $this->gridmap_model->get_band_confirmed_vucc_squares($default_band, $default_mode, 'false', 'false', 'false', 'false', $default_sat, $logbooks_locations_array); + $query_vucc = $this->gridmap_model->get_band_confirmed_vucc_squares($default_band, $default_mode, 'true', 'true', 'true', 'true', $default_sat, $logbooks_locations_array); if ($query_vucc && $query_vucc->num_rows() > 0) { @@ -545,7 +545,7 @@ public function getGridsjs() $array_grid_6char_confirmed = array(); // For public visitor, we don't show QSL confirmations, so set all to false - $query = $this->gridmap_model->get_band_confirmed($band, $mode, 'false', 'false', 'false', 'false', $sat, $logbooks_locations_array); + $query = $this->gridmap_model->get_band_confirmed($band, $mode, 'true', 'true', 'true', 'true', $sat, $logbooks_locations_array); if ($query && $query->num_rows() > 0) { foreach ($query->result() as $row) { @@ -617,7 +617,7 @@ public function getGridsjs() } // // Confirmed Squares - $query_vucc = $this->gridmap_model->get_band_confirmed_vucc_squares($band, $mode, 'false', 'false', 'false', 'false', $sat, $logbooks_locations_array); + $query_vucc = $this->gridmap_model->get_band_confirmed_vucc_squares($band, $mode, 'true', 'true', 'true', 'true', $sat, $logbooks_locations_array); if ($query_vucc && $query_vucc->num_rows() > 0) { foreach ($query_vucc->result() as $row) { From 6c44c764ee21c0c2e0297ae55372c555945f53aa Mon Sep 17 00:00:00 2001 From: Phillip Hunter Date: Sat, 18 Apr 2026 16:58:34 +0000 Subject: [PATCH 2/5] Make public-visitor gridmap confirmation disclosure configurable --- application/config/config.sample.php | 15 +++++++++++++++ application/controllers/Visitor.php | 15 ++++++++++----- install/config/config.php | 15 +++++++++++++++ 3 files changed, 40 insertions(+), 5 deletions(-) diff --git a/application/config/config.sample.php b/application/config/config.sample.php index 115b87b46..096f491ab 100644 --- a/application/config/config.sample.php +++ b/application/config/config.sample.php @@ -77,6 +77,21 @@ $config['auth_level'][3] = "Operator"; $config['auth_level'][99] = "Administrator"; + +/* +|-------------------------------------------------------------------------- +| Public Visitor Page +|-------------------------------------------------------------------------- +| +| 'public_map_show_confirmations' +| When true, the public visitor gridmap (/visitor/gridmap/) +| distinguishes confirmed grids (LoTW, eQSL, paper QSL, QRZ.com) from +| worked-only grids. When false, confirmed grids are shown in the same +| color as worked grids, hiding which confirmation sources the +| operator uses. Default: false (privacy-minimal). +*/ + +$config['public_map_show_confirmations'] = false; /* |-------------------------------------------------------------------------- | Base Site URL diff --git a/application/controllers/Visitor.php b/application/controllers/Visitor.php index 628adf79a..a6d4bce96 100644 --- a/application/controllers/Visitor.php +++ b/application/controllers/Visitor.php @@ -309,8 +309,10 @@ public function satellites() $array_confirmed_grid_4char = array(); $array_confirmed_grid_6char = array(); + $show_conf = $this->config->item('public_map_show_confirmations') ? 'true' : 'false'; + // Get initial data for "All" bands - $query = $this->gridmap_model->get_band_confirmed($default_band, $default_mode, 'false', 'false', 'false', 'false', $default_sat, $logbooks_locations_array); + $query = $this->gridmap_model->get_band_confirmed($default_band, $default_mode, $show_conf, $show_conf, $show_conf, $show_conf, $default_sat, $logbooks_locations_array); if ($query && $query->num_rows() > 0) { @@ -395,7 +397,7 @@ public function satellites() } // Confirmed VUCC Squares - $query_vucc = $this->gridmap_model->get_band_confirmed_vucc_squares($default_band, $default_mode, 'false', 'false', 'false', 'false', $default_sat, $logbooks_locations_array); + $query_vucc = $this->gridmap_model->get_band_confirmed_vucc_squares($default_band, $default_mode, $show_conf, $show_conf, $show_conf, $show_conf, $default_sat, $logbooks_locations_array); if ($query_vucc && $query_vucc->num_rows() > 0) { @@ -544,8 +546,11 @@ public function getGridsjs() $array_grid_4char_confirmed = array(); $array_grid_6char_confirmed = array(); - // For public visitor, we don't show QSL confirmations, so set all to false - $query = $this->gridmap_model->get_band_confirmed($band, $mode, 'false', 'false', 'false', 'false', $sat, $logbooks_locations_array); + // See satellites() — the public_map_show_confirmations config flag governs + // whether confirmed grids are disclosed on the public map. + $show_conf = $this->config->item('public_map_show_confirmations') ? 'true' : 'false'; + + $query = $this->gridmap_model->get_band_confirmed($band, $mode, $show_conf, $show_conf, $show_conf, $show_conf, $sat, $logbooks_locations_array); if ($query && $query->num_rows() > 0) { foreach ($query->result() as $row) { @@ -617,7 +622,7 @@ public function getGridsjs() } // // Confirmed Squares - $query_vucc = $this->gridmap_model->get_band_confirmed_vucc_squares($band, $mode, 'false', 'false', 'false', 'false', $sat, $logbooks_locations_array); + $query_vucc = $this->gridmap_model->get_band_confirmed_vucc_squares($band, $mode, $show_conf, $show_conf, $show_conf, $show_conf, $sat, $logbooks_locations_array); if ($query_vucc && $query_vucc->num_rows() > 0) { foreach ($query_vucc->result() as $row) { diff --git a/install/config/config.php b/install/config/config.php index f50cb1dfa..62210ad24 100644 --- a/install/config/config.php +++ b/install/config/config.php @@ -79,6 +79,21 @@ $config['auth_level'][3] = "Operator"; $config['auth_level'][99] = "Administrator"; + +/* +|-------------------------------------------------------------------------- +| Public Visitor Page +|-------------------------------------------------------------------------- +| +| 'public_map_show_confirmations' +| When true, the public visitor gridmap (/visitor/gridmap/) +| distinguishes confirmed grids (LoTW, eQSL, paper QSL, QRZ.com) from +| worked-only grids. When false, confirmed grids are shown in the same +| color as worked grids, hiding which confirmation sources the +| operator uses. Default: false (privacy-minimal). +*/ + +$config['public_map_show_confirmations'] = false; /* |-------------------------------------------------------------------------- | Base Site URL From e5ade7f9417ff497ae703a522a5d9d73b71b6302 Mon Sep 17 00:00:00 2001 From: Phillip Hunter Date: Mon, 20 Apr 2026 04:14:57 +0000 Subject: [PATCH 3/5] Honor public_map_show_confirmations on visitor dashboard dot map --- application/controllers/Visitor.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/application/controllers/Visitor.php b/application/controllers/Visitor.php index a6d4bce96..5be00d0ce 100644 --- a/application/controllers/Visitor.php +++ b/application/controllers/Visitor.php @@ -203,7 +203,8 @@ public function map() { $qsos = $this->logbook_model->get_qsos('18', $offset, $logbooks_locations_array); // [PLOT] ADD plot // - $plot_array = $this->logbook_model->get_plot_array_for_map($qsos->result()); + $hide_conf = !$this->config->item('public_map_show_confirmations'); + $plot_array = $this->logbook_model->get_plot_array_for_map($qsos->result(), $hide_conf); header('Content-Type: application/json; charset=utf-8'); echo json_encode($plot_array); From 07309a4949c7c29c7e8f6bd244456af3e13c1354 Mon Sep 17 00:00:00 2001 From: Phillip Hunter Date: Wed, 22 Apr 2026 04:24:55 +0000 Subject: [PATCH 4/5] Switch public_map_show_confirmations to OptionsLib --- application/config/config.sample.php | 15 -------- application/config/migration.php | 2 +- application/controllers/Options.php | 37 ++++++++++++++++++ application/controllers/Visitor.php | 8 ++-- application/language/english/options_lang.php | 4 ++ ...d_public_map_show_confirmations_option.php | 28 ++++++++++++++ .../options/public_map_show_confirmations.php | 38 +++++++++++++++++++ application/views/options/sidebar.php | 5 +++ install/config/config.php | 15 -------- 9 files changed, 117 insertions(+), 35 deletions(-) create mode 100644 application/migrations/267_add_public_map_show_confirmations_option.php create mode 100644 application/views/options/public_map_show_confirmations.php diff --git a/application/config/config.sample.php b/application/config/config.sample.php index 096f491ab..115b87b46 100644 --- a/application/config/config.sample.php +++ b/application/config/config.sample.php @@ -77,21 +77,6 @@ $config['auth_level'][3] = "Operator"; $config['auth_level'][99] = "Administrator"; - -/* -|-------------------------------------------------------------------------- -| Public Visitor Page -|-------------------------------------------------------------------------- -| -| 'public_map_show_confirmations' -| When true, the public visitor gridmap (/visitor/gridmap/) -| distinguishes confirmed grids (LoTW, eQSL, paper QSL, QRZ.com) from -| worked-only grids. When false, confirmed grids are shown in the same -| color as worked grids, hiding which confirmation sources the -| operator uses. Default: false (privacy-minimal). -*/ - -$config['public_map_show_confirmations'] = false; /* |-------------------------------------------------------------------------- | Base Site URL diff --git a/application/config/migration.php b/application/config/migration.php index ca0f54dc9..5bb94b1c6 100644 --- a/application/config/migration.php +++ b/application/config/migration.php @@ -22,7 +22,7 @@ | */ -$config['migration_version'] = 266; +$config['migration_version'] = 267; /* |-------------------------------------------------------------------------- diff --git a/application/controllers/Options.php b/application/controllers/Options.php index 70fea855e..b10a8e15b 100644 --- a/application/controllers/Options.php +++ b/application/controllers/Options.php @@ -531,4 +531,41 @@ function public_diary_save() { } } + // Display the /public_map_show_confirmations options page + function public_map_show_confirmations() { + + $data['page_title'] = $this->lang->line('options_cloudlog_options'); + $data['sub_heading'] = $this->lang->line('options_public_map_show_confirmations'); + + $this->load->view('interface_assets/header', $data); + $this->load->view('options/public_map_show_confirmations'); + $this->load->view('interface_assets/footer'); + } + + // Save the public map confirmations option + function public_map_show_confirmations_save() { + + $data['page_title'] = $this->lang->line('options_cloudlog_options'); + $data['sub_heading'] = $this->lang->line('options_public_map_show_confirmations'); + + $this->load->helper(array('form', 'url')); + + $this->load->library('form_validation'); + + $this->form_validation->set_rules('public_map_show_confirmations', 'Public Map Confirmations', 'required'); + + if ($this->form_validation->run() == FALSE) { + $this->load->view('interface_assets/header', $data); + $this->load->view('options/public_map_show_confirmations'); + $this->load->view('interface_assets/footer'); + } else { + $update = $this->optionslib->update('public_map_show_confirmations', $this->input->post('public_map_show_confirmations'), 'yes'); + if($update == TRUE) { + $this->session->set_flashdata('success', $this->lang->line('options_public_map_show_confirmations_settings_saved')); + } + + redirect('/options/public_map_show_confirmations'); + } + } + } diff --git a/application/controllers/Visitor.php b/application/controllers/Visitor.php index 5be00d0ce..7f042efaf 100644 --- a/application/controllers/Visitor.php +++ b/application/controllers/Visitor.php @@ -203,7 +203,7 @@ public function map() { $qsos = $this->logbook_model->get_qsos('18', $offset, $logbooks_locations_array); // [PLOT] ADD plot // - $hide_conf = !$this->config->item('public_map_show_confirmations'); + $hide_conf = $this->optionslib->get_option('public_map_show_confirmations') != "1"; $plot_array = $this->logbook_model->get_plot_array_for_map($qsos->result(), $hide_conf); header('Content-Type: application/json; charset=utf-8'); @@ -310,7 +310,7 @@ public function satellites() $array_confirmed_grid_4char = array(); $array_confirmed_grid_6char = array(); - $show_conf = $this->config->item('public_map_show_confirmations') ? 'true' : 'false'; + $show_conf = $this->optionslib->get_option('public_map_show_confirmations') == "1" ? 'true' : 'false'; // Get initial data for "All" bands $query = $this->gridmap_model->get_band_confirmed($default_band, $default_mode, $show_conf, $show_conf, $show_conf, $show_conf, $default_sat, $logbooks_locations_array); @@ -547,9 +547,9 @@ public function getGridsjs() $array_grid_4char_confirmed = array(); $array_grid_6char_confirmed = array(); - // See satellites() — the public_map_show_confirmations config flag governs + // See satellites() — the public_map_show_confirmations option governs // whether confirmed grids are disclosed on the public map. - $show_conf = $this->config->item('public_map_show_confirmations') ? 'true' : 'false'; + $show_conf = $this->optionslib->get_option('public_map_show_confirmations') == "1" ? 'true' : 'false'; $query = $this->gridmap_model->get_band_confirmed($band, $mode, $show_conf, $show_conf, $show_conf, $show_conf, $sat, $logbooks_locations_array); diff --git a/application/language/english/options_lang.php b/application/language/english/options_lang.php index 5d6e4ef7a..07e901f4e 100644 --- a/application/language/english/options_lang.php +++ b/application/language/english/options_lang.php @@ -114,6 +114,10 @@ $lang['options_public_station_diary_enabled'] = 'Public Station Diary'; $lang['options_public_station_diary_enabled_hint'] = 'Enable or disable the ability for users to create public station diary entries. When disabled, all diary entries remain private regardless of individual settings.'; $lang['options_public_station_diary_settings_saved'] = 'Public Station Diary settings have been saved successfully.'; +$lang['options_public_map_show_confirmations'] = 'Public Map Confirmations'; +$lang['options_public_map_show_confirmations_enabled'] = 'Show Confirmations on Public Maps'; +$lang['options_public_map_show_confirmations_hint'] = 'When enabled, the public visitor gridsquare map and dashboard dot map distinguish confirmed QSOs (LoTW, eQSL, paper QSL, QRZ.com) from worked-only ones. Disabling hides which confirmation sources the operator uses from public visitors. Default: disabled (privacy-minimal).'; +$lang['options_public_map_show_confirmations_settings_saved'] = 'Public Map Confirmations settings have been saved successfully.'; $lang['options_enabled'] = 'Enabled'; $lang['options_disabled'] = 'Disabled'; diff --git a/application/migrations/267_add_public_map_show_confirmations_option.php b/application/migrations/267_add_public_map_show_confirmations_option.php new file mode 100644 index 000000000..53b3aa4d3 --- /dev/null +++ b/application/migrations/267_add_public_map_show_confirmations_option.php @@ -0,0 +1,28 @@ +db->where('option_name', 'public_map_show_confirmations'); + $query = $this->db->get('options'); + + if ($query->num_rows() == 0) { + $data = array( + 'option_name' => 'public_map_show_confirmations', + 'option_value' => '0', + 'autoload' => 'yes' + ); + $this->db->insert('options', $data); + } + } + + public function down() + { + $this->db->where('option_name', 'public_map_show_confirmations'); + $this->db->delete('options'); + } + +} diff --git a/application/views/options/public_map_show_confirmations.php b/application/views/options/public_map_show_confirmations.php new file mode 100644 index 000000000..6a62affb0 --- /dev/null +++ b/application/views/options/public_map_show_confirmations.php @@ -0,0 +1,38 @@ +
+ +
+ + load->view('options/sidebar') ?> + + + +
+
+

-

+ +
+ session->flashdata('success')) { ?> +
+ session->flashdata('success'); ?> +
+ + + + +
+ + + +
+ + + +
+
+
+
+ +
diff --git a/application/views/options/sidebar.php b/application/views/options/sidebar.php index f144d21a4..db10c41e7 100644 --- a/application/views/options/sidebar.php +++ b/application/views/options/sidebar.php @@ -45,6 +45,11 @@ +
  • + + + +
  • diff --git a/install/config/config.php b/install/config/config.php index 62210ad24..f50cb1dfa 100644 --- a/install/config/config.php +++ b/install/config/config.php @@ -79,21 +79,6 @@ $config['auth_level'][3] = "Operator"; $config['auth_level'][99] = "Administrator"; - -/* -|-------------------------------------------------------------------------- -| Public Visitor Page -|-------------------------------------------------------------------------- -| -| 'public_map_show_confirmations' -| When true, the public visitor gridmap (/visitor/gridmap/) -| distinguishes confirmed grids (LoTW, eQSL, paper QSL, QRZ.com) from -| worked-only grids. When false, confirmed grids are shown in the same -| color as worked grids, hiding which confirmation sources the -| operator uses. Default: false (privacy-minimal). -*/ - -$config['public_map_show_confirmations'] = false; /* |-------------------------------------------------------------------------- | Base Site URL From 6209f36ddb6d3a0253ec8036244a8a5f362082ec Mon Sep 17 00:00:00 2001 From: Phillip Hunter Date: Wed, 22 Apr 2026 01:23:26 -0400 Subject: [PATCH 5/5] Wording change on confirmations options hint --- application/language/english/options_lang.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/language/english/options_lang.php b/application/language/english/options_lang.php index 07e901f4e..582d2926e 100644 --- a/application/language/english/options_lang.php +++ b/application/language/english/options_lang.php @@ -116,7 +116,7 @@ $lang['options_public_station_diary_settings_saved'] = 'Public Station Diary settings have been saved successfully.'; $lang['options_public_map_show_confirmations'] = 'Public Map Confirmations'; $lang['options_public_map_show_confirmations_enabled'] = 'Show Confirmations on Public Maps'; -$lang['options_public_map_show_confirmations_hint'] = 'When enabled, the public visitor gridsquare map and dashboard dot map distinguish confirmed QSOs (LoTW, eQSL, paper QSL, QRZ.com) from worked-only ones. Disabling hides which confirmation sources the operator uses from public visitors. Default: disabled (privacy-minimal).'; +$lang['options_public_map_show_confirmations_hint'] = 'Enable or disable the ability for visitors to view which QSOs are confirmed on public visitor maps.'; $lang['options_public_map_show_confirmations_settings_saved'] = 'Public Map Confirmations settings have been saved successfully.'; $lang['options_enabled'] = 'Enabled'; $lang['options_disabled'] = 'Disabled';