From fdc40d516986f55828579f4a3db31731b8c67728 Mon Sep 17 00:00:00 2001 From: Sarah Hoffmann Date: Wed, 1 Apr 2020 10:27:17 +0200 Subject: [PATCH] factor out geocodejson address generation Unifies the two implementations currently used for search and address. --- lib/AddressDetails.php | 22 ++++++++++++++++++++++ lib/template/address-geocodejson.php | 21 +++------------------ lib/template/search-geocodejson.php | 21 +++------------------ 3 files changed, 28 insertions(+), 36 deletions(-) diff --git a/lib/AddressDetails.php b/lib/AddressDetails.php index 61823b4c..3575d155 100644 --- a/lib/AddressDetails.php +++ b/lib/AddressDetails.php @@ -101,6 +101,28 @@ class AddressDetails return $aAddress; } + public function addGeocodeJsonAddressParts(&$aJson) + { + $aFieldMappings = array( + 'house_number' => 'housenumber', + 'road' => 'street', + 'locality' => 'locality', + 'postcode' => 'postcode', + 'city' => 'city', + 'district' => 'district', + 'county' => 'county', + 'state' => 'state', + 'country' => 'country' + ); + + $aAddrNames = $this->getAddressNames(); + foreach ($aFieldMappings as $sFrom => $sTo) { + if (isset($aAddrNames[$sFrom])) { + $aJson[$sTo] = $aAddrNames[$sFrom]; + } + } + } + public function getAdminLevels() { $aAddress = array(); diff --git a/lib/template/address-geocodejson.php b/lib/template/address-geocodejson.php index 032dcf43..6ccbeb57 100644 --- a/lib/template/address-geocodejson.php +++ b/lib/template/address-geocodejson.php @@ -33,24 +33,9 @@ if (empty($aPlace)) { $aFilteredPlaces['properties']['geocoding']['name'] = $aPlace['placename']; if (isset($aPlace['address'])) { - $aFieldMappings = array( - 'house_number' => 'housenumber', - 'road' => 'street', - 'locality' => 'locality', - 'postcode' => 'postcode', - 'city' => 'city', - 'district' => 'district', - 'county' => 'county', - 'state' => 'state', - 'country' => 'country' - ); - - $aAddressNames = $aPlace['address']->getAddressNames(); - foreach ($aFieldMappings as $sFrom => $sTo) { - if (isset($aAddressNames[$sFrom])) { - $aFilteredPlaces['properties']['geocoding'][$sTo] = $aAddressNames[$sFrom]; - } - } + $aPlace['address']->addGeocodeJsonAddressParts( + $aFilteredPlaces['properties']['geocoding'] + ); $aFilteredPlaces['properties']['geocoding']['admin'] = $aPlace['address']->getAdminLevels(); diff --git a/lib/template/search-geocodejson.php b/lib/template/search-geocodejson.php index 29bfe0bf..c046b4af 100644 --- a/lib/template/search-geocodejson.php +++ b/lib/template/search-geocodejson.php @@ -23,24 +23,9 @@ foreach ($aSearchResults as $iResNum => $aPointDetails) { $aPlace['properties']['geocoding']['name'] = $aPointDetails['placename']; if (isset($aPointDetails['address'])) { - $aFieldMappings = array( - 'house_number' => 'housenumber', - 'road' => 'street', - 'locality' => 'locality', - 'postcode' => 'postcode', - 'city' => 'city', - 'district' => 'district', - 'county' => 'county', - 'state' => 'state', - 'country' => 'country' - ); - - $aAddrNames = $aPointDetails['address']->getAddressNames(); - foreach ($aFieldMappings as $sFrom => $sTo) { - if (isset($aAddrNames[$sFrom])) { - $aPlace['properties']['geocoding'][$sTo] = $aAddrNames[$sFrom]; - } - } + $aPointDetails['address']->addGeocodeJsonAddressParts( + $aPlace['properties']['geocoding'] + ); $aPlace['properties']['geocoding']['admin'] = $aPointDetails['address']->getAdminLevels(); -- 2.39.5