diff --git a/lib/SearchDescription.php b/lib/SearchDescription.php
index f0106063..2053082f 100644
--- a/lib/SearchDescription.php
+++ b/lib/SearchDescription.php
@@ -86,18 +86,6 @@ class SearchDescription
$this->sType = $sType;
}
- /**
- * Check if this might be a full address search.
- *
- * @return bool True if the search contains name, address and housenumber.
- */
- public function looksLikeFullAddress()
- {
- return (!empty($this->aName))
- && (!empty($this->aAddress) || $this->sCountryCode)
- && preg_match('/[0-9]+/', $this->sHouseNumber);
- }
-
/**
* Check if any operator is set.
*
@@ -1027,7 +1015,7 @@ class SearchDescription
'Name terms (stop words)' => $this->aNameNonSearch,
'Address terms' => $this->aAddress,
'Address terms (stop words)' => $this->aAddressNonSearch,
- 'Address terms (full words)' => $this->aFullNameAddress,
+ 'Address terms (full words)' => $this->aFullNameAddress ?? '',
'Special search' => $this->iOperator,
'Class' => $this->sClass,
'Type' => $this->sType,
@@ -1039,7 +1027,7 @@ class SearchDescription
public function dumpAsHtmlTableRow(&$aWordIDs)
{
$kf = function ($k) use (&$aWordIDs) {
- return $aWordIDs[$k];
+ return $aWordIDs[$k] ?? '['.$k.']';
};
echo '
';
diff --git a/lib/output.php b/lib/output.php
index 823a6631..8de81576 100644
--- a/lib/output.php
+++ b/lib/output.php
@@ -16,58 +16,3 @@ function formatOSMType($sType, $bIncludeExternal = true)
return '';
}
-
-function osmLink($aFeature, $sRefText = false)
-{
- $sOSMType = formatOSMType($aFeature['osm_type'], false);
- if ($sOSMType) {
- return ''.$sOSMType.' '.($sRefText?$sRefText:$aFeature['osm_id']).'';
- }
- return '';
-}
-
-function wikipediaLink($aFeature)
-{
- if ($aFeature['wikipedia']) {
- list($sLanguage, $sArticle) = explode(':', $aFeature['wikipedia']);
- return ''.$aFeature['wikipedia'].'';
- }
- return '';
-}
-
-function detailsLink($aFeature, $sTitle = false, $sExtraProperties = false)
-{
- if (!$aFeature['place_id']) return '';
-
- $sHtml = ''.($sTitle?$sTitle:$aFeature['place_id']).'';
-
- return $sHtml;
-}
-
-function detailsPermaLink($aFeature, $sRefText = false, $sExtraProperties = false)
-{
- $sOSMType = formatOSMType($aFeature['osm_type'], false);
-
- if ($sOSMType) {
- $sHtml = '';
-
- if ($sRefText) {
- $sHtml .= $sRefText.'';
- } else {
- $sHtml .= $sOSMType.' '.$aFeature['osm_id'].'';
- }
-
- return $sHtml;
- }
- return detailsLink($aFeature, $sRefText, $sExtraProperties);
-}
diff --git a/test/bdd/api/details/language.feature b/test/bdd/api/details/language.feature
new file mode 100644
index 00000000..6611c81b
--- /dev/null
+++ b/test/bdd/api/details/language.feature
@@ -0,0 +1,62 @@
+@APIDB
+Feature: Localization of search results
+
+ Scenario: default language
+ When sending details query for R1155955
+ Then results contain
+ | ID | localname |
+ | 0 | Liechtenstein |
+
+ Scenario: accept-language first
+ When sending details query for R1155955
+ | accept-language |
+ | zh,de |
+ Then results contain
+ | ID | localname |
+ | 0 | 列支敦士登 |
+
+ Scenario: accept-language missing
+ When sending details query for R1155955
+ | accept-language |
+ | xx,fr,en,de |
+ Then results contain
+ | ID | localname |
+ | 0 | Liechtenstein |
+
+ Scenario: http accept language header first
+ Given the HTTP header
+ | accept-language |
+ | fo;q=0.8,en-ca;q=0.5,en;q=0.3 |
+ When sending details query for R1155955
+ Then results contain
+ | ID | localname |
+ | 0 | Liktinstein |
+
+ Scenario: http accept language header and accept-language
+ Given the HTTP header
+ | accept-language |
+ | fr-ca,fr;q=0.8,en-ca;q=0.5,en;q=0.3 |
+ When sending details query for R1155955
+ | accept-language |
+ | fo,en |
+ Then results contain
+ | ID | localname |
+ | 0 | Liktinstein |
+
+ Scenario: http accept language header fallback
+ Given the HTTP header
+ | accept-language |
+ | fo-ca,en-ca;q=0.5 |
+ When sending details query for R1155955
+ Then results contain
+ | ID | localname |
+ | 0 | Liktinstein |
+
+ Scenario: http accept language header fallback (upper case)
+ Given the HTTP header
+ | accept-language |
+ | fo-FR;q=0.8,en-ca;q=0.5 |
+ When sending details query for R1155955
+ Then results contain
+ | ID | localname |
+ | 0 | Liktinstein |
diff --git a/test/bdd/api/details/params.feature b/test/bdd/api/details/params.feature
index 03b91d29..87c3356c 100644
--- a/test/bdd/api/details/params.feature
+++ b/test/bdd/api/details/params.feature
@@ -8,14 +8,15 @@ Feature: Object details
And result has attributes geometry
And result has not attributes keywords,address,linked_places,parentof
- Scenario: JSON Details with keywords
+ Scenario: JSON Details with pretty printing
When sending json details query for W297699560
- | keywords |
- | 1 |
+ | pretty |
+ | 1 |
Then the result is valid json
- And result has attributes keywords
+ And result has attributes geometry
+ And result has not attributes keywords,address,linked_places,parentof
- Scenario: JSON Details with addressdetails
+ Scenario: JSON Details with addressdetails
When sending json details query for W297699560
| addressdetails |
| 1 |
@@ -36,22 +37,46 @@ Feature: Object details
Then the result is valid json
And result has attributes hierarchy
- Scenario: JSON Details with linkedplaces
- When sending json details query for R123924
- | linkedplaces |
- | 1 |
+ Scenario: JSON Details with grouped hierarchy
+ When sending json details query for W297699560
+ | hierarchy | group_hierarchy |
+ | 1 | 1 |
Then the result is valid json
+ And result has attributes hierarchy
- Scenario Outline: HTML Details with keywords
+ Scenario Outline: JSON Details with keywords
When sending json details query for
| keywords |
| 1 |
Then the result is valid json
+ And result has attributes keywords
Examples:
| osmid |
| W297699560 |
| W243055645 |
| W243055716 |
+ | W43327921 |
+
+ # ticket #1343
+ Scenario: Details of a country with keywords
+ When sending details query for R1155955
+ | keywords |
+ | 1 |
+ Then the result is valid json
+
+ Scenario Outline: JSON details with full geometry
+ When sending json details query for
+ | polygon_geojson |
+ | 1 |
+ Then the result is valid json
+ And result has attributes geometry
+
+ Examples:
+ | osmid |
+ | W297699560 |
+ | W243055645 |
+ | W243055716 |
+ | W43327921 |
diff --git a/test/bdd/api/details/simple.feature b/test/bdd/api/details/simple.feature
index 906c4ce5..a9b6d6a7 100644
--- a/test/bdd/api/details/simple.feature
+++ b/test/bdd/api/details/simple.feature
@@ -2,36 +2,54 @@
Feature: Object details
Check details page for correctness
+ Scenario: Details by place ID
+ When sending details query for 107077
+ Then the result is valid json
+ And results contain
+ | place_id |
+ | 107077 |
+
Scenario Outline: Details via OSM id
- When sending details query for