]> git.openstreetmap.org Git - nominatim.git/commitdiff
Merge pull request #1003 from mtmail/details-permalink
authorSarah Hoffmann <lonvia@denofr.de>
Fri, 6 Apr 2018 19:15:48 +0000 (21:15 +0200)
committerGitHub <noreply@github.com>
Fri, 6 Apr 2018 19:15:48 +0000 (21:15 +0200)
details page: add a perma-link

1  2 
website/details.php

diff --combined website/details.php
index e2a8a031e02a4c67a224bea5e7df4855b5195ce2,28df6d5f9cdbe71a08fd45dd6a1b2f6fd4bb799c..6989d4882cbf95afebbee85aa5a8d62ea7618df2
@@@ -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 = [];
 +        }
      }
  }