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