X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/7e0fdf5928a0c726b22ad969267a3b9e0402c823..f42e40712e1a20d9e6ca1e497123a0c16c83be82:/lib/AddressDetails.php diff --git a/lib/AddressDetails.php b/lib/AddressDetails.php index badf868d..783a0fda 100644 --- a/lib/AddressDetails.php +++ b/lib/AddressDetails.php @@ -14,24 +14,24 @@ class AddressDetails public function __construct(&$oDB, $iPlaceID, $sHousenumber, $mLangPref) { if (is_array($mLangPref)) { - $mLangPref = 'ARRAY['.join(',', array_map('getDBQuoted', $mLangPref)).']'; + $mLangPref = $oDB->getArraySQL($oDB->getDBQuotedList($mLangPref)); } - if (!$sHousenumber) { + if (!isset($sHousenumber)) { $sHousenumber = -1; } $sSQL = 'SELECT *,'; - $sSQL .= ' get_name_by_language(name,'.$mLangPref.') as localname'; + $sSQL .= ' get_name_by_language(name,'.$mLangPref.') as localname'; $sSQL .= ' FROM get_addressdata('.$iPlaceID.','.$sHousenumber.')'; - $sSQL .= ' ORDER BY rank_address desc,isaddress DESC'; + $sSQL .= ' ORDER BY rank_address DESC, isaddress DESC'; - $this->aAddressLines = chksql($oDB->getAll($sSQL)); + $this->aAddressLines = $oDB->getAll($sSQL); } private static function isAddress($aLine) { - return $aLine['isaddress'] == 't' || $aLine['type'] == 'country_code'; + return $aLine['isaddress'] || $aLine['type'] == 'country_code'; } public function getAddressDetails($bAll = false) @@ -40,7 +40,7 @@ class AddressDetails return $this->aAddressLines; } - return array_filter($this->aAddressLines, 'AddressDetails::isAddress'); + return array_filter($this->aAddressLines, array(__CLASS__, 'isAddress')); } public function getLocaleAddress() @@ -49,7 +49,7 @@ class AddressDetails $sPrevResult = ''; foreach ($this->aAddressLines as $aLine) { - if ($aLine['isaddress'] == 't' && $sPrevResult != $aLine['localname']) { + if ($aLine['isaddress'] && $sPrevResult != $aLine['localname']) { $sPrevResult = $aLine['localname']; $aParts[] = $sPrevResult; } @@ -103,7 +103,7 @@ class AddressDetails public function getAdminLevels() { $aAddress = array(); - foreach ($this->aAddressLines as $aLine) { + foreach (array_reverse($this->aAddressLines) as $aLine) { if (self::isAddress($aLine) && isset($aLine['admin_level']) && $aLine['admin_level'] < 15