From 61e24616460bbd8e3cb2370904498254ad3ec671 Mon Sep 17 00:00:00 2001 From: phl0 Date: Wed, 23 Aug 2023 14:48:49 +0200 Subject: [PATCH] Add an exit for the case 2 or more than 3 commans exist in grid --- application/libraries/Qra.php | 56 +++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 26 deletions(-) diff --git a/application/libraries/Qra.php b/application/libraries/Qra.php index 5dadc311..a9122c29 100644 --- a/application/libraries/Qra.php +++ b/application/libraries/Qra.php @@ -164,34 +164,38 @@ function get_bearing($lat1, $lon1, $lat2, $lon2) { } function qra2latlong($strQRA) { - if (substr_count($strQRA, ',') == 3) { - // Handle grid corners - $grids = explode(',', $strQRA); - $coords = array(0, 0); - for($i=0; $i<4; $i++) { - $cornercoords[$i] = qra2latlong($grids[$i]); - $coords[0] += $cornercoords[$i][0]; - $coords[1] += $cornercoords[$i][1]; - } - return array (round($coords[0]/4), round($coords[1]/4)); - } else if (substr_count($strQRA, ',') == 1) { - // Handle grid lines - $grids = explode(',', $strQRA); - $coords = array(0, 0); - for($i=0; $i<2; $i++) { - $linecoords[$i] = qra2latlong($grids[$i]); - } - if ($linecoords[0][0] != $linecoords[1][0]) { - $coords[0] = round((($linecoords[0][0] + $linecoords[1][0]) / 2),1); + if (substr_count($strQRA, ',') > 0) { + if (substr_count($strQRA, ',') == 3) { + // Handle grid corners + $grids = explode(',', $strQRA); + $coords = array(0, 0); + for($i=0; $i<4; $i++) { + $cornercoords[$i] = qra2latlong($grids[$i]); + $coords[0] += $cornercoords[$i][0]; + $coords[1] += $cornercoords[$i][1]; + } + return array (round($coords[0]/4), round($coords[1]/4)); + } else if (substr_count($strQRA, ',') == 1) { + // Handle grid lines + $grids = explode(',', $strQRA); + $coords = array(0, 0); + for($i=0; $i<2; $i++) { + $linecoords[$i] = qra2latlong($grids[$i]); + } + if ($linecoords[0][0] != $linecoords[1][0]) { + $coords[0] = round((($linecoords[0][0] + $linecoords[1][0]) / 2),1); + } else { + $coords[0] = round($linecoords[0][0],1); + } + if ($linecoords[0][1] != $linecoords[1][1]) { + $coords[1] = round(($linecoords[0][1] + $linecoords[1][1]) / 2); + } else { + $coords[1] = round($linecoords[0][1]); + } + return $coords; } else { - $coords[0] = round($linecoords[0][0],1); + return false; } - if ($linecoords[0][1] != $linecoords[1][1]) { - $coords[1] = round(($linecoords[0][1] + $linecoords[1][1]) / 2); - } else { - $coords[1] = round($linecoords[0][1]); - } - return $coords; } if ((strlen($strQRA) % 2 == 0) && (strlen($strQRA) <= 8)) { // Check if QRA is EVEN (the % 2 does that) and smaller/equal 8