}
if (sizeof($aStructuredQuery) > 0) {
$sQuery = join(', ', $aStructuredQuery);
- $sAllowedTypesSQLList = '(\'place\',\'boundary\')';
+ if ($iMaxAddressRank < 30)
+ {
+ $sAllowedTypesSQLList = '(\'place\',\'boundary\')';
+ }
}
if ($sQuery)
if ($sCountryCodesSQL) $sSQL .= " join placex using (place_id)";
$sSQL .= " where st_contains($sViewboxSmallSQL, ct.centroid)";
if ($sCountryCodesSQL) $sSQL .= " and country_code in ($sCountryCodesSQL)";
+ if (sizeof($aExcludePlaceIDs))
+ {
+ $sSQL .= " and place_id not in (".join(',',$aExcludePlaceIDs).")";
+ }
if ($sViewboxCentreSQL) $sSQL .= " order by st_distance($sViewboxCentreSQL, ct.centroid) asc";
$sSQL .= " limit $iLimit";
if (CONST_Debug) var_dump($sSQL);
$aPlaceIDs = $oDB->getCol($sSQL);
- if (!sizeof($aPlaceIDs))
+ // If excluded place IDs are given, it is fair to assume that
+ // there have been results in the small box, so no further
+ // expansion in that case.
+ if (!sizeof($aPlaceIDs) && !sizeof($aExcludePlaceIDs))
{
$sSQL = "select place_id from place_classtype_".$aSearch['sClass']."_".$aSearch['sType']." ct";
if ($sCountryCodesSQL) $sSQL .= " join placex using (place_id)";
if ($iGroupLoop > 4) break;
if ($iQueryLoop > 30) break;
}
-//exit;
+
// Did we find anything?
if (isset($aResultPlaceIDs) && sizeof($aResultPlaceIDs))
{