always use brackets on if statements

This adds bracket around all one-line if statements that did
not have them yet.
This commit is contained in:
Sarah Hoffmann
2021-07-10 14:59:38 +02:00
parent 500c61685b
commit 27af9b102c
26 changed files with 377 additions and 144 deletions

View File

@@ -39,7 +39,9 @@ class DB
$conn->exec("SET DateStyle TO 'sql,european'"); $conn->exec("SET DateStyle TO 'sql,european'");
$conn->exec("SET client_encoding TO 'utf-8'"); $conn->exec("SET client_encoding TO 'utf-8'");
$iMaxExecution = ini_get('max_execution_time'); $iMaxExecution = ini_get('max_execution_time');
if ($iMaxExecution > 0) $conn->setAttribute(\PDO::ATTR_TIMEOUT, $iMaxExecution); // seconds if ($iMaxExecution > 0) {
$conn->setAttribute(\PDO::ATTR_TIMEOUT, $iMaxExecution); // seconds
}
$this->connection = $conn; $this->connection = $conn;
return true; return true;
@@ -95,7 +97,9 @@ class DB
try { try {
$stmt = $this->getQueryStatement($sSQL, $aInputVars, $sErrMessage); $stmt = $this->getQueryStatement($sSQL, $aInputVars, $sErrMessage);
$row = $stmt->fetch(\PDO::FETCH_NUM); $row = $stmt->fetch(\PDO::FETCH_NUM);
if ($row === false) return false; if ($row === false) {
return false;
}
} catch (\PDOException $e) { } catch (\PDOException $e) {
throw new \Nominatim\DatabaseError($sErrMessage, 500, null, $e, $sSQL); throw new \Nominatim\DatabaseError($sErrMessage, 500, null, $e, $sSQL);
} }
@@ -306,9 +310,13 @@ class DB
if (preg_match('/^pgsql:(.+)$/', $sDSN, $aMatches)) { if (preg_match('/^pgsql:(.+)$/', $sDSN, $aMatches)) {
foreach (explode(';', $aMatches[1]) as $sKeyVal) { foreach (explode(';', $aMatches[1]) as $sKeyVal) {
list($sKey, $sVal) = explode('=', $sKeyVal, 2); list($sKey, $sVal) = explode('=', $sKeyVal, 2);
if ($sKey == 'host') $sKey = 'hostspec'; if ($sKey == 'host') {
if ($sKey == 'dbname') $sKey = 'database'; $sKey = 'hostspec';
if ($sKey == 'user') $sKey = 'username'; } elseif ($sKey == 'dbname') {
$sKey = 'database';
} elseif ($sKey == 'user') {
$sKey = 'username';
}
$aInfo[$sKey] = $sVal; $aInfo[$sKey] = $sVal;
} }
} }

View File

