Completed
Push — master ( 0a71c8...58eab4 )
by Yannick
38:44
created

live-geojson.php (2 issues)

Labels
Severity

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 = urldecode(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 = urldecode(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 = urldecode(filter_input(INPUT_GET,'fammarine_id',FILTER_SANITIZE_STRING));
101
	$spotter_array = $MarineLive->getLastLiveMarineDataById($fammarine_id);
102
	$allhistory = true;
103
} elseif (isset($globalMapUseBbox) && $globalMapUseBbox && 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 ($usecoord) {
154
	if (isset($_GET['archive'])) {
155
		$flightcnt = $SpotterArchive->getLiveSpotterCount($begindate,$enddate,$filter);
156
	} else {
157
		if ($tracker) {
158
			$flightcnt = $TrackerLive->getLiveSpotterCount($filter);
0 ignored issues
show
The method getLiveSpotterCount() does not seem to exist on object<TrackerLive>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
159
		} elseif ($marine) {
160
			$flightcnt = $MarineLive->getLiveSpotterCount($filter);
0 ignored issues
show
The method getLiveSpotterCount() does not seem to exist on object<MarineLive>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

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