From 4116ce3482646da29658c7b255f8d25e850c757a Mon Sep 17 00:00:00 2001 From: HB9HIL Date: Fri, 5 Jul 2024 11:20:15 +0200 Subject: [PATCH] drop some data if callsign contains pre- or suffix --- application/libraries/Hamqth.php | 55 ++++++++++++++++++++++---------- application/libraries/Qrz.php | 42 +++++++++++++++++------- 2 files changed, 68 insertions(+), 29 deletions(-) diff --git a/application/libraries/Hamqth.php b/application/libraries/Hamqth.php index 137fe5a8c..f785a755e 100644 --- a/application/libraries/Hamqth.php +++ b/application/libraries/Hamqth.php @@ -79,24 +79,45 @@ class Hamqth { $xml = simplexml_load_string($xml); if (!empty($xml->session->error)) return $data['error'] = $xml->session->error; - // Return Required Fields - $data['callsign'] = (string)$xml->search->callsign; - $data['name'] = (string)$xml->search->nick; - $data['gridsquare'] = (string)$xml->search->grid; - $data['city'] = (string)$xml->search->adr_city; - $data['lat'] = (string)$xml->search->latitude; - $data['long'] = (string)$xml->search->longitude; - $data['dxcc'] = (string)$xml->search->adif; - $data['iota'] = (string)$xml->search->iota; - $data['image'] = (string)$xml->search->picture; - $data['state'] = (string)$xml->search->us_state; - $data['error'] = (string)$xml->session->error; + // only return certain data of a callsign which does not contain a pre- or suffix (see https://github.com/wavelog/wavelog/issues/452) + if (strpos($callsign, '/') == false) { + + // Return Required Fields + $data['callsign'] = (string)$xml->search->callsign; + $data['name'] = (string)$xml->search->nick; + $data['gridsquare'] = (string)$xml->search->grid; + $data['city'] = (string)$xml->search->adr_city; + $data['lat'] = (string)$xml->search->latitude; + $data['long'] = (string)$xml->search->longitude; + $data['dxcc'] = (string)$xml->search->adif; + $data['iota'] = (string)$xml->search->iota; + $data['image'] = (string)$xml->search->picture; + $data['state'] = (string)$xml->search->us_state; + $data['error'] = (string)$xml->session->error; - if ($xml->search->country == "United States") { - $data['us_county'] = (string)$xml->search->us_county; - } else { - $data['us_county'] = null; - } + if ($xml->search->country == "United States") { + $data['us_county'] = (string)$xml->search->us_county; + } else { + $data['us_county'] = null; + } + + } else { + + $data['callsign'] = (string)$xml->search->callsign; + $data['name'] = (string)$xml->search->nick; + $data['gridsquare'] = ''; + $data['city'] = ''; + $data['lat'] = ''; + $data['long'] = ''; + $data['dxcc'] = ''; + $data['iota'] = ''; + $data['image'] = (string)$xml->search->picture; + $data['state'] = ''; + $data['error'] = (string)$xml->session->error; + + $data['us_county'] = ''; + + } } finally { return $data; } diff --git a/application/libraries/Qrz.php b/application/libraries/Qrz.php index 5ff3c9ed9..249e5149c 100755 --- a/application/libraries/Qrz.php +++ b/application/libraries/Qrz.php @@ -93,21 +93,39 @@ class Qrz { // Sanitise gridsquare to only allow up to 8 characters $unclean_gridsquare = (string)$xml->Callsign->grid; // Get the gridsquare from QRZ convert to string $clean_gridsquare = strlen($unclean_gridsquare) > 8 ? substr($unclean_gridsquare,0,8) : $unclean_gridsquare; // Trim gridsquare to 8 characters max - $data['gridsquare'] = $clean_gridsquare; - $data['city'] = (string)$xml->Callsign->addr2; - $data['lat'] = (string)$xml->Callsign->lat; - $data['long'] = (string)$xml->Callsign->lon; - $data['dxcc'] = (string)$xml->Callsign->dxcc; - $data['state'] = (string)$xml->Callsign->state; - $data['iota'] = (string)$xml->Callsign->iota; - $data['qslmgr'] = (string)$xml->Callsign->qslmgr; - $data['image'] = (string)$xml->Callsign->image; + // only return certain data of a callsign which does not contain a pre- or suffix (see https://github.com/wavelog/wavelog/issues/452) + if (strpos($callsign, '/') == false) { + + $data['gridsquare'] = $clean_gridsquare; + $data['city'] = (string)$xml->Callsign->addr2; + $data['lat'] = (string)$xml->Callsign->lat; + $data['long'] = (string)$xml->Callsign->lon; + $data['dxcc'] = (string)$xml->Callsign->dxcc; + $data['state'] = (string)$xml->Callsign->state; + $data['iota'] = (string)$xml->Callsign->iota; + $data['qslmgr'] = (string)$xml->Callsign->qslmgr; + $data['image'] = (string)$xml->Callsign->image; + + if ($xml->Callsign->country == "United States") { + $data['us_county'] = (string)$xml->Callsign->county; + } else { + $data['us_county'] = null; + } - if ($xml->Callsign->country == "United States") { - $data['us_county'] = (string)$xml->Callsign->county; } else { - $data['us_county'] = null; + + $data['gridsquare'] = ''; + $data['city'] = ''; + $data['lat'] = ''; + $data['long'] = ''; + $data['dxcc'] = ''; + $data['state'] = ''; + $data['iota'] = ''; + $data['qslmgr'] = (string)$xml->Callsign->qslmgr; + $data['image'] = (string)$xml->Callsign->image; + $data['us_county'] = ''; + } } finally {