Completed
Push — master ( e83874...2a1823 )
by Yannick
76:17 queued 48:09
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
if (isset($_GET['ident'])) {
75
	$ident = urldecode(filter_input(INPUT_GET,'ident',FILTER_SANITIZE_STRING));
76
	if ($tracker) {
77
		$spotter_array = $TrackerLive->getLastLiveTrackerDataByIdent($ident);
78
	} elseif ($marine) {
79
		$spotter_array = $MarineLive->getLastLiveMarineDataByIdent($ident);
80
	} else {
81
		$spotter_array = $SpotterLive->getLastLiveSpotterDataByIdent($ident);
82
		if (empty($spotter_array)) {
83
			$from_archive = true;
84
			$spotter_array = $SpotterArchive->getLastArchiveSpotterDataByIdent($ident);
85
		}
86
	}
87
	$allhistory = true;
88
} elseif (isset($_GET['flightaware_id'])) {
89
	$flightaware_id = filter_input(INPUT_GET,'flightaware_id',FILTER_SANITIZE_STRING);
90
	$spotter_array = $SpotterLive->getLastLiveSpotterDataById($flightaware_id);
91
	if (empty($spotter_array)) {
92
		$from_archive = true;
93
		$spotter_array = $SpotterArchive->getLastArchiveSpotterDataById($flightaware_id);
94
	}
95
	$allhistory = true;
96
} elseif (isset($_GET['famtrack_id'])) {
97
	$famtrack_id = urldecode(filter_input(INPUT_GET,'famtrack_id',FILTER_SANITIZE_STRING));
98
	$spotter_array = $TrackerLive->getLastLiveTrackerDataById($famtrack_id);
99
	$allhistory = true;
100
} elseif (isset($_GET['fammarine_id'])) {
101
	$fammarine_id = urldecode(filter_input(INPUT_GET,'fammarine_id',FILTER_SANITIZE_STRING));
102
	$spotter_array = $MarineLive->getLastLiveMarineDataById($fammarine_id);
103
	$allhistory = true;
104
} elseif (isset($globalMapUseBbox) && $globalMapUseBbox && isset($_GET['coord']) && (!isset($globalMapPopup) || $globalMapPopup || (isset($_COOKIE['flightpopup']) && $_COOKIE['flightpopup'] == 'true'))) {
105
//} elseif (isset($_GET['coord'])) {
106
	$usecoord = true;
107
	$coord = explode(',',$_GET['coord']);
108
	if ($tracker) {
109
		$spotter_array = $TrackerLive->getLiveTrackerDatabyCoord($coord,$filter);
110
	} elseif ($marine) {
111
		$spotter_array = $MarineLive->getLiveMarineDatabyCoord($coord,$filter);
112
	} else {
113
		$spotter_array = $SpotterLive->getLiveSpotterDatabyCoord($coord,$filter);
114
	}
115
} elseif (isset($globalMapUseBbox) && $globalMapUseBbox && isset($_GET['coord']) && $min) {
116
	$usecoord = true;
117
	$coord = explode(',',$_GET['coord']);
118
	if ($tracker) {
119
		$spotter_array = $TrackerLive->getMinLiveTrackerDatabyCoord($coord,$filter);
120
	} elseif ($marine) {
121
		$spotter_array = $MarineLive->getMinLiveMarineDatabyCoord($coord,$filter);
122
	} else {
123
		$spotter_array = $SpotterLive->getMinLiveSpotterDatabyCoord($coord,$filter);
124
	}
125
} elseif (isset($_GET['archive']) && isset($_GET['begindate']) && isset($_GET['enddate']) && isset($_GET['speed']) && !isset($_GET['tracker']) && !isset($_GET['marine'])) {
126
	$from_archive = true;
127
//	$begindate = filter_input(INPUT_GET,'begindate',FILTER_VALIDATE_REGEXP,array("options"=>array("regexp"=>'~^\d{4}/\d{2}/\d{2}$~')));
128
//	$enddate = filter_input(INPUT_GET,'enddate',FILTER_VALIDATE_REGEXP,array("options"=>array("regexp"=>'~^\d{4}/\d{2}/\d{2}$~')));
129
	$begindate = filter_input(INPUT_GET,'begindate',FILTER_SANITIZE_NUMBER_INT);
130
	$enddate = filter_input(INPUT_GET,'enddate',FILTER_SANITIZE_NUMBER_INT);
131
	$archivespeed = filter_input(INPUT_GET,'speed',FILTER_SANITIZE_NUMBER_INT);
132
	$begindate = date('Y-m-d H:i:s',$begindate);
133
	$enddate = date('Y-m-d H:i:s',$enddate);
134
	$spotter_array = $SpotterArchive->getMinLiveSpotterData($begindate,$enddate,$filter);
135
} elseif ($min) {
136
	if ($tracker) {
137
		$spotter_array = $TrackerLive->getMinLiveTrackerData($filter);
138
	} elseif ($marine) {
139
		$spotter_array = $MarineLive->getMinLiveMarineData($filter);
140
	} else {
141
		$spotter_array = $SpotterLive->getMinLiveSpotterData($filter);
142
	}
143
#	$min = true;
144
} else {
145
	if ($tracker) {
146
		$spotter_array = $TrackerLive->getLiveTrackerData('','',$filter);
147
	} elseif ($marine) {
148
		$spotter_array = $marineLive->getLiveMarineData('','',$filter);
149
	} else {
150
		$spotter_array = $SpotterLive->getLiveSpotterData('','',$filter);
151
	}
152
}
153
154
if ($usecoord) {
155
	if (isset($_GET['archive'])) {
156
		$flightcnt = $SpotterArchive->getLiveSpotterCount($begindate,$enddate,$filter);
157
	} else {
158
		if ($tracker) {
159
			$flightcnt = $TrackerLive->getLiveTrackerCount($filter);
160
		} elseif ($marine) {
161
			$flightcnt = $MarineLive->getLiveMarineCount($filter);
162
		} else {
163
			$flightcnt = $SpotterLive->getLiveSpotterCount($filter);
164
		}
165
	}
166
	if ($flightcnt == '') $flightcnt = 0;
167
} else $flightcnt = 0;
168
169
$sqltime = round(microtime(true)-$begintime,2);
170
171
$currenttime = filter_input(INPUT_GET,'currenttime',FILTER_SANITIZE_NUMBER_INT);
172
if ($currenttime != '') $currenttime = round($currenttime/1000);
173
174
if ((!isset($_COOKIE['flightestimation']) && isset($globalMapEstimation) && $globalMapEstimation == FALSE) || (isset($_COOKIE['flightestimation']) && $_COOKIE['flightestimation'] == 'false')) $usenextlatlon = false;
175
else $usenextlatlon = true;
176
if ($usenextlatlon === false) $currenttime = '';
177
$j = 0;
178
$prev_flightaware_id = '';
179
$aircrafts_shadow = array();
180
$output = '{';
181
	$output .= '"type": "FeatureCollection",';
