From 90daf3ae0d071c3b84a5f86dd6f3e226ad7fb846 Mon Sep 17 00:00:00 2001
From: Andreas Kristiansen <6977712+AndreasK79@users.noreply.github.com>
Date: Mon, 15 Dec 2025 16:51:11 +0100
Subject: [PATCH] More verbose message on dxcc and state fixer
---
application/controllers/Logbookadvanced.php | 19 ++--
application/models/Logbookadvanced_model.php | 19 +++-
.../logbookadvanced/showUpdateResult.php | 105 ++++++++++++++++++
assets/js/sections/logbookadvanced.js | 18 +--
4 files changed, 132 insertions(+), 29 deletions(-)
create mode 100644 application/views/logbookadvanced/showUpdateResult.php
diff --git a/application/controllers/Logbookadvanced.php b/application/controllers/Logbookadvanced.php
index 0945a6d9c..3f72bb67b 100644
--- a/application/controllers/Logbookadvanced.php
+++ b/application/controllers/Logbookadvanced.php
@@ -911,17 +911,16 @@ class Logbookadvanced extends CI_Controller {
$this->load->model('logbookadvanced_model');
$dxcc = $this->input->post('dxcc', true);
- $country = $this->input->post('country', true);
+ $data['country'] = $this->input->post('country', true);
// Process for batch QSO state fix
$result = $this->logbookadvanced_model->fixStateBatch($dxcc);
- $data['result'] = count($result);
+ $data['result'] = $result;
- $data['message'] = __("The number of QSOs updated for state/province in") . ' ' . $country . ' : ' . count($result);
+ $data['type'] = 'state';
- header("Content-Type: application/json");
- echo json_encode($data);
+ $this->load->view('logbookadvanced/showUpdateResult', $data);
}
public function openStateList() {
@@ -945,14 +944,10 @@ class Logbookadvanced extends CI_Controller {
$result = $this->logbookadvanced_model->check_missing_dxcc_id($all);
$data['result'] = $result;
+ $data['all'] = $all;
+ $data['type'] = 'dxcc';
- if ($all == 'false') {
- $data['message'] = __("The number of QSOs updated for missing DXCC IDs was") .' ' . $result;
- } else {
- $data['message'] = __("The number of QSOs re-checked for DXCC was") .' ' . $result;
- }
- header("Content-Type: application/json");
- echo json_encode($data);
+ $this->load->view('logbookadvanced/showUpdateResult', $data);
}
public function openMissingDxccList() {
diff --git a/application/models/Logbookadvanced_model.php b/application/models/Logbookadvanced_model.php
index f35db9ef7..b4b1ad112 100644
--- a/application/models/Logbookadvanced_model.php
+++ b/application/models/Logbookadvanced_model.php
@@ -1598,13 +1598,19 @@ class Logbookadvanced_model extends CI_Model {
$results = [];
+ $count = 0;
+
foreach ($query->result() as $qso) {
$result = $this->fixStateSingle($qso->COL_PRIMARY_KEY);
if ($result['success']) {
+ $count++;
+ } else {
$results []= $result;
}
}
+ $results['count'] = $count;
+
return $results;
}
@@ -1652,14 +1658,23 @@ class Logbookadvanced_model extends CI_Model {
$qso_date = $row['COL_TIME_OFF'] == '' ? $row['COL_TIME_ON'] : $row['COL_TIME_OFF'];
$qso_date = date("Y-m-d", strtotime($qso_date));
$d = $this->logbook_model->check_dxcc_table($row['COL_CALL'], $qso_date);
- if ($d[0] != 'Not Found') {
+ if ($d[0] == 'Not Found') {
+ $result[] = [
+ 'callsign' => $row['COL_CALL'],
+ 'reason' => 'DXCC Not Found',
+ 'location' => '',
+ 'id' => $row['COL_PRIMARY_KEY']
+ ];
+ } else {
$q->execute(array(addslashes(ucwords(strtolower($d[1]), "- (/")), $d[0], $row['COL_PRIMARY_KEY']));
$count++;
}
}
}
$this->db->trans_complete();
- return $count;
+ $result['count'] = $count;
+
+ return $result;
}
function getMissingDxccQsos() {
diff --git a/application/views/logbookadvanced/showUpdateResult.php b/application/views/logbookadvanced/showUpdateResult.php
new file mode 100644
index 000000000..a52c5c87c
--- /dev/null
+++ b/application/views/logbookadvanced/showUpdateResult.php
@@ -0,0 +1,105 @@
+' . __("The number of QSOs updated for missing DXCC IDs was") .' ' . $result['count'] . '';
+ } else {
+ echo '
' . __("The number of QSOs re-checked for DXCC was") .' ' . $result['count'] . '
';
+ }
+ } else {
+ if ($all == 'false') {
+ echo '' . __("The number of QSOs updated for missing DXCC IDs was") .' ' . $result['count'] . '
';
+ } else {
+ echo '' . __("The number of QSOs re-checked for DXCC was") .' ' . $result['count'] . '
';
+ }
+ }
+
+ if ($result) {
+ echo __("These QSOs could not be updated:");
+ $details = [];
+ foreach ($result as $r) {
+ if (is_array($r)) {
+ $details[] = $r;
+ }
+ }
+
+ if (!empty($details)) {
+ echo '';
+ echo '
';
+ echo '';
+ echo '';
+ echo '| Callsign | ';
+ echo 'Reason | ';
+ echo 'Station location | ';
+ echo '
';
+ echo '';
+ echo '';
+
+ foreach ($details as $r) {
+ echo '';
+ echo '| ' . htmlspecialchars($r['callsign']) . ' | ';
+ echo '' . htmlspecialchars($r['reason']) . ' | ';
+ echo '' . htmlspecialchars($r['location']) . ' | ';
+ echo '
';
+ }
+
+ echo '';
+ echo '
';
+ echo '
';
+ }
+ }
+}
+
+function showStateUpdateResult($result, $country) {
+ if ($result['count'] == 0) {
+ echo '' . __("The number of QSOs updated for state/province in") . ' ' . $country . ' : ' . $result['count'] . '
';
+ } else {
+ echo '' . __("The number of QSOs updated for state/province in") . ' ' . $country . ' : ' . $result['count'] . '
';
+ }
+
+ if ($result) {
+ echo __("These QSOs could not be updated:");
+ $details = [];
+ foreach ($result as $r) {
+ if (is_array($r)) {
+ $details[] = $r;
+ }
+ }
+
+ if (!empty($details)) {
+ echo '';
+ echo '
';
+ echo '';
+ echo '';
+ echo '| Callsign | ';
+ echo 'Reason | ';
+ echo '
';
+ echo '';
+ echo '';
+
+ foreach ($details as $r) {
+ echo '';
+ echo '| ' . htmlspecialchars($r['callsign']) . ' | ';
+ echo '' . htmlspecialchars($r['reason']) . ' | ';
+ echo '
';
+ }
+
+ echo '';
+ echo '
';
+ echo '
';
+ }
+ }
+}
diff --git a/assets/js/sections/logbookadvanced.js b/assets/js/sections/logbookadvanced.js
index 1bd6e3c69..b83243d72 100644
--- a/assets/js/sections/logbookadvanced.js
+++ b/assets/js/sections/logbookadvanced.js
@@ -2188,11 +2188,7 @@ function saveOptions() {
},
success: function (response) {
$('#fixStateBtn_' + dxcc).prop("disabled", false).removeClass("running");
- if (response.result == 0) {
- $('.result').html('' + response.message + '
');
- return;
- }
- $('.result').html('' + response.message + '
');
+ $('.result').html(response);
},
error: function () {
$('#fixStateBtn_' + dxcc).prop("disabled", false).removeClass("running");
@@ -2259,11 +2255,7 @@ function saveOptions() {
success: function(data) {
$('#updateDxccBtn').prop("disabled", false).removeClass("running");
$('#closeButton').prop("disabled", false);
- if (data.result == 0) {
- $('.result').html('' + data.message + '
');
- return;
- }
- $('.result').html('' + data.message + '
');
+ $('.result').html(data);
},
error: function(xhr, status, error) {
$('#updateDxccBtn').prop("disabled", false).removeClass("running");
@@ -2289,11 +2281,7 @@ function saveOptions() {
success: function(data) {
$('#fixMissingDxccBtn').prop("disabled", false).removeClass("running");
$('#closeButton').prop("disabled", false);
- if (data.result == 0) {
- $('.result').html('' + data.message + '
');
- return;
- }
- $('.result').html('' + data.message + '
');
+ $('.result').html(data);
},
error: function(xhr, status, error) {
$('#fixMissingDxccBtn').prop("disabled", false).removeClass("running");