Completed
Push — master ( 6c4f55...213543 )
by Yannick
10:31
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 = 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);
0 ignored issues
show
The method getMinLiveTrackerDatabyCoord() does not exist on TrackerLive. Did you maybe mean getMinLiveTrackerData()?

This check marks calls to methods that do not seem to exist on an object.

This is most likely the result of a method being renamed without all references to it being renamed likewise.

Loading history...
119
	} elseif ($marine) {
120
		$spotter_array = $MarineLive->getMinLiveMarineDatabyCoord($coord,$filter);
0 ignored issues
show
The method getMinLiveMarineDatabyCoord() does not exist on MarineLive. Did you maybe mean getMinLiveMarineData()?

This check marks calls to methods that do not seem to exist on an object.

This is most likely the result of a method being renamed without all references to it being renamed likewise.

Loading history...
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) {
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
							$prev_alt = $alt;
537
						} else {
538
							if ($d == false) {
539
								if ($compress) $output_history = '{"type": "Feature","properties": {"c": "'.$spotter_item['ident'].'","t": "history"},"geometry": {"type": "LineString","coordinates": [';
540
								else $output_history = '{"type": "Feature","properties": {"callsign": "'.$spotter_item['ident'].'","type": "history"},"geometry": {"type": "LineString","coordinates": [';
541
							} else $d = true;
542
							$output_history .= '[';
543
							$output_history .=  $spotter_history['longitude'].', ';
544
							$output_history .=  $spotter_history['latitude'];
545
							$output_history .= '],';
546
						}
547
					}
548
					if (isset($output_history)) {
549
						$output_history  = substr($output_history, 0, -1);
550
						$output_history .= ']}},';
551
						$output .= $output_history;
552
						unset($prev_alt);
553
						unset($output_history);
554
					}
555
				}
556
				
557
				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))))) {
558
				    $output_air = '{"type": "Feature","properties": {"callsign": "'.$spotter_item['ident'].'","type": "route"},"geometry": {"type": "LineString","coordinates": [';
559
				    if (isset($spotter_item['departure_airport_latitude'])) {
560
					$output_air .= '['.$spotter_item['departure_airport_longitude'].','.$spotter_item['departure_airport_latitude'].'],';
561
				    } elseif (isset($spotter_item['departure_airport']) && $spotter_item['departure_airport'] != 'NA') {
562
					$dairport = $Spotter->getAllAirportInfo($spotter_item['departure_airport']);
563
					if (isset($dairport[0]['latitude'])) {
564
					    $output_air .= '['.$dairport[0]['longitude'].','.$dairport[0]['latitude'].'],';
565
					}
566
				    }
567
				    if (isset($spotter_item['arrival_airport_latitude'])) {
568
					$output_air .= '['.$spotter_item['arrival_airport_longitude'].','.$spotter_item['arrival_airport_latitude'].']';
569
				    } elseif (isset($spotter_item['arrival_airport']) && $spotter_item['arrival_airport'] != 'NA') {
570
					$aairport = $Spotter->getAllAirportInfo($spotter_item['arrival_airport']);
571
					if (isset($aairport[0]['latitude'])) {
572
					    $output_air .= '['.$aairport[0]['longitude'].','.$aairport[0]['latitude'].']';
573
					}
574
				    }
575
				    $output_air .= ']}},';
576
				    $output .= $output_air;
577
				    unset($output_air);
578
				}
579
			}
580
			$output  = substr($output, 0, -1);
581
			$output .= ']';
582
			$output .= ',"initial_sqltime": "'.$sqltime.'",';
583
			$output .= '"totaltime": "'.round(microtime(true)-$begintime,2).'",';
584
			if (isset($begindate)) $output .= '"archive_date": "'.$begindate.'",';
585
			$output .= '"fc": "'.$j.'"';
586
		} else {
587
			$output .= '"features": ';
588
			$output .= '{';
589
			$output .= '"type": "Feature",';
590
			$output .= '"properties": {';
591
			$output .= '"fc": "'.$flightcnt.'"}}';
592
		}
593
		
594
$output .= '}';
595
596
print $output;
597
598
?>
599