From 2ec1eccc35e240d28694df4c81cbd2a763a65801 Mon Sep 17 00:00:00 2001 From: int2001 Date: Wed, 9 Jul 2025 10:17:45 +0000 Subject: [PATCH 1/3] Added overlap-checking to PHP and REST-Return --- application/controllers/Band.php | 9 +++++++-- application/models/Bands.php | 15 +++++++++++++++ assets/js/sections/bandedges.js | 3 ++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/application/controllers/Band.php b/application/controllers/Band.php index bcfe045b9..385fa5259 100644 --- a/application/controllers/Band.php +++ b/application/controllers/Band.php @@ -207,8 +207,13 @@ class Band extends CI_Controller { $frequencyto = $this->security->xss_clean($this->input->post('frequencyto', true)); $mode = $this->security->xss_clean($this->input->post('mode', true)); - $this->bands->saveBandEdge($id, $frequencyfrom, $frequencyto, $mode); - echo json_encode(array('message' => 'OK')); + $overlap=$this->bands->check4overlapEdges($id, $frequencyfrom, $frequencyto, $mode); + if (!($overlap)) { + $this->bands->saveBandEdge($id, $frequencyfrom, $frequencyto, $mode); + echo json_encode(array('message' => 'OK')); + } else { + echo json_encode(array('message' => 'Overlapping')); + } return; } } diff --git a/application/models/Bands.php b/application/models/Bands.php index 1472b3429..129967f60 100644 --- a/application/models/Bands.php +++ b/application/models/Bands.php @@ -459,6 +459,21 @@ class Bands extends CI_Model { $this->db->delete('bandedges', array('id' => $clean_id, 'userid' => $this->session->userdata('user_id'))); } + function check4overlapEdges($id, $frequencyfrom, $frequencyto, $mode) { + $edges = $this->bands->get_all_bandedges_for_user(); + foreach ($edges as $item) { + if ($item->id == ($id ?? -1000)) { + continue; + } + $from = (int)$item->frequencyfrom; + $to = (int)$item->frequencyto; + if (!($frequencyto < $from || $frequencyfrom > $to)) { + return true; + } + } + return false; + } + function saveBandEdge($id, $frequencyfrom, $frequencyto, $mode) { $data = array( 'frequencyfrom' => $frequencyfrom, diff --git a/assets/js/sections/bandedges.js b/assets/js/sections/bandedges.js index 2a1d439d6..fb2eb545c 100644 --- a/assets/js/sections/bandedges.js +++ b/assets/js/sections/bandedges.js @@ -81,7 +81,8 @@ function saveChanges(id) { 'mode': mode, }, success: function (data) { - + // todo: reload table if data.message == 'OK' + // todo: else show warning "oerlap" and reload aswell } }); From 280229d073a7da489ae88ac341bfa30dbf1a32e8 Mon Sep 17 00:00:00 2001 From: int2001 Date: Thu, 10 Jul 2025 05:34:00 +0000 Subject: [PATCH 2/3] Added JS-Handling and language-vars --- application/views/bands/bandedges.php | 6 +++ assets/js/sections/bandedges.js | 72 +++++++++++++++++++-------- 2 files changed, 56 insertions(+), 22 deletions(-) diff --git a/application/views/bands/bandedges.php b/application/views/bands/bandedges.php index a16d8158b..8c1211d85 100644 --- a/application/views/bands/bandedges.php +++ b/application/views/bands/bandedges.php @@ -1,3 +1,9 @@ +

diff --git a/assets/js/sections/bandedges.js b/assets/js/sections/bandedges.js index fb2eb545c..de5157bdf 100644 --- a/assets/js/sections/bandedges.js +++ b/assets/js/sections/bandedges.js @@ -45,7 +45,7 @@ function saveChanges(id) { if (!$.isNumeric(frequencyfrom) || !$.isNumeric(frequencyto)) { BootstrapDialog.alert({ title: 'INFO', - message: "Please enter valid numbers for frequency.", + message: lang_edge_invalid_number, type: BootstrapDialog.TYPE_INFO, closable: true, draggable: true, @@ -59,7 +59,7 @@ function saveChanges(id) { if (frequencyfrom >= frequencyto) { BootstrapDialog.alert({ title: 'INFO', - message: "The 'From' frequency must be less than the 'To' frequency.", + message: lang_edge_from_gt_to, type: BootstrapDialog.TYPE_INFO, closable: true, draggable: true, @@ -81,12 +81,24 @@ function saveChanges(id) { 'mode': mode, }, success: function (data) { - // todo: reload table if data.message == 'OK' - // todo: else show warning "oerlap" and reload aswell + response=JSON.parse(data); + console.log(response); + if ((response.message ?? '') !== 'OK') { + BootstrapDialog.alert({ + title: 'INFO', + message: lang_edge_overlap, + type: BootstrapDialog.TYPE_INFO, + closable: true, + draggable: true, + btnOKClass: 'btn-info', + callback: function (result) { + location.reload(); + } + }); + } } }); - - restoreLine(id); + restoreLine(id); } function cancelChanges(id) { @@ -120,7 +132,7 @@ function restoreLine(id) { function deleteBandEdge(id) { BootstrapDialog.confirm({ title: lang_general_word_danger, - message: 'Are you sure you want to delete this band edge?', + message: lang_edge_remove, type: BootstrapDialog.TYPE_DANGER, closable: true, draggable: true, @@ -170,14 +182,14 @@ function addBandEdgeRow() { } function saveNewBandEdgeRow() { - var frequencyfrom = $('#new_frequencyfrom').val(); - var frequencyto = $('#new_frequencyto').val(); - var mode = $('#new_mode').val(); + var frequencyfrom = $('#new_frequencyfrom').val(); + var frequencyto = $('#new_frequencyto').val(); + var mode = $('#new_mode').val(); if (!$.isNumeric(frequencyfrom) || !$.isNumeric(frequencyto)) { BootstrapDialog.alert({ title: 'INFO', - message: "Please enter valid numbers for frequency.", + message: lang_edge_invalid_number, type: BootstrapDialog.TYPE_INFO, closable: true, draggable: true, @@ -191,7 +203,7 @@ function saveNewBandEdgeRow() { if (frequencyfrom >= frequencyto) { BootstrapDialog.alert({ title: 'INFO', - message: "The 'From' frequency must be less than the 'To' frequency.", + message: lang_edge_from_gt_to, type: BootstrapDialog.TYPE_INFO, closable: true, draggable: true, @@ -204,17 +216,33 @@ function saveNewBandEdgeRow() { } $.ajax({ - url: base_url + 'index.php/band/savebandedge', - type: 'post', - data: { - 'frequencyfrom': frequencyfrom, - 'frequencyto': frequencyto, - 'mode': mode, + url: base_url + 'index.php/band/saveBandEdge', + type: 'post', + data: { + 'frequencyfrom': frequencyfrom, + 'frequencyto': frequencyto, + 'mode': mode, }, - success: function (html) { - location.reload(); - } - }); + success: function (data) { + response=JSON.parse(data); + console.log(response); + if ((response.message ?? '') !== 'OK') { + BootstrapDialog.alert({ + title: 'INFO', + message: lang_edge_overlap, + type: BootstrapDialog.TYPE_INFO, + closable: true, + draggable: true, + btnOKClass: 'btn-info', + callback: function (result) { + location.reload(); + } + }); + } else { + location.reload(); + } + } + }); } function cancelNewBandEdgeRow() { From f5d02f02bad66d1b36edb3990e451b52af025963 Mon Sep 17 00:00:00 2001 From: int2001 Date: Thu, 10 Jul 2025 05:38:23 +0000 Subject: [PATCH 3/3] Added extra-fence for numeric input (never! trust userinput) --- application/controllers/Band.php | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/application/controllers/Band.php b/application/controllers/Band.php index 385fa5259..5ffac4e6a 100644 --- a/application/controllers/Band.php +++ b/application/controllers/Band.php @@ -206,13 +206,16 @@ class Band extends CI_Controller { $frequencyfrom = $this->security->xss_clean($this->input->post('frequencyfrom', true)); $frequencyto = $this->security->xss_clean($this->input->post('frequencyto', true)); $mode = $this->security->xss_clean($this->input->post('mode', true)); - - $overlap=$this->bands->check4overlapEdges($id, $frequencyfrom, $frequencyto, $mode); - if (!($overlap)) { - $this->bands->saveBandEdge($id, $frequencyfrom, $frequencyto, $mode); - echo json_encode(array('message' => 'OK')); + if ((is_numeric($frequencyfrom)) && (is_numeric($frequencyfrom))) { + $overlap=$this->bands->check4overlapEdges($id, $frequencyfrom, $frequencyto, $mode); + if (!($overlap)) { + $this->bands->saveBandEdge($id, $frequencyfrom, $frequencyto, $mode); + echo json_encode(array('message' => 'OK')); + } else { + echo json_encode(array('message' => 'Overlapping')); + } } else { - echo json_encode(array('message' => 'Overlapping')); + echo json_encode(array('message' => 'No Number entered')); } return; }