X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/1e3bf9729eae72f7b5c1a71ad952877486a0fcdb..c61b5219f9eeb48b09d5e74e1f5afc5a955682b9:/website/search.php diff --git a/website/search.php b/website/search.php old mode 100755 new mode 100644 index f2f806d6..55705656 --- a/website/search.php +++ b/website/search.php @@ -1,14 +1,13 @@ connect(); $oParams = new Nominatim\ParameterParser(); $oGeocode = new Nominatim\Geocode($oDB); @@ -26,38 +25,11 @@ if (CONST_Search_ReversePlanForAll } // Format for output -$sOutputFormat = $oParams->getSet('format', array('html', 'xml', 'json', 'jsonv2'), 'html'); - -// Show / use polygons -if ($sOutputFormat == 'html') { - $oGeocode->setIncludePolygonAsGeoJSON($oParams->getBool('polygon_geojson')); - $bAsGeoJSON = false; -} else { - $bAsPoints = $oParams->getBool('polygon'); - $bAsGeoJSON = $oParams->getBool('polygon_geojson'); - $bAsKML = $oParams->getBool('polygon_kml'); - $bAsSVG = $oParams->getBool('polygon_svg'); - $bAsText = $oParams->getBool('polygon_text'); - $iWantedTypes = ($bAsGeoJSON?1:0) + ($bAsKML?1:0) + ($bAsSVG?1:0) + ($bAsText?1:0) + ($bAsPoints?1:0); - if ($iWantedTypes > CONST_PolygonOutput_MaximumTypes) { - if (CONST_PolygonOutput_MaximumTypes) { - userError("Select only ".CONST_PolygonOutput_MaximumTypes." polgyon output option"); - } else { - userError("Polygon output is disabled"); - } - exit; - } - $oGeocode->setIncludePolygonAsPoints($bAsPoints); - $oGeocode->setIncludePolygonAsText($bAsText); - $oGeocode->setIncludePolygonAsGeoJSON($bAsGeoJSON); - $oGeocode->setIncludePolygonAsKML($bAsKML); - $oGeocode->setIncludePolygonAsSVG($bAsSVG); -} - -// Polygon simplification threshold (optional) -$oGeocode->setPolygonSimplificationThreshold($oParams->getFloat('polygon_threshold', 0.0)); +$sOutputFormat = $oParams->getSet('format', array('html', 'xml', 'json', 'jsonv2', 'geojson', 'geocodejson'), 'html'); +set_exception_handler_by_format($sOutputFormat); -$oGeocode->loadParamArray($oParams); +$sForcedGeometry = ($sOutputFormat == 'html') ? 'geojson' : null; +$oGeocode->loadParamArray($oParams, $sForcedGeometry); if (CONST_Search_BatchMode && isset($_GET['batch'])) { $aBatch = json_decode($_GET['batch'], true); @@ -78,6 +50,7 @@ $oGeocode->setQueryFromParams($oParams); if (!$oGeocode->getQueryString() && isset($_SERVER['PATH_INFO']) + && strlen($_SERVER['PATH_INFO']) > 0 && $_SERVER['PATH_INFO'][0] == '/' ) { $sQuery = substr(rawurldecode($_SERVER['PATH_INFO']), 1); @@ -92,29 +65,22 @@ if (!$oGeocode->getQueryString() $hLog = logStart($oDB, 'search', $oGeocode->getQueryString(), $aLangPrefOrder); $aSearchResults = $oGeocode->lookup(); -if ($aSearchResults === false) $aSearchResults = array(); if ($sOutputFormat=='html') { - $sDataDate = chksql($oDB->getOne("select TO_CHAR(lastimportdate - '2 minutes'::interval,'YYYY/MM/DD HH24:MI')||' GMT' from import_status limit 1")); + $sDataDate = $oDB->getOne("select TO_CHAR(lastimportdate,'YYYY/MM/DD HH24:MI')||' GMT' from import_status limit 1"); } -logEnd($oDB, $hLog, sizeof($aSearchResults)); +logEnd($oDB, $hLog, count($aSearchResults)); $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(',', $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'; -if ($oGeocode->getIncludeExtraTags()) $sMoreURL .= '&extratags=1'; -if ($oGeocode->getIncludeNameDetails()) $sMoreURL .= '&namedetails=1'; -if ($oGeocode->getCountryCodes()) $sMoreURL .= '&countrycodes='.join(',', $oGeocode->getCountryCodes()); -if ($sViewBox) $sMoreURL .= '&viewbox='.urlencode($sViewBox); -if (isset($_GET['nearlat']) && isset($_GET['nearlon'])) $sMoreURL .= '&nearlat='.(float)$_GET['nearlat'].'&nearlon='.(float)$_GET['nearlon']; -$sMoreURL .= '&q='.urlencode($sQuery); + +$aMoreParams = $oGeocode->getMoreUrlParams(); +if ($sOutputFormat != 'html') $aMoreParams['format'] = $sOutputFormat; +if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { + $aMoreParams['accept-language'] = $_SERVER['HTTP_ACCEPT_LANGUAGE']; +} +$sMoreURL = CONST_Website_BaseURL.'search.php?'.http_build_query($aMoreParams); if (CONST_Debug) exit; -include(CONST_BasePath.'/lib/template/search-'.$sOutputFormat.'.php'); +$sOutputTemplate = ($sOutputFormat == 'jsonv2') ? 'json' : $sOutputFormat; +include(CONST_BasePath.'/lib/template/search-'.$sOutputTemplate.'.php');