From eb793ae26e057d4fadeb7ea1527d4428396142f2 Mon Sep 17 00:00:00 2001 From: Brian Quinion Date: Fri, 30 Aug 2013 12:18:57 +0100 Subject: [PATCH] Fix for regressions: broken bounded search, error on country codes --- lib/Geocode.php | 9 +++++---- lib/lib.php | 5 +++++ website/search.php | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/lib/Geocode.php b/lib/Geocode.php index 35c8541a..51ed3205 100644 --- a/lib/Geocode.php +++ b/lib/Geocode.php @@ -291,7 +291,7 @@ $sCountryCodesSQL = false; if ($this->aCountryCodes && sizeof($this->aCountryCodes)) { - $sCountryCodesSQL = join(',', $this->aCountryCodes); + $sCountryCodesSQL = join(',', array_map('addQuotes', $this->aCountryCodes)); } // Hack to make it handle "new york, ny" (and variants) correctly @@ -319,7 +319,7 @@ $sViewboxSmallSQL = "ST_SetSRID(ST_MakeBox2D(ST_Point(".(float)$this->aViewBox[0].",".(float)$this->aViewBox[1]."),ST_Point(".(float)$this->aViewBox[2].",".(float)$this->aViewBox[3].")),4326)"; $sViewboxLargeSQL = "ST_SetSRID(ST_MakeBox2D(ST_Point(".(float)$aBigViewBox[0].",".(float)$aBigViewBox[1]."),ST_Point(".(float)$aBigViewBox[2].",".(float)$aBigViewBox[3].")),4326)"; - $bBoundingBoxSearch = true; + $bBoundingBoxSearch = $this->bBoundedSearch; } // Route SQL @@ -349,7 +349,7 @@ failInternalError("Could not get large viewbox.", $sSQL, $sViewboxLargeSQL); } $sViewboxLargeSQL = "'".$sViewboxLargeSQL."'::geometry"; - $bBoundingBoxSearch = true; + $bBoundingBoxSearch = $this->bBoundedSearch; } // Do we have anything that looks like a lat/lon pair? @@ -971,11 +971,12 @@ if (CONST_Debug) { echo "
Search Loop, group $iGroupLoop, loop $iQueryLoop"; } if (CONST_Debug) _debugDumpGroupedSearches(array($iGroupedRank => array($aSearch)), $aValidTokens); - // Must have a location term + // No location term? if (!sizeof($aSearch['aName']) && !sizeof($aSearch['aAddress']) && !$aSearch['fLon']) { if ($aSearch['sCountryCode'] && !$aSearch['sClass'] && !$aSearch['sHouseNumber']) { + // Just looking for a country by code - look it up if (4 >= $this->iMinAddressRank && 4 <= $this->iMaxAddressRank) { $sSQL = "select place_id from placex where calculated_country_code='".$aSearch['sCountryCode']."' and rank_search = 4"; diff --git a/lib/lib.php b/lib/lib.php index 3b16b399..3417c95b 100644 --- a/lib/lib.php +++ b/lib/lib.php @@ -898,3 +898,8 @@ if ($aItemListValues) $aAddressRankList = array_merge($aAddressRankList, $aItemListValues); return true; } + + function addQuotes($s) + { + return "'".$s."'"; + } diff --git a/website/search.php b/website/search.php index 26f7b2a6..e9f13632 100755 --- a/website/search.php +++ b/website/search.php @@ -55,7 +55,7 @@ $aCountryCodes[] = strtolower($sCountryCode); } } - $oGeocode->setCountryCodeList($aCountryCodes); + $oGeocode->setCountryCodesList($aCountryCodes); } if (isset($aParams['viewboxlbrt']) && $aParams['viewboxlbrt']) -- 2.39.5