From 31c7f255414134ff63d78306763bd3937ccc325c Mon Sep 17 00:00:00 2001 From: marc tobias Date: Thu, 5 Apr 2018 15:22:50 +0200 Subject: [PATCH] rename parentof to hierarchy and other lonvia Mar/29 PR feedback --- lib/template/details-html.php | 12 ++++---- lib/template/details-json.php | 48 ++++++++++++++--------------- test/bdd/api/details/params.feature | 6 ++-- website/details.php | 34 ++++++++++---------- 4 files changed, 50 insertions(+), 50 deletions(-) diff --git a/lib/template/details-html.php b/lib/template/details-html.php index 89c1c543..4d5ccb87 100644 --- a/lib/template/details-html.php +++ b/lib/template/details-html.php @@ -114,7 +114,7 @@ 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']) { @@ -199,12 +199,12 @@ } } - 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']; @@ -213,17 +213,17 @@ $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 '

There are more child objects which are not shown.

'; } } diff --git a/lib/template/details-json.php b/lib/template/details-json.php index 5513dbd9..f58d38b2 100644 --- a/lib/template/details-json.php +++ b/lib/template/details-json.php @@ -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); } } diff --git a/test/bdd/api/details/params.feature b/test/bdd/api/details/params.feature index b0a80f5b..a0b990eb 100644 --- a/test/bdd/api/details/params.feature +++ b/test/bdd/api/details/params.feature @@ -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 diff --git a/website/details.php b/website/details.php index 11f23cbd..bc98d400 100755 --- a/website/details.php +++ b/website/details.php @@ -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(); } } } -- 2.39.5