- $aSearchResults = array();
- $aCleanedQueryParts = array();
- if (isset($_GET['osm_ids']))
- {
- $oPlaceLookup = new PlaceLookup($oDB);
- $oPlaceLookup->setLanguagePreference($aLangPrefOrder);
- $oPlaceLookup->setIncludeAddressDetails(getParamBool('addressdetails', true));
- $oPlaceLookup->setIncludeExtraTags(getParamBool('extratags', false));
- $oPlaceLookup->setIncludeNameDetails(getParamBool('namedetails', false));
-
- $aOsmIds = explode(',', $_GET['osm_ids']);
-
- if ( count($aOsmIds) > CONST_Places_Max_ID_count )
- {
- userError('Bulk User: Only ' . CONST_Places_Max_ID_count . " ids are allowed in one request.");
- exit;
- }
-
- foreach ($aOsmIds AS $sItem)
- {
- // Skip empty sItem
- if (empty($sItem)) continue;
-
- $sType = $sItem[0];
- $iId = (int) substr($sItem, 1);
- if ( $iId > 0 && ($sType == 'N' || $sType == 'W' || $sType == 'R') )
- {
- $aCleanedQueryParts[] = $sType . $iId;
- $oPlaceLookup->setOSMID($sType, $iId);
- $oPlace = $oPlaceLookup->lookup();
- if ($oPlace){
- // we want to use the search-* output templates, so we need to fill
- // $aSearchResults and slightly change the (reverse search) oPlace
- // key names
- $oResult = $oPlace;
- unset($oResult['aAddress']);
- if (isset($oPlace['aAddress'])) $oResult['address'] = $oPlace['aAddress'];
- unset($oResult['langaddress']);
- $oResult['name'] = $oPlace['langaddress'];
- $aSearchResults[] = $oResult;
- }
- }
- }
- }