From cc956c907da3918d25ab5ea87bc8cd34c2c9803e Mon Sep 17 00:00:00 2001 From: Andreas Kristiansen <6977712+AndreasK79@users.noreply.github.com> Date: Sat, 3 Jan 2026 09:43:40 +0100 Subject: [PATCH] [Advanced Logbook] Added sort order criteria --- application/controllers/Logbookadvanced.php | 4 ++- application/models/Logbookadvanced_model.php | 28 ++++++++++++++++++-- application/views/logbookadvanced/index.php | 12 +++++++++ assets/js/sections/logbookadvanced.js | 3 ++- 4 files changed, 43 insertions(+), 4 deletions(-) diff --git a/application/controllers/Logbookadvanced.php b/application/controllers/Logbookadvanced.php index 03750cd2b..4975a7ac8 100644 --- a/application/controllers/Logbookadvanced.php +++ b/application/controllers/Logbookadvanced.php @@ -159,6 +159,7 @@ class Logbookadvanced extends CI_Controller { 'qrzSent' => xss_clean($this->input->post('qrzSent')), 'qrzReceived' => xss_clean($this->input->post('qrzReceived')), 'distance' => xss_clean($this->input->post('distance')), + 'sortorder' => xss_clean($this->input->post('sortorder')) ); } @@ -388,7 +389,8 @@ class Logbookadvanced extends CI_Controller { 'qrzSent' => '', 'qrzReceived' => '', 'ids' => json_decode(xss_clean($this->input->post('ids'))), - 'qsoids' => xss_clean($this->input->post('qsoids')) + 'qsoids' => xss_clean($this->input->post('qsoids')), + 'sortorder' => 'qsotimedesc' ); $result = $this->logbookadvanced_model->getSearchResultArray($searchCriteria); diff --git a/application/models/Logbookadvanced_model.php b/application/models/Logbookadvanced_model.php index 3ce89043c..c81066272 100644 --- a/application/models/Logbookadvanced_model.php +++ b/application/models/Logbookadvanced_model.php @@ -602,6 +602,30 @@ class Logbookadvanced_model extends CI_Model { } } + $sortorder = ''; + + if ($searchCriteria['sortorder'] !== '') { + switch($searchCriteria['sortorder']) { + case 'qsotimedesc': + $sortorder .= ' ORDER BY qsos.COL_TIME_ON desc, qsos.COL_PRIMARY_KEY desc'; + break; + case 'qsotimeasc': + $sortorder .= ' ORDER BY qsos.COL_TIME_ON asc, qsos.COL_PRIMARY_KEY asc'; + break; + case 'band': + $sortorder .= ' ORDER BY qsos.COL_BAND asc, qsos.COL_PRIMARY_KEY asc'; + break; + case 'mode': + $sortorder .= ' ORDER BY qsos.COL_MODE asc, qsos.COL_SUBMODE asc, qsos.COL_PRIMARY_KEY asc'; + break; + case 'qso_modifieddesc': + $sortorder .= ' ORDER BY qsos.last_modified desc, qsos.COL_PRIMARY_KEY desc'; + break; + default: + $sortorder .= ' ORDER BY qsos.COL_TIME_ON desc, qsos.COL_PRIMARY_KEY desc'; + } + } + $sql = " 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 @@ -614,7 +638,7 @@ class Logbookadvanced_model extends CI_Model { WHERE station_profile.user_id = ? $where $where2 - ORDER BY qsos.COL_TIME_ON desc, qsos.COL_PRIMARY_KEY desc + $sortorder $limit "; return $this->db->query($sql, $binding); @@ -2079,7 +2103,7 @@ class Logbookadvanced_model extends CI_Model { from ' . $this->config->item('table_name') . ' join station_profile on ' . $this->config->item('table_name') . '.station_id = station_profile.station_id where station_profile.user_id = ?'; - $params[] = array($this->session->userdata('user_id')); + $params[] = $this->session->userdata('user_id'); $sql .= ' order by station_profile.station_profile_name asc, date desc'; diff --git a/application/views/logbookadvanced/index.php b/application/views/logbookadvanced/index.php index 2ba827e77..134ea17ee 100644 --- a/application/views/logbookadvanced/index.php +++ b/application/views/logbookadvanced/index.php @@ -506,6 +506,18 @@ $options = json_decode($options); "> + +
+
+ + +
diff --git a/assets/js/sections/logbookadvanced.js b/assets/js/sections/logbookadvanced.js index f3aaf434d..d05b3d4d2 100644 --- a/assets/js/sections/logbookadvanced.js +++ b/assets/js/sections/logbookadvanced.js @@ -764,6 +764,7 @@ $(document).ready(function () { qrzSent: this.qrzSent.value, qrzReceived: this.qrzReceived.value, distance: this.distance.value, + sortorder: this.sortorder.value }, dataType: 'json', success: function (data) { @@ -1928,7 +1929,7 @@ function saveOptions() { nightshadow_layer: $('input[name="nightshadow"]').is(':checked') ? true : false, qth: $('input[name="qth"]').is(':checked') ? true : false, frequency: $('input[name="frequency"]').is(':checked') ? true : false, - dcl: $('input[name="dcl"]').is(':checked') ? true : false, + dcl: $('input[name="dcl"]').is(':checked') ? true : false }, success: function(data) { $('#saveButton').prop("disabled", false);