Completed
Push — master ( bc1889...67b374 )
by Yannick
31:00
created

live-geojson.php (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
require_once('require/class.Connection.php');
3
require_once('require/class.Common.php');
4
$tracker = false;
5
$marine = false;
6
$usecoord = false;
7
if (isset($_GET['tracker'])) {
8
    $tracker = true;
9
}
10
if (isset($_GET['marine'])) {
11
    $marine = true;
12
}
13
if ($tracker) {
14
    require_once('require/class.Tracker.php');
15
    require_once('require/class.TrackerLive.php');
16
    require_once('require/class.TrackerArchive.php');
17
} elseif ($marine) {
18
    require_once('require/class.Marine.php');
19
    require_once('require/class.MarineLive.php');
20
    require_once('require/class.MarineArchive.php');
21
} else {
22
    require_once('require/class.Spotter.php');
23
    require_once('require/class.SpotterLive.php');
24
    require_once('require/class.SpotterArchive.php');
25
}
26
27
$begintime = microtime(true);
28
if ($tracker) {
29
	$TrackerLive = new TrackerLive();
30
	$Tracker = new Tracker();
31
	$TrackerArchive = new TrackerArchive();
32
} elseif ($marine) {
33
	$MarineLive = new MarineLive();
34
	$Marine = new Marine();
35
	$MarineArchive = new MarineArchive();
36
} else {
37
	$SpotterLive = new SpotterLive();
38
	$Spotter = new Spotter();
39
	$SpotterArchive = new SpotterArchive();
40
}
41
$Common = new Common();
42
43
if (isset($_GET['download'])) {
44
    if ($_GET['download'] == "true")
45
    {
46
	header('Content-disposition: attachment; filename="flightairmap.json"');
47
    }
48
}
49
header('Content-Type: text/javascript');
50
51
if (!isset($globalJsonCompress)) $compress = true;
52
else $compress = $globalJsonCompress;
53
54
$from_archive = false;
55
$min = true;
56
$allhistory = false;
57
$filter['source'] = array();
58
if ((!isset($globalMapVAchoose) || $globalMapVAchoose) && isset($globalVATSIM) && $globalVATSIM && isset($_COOKIE['filter_ShowVATSIM']) && $_COOKIE['filter_ShowVATSIM'] == 'true') $filter['source'] = array_merge($filter['source'],array('vatsimtxt'));
59
if ((!isset($globalMapVAchoose) || $globalMapVAchoose) && isset($globalIVAO) && $globalIVAO && isset($_COOKIE['filter_ShowIVAO']) && $_COOKIE['filter_ShowIVAO'] == 'true') $filter['source'] = array_merge($filter['source'],array('whazzup'));
60
if ((!isset($globalMapVAchoose) || $globalMapVAchoose) && isset($globalphpVMS) && $globalphpVMS && isset($_COOKIE['filter_ShowVMS']) && $_COOKIE['filter_ShowVMS'] == 'true') $filter['source'] = array_merge($filter['source'],array('phpvmacars'));
61
if ((!isset($globalMapchoose) || $globalMapchoose) && isset($globalSBS1) && $globalSBS1 && isset($_COOKIE['filter_ShowSBS1']) && $_COOKIE['filter_ShowSBS1'] == 'true') $filter['source'] = array_merge($filter['source'],array('sbs','famaprs'));
62
if ((!isset($globalMapchoose) || $globalMapchoose) && isset($globalAPRS) && $globalAPRS && isset($_COOKIE['filter_ShowAPRS']) && $_COOKIE['filter_ShowAPRS'] == 'true') $filter['source'] = array_merge($filter['source'],array('aprs'));
63
if (isset($_COOKIE['filter_ident']) && $_COOKIE['filter_ident'] != '') $filter['ident'] = filter_var($_COOKIE['filter_ident'],FILTER_SANITIZE_STRING);
64
if (isset($_COOKIE['filter_mmsi']) && $_COOKIE['filter_mmsi'] != '') $filter['mmsi'] = filter_var($_COOKIE['filter_mmsi'],FILTER_SANITIZE_STRING);
65
if (isset($_COOKIE['filter_Airlines']) && $_COOKIE['filter_Airlines'] != '') $filter['airlines'] = filter_var_array(explode(',',$_COOKIE['filter_Airlines']),FILTER_SANITIZE_STRING);
66
if (isset($_COOKIE['filter_Sources']) && $_COOKIE['filter_Sources'] != '') $filter['source_aprs'] = filter_var_array(explode(',',$_COOKIE['filter_Sources']),FILTER_SANITIZE_STRING);
67
if (isset($_COOKIE['filter_airlinestype']) && $_COOKIE['filter_airlinestype'] != 'all') $filter['airlinestype'] = filter_var($_COOKIE['filter_airlinestype'],FILTER_SANITIZE_STRING);
68
if (isset($_COOKIE['filter_alliance']) && $_COOKIE['filter_alliance'] != 'all') $filter['alliance'] = filter_var($_COOKIE['filter_alliance'],FILTER_SANITIZE_STRING);
69
70
if (isset($globalMapPopup) && !$globalMapPopup && !(isset($_COOKIE['flightpopup']) && $_COOKIE['flightpopup'] == 'true')) {
71
	$min = true;
72
} else $min = false;
73
74
$spotter_array = array();
75
76
if (isset($_GET['ident'])) {
77
	$ident = urldecode(filter_input(INPUT_GET,'ident',FILTER_SANITIZE_STRING));
78
	if ($tracker) {
79
		$spotter_array = $TrackerLive->getLastLiveTrackerDataByIdent($ident);
80
	} elseif ($marine) {
81
		$spotter_array = $MarineLive->getLastLiveMarineDataByIdent($ident);
82
	} else {
83
		$spotter_array = $SpotterLive->getLastLiveSpotterDataByIdent($ident);
84
		if (empty($spotter_array)) {
85
			$from_archive = true;
86
			$spotter_array = $SpotterArchive->getLastArchiveSpotterDataByIdent($ident);
87
		}
88
	}
89
	$allhistory = true;
90
} elseif (isset($_GET['flightaware_id'])) {
91
	$flightaware_id = filter_input(INPUT_GET,'flightaware_id',FILTER_SANITIZE_STRING);
92
	$spotter_array = $SpotterLive->getLastLiveSpotterDataById($flightaware_id);
93
	if (empty($spotter_array)) {
94
		$from_archive = true;
95
		$spotter_array = $SpotterArchive->getLastArchiveSpotterDataById($flightaware_id);
96
	}
97
	$allhistory = true;
98
} elseif (isset($_GET['famtrack_id'])) {
99
	$famtrack_id = urldecode(filter_input(INPUT_GET,'famtrack_id',FILTER_SANITIZE_STRING));
100
	$spotter_array = $TrackerLive->getLastLiveTrackerDataById($famtrack_id);
101
	$allhistory = true;
102
} elseif (isset($_GET['fammarine_id'])) {
103
	$fammarine_id = urldecode(filter_input(INPUT_GET,'fammarine_id',FILTER_SANITIZE_STRING));
104
	$spotter_array = $MarineLive->getLastLiveMarineDataById($fammarine_id);
105
	$allhistory = true;
106
} elseif (isset($globalMapUseBbox) && $globalMapUseBbox && isset($_GET['coord']) && (!isset($globalMapPopup) || $globalMapPopup || (isset($_COOKIE['flightpopup']) && $_COOKIE['flightpopup'] == 'true'))) {
107
//} elseif (isset($_GET['coord'])) {
108
	$usecoord = true;
109
	$coord = explode(',',$_GET['coord']);
110
	if (filter_var($coord[0],FILTER_VALIDATE_FLOAT) && filter_var($coord[1],FILTER_VALIDATE_FLOAT) && filter_var($coord[2],FILTER_VALIDATE_FLOAT) && filter_var($coord[3],FILTER_VALIDATE_FLOAT) 
111
	    && $coord[0] > -180.0 && $coord[0] < 180.0 && $coord[1] > -90.0 && $coord[1] < 90.0 && $coord[2] > -180.0 && $coord[2] < 180.0 && $coord[3] > -90.0 && $coord[3] < 90.0) {
112
		if ($tracker) {
113
			$spotter_array = $TrackerLive->getLiveTrackerDatabyCoord($coord,$filter);
114
		} elseif ($marine) {
115
			$spotter_array = $MarineLive->getLiveMarineDatabyCoord($coord,$filter);
116
		} else {
117
			$spotter_array = $SpotterLive->getLiveSpotterDatabyCoord($coord,$filter);
118
		}
119
	}
120
} elseif (isset($globalMapUseBbox) && $globalMapUseBbox && isset($_GET['coord']) && $min) {
121
	$usecoord = true;
122
	$coord = explode(',',$_GET['coord']);
123
	if (filter_var($coord[0],FILTER_VALIDATE_FLOAT) && filter_var($coord[1],FILTER_VALIDATE_FLOAT) && filter_var($coord[2],FILTER_VALIDATE_FLOAT) && filter_var($coord[3],FILTER_VALIDATE_FLOAT) 
124
	    && $coord[0] > -180.0 && $coord[0] < 180.0 && $coord[1] > -90.0 && $coord[1] < 90.0 && $coord[2] > -180.0 && $coord[2] < 180.0 && $coord[3] > -90.0 && $coord[3] < 90.0) {
125
		if ($tracker) {
126
			$spotter_array = $TrackerLive->getMinLiveTrackerDatabyCoord($coord,$filter);
127
		} elseif ($marine) {
128
			$spotter_array = $MarineLive->getMinLiveMarineDatabyCoord($coord,$filter);
129
		} else {
130
			$spotter_array = $SpotterLive->getMinLiveSpotterDatabyCoord($coord,$filter);
131
		}
132
	} else {
133
		if ($tracker) {
134
			$spotter_array = $TrackerLive->getMinLiveTrackerData($filter);
135
		} elseif ($marine) {
136
			$spotter_array = $MarineLive->getMinLiveMarineData($filter);
137
		} else {
138
			$spotter_array = $SpotterLive->getMinLiveSpotterData($filter);
139
		}
140
	}
141
} elseif (isset($_GET['archive']) && isset($_GET['begindate']) && isset($_GET['enddate']) && isset($_GET['speed']) && !isset($_GET['tracker']) && !isset($_GET['marine'])) {
142
	$from_archive = true;
143
//	$begindate = filter_input(INPUT_GET,'begindate',FILTER_VALIDATE_REGEXP,array("options"=>array("regexp"=>'~^\d{4}/\d{2}/\d{2}$~')));
144
//	$enddate = filter_input(INPUT_GET,'enddate',FILTER_VALIDATE_REGEXP,array("options"=>array("regexp"=>'~^\d{4}/\d{2}/\d{2}$~')));
145
	$begindate = filter_input(INPUT_GET,'begindate',FILTER_SANITIZE_NUMBER_INT);
146
	$enddate = filter_input(INPUT_GET,'enddate',FILTER_SANITIZE_NUMBER_INT);
147
	$archivespeed = filter_input(INPUT_GET,'speed',FILTER_SANITIZE_NUMBER_INT);
148
	$begindate = date('Y-m-d H:i:s',$begindate);
149
	$enddate = date('Y-m-d H:i:s',$enddate);
150
	$spotter_array = $SpotterArchive->getMinLiveSpotterData($begindate,$enddate,$filter);
151
} elseif ($min) {
152
	if ($tracker) {
153
		$spotter_array = $TrackerLive->getMinLiveTrackerData($filter);
154
	} elseif ($marine) {
155
		$spotter_array = $MarineLive->getMinLiveMarineData($filter);
156
	} else {
157
		$spotter_array = $SpotterLive->getMinLiveSpotterData($filter);
158
	}
159
#	$min = true;
160
} else {
161
	if ($tracker) {
162
		$spotter_array = $TrackerLive->getLiveTrackerData('','',$filter);
163
	} elseif ($marine) {
164
		$spotter_array = $marineLive->getLiveMarineData('','',$filter);
165
	} else {
166
		$spotter_array = $SpotterLive->getLiveSpotterData('','',$filter);
167
	}
168
}
169
170
if ($usecoord) {
171
	if (isset($_GET['archive'])) {
172
		$flightcnt = $SpotterArchive->getLiveSpotterCount($begindate,$enddate,$filter);
173
	} else {
174
		if ($tracker) {
175
			$flightcnt = $TrackerLive->getLiveTrackerCount($filter);
176
		} elseif ($marine) {
177
			$flightcnt = $MarineLive->getLiveMarineCount($filter);
178
		} else {
179
			$flightcnt = $SpotterLive->getLiveSpotterCount($filter);
180
		}
181
	}
182
	if ($flightcnt == '') $flightcnt = 0;
183
} else $flightcnt = 0;
184
185
$sqltime = round(microtime(true)-$begintime,2);
186
187
$currenttime = filter_input(INPUT_GET,'currenttime',FILTER_SANITIZE_NUMBER_INT);
188
if ($currenttime != '') $currenttime = round($currenttime/1000);
189
190
if ((!isset($_COOKIE['flightestimation']) && isset($globalMapEstimation) && $globalMapEstimation == FALSE) || (isset($_COOKIE['flightestimation']) && $_COOKIE['flightestimation'] == 'false')) $usenextlatlon = false;
191
else $usenextlatlon = true;
192
if ($usenextlatlon === false) $currenttime = '';
193
$j = 0;
194
$prev_flightaware_id = '';
195
$aircrafts_shadow = array();
196
$output = '{';
197
	$output .= '"type": "FeatureCollection",';
198
		if ($min) $output .= '"minimal": "true",';
199
		else $output .= '"minimal": "false",';
200
		//$output .= '"fc": "'.$flightcnt.'",';
201
		$output .= '"sqt": "'.$sqltime.'",';
202
203
		if (!empty($spotter_array) && is_array($spotter_array))
204
		{
205
			$output .= '"features": [';
206
			foreach($spotter_array as $spotter_item)
207
			{
208
				$j++;
209
				date_default_timezone_set('UTC');
210
211
				if (isset($spotter_item['image_thumbnail']) && $spotter_item['image_thumbnail'] != "")
212
				{
213
					$image = $spotter_item['image_thumbnail'];
214
				} else {
215
					$image = "images/placeholder_thumb.png";
216
				}
217
218
/*
219
				if ($prev_flightaware_id != $spotter_item['flightaware_id']) {
220
				    if ($prev_flightaware_id != '') {
221
						$output .= ']';
222
						$output .= '}';
223
						$output .= '},';
224
				    }
225
				$prev_flightaware_id = $spotter_item['flightaware_id'];
226
*/
227
228
				//location of aircraft
229
//				print_r($spotter_item);
230
				$output .= '{';
231
					$output .= '"type": "Feature",';
232
						//$output .= '"fc": "'.$flightcnt.'",';
233
						//$output .= '"sqt": "'.$sqltime.'",';
234
						if (isset($spotter_item['flightaware_id'])) {
235
							$output .= '"id": "'.$spotter_item['flightaware_id'].'",';
236
						} elseif (isset($spotter_item['famtrackid'])) {
237
							$output .= '"id": "'.$spotter_item['famtrackid'].'",';
238
						} elseif (isset($spotter_item['fammarine_id'])) {
239
							$output .= '"id": "'.$spotter_item['fammarine_id'].'",';
240
						}
241
						$output .= '"properties": {';
242
						if (isset($spotter_item['flightaware_id'])) {
243
							if ($compress) $output .= '"fi": "'.$spotter_item['flightaware_id'].'",';
244
							else $output .= '"flightaware_id": "'.$spotter_item['flightaware_id'].'",';
245
						} elseif (isset($spotter_item['famtrackid'])) {
246
							if ($compress) $output .= '"fti": "'.$spotter_item['famtrackid'].'",';
247
							else $output .= '"famtrackid": "'.$spotter_item['famtrackid'].'",';
248
						} elseif (isset($spotter_item['fammarine_id'])) {
249
							if ($compress) $output .= '"fmi": "'.$spotter_item['fammarine_id'].'",';
250
							else $output .= '"fammarineid": "'.$spotter_item['fammarine_id'].'",';
251
						}
252
							$output .= '"fc": "'.$flightcnt.'",';
253
							$output .= '"sqt": "'.$sqltime.'",';
254
							if (isset($begindate)) $output .= '"archive_date": "'.$begindate.'",';
255
256
/*
257
							if ($min) $output .= '"minimal": "true",';
258
							else $output .= '"minimal": "false",';
259
*/
260
							//$output .= '"fc": "'.$spotter_item['nb'].'",';
261
						if (isset($spotter_item['ident']) && $spotter_item['ident'] != '') {
262
							if ($compress) $output .= '"c": "'.str_replace('\\','',$spotter_item['ident']).'",';
263
							else $output .= '"callsign": "'.str_replace('\\','',$spotter_item['ident']).'",';
264
							//"
265
						} else {
266
							if ($compress) $output .= '"c": "NA",';
267
							else $output .= '"callsign": "NA",';
268
						}
269
						if (isset($spotter_item['registration'])) $output .= '"registration": "'.$spotter_item['registration'].'",';
270
						if (isset($spotter_item['aircraft_name']) && isset($spotter_item['aircraft_type'])) {
271
							$output .= '"aircraft_name": "'.$spotter_item['aircraft_name'].' ('.$spotter_item['aircraft_type'].')",';
272
							$output .= '"aircraft_wiki": "http://'.strtolower($globalLanguage).'.wikipedia.org/wiki/'.urlencode(str_replace(' ','_',$spotter_item['aircraft_name'])).'",';
273
						} elseif (isset($spotter_item['aircraft_type'])) {
274
							$output .= '"aircraft_name": "NA ('.$spotter_item['aircraft_type'].')",';
275
						} elseif (!$min) {
276
							$output .= '"aircraft_name": "NA",';
277
						}
278
						if (!$min && isset($spotter_item['aircraft_icao'])) {
279
							$output .= '"aircraft_icao": "'.$spotter_item['aircraft_icao'].'",';
280
						}
281
						if (!isset($spotter_item['aircraft_shadow']) && !$tracker) {
282
							if (!isset($spotter_item['aircraft_icao']) || $spotter_item['aircraft_icao'] == '') $spotter_item['aircraft_shadow'] = '';
283
							else {
284
								$aircraft_icao = $spotter_item['aircraft_icao'];
285
								if (isset($aircrafts_shadow[$aircraft_icao])) $spotter_item['aircraft_shadow'] = $aircrafts_shadow[$aircraft_icao];
286
								else {
287
									$aircraft_info = $Spotter->getAllAircraftInfo($spotter_item['aircraft_icao']);
288
									if (count($aircraft_info) > 0) $spotter_item['aircraft_shadow'] = $aircraft_info[0]['aircraft_shadow'];
289
									elseif (isset($spotter_item['format_source']) && $spotter_item['format_source'] == 'aprs') $spotter_item['aircraft_shadow'] = 'PA18.png';
290
									elseif ($aircraft_icao == 'PARAGLIDER') $spotter_item['aircraft_shadow'] = 'PARAGLIDER.png';
291
									else $spotter_item['aircraft_shadow'] = '';
292
									$aircrafts_shadow[$aircraft_icao] = $spotter_item['aircraft_shadow'];
293
								}
294
							}
295
						}
296
						if (!isset($spotter_item['aircraft_shadow']) || $spotter_item['aircraft_shadow'] == '') {
297
							if ($tracker) {
298
								if (isset($spotter_item['type']) && $spotter_item['type'] == 'Ambulance') {
299
									if ($compress) $output .= '"as": "ambulance.png",';
300
									else $output .= '"aircraft_shadow": "ambulance.png",';
301
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Police') {
302
									if ($compress) $output .= '"as": "police.png",';
303
									else $output .= '"aircraft_shadow": "police.png",';
304
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Yacht (Sail)') {
305
									if ($compress) $output .= '"as": "ship.png",';
306
									else $output .= '"aircraft_shadow": "ship.png",';
307
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Ship (Power Boat)') {
308
									if ($compress) $output .= '"as": "ship.png",';
309
									else $output .= '"aircraft_shadow": "ship.png",';
310
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Shuttle') {
311
									if ($compress) $output .= '"as": "ship.png",';
312
									else $output .= '"aircraft_shadow": "ship.png",';
313
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Truck') {
314
									if ($compress) $output .= '"as": "truck.png",';
315
									else $output .= '"aircraft_shadow": "truck.png",';
316
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Truck (18 Wheeler)') {
317
									if ($compress) $output .= '"as": "truck.png",';
318
									else $output .= '"aircraft_shadow": "truck.png",';
319
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Aircraft (small)') {
320
									if ($compress) $output .= '"as": "aircraft.png",';
321
									else $output .= '"aircraft_shadow": "aircraft.png",';
322
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Large Aircraft') {
323
									if ($compress) $output .= '"as": "aircraft.png",';
324
									else $output .= '"aircraft_shadow": "aircraft.png",';
325
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Helicopter') {
326
									if ($compress) $output .= '"as": "helico.png",';
327
									else $output .= '"aircraft_shadow": "helico.png",';
328
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Railroad Engine') {
329
									if ($compress) $output .= '"as": "rail.png",';
330
									else $output .= '"aircraft_shadow": "rail.png",';
331
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Firetruck') {
332
									if ($compress) $output .= '"as": "firetruck.png",';
333
									else $output .= '"aircraft_shadow": "firetruck.png",';
334
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Bus') {
335
									if ($compress) $output .= '"as": "bus.png",';
336
									else $output .= '"aircraft_shadow": "bus.png",';
337
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Phone') {
338
									if ($compress) $output .= '"as": "phone.png",';
339
									else $output .= '"aircraft_shadow": "phone.png",';
340
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Jogger') {
341
									if ($compress) $output .= '"as": "jogger.png",';
342
									else $output .= '"aircraft_shadow": "jogger.png",';
343
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Bike') {
344
									if ($compress) $output .= '"as": "bike.png",';
345
									else $output .= '"aircraft_shadow": "bike.png",';
346
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Motorcycle') {
347
									if ($compress) $output .= '"as": "motorcycle.png",';
348
									else $output .= '"aircraft_shadow": "motorcycle.png",';
349
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Balloon') {
350
									if ($compress) $output .= '"as": "balloon.png",';
351
									else $output .= '"aircraft_shadow": "balloon.png",';
352
								} else {
353
									if ($compress) $output .= '"as": "car.png",';
354
									else $output .= '"aircraft_shadow": "car.png",';
355
								}
356
							} elseif ($marine) {
357
								if ($compress) $output .= '"as": "ship.png",';
358
								else $output .= '"aircraft_shadow": "ship.png",';
359
							} else {
360
								if ($compress) $output .= '"as": "default.png",';
361
								else $output .= '"aircraft_shadow": "default.png",';
362
							}
363
						} else {
364
							if ($compress) $output .= '"as": "'.$spotter_item['aircraft_shadow'].'",';
365
							else $output .= '"aircraft_shadow": "'.$spotter_item['aircraft_shadow'].'",';
366
						}
367
						if (isset($spotter_item['airline_name'])) {
368
							$output .= '"airline_name": "'.$spotter_item['airline_name'].'",';
369
						} elseif (!$min) {
370
							$output .= '"airline_name": "NA",';
371
						}
372
						if (isset($spotter_item['departure_airport'])) {
373
							if ($compress) $output .= '"dac": "'.$spotter_item['departure_airport'].'",';
374
							else $output .= '"departure_airport_code": "'.$spotter_item['departure_airport'].'",';
375
						}
376
						if (isset($spotter_item['departure_airport_city'])) {
377
							$output .= '"departure_airport": "'.$spotter_item['departure_airport_city'].', '.$spotter_item['departure_airport_country'].'",';
378
						}
379
						if (isset($spotter_item['departure_airport_time'])) {
380
							$output .= '"departure_airport_time": "'.$spotter_item['departure_airport_time'].'",';
381
						}
382
						if (isset($spotter_item['arrival_airport_time'])) {
383
							$output .= '"arrival_airport_time": "'.$spotter_item['arrival_airport_time'].'",';
384
						}
385
						if (isset($spotter_item['arrival_airport'])) {
386
							if ($compress) $output .= '"aac": "'.$spotter_item['arrival_airport'].'",';
387
							else $output .= '"arrival_airport_code": "'.$spotter_item['arrival_airport'].'",';
388
						}
389
						if (isset($spotter_item['arrival_airport_city'])) {
390
							$output .= '"arrival_airport": "'.$spotter_item['arrival_airport_city'].', '.$spotter_item['arrival_airport_country'].'",';
391
						}
392
						
393
						if (isset($spotter_item['date_iso_8601'])) {
394
							$output .= '"date_update": "'.date("M j, Y, g:i a T", strtotime($spotter_item['date_iso_8601'])).'",';
395
						}
396
						if (isset($spotter_item['date'])) {
397
							$output .= '"lu": "'.strtotime($spotter_item['date']).'",';
398
						}
399
						if (!$min) {
400
							$output .= '"latitude": "'.$spotter_item['latitude'].'",';
401
							$output .= '"longitude": "'.$spotter_item['longitude'].'",';
402
							$output .= '"ground_speed": "'.$spotter_item['ground_speed'].'",';
403
						}
404
						
405
						if (isset($spotter_item['altitude'])) {
406
							if ($compress) $output .= '"a": "'.$spotter_item['altitude'].'",';
407
							else $output .= '"altitude": "'.$spotter_item['altitude'].'",';
408
						}
409
						if ($compress)$output .= '"h": "'.$spotter_item['heading'].'",';
410
						else $output .= '"heading": "'.$spotter_item['heading'].'",';
411
						
412
						if ($currenttime != '') {
413
							if (strtotime($spotter_item['date']) < $currenttime) {
414
								if (isset($archivespeed)) {
415
									$nextcoord = $Common->nextcoord($spotter_item['latitude'],$spotter_item['longitude'],$spotter_item['ground_speed'],$spotter_item['heading'],$archivespeed,($currenttime-strtotime($spotter_item['date'])+$globalMapRefresh));
416
									$output .= '"nextlatlon": ['.$nextcoord['latitude'].','.$nextcoord['longitude'].'],';
417
								} elseif ($usenextlatlon) {
418
									$nextcoord = $Common->nextcoord($spotter_item['latitude'],$spotter_item['longitude'],$spotter_item['ground_speed'],$spotter_item['heading'],1,($currenttime-strtotime($spotter_item['date'])+$globalMapRefresh));
419
									$output .= '"nextlatlon": ['.$nextcoord['latitude'].','.$nextcoord['longitude'].'],';
420
								}
421
							} else {
422
								if (isset($archivespeed)) {
423
									$nextcoord = $Common->nextcoord($spotter_item['latitude'],$spotter_item['longitude'],$spotter_item['ground_speed'],$spotter_item['heading'],$archivespeed);
424
									$output .= '"nextlatlon": ['.$nextcoord['latitude'].','.$nextcoord['longitude'].'],';
425
								} elseif ($usenextlatlon) {
426
									$nextcoord = $Common->nextcoord($spotter_item['latitude'],$spotter_item['longitude'],$spotter_item['ground_speed'],$spotter_item['heading']);
427
									$output .= '"nextlatlon": ['.$nextcoord['latitude'].','.$nextcoord['longitude'].'],';
428
								}
429
							}
430
						} else {
431
							if (isset($archivespeed)) {
432
								$nextcoord = $Common->nextcoord($spotter_item['latitude'],$spotter_item['longitude'],$spotter_item['ground_speed'],$spotter_item['heading'],$archivespeed);
433
								$output .= '"nextlatlon": ['.$nextcoord['latitude'].','.$nextcoord['longitude'].'],';
434
							} elseif ($usenextlatlon) {
435
								$nextcoord = $Common->nextcoord($spotter_item['latitude'],$spotter_item['longitude'],$spotter_item['ground_speed'],$spotter_item['heading']);
436
								$output .= '"nextlatlon": ['.$nextcoord['latitude'].','.$nextcoord['longitude'].'],';
437
							}
438
						}
439
440
						if (!$min) $output .= '"image": "'.$image.'",';
441
						if (isset($spotter_item['image_copyright']) && $spotter_item['image_copyright'] != '') {
442
							$output .= '"image_copyright": "'.str_replace('"',"'",trim(str_replace(array("\r\n","\r","\n","\\r","\\n","\\r\\n"),'',$spotter_item['image_copyright']))).'",';
443
						}
444
						if (isset($spotter_item['image_source_website'])) {
445
							$output .= '"image_source_website": "'.urlencode($spotter_item['image_source_website']).'",';
446
						}
447
						if (isset($spotter_item['squawk'])) {
448
							if ($compress) $output .= '"sq": "'.$spotter_item['squawk'].'",';
449
							else $output .= '"squawk": "'.$spotter_item['squawk'].'",';
450
						}
451
						if (isset($spotter_item['squawk_usage'])) {
452
							$output .= '"squawk_usage": "'.$spotter_item['squawk_usage'].'",';
453
						}
454
						if (isset($spotter_item['pilot_id'])) {
455
							$output .= '"pilot_id": "'.$spotter_item['pilot_id'].'",';
456
						}
457
						if (isset($spotter_item['pilot_name'])) {
458
							$output .= '"pilot_name": "'.$spotter_item['pilot_name'].'",';
459
						}
460
						if (isset($spotter_item['waypoints']) && $spotter_item['waypoints'] != '') {
461
							$output .= '"waypoints": "'.$spotter_item['waypoints'].'",';
462
						}
463
						if (isset($spotter_item['acars'])) {
464
							$output .= '"acars": "'.trim(str_replace(array("\r\n","\r","\n","\\r","\\n","\\r\\n"), '<br />',$spotter_item['acars']['message'])).'",';
465
						}
466
						// type when not aircraft ?
467
						if (isset($spotter_item['type'])) {
468
							if ($compress) $output .= '"t": "'.$spotter_item['type'].'"';
469
							else $output .= '"type": "'.$spotter_item['type'].'"';
470
						} elseif ($marine) {
471
							if ($compress) $output .= '"t": "ship"';
472
							else $output .= '"type": "ship"';
473
						} else {
474
							if ($compress) $output .= '"t": "aircraft"';
475
							else $output .= '"type": "aircraft"';
476
						}
477
						$output .= '},';
478
						$output .= '"geometry": {';
479
							$output .= '"type": "Point",';
480
								$output .= '"coordinates": [';
481
								if ($currenttime != '') {
482
									if (strtotime($spotter_item['date']) < $currenttime) {
483
										if (!isset($archivespeed)) $archivespeed = 1;
484
										$nextcoord = $Common->nextcoord($spotter_item['latitude'],$spotter_item['longitude'],$spotter_item['ground_speed'],$spotter_item['heading'],$archivespeed,$currenttime-strtotime($spotter_item['date']));
485
										$output .= $nextcoord['longitude'].','.$nextcoord['latitude'];
486
									} else {
487
										$output .= $spotter_item['longitude'].', ';
488
										$output .= $spotter_item['latitude'];
489
									}
490
								} else {
491
										$output .= $spotter_item['longitude'].', ';
492
										$output .= $spotter_item['latitude'];
493
								}
494
										/*
495
										.', ';
496
										$output .= $spotter_item['altitude']*30.48;
497
										$output .= ', '.strtotime($spotter_item['date']);
498
										*/
499
								$output .= ']';
500
							$output .= '}';
501
				$output .= '},';
502
					
503
			/*	} else {
504
								$output .= ', ';
505
								$output .= $spotter_item['longitude'].', ';
506
								$output .= $spotter_item['latitude'].', ';
507
								$output .= $spotter_item['altitude']*30.48;
508
								$output .= ', '.strtotime($spotter_item['date']);
509
510
				}
511
*/                
512
513
/*                
514
                //previous location history of aircraft
515
                $output .= '{';
516
					$output .= '"type": "Feature",';
517
                        $output .= '"properties": {';
518
							$output .= '"callsign": "'.$spotter_item['ident'].'",';
519
							$output .= '"type": "history"';
520
						$output .= '},';
521
						$output .= '"geometry": {';
522
							$output .= '"type": "LineString",';
523
								$output .= '"coordinates": [';
524
                                    //$spotter_history_array = SpotterLive::getAllLiveSpotterDataByIdent($spotter_item['ident']);
525
                                    if ($from_archive) {
526
					    $spotter_history_array = SpotterArchive::getAllArchiveSpotterDataById($spotter_item['flightaware_id']);
527
                                    } else {
528
					    $spotter_history_array = SpotterLive::getAllLiveSpotterDataById($spotter_item['flightaware_id']);
529
                                    }
530
										$d = false;
531
										$neg = false;
532
									$history_output = '';
533
									foreach ($spotter_history_array as $key => $spotter_history)
534
									{
535
										if (abs($spotter_history['longitude']-$spotter_item['longitude']) > 200 || $d==true) {
536
											if ($d == false) $d = true;
537
									        } else {
538
											$history_output .= '[';
539
											$history_output .=  $spotter_history['longitude'].', ';
540
											$history_output .=  $spotter_history['latitude'].',';
541
											$history_output .=  $spotter_history['altitude'];
542
											$history_output .= '],';
543
544
										}
545
									}
546
									if ($history_output != '') $output .= substr($history_output, 0, -1);
547
								$output .= ']';
548
							$output .= '}';
549
				$output .= '},';
550
                
551
			}
552
*/
553
				$history = filter_input(INPUT_GET,'history',FILTER_SANITIZE_STRING);
554
				if ($history == '' && isset($_COOKIE['history'])) $history = $_COOKIE['history'];
555
				
556
				if (
557
				    (isset($_COOKIE['flightpath']) && $_COOKIE['flightpath'] == 'true') 
558
				    || ((isset($globalMapHistory) && $globalMapHistory) || $allhistory)
559
				//    || (isset($history) && $history != '' && $history != 'NA' && ($history == $spotter_item['ident'] || $history == $spotter_item['flightaware_id']))
560
				//    || (isset($history) && $history != '' && $history != 'NA' && $history == $spotter_item['ident'])
561
				    || (isset($history) && $history != '' && $history != 'NA' && isset($spotter_item['flightaware_id']) && str_replace('-','',$history) == str_replace('-','',$spotter_item['flightaware_id']))
562
				    || (isset($history) && $history == '' && isset($spotter_item['flightaware_id']) && isset($_GET['flightaware_id']) && $_GET['flightaware_id'] == $spotter_item['flightaware_id'])
563
				    || (isset($history) && $history != '' && $history != 'NA' && isset($spotter_item['fammarine_id']) && str_replace('-','',$history) == str_replace('-','',$spotter_item['fammarine_id']))
564
				    || (isset($history) && $history == '' && isset($spotter_item['flightaware_id']) && isset($_GET['fammarine_id']) && $_GET['fammarine_id'] == $spotter_item['fammarine_id'])
565
				    || (isset($history) && $history != '' && $history != 'NA' && isset($spotter_item['famtrackid']) && str_replace('-','',$history) == str_replace('-','',$spotter_item['famtrackid']))
566
				    || (isset($history) && $history == '' && isset($spotter_item['flightaware_id']) && isset($_GET['famtrackid']) && $_GET['famtrackid'] == $spotter_item['famtrackid'])
567
				    ) {
568
					if ($tracker) {
569
						if ($from_archive || $globalArchive) {
570
							$spotter_history_array = $TrackerArchive->getAllArchiveTrackerDataById($spotter_item['famtrackid']);
571
						} else {
572
							$spotter_history_array = $TrackerLive->getAllLiveTrackerDataById($spotter_item['famtrackid']);
573
						}
574
					} elseif ($marine) {
575
						if ($from_archive || $globalArchive) {
576
							$spotter_history_array = $MarineArchive->getAllArchiveMarineDataById($spotter_item['fammarine_id']);
577
						} else {
578
							$spotter_history_array = $MarineLive->getAllLiveMarineDataById($spotter_item['fammarine_id']);
579
						}
580
					} else {
581
						if ($from_archive || $globalArchive) {
582
							$spotter_history_array = $SpotterArchive->getAllArchiveSpotterDataById($spotter_item['flightaware_id']);
583
						} else {
584
							$spotter_history_array = $SpotterLive->getAllLiveSpotterDataById($spotter_item['flightaware_id']);
585
						}
586
					}
587
					$d = false;
588
					foreach ($spotter_history_array as $key => $spotter_history)
589
					{
590
						if (isset($spotter_history['altitude'])) {
591
							$alt = round($spotter_history['altitude']/10)*10;
592
							if (!isset($prev_alt) || $prev_alt != $alt) {
593
								if (isset($prev_alt)) {
594
									$output_history .= '['.$spotter_history['longitude'].', '.$spotter_history['latitude'].', '.$spotter_history['altitude'].']';
595
									$output_history .= ']}},';
596
									$output .= $output_history;
597
								}
598
								if ($compress) $output_history = '{"type": "Feature","properties": {"c": "'.$spotter_item['ident'].'","t": "history","a": "'.$alt.'"},"geometry": {"type": "LineString","coordinates": [';
599
								else $output_history = '{"type": "Feature","properties": {"callsign": "'.$spotter_item['ident'].'","type": "history","altitude": "'.$alt.'"},"geometry": {"type": "LineString","coordinates": [';
600
							}
601
							$output_history .= '[';
602
							$output_history .=  $spotter_history['longitude'].', ';
603
							$output_history .=  $spotter_history['latitude'].', ';
604
							$output_history .=  $spotter_history['altitude']*30.48;
605
							$output_history .= '],';
606
							/*
607
							if ($from_archive === false) {
608
								$output_history .= '[';
609
								$output_history .=  $spotter_item['longitude'].', ';
610
								$output_history .=  $spotter_item['latitude'].', ';
611
								$output_history .=  $spotter_item['altitude']*30.48;
612
								$output_history .= '],';
613
							}
614
							*/
615
							$prev_alt = $alt;
616
						} else {
617
							if ($d == false) {
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like you are loosely comparing two booleans. Considering using the strict comparison === instead.

When comparing two booleans, it is generally considered safer to use the strict comparison operator.

Loading history...
618
								if ($compress) $output_history = '{"type": "Feature","properties": {"c": "'.$spotter_item['ident'].'","t": "history"},"geometry": {"type": "LineString","coordinates": [';
619
								else $output_history = '{"type": "Feature","properties": {"callsign": "'.$spotter_item['ident'].'","type": "history"},"geometry": {"type": "LineString","coordinates": [';
620
							} else $d = true;
621
							$output_history .= '[';
622
							$output_history .=  $spotter_history['longitude'].', ';
623
							$output_history .=  $spotter_history['latitude'];
624
							$output_history .= '],';
625
							/*
626
							if ($from_archive === false) {
627
								$output_history .= '[';
628
								$output_history .=  $spotter_item['longitude'].', ';
629
								$output_history .=  $spotter_item['latitude'];
630
								$output_history .= '],';
631
							}
632
							*/
633
						}
634
					}
635
					if (isset($output_history)) {
636
					
637
						if ($from_archive === false) {
638
							$output_historyd = '[';
639
							$output_historyd .=  $spotter_item['longitude'].', ';
640
							$output_historyd .=  $spotter_item['latitude'];
641
							if (isset($spotter_history['altitude'])) $output_historyd .=  ','.$spotter_item['altitude']*30.48;
642
							$output_historyd .= '],';
643
							//$output_history = $output_historyd.$output_history;
644
							$output_history = $output_history.$output_historyd;
645
						}
646
						
647
						$output_history  = substr($output_history, 0, -1);
648
						$output_history .= ']}},';
649
						$output .= $output_history;
650
						unset($prev_alt);
651
						unset($output_history);
652
					}
653
				}
654
				
655
				if (((isset($history) && $history != '' && $history != 'NA' && isset($spotter_item['flightaware_id']) && str_replace('-','',$history) == str_replace('-','',$spotter_item['flightaware_id']))
656
				    || (isset($history) && $history == '' && isset($spotter_item['flightaware_id']) && isset($_GET['flightaware_id']) && $_GET['flightaware_id'] == $spotter_item['flightaware_id']))
657
				     && (isset($spotter_item['departure_airport']) 
658
				        && $spotter_item['departure_airport'] != 'NA' 
659
				        && isset($spotter_item['arrival_airport']) 
660
				        && $spotter_item['arrival_airport'] != 'NA' 
661
				        && ((isset($_COOKIE['MapRoute']) && $_COOKIE['MapRoute'] == "true") 
662
				    	    || (!isset($_COOKIE['MapRoute']) && isset($globalMapRoute) && $globalMapRoute)))) {
663
				    if ($compress) $output_air = '{"type": "Feature","properties": {"c": "'.$spotter_item['ident'].'","t": "route"},"geometry": {"type": "LineString","coordinates": [';
664
				    else $output_air = '{"type": "Feature","properties": {"callsign": "'.$spotter_item['ident'].'","type": "route"},"geometry": {"type": "LineString","coordinates": [';
665
				    if (isset($spotter_item['departure_airport_latitude'])) {
666
					$output_air .= '['.$spotter_item['departure_airport_longitude'].','.$spotter_item['departure_airport_latitude'].'],';
667
				    } elseif (isset($spotter_item['departure_airport']) && $spotter_item['departure_airport'] != 'NA') {
668
					$dairport = $Spotter->getAllAirportInfo($spotter_item['departure_airport']);
669
					if (isset($dairport[0]['latitude'])) {
670
					    $output_air .= '['.$dairport[0]['longitude'].','.$dairport[0]['latitude'].'],';
671
					}
672
				    }
673
				    if (isset($spotter_item['arrival_airport_latitude'])) {
674
					$output_air .= '['.$spotter_item['arrival_airport_longitude'].','.$spotter_item['arrival_airport_latitude'].'],';
675
				    } elseif (isset($spotter_item['arrival_airport']) && $spotter_item['arrival_airport'] != 'NA') {
676
					$aairport = $Spotter->getAllAirportInfo($spotter_item['arrival_airport']);
677
					if (isset($aairport[0]['latitude'])) {
678
					    $output_air .= '['.$aairport[0]['longitude'].','.$aairport[0]['latitude'].'],';
679
					}
680
				    }
681
				    $output_air  = substr($output_air, 0, -1);
682
				    $output_air .= ']}},';
683
				    $output .= $output_air;
684
				    unset($output_air);
685
				}
686
687
				//if (isset($history) && $history != '' && $history == $spotter_item['ident'] && isset($spotter_item['departure_airport']) && $spotter_item['departure_airport'] != 'NA' && isset($spotter_item['arrival_airport']) && $spotter_item['arrival_airport'] != 'NA' && ((isset($_COOKIE['MapRoute']) && $_COOKIE['MapRoute'] == "true") || (!isset($_COOKIE['MapRoute']) && (!isset($globalMapRoute) || (isset($globalMapRoute) && $globalMapRoute))))) {
688
				//if (isset($history) && $history != '' && $history == $spotter_item['ident'] && isset($spotter_item['arrival_airport']) && $spotter_item['arrival_airport'] != 'NA' && ((isset($_COOKIE['MapRoute']) && $_COOKIE['MapRoute'] == "true") || (!isset($_COOKIE['MapRoute']) && (!isset($globalMapRoute) || (isset($globalMapRoute) && $globalMapRoute))))) {
689
				if (((isset($history) && $history != '' && $history != 'NA' && isset($spotter_item['flightaware_id']) && str_replace('-','',$history) == str_replace('-','',$spotter_item['flightaware_id']))
690
				    || (isset($history) && $history == '' && isset($spotter_item['flightaware_id']) && isset($_GET['flightaware_id']) && $_GET['flightaware_id'] == $spotter_item['flightaware_id']))
691
				     && (isset($spotter_item['arrival_airport']) 
692
				        && $spotter_item['arrival_airport'] != 'NA' 
693
				        && ((isset($_COOKIE['MapRemainingRoute']) && $_COOKIE['MapRemainingRoute'] == "true") 
694
				    	    || (!isset($_COOKIE['MapRemainaingRoute']) && (!isset($globalMapRemainingRoute) 
695
				    	    || (isset($globalMapRemainingRoute) && $globalMapRemainingRoute)))))) {
696
				    $havedata = false;
697
				    if ($compress) $output_dest = '{"type": "Feature","properties": {"c": "'.$spotter_item['ident'].'","t": "routedest"},"geometry": {"type": "LineString","coordinates": [';
698
				    else $output_dest = '{"type": "Feature","properties": {"callsign": "'.$spotter_item['ident'].'","type": "routedest"},"geometry": {"type": "LineString","coordinates": [';
699
				    $output_dest .= '['.$spotter_item['longitude'].','.$spotter_item['latitude'].'],';
700
701
				    if (isset($spotter_item['arrival_airport_latitude'])) {
702
					$output_dest .= '['.$spotter_item['arrival_airport_longitude'].','.$spotter_item['arrival_airport_latitude'].']';
703
					$havedata = true;
704
				    } elseif (isset($spotter_item['arrival_airport']) && $spotter_item['arrival_airport'] != 'NA') {
705
					$aairport = $Spotter->getAllAirportInfo($spotter_item['arrival_airport']);
706
					if (isset($aairport[0]['latitude'])) {
707
					    $output_dest .= '['.$aairport[0]['longitude'].','.$aairport[0]['latitude'].']';
708
					    $havedata = true;
709
					}
710
				    }
711
				    //$output_dest  = substr($output_dest, 0, -1);
712
				    $output_dest .= ']}},';
713
				    if ($havedata) $output .= $output_dest;
714
				    unset($output_dest);
715
				}
716
			}
717
			$output  = substr($output, 0, -1);
718
			$output .= ']';
719
			$output .= ',"initial_sqltime": "'.$sqltime.'",';
720
			$output .= '"totaltime": "'.round(microtime(true)-$begintime,2).'",';
721
			if (isset($begindate)) $output .= '"archive_date": "'.$begindate.'",';
722
			$output .= '"fc": "'.$j.'"';
723
		} else {
724
			$output .= '"features": ';
725
			$output .= '[{';
726
			$output .= '"type": "Feature",';
727
			$output .= '"properties": {';
728
			$output .= '"fc": "'.$flightcnt.'",';
729
			$output .= '"empty": "true"}';
730
			$output .= ',"geometry": {"type": "Point","coordinates": [0, 0]}';
731
			$output .= '}]';
732
		}
733
		
734
$output .= '}';
735
736
print $output;
737
738
?>
739