]> git.openstreetmap.org Git - nominatim.git/commitdiff
Merge remote-tracking branch 'upstream/master'
authorSarah Hoffmann <lonvia@denofr.de>
Fri, 6 Apr 2018 19:19:24 +0000 (21:19 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Fri, 6 Apr 2018 19:19:24 +0000 (21:19 +0200)
lib/Geocode.php
lib/output.php
lib/template/details-html.php
osm2pgsql
settings/phrase_settings.php
test/php/Nominatim/LibTest.php [moved from test/php/Nominatim/NominatimTest.php with 98% similarity]
utils/importWikipedia.php
website/css/details.css
website/details.php

index 017d7ad9a3924984cacecd253e6b95dc1327ffa3..1c84f14b86adfe415364076a71be5fac78d44635 100644 (file)
@@ -620,7 +620,7 @@ class Geocode
             }
 
             Debug::printDebugArray('Search context', $oCtx);
-            Debug::printDebugArray('Base search', $aSearches[0]);
+            Debug::printDebugArray('Base search', empty($aSearches) ? null : $aSearches[0]);
             Debug::printVar('Final query phrases', $aInPhrases);
 
             // Convert each phrase to standard form
index fd6226bc503b08d9bd2f6d1c6aa742a37a8c8b83..9d4b7502c855044c6859bae36f1d291897ab20c7 100644 (file)
@@ -39,3 +39,14 @@ function detailsLink($aFeature, $sTitle = false)
 
     return '<a href="details.php?place_id='.$aFeature['place_id'].'">'.($sTitle?$sTitle:$aFeature['place_id']).'</a>';
 }
+
+function detailsPermaLink($aFeature, $sRefText = false)
+{
+    $sOSMType = formatOSMType($aFeature['osm_type'], false);
+
+    if ($sOSMType) {
+        $sLabel = $sRefText ? $sRefText : $sOSMType.' '.$aFeature['osm_id'];
+        return '<a href="details.php?osmtype='.$aFeature['osm_type'].'&osmid='.$aFeature['osm_id'].'&class='.$aFeature['class'].'">'.$sLabel.'</a>';
+    }
+    return '';
+}
index ef7d9248dae658438a0e9ad2fed689f02b787af1..00d6ba6385b2d1b7bd26813e82dde58afe6d6192 100644 (file)
     <div class="container">
         <div class="row">
             <div class="col-sm-10">
-                <h1><?php echo $aPointDetails['localname'] ?></h1>
+                <h1>
+                    <?php echo $aPointDetails['localname'] ?>
+                    <small><?php echo detailsPermaLink($aPointDetails, 'link to this page') ?></small>
+                </h1>
             </div>
             <div class="col-sm-2 text-right">
                 <?php map_icon($aPointDetails['icon']) ?>
index 00fb2505c1548a7403ce01f69e891447124235c3..16873879ba3b9d5572dcde628679bc2e448d5e86 160000 (submodule)
--- a/osm2pgsql
+++ b/osm2pgsql
@@ -1 +1 @@
-Subproject commit 00fb2505c1548a7403ce01f69e891447124235c3
+Subproject commit 16873879ba3b9d5572dcde628679bc2e448d5e86
index cee7028ba384e6a4196fe397288352dcda39d457..945235bd8c9549e90b320a8ff3d0c1107632946c 100644 (file)
@@ -9,7 +9,7 @@ $aTagsBlacklist
     'place' => array('house', 'houses'),
    );
 
-// If a class is in the white list then all types will 
+// If a class is in the white list then all types will
 // be ignored except the ones given in the list.
 // Also use this list to exclude an entire class from
 // special phrases.
similarity index 98%
rename from test/php/Nominatim/NominatimTest.php
rename to test/php/Nominatim/LibTest.php
index ed738c3773046a1739b138273131ad67c3ac76c3..ee6f94f237e83e0c09a66c760b6e476437b2c482 100644 (file)
@@ -4,15 +4,8 @@ namespace Nominatim;
 
 require_once '../../lib/lib.php';
 
-class NominatimTest extends \PHPUnit_Framework_TestCase
+class LibTest extends \PHPUnit_Framework_TestCase
 {
-
-
-    protected function setUp()
-    {
-    }
-
-
     public function testGetClassTypesWithImportance()
     {
         $aClasses = getClassTypesWithImportance();
index 90477b81e742857ab84a945f55e505ea8af8b780..b767adb36ff2774ea8b208adcc670c5866de65fa 100755 (executable)
@@ -37,7 +37,7 @@ $sTestPageText = <<<EOD
 | coasters = 12
 | water_rides = 2
 | owner = [[Six Flags]]
-| general_manager = 
+| general_manager =
 | homepage = [http://www.sixflags.com/parks/greatadventure/ Six Flags Great Adventure]
 }}
 EOD;
index f1234295f4d44378e6dfb8958531d9859d53a1db..171de42acaa6ca3694b5619d53510894583133db 100644 (file)
@@ -2,6 +2,10 @@ h1 {
   margin: 10px 0;
   padding-left: 8px;
 }
+h1 small a {
+  font-size: 0.5em;
+  white-space: nowrap;
+}
 h2 {
   font-size: 2em;
   padding-left: 8px;
index 24e8cd76a2d70217b23ca9c074f24d0bd75c4392..6989d4882cbf95afebbee85aa5a8d62ea7618df2 100755 (executable)
@@ -16,15 +16,21 @@ $sLanguagePrefArraySQL = 'ARRAY['.join(',', array_map('getDBQuoted', $aLangPrefO
 $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,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 = [];
+        }
     }
 }