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>';
}
}
$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'];
$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']
};
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);
}
}
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
$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();
$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, ';
$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
$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
$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
$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, ";
$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();
}
}
$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();
}
}
}