From: Sarah Hoffmann Date: Fri, 6 Apr 2018 19:15:48 +0000 (+0200) Subject: Merge pull request #1003 from mtmail/details-permalink X-Git-Tag: v3.2.0~97 X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/984e91e519795fabc0dddbd588f99dfd4cfed896?ds=inline;hp=-c Merge pull request #1003 from mtmail/details-permalink details page: add a perma-link --- 984e91e519795fabc0dddbd588f99dfd4cfed896 diff --combined website/details.php index e2a8a031,28df6d5f..6989d488 --- a/website/details.php +++ b/website/details.php @@@ -16,15 -16,21 +16,21 @@@ $sLanguagePrefArraySQL = 'ARRAY['.join( $sPlaceId = $oParams->getString('place_id'); $sOsmType = $oParams->getSet('osmtype', array('N', 'W', 'R')); $iOsmId = $oParams->getInt('osmid', -1); + $sClass = $oParams->getString('class'); $oDB =& getDB(); if ($sOsmType && $iOsmId > 0) { $sSQL = sprintf( - "SELECT place_id FROM placex WHERE osm_type='%s' AND osm_id=%d ORDER BY type='postcode' ASC", + "SELECT place_id FROM placex WHERE osm_type='%s' AND osm_id=%d", $sOsmType, $iOsmId ); + // osm_type and osm_id are not unique enough + if ($sClass) { + $sSQL .= " AND class='".$sClass."'"; + } + $sSQL .= ' ORDER BY class ASC'; $sPlaceId = chksql($oDB->getOne($sSQL)); // Be nice about our error messages for broken geometry @@@ -210,23 -216,21 +216,23 @@@ $aPlaceSearchNameKeywords = false $aPlaceSearchAddressKeywords = false; if ($oParams->getBool('keywords')) { $sSQL = "SELECT * FROM search_name WHERE place_id = $iPlaceID"; - $aPlaceSearchName = $oDB->getRow($sSQL); - if (PEAR::isError($aPlaceSearchName)) { // possible timeout + $aPlaceSearchName = $oDB->getRow($sSQL); // can be null + if (!$aPlaceSearchName || PEAR::isError($aPlaceSearchName)) { // possible timeout $aPlaceSearchName = []; } - $sSQL = 'SELECT * FROM word WHERE word_id in ('.substr($aPlaceSearchName['name_vector'], 1, -1).')'; - $aPlaceSearchNameKeywords = $oDB->getAll($sSQL); - if (PEAR::isError($aPlaceSearchNameKeywords)) { // possible timeout - $aPlaceSearchNameKeywords = []; - } + if (!empty($aPlaceSearchName)) { + $sSQL = 'SELECT * FROM word WHERE word_id in ('.substr($aPlaceSearchName['name_vector'], 1, -1).')'; + $aPlaceSearchNameKeywords = $oDB->getAll($sSQL); + if (PEAR::isError($aPlaceSearchNameKeywords)) { // possible timeout + $aPlaceSearchNameKeywords = []; + } - $sSQL = 'SELECT * FROM word WHERE word_id in ('.substr($aPlaceSearchName['nameaddress_vector'], 1, -1).')'; - $aPlaceSearchAddressKeywords = $oDB->getAll($sSQL); - if (PEAR::isError($aPlaceSearchAddressKeywords)) { // possible timeout - $aPlaceSearchAddressKeywords = []; + $sSQL = 'SELECT * FROM word WHERE word_id in ('.substr($aPlaceSearchName['nameaddress_vector'], 1, -1).')'; + $aPlaceSearchAddressKeywords = $oDB->getAll($sSQL); + if (PEAR::isError($aPlaceSearchAddressKeywords)) { // possible timeout + $aPlaceSearchAddressKeywords = []; + } } }