182
		if ($min) $output .= '"minimal": "true",';
183
		else $output .= '"minimal": "false",';
184
		//$output .= '"fc": "'.$flightcnt.'",';
185
		$output .= '"sqt": "'.$sqltime.'",';
186
187
		if (!empty($spotter_array) && is_array($spotter_array))
188
		{
189
			$output .= '"features": [';
190
			foreach($spotter_array as $spotter_item)
191
			{
192
				$j++;
193
				date_default_timezone_set('UTC');
194
195
				if (isset($spotter_item['image_thumbnail']) && $spotter_item['image_thumbnail'] != "")
196
				{
197
					$image = $spotter_item['image_thumbnail'];
198
				} else {
199
					$image = "images/placeholder_thumb.png";
200
				}
201
202
/*
203
				if ($prev_flightaware_id != $spotter_item['flightaware_id']) {
204
				    if ($prev_flightaware_id != '') {
205
						$output .= ']';
206
						$output .= '}';
207
						$output .= '},';
208
				    }
209
				$prev_flightaware_id = $spotter_item['flightaware_id'];
210
*/
211
212
				//location of aircraft
213
//				print_r($spotter_item);
214
				$output .= '{';
215
					$output .= '"type": "Feature",';
216
						//$output .= '"fc": "'.$flightcnt.'",';
217
						//$output .= '"sqt": "'.$sqltime.'",';
218
						if (isset($spotter_item['flightaware_id'])) {
219
							$output .= '"id": "'.$spotter_item['flightaware_id'].'",';
220
						} elseif (isset($spotter_item['famtrackid'])) {
221
							$output .= '"id": "'.$spotter_item['famtrackid'].'",';
222
						} elseif (isset($spotter_item['fammarine_id'])) {
223
							$output .= '"id": "'.$spotter_item['fammarine_id'].'",';
224
						}
225
						$output .= '"properties": {';
226
						if (isset($spotter_item['flightaware_id'])) {
227
							if ($compress) $output .= '"fi": "'.$spotter_item['flightaware_id'].'",';
228
							else $output .= '"flightaware_id": "'.$spotter_item['flightaware_id'].'",';
229
						} elseif (isset($spotter_item['famtrackid'])) {
230
							if ($compress) $output .= '"fti": "'.$spotter_item['famtrackid'].'",';
231
							else $output .= '"famtrackid": "'.$spotter_item['famtrackid'].'",';
232
						} elseif (isset($spotter_item['fammarine_id'])) {
233
							if ($compress) $output .= '"fmi": "'.$spotter_item['fammarine_id'].'",';
234
							else $output .= '"fammarineid": "'.$spotter_item['fammarine_id'].'",';
235
						}
236
							$output .= '"fc": "'.$flightcnt.'",';
237
							$output .= '"sqt": "'.$sqltime.'",';
238
							if (isset($begindate)) $output .= '"archive_date": "'.$begindate.'",';
239
240
/*
241
							if ($min) $output .= '"minimal": "true",';
242
							else $output .= '"minimal": "false",';
243
*/
244
							//$output .= '"fc": "'.$spotter_item['nb'].'",';
245
						if (isset($spotter_item['ident']) && $spotter_item['ident'] != '') {
246
							if ($compress) $output .= '"c": "'.str_replace('\\','',$spotter_item['ident']).'",';
247
							else $output .= '"callsign": "'.str_replace('\\','',$spotter_item['ident']).'",';
248
							//"
249
						} else {
250
							if ($compress) $output .= '"c": "NA",';
251
							else $output .= '"callsign": "NA",';
252
						}
253
						if (isset($spotter_item['registration'])) $output .= '"registration": "'.$spotter_item['registration'].'",';
254
						if (isset($spotter_item['aircraft_name']) && isset($spotter_item['aircraft_type'])) {
255
							$output .= '"aircraft_name": "'.$spotter_item['aircraft_name'].' ('.$spotter_item['aircraft_type'].')",';
256
							$output .= '"aircraft_wiki": "http://'.strtolower($globalLanguage).'.wikipedia.org/wiki/'.urlencode(str_replace(' ','_',$spotter_item['aircraft_name'])).'",';
257
						} elseif (isset($spotter_item['aircraft_type'])) {
258
							$output .= '"aircraft_name": "NA ('.$spotter_item['aircraft_type'].')",';
259
						} elseif (!$min) {
260
							$output .= '"aircraft_name": "NA",';
261
						}
262
						if (!$min && isset($spotter_item['aircraft_icao'])) {
263
							$output .= '"aircraft_icao": "'.$spotter_item['aircraft_icao'].'",';
264
						}
265
						if (!isset($spotter_item['aircraft_shadow']) && !$tracker) {
266
							if (!isset($spotter_item['aircraft_icao']) || $spotter_item['aircraft_icao'] == '') $spotter_item['aircraft_shadow'] = '';
267
							else {
268
								$aircraft_icao = $spotter_item['aircraft_icao'];
269
								if (isset($aircrafts_shadow[$aircraft_icao])) $spotter_item['aircraft_shadow'] = $aircrafts_shadow[$aircraft_icao];
270
								else {
271
									$aircraft_info = $Spotter->getAllAircraftInfo($spotter_item['aircraft_icao']);
272
									if (count($aircraft_info) > 0) $spotter_item['aircraft_shadow'] = $aircraft_info[0]['aircraft_shadow'];
273
									elseif (isset($spotter_item['format_source']) && $spotter_item['format_source'] == 'aprs') $spotter_item['aircraft_shadow'] = 'PA18.png';
274
									elseif ($aircraft_icao == 'PARAGLIDER') $spotter_item['aircraft_shadow'] = 'PARAGLIDER.png';
275
									else $spotter_item['aircraft_shadow'] = '';
276
									$aircrafts_shadow[$aircraft_icao] = $spotter_item['aircraft_shadow'];
277
								}
278
							}
279
						}
280
						if (!isset($spotter_item['aircraft_shadow']) || $spotter_item['aircraft_shadow'] == '') {
281
							if ($tracker) {
282
								if (isset($spotter_item['type']) && $spotter_item['type'] == 'Ambulance') {
283
									if ($compress) $output .= '"as": "ambulance.png",';
284
									else $output .= '"aircraft_shadow": "ambulance.png",';
285
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Police') {
286
									if ($compress) $output .= '"as": "police.png",';
287
									else $output .= '"aircraft_shadow": "police.png",';
288
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Yacht (Sail)') {
289
									if ($compress) $output .= '"as": "ship.png",';
290
									else $output .= '"aircraft_shadow": "ship.png",';
291
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Ship (Power Boat)') {
292
									if ($compress) $output .= '"as": "ship.png",';
293
									else $output .= '"aircraft_shadow": "ship.png",';
294
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Shuttle') {
295
									if ($compress) $output .= '"as": "ship.png",';
296
									else $output .= '"aircraft_shadow": "ship.png",';
297
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Truck') {
298
									if ($compress) $output .= '"as": "truck.png",';
299
									else $output .= '"aircraft_shadow": "truck.png",';
300
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Truck (18 Wheeler)') {
301
									if ($compress) $output .= '"as": "truck.png",';
302
									else $output .= '"aircraft_shadow": "truck.png",';
303
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Aircraft (small)') {
304
									if ($compress) $output .= '"as": "aircraft.png",';
305
									else $output .= '"aircraft_shadow": "aircraft.png",';
306
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Large Aircraft') {
307
									if ($compress) $output .= '"as": "aircraft.png",';
308
									else $output .= '"aircraft_shadow": "aircraft.png",';
309
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Helicopter') {
310
									if ($compress) $output .= '"as": "helico.png",';
311
									else $output .= '"aircraft_shadow": "helico.png",';
312
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Railroad Engine') {
313
									if ($compress) $output .= '"as": "rail.png",';
314
									else $output .= '"aircraft_shadow": "rail.png",';
315
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Firetruck') {
316
									if ($compress) $output .= '"as": "firetruck.png",';
317
									else $output .= '"aircraft_shadow": "firetruck.png",';
318
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Bus') {
319
									if ($compress) $output .= '"as": "bus.png",';
320
									else $output .= '"aircraft_shadow": "bus.png",';
321
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Phone') {
322
									if ($compress) $output .= '"as": "phone.png",';
323
									else $output .= '"aircraft_shadow": "phone.png",';
324
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Jogger') {
325
									if ($compress) $output .= '"as": "jogger.png",';
326
									else $output .= '"aircraft_shadow": "jogger.png",';
327
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Bike') {
328
									if ($compress) $output .= '"as": "bike.png",';
329
									else $output .= '"aircraft_shadow": "bike.png",';
330
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Motorcycle') {
331
									if ($compress) $output .= '"as": "motorcycle.png",';
332
									else $output .= '"aircraft_shadow": "motorcycle.png",';
333
								} elseif (isset($spotter_item['type']) && $spotter_item['type'] == 'Balloon') {
334
									if ($compress) $output .= '"as": "balloon.png",';
335
									else $output .= '"aircraft_shadow": "balloon.png",';
336
								} else {
337
									if ($compress) $output .= '"as": "car.png",';
338
									else $output .= '"aircraft_shadow": "car.png",';
339
								}
340
							} elseif ($marine) {
341
								if ($compress) $output .= '"as": "ship.png",';
342
								else $output .= '"aircraft_shadow": "ship.png",';
343
							} else {
344
								if ($compress) $output .= '"as": "default.png",';
345
								else $output .= '"aircraft_shadow": "default.png",';
346
							}
347
						} else {
348
							if ($compress) $output .= '"as": "'.$spotter_item['aircraft_shadow'].'",';
349
							else $output .= '"aircraft_shadow": "'.$spotter_item['aircraft_shadow'].'",';
350
						}
351
						if (isset($spotter_item['airline_name'])) {
352
							$output .= '"airline_name": "'.$spotter_item['airline_name'].'",';
353
						} elseif (!$min) {
354
							$output .= '"airline_name": "NA",';
355
						}
356
						if (isset($spotter_item['departure_airport'])) {
357
							if ($compress) $output .= '"dac": "'.$spotter_item['departure_airport'].'",';
358
							else $output .= '"departure_airport_code": "'.$spotter_item['departure_airport'].'",';
359
						}
360
						if (isset($spotter_item['departure_airport_city'])) {
361
							$output .= '"departure_airport": "'.$spotter_item['departure_airport_city'].', '.$spotter_item['departure_airport_country'].'",';
362
						}
363
						if (isset($spotter_item['departure_airport_time'])) {
364
							$output .= '"departure_airport_time": "'.$spotter_item['departure_airport_time'].'",';
365
						}
366
						if (isset($spotter_item['arrival_airport_time'])) {
367
							$output .= '"arrival_airport_time": "'.$spotter_item['arrival_airport_time'].'",';
368
						}
369
						if (isset($spotter_item['arrival_airport'])) {
370
							if ($compress) $output .= '"aac": "'.$spotter_item['arrival_airport'].'",';
371
							else $output .= '"arrival_airport_code": "'.$spotter_item['arrival_airport'].'",';
372
						}
373
						if (isset($spotter_item['arrival_airport_city'])) {
374
							$output .= '"arrival_airport": "'.$spotter_item['arrival_airport_city'].', '.$spotter_item['arrival_airport_country'].'",';
375
						}
376
						
377
						if (isset($spotter_item['date_iso_8601'])) {
378
							$output .= '"date_update": "'.date("M j, Y, g:i a T", strtotime($spotter_item['date_iso_8601'])).'",';
379
						}
380
						if (isset($spotter_item['date'])) {
381
							$output .= '"lu": "'.strtotime($spotter_item['date']).'",';
382
						}
383
						if (!$min) {
384
							$output .= '"latitude": "'.$spotter_item['latitude'].'",';
385
							$output .= '"longitude": "'.$spotter_item['longitude'].'",';
386
							$output .= '"ground_speed": "'.$spotter_item['ground_speed'].'",';
387
						}
388
						
389
						if (isset($spotter_item['altitude'])) {
390
							if ($compress) $output .= '"a": "'.$spotter_item['altitude'].'",';
391
							else $output .= '"altitude": "'.$spotter_item['altitude'].'",';
392
						}
393
						if ($compress)$output .= '"h": "'.$spotter_item['heading'].'",';
394
						else $output .= '"heading": "'.$spotter_item['heading'].'",';
395
						
396
						if ($currenttime != '') {
397
							if (strtotime($spotter_item['date']) < $currenttime) {
398
								if (isset($archivespeed)) {
399
									$nextcoord = $Common->nextcoord($spotter_item['latitude'],$spotter_item['longitude'],$spotter_item['ground_speed'],$spotter_item['heading'],$archivespeed,($currenttime-strtotime($spotter_item['date'])+$globalMapRefresh));
400
									$output .= '"nextlatlon": ['.$nextcoord['latitude'].','.$nextcoord['longitude'].'],';
401
								} elseif ($usenextlatlon) {
402
									$nextcoord = $Common->nextcoord($spotter_item['latitude'],$spotter_item['longitude'],$spotter_item['ground_speed'],$spotter_item['heading'],1,($currenttime-strtotime($spotter_item['date'])+$globalMapRefresh));
403
									$output .= '"nextlatlon": ['.$nextcoord['latitude'].','.$nextcoord['longitude'].'],';
404
								}
405
							}
406
						} else {
407
							if (isset($archivespeed)) {
408
								$nextcoord = $Common->nextcoord($spotter_item['latitude'],$spotter_item['longitude'],$spotter_item['ground_speed'],$spotter_item['heading'],$archivespeed);
409
								$output .= '"nextlatlon": ['.$nextcoord['latitude'].','.$nextcoord['longitude'].'],';
410
							} elseif ($usenextlatlon) {
411
								$nextcoord = $Common->nextcoord($spotter_item['latitude'],$spotter_item['longitude'],$spotter_item['ground_speed'],$spotter_item['heading']);
412
								$output .= '"nextlatlon": ['.$nextcoord['latitude'].','.$nextcoord['longitude'].'],';
413
							}
414
						}
415
416
						if (!$min) $output .= '"image": "'.$image.'",';
417
						if (isset($spotter_item['image_copyright']) && $spotter_item['image_copyright'] != '') {
418
							$output .= '"image_copyright": "'.str_replace('"',"'",trim(str_replace(array("\r\n","\r","\n","\\r","\\n","\\r\\n"),'',$spotter_item['image_copyright']))).'",';
419
						}
420
						if (isset($spotter_item['image_source_website'])) {
421
							$output .= '"image_source_website": "'.urlencode($spotter_item['image_source_website']).'",';
422
						}
423
						if (isset($spotter_item['squawk'])) {
424
							if ($compress) $output .= '"sq": "'.$spotter_item['squawk'].'",';
425
							else $output .= '"squawk": "'.$spotter_item['squawk'].'",';
426
						}
427
						if (isset($spotter_item['squawk_usage'])) {
428
							$output .= '"squawk_usage": "'.$spotter_item['squawk_usage'].'",';
429
						}
430
						if (isset($spotter_item['pilot_id'])) {
431
							$output .= '"pilot_id": "'.$spotter_item['pilot_id'].'",';
432
						}
433
						if (isset($spotter_item['pilot_name'])) {
434
							$output .= '"pilot_name": "'.$spotter_item['pilot_name'].'",';
435
						}
436
						if (isset($spotter_item['waypoints']) && $spotter_item['waypoints'] != '') {
437
							$output .= '"waypoints": "'.$spotter_item['waypoints'].'",';
438
						}
439
						if (isset($spotter_item['acars'])) {
440
							$output .= '"acars": "'.trim(str_replace(array("\r\n","\r","\n","\\r","\\n","\\r\\n"), '<br />',$spotter_item['acars']['message'])).'",';
441
						}
442
						// type when not aircraft ?
443
						if (isset($spotter_item['type'])) {
444
							if ($compress) $output .= '"t": "'.$spotter_item['type'].'"';
445
							else $output .= '"type": "'.$spotter_item['type'].'"';
446
						} elseif ($marine) {
447
							if ($compress) $output .= '"t": "ship"';
448
							else $output .= '"type": "ship"';
449
						} else {
450
							if ($compress) $output .= '"t": "aircraft"';
451
							else $output .= '"type": "aircraft"';
452
						}
453
						$output .= '},';
454
						$output .= '"geometry": {';
455
							$output .= '"type": "Point",';
456
								$output .= '"coordinates": [';
457
								if ($currenttime != '') {
458
									if (strtotime($spotter_item['date']) < $currenttime) {
459
										if (!isset($archivespeed)) $archivespeed = 1;
460
										$nextcoord = $Common->nextcoord($spotter_item['latitude'],$spotter_item['longitude'],$spotter_item['ground_speed'],$spotter_item['heading'],$archivespeed,$currenttime-strtotime($spotter_item['date']));
461
										$output .= $nextcoord['longitude'].','.$nextcoord['latitude'];
462
									} else {
463
										$output .= $spotter_item['longitude'].', ';
464
										$output .= $spotter_item['latitude'];
465
									}
466
								} else {
467
										$output .= $spotter_item['longitude'].', ';
468
										$output .= $spotter_item['latitude'];
469
								}
470
										/*
471
										.', ';
472
										$output .= $spotter_item['altitude']*30.48;
473
										$output .= ', '.strtotime($spotter_item['date']);
474
										*/
475
								$output .= ']';
476
							$output .= '}';
477
				$output .= '},';
478
					
479
			/*	} else {
480
								$output .= ', ';
481
								$output .= $spotter_item['longitude'].', ';
482
								$output .= $spotter_item['latitude'].', ';
483
								$output .= $spotter_item['altitude']*30.48;
484
								$output .= ', '.strtotime($spotter_item['date']);
485
486
				}
487
*/                
488
489
/*                
490
                //previous location history of aircraft
491
                $output .= '{';
492
					$output .= '"type": "Feature",';
493
                        $output .= '"properties": {';
494
							$output .= '"callsign": "'.$spotter_item['ident'].'",';
495
							$output .= '"type": "history"';
496
						$output .= '},';
497
						$output .= '"geometry": {';
498
							$output .= '"type": "LineString",';
499
								$output .= '"coordinates": [';
500
                                    //$spotter_history_array = SpotterLive::getAllLiveSpotterDataByIdent($spotter_item['ident']);
501
                                    if ($from_archive) {
502
					    $spotter_history_array = SpotterArchive::getAllArchiveSpotterDataById($spotter_item['flightaware_id']);
503
                                    } else {
504
					    $spotter_history_array = SpotterLive::getAllLiveSpotterDataById($spotter_item['flightaware_id']);
505
                                    }
506
										$d = false;
507
										$neg = false;
508
									$history_output = '';
509
									foreach ($spotter_history_array as $key => $spotter_history)
510
									{
511
										if (abs($spotter_history['longitude']-$spotter_item['longitude']) > 200 || $d==true) {
512
											if ($d == false) $d = true;
513
									        } else {
514
											$history_output .= '[';
515
											$history_output .=  $spotter_history['longitude'].', ';
516
											$history_output .=  $spotter_history['latitude'].',';
517
											$history_output .=  $spotter_history['altitude'];
518
											$history_output .= '],';
519
520
										}
521
									}
522
									if ($history_output != '') $output .= substr($history_output, 0, -1);
523
								$output .= ']';
524
							$output .= '}';
525
				$output .= '},';
526
                
527
			}
528
*/
529
				$history = filter_input(INPUT_GET,'history',FILTER_SANITIZE_STRING);
530
				if ($history == '' && isset($_COOKIE['history'])) $history = $_COOKIE['history'];
531
				
532
				if (
533
				    (isset($_COOKIE['flightpath']) && $_COOKIE['flightpath'] == 'true') 
534
				    || ((isset($globalMapHistory) && $globalMapHistory) || $allhistory)
535
				//    || (isset($history) && $history != '' && $history != 'NA' && ($history == $spotter_item['ident'] || $history == $spotter_item['flightaware_id']))
536
				//    || (isset($history) && $history != '' && $history != 'NA' && $history == $spotter_item['ident'])
537
				    || (isset($history) && $history != '' && $history != 'NA' && isset($spotter_item['flightaware_id']) && str_replace('-','',$history) == str_replace('-','',$spotter_item['flightaware_id']))
538
				    || (isset($history) && $history == '' && isset($spotter_item['flightaware_id']) && isset($_GET['flightaware_id']) && $_GET['flightaware_id'] == $spotter_item['flightaware_id'])
539
				    || (isset($history) && $history != '' && $history != 'NA' && isset($spotter_item['fammarine_id']) && str_replace('-','',$history) == str_replace('-','',$spotter_item['fammarine_id']))
540
				    || (isset($history) && $history == '' && isset($spotter_item['flightaware_id']) && isset($_GET['fammarine_id']) && $_GET['fammarine_id'] == $spotter_item['fammarine_id'])
541
				    || (isset($history) && $history != '' && $history != 'NA' && isset($spotter_item['famtrackid']) && str_replace('-','',$history) == str_replace('-','',$spotter_item['famtrackid']))
542
				    || (isset($history) && $history == '' && isset($spotter_item['flightaware_id']) && isset($_GET['famtrackid']) && $_GET['famtrackid'] == $spotter_item['famtrackid'])
543
				    ) {
544
					if ($tracker) {
545
						if ($from_archive || $globalArchive) {
546
							$spotter_history_array = $TrackerArchive->getAllArchiveTrackerDataById($spotter_item['famtrackid']);
547
						} else {
548
							$spotter_history_array = $TrackerLive->getAllLiveTrackerDataById($spotter_item['famtrackid']);
549
						}
550
					} elseif ($marine) {
551
						if ($from_archive || $globalArchive) {
552
							$spotter_history_array = $MarineArchive->getAllArchiveMarineDataById($spotter_item['fammarine_id']);
553
						} else {
554
							$spotter_history_array = $MarineLive->getAllLiveMarineDataById($spotter_item['fammarine_id']);
555
						}
556
					} else {
557
						if ($from_archive || $globalArchive) {
558
							$spotter_history_array = $SpotterArchive->getAllArchiveSpotterDataById($spotter_item['flightaware_id']);
559
						} else {
560
							$spotter_history_array = $SpotterLive->getAllLiveSpotterDataById($spotter_item['flightaware_id']);
561
						}
562
					}
563
					$d = false;
564
					foreach ($spotter_history_array as $key => $spotter_history)
565
					{
566
						if (isset($spotter_history['altitude'])) {
567
							$alt = round($spotter_history['altitude']/10)*10;
568
							if (!isset($prev_alt) || $prev_alt != $alt) {
569
								if (isset($prev_alt)) {
570
									$output_history .= '['.$spotter_history['longitude'].', '.$spotter_history['latitude'].', '.$spotter_history['altitude'].']';
571
									$output_history .= ']}},';
572
									$output .= $output_history;
573
								}
574
								if ($compress) $output_history = '{"type": "Feature","properties": {"c": "'.$spotter_item['ident'].'","t": "history","a": "'.$alt.'"},"geometry": {"type": "LineString","coordinates": [';
575
								else $output_history = '{"type": "Feature","properties": {"callsign": "'.$spotter_item['ident'].'","type": "history","altitude": "'.$alt.'"},"geometry": {"type": "LineString","coordinates": [';
576
							}
577
							$output_history .= '[';
578
							$output_history .=  $spotter_history['longitude'].', ';
579
							$output_history .=  $spotter_history['latitude'].', ';
580
							$output_history .=  $spotter_history['altitude']*30.48;
581
							$output_history .= '],';
582
							/*
583
							if ($from_archive === false) {
584
								$output_history .= '[';
585
								$output_history .=  $spotter_item['longitude'].', ';
586
								$output_history .=  $spotter_item['latitude'].', ';
587
								$output_history .=  $spotter_item['altitude']*30.48;
588
								$output_history .= '],';
589
							}
590
							*/
591
							$prev_alt = $alt;
592
						} else {
593
							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...
594
								if ($compress) $output_history = '{"type": "Feature","properties": {"c": "'.$spotter_item['ident'].'","t": "history"},"geometry": {"type": "LineString","coordinates": [';
595
								else $output_history = '{"type": "Feature","properties": {"callsign": "'.$spotter_item['ident'].'","type": "history"},"geometry": {"type": "LineString","coordinates": [';
596
							} else $d = true;
597
							$output_history .= '[';
598
							$output_history .=  $spotter_history['longitude'].', ';
599
							$output_history .=  $spotter_history['latitude'];
600
							$output_history .= '],';
601
							/*
602
							if ($from_archive === false) {
603
								$output_history .= '[';
604
								$output_history .=  $spotter_item['longitude'].', ';
605
								$output_history .=  $spotter_item['latitude'];
606
								$output_history .= '],';
607
							}
608
							*/
609
						}
610
					}
611
					if (isset($output_history)) {
612
					
613
						if ($from_archive === false) {
614
							$output_historyd = '[';
615
							$output_historyd .=  $spotter_item['longitude'].', ';
616
							$output_historyd .=  $spotter_item['latitude'];
617
							if (isset($spotter_history['altitude'])) $output_historyd .=  ','.$spotter_item['altitude']*30.48;
618
							$output_historyd .= '],';
619
							//$output_history = $output_historyd.$output_history;
620
							$output_history = $output_history.$output_historyd;
621
						}
622
						
623
						$output_history  = substr($output_history, 0, -1);
624
						$output_history .= ']}},';
625
						$output .= $output_history;
626
						unset($prev_alt);
627
						unset($output_history);
628
					}
629
				}
630
				
631
				if (((isset($history) && $history != '' && $history != 'NA' && isset($spotter_item['flightaware_id']) && str_replace('-','',$history) == str_replace('-','',$spotter_item['flightaware_id']))
632
				    || (isset($history) && $history == '' && isset($spotter_item['flightaware_id']) && isset($_GET['flightaware_id']) && $_GET['flightaware_id'] == $spotter_item['flightaware_id']))
633
				     && (isset($spotter_item['departure_airport']) 
634
				        && $spotter_item['departure_airport'] != 'NA' 
635
				        && isset($spotter_item['arrival_airport']) 
636
				        && $spotter_item['arrival_airport'] != 'NA' 
637
				        && ((isset($_COOKIE['MapRoute']) && $_COOKIE['MapRoute'] == "true") 
638
				    	    || (!isset($_COOKIE['MapRoute']) && isset($globalMapRoute) && $globalMapRoute)))) {
639
				    if ($compress) $output_air = '{"type": "Feature","properties": {"c": "'.$spotter_item['ident'].'","t": "route"},"geometry": {"type": "LineString","coordinates": [';
640
				    else $output_air = '{"type": "Feature","properties": {"callsign": "'.$spotter_item['ident'].'","type": "route"},"geometry": {"type": "LineString","coordinates": [';
641
				    if (isset($spotter_item['departure_airport_latitude'])) {
642
					$output_air .= '['.$spotter_item['departure_airport_longitude'].','.$spotter_item['departure_airport_latitude'].'],';
643
				    } elseif (isset($spotter_item['departure_airport']) && $spotter_item['departure_airport'] != 'NA') {
644
					$dairport = $Spotter->getAllAirportInfo($spotter_item['departure_airport']);
645
					if (isset($dairport[0]['latitude'])) {
646
					    $output_air .= '['.$dairport[0]['longitude'].','.$dairport[0]['latitude'].'],';
647
					}
648
				    }
649
				    if (isset($spotter_item['arrival_airport_latitude'])) {
650
					$output_air .= '['.$spotter_item['arrival_airport_longitude'].','.$spotter_item['arrival_airport_latitude'].'],';
651
				    } elseif (isset($spotter_item['arrival_airport']) && $spotter_item['arrival_airport'] != 'NA') {
652
					$aairport = $Spotter->getAllAirportInfo($spotter_item['arrival_airport']);
653
					if (isset($aairport[0]['latitude'])) {
654
					    $output_air .= '['.$aairport[0]['longitude'].','.$aairport[0]['latitude'].'],';
655
					}
656
				    }
657
				    $output_air  = substr($output_air, 0, -1);
658
				    $output_air .= ']}},';
659
				    $output .= $output_air;
660
				    unset($output_air);
661
				}
662
663
				//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))))) {
664
				//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))))) {
665
				if (((isset($history) && $history != '' && $history != 'NA' && isset($spotter_item['flightaware_id']) && str_replace('-','',$history) == str_replace('-','',$spotter_item['flightaware_id']))
666
				    || (isset($history) && $history == '' && isset($spotter_item['flightaware_id']) && isset($_GET['flightaware_id']) && $_GET['flightaware_id'] == $spotter_item['flightaware_id']))
667
				     && (isset($spotter_item['arrival_airport']) 
668
				        && $spotter_item['arrival_airport'] != 'NA' 
669
				        && ((isset($_COOKIE['MapRemainingRoute']) && $_COOKIE['MapRemainingRoute'] == "true") 
670
				    	    || (!isset($_COOKIE['MapRemainaingRoute']) && (!isset($globalMapRemainingRoute) 
671
				    	    || (isset($globalMapRemainingRoute) && $globalMapRemainingRoute)))))) {
672
				    $havedata = false;
673
				    if ($compress) $output_dest = '{"type": "Feature","properties": {"c": "'.$spotter_item['ident'].'","t": "routedest"},"geometry": {"type": "LineString","coordinates": [';
674
				    else $output_dest = '{"type": "Feature","properties": {"callsign": "'.$spotter_item['ident'].'","type": "routedest"},"geometry": {"type": "LineString","coordinates": [';
675
				    $output_dest .= '['.$spotter_item['longitude'].','.$spotter_item['latitude'].'],';
676
677
				    if (isset($spotter_item['arrival_airport_latitude'])) {
678
					$output_dest .= '['.$spotter_item['arrival_airport_longitude'].','.$spotter_item['arrival_airport_latitude'].']';
679
					$havedata = true;
680
				    } elseif (isset($spotter_item['arrival_airport']) && $spotter_item['arrival_airport'] != 'NA') {
681
					$aairport = $Spotter->getAllAirportInfo($spotter_item['arrival_airport']);
682
					if (isset($aairport[0]['latitude'])) {
683
					    $output_dest .= '['.$aairport[0]['longitude'].','.$aairport[0]['latitude'].']';
684
					    $havedata = true;
685
					}
686
				    }
687
				    //$output_dest  = substr($output_dest, 0, -1);
688
				    $output_dest .= ']}},';
689
				    if ($havedata) $output .= $output_dest;
690
				    unset($output_dest);
691
				}
692
			}
693
			$output  = substr($output, 0, -1);
694
			$output .= ']';
695
			$output .= ',"initial_sqltime": "'.$sqltime.'",';
696
			$output .= '"totaltime": "'.round(microtime(true)-$begintime,2).'",';
697
			if (isset($begindate)) $output .= '"archive_date": "'.$begindate.'",';
698
			$output .= '"fc": "'.$j.'"';
699
		} else {
700
			$output .= '"features": ';
701
			$output .= '[{';
702
			$output .= '"type": "Feature",';
703
			$output .= '"properties": {';
704
			$output .= '"fc": "'.$flightcnt.'",';
705
			$output .= '"empty": "true"}';
706
			$output .= ',"geometry": {"type": "Point","coordinates": [0, 0]}';
707
			$output .= '}]';
708
		}
709
		
710
$output .= '}';
711
712
print $output;
713
714
?>
715