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 .= ' FROM get_addressdata('.$iPlaceID.','.$sHousenumber.')';
$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)
$sPrevResult = '';
foreach ($this->aAddressLines as $aLine) {
- if ($aLine['isaddress'] == 't' && $sPrevResult != $aLine['localname']) {
+ if ($aLine['isaddress'] && $sPrevResult != $aLine['localname']) {
$sPrevResult = $aLine['localname'];
$aParts[] = $sPrevResult;
}
$bFallback = true;
}
- $sName = false;
- if (isset($aLine['localname']) && $aLine['localname']) {
+ $sName = null;
+ if (isset($aLine['localname']) && $aLine['localname']!=='') {
$sName = $aLine['localname'];
- } elseif (isset($aLine['housenumber']) && $aLine['housenumber']) {
+ } elseif (isset($aLine['housenumber']) && $aLine['housenumber']!=='') {
$sName = $aLine['housenumber'];
}
- if ($sName) {
+ if (isset($sName)) {
$sTypeLabel = strtolower(isset($aTypeLabel['simplelabel']) ? $aTypeLabel['simplelabel'] : $aTypeLabel['label']);
$sTypeLabel = str_replace(' ', '_', $sTypeLabel);
if (!isset($aAddress[$sTypeLabel])
}
}
}
+
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();
- foreach ($this->aAddressLines as $aLine) {
+ foreach (array_reverse($this->aAddressLines) as $aLine) {
if (self::isAddress($aLine)
&& isset($aLine['admin_level'])
&& $aLine['admin_level'] < 15