]> git.openstreetmap.org Git - nominatim.git/commitdiff
rename parentof to hierarchy and other lonvia Mar/29 PR feedback
authormarc tobias <mtmail@gmx.net>
Thu, 5 Apr 2018 13:22:50 +0000 (15:22 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Thu, 12 Apr 2018 20:02:24 +0000 (22:02 +0200)
lib/template/details-html.php
lib/template/details-json.php
test/bdd/api/details/params.feature
website/details.php

index 89c1c5430086bbcc8b1fb31d62fffdc45a8ba10f..4d5ccb87c60c23c1b35e1f22b27e869e14219ac8 100644 (file)
 
                     kv('Name'            , hash_to_subtable($aPointDetails['aNames']) );
                     kv('Type'            , $aPointDetails['class'].':'.$aPointDetails['type'] );
-                    kv('Last Updated'    , $aPointDetails['indexed_date'] );
+                    kv('Last Updated'    , (new DateTime('@'.$aPointDetails['indexed_epoch']))->format(DateTime::RFC822) );
                     kv('Admin Level'     , $aPointDetails['admin_level'] );
                     kv('Rank'            , $aPointDetails['rank_search_label'] );
                     if ($aPointDetails['calculated_importance']) {
         }
     }
     
-    if (!empty($aParentOfLines))
+    if (!empty($aHierarchyLines))
     {
         headline('Parent Of');
 
         $aGroupedAddressLines = array();
-        foreach($aParentOfLines as $aAddressLine)
+        foreach($aHierarchyLines as $aAddressLine)
         {
             if ($aAddressLine['type'] == 'yes') $sType = $aAddressLine['class'];
             else $sType = $aAddressLine['type'];
                 $aGroupedAddressLines[$sType] = array();
             $aGroupedAddressLines[$sType][] = $aAddressLine;
         }
-        foreach($aGroupedAddressLines as $sGroupHeading => $aParentOfLines)
+        foreach($aGroupedAddressLines as $sGroupHeading => $aHierarchyLines)
         {
             $sGroupHeading = ucwords($sGroupHeading);
             headline3($sGroupHeading);
 
-            foreach($aParentOfLines as $aAddressLine)
+            foreach($aHierarchyLines as $aAddressLine)
             {
                 _one_row($aAddressLine);
             }
         }
-        if (count($aParentOfLines) >= 500) {
+        if (count($aHierarchyLines) >= 500) {
             echo '<p>There are more child objects which are not shown.</p>';
         }
     }
index 5513dbd9e8adadb4a427817f4bac50b3b8b52d48..f58d38b24eeb544449cecdfe329a550df2f74734 100644 (file)
@@ -17,16 +17,16 @@ $aPlaceDetails['names'] = $aPointDetails['aNames'];
 
 $aPlaceDetails['addresstags'] = $aPointDetails['aAddressTags'];
 $aPlaceDetails['housenumber'] = $aPointDetails['housenumber'];
-$aPlaceDetails['postcode'] = $aPointDetails['postcode']; // computed
+$aPlaceDetails['calculated_postcode'] = $aPointDetails['postcode'];
 $aPlaceDetails['country_code'] = $aPointDetails['country_code'];
 
-$aPlaceDetails['indexed_date'] = $aPointDetails['indexed_date'];
+$aPlaceDetails['indexed_date'] = (new DateTime('@'.$aPointDetails['indexed_epoch']))->format(DateTime::RFC822);
 $aPlaceDetails['importance'] = (float) $aPointDetails['importance'];
 $aPlaceDetails['calculated_importance'] = (float) $aPointDetails['calculated_importance'];
 
 $aPlaceDetails['extratags'] = $aPointDetails['aExtraTags'];
 $aPlaceDetails['calculated_wikipedia'] = $aPointDetails['wikipedia'];
-$aPlaceDetails['icon'] = $aPointDetails['icon'];
+$aPlaceDetails['icon'] = CONST_Website_BaseURL.'images/mapicons/'.$aPointDetails['icon'].'.n.32.png';
 
 $aPlaceDetails['rank_address'] = (int) $aPointDetails['rank_address'];
 $aPlaceDetails['rank_search'] = (int) $aPointDetails['rank_search'];
@@ -39,22 +39,23 @@ $aPlaceDetails['lon'] = (float) $aPointDetails['lon'];
 
 $aPlaceDetails['geometry'] = json_decode($aPointDetails['asgeojson']);
 
-$funcMapAddressLines = function ($aFull) {
+$funcMapAddressLine = function ($aFull) {
     $aMapped = [
         'localname' => $aFull['localname'],
-        'place_id' => (int) $aFull['place_id'],
-        'osm_id' => (int) $aFull['osm_id'],
-        'osm_type' => formatOSMType($aFull['osm_type']),
+        'place_id' => isset($aFull['place_id']) ? (int) $aFull['place_id'] : null,
+        'osm_id' => isset($aFull['osm_id']) ? (int) $aFull['osm_id'] : null,
+        'osm_type' => isset($aFull['osm_type']) ? $aFull['osm_type'] : null,
         'class' => $aFull['class'],
         'type' => $aFull['type'],
-        'admin_level' => (int) $aFull['admin_level'],
-        'rank_address' => (int) $aFull['rank_address'],
+        'admin_level' => isset($aFull['admin_level']) ? (int) $aFull['admin_level'] : null,
+        'rank_address' => $aFull['rank_address'] ? (int) $aFull['rank_address'] : null,
         'distance' => (float) $aFull['distance']
     ];
+
     return $aMapped;
 };
 
-$funcMapKeywords = function ($aFull) {
+$funcMapKeyword = function ($aFull) {
     $aMapped = [
         'id' => (int) $aFull['word_id'],
         'token' => $aFull['word_token']
@@ -63,39 +64,38 @@ $funcMapKeywords = function ($aFull) {
 };
 
 if ($aAddressLines) {
-    $aPlaceDetails['address'] = array_map($funcMapAddressLines, $aAddressLines);
+    $aPlaceDetails['address'] = array_map($funcMapAddressLine, $aAddressLines);
 }
 
 if ($aLinkedLines) {
-    $aPlaceDetails['linked_places'] = array_map($funcMapAddressLines, $aLinkedLines);
+    $aPlaceDetails['linked_places'] = array_map($funcMapAddressLine, $aLinkedLines);
 }
 
 if ($bIncludeKeywords) {
     $aPlaceDetails['keywords'] = array();
 
     if ($aPlaceSearchNameKeywords) {
-        $aPlaceDetails['keywords']['name'] = array_map($funcMapKeywords, $aPlaceSearchNameKeywords);
+        $aPlaceDetails['keywords']['name'] = array_map($funcMapKeyword, $aPlaceSearchNameKeywords);
     }
 
     if ($aPlaceSearchAddressKeywords) {
-        $aPlaceDetails['keywords']['address'] = array_map($funcMapKeywords, $aPlaceSearchAddressKeywords);
+        $aPlaceDetails['keywords']['address'] = array_map($funcMapKeyword, $aPlaceSearchAddressKeywords);
     }
 }
 
-if ($bIncludeChildPlaces) {
-    $aPlaceDetails['parentof'] =  array_map($funcMapAddressLines, $aParentOfLines);
-
-    if ($bGroupChildPlaces) {
-        $aGroupedAddressLines = [];
-        foreach ($aParentOfLines as $aAddressLine) {
+if ($bIncludeHierarchy) {
+    if ($bGroupHierarchy) {
+        $aPlaceDetails['hierarchy'] = array();
+        foreach ($aHierarchyLines as $aAddressLine) {
             if ($aAddressLine['type'] == 'yes') $sType = $aAddressLine['class'];
             else $sType = $aAddressLine['type'];
 
-            if (!isset($aGroupedAddressLines[$sType]))
-                $aGroupedAddressLines[$sType] = [];
-            $aGroupedAddressLines[$sType][] = $aAddressLine;
+            if (!isset($aPlaceDetails['hierarchy'][$sType]))
+                $aPlaceDetails['hierarchy'][$sType] = array();
+            $aPlaceDetails['hierarchy'][$sType][] = $funcMapAddressLine($aAddressLine);
         }
-        $aPlaceDetails['parentof'] = $aGroupedAddressLines;
+    } else {
+        $aPlaceDetails['hierarchy'] = array_map($funcMapAddressLine, $aHierarchyLines);
     }
 }
 
index b0a80f5b1df058cecd84db4751b8e3c424dce291..a0b990ebc14cd90123fc111f13211f0f326d56f0 100644 (file)
@@ -29,12 +29,12 @@ Feature: Object details
         Then the result is valid json
         And result has attributes linked_places
 
-    Scenario: JSON Details with childplaces
+    Scenario: JSON Details with hierarchy
         When sending json details query for W78099902
-            | childplaces |
+            | hierarchy |
             | 1 |
         Then the result is valid json
-        And result has attributes parentof
+        And result has attributes hierarchy
 
     Scenario: JSON Details with linkedplaces
         When sending json details query for R123924
index 11f23cbde5d1b3171647ec6952897c0fe794a592..bc98d40058bc8302ef8b2d8feb9250bc2f4c9588 100755 (executable)
@@ -19,11 +19,11 @@ $sOsmType = $oParams->getSet('osmtype', array('N', 'W', 'R'));
 $iOsmId = $oParams->getInt('osmid', -1);
 $sClass = $oParams->getString('class');
 
-$bIncludeKeywords = $oParams->getBool('keywords');
+$bIncludeKeywords = $oParams->getBool('keywords', false);
 $bIncludeAddressDetails = $oParams->getBool('addressdetails', $sOutputFormat == 'html');
-$bIncludeLinkedPlaces = $oParams->getBool('linkedplaces', $sOutputFormat == 'html');
-$bIncludeChildPlaces = $oParams->getBool('childplaces', $sOutputFormat == 'html');
-$bGroupChildPlaces = $oParams->getBool('group_childplaces', false);
+$bIncludeLinkedPlaces = $oParams->getBool('linkedplaces', true);
+$bIncludeHierarchy = $oParams->getBool('hierarchy', $sOutputFormat == 'html');
+$bGroupHierarchy = $oParams->getBool('group_hierarchy', false);
 $bIncludePolygonAsGeoJSON = $oParams->getBool('polygon_geojson', $sOutputFormat == 'html');
 
 $oDB =& getDB();
@@ -102,7 +102,7 @@ $hLog = logStart($oDB, 'details', $_SERVER['QUERY_STRING'], $aLangPrefOrder);
 $sSQL = 'SELECT place_id, osm_type, osm_id, class, type, name, admin_level,';
 $sSQL .= '    housenumber, postcode, country_code,';
 $sSQL .= '    importance, wikipedia,';
-$sSQL .= "    to_char(indexed_date, 'YYYY-MM-DD HH24:MI') AS indexed_date,";
+$sSQL .= '    ROUND(EXTRACT(epoch FROM indexed_date)) AS indexed_epoch,';
 $sSQL .= '    parent_place_id, ';
 $sSQL .= '    rank_address, ';
 $sSQL .= '    rank_search, ';
@@ -150,7 +150,7 @@ $sSQL = 'SELECT (each(name)).key,(each(name)).value FROM placex ';
 $sSQL .= "WHERE place_id = $iPlaceID ORDER BY (each(name)).key";
 $aPointDetails['aNames'] = $oDB->getAssoc($sSQL);
 if (PEAR::isError($aPointDetails['aNames'])) { // possible timeout
-    $aPointDetails['aNames'] = [];
+    $aPointDetails['aNames'] = array();
 }
 
 // Address tags
@@ -158,7 +158,7 @@ $sSQL = 'SELECT (each(address)).key as key,(each(address)).value FROM placex ';
 $sSQL .= "WHERE place_id = $iPlaceID ORDER BY key";
 $aPointDetails['aAddressTags'] = $oDB->getAssoc($sSQL);
 if (PEAR::isError($aPointDetails['aAddressTags'])) { // possible timeout
-    $aPointDetails['aAddressTags'] = [];
+    $aPointDetails['aAddressTags'] = array();
 }
 
 // Extra tags
@@ -166,7 +166,7 @@ $sSQL = 'SELECT (each(extratags)).key,(each(extratags)).value FROM placex ';
 $sSQL .= "WHERE place_id = $iPlaceID ORDER BY (each(extratags)).key";
 $aPointDetails['aExtraTags'] = $oDB->getAssoc($sSQL);
 if (PEAR::isError($aPointDetails['aExtraTags'])) { // possible timeout
-    $aPointDetails['aExtraTags'] = [];
+    $aPointDetails['aExtraTags'] = array();
 }
 
 // Address
@@ -206,13 +206,13 @@ if ($bIncludeLinkedPlaces) {
     $sSQL .= '   housenumber';
     $aLinkedLines = $oDB->getAll($sSQL);
     if (PEAR::isError($aLinkedLines)) { // possible timeout
-        $aLinkedLines = [];
+        $aLinkedLines = array();
     }
 }
 
 // All places this is an imediate parent of
-$aParentOfLines = false;
-if ($bIncludeChildPlaces) {
+$aHierarchyLines = false;
+if ($bIncludeHierarchy) {
     $sSQL = 'SELECT obj.place_id, osm_type, osm_id, class, type, housenumber,';
     $sSQL .= " admin_level, rank_address, ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon') AS isarea,";
     $sSQL .= " ST_DistanceSpheroid(geometry, placegeometry, 'SPHEROID[\"WGS 84\",6378137,298.257223563, AUTHORITY[\"EPSG\",\"7030\"]]') AS distance, ";
@@ -238,9 +238,9 @@ if ($bIncludeChildPlaces) {
     $sSQL .= '    rank_search ASC, ';
     $sSQL .= '    localname, ';
     $sSQL .= '    housenumber';
-    $aParentOfLines = $oDB->getAll($sSQL);
-    if (PEAR::isError($aParentOfLines)) { // possible timeout
-        $aParentOfLines = [];
+    $aHierarchyLines = $oDB->getAll($sSQL);
+    if (PEAR::isError($aHierarchyLines)) { // possible timeout
+        $aHierarchyLines = array();
     }
 }
 
@@ -250,20 +250,20 @@ if ($bIncludeKeywords) {
     $sSQL = "SELECT * FROM search_name WHERE place_id = $iPlaceID";
     $aPlaceSearchName = $oDB->getRow($sSQL); // can be null
     if (!$aPlaceSearchName || PEAR::isError($aPlaceSearchName)) { // possible timeout
-        $aPlaceSearchName = [];
+        $aPlaceSearchName = array();
     }
 
     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 = [];
+            $aPlaceSearchNameKeywords = array();
         }
 
         $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 = [];
+            $aPlaceSearchAddressKeywords = array();
         }
     }
 }