@@ -70,7 +70,9 @@ class Geocode
$aParams['exclude_place_ids'] = implode(',', $this->aExcludePlaceIDs); $aParams['exclude_place_ids'] = implode(',', $this->aExcludePlaceIDs);
} }
if ($this->bBoundedSearch) $aParams['bounded'] = '1'; if ($this->bBoundedSearch) {
$aParams['bounded'] = '1';
}
if ($this->aCountryCodes) { if ($this->aCountryCodes) {
$aParams['countrycodes'] = implode(',', $this->aCountryCodes); $aParams['countrycodes'] = implode(',', $this->aCountryCodes);
@@ -85,8 +87,11 @@ class Geocode
public function setLimit($iLimit = 10) public function setLimit($iLimit = 10)
{ {
if ($iLimit > 50) $iLimit = 50; if ($iLimit > 50) {
if ($iLimit < 1) $iLimit = 1; $iLimit = 50;
} elseif ($iLimit < 1) {
$iLimit = 1;
}
$this->iFinalLimit = $iLimit; $this->iFinalLimit = $iLimit;
$this->iLimit = $iLimit + min($iLimit, 10); $this->iLimit = $iLimit + min($iLimit, 10);
@@ -181,18 +186,24 @@ class Geocode
if ($sExcluded) { if ($sExcluded) {
foreach ($sExcluded as $iExcludedPlaceID) { foreach ($sExcluded as $iExcludedPlaceID) {
$iExcludedPlaceID = (int)$iExcludedPlaceID; $iExcludedPlaceID = (int)$iExcludedPlaceID;
if ($iExcludedPlaceID) if ($iExcludedPlaceID) {
$aExcludePlaceIDs[$iExcludedPlaceID] = $iExcludedPlaceID; $aExcludePlaceIDs[$iExcludedPlaceID] = $iExcludedPlaceID;
}
} }
if (isset($aExcludePlaceIDs)) if (isset($aExcludePlaceIDs)) {
$this->aExcludePlaceIDs = $aExcludePlaceIDs; $this->aExcludePlaceIDs = $aExcludePlaceIDs;
}
} }
// Only certain ranks of feature // Only certain ranks of feature
$sFeatureType = $oParams->getString('featureType'); $sFeatureType = $oParams->getString('featureType');
if (!$sFeatureType) $sFeatureType = $oParams->getString('featuretype'); if (!$sFeatureType) {
if ($sFeatureType) $this->setFeatureType($sFeatureType); $sFeatureType = $oParams->getString('featuretype');
}
if ($sFeatureType) {
$this->setFeatureType($sFeatureType);
}
// Country code list // Country code list
$sCountries = $oParams->getStringList('countrycodes'); $sCountries = $oParams->getStringList('countrycodes');
@@ -202,8 +213,9 @@ class Geocode
$aCountries[] = strtolower($sCountryCode); $aCountries[] = strtolower($sCountryCode);
} }
} }
if (isset($aCountries)) if (isset($aCountries)) {
$this->aCountryCodes = $aCountries; $this->aCountryCodes = $aCountries;
}
} }
$aViewbox = $oParams->getStringList('viewboxlbrt'); $aViewbox = $oParams->getStringList('viewboxlbrt');
@@ -255,13 +267,17 @@ class Geocode
public function loadStructuredAddressElement($sValue, $sKey, $iNewMinAddressRank, $iNewMaxAddressRank, $aItemListValues) public function loadStructuredAddressElement($sValue, $sKey, $iNewMinAddressRank, $iNewMaxAddressRank, $aItemListValues)
{ {
$sValue = trim($sValue); $sValue = trim($sValue);
if (!$sValue) return false; if (!$sValue) {
return false;
}
$this->aStructuredQuery[$sKey] = $sValue; $this->aStructuredQuery[$sKey] = $sValue;
if ($this->iMinAddressRank == 0 && $this->iMaxAddressRank == 30) { if ($this->iMinAddressRank == 0 && $this->iMaxAddressRank == 30) {
$this->iMinAddressRank = $iNewMinAddressRank; $this->iMinAddressRank = $iNewMinAddressRank;
$this->iMaxAddressRank = $iNewMaxAddressRank; $this->iMaxAddressRank = $iNewMaxAddressRank;
} }
if ($aItemListValues) $this->aAddressRankList = array_merge($this->aAddressRankList, $aItemListValues); if ($aItemListValues) {
$this->aAddressRankList = array_merge($this->aAddressRankList, $aItemListValues);
}
return true; return true;
} }
@@ -295,11 +311,11 @@ class Geocode
public function fallbackStructuredQuery() public function fallbackStructuredQuery()
{ {
if (!$this->aStructuredQuery) return false;
$aParams = $this->aStructuredQuery; $aParams = $this->aStructuredQuery;
if (count($aParams) == 1) return false; if (!$aParams || count($aParams) == 1) {
return false;
}
$aOrderToFallback = array('postalcode', 'street', 'city', 'county', 'state'); $aOrderToFallback = array('postalcode', 'street', 'city', 'county', 'state');
@@ -395,8 +411,11 @@ class Geocode
$aSearchHash = array(); $aSearchHash = array();
foreach ($aNewPhraseSearches as $iSearch => $aSearch) { foreach ($aNewPhraseSearches as $iSearch => $aSearch) {
$sHash = serialize($aSearch); $sHash = serialize($aSearch);
if (isset($aSearchHash[$sHash])) unset($aNewPhraseSearches[$iSearch]); if (isset($aSearchHash[$sHash])) {
else $aSearchHash[$sHash] = 1; unset($aNewPhraseSearches[$iSearch]);
} else {
$aSearchHash[$sHash] = 1;
}
} }
$aNewPhraseSearches = array_slice($aNewPhraseSearches, 0, 50); $aNewPhraseSearches = array_slice($aNewPhraseSearches, 0, 50);
@@ -420,7 +439,9 @@ class Geocode
foreach ($aGroupedSearches as $aNewSearches) { foreach ($aGroupedSearches as $aNewSearches) {
$iSearchCount += count($aNewSearches); $iSearchCount += count($aNewSearches);
$aSearches = array_merge($aSearches, $aNewSearches); $aSearches = array_merge($aSearches, $aNewSearches);
if ($iSearchCount > 50) break; if ($iSearchCount > 50) {
break;
}
} }
} }
@@ -477,7 +498,9 @@ class Geocode
public function lookup() public function lookup()
{ {
Debug::newFunction('Geocode::lookup'); Debug::newFunction('Geocode::lookup');
if (!$this->sQuery && !$this->aStructuredQuery) return array(); if (!$this->sQuery && !$this->aStructuredQuery) {
return array();
}
Debug::printDebugArray('Geocode', $this); Debug::printDebugArray('Geocode', $this);
@@ -635,7 +658,9 @@ class Geocode
$aGroupedSearches = array(); $aGroupedSearches = array();
foreach ($aSearches as $aSearch) { foreach ($aSearches as $aSearch) {
if ($aSearch->getRank() < $this->iMaxRank) { if ($aSearch->getRank() < $this->iMaxRank) {
if (!isset($aGroupedSearches[$aSearch->getRank()])) $aGroupedSearches[$aSearch->getRank()] = array(); if (!isset($aGroupedSearches[$aSearch->getRank()])) {
$aGroupedSearches[$aSearch->getRank()] = array();
}
$aGroupedSearches[$aSearch->getRank()][] = $aSearch; $aGroupedSearches[$aSearch->getRank()][] = $aSearch;
} }
} }
@@ -649,7 +674,9 @@ class Geocode
$sHash = serialize($aSearch); $sHash = serialize($aSearch);
if (isset($aSearchHash[$sHash])) { if (isset($aSearchHash[$sHash])) {
unset($aGroupedSearches[$iGroup][$iSearch]); unset($aGroupedSearches[$iGroup][$iSearch]);
if (empty($aGroupedSearches[$iGroup])) unset($aGroupedSearches[$iGroup]); if (empty($aGroupedSearches[$iGroup])) {
unset($aGroupedSearches[$iGroup]);
}
} else { } else {
$aSearchHash[$sHash] = 1; $aSearchHash[$sHash] = 1;
} }
@@ -693,7 +720,9 @@ class Geocode
} }
} }
if ($iQueryLoop > 20) break; if ($iQueryLoop > 20) {
break;
}
} }
if (!empty($aResults)) { if (!empty($aResults)) {
@@ -768,9 +797,9 @@ class Geocode
$aResults = $tempIDs; $aResults = $tempIDs;
} }
if (!empty($aResults)) break; if (!empty($aResults) || $iGroupLoop > 4 || $iQueryLoop > 30) {
if ($iGroupLoop > 4) break; break;
if ($iQueryLoop > 30) break; }
} }
} else { } else {
// Just interpret as a reverse geocode // Just interpret as a reverse geocode
@@ -810,7 +839,9 @@ class Geocode
$aRecheckWords = preg_split('/\b[\s,\\-]*/u', $sQuery); $aRecheckWords = preg_split('/\b[\s,\\-]*/u', $sQuery);
foreach ($aRecheckWords as $i => $sWord) { foreach ($aRecheckWords as $i => $sWord) {
if (!preg_match('/[\pL\pN]/', $sWord)) unset($aRecheckWords[$i]); if (!preg_match('/[\pL\pN]/', $sWord)) {
unset($aRecheckWords[$i]);
}
} }
Debug::printVar('Recheck words', $aRecheckWords); Debug::printVar('Recheck words', $aRecheckWords);
@@ -870,7 +901,9 @@ class Geocode
foreach ($aRecheckWords as $i => $sWord) { foreach ($aRecheckWords as $i => $sWord) {
if (stripos($sAddress, $sWord)!==false) { if (stripos($sAddress, $sWord)!==false) {
$iCountWords++; $iCountWords++;
if (preg_match('/(^|,)\s*'.preg_quote($sWord, '/').'\s*(,|$)/', $sAddress)) $iCountWords += 0.1; if (preg_match('/(^|,)\s*'.preg_quote($sWord, '/').'\s*(,|$)/', $sAddress)) {
$iCountWords += 0.1;
}
} }
} }
@@ -898,7 +931,9 @@ class Geocode
} }
// Absolute limit on number of results // Absolute limit on number of results
if (count($aSearchResults) >= $this->iFinalLimit) break; if (count($aSearchResults) >= $this->iFinalLimit) {
break;
}
} }
Debug::printVar('Post-filter results', $aSearchResults); Debug::printVar('Post-filter results', $aSearchResults);

View File

@@ -94,7 +94,9 @@ class ParameterParser
if (preg_match_all('/(([a-z]{1,8})([-_][a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i', $sLangString, $aLanguagesParse, PREG_SET_ORDER)) { if (preg_match_all('/(([a-z]{1,8})([-_][a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i', $sLangString, $aLanguagesParse, PREG_SET_ORDER)) {
foreach ($aLanguagesParse as $iLang => $aLanguage) { foreach ($aLanguagesParse as $iLang => $aLanguage) {
$aLanguages[$aLanguage[1]] = isset($aLanguage[5])?(float)$aLanguage[5]:1 - ($iLang/100); $aLanguages[$aLanguage[1]] = isset($aLanguage[5])?(float)$aLanguage[5]:1 - ($iLang/100);
if (!isset($aLanguages[$aLanguage[2]])) $aLanguages[$aLanguage[2]] = $aLanguages[$aLanguage[1]]/10; if (!isset($aLanguages[$aLanguage[2]])) {
$aLanguages[$aLanguage[2]] = $aLanguages[$aLanguage[1]]/10;
}
} }
arsort($aLanguages); arsort($aLanguages);
} }

View File

