Merge pull request #456 from Struart88/patch-2
[FlightAirMap.git] / search-kml.php
blob06d7843ef2da45c7c298fb786aed6c055fe8d12e
1 <?php
2 require_once('require/class.Connection.php');
3 require_once('require/class.Spotter.php');
4 require_once('require/class.SpotterArchive.php');
5 require_once('require/class.Language.php');
6 $Spotter = new Spotter();
7 if (isset($_GET['start_date'])) {
8 //for the date manipulation into the query
9 if($_GET['start_date'] != "" && $_GET['end_date'] != ""){
10 $start_date = date("Y-m-d",strtotime($_GET['start_date']))." 00:00:00";
11 $end_date = date("Y-m-d",strtotime($_GET['end_date']))." 00:00:00";
12 $sql_date = $start_date.",".$end_date;
13 } else if($_GET['start_date'] != ""){
14 $start_date = date("Y-m-d",strtotime($_GET['start_date']))." 00:00:00";
15 $sql_date = $start_date;
16 } else if($_GET['start_date'] == "" && $_GET['end_date'] != ""){
17 $end_date = date("Y-m-d H:i:s", strtotime("2014-04-12")).",".date("Y-m-d",strtotime($_GET['end_date']))." 00:00:00";
18 $sql_date = $end_date;
19 } else $sql_date = '';
20 } else $sql_date = '';
22 if (isset($_GET['highest_altitude'])) {
23 //for altitude manipulation
24 if($_GET['highest_altitude'] != "" && $_GET['lowest_altitude'] != ""){
25 $end_altitude = filter_input(INPUT_GET,'highest_altitude',FILTER_SANITIZE_NUMBER_INT);
26 $start_altitude = filter_input(INPUT_GET,'lowest_altitude',FILTER_SANITIZE_NUMBER_INT);
27 $sql_altitude = $start_altitude.",".$end_altitude;
28 } else if($_GET['highest_altitude'] != ""){
29 $end_altitude = filter_input(INPUT_GET,'highest_altitude',FILTER_SANITIZE_NUMBER_INT);
30 $sql_altitude = $end_altitude;
31 } else if($_GET['highest_altitude'] == "" && $_GET['lowest_altitude'] != ""){
32 $start_altitude = filter_input(INPUT_GET,'lowest_altitude',FILTER_SANITIZE_NUMBER_INT).",60000";
33 $sql_altitude = $start_altitude;
34 } else $sql_altitude = '';
35 } else $sql_altitude = '';
37 //calculuation for the pagination
38 if(!isset($_GET['limit']))
40 if (!isset($_GET['number_results'])) {
41 $limit_start = 0;
42 $limit_end = 25;
43 $absolute_difference = 25;
44 } else {
45 if ($_GET['number_results'] > 1000){
46 $_GET['number_results'] = 1000;
48 $limit_start = 0;
49 $limit_end = filter_input(INPUT_GET,'number_results',FILTER_SANITIZE_NUMBER_INT);
50 $absolute_difference = filter_input(INPUT_GET,'number_results',FILTER_SANITIZE_NUMBER_INT);
52 } else {
53 $limit_explode = explode(",", $_GET['limit']);
54 $limit_start = filter_var($limit_explode[0],FILTER_SANITIZE_NUMBER_INT);
55 $limit_end = filter_var($limit_explode[1],FILTER_SANITIZE_NUMBER_INT);
58 $absolute_difference = abs($limit_start - $limit_end);
59 $limit_next = $limit_end + $absolute_difference;
60 $limit_previous_1 = $limit_start - $absolute_difference;
61 $limit_previous_2 = $limit_end - $absolute_difference;
63 if (!isset($_GET['download']))
65 header('Content-disposition: attachment; filename="flightairmap.kml"');
68 header('Content-Type: text/xml');
70 if (isset($_GET['sort'])) $sort = $_GET['sort'];
71 else $sort = '';
72 $q = filter_input(INPUT_GET,'q',FILTER_SANITIZE_STRING);
73 $id = filter_input(INPUT_GET,'id',FILTER_SANITIZE_STRING);
74 $registration = filter_input(INPUT_GET,'registratrion',FILTER_SANITIZE_STRING);
75 $aircraft = filter_input(INPUT_GET,'aircraft',FILTER_SANITIZE_STRING);
76 $manufacturer = filter_input(INPUT_GET,'manufacturer',FILTER_SANITIZE_STRING);
77 $highlights = filter_input(INPUT_GET,'highlights',FILTER_SANITIZE_STRING);
78 $airline = filter_input(INPUT_GET,'airline',FILTER_SANITIZE_STRING);
79 $airline_country = filter_input(INPUT_GET,'airline_country',FILTER_SANITIZE_STRING);
80 $airline_type = filter_input(INPUT_GET,'airline_type',FILTER_SANITIZE_STRING);
81 $airport = filter_input(INPUT_GET,'airport',FILTER_SANITIZE_STRING);
82 $airport_country = filter_input(INPUT_GET,'airport_country',FILTER_SANITIZE_STRING);
83 $callsign = filter_input(INPUT_GET,'callsign',FILTER_SANITIZE_STRING);
84 $owner = filter_input(INPUT_GET,'owner',FILTER_SANITIZE_STRING);
85 $pilot_id = filter_input(INPUT_GET,'pilot_id',FILTER_SANITIZE_STRING);
86 $pilot_name = filter_input(INPUT_GET,'pilot_name',FILTER_SANITIZE_STRING);
87 $departure_airport_route = filter_input(INPUT_GET,'departure_airport_route',FILTER_SANITIZE_STRING);
88 $arrival_airport_route = filter_input(INPUT_GET,'arrival_airport_route',FILTER_SANITIZE_STRING);
89 if ($id != '') {
90 $spotter_array = $Spotter->getSpotterDataByID($id);
91 } else {
92 $spotter_array = $Spotter->searchSpotterData($q,$registration,$aircraft,strtolower(str_replace("-", " ", $manufacturer)),$highlights,$airline,$airline_country,$airline_type,$airport,$airport_country,$callsign,$departure_airport_route,$arrival_airport_route,$owner,$pilot_id,$pilot_name,$sql_altitude,$sql_date,$limit_start.",".$absolute_difference,$sort,'');
94 $output = '<?xml version="1.0" encoding="UTF-8"?>';
95 $output .= '<kml xmlns="http://www.opengis.net/kml/2.2">';
96 $output .= '<Document>';
97 $output .= '<Style id="departureAirport">';
98 $output .= '<IconStyle>';
99 $output .= '<Icon>';
100 $output .= '<href>http://real.flightairmap.com/images/kml_departure_airport.png</href>';
101 $output .= '</Icon>';
102 $output .= '</IconStyle>';
103 $output .= '</Style>';
104 $output .= '<Style id="arrivalAirport">';
105 $output .= '<IconStyle>';
106 $output .= '<Icon>';
107 $output .= '<href>http://real.flightairmap.com/images/kml_arrival_airport.png</href>';
108 $output .= '</Icon>';
109 $output .= '</IconStyle>';
110 $output .= '</Style>';
111 $output .= '<Style id="route">';
112 $output .= '<LineStyle>';
113 $output .= '<color>7f0000ff</color>';
114 $output .= '<width>2</width>';
115 $output .= '<outline>0</outline>';
116 $output .= '</LineStyle>';
117 $output .= '</Style>';
119 if (!empty($spotter_array)) {
120 foreach($spotter_array as $spotter_item) {
121 $altitude = $spotter_item['altitude'].'00';
122 $SpotterArchive = new SpotterArchive();
123 $archive_data = $SpotterArchive->getAllArchiveSpotterDataById($spotter_item['flightaware_id']);
124 if (!empty($archive_data)) {
125 //waypoint plotting
126 $output .= '<Placemark>';
127 $output .= '<styleUrl>#route</styleUrl>';
128 $output .= '<LineString>';
129 $output .= '<coordinates>';
130 foreach ($archive_data as $coord_data) {
131 $output .= $coord_data['longitude'].','.$coord_data['latitude'].','.$coord_data['real_altitude'].' ';
133 $output .= '</coordinates>';
134 $output .= '<altitudeMode>absolute</altitudeMode>';
135 $output .= '</LineString>';
136 $output .= '</Placemark>';
140 if ($spotter_item['waypoints'] != '') {
141 //waypoint plotting
142 $output .= '<Placemark>';
143 $output .= '<styleUrl>#route</styleUrl>';
144 $output .= '<LineString>';
145 $output .= '<coordinates>';
146 $waypoint_pieces = explode(' ', $spotter_item['waypoints']);
147 $waypoint_pieces = array_chunk($waypoint_pieces, 2);
148 foreach ($waypoint_pieces as $waypoint_coordinate) {
149 if (isset($waypoint_coordinate[1])) $output .= $waypoint_coordinate[1].','.$waypoint_coordinate[0].','.$altitude.' ';
151 $output .= '</coordinates>';
152 $output .= '<altitudeMode>absolute</altitudeMode>';
153 $output .= '</LineString>';
154 $output .= '</Placemark>';
157 //departure airport
158 $output .= '<Placemark>';
159 $output .= '<name>'.$spotter_item['departure_airport_city'].', '.$spotter_item['departure_airport_name'].', '.$spotter_item['departure_airport_country'].' ('.$spotter_item['departure_airport'].')</name>';
160 $output .= '<description><![CDATA[ ';
161 $output .= '<div class="ge-balloon">';
162 $output .= '<div class="ge-row">';
163 $output .= '<span>Name</span>';
164 $output .= $spotter_item['departure_airport_name'];
165 $output .= '</div>';
166 $output .= '<div class="ge-row">';
167 $output .= '<span>City</span>';
168 $output .= $spotter_item['departure_airport_city'];
169 $output .= '</div>';
170 $output .= '<div class="ge-row">';
171 $output .= '<span>Country</span>';
172 $output .= $spotter_item['departure_airport_country'];
173 $output .= '</div>';
174 $output .= '<div class="ge-row">';
175 $output .= '<span>ICAO</span>';
176 $output .= $spotter_item['departure_airport_icao'];
177 $output .= '</div>';
178 $output .= '<div class="ge-row">';
179 $output .= '<span>IATA</span>';
180 $output .= $spotter_item['departure_airport_iata'];
181 $output .= '</div>';
182 $output .= '<div class="ge-row">';
183 $output .= '<span>Coordinates</span>';
184 $output .= $spotter_item['departure_airport_latitude'].', '.$spotter_item['departure_airport_longitude'];
185 $output .= '</div>';
186 $output .= '<div class="ge-row">';
187 $output .= '<span>Altitude</span>';
188 $output .= $spotter_item['departure_airport_altitude'];
189 $output .= '</div>';
190 $output .= '</div>';
191 $output .= ' ]]></description>';
192 $output .= '<styleUrl>#departureAirport</styleUrl>';
193 $output .= '<Point>';
194 $output .= '<coordinates>'.$spotter_item['departure_airport_longitude'].', '.$spotter_item['departure_airport_latitude'].', '.$spotter_item['departure_airport_altitude'].'</coordinates>';
195 $output .= '<altitudeMode>absolute</altitudeMode>';
196 $output .= '</Point>';
197 $output .= '</Placemark>';
198 //arrival airport
199 $output .= '<Placemark>';
200 $output .= '<name>'.$spotter_item['arrival_airport_city'].', '.$spotter_item['arrival_airport_name'].', '.$spotter_item['arrival_airport_country'].' ('.$spotter_item['arrival_airport'].')</name>';
201 $output .= '<description><![CDATA[ ';
202 $output .= '<div class="ge-balloon">';
203 $output .= '<div class="ge-row">';
204 $output .= '<span>Name</span>';
205 $output .= $spotter_item['arrival_airport_name'];
206 $output .= '</div>';
207 $output .= '<div class="ge-row">';
208 $output .= '<span>City</span>';
209 $output .= $spotter_item['arrival_airport_city'];
210 $output .= '</div>';
211 $output .= '<div class="ge-row">';
212 $output .= '<span>Country</span>';
213 $output .= $spotter_item['arrival_airport_country'];
214 $output .= '</div>';
215 $output .= '<div class="ge-row">';
216 $output .= '<span>ICAO</span>';
217 $output .= $spotter_item['arrival_airport_icao'];
218 $output .= '</div>';
219 $output .= '<div class="ge-row">';
220 $output .= '<span>IATA</span>';
221 $output .= $spotter_item['arrival_airport_iata'];
222 $output .= '</div>';
223 $output .= '<div class="ge-row">';
224 $output .= '<span>Coordinates</span>';
225 $output .= $spotter_item['arrival_airport_latitude'].', '.$spotter_item['arrival_airport_longitude'];
226 $output .= '</div>';
227 $output .= '<div class="ge-row">';
228 $output .= '<span>Altitude</span>';
229 $output .= $spotter_item['arrival_airport_altitude'];
230 $output .= '</div>';
231 $output .= '</div>';
232 $output .= ' ]]></description>';
233 $output .= '<styleUrl>#arrivalAirport</styleUrl>';
234 $output .= '<Point>';
235 $output .= '<coordinates>'.$spotter_item['arrival_airport_longitude'].', '.$spotter_item['arrival_airport_latitude'].', '.$spotter_item['arrival_airport_altitude'].'</coordinates>';
236 $output .= '<altitudeMode>absolute</altitudeMode>';
237 $output .= '</Point>';
238 $output .= '</Placemark>';
240 //location of aircraft
241 $output .= '<Placemark>';
242 $output .= '<name>'.$spotter_item['ident'].' - '.$spotter_item['registration'].' - '.$spotter_item['airline_name'].'</name>';
243 $output .= '<description><![CDATA[ ';
244 $output .= '<div class="ge-balloon">';
245 if ($spotter_item['image_thumbnail'] != "") {
246 $output .= '<a href="'.$globalURL.'/flightid/'.$spotter_item['spotter_id'].'" target="_blank"><img src="'.$spotter_item['image_thumbnail'].'" alt="Click on image to see Flight profile" title="Click on image to see Flight profile" class="ge-image" /></a>';
248 $output .= '<div class="ge-row">';
249 $output .= '<span>Ident</span>';
250 $output .= '<a href="'.$globalURL.'/ident/'.$spotter_item['ident'].'" target="_blank">'.$spotter_item['ident'].'</a>';
251 $output .= '</div>';
252 $output .= '<div class="ge-row">';
253 $output .= '<span>Registration</span>';
254 $output .= '<a href="'.$globalURL.'/registration/'.$spotter_item['registration'].'" target="_blank">'.$spotter_item['registration'].'</a>';
255 $output .= '</div>';
256 $output .= '<div class="ge-row">';
257 $output .= '<span>Aircraft</span>';
258 $output .= '<a href="'.$globalURL.'/aircraft/'.$spotter_item['aircraft_type'].'" target="_blank">'.$spotter_item['aircraft_name'].' ('.$spotter_item['aircraft_type'].')</a>';
259 $output .= '</div>';
260 $output .= '<div class="ge-row">';
261 $output .= '<span>Airline</span>';
262 $output .= '<a href="'.$globalURL.'/airline/'.$spotter_item['airline_icao'].'" target="_blank">'.$spotter_item['airline_name'].'</a>';
263 $output .= '</div>';
264 $output .= '<div class="ge-row">';
265 $output .= '<span>Departure Airport</span>';
266 $output .= '<a href="'.$globalURL.'/airport/'.$spotter_item['departure_airport'].'" target="_blank">'.$spotter_item['departure_airport_city'].', '.$spotter_item['departure_airport_name'].', '.$spotter_item['departure_airport_country'].' ('.$spotter_item['departure_airport'].')</a>';
267 $output .= '</div>';
268 $output .= '<div class="ge-row">';
269 $output .= '<span>Arrival Airport</span>';
270 $output .= '<a href="'.$globalURL.'/airport/'.$spotter_item['arrival_airport'].'" target="_blank">'.$spotter_item['arrival_airport_city'].', '.$spotter_item['arrival_airport_name'].', '.$spotter_item['arrival_airport_country'].' ('.$spotter_item['arrival_airport'].')</a>';
271 $output .= '</div>';
272 $output .= '<div class="ge-row">';
273 $output .= '<span>Date</span>';
274 $output .= '<a href="'.$globalURL.'/flightid/'.$spotter_item['spotter_id'].'" target="_blank">'.date("D M j, Y, g:i a T", strtotime($spotter_item['date_iso_8601'])).'</a>';
275 $output .= '</div>';
276 $output .= '</div>';
277 $output .= ' ]]></description>';
278 $output .= '<styleUrl>#aircraft_'.$spotter_item['spotter_id'].'</styleUrl>';
279 $output .= '<Point>';
280 $output .= '<coordinates>'.$spotter_item['longitude'].', '.$spotter_item['latitude'].', '.$altitude.'</coordinates>';
281 $output .= '<altitudeMode>absolute</altitudeMode>';
282 $output .= '</Point>';
283 $output .= '</Placemark>';
285 $output .= '<Style id="aircraft_'.$spotter_item['spotter_id'].'">';
286 $output .= '<IconStyle>';
287 $output .= '<Icon>';
288 $output .= '<href>http://real.flightairmap.com/images/kml_aircraft.png</href>';
289 $output .= '</Icon>';
290 $output .= '<heading>'.$spotter_item['heading'].'</heading>';
291 $output .= '</IconStyle>';
292 $output .= '</Style>';
295 $output .= '</Document>';
296 $output .= '</kml>';
297 print $output;