X-Git-Url: https://git.openstreetmap.org/nominatim.git/blobdiff_plain/a4ecd9d73e93a56aeee336c7fa7e18aa42bd9e03..5464dec0570c2451d8607bc739c6f2b6f298bb75:/website/search.php diff --git a/website/search.php b/website/search.php index 8b160f8f..cff9bb37 100755 --- a/website/search.php +++ b/website/search.php @@ -5,19 +5,15 @@ require_once(CONST_BasePath.'/lib/init-website.php'); require_once(CONST_BasePath.'/lib/log.php'); require_once(CONST_BasePath.'/lib/Geocode.php'); - + require_once(CONST_BasePath.'/lib/output.php'); ini_set('memory_limit', '200M'); $oDB =& getDB(); - - // Display defaults - $fLat = CONST_Default_Lat; - $fLon = CONST_Default_Lon; - $iZoom = CONST_Default_Zoom; + $oParams = new ParameterParser(); $oGeocode = new Geocode($oDB); - $aLangPrefOrder = getPreferredLanguages(); + $aLangPrefOrder = $oParams->getPreferredLanguages(); $oGeocode->setLanguagePreference($aLangPrefOrder); if (CONST_Search_ReversePlanForAll @@ -30,24 +26,21 @@ } // Format for output - $sOutputFormat = 'html'; - if (isset($_GET['format']) && ($_GET['format'] == 'html' || $_GET['format'] == 'xml' || $_GET['format'] == 'json' || $_GET['format'] == 'jsonv2')) - { - $sOutputFormat = $_GET['format']; - } + $sOutputFormat = $oParams->getSet('format', array('html', 'xml', 'json', 'jsonv2'), 'html'); // Show / use polygons if ($sOutputFormat == 'html') { - if (isset($_GET['polygon'])) $oGeocode->setIncludePolygonAsText((bool)$_GET['polygon']); + $oGeocode->setIncludePolygonAsText($oParams->getBool('polygon')); + $bAsText = false; } else { - $bAsPoints = (boolean)isset($_GET['polygon']) && $_GET['polygon']; - $bAsGeoJSON = (boolean)isset($_GET['polygon_geojson']) && $_GET['polygon_geojson']; - $bAsKML = (boolean)isset($_GET['polygon_kml']) && $_GET['polygon_kml']; - $bAsSVG = (boolean)isset($_GET['polygon_svg']) && $_GET['polygon_svg']; - $bAsText = (boolean)isset($_GET['polygon_text']) && $_GET['polygon_text']; + $bAsPoints = $oParams->getBool('polygon'); + $bAsGeoJSON = $oParams->getBool('polygon_geojson'); + $bAsKML = $oParams->getBool('polygon_kml'); + $bAsSVG = $oParams->getBool('polygon_svg'); + $bAsText = $oParams->getBool('polygon_text'); if ( ( ($bAsGeoJSON?1:0) + ($bAsKML?1:0) + ($bAsSVG?1:0) @@ -73,11 +66,9 @@ } // Polygon simplification threshold (optional) - $fThreshold = 0.0; - if (isset($_GET['polygon_threshold'])) $fThreshold = (float)$_GET['polygon_threshold']; - $oGeocode->setPolygonSimplificationThreshold($fThreshold); + $oGeocode->setPolygonSimplificationThreshold($oParams->getFloat('polygon_threshold', 0.0)); - $oGeocode->loadParamArray($_GET); + $oGeocode->loadParamArray($oParams); if (CONST_Search_BatchMode && isset($_GET['batch'])) { @@ -86,30 +77,28 @@ foreach($aBatch as $aBatchParams) { $oBatchGeocode = clone $oGeocode; - $oBatchGeocode->loadParamArray($aBatchParams); - $oBatchGeocode->setQueryFromParams($aBatchParams); + $oBatchParams = new ParameterParser($aBatchParams); + $oBatchGeocode->loadParamArray($oBatchParams); + $oBatchGeocode->setQueryFromParams($oBatchParams); $aSearchResults = $oBatchGeocode->lookup(); $aBatchResults[] = $aSearchResults; } include(CONST_BasePath.'/lib/template/search-batch-json.php'); exit; } - else + + $oGeocode->setQueryFromParams($oParams); + + if (!$oGeocode->getQueryString() + && isset($_SERVER['PATH_INFO']) && $_SERVER['PATH_INFO'][0] == '/') { - if (!(isset($_GET['q']) && $_GET['q']) && isset($_SERVER['PATH_INFO']) && $_SERVER['PATH_INFO'][0] == '/') - { - $sQuery = substr(rawurldecode($_SERVER['PATH_INFO']), 1); + $sQuery = substr(rawurldecode($_SERVER['PATH_INFO']), 1); - // reverse order of '/' separated string - $aPhrases = explode('/', $sQuery); - $aPhrases = array_reverse($aPhrases); - $sQuery = join(', ',$aPhrases); - $oGeocode->setQuery($sQuery); - } - else - { - $oGeocode->setQueryFromParams($_GET); - } + // reverse order of '/' separated string + $aPhrases = explode('/', $sQuery); + $aPhrases = array_reverse($aPhrases); + $sQuery = join(', ',$aPhrases); + $oGeocode->setQuery($sQuery); } $hLog = logStart($oDB, 'search', $oGeocode->getQueryString(), $aLangPrefOrder); @@ -119,19 +108,16 @@ if ($sOutputFormat=='html') { - $sDataDate = $oDB->getOne("select TO_CHAR(lastimportdate - '2 minutes'::interval,'YYYY/MM/DD HH24:MI')||' GMT' from import_status limit 1"); - $sTileURL = CONST_Map_Tile_URL; - $sTileAttribution = CONST_Map_Tile_Attribution; + $sDataDate = chksql($oDB->getOne("select TO_CHAR(lastimportdate - '2 minutes'::interval,'YYYY/MM/DD HH24:MI')||' GMT' from import_status limit 1")); } logEnd($oDB, $hLog, sizeof($aSearchResults)); - $bAsText = $oGeocode->getIncludePolygonAsText(); $sQuery = $oGeocode->getQueryString(); $sViewBox = $oGeocode->getViewBoxString(); $bShowPolygons = (isset($_GET['polygon']) && $_GET['polygon']); $aExcludePlaceIDs = $oGeocode->getExcludedPlaceIDs(); - $sMoreURL = CONST_Website_BaseURL.'search.php?format='.urlencode($sOutputFormat).'&exclude_place_ids='.join(',',$oGeocode->getExcludedPlaceIDs()); + $sMoreURL = CONST_Website_BaseURL.'search.php?format='.urlencode($sOutputFormat).'&exclude_place_ids='.join(',',$aExcludePlaceIDs); if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])) $sMoreURL .= '&accept-language='.$_SERVER["HTTP_ACCEPT_LANGUAGE"]; if ($bShowPolygons) $sMoreURL .= '&polygon=1'; if ($oGeocode->getIncludeAddressDetails()) $sMoreURL .= '&addressdetails=1';