@@ -89,20 +89,36 @@ class PlaceLookup
{ {
$aParams = array(); $aParams = array();
if ($this->bAddressDetails) $aParams['addressdetails'] = '1'; if ($this->bAddressDetails) {
if ($this->bExtraTags) $aParams['extratags'] = '1'; $aParams['addressdetails'] = '1';
if ($this->bNameDetails) $aParams['namedetails'] = '1'; }
if ($this->bExtraTags) {
$aParams['extratags'] = '1';
}
if ($this->bNameDetails) {
$aParams['namedetails'] = '1';
}
if ($this->bIncludePolygonAsText) $aParams['polygon_text'] = '1'; if ($this->bIncludePolygonAsText) {
if ($this->bIncludePolygonAsGeoJSON) $aParams['polygon_geojson'] = '1'; $aParams['polygon_text'] = '1';
if ($this->bIncludePolygonAsKML) $aParams['polygon_kml'] = '1'; }
if ($this->bIncludePolygonAsSVG) $aParams['polygon_svg'] = '1'; if ($this->bIncludePolygonAsGeoJSON) {
$aParams['polygon_geojson'] = '1';
}
if ($this->bIncludePolygonAsKML) {
$aParams['polygon_kml'] = '1';
}
if ($this->bIncludePolygonAsSVG) {
$aParams['polygon_svg'] = '1';
}
if ($this->fPolygonSimplificationThreshold > 0.0) { if ($this->fPolygonSimplificationThreshold > 0.0) {
$aParams['polygon_threshold'] = $this->fPolygonSimplificationThreshold; $aParams['polygon_threshold'] = $this->fPolygonSimplificationThreshold;
} }
if (!$this->bDeDupe) $aParams['dedupe'] = '0'; if (!$this->bDeDupe) {
$aParams['dedupe'] = '0';
}
return $aParams; return $aParams;
} }
@@ -147,8 +163,9 @@ class PlaceLookup
private function langAddressSql($sHousenumber) private function langAddressSql($sHousenumber)
{ {
if ($this->bAddressDetails) if ($this->bAddressDetails) {
return ''; // langaddress will be computed from address details return ''; // langaddress will be computed from address details
}
return 'get_address_by_language(place_id,'.$sHousenumber.','.$this->aLangPrefOrderSql.') AS langaddress,'; return 'get_address_by_language(place_id,'.$sHousenumber.','.$this->aLangPrefOrderSql.') AS langaddress,';
} }
@@ -234,12 +251,20 @@ class PlaceLookup
$sSQL .= ' housenumber,'; $sSQL .= ' housenumber,';
$sSQL .= ' country_code, '; $sSQL .= ' country_code, ';
$sSQL .= ' importance, '; $sSQL .= ' importance, ';
if (!$this->bDeDupe) $sSQL .= 'place_id,'; if (!$this->bDeDupe) {
if (!$this->bAddressDetails) $sSQL .= 'langaddress, '; $sSQL .= 'place_id,';
}
if (!$this->bAddressDetails) {
$sSQL .= 'langaddress, ';
}
$sSQL .= ' placename, '; $sSQL .= ' placename, ';
$sSQL .= ' ref, '; $sSQL .= ' ref, ';
if ($this->bExtraTags) $sSQL .= 'extratags, '; if ($this->bExtraTags) {
if ($this->bNameDetails) $sSQL .= 'name, '; $sSQL .= 'extratags, ';
}
if ($this->bNameDetails) {
$sSQL .= 'name, ';
}
$sSQL .= ' extra_place '; $sSQL .= ' extra_place ';
$aSubSelects[] = $sSQL; $aSubSelects[] = $sSQL;
@@ -260,8 +285,12 @@ class PlaceLookup
$sSQL .= $this->langAddressSql('-1'); $sSQL .= $this->langAddressSql('-1');
$sSQL .= ' postcode as placename,'; $sSQL .= ' postcode as placename,';
$sSQL .= ' postcode as ref,'; $sSQL .= ' postcode as ref,';
if ($this->bExtraTags) $sSQL .= 'null::text AS extra,'; if ($this->bExtraTags) {
if ($this->bNameDetails) $sSQL .= 'null::text AS names,'; $sSQL .= 'null::text AS extra,';
}
if ($this->bNameDetails) {
$sSQL .= 'null::text AS names,';
}
$sSQL .= ' ST_x(geometry) AS lon, ST_y(geometry) AS lat,'; $sSQL .= ' ST_x(geometry) AS lon, ST_y(geometry) AS lat,';
$sSQL .= ' (0.75-(rank_search::float/40)) AS importance, '; $sSQL .= ' (0.75-(rank_search::float/40)) AS importance, ';
$sSQL .= $this->addressImportanceSql('geometry', 'lp.parent_place_id'); $sSQL .= $this->addressImportanceSql('geometry', 'lp.parent_place_id');
@@ -298,8 +327,12 @@ class PlaceLookup
$sSQL .= $this->langAddressSql('housenumber_for_place'); $sSQL .= $this->langAddressSql('housenumber_for_place');
$sSQL .= ' null::text AS placename, '; $sSQL .= ' null::text AS placename, ';
$sSQL .= ' null::text AS ref, '; $sSQL .= ' null::text AS ref, ';
if ($this->bExtraTags) $sSQL .= 'null::text AS extra,'; if ($this->bExtraTags) {
if ($this->bNameDetails) $sSQL .= 'null::text AS names,'; $sSQL .= 'null::text AS extra,';
}
if ($this->bNameDetails) {
$sSQL .= 'null::text AS names,';
}
$sSQL .= ' st_x(centroid) AS lon, '; $sSQL .= ' st_x(centroid) AS lon, ';
$sSQL .= ' st_y(centroid) AS lat,'; $sSQL .= ' st_y(centroid) AS lat,';
$sSQL .= ' -1.15 AS importance, '; $sSQL .= ' -1.15 AS importance, ';
@@ -344,8 +377,12 @@ class PlaceLookup
$sSQL .= $this->langAddressSql('housenumber_for_place'); $sSQL .= $this->langAddressSql('housenumber_for_place');
$sSQL .= ' null::text AS placename, '; $sSQL .= ' null::text AS placename, ';
$sSQL .= ' null::text AS ref, '; $sSQL .= ' null::text AS ref, ';
if ($this->bExtraTags) $sSQL .= 'null::text AS extra, '; if ($this->bExtraTags) {
if ($this->bNameDetails) $sSQL .= 'null::text AS names, '; $sSQL .= 'null::text AS extra, ';
}
if ($this->bNameDetails) {
$sSQL .= 'null::text AS names, ';
}
$sSQL .= ' st_x(centroid) AS lon, '; $sSQL .= ' st_x(centroid) AS lon, ';
$sSQL .= ' st_y(centroid) AS lat, '; $sSQL .= ' st_y(centroid) AS lat, ';
// slightly smaller than the importance for normal houses // slightly smaller than the importance for normal houses
@@ -448,7 +485,9 @@ class PlaceLookup
{ {
$aOutlineResult = array(); $aOutlineResult = array();
if (!$iPlaceID) return $aOutlineResult; if (!$iPlaceID) {
return $aOutlineResult;
}
// Get the bounding box and outline polygon // Get the bounding box and outline polygon
$sSQL = 'select place_id,0 as numfeatures,st_area(geometry) as area,'; $sSQL = 'select place_id,0 as numfeatures,st_area(geometry) as area,';
@@ -460,10 +499,18 @@ class PlaceLookup
} }
$sSQL .= ' ST_YMin(geometry) as minlat,ST_YMax(geometry) as maxlat,'; $sSQL .= ' ST_YMin(geometry) as minlat,ST_YMax(geometry) as maxlat,';
$sSQL .= ' ST_XMin(geometry) as minlon,ST_XMax(geometry) as maxlon'; $sSQL .= ' ST_XMin(geometry) as minlon,ST_XMax(geometry) as maxlon';
if ($this->bIncludePolygonAsGeoJSON) $sSQL .= ',ST_AsGeoJSON(geometry) as asgeojson'; if ($this->bIncludePolygonAsGeoJSON) {
if ($this->bIncludePolygonAsKML) $sSQL .= ',ST_AsKML(geometry) as askml'; $sSQL .= ',ST_AsGeoJSON(geometry) as asgeojson';
if ($this->bIncludePolygonAsSVG) $sSQL .= ',ST_AsSVG(geometry) as assvg'; }
if ($this->bIncludePolygonAsText) $sSQL .= ',ST_AsText(geometry) as astext'; if ($this->bIncludePolygonAsKML) {
$sSQL .= ',ST_AsKML(geometry) as askml';
}
if ($this->bIncludePolygonAsSVG) {
$sSQL .= ',ST_AsSVG(geometry) as assvg';
}
if ($this->bIncludePolygonAsText) {
$sSQL .= ',ST_AsText(geometry) as astext';
}
if ($fLonReverse != null && $fLatReverse != null) { if ($fLonReverse != null && $fLatReverse != null) {
$sFrom = ' from (SELECT * , CASE WHEN (class = \'highway\') AND (ST_GeometryType(geometry) = \'ST_LineString\') THEN '; $sFrom = ' from (SELECT * , CASE WHEN (class = \'highway\') AND (ST_GeometryType(geometry) = \'ST_LineString\') THEN ';
$sFrom .=' ST_ClosestPoint(geometry, ST_SetSRID(ST_Point('.$fLatReverse.','.$fLonReverse.'),4326))'; $sFrom .=' ST_ClosestPoint(geometry, ST_SetSRID(ST_Point('.$fLatReverse.','.$fLonReverse.'),4326))';
@@ -486,10 +533,18 @@ class PlaceLookup
$aOutlineResult['lon'] = $aPointPolygon['centrelon']; $aOutlineResult['lon'] = $aPointPolygon['centrelon'];
} }
if ($this->bIncludePolygonAsGeoJSON) $aOutlineResult['asgeojson'] = $aPointPolygon['asgeojson']; if ($this->bIncludePolygonAsGeoJSON) {
if ($this->bIncludePolygonAsKML) $aOutlineResult['askml'] = $aPointPolygon['askml']; $aOutlineResult['asgeojson'] = $aPointPolygon['asgeojson'];
if ($this->bIncludePolygonAsSVG) $aOutlineResult['assvg'] = $aPointPolygon['assvg']; }
if ($this->bIncludePolygonAsText) $aOutlineResult['astext'] = $aPointPolygon['astext']; if ($this->bIncludePolygonAsKML) {
$aOutlineResult['askml'] = $aPointPolygon['askml'];
}
if ($this->bIncludePolygonAsSVG) {
$aOutlineResult['assvg'] = $aPointPolygon['assvg'];
}
if ($this->bIncludePolygonAsText) {
$aOutlineResult['astext'] = $aPointPolygon['astext'];
}
if (abs($aPointPolygon['minlat'] - $aPointPolygon['maxlat']) < 0.0000001) { if (abs($aPointPolygon['minlat'] - $aPointPolygon['maxlat']) < 0.0000001) {
$aPointPolygon['minlat'] = $aPointPolygon['minlat'] - $fRadius; $aPointPolygon['minlat'] = $aPointPolygon['minlat'] - $fRadius;

View File

@@ -165,9 +165,13 @@ class ReverseGeocode
{ {
Debug::newFunction('lookupPolygon'); Debug::newFunction('lookupPolygon');
// polygon search begins at suburb-level // polygon search begins at suburb-level
if ($iMaxRank > 25) $iMaxRank = 25; if ($iMaxRank > 25) {
$iMaxRank = 25;
}
// no polygon search over country-level // no polygon search over country-level
if ($iMaxRank < 5) $iMaxRank = 5; if ($iMaxRank < 5) {
$iMaxRank = 5;
}
// search for polygon // search for polygon
$sSQL = 'SELECT place_id, parent_place_id, rank_address, rank_search FROM'; $sSQL = 'SELECT place_id, parent_place_id, rank_address, rank_search FROM';
$sSQL .= '(select place_id, parent_place_id, rank_address, rank_search, country_code, geometry'; $sSQL .= '(select place_id, parent_place_id, rank_address, rank_search, country_code, geometry';

View File

@@ -33,7 +33,9 @@ class Shell
public function addEnvPair($sKey, $sVal) public function addEnvPair($sKey, $sVal)
{ {
if (isset($sKey) && $sKey && isset($sVal)) { if (isset($sKey) && $sKey && isset($sVal)) {
if (!isset($this->aEnv)) $this->aEnv = $_ENV; if (!isset($this->aEnv)) {
$this->aEnv = $_ENV;
}
$this->aEnv = array_merge($this->aEnv, array($sKey => $sVal), $_ENV); $this->aEnv = array_merge($this->aEnv, array($sKey => $sVal), $_ENV);
} }
return $this; return $this;
@@ -75,11 +77,8 @@ class Shell
return $iStat; return $iStat;
} }
private function escapeParam($sParam) private function escapeParam($sParam)
{ {
if (preg_match('/^-*\w+$/', $sParam)) return $sParam; return (preg_match('/^-*\w+$/', $sParam)) ? $sParam : escapeshellarg($sParam);
return escapeshellarg($sParam);
} }
} }

View File

@@ -49,7 +49,9 @@
$oDB->connect(); $oDB->connect();
if (isset($aCMDResult['output-type'])) { if (isset($aCMDResult['output-type'])) {
if (!isset($aRankmap[$aCMDResult['output-type']])) fail('unknown output-type: '.$aCMDResult['output-type']); if (!isset($aRankmap[$aCMDResult['output-type']])) {
fail('unknown output-type: '.$aCMDResult['output-type']);
}
$iOutputRank = $aRankmap[$aCMDResult['output-type']]; $iOutputRank = $aRankmap[$aCMDResult['output-type']];
} else { } else {
$iOutputRank = $aRankmap['street']; $iOutputRank = $aRankmap['street'];
@@ -58,14 +60,18 @@
// Preferred language // Preferred language
$oParams = new Nominatim\ParameterParser(); $oParams = new Nominatim\ParameterParser();
if (!isset($aCMDResult['language'])) $aCMDResult['language'] = 'xx'; if (!isset($aCMDResult['language'])) {
$aCMDResult['language'] = 'xx';
}
$aLangPrefOrder = $oParams->getPreferredLanguages($aCMDResult['language']); $aLangPrefOrder = $oParams->getPreferredLanguages($aCMDResult['language']);
$sLanguagePrefArraySQL = $oDB->getArraySQL($oDB->getDBQuotedList($aLangPrefOrder)); $sLanguagePrefArraySQL = $oDB->getArraySQL($oDB->getDBQuotedList($aLangPrefOrder));
// output formatting: build up a lookup table that maps address ranks to columns // output formatting: build up a lookup table that maps address ranks to columns
$aColumnMapping = array(); $aColumnMapping = array();
$iNumCol = 0; $iNumCol = 0;
if (!isset($aCMDResult['output-format'])) $aCMDResult['output-format'] = 'street;suburb;city;county;state;country'; if (!isset($aCMDResult['output-format'])) {
$aCMDResult['output-format'] = 'street;suburb;city;county;state;country';
}
foreach (preg_split('/\s*;\s*/', $aCMDResult['output-format']) as $sColumn) { foreach (preg_split('/\s*;\s*/', $aCMDResult['output-format']) as $sColumn) {
$bHasData = false; $bHasData = false;
foreach (preg_split('/\s*,\s*/', $sColumn) as $sRank) { foreach (preg_split('/\s*,\s*/', $sColumn) as $sRank) {
@@ -80,7 +86,9 @@
} }
} }
} }
if ($bHasData) $iNumCol++; if ($bHasData) {
$iNumCol++;
}
} }
// build the query for objects // build the query for objects
@@ -122,7 +130,9 @@
if ($sOsmType) { if ($sOsmType) {
$sSQL = 'select place_id from placex where osm_type = :osm_type and osm_id = :osm_id'; $sSQL = 'select place_id from placex where osm_type = :osm_type and osm_id = :osm_id';
$sParentId = $oDB->getOne($sSQL, array('osm_type' => $sOsmType, 'osm_id' => $sOsmId)); $sParentId = $oDB->getOne($sSQL, array('osm_type' => $sOsmType, 'osm_id' => $sOsmId));
if (!$sParentId) fail('Could not find place '.$sOsmType.' '.$sOsmId); if (!$sParentId) {
fail('Could not find place '.$sOsmType.' '.$sOsmId);
}
} }
if ($sParentId) { if ($sParentId) {
$sPlacexSQL .= ' and place_id in (select place_id from place_addressline where address_place_id = '.$sParentId.' and isaddress)'; $sPlacexSQL .= ' and place_id in (select place_id from place_addressline where address_place_id = '.$sParentId.' and isaddress)';

View File

@@ -9,8 +9,12 @@ function getCmdOpt($aArg, $aSpec, &$aResult, $bExitOnError = false, $bExitOnUnkn
foreach ($aSpec as $aLine) { foreach ($aSpec as $aLine) {
if (is_array($aLine)) { if (is_array($aLine)) {
if ($aLine[0]) $aQuick['--'.$aLine[0]] = $aLine; if ($aLine[0]) {
if ($aLine[1]) $aQuick['-'.$aLine[1]] = $aLine; $aQuick['--'.$aLine[0]] = $aLine;
}
if ($aLine[1]) {
$aQuick['-'.$aLine[1]] = $aLine;
}
$aCounts[$aLine[0]] = 0; $aCounts[$aLine[0]] = 0;
} }
} }
@@ -28,7 +32,9 @@ function getCmdOpt($aArg, $aSpec, &$aResult, $bExitOnError = false, $bExitOnUnkn
$xVal = array(); $xVal = array();
for ($n = $aLine[4]; $i < $iSize && $n; $n--) { for ($n = $aLine[4]; $i < $iSize && $n; $n--) {
$i++; $i++;
if ($i >= $iSize || $aArg[$i][0] == '-') showUsage($aSpec, $bExitOnError, 'Parameter of \''.$aLine[0].'\' is missing'); if ($i >= $iSize || $aArg[$i][0] == '-') {
showUsage($aSpec, $bExitOnError, 'Parameter of \''.$aLine[0].'\' is missing');
}
switch ($aLine[6]) { switch ($aLine[6]) {
case 'realpath': case 'realpath':
@@ -56,7 +62,9 @@ function getCmdOpt($aArg, $aSpec, &$aResult, $bExitOnError = false, $bExitOnUnkn
break; break;
} }
} }
if ($aLine[4] == 1) $xVal = $xVal[0]; if ($aLine[4] == 1) {
$xVal = $xVal[0];
}
} else { } else {
$xVal = true; $xVal = true;
} }
@@ -65,7 +73,9 @@ function getCmdOpt($aArg, $aSpec, &$aResult, $bExitOnError = false, $bExitOnUnkn
} }
if ($aLine[3] > 1) { if ($aLine[3] > 1) {
if (!array_key_exists($aLine[0], $aResult)) $aResult[$aLine[0]] = array(); if (!array_key_exists($aLine[0], $aResult)) {
$aResult[$aLine[0]] = array();
}
$aResult[$aLine[0]][] = $xVal; $aResult[$aLine[0]][] = $xVal;
} else { } else {
$aResult[$aLine[0]] = $xVal; $aResult[$aLine[0]] = $xVal;
@@ -75,17 +85,26 @@ function getCmdOpt($aArg, $aSpec, &$aResult, $bExitOnError = false, $bExitOnUnkn
} }
} }
if (array_key_exists('help', $aResult)) showUsage($aSpec); if (array_key_exists('help', $aResult)) {
if ($bUnknown && $bExitOnUnknown) showUsage($aSpec, $bExitOnError, 'Unknown option \''.$bUnknown.'\''); showUsage($aSpec);
}
if ($bUnknown && $bExitOnUnknown) {
showUsage($aSpec, $bExitOnError, 'Unknown option \''.$bUnknown.'\'');
}
foreach ($aSpec as $aLine) { foreach ($aSpec as $aLine) {
if (is_array($aLine)) { if (is_array($aLine)) {
if ($aCounts[$aLine[0]] < $aLine[2]) showUsage($aSpec, $bExitOnError, 'Option \''.$aLine[0].'\' is missing'); if ($aCounts[$aLine[0]] < $aLine[2]) {
if ($aCounts[$aLine[0]] > $aLine[3]) showUsage($aSpec, $bExitOnError, 'Option \''.$aLine[0].'\' is pressent too many times'); showUsage($aSpec, $bExitOnError, 'Option \''.$aLine[0].'\' is missing');
}
if ($aCounts[$aLine[0]] > $aLine[3]) {
showUsage($aSpec, $bExitOnError, 'Option \''.$aLine[0].'\' is pressent too many times');
}
switch ($aLine[6]) { switch ($aLine[6]) {
case 'bool': case 'bool':
if (!array_key_exists($aLine[0], $aResult)) if (!array_key_exists($aLine[0], $aResult)) {
$aResult[$aLine[0]] = false; $aResult[$aLine[0]] = false;
}
break; break;
} }
} }
@@ -109,8 +128,12 @@ function showUsage($aSpec, $bExit = false, $sError = false)
echo "\n"; echo "\n";
} }
$aNames = array(); $aNames = array();
if ($aLine[1]) $aNames[] = '-'.$aLine[1]; if ($aLine[1]) {
if ($aLine[0]) $aNames[] = '--'.$aLine[0]; $aNames[] = '-'.$aLine[1];
}
if ($aLine[0]) {
$aNames[] = '--'.$aLine[0];
}
$sName = join(', ', $aNames); $sName = join(', ', $aNames);
echo ' '.$sName.str_repeat(' ', 30-strlen($sName)).$aLine[7]."\n"; echo ' '.$sName.str_repeat(' ', 30-strlen($sName)).$aLine[7]."\n";
} else { } else {

View File

@@ -81,6 +81,10 @@ if (CONST_NoAccessControl) {
header('Access-Control-Allow-Headers: '.$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']); header('Access-Control-Allow-Headers: '.$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']);
} }
} }
if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == 'OPTIONS') exit; if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
exit;
}
if (CONST_Debug) header('Content-type: text/html; charset=utf-8'); if (CONST_Debug) {
header('Content-type: text/html; charset=utf-8');
}

