]> git.openstreetmap.org Git - nominatim.git/blob - lib/template/search-xml.php
Merge remote-tracking branch 'upstream/master'
[nominatim.git] / lib / 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 echo " polygon='".(isset($aMoreParams['polygon'])?'true':'false')."'";
15 if (isset($aMoreParams['exclude_place_ids'])) {
16     echo " exclude_place_ids='".htmlspecialchars($aMoreParams['exclude_place_ids'])."'";
17 }
18 echo " more_url='".htmlspecialchars($sMoreURL)."'";
19 echo ">\n";
20
21 foreach ($aSearchResults as $iResNum => $aResult) {
22     echo "<place place_id='".$aResult['place_id']."'";
23     $sOSMType = formatOSMType($aResult['osm_type']);
24     if ($sOSMType) {
25         echo " osm_type='$sOSMType'";
26         echo " osm_id='".$aResult['osm_id']."'";
27     }
28     echo " place_rank='".$aResult['rank_search']."'";
29
30     if (isset($aResult['aBoundingBox'])) {
31         echo ' boundingbox="';
32         echo join(',', $aResult['aBoundingBox']);
33         echo '"';
34
35         if (isset($aResult['aPolyPoints'])) {
36             echo ' polygonpoints=\'';
37             echo json_encode($aResult['aPolyPoints']);
38             echo '\'';
39         }
40     }
41
42     if (isset($aResult['asgeojson'])) {
43         echo ' geojson=\'';
44         echo $aResult['asgeojson'];
45         echo '\'';
46     }
47
48     if (isset($aResult['assvg'])) {
49         echo ' geosvg=\'';
50         echo $aResult['assvg'];
51         echo '\'';
52     }
53
54     if (isset($aResult['astext'])) {
55         echo ' geotext=\'';
56         echo $aResult['astext'];
57         echo '\'';
58     }
59
60     if (isset($aResult['zoom'])) {
61         echo " zoom='".$aResult['zoom']."'";
62     }
63
64     echo " lat='".$aResult['lat']."'";
65     echo " lon='".$aResult['lon']."'";
66     echo " display_name='".htmlspecialchars($aResult['name'], ENT_QUOTES)."'";
67
68     echo " class='".htmlspecialchars($aResult['class'])."'";
69     echo " type='".htmlspecialchars($aResult['type'], ENT_QUOTES)."'";
70     echo " importance='".htmlspecialchars($aResult['importance'])."'";
71     if (isset($aResult['icon']) && $aResult['icon']) {
72         echo " icon='".htmlspecialchars($aResult['icon'], ENT_QUOTES)."'";
73     }
74
75     $bHasDelim = false;
76
77     if (isset($aResult['askml'])) {
78         if (!$bHasDelim) {
79             $bHasDelim = true;
80             echo '>';
81         }
82         echo "\n<geokml>";
83         echo $aResult['askml'];
84         echo '</geokml>';
85     }
86
87     if (isset($aResult['sExtraTags'])) {
88         if (!$bHasDelim) {
89             $bHasDelim = true;
90             echo '>';
91         }
92         echo "\n<extratags>";
93         foreach ($aResult['sExtraTags'] as $sKey => $sValue) {
94             echo '<tag key="'.htmlspecialchars($sKey).'" value="'.htmlspecialchars($sValue).'"/>';
95         }
96         echo '</extratags>';
97     }
98
99     if (isset($aResult['sNameDetails'])) {
100         if (!$bHasDelim) {
101             $bHasDelim = true;
102             echo '>';
103         }
104         echo "\n<namedetails>";
105         foreach ($aResult['sNameDetails'] as $sKey => $sValue) {
106             echo '<name desc="'.htmlspecialchars($sKey).'">';
107             echo htmlspecialchars($sValue);
108             echo '</name>';
109         }
110         echo '</namedetails>';
111     }
112
113     if (isset($aResult['address'])) {
114         if (!$bHasDelim) {
115             $bHasDelim = true;
116             echo '>';
117         }
118         echo "\n";
119         foreach ($aResult['address']->getAddressNames() as $sKey => $sValue) {
120             $sKey = str_replace(' ', '_', $sKey);
121             echo "<$sKey>";
122             echo htmlspecialchars($sValue);
123             echo "</$sKey>";
124         }
125     }
126
127     if ($bHasDelim) {
128         echo '</place>';
129     } else {
130         echo '/>';
131     }
132 }
133
134 echo '</' . (isset($sXmlRootTag)?$sXmlRootTag:'searchresults') . '>';