]> git.openstreetmap.org Git - nominatim.git/blob - lib-php/template/search-xml.php
Merge pull request #2390 from lonvia/responsible-disclosure
[nominatim.git] / lib-php / template / search-xml.php
1 <?php
2 header('content-type: text/xml; charset=UTF-8');
3
4 echo '<';
5 echo '?xml version="1.0" encoding="UTF-8" ?';
6 echo ">\n";
7
8 echo '<';
9 echo (isset($sXmlRootTag)?$sXmlRootTag:'searchresults');
10 echo " timestamp='".date(DATE_RFC822)."'";
11 echo " attribution='Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright'";
12 echo " querystring='".htmlspecialchars($sQuery, ENT_QUOTES)."'";
13 if (isset($aMoreParams['viewbox'])) echo " viewbox='".htmlspecialchars($aMoreParams['viewbox'], ENT_QUOTES)."'";
14 if (isset($aMoreParams['exclude_place_ids'])) {
15     echo " exclude_place_ids='".htmlspecialchars($aMoreParams['exclude_place_ids'])."'";
16 }
17 echo " more_url='".htmlspecialchars($sMoreURL)."'";
18 echo ">\n";
19
20 foreach ($aSearchResults as $iResNum => $aResult) {
21     echo "<place place_id='".$aResult['place_id']."'";
22     $sOSMType = formatOSMType($aResult['osm_type']);
23     if ($sOSMType) {
24         echo " osm_type='$sOSMType'";
25         echo " osm_id='".$aResult['osm_id']."'";
26     }
27     echo " place_rank='".$aResult['rank_search']."'";
28     echo " address_rank='".$aResult['rank_address']."'";
29
30     if (isset($aResult['aBoundingBox'])) {
31         echo ' boundingbox="';
32         echo join(',', $aResult['aBoundingBox']);
33         echo '"';
34     }
35
36     if (isset($aResult['asgeojson'])) {
37         echo ' geojson=\'';
38         echo $aResult['asgeojson'];
39         echo '\'';
40     }
41
42     if (isset($aResult['assvg'])) {
43         echo ' geosvg=\'';
44         echo $aResult['assvg'];
45         echo '\'';
46     }
47
48     if (isset($aResult['astext'])) {
49         echo ' geotext=\'';
50         echo $aResult['astext'];
51         echo '\'';
52     }
53
54     if (isset($aResult['zoom'])) {
55         echo " zoom='".$aResult['zoom']."'";
56     }
57
58     echo " lat='".$aResult['lat']."'";
59     echo " lon='".$aResult['lon']."'";
60     echo " display_name='".htmlspecialchars($aResult['name'], ENT_QUOTES)."'";
61
62     echo " class='".htmlspecialchars($aResult['class'])."'";
63     echo " type='".htmlspecialchars($aResult['type'], ENT_QUOTES)."'";
64     echo " importance='".htmlspecialchars($aResult['importance'])."'";
65     if (isset($aResult['icon']) && $aResult['icon']) {
66         echo " icon='".htmlspecialchars($aResult['icon'], ENT_QUOTES)."'";
67     }
68
69     $bHasDelim = false;
70
71     if (isset($aResult['askml'])) {
72         if (!$bHasDelim) {
73             $bHasDelim = true;
74             echo '>';
75         }
76         echo "\n<geokml>";
77         echo $aResult['askml'];
78         echo '</geokml>';
79     }
80
81     if (isset($aResult['sExtraTags'])) {
82         if (!$bHasDelim) {
83             $bHasDelim = true;
84             echo '>';
85         }
86         echo "\n<extratags>";
87         foreach ($aResult['sExtraTags'] as $sKey => $sValue) {
88             echo '<tag key="'.htmlspecialchars($sKey).'" value="'.htmlspecialchars($sValue).'"/>';
89         }
90         echo '</extratags>';
91     }
92
93     if (isset($aResult['sNameDetails'])) {
94         if (!$bHasDelim) {
95             $bHasDelim = true;
96             echo '>';
97         }
98         echo "\n<namedetails>";
99         foreach ($aResult['sNameDetails'] as $sKey => $sValue) {
100             echo '<name desc="'.htmlspecialchars($sKey).'">';
101             echo htmlspecialchars($sValue);
102             echo '</name>';
103         }
104         echo '</namedetails>';
105     }
106
107     if (isset($aResult['address'])) {
108         if (!$bHasDelim) {
109             $bHasDelim = true;
110             echo '>';
111         }
112         echo "\n";
113         foreach ($aResult['address']->getAddressNames() as $sKey => $sValue) {
114             $sKey = str_replace(' ', '_', $sKey);
115             echo "<$sKey>";
116             echo htmlspecialchars($sValue);
117             echo "</$sKey>";
118         }
119     }
120
121     if ($bHasDelim) {
122         echo '</place>';
123     } else {
124         echo '/>';
125     }
126 }
127
128 echo '</' . (isset($sXmlRootTag)?$sXmlRootTag:'searchresults') . '>';