View File

@@ -45,7 +45,9 @@ function getSettingConfig($sConfName, $sSystemConfig)
function fail($sError, $sUserError = false) function fail($sError, $sUserError = false)
{ {
if (!$sUserError) $sUserError = $sError; if (!$sUserError) {
$sUserError = $sError;
}
error_log('ERROR: '.$sError); error_log('ERROR: '.$sError);
var_dump($sUserError); var_dump($sUserError);
echo "\n"; echo "\n";
@@ -96,8 +98,9 @@ function getDatabaseDate(&$oDB)
function byImportance($a, $b) function byImportance($a, $b)
{ {
if ($a['importance'] != $b['importance']) if ($a['importance'] != $b['importance']) {
return ($a['importance'] > $b['importance']?-1:1); return ($a['importance'] > $b['importance']?-1:1);
}
return $a['foundorder'] <=> $b['foundorder']; return $a['foundorder'] <=> $b['foundorder'];
} }

View File

@@ -5,10 +5,14 @@ function logStart(&$oDB, $sType = '', $sQuery = '', $aLanguageList = array())
{ {
$fStartTime = microtime(true); $fStartTime = microtime(true);
$aStartTime = explode('.', $fStartTime); $aStartTime = explode('.', $fStartTime);
if (!isset($aStartTime[1])) $aStartTime[1] = '0'; if (!isset($aStartTime[1])) {
$aStartTime[1] = '0';
}
$sOutputFormat = ''; $sOutputFormat = '';
if (isset($_GET['format'])) $sOutputFormat = $_GET['format']; if (isset($_GET['format'])) {
$sOutputFormat = $_GET['format'];
}
if ($sType == 'reverse') { if ($sType == 'reverse') {
$sOutQuery = (isset($_GET['lat'])?$_GET['lat']:'').'/'; $sOutQuery = (isset($_GET['lat'])?$_GET['lat']:'').'/';
@@ -28,13 +32,15 @@ function logStart(&$oDB, $sType = '', $sQuery = '', $aLanguageList = array())
); );
if (CONST_Log_DB) { if (CONST_Log_DB) {
if (isset($_GET['email'])) if (isset($_GET['email'])) {
$sUserAgent = $_GET['email']; $sUserAgent = $_GET['email'];
elseif (isset($_SERVER['HTTP_REFERER'])) } elseif (isset($_SERVER['HTTP_REFERER'])) {
$sUserAgent = $_SERVER['HTTP_REFERER']; $sUserAgent = $_SERVER['HTTP_REFERER'];
elseif (isset($_SERVER['HTTP_USER_AGENT'])) } elseif (isset($_SERVER['HTTP_USER_AGENT'])) {
$sUserAgent = $_SERVER['HTTP_USER_AGENT']; $sUserAgent = $_SERVER['HTTP_USER_AGENT'];
else $sUserAgent = ''; } else {
$sUserAgent = '';
}
$sSQL = 'insert into new_query_log (type,starttime,query,ipaddress,useragent,language,format,searchterm)'; $sSQL = 'insert into new_query_log (type,starttime,query,ipaddress,useragent,language,format,searchterm)';
$sSQL .= ' values ('; $sSQL .= ' values (';
$sSQL .= join(',', $oDB->getDBQuotedList(array( $sSQL .= join(',', $oDB->getDBQuotedList(array(
@@ -60,7 +66,9 @@ function logEnd(&$oDB, $hLog, $iNumResults)
if (CONST_Log_DB) { if (CONST_Log_DB) {
$aEndTime = explode('.', $fEndTime); $aEndTime = explode('.', $fEndTime);
if (!$aEndTime[1]) $aEndTime[1] = '0'; if (!$aEndTime[1]) {
$aEndTime[1] = '0';
}
$sEndTime = date('Y-m-d H:i:s', $aEndTime[0]).'.'.$aEndTime[1]; $sEndTime = date('Y-m-d H:i:s', $aEndTime[0]).'.'.$aEndTime[1];
$sSQL = 'update new_query_log set endtime = '.$oDB->getDBQuoted($sEndTime).', results = '.$iNumResults; $sSQL = 'update new_query_log set endtime = '.$oDB->getDBQuoted($sEndTime).', results = '.$iNumResults;

View File

@@ -3,14 +3,26 @@
function formatOSMType($sType, $bIncludeExternal = true) function formatOSMType($sType, $bIncludeExternal = true)
{ {
if ($sType == 'N') return 'node'; if ($sType == 'N') {
if ($sType == 'W') return 'way'; return 'node';
if ($sType == 'R') return 'relation'; }
if ($sType == 'W') {
return 'way';
}
if ($sType == 'R') {
return 'relation';
}
if (!$bIncludeExternal) return ''; if (!$bIncludeExternal) {
return '';
}
if ($sType == 'T') return 'way'; if ($sType == 'T') {
if ($sType == 'I') return 'way'; return 'way';
}
if ($sType == 'I') {
return 'way';
}
// not handled: P, L // not handled: P, L

View File

@@ -5,9 +5,11 @@
$aFilteredPlaces = array(); $aFilteredPlaces = array();
if (empty($aPlace)) { if (empty($aPlace)) {
if (isset($sError)) if (isset($sError)) {
$aFilteredPlaces['error'] = $sError; $aFilteredPlaces['error'] = $sError;
else $aFilteredPlaces['error'] = 'Unable to geocode'; } else {
$aFilteredPlaces['error'] = 'Unable to geocode';
}
javascript_renderData($aFilteredPlaces); javascript_renderData($aFilteredPlaces);
} else { } else {
$aFilteredPlaces = array( $aFilteredPlaces = array(
@@ -17,7 +19,9 @@ if (empty($aPlace)) {
) )
); );
if (isset($aPlace['place_id'])) $aFilteredPlaces['properties']['geocoding']['place_id'] = $aPlace['place_id']; if (isset($aPlace['place_id'])) {
$aFilteredPlaces['properties']['geocoding']['place_id'] = $aPlace['place_id'];
}
$sOSMType = formatOSMType($aPlace['osm_type']); $sOSMType = formatOSMType($aPlace['osm_type']);
if ($sOSMType) { if ($sOSMType) {
$aFilteredPlaces['properties']['geocoding']['osm_type'] = $sOSMType; $aFilteredPlaces['properties']['geocoding']['osm_type'] = $sOSMType;

View File

@@ -3,9 +3,11 @@
$aFilteredPlaces = array(); $aFilteredPlaces = array();
if (empty($aPlace)) { if (empty($aPlace)) {
if (isset($sError)) if (isset($sError)) {
$aFilteredPlaces['error'] = $sError; $aFilteredPlaces['error'] = $sError;
else $aFilteredPlaces['error'] = 'Unable to geocode'; } else {
$aFilteredPlaces['error'] = 'Unable to geocode';
}
javascript_renderData($aFilteredPlaces); javascript_renderData($aFilteredPlaces);
} else { } else {
$aFilteredPlaces = array( $aFilteredPlaces = array(
@@ -36,8 +38,12 @@ if (empty($aPlace)) {
if (isset($aPlace['address'])) { if (isset($aPlace['address'])) {
$aFilteredPlaces['properties']['address'] = $aPlace['address']->getAddressNames(); $aFilteredPlaces['properties']['address'] = $aPlace['address']->getAddressNames();
} }
if (isset($aPlace['sExtraTags'])) $aFilteredPlaces['properties']['extratags'] = $aPlace['sExtraTags']; if (isset($aPlace['sExtraTags'])) {
if (isset($aPlace['sNameDetails'])) $aFilteredPlaces['properties']['namedetails'] = $aPlace['sNameDetails']; $aFilteredPlaces['properties']['extratags'] = $aPlace['sExtraTags'];
}
if (isset($aPlace['sNameDetails'])) {
$aFilteredPlaces['properties']['namedetails'] = $aPlace['sNameDetails'];
}
if (isset($aPlace['aBoundingBox'])) { if (isset($aPlace['aBoundingBox'])) {
$aFilteredPlaces['bbox'] = array( $aFilteredPlaces['bbox'] = array(

View File

@@ -3,19 +3,27 @@
$aFilteredPlaces = array(); $aFilteredPlaces = array();
if (empty($aPlace)) { if (empty($aPlace)) {
if (isset($sError)) if (isset($sError)) {
$aFilteredPlaces['error'] = $sError; $aFilteredPlaces['error'] = $sError;
else $aFilteredPlaces['error'] = 'Unable to geocode'; } else {
$aFilteredPlaces['error'] = 'Unable to geocode';
}
} else { } else {
if (isset($aPlace['place_id'])) $aFilteredPlaces['place_id'] = $aPlace['place_id']; if (isset($aPlace['place_id'])) {
$aFilteredPlaces['place_id'] = $aPlace['place_id'];
}
$aFilteredPlaces['licence'] = 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright'; $aFilteredPlaces['licence'] = 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright';
$sOSMType = formatOSMType($aPlace['osm_type']); $sOSMType = formatOSMType($aPlace['osm_type']);
if ($sOSMType) { if ($sOSMType) {
$aFilteredPlaces['osm_type'] = $sOSMType; $aFilteredPlaces['osm_type'] = $sOSMType;
$aFilteredPlaces['osm_id'] = $aPlace['osm_id']; $aFilteredPlaces['osm_id'] = $aPlace['osm_id'];
} }
if (isset($aPlace['lat'])) $aFilteredPlaces['lat'] = $aPlace['lat']; if (isset($aPlace['lat'])) {
if (isset($aPlace['lon'])) $aFilteredPlaces['lon'] = $aPlace['lon']; $aFilteredPlaces['lat'] = $aPlace['lat'];
}
if (isset($aPlace['lon'])) {
$aFilteredPlaces['lon'] = $aPlace['lon'];
}
if ($sOutputFormat == 'jsonv2' || $sOutputFormat == 'geojson') { if ($sOutputFormat == 'jsonv2' || $sOutputFormat == 'geojson') {
$aFilteredPlaces['place_rank'] = $aPlace['rank_search']; $aFilteredPlaces['place_rank'] = $aPlace['rank_search'];
@@ -35,8 +43,12 @@ if (empty($aPlace)) {
if (isset($aPlace['address'])) { if (isset($aPlace['address'])) {
$aFilteredPlaces['address'] = $aPlace['address']->getAddressNames(); $aFilteredPlaces['address'] = $aPlace['address']->getAddressNames();
} }
if (isset($aPlace['sExtraTags'])) $aFilteredPlaces['extratags'] = $aPlace['sExtraTags']; if (isset($aPlace['sExtraTags'])) {
if (isset($aPlace['sNameDetails'])) $aFilteredPlaces['namedetails'] = $aPlace['sNameDetails']; $aFilteredPlaces['extratags'] = $aPlace['sExtraTags'];
}
if (isset($aPlace['sNameDetails'])) {
$aFilteredPlaces['namedetails'] = $aPlace['sNameDetails'];
}
if (isset($aPlace['aBoundingBox'])) { if (isset($aPlace['aBoundingBox'])) {
$aFilteredPlaces['boundingbox'] = $aPlace['aBoundingBox']; $aFilteredPlaces['boundingbox'] = $aPlace['aBoundingBox'];

View File

@@ -12,17 +12,29 @@ echo " querystring='".htmlspecialchars($_SERVER['QUERY_STRING'], ENT_QUOTES)."'"
echo ">\n"; echo ">\n";
if (empty($aPlace)) { if (empty($aPlace)) {
if (isset($sError)) if (isset($sError)) {
echo "<error>$sError</error>"; echo "<error>$sError</error>";
else echo '<error>Unable to geocode</error>'; } else {
echo '<error>Unable to geocode</error>';
}
} else { } else {
echo '<result'; echo '<result';
if ($aPlace['place_id']) echo ' place_id="'.$aPlace['place_id'].'"'; if ($aPlace['place_id']) {
echo ' place_id="'.$aPlace['place_id'].'"';
}
$sOSMType = formatOSMType($aPlace['osm_type']); $sOSMType = formatOSMType($aPlace['osm_type']);
if ($sOSMType) echo ' osm_type="'.$sOSMType.'"'.' osm_id="'.$aPlace['osm_id'].'"'; if ($sOSMType) {
if ($aPlace['ref']) echo ' ref="'.htmlspecialchars($aPlace['ref']).'"'; echo ' osm_type="'.$sOSMType.'"'.' osm_id="'.$aPlace['osm_id'].'"';
if (isset($aPlace['lat'])) echo ' lat="'.htmlspecialchars($aPlace['lat']).'"'; }
if (isset($aPlace['lon'])) echo ' lon="'.htmlspecialchars($aPlace['lon']).'"'; if ($aPlace['ref']) {
echo ' ref="'.htmlspecialchars($aPlace['ref']).'"';
}
if (isset($aPlace['lat'])) {
echo ' lat="'.htmlspecialchars($aPlace['lat']).'"';
}
if (isset($aPlace['lon'])) {
echo ' lon="'.htmlspecialchars($aPlace['lon']).'"';
}
if (isset($aPlace['aBoundingBox'])) { if (isset($aPlace['aBoundingBox'])) {
echo ' boundingbox="'; echo ' boundingbox="';
echo join(',', $aPlace['aBoundingBox']); echo join(',', $aPlace['aBoundingBox']);

View File

@@ -96,11 +96,15 @@ if ($bIncludeHierarchy) {
if ($bGroupHierarchy) { if ($bGroupHierarchy) {
$aPlaceDetails['hierarchy'] = array(); $aPlaceDetails['hierarchy'] = array();
foreach ($aHierarchyLines as $aAddressLine) { foreach ($aHierarchyLines as $aAddressLine) {
if ($aAddressLine['type'] == 'yes') $sType = $aAddressLine['class']; if ($aAddressLine['type'] == 'yes') {
else $sType = $aAddressLine['type']; $sType = $aAddressLine['class'];
} else {
$sType = $aAddressLine['type'];
}
if (!isset($aPlaceDetails['hierarchy'][$sType])) if (!isset($aPlaceDetails['hierarchy'][$sType])) {
$aPlaceDetails['hierarchy'][$sType] = array(); $aPlaceDetails['hierarchy'][$sType] = array();
}
$aPlaceDetails['hierarchy'][$sType][] = $funcMapAddressLine($aAddressLine); $aPlaceDetails['hierarchy'][$sType][] = $funcMapAddressLine($aAddressLine);
} }
} else { } else {

View File

@@ -5,7 +5,9 @@ $aOutput['licence'] = 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm
$aOutput['batch'] = array(); $aOutput['batch'] = array();
foreach ($aBatchResults as $aSearchResults) { foreach ($aBatchResults as $aSearchResults) {
if (!$aSearchResults) $aSearchResults = array(); if (!$aSearchResults) {
$aSearchResults = array();
}
$aFilteredPlaces = array(); $aFilteredPlaces = array();
foreach ($aSearchResults as $iResNum => $aPointDetails) { foreach ($aSearchResults as $iResNum => $aPointDetails) {
$aPlace = array( $aPlace = array(

View File

@@ -9,7 +9,9 @@ foreach ($aSearchResults as $iResNum => $aPointDetails) {
) )
); );
if (isset($aPointDetails['place_id'])) $aPlace['properties']['geocoding']['place_id'] = $aPointDetails['place_id']; if (isset($aPointDetails['place_id'])) {
$aPlace['properties']['geocoding']['place_id'] = $aPointDetails['place_id'];
}
$sOSMType = formatOSMType($aPointDetails['osm_type']); $sOSMType = formatOSMType($aPointDetails['osm_type']);
if ($sOSMType) { if ($sOSMType) {
$aPlace['properties']['geocoding']['osm_type'] = $sOSMType; $aPlace['properties']['geocoding']['osm_type'] = $sOSMType;

View File

@@ -58,8 +58,12 @@ foreach ($aSearchResults as $iResNum => $aPointDetails) {
} }
if (isset($aPointDetails['sExtraTags'])) $aPlace['properties']['extratags'] = $aPointDetails['sExtraTags']; if (isset($aPointDetails['sExtraTags'])) {
if (isset($aPointDetails['sNameDetails'])) $aPlace['properties']['namedetails'] = $aPointDetails['sNameDetails']; $aPlace['properties']['extratags'] = $aPointDetails['sExtraTags'];
}
if (isset($aPointDetails['sNameDetails'])) {
$aPlace['properties']['namedetails'] = $aPointDetails['sNameDetails'];
}
$aFilteredPlaces[] = $aPlace; $aFilteredPlaces[] = $aPlace;
} }

View File

@@ -60,8 +60,12 @@ foreach ($aSearchResults as $iResNum => $aPointDetails) {
$aPlace['geokml'] = $aPointDetails['askml']; $aPlace['geokml'] = $aPointDetails['askml'];
} }
if (isset($aPointDetails['sExtraTags'])) $aPlace['extratags'] = $aPointDetails['sExtraTags']; if (isset($aPointDetails['sExtraTags'])) {
if (isset($aPointDetails['sNameDetails'])) $aPlace['namedetails'] = $aPointDetails['sNameDetails']; $aPlace['extratags'] = $aPointDetails['sExtraTags'];
}
if (isset($aPointDetails['sNameDetails'])) {
$aPlace['namedetails'] = $aPointDetails['sNameDetails'];
}
$aFilteredPlaces[] = $aPlace; $aFilteredPlaces[] = $aPlace;
} }

View File

@@ -10,7 +10,9 @@ echo (isset($sXmlRootTag)?$sXmlRootTag:'searchresults');
echo " timestamp='".date(DATE_RFC822)."'"; echo " timestamp='".date(DATE_RFC822)."'";
echo " attribution='Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright'"; echo " attribution='Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright'";
echo " querystring='".htmlspecialchars($sQuery, ENT_QUOTES)."'"; echo " querystring='".htmlspecialchars($sQuery, ENT_QUOTES)."'";
if (isset($aMoreParams['viewbox'])) echo " viewbox='".htmlspecialchars($aMoreParams['viewbox'], ENT_QUOTES)."'"; if (isset($aMoreParams['viewbox'])) {
echo " viewbox='".htmlspecialchars($aMoreParams['viewbox'], ENT_QUOTES)."'";
}
if (isset($aMoreParams['exclude_place_ids'])) { if (isset($aMoreParams['exclude_place_ids'])) {
echo " exclude_place_ids='".htmlspecialchars($aMoreParams['exclude_place_ids'])."'"; echo " exclude_place_ids='".htmlspecialchars($aMoreParams['exclude_place_ids'])."'";
} }

View File

@@ -95,16 +95,22 @@ $iPlaceID = (int)$sPlaceId;
if (CONST_Use_US_Tiger_Data) { if (CONST_Use_US_Tiger_Data) {
$iParentPlaceID = $oDB->getOne('SELECT parent_place_id FROM location_property_tiger WHERE place_id = '.$iPlaceID); $iParentPlaceID = $oDB->getOne('SELECT parent_place_id FROM location_property_tiger WHERE place_id = '.$iPlaceID);
if ($iParentPlaceID) $iPlaceID = $iParentPlaceID; if ($iParentPlaceID) {
$iPlaceID = $iParentPlaceID;
}
} }
// interpolated house numbers // interpolated house numbers
$iParentPlaceID = $oDB->getOne('SELECT parent_place_id FROM location_property_osmline WHERE place_id = '.$iPlaceID); $iParentPlaceID = $oDB->getOne('SELECT parent_place_id FROM location_property_osmline WHERE place_id = '.$iPlaceID);
if ($iParentPlaceID) $iPlaceID = $iParentPlaceID; if ($iParentPlaceID) {
$iPlaceID = $iParentPlaceID;
}
// artificial postcodes // artificial postcodes
$iParentPlaceID = $oDB->getOne('SELECT parent_place_id FROM location_postcode WHERE place_id = '.$iPlaceID); $iParentPlaceID = $oDB->getOne('SELECT parent_place_id FROM location_postcode WHERE place_id = '.$iPlaceID);
if ($iParentPlaceID) $iPlaceID = $iParentPlaceID; if ($iParentPlaceID) {
$iPlaceID = $iParentPlaceID;
}
$hLog = logStart($oDB, 'details', $_SERVER['QUERY_STRING'], $aLangPrefOrder); $hLog = logStart($oDB, 'details', $_SERVER['QUERY_STRING'], $aLangPrefOrder);

View File

@@ -35,7 +35,9 @@ if (count($aOsmIds) > CONST_Places_Max_ID_count) {
foreach ($aOsmIds as $sItem) { foreach ($aOsmIds as $sItem) {
// Skip empty sItem // Skip empty sItem
if (empty($sItem)) continue; if (empty($sItem)) {
continue;
}
$sType = $sItem[0]; $sType = $sItem[0];
$iId = (int) substr($sItem, 1); $iId = (int) substr($sItem, 1);
@@ -48,7 +50,9 @@ foreach ($aOsmIds as $sItem) {
// key names // key names
$oResult = $oPlace; $oResult = $oPlace;
unset($oResult['aAddress']); unset($oResult['aAddress']);
if (isset($oPlace['aAddress'])) $oResult['address'] = $oPlace['aAddress']; if (isset($oPlace['aAddress'])) {
$oResult['address'] = $oPlace['aAddress'];
}
if ($sOutputFormat != 'geocodejson') { if ($sOutputFormat != 'geocodejson') {
unset($oResult['langaddress']); unset($oResult['langaddress']);
$oResult['name'] = $oPlace['langaddress']; $oResult['name'] = $oPlace['langaddress'];
@@ -71,7 +75,9 @@ foreach ($aOsmIds as $sItem) {
} }
if (CONST_Debug) exit; if (CONST_Debug) {
exit;
}
$sXmlRootTag = 'lookupresults'; $sXmlRootTag = 'lookupresults';
$sQuery = join(',', $aCleanedQueryParts); $sQuery = join(',', $aCleanedQueryParts);

View File

@@ -30,8 +30,12 @@ while ($iTotalBroken && empty($aPolygons)) {
$iDays++; $iDays++;
} }
if ($bReduced) $aWhere[] = "errormessage like 'Area reduced%'"; if ($bReduced) {
if ($sClass) $sWhere[] = "class = '".pg_escape_string($sClass)."'"; $aWhere[] = "errormessage like 'Area reduced%'";
}
if ($sClass) {
$sWhere[] = "class = '".pg_escape_string($sClass)."'";
}
if (!empty($aWhere)) { if (!empty($aWhere)) {
$sSQL .= ' WHERE '.join(' and ', $aWhere); $sSQL .= ' WHERE '.join(' and ', $aWhere);

View File

@@ -77,7 +77,9 @@ if (isset($_SERVER['REQUEST_SCHEME'])
$sMoreURL = '/search.php?'.http_build_query($aMoreParams); $sMoreURL = '/search.php?'.http_build_query($aMoreParams);
} }
if (CONST_Debug) exit; if (CONST_Debug) {
exit;
}
$sOutputTemplate = ($sOutputFormat == 'jsonv2') ? 'json' : $sOutputFormat; $sOutputTemplate = ($sOutputFormat == 'jsonv2') ? 'json' : $sOutputFormat;
include(CONST_LibDir.'/template/search-'.$sOutputTemplate.'.php'); include(CONST_LibDir.'/template/search-'.$sOutputTemplate.'.php');