Completed
Push — master ( 73f088...7f17b6 )
by Yannick
07:13
created
search-wkt.php 1 patch
Indentation   +40 added lines, -40 removed lines patch added patch discarded remove patch
@@ -4,55 +4,55 @@
 block discarded – undo
4 4
 require_once('require/class.Language.php');
5 5
 $Spotter = new Spotter();
6 6
 if (isset($_GET['start_date'])) {
7
-        //for the date manipulation into the query
8
-        if($_GET['start_date'] != "" && $_GET['end_date'] != ""){
9
-                $start_date = $_GET['start_date'].":00";
10
-                $end_date = $_GET['end_date'].":00";
11
-                $sql_date = $start_date.",".$end_date;
12
-        } else if($_GET['start_date'] != ""){
13
-                $start_date = $_GET['start_date'].":00";
14
-                $sql_date = $start_date;
15
-        } else if($_GET['start_date'] == "" && $_GET['end_date'] != ""){
16
-                $end_date = date("Y-m-d H:i:s", strtotime("2014-04-12")).",".$_GET['end_date'].":00";
17
-                $sql_date = $end_date;
18
-        } else $sql_date = '';
7
+		//for the date manipulation into the query
8
+		if($_GET['start_date'] != "" && $_GET['end_date'] != ""){
9
+				$start_date = $_GET['start_date'].":00";
10
+				$end_date = $_GET['end_date'].":00";
11
+				$sql_date = $start_date.",".$end_date;
12
+		} else if($_GET['start_date'] != ""){
13
+				$start_date = $_GET['start_date'].":00";
14
+				$sql_date = $start_date;
15
+		} else if($_GET['start_date'] == "" && $_GET['end_date'] != ""){
16
+				$end_date = date("Y-m-d H:i:s", strtotime("2014-04-12")).",".$_GET['end_date'].":00";
17
+				$sql_date = $end_date;
18
+		} else $sql_date = '';
19 19
 } else $sql_date = '';
20 20
 
21 21
 if (isset($_GET['highest_altitude'])) {
22
-        //for altitude manipulation
23
-        if($_GET['highest_altitude'] != "" && $_GET['lowest_altitude'] != ""){
24
-                $end_altitude = $_GET['highest_altitude'];
25
-                $start_altitude = $_GET['lowest_altitude'];
26
-                $sql_altitude = $start_altitude.",".$end_altitude;
27
-        } else if($_GET['highest_altitude'] != ""){
28
-                $end_altitude = $_GET['highest_altitude'];
29
-                $sql_altitude = $end_altitude;
30
-        } else if($_GET['highest_altitude'] == "" && $_GET['lowest_altitude'] != ""){
31
-                $start_altitude = $_GET['lowest_altitude'].",60000";
32
-                $sql_altitude = $start_altitude;
33
-        } else $sql_altitude = '';
22
+		//for altitude manipulation
23
+		if($_GET['highest_altitude'] != "" && $_GET['lowest_altitude'] != ""){
24
+				$end_altitude = $_GET['highest_altitude'];
25
+				$start_altitude = $_GET['lowest_altitude'];
26
+				$sql_altitude = $start_altitude.",".$end_altitude;
27
+		} else if($_GET['highest_altitude'] != ""){
28
+				$end_altitude = $_GET['highest_altitude'];
29
+				$sql_altitude = $end_altitude;
30
+		} else if($_GET['highest_altitude'] == "" && $_GET['lowest_altitude'] != ""){
31
+				$start_altitude = $_GET['lowest_altitude'].",60000";
32
+				$sql_altitude = $start_altitude;
33
+		} else $sql_altitude = '';
34 34
 } else $sql_altitude = '';
35 35
 
36 36
 //calculuation for the pagination
37 37
 if(!isset($_GET['limit']))
38 38
 {
39
-        if (!isset($_GET['number_results']))
40
-        {
41
-                $limit_start = 0;
42
-                $limit_end = 25;
43
-                $absolute_difference = 25;
44
-        } else {
45
-                if ($_GET['number_results'] > 1000){
46
-                        $_GET['number_results'] = 1000;
47
-                }
48
-                $limit_start = 0;
49
-                $limit_end = $_GET['number_results'];
50
-                $absolute_difference = $_GET['number_results'];
51
-        }
39
+		if (!isset($_GET['number_results']))
40
+		{
41
+				$limit_start = 0;
42
+				$limit_end = 25;
43
+				$absolute_difference = 25;
44
+		} else {
45
+				if ($_GET['number_results'] > 1000){
46
+						$_GET['number_results'] = 1000;
47
+				}
48
+				$limit_start = 0;
49
+				$limit_end = $_GET['number_results'];
50
+				$absolute_difference = $_GET['number_results'];
51
+		}
52 52
 }  else {
53
-        $limit_explode = explode(",", $_GET['limit']);
54
-        $limit_start = $limit_explode[0];
55
-        $limit_end = $limit_explode[1];
53
+		$limit_explode = explode(",", $_GET['limit']);
54
+		$limit_start = $limit_explode[0];
55
+		$limit_end = $limit_explode[1];
56 56
 }
57 57
 
58 58
 $absolute_difference = abs($limit_start - $limit_end);
Please login to merge, or discard this patch.
require/class.NOTAM.php 1 patch
Indentation   +700 added lines, -700 removed lines patch added patch discarded remove patch
@@ -6,706 +6,706 @@
 block discarded – undo
6 6
 class NOTAM {
7 7
 	public $db;
8 8
 	private $abbr = array(
9
-	                    'A/A' => 'Air-to-air',
10
-	                    'A/G' => 'Air-to-ground',
11
-	                    'AAL' => 'Above Aerodrome Level',
12
-	                    'ABM' => 'Abeam',
13
-	                    'ABN' => 'Aerodrome Beacon',
14
-	                    'ABT' => 'About',
15
-	                    'ABV' => 'Above',
16
-	                    'ACC' => 'Area Control',
17
-	                    'ACFT' => 'Aircraft',
18
-	                    'ACK' => 'Acknowledge',
19
-	                    'ACL' => 'Altimeter Check Location',
20
-	                    'ACN' => 'Aircraft Classification Number',
21
-	                    'ACPT' => 'Accepted',
22
-	                    'ACT' => 'Active',
23
-	                    'AD' => 'Aerodrome',
24
-	                    'ADA' => 'Advisory Area',
25
-	                    'ADC' => 'Aerodrome Chart',
26
-	                    'ADDN' => 'Additional',
27
-	                    'ADJ' => 'Adjacent',
28
-	                    'ADR' => 'Advisory Route',
29
-	                    'ADS' => 'Automatic Dependent Surveillance',
30
-	                    'ADVS' => 'Advisory Service',
31
-	                    'ADZ' => 'Advised',
32
-	                    'AFIL' => 'Flight Plan Filed In The Air',
33
-	                    'AFM' => 'Affirm',
34
-	                    'AFT' => 'After',
35
-	                    'AGA' => 'Aerodromes, Air Routes and Ground Aids',
36
-	                    'AGN' => 'Again',
37
-	                    'ALERFA' => 'Alert Phase',
38
-	                    'ALRS' => 'Alerting Service',
39
-	                    'ALS' => 'Approach Lighting System',
40
-	                    'ALT' => 'Altitude',
41
-	                    'ALTN' => 'Alternate',
42
-	                    'AMA' => 'Area Minimum Altitude',
43
-	                    'ANC' => 'Aeronautical Chart',
44
-	                    'ANCS' => 'Aeronautical Navigation Chart',
45
-	                    'ANS' => 'Answer',
46
-	                    'AOC' => 'Aerodrome Obstacle Chart',
47
-	                    'AP' => 'Airport',
48
-	                    'APCH' => 'Approach',
49
-	                    'APDC' => 'Aircraft Parking/docking Chart',
50
-	                    'APN' => 'Apron',
51
-	                    'APNS' => 'Aprons',
52
-	                    'APP' => 'Approach Control',
53
-	                    'APR' => 'April',
54
-	                    'APRX' => 'Approximately',
55
-	                    'APSG' => 'After Passing',
56
-	                    'APV' => 'Approved',
57
-	                    'ARC' => 'Area Chart',
58
-	                    'ARNG' => 'Arrange',
59
-	                    'ARO' => 'Air Traffic Services Reporting Office',
60
-	                    'ARP' => 'Aerodrome Reference Point',
61
-	                    'ARR' => 'Arriving',
62
-	                    'ARST' => 'Arresting',
63
-	                    'ASC' => 'Ascend To',
64
-	                    'ASDA' => 'Accelerate-Stop Distance Available',
65
-	                    'ASPEEDG' => 'Airspeed Gain',
66
-	                    'ASPEEDL' => 'Airspeed Loss',
67
-	                    'ASPH' => 'Asphalt',
68
-	                    'ATA' => 'Actual Time of Arrival',
69
-	                    'ATD' => 'Actual Time of Departure',
70
-	                    'ATFM' => 'Air Traffic Flow Management',
71
-	                    'ATM' => 'Air Traffic Management',
72
-	                    'ATP' => 'At',
73
-	                    'ATTN' => 'Attention',
74
-	                    'ATZ' => 'Aerodrome Traffic Zone',
75
-	                    'AUG' => 'August',
76
-	                    'AUTH' => 'Authorization',
77
-	                    'AUW' => 'All Up Weight',
78
-	                    'AUX' => 'Auxiliary',
79
-	                    'AVBL' => 'Available',
80
-	                    'AVG' => 'Average',
81
-	                    'AVGAS' => 'Aviation Gasoline',
82
-	                    'AWTA' => 'Advise At What Time Able',
83
-	                    'AWY' => 'Airway',
84
-	                    'AWYS' => 'Airways',
85
-	                    'AZM' => 'Azimuth',
86
-	                    'BA' => 'Braking Action',
87
-	                    'BCN' => 'Beacon',
88
-	                    'BCST' => 'Broadcast',
89
-	                    'BDRY' => 'Boundary',
90
-	                    'BFR' => 'Before',
91
-	                    'BLDG' => 'Building',
92
-	                    'BLO' => 'Below Clouds',
93
-	                    'BLW' => 'Below',
94
-	                    'BRF' => 'Short',
95
-	                    'BRG' => 'Bearing',
96
-	                    'BRKG' => 'Breaking',
97
-	                    'BTL' => 'Between Layers',
98
-	                    'BTN' => 'Between',
99
-	                    'CD' => 'Candela',
100
-	                    'CDN' => 'Coordination',
101
-	                    'CF' => 'Change Frequency To',
102
-	                    'CFM' => 'Confirm',
103
-	                    'CGL' => 'Circling Guidance Light(s)',
104
-	                    'CH' => 'Channel',
105
-	                    'CHG' => 'Changed',
106
-	                    'CIT' => 'Near or Over Large Towns',
107
-	                    'CIV' => 'Civil',
108
-	                    'CK' => 'Check',
109
-	                    'CL' => 'Centre Line',
110
-	                    'CLBR' => 'Calibration',
111
-	                    'CLD' => 'Cloud',
112
-	                    'CLG' => 'Calling',
113
-	                    'CLIMB-OUT' => 'Climb-out Area',
114
-	                    'CLR' => 'Clearance',
115
-	                    'CLRD' => 'Cleared',
116
-	                    'CLSD' => 'Closed',
117
-	                    'CMB' => 'Climb',
118
-	                    'CMPL' => 'Complete',
119
-	                    'CNL' => 'Cancel',
120
-	                    'CNS' => 'Communications, Navigation And Surveillance',
121
-	                    'COM' => 'Communications',
122
-	                    'CONC' => 'Concrete',
123
-	                    'COND' => 'Condition',
124
-	                    'CONS' => 'Continuous',
125
-	                    'CONST' => 'Construction',
126
-	                    'CONT' => 'Continued',
127
-	                    'COOR' => 'Coordination',
128
-	                    'COORD' => 'Coordinates',
129
-	                    'COP' => 'Change-over Point',
130
-	                    'COR' => 'Correction',
131
-	                    'COT' => 'At The Coast',
132
-	                    'COV' => 'Covered',
133
-	                    'CPDLC' => 'Controller-pilot Data Link Communications',
134
-	                    'CPL' => 'Current Flight Plan',
135
-	                    'CRC' => 'Cyclic Redundancy Check',
136
-	                    'CRZ' => 'Cruise',
137
-	                    'CTAM' => 'Climb To And Maintain',
138
-	                    'CTC' => 'Contact',
139
-	                    'CTL' => 'Control',
140
-	                    'CTN' => 'Caution',
141
-	                    'CTR' => 'Control Zone',
142
-	                    'CVR' => 'Cockpit Voice Recorder',
143
-	                    'CW' => 'Continuous Wave',
144
-	                    'CWY' => 'Clearway',
145
-	                    'DA' => 'Decision Altitude',
146
-	                    'DCKG' => 'Docking',
147
-	                    'DCP' => 'Datum Crossing Point',
148
-	                    'DCPC' => 'Direct Controller-pilot Communications',
149
-	                    'DCT' => 'Direct',
150
-	                    'DEC' => 'December',
151
-	                    'DEG' => 'Degrees',
152
-	                    'DEP' => 'Departing',
153
-	                    'DES' => 'Descend',
154
-	                    'DEST' => 'Destination',
155
-	                    'DETRESFA' => 'Distress Phase',
156
-	                    'DEV' => 'Deviating',
157
-	                    'DFDR' => 'Digital Flight Data Recorder',
158
-	                    'DFTI' => 'Distance From Touchdown Indicator',
159
-	                    'DH' => 'Decision Height',
160
-	                    'DIP' => 'Diffuse',
161
-	                    'DIST' => 'Distance',
162
-	                    'DIV' => 'Divert',
163
-	                    'DLA' => 'Delay',
164
-	                    'DLY' => 'Daily',
165
-	                    'DNG' => 'Dangerous',
166
-	                    'DOM' => 'Domestic',
167
-	                    'DPT' => 'Depth',
168
-	                    'DR' => 'Dead Reckoning',
169
-	                    'DRG' => 'During',
170
-	                    'DTAM' => 'Descend To And Maintain',
171
-	                    'DTG' => 'Date-time Group',
172
-	                    'DTHR' => 'Displaced Runway Threshold',
173
-	                    'DTRT' => 'Deteriorating',
174
-	                    'DTW' => 'Dual Tandem Wheels',
175
-	                    'DUPE' => 'This Is A Duplicate Message',
176
-	                    'DUR' => 'Duration',
177
-	                    'DVOR' => 'Doppler VOR',
178
-	                    'DW' => 'Dual Wheels',
179
-	                    'EAT' => 'Expected Approach Time',
180
-	                    'EB' => 'Eastbound',
181
-	                    'EDA' => 'Elevation Differential Area',
182
-	                    'EET' => 'Estimated Elapsed Time',
183
-	                    'EFC' => 'Expect Further Clearance',
184
-	                    'ELBA' => 'Emergency Location Beacon',
185
-	                    'ELEV' => 'Elevation',
186
-	                    'ELR' => 'Extra Long Range',
187
-	                    'EM' => 'Emission',
188
-	                    'EMERG' => 'Emergency',
189
-	                    'END' => 'Stop-end',
190
-	                    'ENE' => 'East-north-east',
191
-	                    'ENG' => 'Engine',
192
-	                    'ENR' => 'En-route',
193
-	                    'ENRC' => 'En-route Chart',
194
-	                    'EOBT' => 'Estimated Off-block Time',
195
-	                    'EQPT' => 'Equipment',
196
-	                    'ER' => 'Here',
197
-	                    'ESE' => 'East-south-east',
198
-	                    'EST' => 'Estimate',
199
-	                    'ETA' => 'Estimated Time Of Arrival',
200
-	                    'ETD' => 'Estimated Time Of Departure',
201
-	                    'ETO' => 'Estimated Time Over Significant Point',
202
-	                    'EV' => 'Every',
203
-	                    'EXC' => 'Except',
204
-	                    'EXER' => 'Exercise',
205
-	                    'EXP' => 'Expect',
206
-	                    'EXTD' => 'Extend',
207
-	                    'FAC' => 'Facilities',
208
-	                    'FAF' => 'Final Approach Fix',
209
-	                    'FAL' => 'Facilitation of International Airtransport',
210
-	                    'FAP' => 'Final Approach Point',
211
-	                    'FATO' => 'Final Approach And Take-off Area',
212
-	                    'FAX' => 'Fax',
213
-	                    'FBL' => 'Light',
214
-	                    'FCST' => 'Forecast',
215
-	                    'FCT' => 'Friction Coefficient',
216
-	                    'FDPS' => 'Flight Data Processing System',
217
-	                    'FEB' => 'February',
218
-	                    'FLD' => 'Field',
219
-	                    'FLG' => 'Flashing',
220
-	                    'FLR' => 'Flares',
221
-	                    'FLT' => 'Flight',
222
-	                    'FLTS' => 'Flights',
223
-	                    'FLTCK' => 'Flight Check',
224
-	                    'FLUC' => 'Fluctuating',
225
-	                    'FLW' => 'Follow(s)',
226
-	                    'FLY' => 'Fly',
227
-	                    'FM' => 'From',
228
-	                    'FMS' => 'Flight Management System',
229
-	                    'FMU' => 'Flow Management Unit',
230
-	                    'FNA' => 'Final Approach',
231
-	                    'FPAP' => 'Flight Path Alignment Point',
232
-	                    'FPL' => 'Flight Plan',
233
-	                    'FPLS' => 'Flight Plans',
234
-	                    'FPM' => 'Feet Per Minute',
235
-	                    'FPR' => 'Flight Plan Route',
236
-	                    'FR' => 'Fuel Remaining',
237
-	                    'FREQ' => 'Frequency',
238
-	                    'FRI' => 'Friday',
239
-	                    'FRNG' => 'Firing',
240
-	                    'FRONT' => 'Front',
241
-	                    'FRQ' => 'Frequent',
242
-	                    'FSL' => 'Full Stop Landing',
243
-	                    'FSS' => 'Flight Service Station',
244
-	                    'FST' => 'First',
245
-	                    'FTP' => 'Fictitious Threshold Point',
246
-	                    'G/A' => 'Ground-to-air',
247
-	                    'G/A/G' => 'Ground-to-air and Air-to-ground',
248
-	                    'GARP' => 'GBAS Azimuth Reference Point',
249
-	                    'GBAS' => 'Ground-based Augmentation System',
250
-	                    'GCAJ' => 'Ground Controlled Approach',
251
-	                    'GEN' => 'General',
252
-	                    'GEO' => 'Geographic or True',
253
-	                    'GES' => 'Ground Earth Station',
254
-	                    'GLD' => 'Glider',
255
-	                    'GMC' => 'Ground Movement Chart',
256
-	                    'GND' => 'Ground',
257
-	                    'GNDCK' => 'Ground Check',
258
-	                    'GP' => 'Glide Path',
259
-	                    'GRASS' => 'Grass landing area',
260
-	                    'GRVL' => 'Gravel',
261
-	                    'GUND' => 'Geoid Undulation',
262
-	                    'H24' => '24 Hours',
263
-	                    'HAPI' => 'Helicopter Approach Path Indicator',
264
-	                    'HBN' => 'Hazard Beacon',
265
-	                    'HDG' => 'Heading',
266
-	                    'HEL' => 'Helicopter',
267
-	                    'HGT' => 'Height',
268
-	                    'HJ' => 'Sunrise to Sunset',
269
-	                    'HLDG' => 'Holding',
270
-	                    'HN' => 'Sunset to Sunrise',
271
-	                    'HO' => 'Service Available To Meet Operational Requirements',
272
-	                    'HOL' => 'Holiday',
273
-	                    'HOSP' => 'Hospital Aircraft',
274
-	                    'HOT' => 'Height',
275
-	                    'HPA' => 'Hectopascal',
276
-	                    'HR' => 'Hours',
277
-	                    'HRS' => 'Hours',
278
-	                    'HS' => 'Service Available During Hours Of Scheduled Operations',
279
-	                    'HURCN' => 'Hurricane',
280
-	                    'HVY' => 'Heavy',
281
-	                    'HX' => 'No Specific Working Hours',
282
-	                    'HYR' => 'Higher',
283
-	                    'IAC' => 'Instrument Approach Chart',
284
-	                    'IAF' => 'Initial Approach Fix',
285
-	                    'IAO' => 'In And Out Of Clouds',
286
-	                    'IAP' => 'Instrument Approach Procedure',
287
-	                    'IAR' => 'Intersection Of Air Routes',
288
-	                    'IBN' => 'Identification Beacon',
289
-	                    'ID' => 'Identifier',
290
-	                    'IDENT' => 'Identification',
291
-	                    'IFF' => 'Identification Friend/Foe',
292
-	                    'IGA' => 'International General Aviation',
293
-	                    'IM' => 'Inner Marker',
294
-	                    'IMPR' => 'Improving',
295
-	                    'IMT' => 'Immediately',
296
-	                    'INA' => 'Initial Approach',
297
-	                    'INBD' => 'Inbound',
298
-	                    'INCERFA' => 'Uncertainty Phase',
299
-	                    'INFO' => 'Information',
300
-	                    'INOP' => 'Inoperative',
301
-	                    'INP' => 'If Not Possible',
302
-	                    'INPR' => 'In Progress',
303
-	                    'INSTL' => 'Installation',
304
-	                    'INSTR' => 'Instrument',
305
-	                    'INT' => 'Intersection',
306
-	                    'INTS' => 'Intersections',
307
-	                    'INTL' => 'International',
308
-	                    'INTRG' => 'Interrogator',
309
-	                    'INTRP' => 'Interruption',
310
-	                    'INTSF' => 'Intensifying',
311
-	                    'INTST' => 'Intensity',
312
-	                    'ISA' => 'International Standard Atmosphere',
313
-	                    'JAN' => 'January',
314
-	                    'JTST' => 'Jet stream',
315
-	                    'JUL' => 'July',
316
-	                    'JUN' => 'June',
317
-	                    'KMH' => 'Kilometres Per Hour',
318
-	                    'KPA' => 'Kilopascal',
319
-	                    'KT' => 'Knots',
320
-	                    'KW' => 'Kilowatts',
321
-	                    'LAN' => 'Inland',
322
-	                    'LAT' => 'Latitude',
323
-	                    'LDA' => 'Landing Distance Available',
324
-	                    'LDAH' => 'Landing Distance Available, Helicopter',
325
-	                    'LDG' => 'Landing',
326
-	                    'LDI' => 'Landing Direction Indicator',
327
-	                    'LEN' => 'Length',
328
-	                    'LGT' => 'Lighting',
329
-	                    'LGTD' => 'Lighted',
330
-	                    'LIH' => 'Light Intensity High',
331
-	                    'LIL' => 'Light Intensity Low',
332
-	                    'LIM' => 'Light Intensity Medium',
333
-	                    'LLZ' => 'Localizer',
334
-	                    'LM' => 'Locator, Middle',
335
-	                    'LMT' => 'Local Mean Time',
336
-	                    'LNG' => 'Long',
337
-	                    'LO' => 'Locator, Outer',
338
-	                    'LOG' => 'Located',
339
-	                    'LONG' => 'Longitude',
340
-	                    'LRG' => 'Long Range',
341
-	                    'LTD' => 'Limited',
342
-	                    'LTP' => 'Landing Threshold Point',
343
-	                    'LVE' => 'Leaving',
344
-	                    'LVL' => 'Level',
345
-	                    'LYR' => 'Layer',
346
-	                    'MAA' => 'Maximum Authorized Altitude',
347
-	                    'MAG' => 'Magnetic',
348
-	                    'MAINT' => 'Maintenance',
349
-	                    'MAP' => 'Aeronautical Maps and Charts',
350
-	                    'MAPT' => 'Missed Approach Point',
351
-	                    'MAR' => 'March',
352
-	                    'MAX' => 'Maximum',
353
-	                    'MAY' => 'May',
354
-	                    'MBST' => 'Microburst',
355
-	                    'MCA' => 'Minimum Crossing Altitude',
356
-	                    'MCW' => 'Modulated Continuous Wave',
357
-	                    'MDA' => 'Minimum Descent Altitude',
358
-	                    'MDH' => 'Minimum Descent Height',
359
-	                    'MEA' => 'Minimum En-route Altitude',
360
-	                    'MEHT' => 'Minimum Eye Height Over Threshold',
361
-	                    'MET' => 'Meteorological',
362
-	                    'MID' => 'Mid-point',
363
-	                    'MIL' => 'Military',
364
-	                    'MIN' => 'Minutes',
365
-	                    'MKR' => 'Marker Radio Beacon',
366
-	                    'MLS' => 'Microwave Landing System',
367
-	                    'MM' => 'Middle Marker',
368
-	                    'MNM' => 'Minimum',
369
-	                    'MNPS' => 'Minimum Navigation Performance Specifications',
370
-	                    'MNT' => 'Monitor',
371
-	                    'MNTN' => 'Maintain',
372
-	                    'MOA' => 'Military Operating Area',
373
-	                    'MOC' => 'Minimum Obstacle Clearance',
374
-	                    'MOD' => 'Moderate',
375
-	                    'MON' => 'Monday',
376
-	                    'MOPS' => 'Minimum Operational Performance Standards',
377
-	                    'MOV' => 'Movement',
378
-	                    'MRA' => 'Minimum Reception Altitude',
379
-	                    'MRG' => 'Medium Range',
380
-	                    'MRP' => 'ATS/MET Reporting Point',
381
-	                    'MS' => 'Minus',
382
-	                    'MSA' => 'Minimum Sector Altitude',
383
-	                    'MSAW' => 'Minimum Safe Altitude Warning',
384
-	                    'MSG' => 'Message',
385
-	                    'MSSR' => 'Monopulse Secondary Surveillance Radar',
386
-	                    'MT' => 'Mountain',
387
-	                    'MTU' => 'Metric Units',
388
-	                    'MTW' => 'Mountain Waves',
389
-	                    'NASC' => 'National AIS System Centre',
390
-	                    'NAT' => 'North Atlantic',
391
-	                    'NAV' => 'Navigation',
392
-	                    'NB' => 'Northbound',
393
-	                    'NBFR' => 'Not Before',
394
-	                    'NE' => 'North-east',
395
-	                    'NEB' => 'North-eastbound',
396
-	                    'NEG' => 'Negative',
397
-	                    'NGT' => 'Night',
398
-	                    'NIL' => 'None',
399
-	                    'NML' => 'Normal',
400
-	                    'NNE' => 'North-north-east',
401
-	                    'NNW' => 'North-north-west',
402
-	                    'NOF' => 'International NOTAM Office',
403
-	                    'NOV' => 'November',
404
-	                    'NOZ' => 'Normal Operating Zone',
405
-	                    'NR' => 'Number',
406
-	                    'NRH' => 'No Reply Heard',
407
-	                    'NTL' => 'National',
408
-	                    'NTZ' => 'No Transgression Zone',
409
-	                    'NW' => 'North-west',
410
-	                    'NWB' => 'North-westbound',
411
-	                    'NXT' => 'Next',
412
-	                    'O/R' => 'On Request',
413
-	                    'OAC' => 'Oceanic Area Control Centre',
414
-	                    'OAS' => 'Obstacle Assessment Surface',
415
-	                    'OBS' => 'Observe',
416
-	                    'OBST' => 'Obstacle',
417
-	                    'OBSTS' => 'Obstacles',
418
-	                    'OCA' => 'Oceanic Control Area',
419
-	                    'OCH' => 'Obstacle Clearance Height',
420
-	                    'OCS' => 'Obstacle Clearance Surface',
421
-	                    'OCT' => 'October',
422
-	                    'OFZ' => 'Obstacle Free Zone',
423
-	                    'OGN' => 'Originate',
424
-	                    'OHD' => 'Overhead',
425
-	                    'OM' => 'Outer Marker',
426
-	                    'OPC' => 'Control Indicated Is Operational Control',
427
-	                    'OPMET' => 'Operational Meteorological',
428
-	                    'OPN' => 'Open',
429
-	                    'OPR' => 'Operate',
430
-	                    'OPS' => 'Operations',
431
-	                    'ORD' => 'Order',
432
-	                    'OSV' => 'Ocean Station Vessel',
433
-	                    'OTLK' => 'Outlook',
434
-	                    'OTP' => 'On Top',
435
-	                    'OTS' => 'Organized Track System',
436
-	                    'OUBD' => 'Outbound',
437
-	                    'PA' => 'Precision Approach',
438
-	                    'PALS' => 'Precision Approach Lighting System',
439
-	                    'PANS' => 'Procedures for Air Navigation Services',
440
-	                    'PAR' => 'Precision Approach Radar',
441
-	                    'PARL' => 'Parallel',
442
-	                    'PATC' => 'Precision Approach Terrain Chart',
443
-	                    'PAX' => 'Passenger(s)',
444
-	                    'PCD' => 'Proceed',
445
-	                    'PCL' => 'Pilot-controlled Lighting',
446
-	                    'PCN' => 'Pavement Classification Number',
447
-	                    'PDC' => 'Pre-departure Clearance',
448
-	                    'PDG' => 'Procedure Design Gradient',
449
-	                    'PER' => 'Performance',
450
-	                    'PERM' => 'Permanent',
451
-	                    'PIB' => 'Pre-flight Information Bulletin',
452
-	                    'PJE' => 'Parachute Jumping Exercise',
453
-	                    'PLA' => 'Practice Low Approach',
454
-	                    'PLN' => 'Flight Plan',
455
-	                    'PLVL' => 'Present Level',
456
-	                    'PN' => 'Prior Notice Required',
457
-	                    'PNR' => 'Point Of No Return',
458
-	                    'POB' => 'Persons On Board',
459
-	                    'POSS' => 'Possible',
460
-	                    'PPI' => 'Plan Position Indicator',
461
-	                    'PPR' => 'Prior Permission Required',
462
-	                    'PPSN' => 'Present Position',
463
-	                    'PRI' => 'Primary',
464
-	                    'PRKG' => 'Parking',
465
-	                    'PROB' => 'Probability',
466
-	                    'PROC' => 'Procedure',
467
-	                    'PROV' => 'Provisional',
468
-	                    'PS' => 'Plus',
469
-	                    'PSG' => 'Passing',
470
-	                    'PSN' => 'Position',
471
-	                    'PSNS' => 'Positions',
472
-	                    'PSR' => 'Primary Surveillance Radar',
473
-	                    'PSYS' => 'Pressure System(s)',
474
-	                    'PTN' => 'Procedure Turn',
475
-	                    'PTS' => 'Polar Track Structure',
476
-	                    'PWR' => 'Power',
477
-	                    'QUAD' => 'Quadrant',
478
-	                    'RAC' => 'Rules of The Air and Air Traffic Services',
479
-	                    'RAG' => 'Runway Arresting Gear',
480
-	                    'RAI' => 'Runway Alignment Indicator',
481
-	                    'RASC' => 'Regional AIS System Centre',
482
-	                    'RASS' => 'Remote Altimeter Setting Source',
483
-	                    'RB' => 'Rescue Boat',
484
-	                    'RCA' => 'Reach Cruising Altitude',
485
-	                    'RCC' => 'Rescue Coordination Centre',
486
-	                    'RCF' => 'Radiocommunication Failure',
487
-	                    'RCH' => 'Reaching',
488
-	                    'RCL' => 'Runway Centre Line',
489
-	                    'RCLL' => 'Runway Centre Line Light(s)',
490
-	                    'RCLR' => 'Recleared',
491
-	                    'RDH' => 'Reference Datum Height',
492
-	                    'RDL' => 'Radial',
493
-	                    'RDO' => 'Radio',
494
-	                    'RE' => 'Recent',
495
-	                    'REC' => 'Receiver',
496
-	                    'REDL' => 'Runway Edge Light(s)',
497
-	                    'REF' => 'Refer To',
498
-	                    'REG' => 'Registration',
499
-	                    'RENL' => 'Runway End Light(s)',
500
-	                    'REP' => 'Report',
501
-	                    'REQ' => 'Requested',
502
-	                    'RERTE' => 'Re-route',
503
-	                    'RESA' => 'Runway End Safety Area',
504
-	                    'RG' => 'Range (lights)',
505
-	                    'RHC' => 'Right-hand Circuit',
506
-	                    'RIF' => 'Reclearance In Flight',
507
-	                    'RITE' => 'Right',
508
-	                    'RL' => 'Report Leaving',
509
-	                    'RLA' => 'Relay To',
510
-	                    'RLCE' => 'Request Level Change En Route',
511
-	                    'RLLS' => 'Runway Lead-in Lighting System',
512
-	                    'RLNA' => 'Request Level Not Available',
513
-	                    'RMAC' => 'Radar Minimum Altitude Chart',
514
-	                    'RMK' => 'Remark',
515
-	                    'RNG' => 'Radio Range',
516
-	                    'RNP' => 'Required Navigation Performance',
517
-	                    'ROC' => 'Rate Of Climb',
518
-	                    'ROD' => 'Rate Of Descent',
519
-	                    'ROFOR' => 'Route Forecast',
520
-	                    'RON' => 'Receiving Only',
521
-	                    'RPI' => 'Radar Position Indicator',
522
-	                    'RPL' => 'Repetitive Flight Plan',
523
-	                    'RPLC' => 'Replaced',
524
-	                    'RPS' => 'Radar Position Symbol',
525
-	                    'RQMNTS' => 'Requirements',
526
-	                    'RQP' => 'Request Flight Plan',
527
-	                    'RQS' => 'Request Supplementary Flight Plan',
528
-	                    'RR' => 'Report Reaching',
529
-	                    'RSC' => 'Rescue Sub-centre',
530
-	                    'RSCD' => 'Runway Surface Condition',
531
-	                    'RSP' => 'Responder Beacon',
532
-	                    'RSR' => 'En-route Surveillance Radar',
533
-	                    'RTE' => 'Route',
534
-	                    'RTES' => 'Routes',
535
-	                    'RTF' => 'Radiotelephone',
536
-	                    'RTG' => 'Radiotelegraph',
537
-	                    'RTHL' => 'Runway Threshold Light(s)',
538
-	                    'RTN' => 'Return',
539
-	                    'RTODAH' => 'Rejected Take-off Distance Available, Helicopter',
540
-	                    'RTS' => 'Return To Service',
541
-	                    'RTT' => 'Radioteletypewriter',
542
-	                    'RTZL' => 'Runway Touchdown Zone Light(s)',
543
-	                    'RUT' => 'Standard Regional Route Transmitting Frequencies',
544
-	                    'RV' => 'Rescue Vessel',
545
-	                    'RVSM' => 'Reduced Vertical Separation Minimum',
546
-	                    'RWY' => 'Runway',
547
-	                    'RWYS' => 'Runways',
548
-	                    'SALS' => 'Simple Approach Lighting System',
549
-	                    'SAN' => 'Sanitary',
550
-	                    'SAP' => 'As Soon As Possible',
551
-	                    'SAR' => 'Search and Rescue',
552
-	                    'SARPS' => 'Standards and Recommended Practices',
553
-	                    'SAT' => 'Saturday',
554
-	                    'SATCOM' => 'Satellite Communication',
555
-	                    'SB' => 'Southbound',
556
-	                    'SBAS' => 'Satellite-based Augmentation System',
557
-	                    'SDBY' => 'Stand by',
558
-	                    'SE' => 'South-east',
559
-	                    'SEA' => 'Sea',
560
-	                    'SEB' => 'South-eastbound',
561
-	                    'SEC' => 'Seconds',
562
-	                    'SECN' => 'Section',
563
-	                    'SECT' => 'Sector',
564
-	                    'SEP' => 'September',
565
-	                    'SER' => 'Service',
566
-	                    'SEV' => 'Severe',
567
-	                    'SFC' => 'Surface',
568
-	                    'SGL' => 'Signal',
569
-	                    'SID' => 'Standard Instrument Departure',
570
-	                    'SIF' => 'Selective Identification Feature',
571
-	                    'SIG' => 'Significant',
572
-	                    'SIMUL' => 'Simultaneous',
573
-	                    'SKED' => 'Schedule',
574
-	                    'SLP' => 'Speed Limiting Point',
575
-	                    'SLW' => 'Slow',
576
-	                    'SMC' => 'Surface Movement Control',
577
-	                    'SMR' => 'Surface Movement Radar',
578
-	                    'SPL' => 'Supplementary Flight Plan',
579
-	                    'SPOC' => 'SAR Point Of Contact',
580
-	                    'SPOT' => 'Spot Wind',
581
-	                    'SR' => 'Sunrise',
582
-	                    'SRA' => 'Surveillance Radar Approach',
583
-	                    'SRE' => 'Surveillance Radar Element Of Precision Approach Radar System',
584
-	                    'SRG' => 'Short Range',
585
-	                    'SRR' => 'Search and Rescue Region',
586
-	                    'SRY' => 'Secondary',
587
-	                    'SS' => 'Sunset',
588
-	                    'SSE' => 'South-south-east',
589
-	                    'SSR' => 'Secondary Surveillance Radar',
590
-	                    'SST' => 'Supersonic Transport',
591
-	                    'SSW' => 'South-south-west',
592
-	                    'STA' => 'Straight-in Approach',
593
-	                    'STAR' => 'Standard Instrument Arrival',
594
-	                    'STD' => 'Standard',
595
-	                    'STN' => 'Station',
596
-	                    'STNR' => 'Stationary',
597
-	                    'STOL' => 'Short Take-off and Landing',
598
-	                    'STS' => 'Status',
599
-	                    'STWL' => 'Stopway Light(s)',
600
-	                    'SUBJ' => 'Subject To',
601
-	                    'SUN' => 'Sunday',
602
-	                    'SUP' => 'Supplement',
603
-	                    'SUPPS' => 'Regional Supplementary Procedures Service Message',
604
-	                    'SVCBL' => 'Serviceable',
605
-	                    'SW' => 'South-west',
606
-	                    'SWB' => 'South-westbound',
607
-	                    'SWY' => 'Stopway',
608
-	                    'TA' => 'Transition Altitude',
609
-	                    'TAA' => 'Terminal Arrival Altitude',
610
-	                    'TAF' => 'Aerodrome Forecast',
611
-	                    'TAIL' => 'Tail Wind',
612
-	                    'TAR' => 'Terminal Area Surveillance Radar',
613
-	                    'TAX' => 'Taxi',
614
-	                    'TCAC' => 'Tropical Cyclone Advisory Centre',
615
-	                    'TDO' => 'Tornado',
616
-	                    'TDZ' => 'Touchdown Zone',
617
-	                    'TECR' => 'Technical Reason',
618
-	                    'TEMPO' => 'Temporarily',
619
-	                    'TFC' => 'Traffic',
620
-	                    'TGL' => 'Touch-and-go',
621
-	                    'TGS' => 'Taxiing Guidance System',
622
-	                    'THR' => 'Threshold',
623
-	                    'THRU' => 'Through',
624
-	                    'THU' => 'Thursday',
625
-	                    'TIBA' => 'Traffic Information Broadcast By Aircraft',
626
-	                    'TIL' => 'Until',
627
-	                    'TIP' => 'Until Past',
628
-	                    'TKOF' => 'Take-off',
629
-	                    'TL' => 'Till',
630
-	                    'TLOF' => 'Touchdown And Lift-off Area',
631
-	                    'TMA' => 'Terminal Control Area',
632
-	                    'TNA' => 'Turn Altitude',
633
-	                    'TNH' => 'Turn Height',
634
-	                    'TOC' => 'Top of Climb',
635
-	                    'TODA' => 'Take-off Distance Available',
636
-	                    'TODAH' => 'Take-off Distance Available, Helicopter',
637
-	                    'TORA' => 'Take-off Run Available',
638
-	                    'TP' => 'Turning Point',
639
-	                    'TR' => 'Track',
640
-	                    'TRA' => 'Temporary Reserved Airspace',
641
-	                    'TRANS' => 'Transmitter',
642
-	                    'TRL' => 'Transition Level',
643
-	                    'TUE' => 'Tuesday',
644
-	                    'TURB' => 'Turbulence',
645
-	                    'TVOR' => 'Terminal VOR',
646
-	                    'TWR' => 'Tower',
647
-	                    'TWY' => 'Taxiway',
648
-	                    'TWYL' => 'Taxiway-link',
649
-	                    'TXT' => 'Text',
650
-	                    'TYP' => 'Type of Aircraft',
651
-	                    'U/S' => 'Unserviceable',
652
-	                    'UAB' => 'Until Advised By',
653
-	                    'UAC' => 'Upper Area Control Centre',
654
-	                    'UAR' => 'Upper Air Route',
655
-	                    'UFN' => 'Until Further Notice',
656
-	                    'UHDT' => 'Unable Higher Due Traffic',
657
-	                    'UIC' => 'Upper Information Centre',
658
-	                    'UIR' => 'Upper Flight Information Region',
659
-	                    'ULR' => 'Ultra Long Range',
660
-	                    'UNA' => 'Unable',
661
-	                    'UNAP' => 'Unable To Approve',
662
-	                    'UNL' => 'Unlimited',
663
-	                    'UNREL' => 'Unreliable',
664
-	                    'UTA' => 'Upper Control Area',
665
-	                    'VAAC' => 'Volcanic Ash Advisory Centre',
666
-	                    'VAC' => 'Visual Approach Chart',
667
-	                    'VAL' => 'In Valleys',
668
-	                    'VAN' => 'Runway Control Van',
669
-	                    'VAR' => 'Visual-aural Radio Range',
670
-	                    'VC' => 'Vicinity',
671
-	                    'VCY' => 'Vicinity',
672
-	                    'VER' => 'Vertical',
673
-	                    'VIS' => 'Visibility',
674
-	                    'VLR' => 'Very Long Range',
675
-	                    'VPA' => 'Vertical Path Angle',
676
-	                    'VRB' => 'Variable',
677
-	                    'VSA' => 'By Visual Reference To The Ground',
678
-	                    'VSP' => 'Vertical Speed',
679
-	                    'VTOL' => 'Vertical Take-off And Landing',
680
-	                    'WAC' => 'World Aeronautical Chart',
681
-	                    'WAFC' => 'World Area Forecast Centre',
682
-	                    'WB' => 'Westbound',
683
-	                    'WBAR' => 'Wing Bar Lights',
684
-	                    'WDI' => 'Wind Direction Indicator',
685
-	                    'WDSPR' => 'Widespread',
686
-	                    'WED' => 'Wednesday',
687
-	                    'WEF' => 'Effective From',
688
-	                    'WI' => 'Within',
689
-	                    'WID' => 'Width',
690
-	                    'WIE' => 'Effective Immediately',
691
-	                    'WILCO' => 'Will Comply',
692
-	                    'WIND' => 'Wind',
693
-	                    'WINTEM' => 'Forecast Upper Wind And Temperature For Aviation',
694
-	                    'WIP' => 'Work In Progress',
695
-	                    'WKN' => 'Weaken',
696
-	                    'WNW' => 'West-north-west',
697
-	                    'WO' => 'Without',
698
-	                    'WPT' => 'Way-point',
699
-	                    'WRNG' => 'Warning',
700
-	                    'WSW' => 'West-south-west',
701
-	                    'WT' => 'Weight',
702
-	                    'WWW' => 'Worldwide Web',
703
-	                    'WX' => 'Weather',
704
-	                    'XBAR' => 'Crossbar',
705
-	                    'XNG' => 'Crossing',
706
-	                    'XS' => 'Atmospherics',
707
-	                    'YCZ' => 'Yellow Caution Zone',
708
-	                    'YR' => 'Your');
9
+						'A/A' => 'Air-to-air',
10
+						'A/G' => 'Air-to-ground',
11
+						'AAL' => 'Above Aerodrome Level',
12
+						'ABM' => 'Abeam',
13
+						'ABN' => 'Aerodrome Beacon',
14
+						'ABT' => 'About',
15
+						'ABV' => 'Above',
16
+						'ACC' => 'Area Control',
17
+						'ACFT' => 'Aircraft',
18
+						'ACK' => 'Acknowledge',
19
+						'ACL' => 'Altimeter Check Location',
20
+						'ACN' => 'Aircraft Classification Number',
21
+						'ACPT' => 'Accepted',
22
+						'ACT' => 'Active',
23
+						'AD' => 'Aerodrome',
24
+						'ADA' => 'Advisory Area',
25
+						'ADC' => 'Aerodrome Chart',
26
+						'ADDN' => 'Additional',
27
+						'ADJ' => 'Adjacent',
28
+						'ADR' => 'Advisory Route',
29
+						'ADS' => 'Automatic Dependent Surveillance',
30
+						'ADVS' => 'Advisory Service',
31
+						'ADZ' => 'Advised',
32
+						'AFIL' => 'Flight Plan Filed In The Air',
33
+						'AFM' => 'Affirm',
34
+						'AFT' => 'After',
35
+						'AGA' => 'Aerodromes, Air Routes and Ground Aids',
36
+						'AGN' => 'Again',
37
+						'ALERFA' => 'Alert Phase',
38
+						'ALRS' => 'Alerting Service',
39
+						'ALS' => 'Approach Lighting System',
40
+						'ALT' => 'Altitude',
41
+						'ALTN' => 'Alternate',
42
+						'AMA' => 'Area Minimum Altitude',
43
+						'ANC' => 'Aeronautical Chart',
44
+						'ANCS' => 'Aeronautical Navigation Chart',
45
+						'ANS' => 'Answer',
46
+						'AOC' => 'Aerodrome Obstacle Chart',
47
+						'AP' => 'Airport',
48
+						'APCH' => 'Approach',
49
+						'APDC' => 'Aircraft Parking/docking Chart',
50
+						'APN' => 'Apron',
51
+						'APNS' => 'Aprons',
52
+						'APP' => 'Approach Control',
53
+						'APR' => 'April',
54
+						'APRX' => 'Approximately',
55
+						'APSG' => 'After Passing',
56
+						'APV' => 'Approved',
57
+						'ARC' => 'Area Chart',
58
+						'ARNG' => 'Arrange',
59
+						'ARO' => 'Air Traffic Services Reporting Office',
60
+						'ARP' => 'Aerodrome Reference Point',
61
+						'ARR' => 'Arriving',
62
+						'ARST' => 'Arresting',
63
+						'ASC' => 'Ascend To',
64
+						'ASDA' => 'Accelerate-Stop Distance Available',
65
+						'ASPEEDG' => 'Airspeed Gain',
66
+						'ASPEEDL' => 'Airspeed Loss',
67
+						'ASPH' => 'Asphalt',
68
+						'ATA' => 'Actual Time of Arrival',
69
+						'ATD' => 'Actual Time of Departure',
70
+						'ATFM' => 'Air Traffic Flow Management',
71
+						'ATM' => 'Air Traffic Management',
72
+						'ATP' => 'At',
73
+						'ATTN' => 'Attention',
74
+						'ATZ' => 'Aerodrome Traffic Zone',
75
+						'AUG' => 'August',
76
+						'AUTH' => 'Authorization',
77
+						'AUW' => 'All Up Weight',
78
+						'AUX' => 'Auxiliary',
79
+						'AVBL' => 'Available',
80
+						'AVG' => 'Average',
81
+						'AVGAS' => 'Aviation Gasoline',
82
+						'AWTA' => 'Advise At What Time Able',
83
+						'AWY' => 'Airway',
84
+						'AWYS' => 'Airways',
85
+						'AZM' => 'Azimuth',
86
+						'BA' => 'Braking Action',
87
+						'BCN' => 'Beacon',
88
+						'BCST' => 'Broadcast',
89
+						'BDRY' => 'Boundary',
90
+						'BFR' => 'Before',
91
+						'BLDG' => 'Building',
92
+						'BLO' => 'Below Clouds',
93
+						'BLW' => 'Below',
94
+						'BRF' => 'Short',
95
+						'BRG' => 'Bearing',
96
+						'BRKG' => 'Breaking',
97
+						'BTL' => 'Between Layers',
98
+						'BTN' => 'Between',
99
+						'CD' => 'Candela',
100
+						'CDN' => 'Coordination',
101
+						'CF' => 'Change Frequency To',
102
+						'CFM' => 'Confirm',
103
+						'CGL' => 'Circling Guidance Light(s)',
104
+						'CH' => 'Channel',
105
+						'CHG' => 'Changed',
106
+						'CIT' => 'Near or Over Large Towns',
107
+						'CIV' => 'Civil',
108
+						'CK' => 'Check',
109
+						'CL' => 'Centre Line',
110
+						'CLBR' => 'Calibration',
111
+						'CLD' => 'Cloud',
112
+						'CLG' => 'Calling',
113
+						'CLIMB-OUT' => 'Climb-out Area',
114
+						'CLR' => 'Clearance',
115
+						'CLRD' => 'Cleared',
116
+						'CLSD' => 'Closed',
117
+						'CMB' => 'Climb',
118
+						'CMPL' => 'Complete',
119
+						'CNL' => 'Cancel',
120
+						'CNS' => 'Communications, Navigation And Surveillance',
121
+						'COM' => 'Communications',
122
+						'CONC' => 'Concrete',
123
+						'COND' => 'Condition',
124
+						'CONS' => 'Continuous',
125
+						'CONST' => 'Construction',
126
+						'CONT' => 'Continued',
127
+						'COOR' => 'Coordination',
128
+						'COORD' => 'Coordinates',
129
+						'COP' => 'Change-over Point',
130
+						'COR' => 'Correction',
131
+						'COT' => 'At The Coast',
132
+						'COV' => 'Covered',
133
+						'CPDLC' => 'Controller-pilot Data Link Communications',
134
+						'CPL' => 'Current Flight Plan',
135
+						'CRC' => 'Cyclic Redundancy Check',
136
+						'CRZ' => 'Cruise',
137
+						'CTAM' => 'Climb To And Maintain',
138
+						'CTC' => 'Contact',
139
+						'CTL' => 'Control',
140
+						'CTN' => 'Caution',
141
+						'CTR' => 'Control Zone',
142
+						'CVR' => 'Cockpit Voice Recorder',
143
+						'CW' => 'Continuous Wave',
144
+						'CWY' => 'Clearway',
145
+						'DA' => 'Decision Altitude',
146
+						'DCKG' => 'Docking',
147
+						'DCP' => 'Datum Crossing Point',
148
+						'DCPC' => 'Direct Controller-pilot Communications',
149
+						'DCT' => 'Direct',
150
+						'DEC' => 'December',
151
+						'DEG' => 'Degrees',
152
+						'DEP' => 'Departing',
153
+						'DES' => 'Descend',
154
+						'DEST' => 'Destination',
155
+						'DETRESFA' => 'Distress Phase',
156
+						'DEV' => 'Deviating',
157
+						'DFDR' => 'Digital Flight Data Recorder',
158
+						'DFTI' => 'Distance From Touchdown Indicator',
159
+						'DH' => 'Decision Height',
160
+						'DIP' => 'Diffuse',
161
+						'DIST' => 'Distance',
162
+						'DIV' => 'Divert',
163
+						'DLA' => 'Delay',
164
+						'DLY' => 'Daily',
165
+						'DNG' => 'Dangerous',
166
+						'DOM' => 'Domestic',
167
+						'DPT' => 'Depth',
168
+						'DR' => 'Dead Reckoning',
169
+						'DRG' => 'During',
170
+						'DTAM' => 'Descend To And Maintain',
171
+						'DTG' => 'Date-time Group',
172
+						'DTHR' => 'Displaced Runway Threshold',
173
+						'DTRT' => 'Deteriorating',
174
+						'DTW' => 'Dual Tandem Wheels',
175
+						'DUPE' => 'This Is A Duplicate Message',
176
+						'DUR' => 'Duration',
177
+						'DVOR' => 'Doppler VOR',
178
+						'DW' => 'Dual Wheels',
179
+						'EAT' => 'Expected Approach Time',
180
+						'EB' => 'Eastbound',
181
+						'EDA' => 'Elevation Differential Area',
182
+						'EET' => 'Estimated Elapsed Time',
183
+						'EFC' => 'Expect Further Clearance',
184
+						'ELBA' => 'Emergency Location Beacon',
185
+						'ELEV' => 'Elevation',
186
+						'ELR' => 'Extra Long Range',
187
+						'EM' => 'Emission',
188
+						'EMERG' => 'Emergency',
189
+						'END' => 'Stop-end',
190
+						'ENE' => 'East-north-east',
191
+						'ENG' => 'Engine',
192
+						'ENR' => 'En-route',
193
+						'ENRC' => 'En-route Chart',
194
+						'EOBT' => 'Estimated Off-block Time',
195
+						'EQPT' => 'Equipment',
196
+						'ER' => 'Here',
197
+						'ESE' => 'East-south-east',
198
+						'EST' => 'Estimate',
199
+						'ETA' => 'Estimated Time Of Arrival',
200
+						'ETD' => 'Estimated Time Of Departure',
201
+						'ETO' => 'Estimated Time Over Significant Point',
202
+						'EV' => 'Every',
203
+						'EXC' => 'Except',
204
+						'EXER' => 'Exercise',
205
+						'EXP' => 'Expect',
206
+						'EXTD' => 'Extend',
207
+						'FAC' => 'Facilities',
208
+						'FAF' => 'Final Approach Fix',
209
+						'FAL' => 'Facilitation of International Airtransport',
210
+						'FAP' => 'Final Approach Point',
211
+						'FATO' => 'Final Approach And Take-off Area',
212
+						'FAX' => 'Fax',
213
+						'FBL' => 'Light',
214
+						'FCST' => 'Forecast',
215
+						'FCT' => 'Friction Coefficient',
216
+						'FDPS' => 'Flight Data Processing System',
217
+						'FEB' => 'February',
218
+						'FLD' => 'Field',
219
+						'FLG' => 'Flashing',
220
+						'FLR' => 'Flares',
221
+						'FLT' => 'Flight',
222
+						'FLTS' => 'Flights',
223
+						'FLTCK' => 'Flight Check',
224
+						'FLUC' => 'Fluctuating',
225
+						'FLW' => 'Follow(s)',
226
+						'FLY' => 'Fly',
227
+						'FM' => 'From',
228
+						'FMS' => 'Flight Management System',
229
+						'FMU' => 'Flow Management Unit',
230
+						'FNA' => 'Final Approach',
231
+						'FPAP' => 'Flight Path Alignment Point',
232
+						'FPL' => 'Flight Plan',
233
+						'FPLS' => 'Flight Plans',
234
+						'FPM' => 'Feet Per Minute',
235
+						'FPR' => 'Flight Plan Route',
236
+						'FR' => 'Fuel Remaining',
237
+						'FREQ' => 'Frequency',
238
+						'FRI' => 'Friday',
239
+						'FRNG' => 'Firing',
240
+						'FRONT' => 'Front',
241
+						'FRQ' => 'Frequent',
242
+						'FSL' => 'Full Stop Landing',
243
+						'FSS' => 'Flight Service Station',
244
+						'FST' => 'First',
245
+						'FTP' => 'Fictitious Threshold Point',
246
+						'G/A' => 'Ground-to-air',
247
+						'G/A/G' => 'Ground-to-air and Air-to-ground',
248
+						'GARP' => 'GBAS Azimuth Reference Point',
249
+						'GBAS' => 'Ground-based Augmentation System',
250
+						'GCAJ' => 'Ground Controlled Approach',
251
+						'GEN' => 'General',
252
+						'GEO' => 'Geographic or True',
253
+						'GES' => 'Ground Earth Station',
254
+						'GLD' => 'Glider',
255
+						'GMC' => 'Ground Movement Chart',
256
+						'GND' => 'Ground',
257
+						'GNDCK' => 'Ground Check',
258
+						'GP' => 'Glide Path',
259
+						'GRASS' => 'Grass landing area',
260
+						'GRVL' => 'Gravel',
261
+						'GUND' => 'Geoid Undulation',
262
+						'H24' => '24 Hours',
263
+						'HAPI' => 'Helicopter Approach Path Indicator',
264
+						'HBN' => 'Hazard Beacon',
265
+						'HDG' => 'Heading',
266
+						'HEL' => 'Helicopter',
267
+						'HGT' => 'Height',
268
+						'HJ' => 'Sunrise to Sunset',
269
+						'HLDG' => 'Holding',
270
+						'HN' => 'Sunset to Sunrise',
271
+						'HO' => 'Service Available To Meet Operational Requirements',
272
+						'HOL' => 'Holiday',
273
+						'HOSP' => 'Hospital Aircraft',
274
+						'HOT' => 'Height',
275
+						'HPA' => 'Hectopascal',
276
+						'HR' => 'Hours',
277
+						'HRS' => 'Hours',
278
+						'HS' => 'Service Available During Hours Of Scheduled Operations',
279
+						'HURCN' => 'Hurricane',
280
+						'HVY' => 'Heavy',
281
+						'HX' => 'No Specific Working Hours',
282
+						'HYR' => 'Higher',
283
+						'IAC' => 'Instrument Approach Chart',
284
+						'IAF' => 'Initial Approach Fix',
285
+						'IAO' => 'In And Out Of Clouds',
286
+						'IAP' => 'Instrument Approach Procedure',
287
+						'IAR' => 'Intersection Of Air Routes',
288
+						'IBN' => 'Identification Beacon',
289
+						'ID' => 'Identifier',
290
+						'IDENT' => 'Identification',
291
+						'IFF' => 'Identification Friend/Foe',
292
+						'IGA' => 'International General Aviation',
293
+						'IM' => 'Inner Marker',
294
+						'IMPR' => 'Improving',
295
+						'IMT' => 'Immediately',
296
+						'INA' => 'Initial Approach',
297
+						'INBD' => 'Inbound',
298
+						'INCERFA' => 'Uncertainty Phase',
299
+						'INFO' => 'Information',
300
+						'INOP' => 'Inoperative',
301
+						'INP' => 'If Not Possible',
302
+						'INPR' => 'In Progress',
303
+						'INSTL' => 'Installation',
304
+						'INSTR' => 'Instrument',
305
+						'INT' => 'Intersection',
306
+						'INTS' => 'Intersections',
307
+						'INTL' => 'International',
308
+						'INTRG' => 'Interrogator',
309
+						'INTRP' => 'Interruption',
310
+						'INTSF' => 'Intensifying',
311
+						'INTST' => 'Intensity',
312
+						'ISA' => 'International Standard Atmosphere',
313
+						'JAN' => 'January',
314
+						'JTST' => 'Jet stream',
315
+						'JUL' => 'July',
316
+						'JUN' => 'June',
317
+						'KMH' => 'Kilometres Per Hour',
318
+						'KPA' => 'Kilopascal',
319
+						'KT' => 'Knots',
320
+						'KW' => 'Kilowatts',
321
+						'LAN' => 'Inland',
322
+						'LAT' => 'Latitude',
323
+						'LDA' => 'Landing Distance Available',
324
+						'LDAH' => 'Landing Distance Available, Helicopter',
325
+						'LDG' => 'Landing',
326
+						'LDI' => 'Landing Direction Indicator',
327
+						'LEN' => 'Length',
328
+						'LGT' => 'Lighting',
329
+						'LGTD' => 'Lighted',
330
+						'LIH' => 'Light Intensity High',
331
+						'LIL' => 'Light Intensity Low',
332
+						'LIM' => 'Light Intensity Medium',
333
+						'LLZ' => 'Localizer',
334
+						'LM' => 'Locator, Middle',
335
+						'LMT' => 'Local Mean Time',
336
+						'LNG' => 'Long',
337
+						'LO' => 'Locator, Outer',
338
+						'LOG' => 'Located',
339
+						'LONG' => 'Longitude',
340
+						'LRG' => 'Long Range',
341
+						'LTD' => 'Limited',
342
+						'LTP' => 'Landing Threshold Point',
343
+						'LVE' => 'Leaving',
344
+						'LVL' => 'Level',
345
+						'LYR' => 'Layer',
346
+						'MAA' => 'Maximum Authorized Altitude',
347
+						'MAG' => 'Magnetic',
348
+						'MAINT' => 'Maintenance',
349
+						'MAP' => 'Aeronautical Maps and Charts',
350
+						'MAPT' => 'Missed Approach Point',
351
+						'MAR' => 'March',
352
+						'MAX' => 'Maximum',
353
+						'MAY' => 'May',
354
+						'MBST' => 'Microburst',
355
+						'MCA' => 'Minimum Crossing Altitude',
356
+						'MCW' => 'Modulated Continuous Wave',
357
+						'MDA' => 'Minimum Descent Altitude',
358
+						'MDH' => 'Minimum Descent Height',
359
+						'MEA' => 'Minimum En-route Altitude',
360
+						'MEHT' => 'Minimum Eye Height Over Threshold',
361
+						'MET' => 'Meteorological',
362
+						'MID' => 'Mid-point',
363
+						'MIL' => 'Military',
364
+						'MIN' => 'Minutes',
365
+						'MKR' => 'Marker Radio Beacon',
366
+						'MLS' => 'Microwave Landing System',
367
+						'MM' => 'Middle Marker',
368
+						'MNM' => 'Minimum',
369
+						'MNPS' => 'Minimum Navigation Performance Specifications',
370
+						'MNT' => 'Monitor',
371
+						'MNTN' => 'Maintain',
372
+						'MOA' => 'Military Operating Area',
373
+						'MOC' => 'Minimum Obstacle Clearance',
374
+						'MOD' => 'Moderate',
375
+						'MON' => 'Monday',
376
+						'MOPS' => 'Minimum Operational Performance Standards',
377
+						'MOV' => 'Movement',
378
+						'MRA' => 'Minimum Reception Altitude',
379
+						'MRG' => 'Medium Range',
380
+						'MRP' => 'ATS/MET Reporting Point',
381
+						'MS' => 'Minus',
382
+						'MSA' => 'Minimum Sector Altitude',
383
+						'MSAW' => 'Minimum Safe Altitude Warning',
384
+						'MSG' => 'Message',
385
+						'MSSR' => 'Monopulse Secondary Surveillance Radar',
386
+						'MT' => 'Mountain',
387
+						'MTU' => 'Metric Units',
388
+						'MTW' => 'Mountain Waves',
389
+						'NASC' => 'National AIS System Centre',
390
+						'NAT' => 'North Atlantic',
391
+						'NAV' => 'Navigation',
392
+						'NB' => 'Northbound',
393
+						'NBFR' => 'Not Before',
394
+						'NE' => 'North-east',
395
+						'NEB' => 'North-eastbound',
396
+						'NEG' => 'Negative',
397
+						'NGT' => 'Night',
398
+						'NIL' => 'None',
399
+						'NML' => 'Normal',
400
+						'NNE' => 'North-north-east',
401
+						'NNW' => 'North-north-west',
402
+						'NOF' => 'International NOTAM Office',
403
+						'NOV' => 'November',
404
+						'NOZ' => 'Normal Operating Zone',
405
+						'NR' => 'Number',
406
+						'NRH' => 'No Reply Heard',
407
+						'NTL' => 'National',
408
+						'NTZ' => 'No Transgression Zone',
409
+						'NW' => 'North-west',
410
+						'NWB' => 'North-westbound',
411
+						'NXT' => 'Next',
412
+						'O/R' => 'On Request',
413
+						'OAC' => 'Oceanic Area Control Centre',
414
+						'OAS' => 'Obstacle Assessment Surface',
415
+						'OBS' => 'Observe',
416
+						'OBST' => 'Obstacle',
417
+						'OBSTS' => 'Obstacles',
418
+						'OCA' => 'Oceanic Control Area',
419
+						'OCH' => 'Obstacle Clearance Height',
420
+						'OCS' => 'Obstacle Clearance Surface',
421
+						'OCT' => 'October',
422
+						'OFZ' => 'Obstacle Free Zone',
423
+						'OGN' => 'Originate',
424
+						'OHD' => 'Overhead',
425
+						'OM' => 'Outer Marker',
426
+						'OPC' => 'Control Indicated Is Operational Control',
427
+						'OPMET' => 'Operational Meteorological',
428
+						'OPN' => 'Open',
429
+						'OPR' => 'Operate',
430
+						'OPS' => 'Operations',
431
+						'ORD' => 'Order',
432
+						'OSV' => 'Ocean Station Vessel',
433
+						'OTLK' => 'Outlook',
434
+						'OTP' => 'On Top',
435
+						'OTS' => 'Organized Track System',
436
+						'OUBD' => 'Outbound',
437
+						'PA' => 'Precision Approach',
438
+						'PALS' => 'Precision Approach Lighting System',
439
+						'PANS' => 'Procedures for Air Navigation Services',
440
+						'PAR' => 'Precision Approach Radar',
441
+						'PARL' => 'Parallel',
442
+						'PATC' => 'Precision Approach Terrain Chart',
443
+						'PAX' => 'Passenger(s)',
444
+						'PCD' => 'Proceed',
445
+						'PCL' => 'Pilot-controlled Lighting',
446
+						'PCN' => 'Pavement Classification Number',
447
+						'PDC' => 'Pre-departure Clearance',
448
+						'PDG' => 'Procedure Design Gradient',
449
+						'PER' => 'Performance',
450
+						'PERM' => 'Permanent',
451
+						'PIB' => 'Pre-flight Information Bulletin',
452
+						'PJE' => 'Parachute Jumping Exercise',
453
+						'PLA' => 'Practice Low Approach',
454
+						'PLN' => 'Flight Plan',
455
+						'PLVL' => 'Present Level',
456
+						'PN' => 'Prior Notice Required',
457
+						'PNR' => 'Point Of No Return',
458
+						'POB' => 'Persons On Board',
459
+						'POSS' => 'Possible',
460
+						'PPI' => 'Plan Position Indicator',
461
+						'PPR' => 'Prior Permission Required',
462
+						'PPSN' => 'Present Position',
463
+						'PRI' => 'Primary',
464
+						'PRKG' => 'Parking',
465
+						'PROB' => 'Probability',
466
+						'PROC' => 'Procedure',
467
+						'PROV' => 'Provisional',
468
+						'PS' => 'Plus',
469
+						'PSG' => 'Passing',
470
+						'PSN' => 'Position',
471
+						'PSNS' => 'Positions',
472
+						'PSR' => 'Primary Surveillance Radar',
473
+						'PSYS' => 'Pressure System(s)',
474
+						'PTN' => 'Procedure Turn',
475
+						'PTS' => 'Polar Track Structure',
476
+						'PWR' => 'Power',
477
+						'QUAD' => 'Quadrant',
478
+						'RAC' => 'Rules of The Air and Air Traffic Services',
479
+						'RAG' => 'Runway Arresting Gear',
480
+						'RAI' => 'Runway Alignment Indicator',
481
+						'RASC' => 'Regional AIS System Centre',
482
+						'RASS' => 'Remote Altimeter Setting Source',
483
+						'RB' => 'Rescue Boat',
484
+						'RCA' => 'Reach Cruising Altitude',
485
+						'RCC' => 'Rescue Coordination Centre',
486
+						'RCF' => 'Radiocommunication Failure',
487
+						'RCH' => 'Reaching',
488
+						'RCL' => 'Runway Centre Line',
489
+						'RCLL' => 'Runway Centre Line Light(s)',
490
+						'RCLR' => 'Recleared',
491
+						'RDH' => 'Reference Datum Height',
492
+						'RDL' => 'Radial',
493
+						'RDO' => 'Radio',
494
+						'RE' => 'Recent',
495
+						'REC' => 'Receiver',
496
+						'REDL' => 'Runway Edge Light(s)',
497
+						'REF' => 'Refer To',
498
+						'REG' => 'Registration',
499
+						'RENL' => 'Runway End Light(s)',
500
+						'REP' => 'Report',
501
+						'REQ' => 'Requested',
502
+						'RERTE' => 'Re-route',
503
+						'RESA' => 'Runway End Safety Area',
504
+						'RG' => 'Range (lights)',
505
+						'RHC' => 'Right-hand Circuit',
506
+						'RIF' => 'Reclearance In Flight',
507
+						'RITE' => 'Right',
508
+						'RL' => 'Report Leaving',
509
+						'RLA' => 'Relay To',
510
+						'RLCE' => 'Request Level Change En Route',
511
+						'RLLS' => 'Runway Lead-in Lighting System',
512
+						'RLNA' => 'Request Level Not Available',
513
+						'RMAC' => 'Radar Minimum Altitude Chart',
514
+						'RMK' => 'Remark',
515
+						'RNG' => 'Radio Range',
516
+						'RNP' => 'Required Navigation Performance',
517
+						'ROC' => 'Rate Of Climb',
518
+						'ROD' => 'Rate Of Descent',
519
+						'ROFOR' => 'Route Forecast',
520
+						'RON' => 'Receiving Only',
521
+						'RPI' => 'Radar Position Indicator',
522
+						'RPL' => 'Repetitive Flight Plan',
523
+						'RPLC' => 'Replaced',
524
+						'RPS' => 'Radar Position Symbol',
525
+						'RQMNTS' => 'Requirements',
526
+						'RQP' => 'Request Flight Plan',
527
+						'RQS' => 'Request Supplementary Flight Plan',
528
+						'RR' => 'Report Reaching',
529
+						'RSC' => 'Rescue Sub-centre',
530
+						'RSCD' => 'Runway Surface Condition',
531
+						'RSP' => 'Responder Beacon',
532
+						'RSR' => 'En-route Surveillance Radar',
533
+						'RTE' => 'Route',
534
+						'RTES' => 'Routes',
535
+						'RTF' => 'Radiotelephone',
536
+						'RTG' => 'Radiotelegraph',
537
+						'RTHL' => 'Runway Threshold Light(s)',
538
+						'RTN' => 'Return',
539
+						'RTODAH' => 'Rejected Take-off Distance Available, Helicopter',
540
+						'RTS' => 'Return To Service',
541
+						'RTT' => 'Radioteletypewriter',
542
+						'RTZL' => 'Runway Touchdown Zone Light(s)',
543
+						'RUT' => 'Standard Regional Route Transmitting Frequencies',
544
+						'RV' => 'Rescue Vessel',
545
+						'RVSM' => 'Reduced Vertical Separation Minimum',
546
+						'RWY' => 'Runway',
547
+						'RWYS' => 'Runways',
548
+						'SALS' => 'Simple Approach Lighting System',
549
+						'SAN' => 'Sanitary',
550
+						'SAP' => 'As Soon As Possible',
551
+						'SAR' => 'Search and Rescue',
552
+						'SARPS' => 'Standards and Recommended Practices',
553
+						'SAT' => 'Saturday',
554
+						'SATCOM' => 'Satellite Communication',
555
+						'SB' => 'Southbound',
556
+						'SBAS' => 'Satellite-based Augmentation System',
557
+						'SDBY' => 'Stand by',
558
+						'SE' => 'South-east',
559
+						'SEA' => 'Sea',
560
+						'SEB' => 'South-eastbound',
561
+						'SEC' => 'Seconds',
562
+						'SECN' => 'Section',
563
+						'SECT' => 'Sector',
564
+						'SEP' => 'September',
565
+						'SER' => 'Service',
566
+						'SEV' => 'Severe',
567
+						'SFC' => 'Surface',
568
+						'SGL' => 'Signal',
569
+						'SID' => 'Standard Instrument Departure',
570
+						'SIF' => 'Selective Identification Feature',
571
+						'SIG' => 'Significant',
572
+						'SIMUL' => 'Simultaneous',
573
+						'SKED' => 'Schedule',
574
+						'SLP' => 'Speed Limiting Point',
575
+						'SLW' => 'Slow',
576
+						'SMC' => 'Surface Movement Control',
577
+						'SMR' => 'Surface Movement Radar',
578
+						'SPL' => 'Supplementary Flight Plan',
579
+						'SPOC' => 'SAR Point Of Contact',
580
+						'SPOT' => 'Spot Wind',
581
+						'SR' => 'Sunrise',
582
+						'SRA' => 'Surveillance Radar Approach',
583
+						'SRE' => 'Surveillance Radar Element Of Precision Approach Radar System',
584
+						'SRG' => 'Short Range',
585
+						'SRR' => 'Search and Rescue Region',
586
+						'SRY' => 'Secondary',
587
+						'SS' => 'Sunset',
588
+						'SSE' => 'South-south-east',
589
+						'SSR' => 'Secondary Surveillance Radar',
590
+						'SST' => 'Supersonic Transport',
591
+						'SSW' => 'South-south-west',
592
+						'STA' => 'Straight-in Approach',
593
+						'STAR' => 'Standard Instrument Arrival',
594
+						'STD' => 'Standard',
595
+						'STN' => 'Station',
596
+						'STNR' => 'Stationary',
597
+						'STOL' => 'Short Take-off and Landing',
598
+						'STS' => 'Status',
599
+						'STWL' => 'Stopway Light(s)',
600
+						'SUBJ' => 'Subject To',
601
+						'SUN' => 'Sunday',
602
+						'SUP' => 'Supplement',
603
+						'SUPPS' => 'Regional Supplementary Procedures Service Message',
604
+						'SVCBL' => 'Serviceable',
605
+						'SW' => 'South-west',
606
+						'SWB' => 'South-westbound',
607
+						'SWY' => 'Stopway',
608
+						'TA' => 'Transition Altitude',
609
+						'TAA' => 'Terminal Arrival Altitude',
610
+						'TAF' => 'Aerodrome Forecast',
611
+						'TAIL' => 'Tail Wind',
612
+						'TAR' => 'Terminal Area Surveillance Radar',
613
+						'TAX' => 'Taxi',
614
+						'TCAC' => 'Tropical Cyclone Advisory Centre',
615
+						'TDO' => 'Tornado',
616
+						'TDZ' => 'Touchdown Zone',
617
+						'TECR' => 'Technical Reason',
618
+						'TEMPO' => 'Temporarily',
619
+						'TFC' => 'Traffic',
620
+						'TGL' => 'Touch-and-go',
621
+						'TGS' => 'Taxiing Guidance System',
622
+						'THR' => 'Threshold',
623
+						'THRU' => 'Through',
624
+						'THU' => 'Thursday',
625
+						'TIBA' => 'Traffic Information Broadcast By Aircraft',
626
+						'TIL' => 'Until',
627
+						'TIP' => 'Until Past',
628
+						'TKOF' => 'Take-off',
629
+						'TL' => 'Till',
630
+						'TLOF' => 'Touchdown And Lift-off Area',
631
+						'TMA' => 'Terminal Control Area',
632
+						'TNA' => 'Turn Altitude',
633
+						'TNH' => 'Turn Height',
634
+						'TOC' => 'Top of Climb',
635
+						'TODA' => 'Take-off Distance Available',
636
+						'TODAH' => 'Take-off Distance Available, Helicopter',
637
+						'TORA' => 'Take-off Run Available',
638
+						'TP' => 'Turning Point',
639
+						'TR' => 'Track',
640
+						'TRA' => 'Temporary Reserved Airspace',
641
+						'TRANS' => 'Transmitter',
642
+						'TRL' => 'Transition Level',
643
+						'TUE' => 'Tuesday',
644
+						'TURB' => 'Turbulence',
645
+						'TVOR' => 'Terminal VOR',
646
+						'TWR' => 'Tower',
647
+						'TWY' => 'Taxiway',
648
+						'TWYL' => 'Taxiway-link',
649
+						'TXT' => 'Text',
650
+						'TYP' => 'Type of Aircraft',
651
+						'U/S' => 'Unserviceable',
652
+						'UAB' => 'Until Advised By',
653
+						'UAC' => 'Upper Area Control Centre',
654
+						'UAR' => 'Upper Air Route',
655
+						'UFN' => 'Until Further Notice',
656
+						'UHDT' => 'Unable Higher Due Traffic',
657
+						'UIC' => 'Upper Information Centre',
658
+						'UIR' => 'Upper Flight Information Region',
659
+						'ULR' => 'Ultra Long Range',
660
+						'UNA' => 'Unable',
661
+						'UNAP' => 'Unable To Approve',
662
+						'UNL' => 'Unlimited',
663
+						'UNREL' => 'Unreliable',
664
+						'UTA' => 'Upper Control Area',
665
+						'VAAC' => 'Volcanic Ash Advisory Centre',
666
+						'VAC' => 'Visual Approach Chart',
667
+						'VAL' => 'In Valleys',
668
+						'VAN' => 'Runway Control Van',
669
+						'VAR' => 'Visual-aural Radio Range',
670
+						'VC' => 'Vicinity',
671
+						'VCY' => 'Vicinity',
672
+						'VER' => 'Vertical',
673
+						'VIS' => 'Visibility',
674
+						'VLR' => 'Very Long Range',
675
+						'VPA' => 'Vertical Path Angle',
676
+						'VRB' => 'Variable',
677
+						'VSA' => 'By Visual Reference To The Ground',
678
+						'VSP' => 'Vertical Speed',
679
+						'VTOL' => 'Vertical Take-off And Landing',
680
+						'WAC' => 'World Aeronautical Chart',
681
+						'WAFC' => 'World Area Forecast Centre',
682
+						'WB' => 'Westbound',
683
+						'WBAR' => 'Wing Bar Lights',
684
+						'WDI' => 'Wind Direction Indicator',
685
+						'WDSPR' => 'Widespread',
686
+						'WED' => 'Wednesday',
687
+						'WEF' => 'Effective From',
688
+						'WI' => 'Within',
689
+						'WID' => 'Width',
690
+						'WIE' => 'Effective Immediately',
691
+						'WILCO' => 'Will Comply',
692
+						'WIND' => 'Wind',
693
+						'WINTEM' => 'Forecast Upper Wind And Temperature For Aviation',
694
+						'WIP' => 'Work In Progress',
695
+						'WKN' => 'Weaken',
696
+						'WNW' => 'West-north-west',
697
+						'WO' => 'Without',
698
+						'WPT' => 'Way-point',
699
+						'WRNG' => 'Warning',
700
+						'WSW' => 'West-south-west',
701
+						'WT' => 'Weight',
702
+						'WWW' => 'Worldwide Web',
703
+						'WX' => 'Weather',
704
+						'XBAR' => 'Crossbar',
705
+						'XNG' => 'Crossing',
706
+						'XS' => 'Atmospherics',
707
+						'YCZ' => 'Yellow Caution Zone',
708
+						'YR' => 'Your');
709 709
 
710 710
 
711 711
 	function __construct($dbc = null) {
Please login to merge, or discard this patch.
require/class.Translation.php 1 patch
Indentation   +78 added lines, -78 removed lines patch added patch discarded remove patch
@@ -7,90 +7,90 @@  discard block
 block discarded – undo
7 7
 
8 8
 
9 9
 class Translation {
10
-    public $db;
11
-    function __construct($dbc = null) {
12
-	    $Connection = new Connection($dbc);
13
-	    $this->db = $Connection->db;
14
-    }
10
+	public $db;
11
+	function __construct($dbc = null) {
12
+		$Connection = new Connection($dbc);
13
+		$this->db = $Connection->db;
14
+	}
15 15
 
16
-    /**
17
-    * Change IATA to ICAO value for ident
18
-    * 
19
-    * @param String $ident ident
20
-    * @return String the icao
21
-    */
22
-    public function ident2icao($ident) {
16
+	/**
17
+	 * Change IATA to ICAO value for ident
18
+	 * 
19
+	 * @param String $ident ident
20
+	 * @return String the icao
21
+	 */
22
+	public function ident2icao($ident) {
23 23
 	$Spotter = new Spotter();
24 24
 	if (!is_numeric(substr($ident, 0, 3)))
25
-        {
26
-	    if (is_numeric(substr(substr($ident, 0, 3), -1, 1))) {
27
-        	$airline_icao = substr($ident, 0, 2);
28
-            } elseif (is_numeric(substr(substr($ident, 0, 4), -1, 1))) {
29
-        	//$airline_icao = substr($ident, 0, 3);
30
-        	return $ident;
31
-            } else return $ident;
32
-        } else return $ident;
33
-        if ($airline_icao == 'AF') {
34
-            if (filter_var(substr($ident,2),FILTER_VALIDATE_INT,array("flags"=>FILTER_FLAG_ALLOW_OCTAL))) $icao = $ident;
35
-            else $icao = 'AFR'.ltrim(substr($ident,2),'0');
36
-        } else {
37
-            $identicao = $Spotter->getAllAirlineInfo($airline_icao);
38
-            if (isset($identicao[0])) {
39
-                $icao = $identicao[0]['icao'].ltrim(substr($ident,2),'0');
40
-            } else $icao = $ident;
41
-        }
42
-        return $icao;
43
-    }
25
+		{
26
+		if (is_numeric(substr(substr($ident, 0, 3), -1, 1))) {
27
+			$airline_icao = substr($ident, 0, 2);
28
+			} elseif (is_numeric(substr(substr($ident, 0, 4), -1, 1))) {
29
+			//$airline_icao = substr($ident, 0, 3);
30
+			return $ident;
31
+			} else return $ident;
32
+		} else return $ident;
33
+		if ($airline_icao == 'AF') {
34
+			if (filter_var(substr($ident,2),FILTER_VALIDATE_INT,array("flags"=>FILTER_FLAG_ALLOW_OCTAL))) $icao = $ident;
35
+			else $icao = 'AFR'.ltrim(substr($ident,2),'0');
36
+		} else {
37
+			$identicao = $Spotter->getAllAirlineInfo($airline_icao);
38
+			if (isset($identicao[0])) {
39
+				$icao = $identicao[0]['icao'].ltrim(substr($ident,2),'0');
40
+			} else $icao = $ident;
41
+		}
42
+		return $icao;
43
+	}
44 44
 
45 45
 
46
-       public function getOperator($ident) {
47
-                $query = "SELECT * FROM translation WHERE Operator = :ident LIMIT 1";
48
-                $query_values = array(':ident' => $ident);
49
-                 try {
50
-                        $sth = $this->db->prepare($query);
51
-                        $sth->execute($query_values);
52
-                } catch(PDOException $e) {
53
-                        return "error : ".$e->getMessage();
54
-                }
55
-                $row = $sth->fetch(PDO::FETCH_ASSOC);
56
-                if (count($row) > 0) {
57
-                        return $row['operator_correct'];
58
-                } else return $ident;
59
-        }
46
+	   public function getOperator($ident) {
47
+				$query = "SELECT * FROM translation WHERE Operator = :ident LIMIT 1";
48
+				$query_values = array(':ident' => $ident);
49
+				 try {
50
+						$sth = $this->db->prepare($query);
51
+						$sth->execute($query_values);
52
+				} catch(PDOException $e) {
53
+						return "error : ".$e->getMessage();
54
+				}
55
+				$row = $sth->fetch(PDO::FETCH_ASSOC);
56
+				if (count($row) > 0) {
57
+						return $row['operator_correct'];
58
+				} else return $ident;
59
+		}
60 60
 
61
-       public function addOperator($ident,$correct_ident,$source) {
62
-                $query = "INSERT INTO translation (Operator,Operator_correct,Source) VALUES (:ident,:correct_ident,:source)";
63
-                $query_values = array(':ident' => $ident,':correct_ident' => $correct_ident, ':source' => $source);
64
-                 try {
65
-                        $sth = $this->db->prepare($query);
66
-                        $sth->execute($query_values);
67
-                } catch(PDOException $e) {
68
-                        return "error : ".$e->getMessage();
69
-                }
70
-        }
61
+	   public function addOperator($ident,$correct_ident,$source) {
62
+				$query = "INSERT INTO translation (Operator,Operator_correct,Source) VALUES (:ident,:correct_ident,:source)";
63
+				$query_values = array(':ident' => $ident,':correct_ident' => $correct_ident, ':source' => $source);
64
+				 try {
65
+						$sth = $this->db->prepare($query);
66
+						$sth->execute($query_values);
67
+				} catch(PDOException $e) {
68
+						return "error : ".$e->getMessage();
69
+				}
70
+		}
71 71
 
72
-       public function updateOperator($ident,$correct_ident,$source) {
73
-                $query = "UPDATE translation SET Operator_correct = :correct_ident,Source = :source WHERE Operator = :ident";
74
-                $query_values = array(':ident' => $ident,':correct_ident' => $correct_ident, ':source' => $source);
75
-                 try {
76
-                        $sth = $this->db->prepare($query);
77
-                        $sth->execute($query_values);
78
-                } catch(PDOException $e) {
79
-                        return "error : ".$e->getMessage();
80
-                }
81
-        }
72
+	   public function updateOperator($ident,$correct_ident,$source) {
73
+				$query = "UPDATE translation SET Operator_correct = :correct_ident,Source = :source WHERE Operator = :ident";
74
+				$query_values = array(':ident' => $ident,':correct_ident' => $correct_ident, ':source' => $source);
75
+				 try {
76
+						$sth = $this->db->prepare($query);
77
+						$sth->execute($query_values);
78
+				} catch(PDOException $e) {
79
+						return "error : ".$e->getMessage();
80
+				}
81
+		}
82 82
         
83
-        public function checkTranslation($ident,$web = false) {
84
-    	    global $globalTranslationSources, $globalTranslationFetch;
85
-    	    //if (!isset($globalTranslationSources)) $globalTranslationSources = array('planefinder');
86
-    	    $globalTranslationSources = array();
87
-    	    if (!isset($globalTranslationFetch)) $globalTranslationFetch = TRUE;
88
-    	    //echo "Check Translation for ".$ident."...";
89
-    	    $correct = $this->getOperator($ident);
90
-    	    if ($correct != '' && $correct != $ident) {
91
-    		//echo "Found in DB !\n";
92
-    		 return $correct;
93
-    	    } /*
83
+		public function checkTranslation($ident,$web = false) {
84
+			global $globalTranslationSources, $globalTranslationFetch;
85
+			//if (!isset($globalTranslationSources)) $globalTranslationSources = array('planefinder');
86
+			$globalTranslationSources = array();
87
+			if (!isset($globalTranslationFetch)) $globalTranslationFetch = TRUE;
88
+			//echo "Check Translation for ".$ident."...";
89
+			$correct = $this->getOperator($ident);
90
+			if ($correct != '' && $correct != $ident) {
91
+			//echo "Found in DB !\n";
92
+			 return $correct;
93
+			} /*
94 94
     	    elseif ($web && $globalTranslationFetch) {
95 95
     		if (! is_numeric(substr($ident,-4))) {
96 96
     		    if (count($globalTranslationSources) > 0) {
@@ -107,8 +107,8 @@  discard block
 block discarded – undo
107 107
     		}
108 108
     	    }
109 109
     	    */
110
-    	    return $this->ident2icao($ident);
111
-        }
110
+			return $this->ident2icao($ident);
111
+		}
112 112
 
113 113
 /*  
114 114
     function fromPlanefinder($icao) {
Please login to merge, or discard this patch.
require/class.SpotterLive.php 1 patch
Indentation   +207 added lines, -207 removed lines patch added patch discarded remove patch
@@ -11,11 +11,11 @@  discard block
 block discarded – undo
11 11
 	}
12 12
 	    
13 13
 	/**
14
-	* Gets all the spotter information based on the latest data entry
15
-	*
16
-	* @return Array the spotter information
17
-	*
18
-	*/
14
+	 * Gets all the spotter information based on the latest data entry
15
+	 *
16
+	 * @return Array the spotter information
17
+	 *
18
+	 */
19 19
 	public function getLiveSpotterData($limit = '', $sort = '', $filter = array())
20 20
 	{
21 21
 		global $globalDBdriver, $globalLiveInterval;
@@ -58,7 +58,7 @@  discard block
 block discarded – undo
58 58
 		if ($globalDBdriver == 'mysql') {
59 59
 			//$query  = "SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL 30 SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate";
60 60
 			$query  = 'SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate'.$filter_query.$orderby_query;
61
-                } else if ($globalDBdriver == 'pgsql') {
61
+				} else if ($globalDBdriver == 'pgsql') {
62 62
 			$query  = "SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalLiveInterval." SECONDS' <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate".$filter_query.$orderby_query;
63 63
 		}
64 64
 		$spotter_array = $Spotter->getDataFromDB($query.$limit_query);
@@ -67,11 +67,11 @@  discard block
 block discarded – undo
67 67
 	}
68 68
 
69 69
 	/**
70
-	* Gets Minimal Live Spotter data
71
-	*
72
-	* @return Array the spotter information
73
-	*
74
-	*/
70
+	 * Gets Minimal Live Spotter data
71
+	 *
72
+	 * @return Array the spotter information
73
+	 *
74
+	 */
75 75
 	public function getMinLiveSpotterData($filter = array())
76 76
 	{
77 77
 		global $globalDBdriver, $globalLiveInterval;
@@ -104,9 +104,9 @@  discard block
 block discarded – undo
104 104
 //			$query  = 'SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk FROM spotter_live WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= spotter_live.date ORDER BY spotter_live.date GROUP BY spotter_live.flightaware_id'.$filter_query;
105 105
 
106 106
 			//$query = 'SELECT a.aircraft_shadow, spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk  FROM spotter_live WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= date '.$filter_query.'LEFT JOIN (SELECT aircraft_shadow,icao FROM aircraft) a ON spotter_live.aircraft_icao = a.icao';
107
-                } else if ($globalDBdriver == 'pgsql') {
108
-            		//$query  = "SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE NOW() AT TIME ZONE 'UTC' - '30 SECONDS'->INTERVAL <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate";
109
-            		//$query  = "SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE NOW() AT TIME ZONE 'UTC' - '".$globalLiveInterval." SECONDS'->INTERVAL <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate$orderby_query";
107
+				} else if ($globalDBdriver == 'pgsql') {
108
+					//$query  = "SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE NOW() AT TIME ZONE 'UTC' - '30 SECONDS'->INTERVAL <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate";
109
+					//$query  = "SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE NOW() AT TIME ZONE 'UTC' - '".$globalLiveInterval." SECONDS'->INTERVAL <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate$orderby_query";
110 110
 			//$query  = 'SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, a.aircraft_shadow FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate '.$filter_query.'INNER JOIN (SELECT * FROM aircraft) a on spotter_live.aircraft_icao = a.icao';
111 111
 			$query  = "SELECT a.aircraft_shadow, spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, spotter_live.date 
112 112
 			FROM spotter_live
@@ -115,7 +115,7 @@  discard block
 block discarded – undo
115 115
 //		$spotter_array = Spotter->getDataFromDB($query.$limit_query);
116 116
 		//echo $query;
117 117
 
118
-    		try {
118
+			try {
119 119
 			$sth = $this->db->prepare($query);
120 120
 			$sth->execute();
121 121
 		} catch(PDOException $e) {
@@ -127,11 +127,11 @@  discard block
 block discarded – undo
127 127
 	}
128 128
 
129 129
 	/**
130
-	* Gets number of latest data entry
131
-	*
132
-	* @return String number of entry
133
-	*
134
-	*/
130
+	 * Gets number of latest data entry
131
+	 *
132
+	 * @return String number of entry
133
+	 *
134
+	 */
135 135
 	public function getLiveSpotterCount($filter = array())
136 136
 	{
137 137
 		global $globalDBdriver, $globalLiveInterval;
@@ -151,13 +151,13 @@  discard block
 block discarded – undo
151 151
 
152 152
 		if (!isset($globalLiveInterval)) $globalLiveInterval = '200';
153 153
 		if ($globalDBdriver == 'mysql') {
154
-            		//$query  = 'SELECT COUNT(*) as nb FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate'.$filter_query;
154
+					//$query  = 'SELECT COUNT(*) as nb FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate'.$filter_query;
155 155
 			$query = 'SELECT COUNT(DISTINCT flightaware_id) as nb FROM spotter_live WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= date'.$filter_query;
156
-            	} elseif ($globalDBdriver == 'pgsql') {
157
-	                //$query  = "SELECT COUNT(*) as nb FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE NOW() AT TIME ZONE 'UTC' - '".$globalLiveInterval." SECONDS'->INTERVAL <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate".$filter_query;
156
+				} elseif ($globalDBdriver == 'pgsql') {
157
+					//$query  = "SELECT COUNT(*) as nb FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE NOW() AT TIME ZONE 'UTC' - '".$globalLiveInterval." SECONDS'->INTERVAL <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate".$filter_query;
158 158
 			$query = "SELECT COUNT(DISTINCT flightaware_id) as nb FROM spotter_live WHERE CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalLiveInterval." SECONDS' <= date".$filter_query;
159
-                }
160
-    		try {
159
+				}
160
+			try {
161 161
 			$sth = $this->db->prepare($query);
162 162
 			$sth->execute();
163 163
 		} catch(PDOException $e) {
@@ -168,11 +168,11 @@  discard block
 block discarded – undo
168 168
 	}
169 169
 
170 170
 	/**
171
-	* Gets all the spotter information based on the latest data entry and coord
172
-	*
173
-	* @return Array the spotter information
174
-	*
175
-	*/
171
+	 * Gets all the spotter information based on the latest data entry and coord
172
+	 *
173
+	 * @return Array the spotter information
174
+	 *
175
+	 */
176 176
 	public function getLiveSpotterDatabyCoord($coord, $filter = array())
177 177
 	{
178 178
 		global $globalDBdriver, $globalLiveInterval;
@@ -193,140 +193,140 @@  discard block
 block discarded – undo
193 193
 		}
194 194
 
195 195
 		if (is_array($coord)) {
196
-                        $minlong = filter_var($coord[0],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION);
197
-                        $minlat = filter_var($coord[1],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION);
198
-                        $maxlong = filter_var($coord[2],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION);
199
-                        $maxlat = filter_var($coord[3],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION);
200
-                } else return array();
201
-                if ($globalDBdriver == 'mysql') {
202
-        		//$query  = "SELECT spotter_output.* FROM spotter_output WHERE spotter_output.flightaware_id IN (SELECT spotter_live.flightaware_id FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL ".$globalLiveInterval." SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate AND spotter_live.latitude BETWEEN ".$minlat." AND ".$maxlat." AND spotter_live.longitude BETWEEN ".$minlong." AND ".$maxlong.")";
203
-        		$query  = 'SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate AND spotter_live.latitude BETWEEN '.$minlat.' AND '.$maxlat.' AND spotter_live.longitude BETWEEN '.$minlong.' AND '.$maxlong.' GROUP BY spotter_live.flightaware_id'.$filter_query;
204
-        	} else if ($globalDBdriver == 'pgsql') {
205
-            		$query  = "SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE NOW() at time zone 'UTC'  - INTERVAL '".$globalLiveInterval." SECONDS' <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate AND spotter_live.latitude BETWEEN ".$minlat." AND ".$maxlat." AND spotter_live.longitude BETWEEN ".$minlong." AND ".$maxlong." GROUP BY spotter_live.flightaware_id".$filter_query;
206
-                }
207
-                $spotter_array = $Spotter->getDataFromDB($query);
208
-                return $spotter_array;
209
-        }
196
+						$minlong = filter_var($coord[0],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION);
197
+						$minlat = filter_var($coord[1],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION);
198
+						$maxlong = filter_var($coord[2],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION);
199
+						$maxlat = filter_var($coord[3],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION);
200
+				} else return array();
201
+				if ($globalDBdriver == 'mysql') {
202
+				//$query  = "SELECT spotter_output.* FROM spotter_output WHERE spotter_output.flightaware_id IN (SELECT spotter_live.flightaware_id FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL ".$globalLiveInterval." SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate AND spotter_live.latitude BETWEEN ".$minlat." AND ".$maxlat." AND spotter_live.longitude BETWEEN ".$minlong." AND ".$maxlong.")";
203
+				$query  = 'SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate AND spotter_live.latitude BETWEEN '.$minlat.' AND '.$maxlat.' AND spotter_live.longitude BETWEEN '.$minlong.' AND '.$maxlong.' GROUP BY spotter_live.flightaware_id'.$filter_query;
204
+			} else if ($globalDBdriver == 'pgsql') {
205
+					$query  = "SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE NOW() at time zone 'UTC'  - INTERVAL '".$globalLiveInterval." SECONDS' <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate AND spotter_live.latitude BETWEEN ".$minlat." AND ".$maxlat." AND spotter_live.longitude BETWEEN ".$minlong." AND ".$maxlong." GROUP BY spotter_live.flightaware_id".$filter_query;
206
+				}
207
+				$spotter_array = $Spotter->getDataFromDB($query);
208
+				return $spotter_array;
209
+		}
210 210
 
211 211
 	/**
212
-        * Gets all the spotter information based on a user's latitude and longitude
213
-        *
214
-        * @return Array the spotter information
215
-        *
216
-        */
217
-        public function getLatestSpotterForLayar($lat, $lng, $radius, $interval)
218
-        {
219
-    		$Spotter = new Spotter($this->db);
220
-                date_default_timezone_set('UTC');
221
-
222
-        if ($lat != '')
223
-                {
224
-                        if (!is_numeric($lat))
225
-                        {
226
-                                return false;
227
-                        }
228
-                }
212
+	 * Gets all the spotter information based on a user's latitude and longitude
213
+	 *
214
+	 * @return Array the spotter information
215
+	 *
216
+	 */
217
+		public function getLatestSpotterForLayar($lat, $lng, $radius, $interval)
218
+		{
219
+			$Spotter = new Spotter($this->db);
220
+				date_default_timezone_set('UTC');
221
+
222
+		if ($lat != '')
223
+				{
224
+						if (!is_numeric($lat))
225
+						{
226
+								return false;
227
+						}
228
+				}
229 229
         
230
-        if ($lng != '')
231
-                {
232
-                        if (!is_numeric($lng))
233
-                        {
234
-                                return false;
235
-                        }
236
-                }
237
-
238
-                if ($radius != '')
239
-                {
240
-                        if (!is_numeric($radius))
241
-                        {
242
-                                return false;
243
-                        }
244
-                }
230
+		if ($lng != '')
231
+				{
232
+						if (!is_numeric($lng))
233
+						{
234
+								return false;
235
+						}
236
+				}
237
+
238
+				if ($radius != '')
239
+				{
240
+						if (!is_numeric($radius))
241
+						{
242
+								return false;
243
+						}
244
+				}
245 245
         
246
-        if ($interval != '')
247
-                {
248
-                        if (!is_string($interval))
249
-                        {
250
-                                $additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 MINUTE) <= spotter_live.date ';
251
-                return false;
252
-                        } else {
253
-                if ($interval == '1m')
254
-                {
255
-                    $additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 MINUTE) <= spotter_live.date ';
256
-                } else if ($interval == '15m'){
257
-                    $additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 15 MINUTE) <= spotter_live.date ';
258
-                } 
259
-            }
260
-                } else {
261
-         $additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 MINUTE) <= spotter_live.date ';   
262
-        }
263
-
264
-                $query  = "SELECT spotter_live.*, ( 6371 * acos( cos( radians(:lat) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(:lng) ) + sin( radians(:lat) ) * sin( radians( latitude ) ) ) ) AS distance FROM spotter_live 
246
+		if ($interval != '')
247
+				{
248
+						if (!is_string($interval))
249
+						{
250
+								$additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 MINUTE) <= spotter_live.date ';
251
+				return false;
252
+						} else {
253
+				if ($interval == '1m')
254
+				{
255
+					$additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 MINUTE) <= spotter_live.date ';
256
+				} else if ($interval == '15m'){
257
+					$additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 15 MINUTE) <= spotter_live.date ';
258
+				} 
259
+			}
260
+				} else {
261
+		 $additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 MINUTE) <= spotter_live.date ';   
262
+		}
263
+
264
+				$query  = "SELECT spotter_live.*, ( 6371 * acos( cos( radians(:lat) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(:lng) ) + sin( radians(:lat) ) * sin( radians( latitude ) ) ) ) AS distance FROM spotter_live 
265 265
                    WHERE spotter_live.latitude <> '' 
266 266
                                    AND spotter_live.longitude <> '' 
267 267
                    ".$additional_query."
268 268
                    HAVING distance < :radius  
269 269
                                    ORDER BY distance";
270 270
 
271
-                $spotter_array = $Spotter->getDataFromDB($query, array(':lat' => $lat, ':lng' => $lng,':radius' => $radius),$limit_query);
271
+				$spotter_array = $Spotter->getDataFromDB($query, array(':lat' => $lat, ':lng' => $lng,':radius' => $radius),$limit_query);
272 272
 
273
-                return $spotter_array;
274
-        }
273
+				return $spotter_array;
274
+		}
275 275
 
276 276
     
277
-        /**
278
-	* Gets all the spotter information based on a particular callsign
279
-	*
280
-	* @return Array the spotter information
281
-	*
282
-	*/
277
+		/**
278
+		 * Gets all the spotter information based on a particular callsign
279
+		 *
280
+		 * @return Array the spotter information
281
+		 *
282
+		 */
283 283
 	public function getLastLiveSpotterDataByIdent($ident)
284 284
 	{
285 285
 		$Spotter = new Spotter($this->db);
286 286
 		date_default_timezone_set('UTC');
287 287
 
288 288
 		$ident = filter_var($ident, FILTER_SANITIZE_STRING);
289
-                $query  = 'SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE l.ident = :ident GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate ORDER BY spotter_live.date DESC';
289
+				$query  = 'SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE l.ident = :ident GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate ORDER BY spotter_live.date DESC';
290 290
 
291 291
 		$spotter_array = $Spotter->getDataFromDB($query,array(':ident' => $ident));
292 292
 
293 293
 		return $spotter_array;
294 294
 	}
295 295
 
296
-        /**
297
-	* Gets last spotter information based on a particular callsign
298
-	*
299
-	* @return Array the spotter information
300
-	*
301
-	*/
296
+		/**
297
+		 * Gets last spotter information based on a particular callsign
298
+		 *
299
+		 * @return Array the spotter information
300
+		 *
301
+		 */
302 302
 	public function getLastLiveSpotterDataById($id)
303 303
 	{
304 304
 		$Spotter = new Spotter($this->db);
305 305
 		date_default_timezone_set('UTC');
306 306
 
307 307
 		$id = filter_var($id, FILTER_SANITIZE_STRING);
308
-                $query  = 'SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE l.flightaware_id = :id GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate ORDER BY spotter_live.date DESC';
308
+				$query  = 'SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE l.flightaware_id = :id GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate ORDER BY spotter_live.date DESC';
309 309
 
310 310
 		$spotter_array = $Spotter->getDataFromDB($query,array(':id' => $id));
311 311
 
312 312
 		return $spotter_array;
313 313
 	}
314 314
 
315
-        /**
316
-	* Gets altitude information based on a particular callsign
317
-	*
318
-	* @return Array the spotter information
319
-	*
320
-	*/
315
+		/**
316
+		 * Gets altitude information based on a particular callsign
317
+		 *
318
+		 * @return Array the spotter information
319
+		 *
320
+		 */
321 321
 	public function getAltitudeLiveSpotterDataByIdent($ident)
322 322
 	{
323 323
 
324 324
 		date_default_timezone_set('UTC');
325 325
 
326 326
 		$ident = filter_var($ident, FILTER_SANITIZE_STRING);
327
-                $query  = 'SELECT spotter_live.altitude, spotter_live.date FROM spotter_live WHERE spotter_live.ident = :ident';
327
+				$query  = 'SELECT spotter_live.altitude, spotter_live.date FROM spotter_live WHERE spotter_live.ident = :ident';
328 328
 
329
-    		try {
329
+			try {
330 330
 			
331 331
 			$sth = $this->db->prepare($query);
332 332
 			$sth->execute(array(':ident' => $ident));
@@ -338,12 +338,12 @@  discard block
 block discarded – undo
338 338
 		return $spotter_array;
339 339
 	}
340 340
 
341
-        /**
342
-	* Gets all the spotter information based on a particular id
343
-	*
344
-	* @return Array the spotter information
345
-	*
346
-	*/
341
+		/**
342
+		 * Gets all the spotter information based on a particular id
343
+		 *
344
+		 * @return Array the spotter information
345
+		 *
346
+		 */
347 347
 	public function getAllLiveSpotterDataById($id)
348 348
 	{
349 349
 		date_default_timezone_set('UTC');
@@ -351,7 +351,7 @@  discard block
 block discarded – undo
351 351
 		$query  = self::$global_query.' WHERE spotter_live.flightaware_id = :id ORDER BY date';
352 352
 //		$spotter_array = Spotter->getDataFromDB($query,array(':id' => $id));
353 353
 
354
-    		try {
354
+			try {
355 355
 			
356 356
 			$sth = $this->db->prepare($query);
357 357
 			$sth->execute(array(':id' => $id));
@@ -363,18 +363,18 @@  discard block
 block discarded – undo
363 363
 		return $spotter_array;
364 364
 	}
365 365
 
366
-        /**
367
-	* Gets all the spotter information based on a particular ident
368
-	*
369
-	* @return Array the spotter information
370
-	*
371
-	*/
366
+		/**
367
+		 * Gets all the spotter information based on a particular ident
368
+		 *
369
+		 * @return Array the spotter information
370
+		 *
371
+		 */
372 372
 	public function getAllLiveSpotterDataByIdent($ident)
373 373
 	{
374 374
 		date_default_timezone_set('UTC');
375 375
 		$ident = filter_var($ident, FILTER_SANITIZE_STRING);
376 376
 		$query  = self::$global_query.' WHERE spotter_live.ident = :ident';
377
-    		try {
377
+			try {
378 378
 			
379 379
 			$sth = $this->db->prepare($query);
380 380
 			$sth->execute(array(':ident' => $ident));
@@ -387,24 +387,24 @@  discard block
 block discarded – undo
387 387
 
388 388
 
389 389
 	/**
390
-	* Deletes all info in the table
391
-	*
392
-	* @return String success or false
393
-	*
394
-	*/
390
+	 * Deletes all info in the table
391
+	 *
392
+	 * @return String success or false
393
+	 *
394
+	 */
395 395
 	public function deleteLiveSpotterData()
396 396
 	{
397 397
 		global $globalDBdriver;
398 398
 		if ($globalDBdriver == 'mysql') {
399 399
 			//$query  = "DELETE FROM spotter_live WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL 30 MINUTE) >= spotter_live.date";
400 400
 			$query  = 'DELETE FROM spotter_live WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL 9 HOUR) >= spotter_live.date';
401
-            		//$query  = "DELETE FROM spotter_live WHERE spotter_live.id IN (SELECT spotter_live.id FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 HOUR) >= spotter_live.date)";
401
+					//$query  = "DELETE FROM spotter_live WHERE spotter_live.id IN (SELECT spotter_live.id FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 HOUR) >= spotter_live.date)";
402 402
 
403 403
 		} elseif ($globalDBdriver == 'pgsql') {
404 404
 			$query  = "DELETE FROM spotter_live WHERE NOW() AT TIME ZONE 'UTC' - INTERVAL '9 HOURS' >= spotter_live.date";
405 405
 		}
406 406
         
407
-    		try {
407
+			try {
408 408
 			
409 409
 			$sth = $this->db->prepare($query);
410 410
 			$sth->execute();
@@ -416,18 +416,18 @@  discard block
 block discarded – undo
416 416
 	}
417 417
 
418 418
 	/**
419
-	* Deletes all info in the table for aircraft not seen since 2 HOUR
420
-	*
421
-	* @return String success or false
422
-	*
423
-	*/
419
+	 * Deletes all info in the table for aircraft not seen since 2 HOUR
420
+	 *
421
+	 * @return String success or false
422
+	 *
423
+	 */
424 424
 	public function deleteLiveSpotterDataNotUpdated()
425 425
 	{
426 426
 		global $globalDBdriver, $globalDebug;
427 427
 		if ($globalDBdriver == 'mysql') {
428 428
 			//$query = 'SELECT flightaware_id FROM spotter_live WHERE DATE_SUB(UTC_TIMESTAMP(), INTERVAL 1 HOUR) >= spotter_live.date AND spotter_live.flightaware_id NOT IN (SELECT flightaware_id FROM spotter_live WHERE DATE_SUB(UTC_TIMESTAMP(), INTERVAL 1 HOUR) < spotter_live.date) LIMIT 800 OFFSET 0';
429
-    			$query = "SELECT spotter_live.flightaware_id FROM spotter_live INNER JOIN (SELECT flightaware_id,MAX(date) as max_date FROM spotter_live GROUP BY flightaware_id) s ON s.flightaware_id = spotter_live.flightaware_id AND DATE_SUB(UTC_TIMESTAMP(), INTERVAL 2 HOUR) >= s.max_date LIMIT 1200 OFFSET 0";
430
-    			try {
429
+				$query = "SELECT spotter_live.flightaware_id FROM spotter_live INNER JOIN (SELECT flightaware_id,MAX(date) as max_date FROM spotter_live GROUP BY flightaware_id) s ON s.flightaware_id = spotter_live.flightaware_id AND DATE_SUB(UTC_TIMESTAMP(), INTERVAL 2 HOUR) >= s.max_date LIMIT 1200 OFFSET 0";
430
+				try {
431 431
 				
432 432
 				$sth = $this->db->prepare($query);
433 433
 				$sth->execute();
@@ -435,8 +435,8 @@  discard block
 block discarded – undo
435 435
 				return "error";
436 436
 			}
437 437
 			$query_delete = 'DELETE FROM spotter_live WHERE flightaware_id IN (';
438
-                        $i = 0;
439
-                        $j =0;
438
+						$i = 0;
439
+						$j =0;
440 440
 			$all = $sth->fetchAll(PDO::FETCH_ASSOC);
441 441
 			foreach($all as $row)
442 442
 			{
@@ -444,20 +444,20 @@  discard block
 block discarded – undo
444 444
 				$j++;
445 445
 				if ($j == 30) {
446 446
 					if ($globalDebug) echo ".";
447
-				    	try {
447
+						try {
448 448
 						
449 449
 						$sth = $this->db->prepare(substr($query_delete,0,-1).")");
450 450
 						$sth->execute();
451 451
 					} catch(PDOException $e) {
452 452
 						return "error";
453 453
 					}
454
-                                	$query_delete = 'DELETE FROM spotter_live WHERE flightaware_id IN (';
455
-                                	$j = 0;
454
+									$query_delete = 'DELETE FROM spotter_live WHERE flightaware_id IN (';
455
+									$j = 0;
456 456
 				}
457 457
 				$query_delete .= "'".$row['flightaware_id']."',";
458 458
 			}
459 459
 			if ($i > 0) {
460
-    				try {
460
+					try {
461 461
 					
462 462
 					$sth = $this->db->prepare(substr($query_delete,0,-1).")");
463 463
 					$sth->execute();
@@ -468,9 +468,9 @@  discard block
 block discarded – undo
468 468
 			return "success";
469 469
 		} elseif ($globalDBdriver == 'pgsql') {
470 470
 			//$query = "SELECT flightaware_id FROM spotter_live WHERE NOW() AT TIME ZONE 'UTC' - INTERVAL '9 HOURS' >= spotter_live.date AND spotter_live.flightaware_id NOT IN (SELECT flightaware_id FROM spotter_live WHERE NOW() AT TIME ZONE 'UTC' - INTERVAL '9 HOURS' < spotter_live.date) LIMIT 800 OFFSET 0";
471
-    			//$query = "SELECT spotter_live.flightaware_id FROM spotter_live INNER JOIN (SELECT flightaware_id,MAX(date) as max_date FROM spotter_live GROUP BY flightaware_id) s ON s.flightaware_id = spotter_live.flightaware_id AND NOW() AT TIME ZONE 'UTC' - INTERVAL '2 HOURS' >= s.max_date LIMIT 800 OFFSET 0";
472
-    			$query = "DELETE FROM spotter_live WHERE flightaware_id IN (SELECT spotter_live.flightaware_id FROM spotter_live INNER JOIN (SELECT flightaware_id,MAX(date) as max_date FROM spotter_live GROUP BY flightaware_id) s ON s.flightaware_id = spotter_live.flightaware_id AND NOW() AT TIME ZONE 'UTC' - INTERVAL '2 HOURS' >= s.max_date LIMIT 800 OFFSET 0)";
473
-    			try {
471
+				//$query = "SELECT spotter_live.flightaware_id FROM spotter_live INNER JOIN (SELECT flightaware_id,MAX(date) as max_date FROM spotter_live GROUP BY flightaware_id) s ON s.flightaware_id = spotter_live.flightaware_id AND NOW() AT TIME ZONE 'UTC' - INTERVAL '2 HOURS' >= s.max_date LIMIT 800 OFFSET 0";
472
+				$query = "DELETE FROM spotter_live WHERE flightaware_id IN (SELECT spotter_live.flightaware_id FROM spotter_live INNER JOIN (SELECT flightaware_id,MAX(date) as max_date FROM spotter_live GROUP BY flightaware_id) s ON s.flightaware_id = spotter_live.flightaware_id AND NOW() AT TIME ZONE 'UTC' - INTERVAL '2 HOURS' >= s.max_date LIMIT 800 OFFSET 0)";
473
+				try {
474 474
 				
475 475
 				$sth = $this->db->prepare($query);
476 476
 				$sth->execute();
@@ -514,17 +514,17 @@  discard block
 block discarded – undo
514 514
 	}
515 515
 
516 516
 	/**
517
-	* Deletes all info in the table for an ident
518
-	*
519
-	* @return String success or false
520
-	*
521
-	*/
517
+	 * Deletes all info in the table for an ident
518
+	 *
519
+	 * @return String success or false
520
+	 *
521
+	 */
522 522
 	public function deleteLiveSpotterDataByIdent($ident)
523 523
 	{
524 524
 		$ident = filter_var($ident, FILTER_SANITIZE_STRING);
525 525
 		$query  = 'DELETE FROM spotter_live WHERE ident = :ident';
526 526
         
527
-    		try {
527
+			try {
528 528
 			
529 529
 			$sth = $this->db->prepare($query);
530 530
 			$sth->execute(array(':ident' => $ident));
@@ -536,17 +536,17 @@  discard block
 block discarded – undo
536 536
 	}
537 537
 
538 538
 	/**
539
-	* Deletes all info in the table for an id
540
-	*
541
-	* @return String success or false
542
-	*
543
-	*/
539
+	 * Deletes all info in the table for an id
540
+	 *
541
+	 * @return String success or false
542
+	 *
543
+	 */
544 544
 	public function deleteLiveSpotterDataById($id)
545 545
 	{
546 546
 		$id = filter_var($id, FILTER_SANITIZE_STRING);
547 547
 		$query  = 'DELETE FROM spotter_live WHERE flightaware_id = :id';
548 548
         
549
-    		try {
549
+			try {
550 550
 			
551 551
 			$sth = $this->db->prepare($query);
552 552
 			$sth->execute(array(':id' => $id));
@@ -559,11 +559,11 @@  discard block
 block discarded – undo
559 559
 
560 560
 
561 561
 	/**
562
-	* Gets the aircraft ident within the last hour
563
-	*
564
-	* @return String the ident
565
-	*
566
-	*/
562
+	 * Gets the aircraft ident within the last hour
563
+	 *
564
+	 * @return String the ident
565
+	 *
566
+	 */
567 567
 	public function getIdentFromLastHour($ident)
568 568
 	{
569 569
 		global $globalDBdriver, $globalTimezone;
@@ -589,14 +589,14 @@  discard block
 block discarded – undo
589 589
 			$ident_result = $row['ident'];
590 590
 		}
591 591
 		return $ident_result;
592
-        }
592
+		}
593 593
 
594 594
 	/**
595
-	* Check recent aircraft
596
-	*
597
-	* @return String the ident
598
-	*
599
-	*/
595
+	 * Check recent aircraft
596
+	 *
597
+	 * @return String the ident
598
+	 *
599
+	 */
600 600
 	public function checkIdentRecent($ident)
601 601
 	{
602 602
 		global $globalDBdriver, $globalTimezone;
@@ -622,14 +622,14 @@  discard block
 block discarded – undo
622 622
 			$ident_result = $row['flightaware_id'];
623 623
 		}
624 624
 		return $ident_result;
625
-        }
625
+		}
626 626
 
627 627
 	/**
628
-	* Check recent aircraft by ModeS
629
-	*
630
-	* @return String the ModeS
631
-	*
632
-	*/
628
+	 * Check recent aircraft by ModeS
629
+	 *
630
+	 * @return String the ModeS
631
+	 *
632
+	 */
633 633
 	public function checkModeSRecent($modes)
634 634
 	{
635 635
 		global $globalDBdriver, $globalTimezone;
@@ -656,19 +656,19 @@  discard block
 block discarded – undo
656 656
 			$ident_result = $row['flightaware_id'];
657 657
 		}
658 658
 		return $ident_result;
659
-        }
659
+		}
660 660
 
661 661
 	/**
662
-	* Adds a new spotter data
663
-	*
664
-	* @param String $flightaware_id the ID from flightaware
665
-	* @param String $ident the flight ident
666
-	* @param String $aircraft_icao the aircraft type
667
-	* @param String $departure_airport_icao the departure airport
668
-	* @param String $arrival_airport_icao the arrival airport
669
-	* @return String success or false
670
-	*
671
-	*/
662
+	 * Adds a new spotter data
663
+	 *
664
+	 * @param String $flightaware_id the ID from flightaware
665
+	 * @param String $ident the flight ident
666
+	 * @param String $aircraft_icao the aircraft type
667
+	 * @param String $departure_airport_icao the departure airport
668
+	 * @param String $arrival_airport_icao the arrival airport
669
+	 * @return String success or false
670
+	 *
671
+	 */
672 672
 	public function addLiveSpotterData($flightaware_id = '', $ident = '', $aircraft_icao = '', $departure_airport_icao = '', $arrival_airport_icao = '', $latitude = '', $longitude = '', $waypoints = '', $altitude = '', $heading = '', $groundspeed = '', $date = '',$departure_airport_time = '', $arrival_airport_time = '', $squawk = '', $route_stop = '', $ModeS = '', $putinarchive = false,$registration = '',$pilot_id = '', $pilot_name = '', $verticalrate = '', $noarchive = false, $ground = false,$format_source = '', $source_name = '', $over_country = '')
673 673
 	{
674 674
 		global $globalURL, $globalArchive, $globalDebug;
@@ -894,10 +894,10 @@  discard block
 block discarded – undo
894 894
 			$arrival_airport_country = '';
895 895
 		}
896 896
             	
897
-            	if ($squawk == '' || $Common->isInteger($squawk) == false ) $squawk = NULL;
898
-            	if ($verticalrate == '' || $Common->isInteger($verticalrate) == false ) $verticalrate = NULL;
899
-            	if ($groundspeed == '' || $Common->isInteger($groundspeed) == false ) $groundspeed = 0;
900
-            	if ($heading == '' || $Common->isInteger($heading) == false ) $heading = 0;
897
+				if ($squawk == '' || $Common->isInteger($squawk) == false ) $squawk = NULL;
898
+				if ($verticalrate == '' || $Common->isInteger($verticalrate) == false ) $verticalrate = NULL;
899
+				if ($groundspeed == '' || $Common->isInteger($groundspeed) == false ) $groundspeed = 0;
900
+				if ($heading == '' || $Common->isInteger($heading) == false ) $heading = 0;
901 901
             	
902 902
 		$query  = 'INSERT INTO spotter_live (flightaware_id, ident, registration, airline_name, airline_icao, airline_country, airline_type, aircraft_icao, aircraft_shadow, aircraft_name, aircraft_manufacturer, departure_airport_icao, departure_airport_name, departure_airport_city, departure_airport_country, arrival_airport_icao, arrival_airport_name, arrival_airport_city, arrival_airport_country, latitude, longitude, waypoints, altitude, heading, ground_speed, date, departure_airport_time, arrival_airport_time, squawk, route_stop, ModeS, pilot_id, pilot_name, verticalrate, ground, format_source, source_name, over_country) 
903 903
 		VALUES (:flightaware_id,:ident,:registration,:airline_name,:airline_icao,:airline_country,:airline_type,:aircraft_icao,:aircraft_shadow,:aircraft_type,:aircraft_manufacturer,:departure_airport_icao,:departure_airport_name, :departure_airport_city, :departure_airport_country, :arrival_airport_icao, :arrival_airport_name, :arrival_airport_city, :arrival_airport_country, :latitude,:longitude,:waypoints,:altitude,:heading,:groundspeed,:date,:departure_airport_time,:arrival_airport_time,:squawk,:route_stop,:ModeS, :pilot_id, :pilot_name, :verticalrate, :ground, :format_source, :source_name, :over_country)';
@@ -908,13 +908,13 @@  discard block
 block discarded – undo
908 908
 			
909 909
 			$sth = $this->db->prepare($query);
910 910
 			$sth->execute($query_values);
911
-                } catch(PDOException $e) {
912
-                	return "error : ".$e->getMessage();
913
-                }
911
+				} catch(PDOException $e) {
912
+					return "error : ".$e->getMessage();
913
+				}
914 914
 		if (isset($globalArchive) && $globalArchive && $putinarchive && !$noarchive) {
915
-		    if ($globalDebug) echo '(Add to SBS archive : ';
916
-		    $result =  $SpotterArchive->addSpotterArchiveData($flightaware_id, $ident, $registration, $airline_name, $airline_icao, $airline_country, $airline_type, $aircraft_icao, $aircraft_shadow, $aircraft_name, $aircraft_manufacturer, $departure_airport_icao, $departure_airport_name, $departure_airport_city, $departure_airport_country, $departure_airport_time,$arrival_airport_icao, $arrival_airport_name, $arrival_airport_city, $arrival_airport_country, $arrival_airport_time, $route_stop, $date,$latitude, $longitude, $waypoints, $altitude, $heading, $groundspeed, $squawk, $ModeS, $pilot_id, $pilot_name,$verticalrate,$format_source,$source_name, $over_country);
917
-		    if ($globalDebug) echo $result.')';
915
+			if ($globalDebug) echo '(Add to SBS archive : ';
916
+			$result =  $SpotterArchive->addSpotterArchiveData($flightaware_id, $ident, $registration, $airline_name, $airline_icao, $airline_country, $airline_type, $aircraft_icao, $aircraft_shadow, $aircraft_name, $aircraft_manufacturer, $departure_airport_icao, $departure_airport_name, $departure_airport_city, $departure_airport_country, $departure_airport_time,$arrival_airport_icao, $arrival_airport_name, $arrival_airport_city, $arrival_airport_country, $arrival_airport_time, $route_stop, $date,$latitude, $longitude, $waypoints, $altitude, $heading, $groundspeed, $squawk, $ModeS, $pilot_id, $pilot_name,$verticalrate,$format_source,$source_name, $over_country);
917
+			if ($globalDebug) echo $result.')';
918 918
 		}
919 919
 		return "success";
920 920
 
Please login to merge, or discard this patch.
require/class.Common.php 1 patch
Indentation   +46 added lines, -46 removed lines patch added patch discarded remove patch
@@ -6,13 +6,13 @@  discard block
 block discarded – undo
6 6
 	protected $cookies = array();
7 7
 	
8 8
 	/**
9
-	* Get data from form result
10
-	* @param String $url form URL
11
-	* @param String $type type of submit form method (get or post)
12
-	* @param String or Array $data values form post method
13
-	* @param Array $headers header to submit with the form
14
-	* @return String the result
15
-	*/
9
+	 * Get data from form result
10
+	 * @param String $url form URL
11
+	 * @param String $type type of submit form method (get or post)
12
+	 * @param String or Array $data values form post method
13
+	 * @param Array $headers header to submit with the form
14
+	 * @return String the result
15
+	 */
16 16
 	public function getData($url, $type = 'get', $data = '', $headers = '',$cookie = '',$referer = '',$timeout = '',$useragent = '') {
17 17
 		$ch = curl_init();
18 18
 		curl_setopt($ch, CURLOPT_URL, $url);
@@ -67,7 +67,7 @@  discard block
 block discarded – undo
67 67
 				return $this->getData($url,'get',$data,$headers,$clearanceCookie,$referer,$timeout,$useragent);
68 68
 			}
69 69
 		} else {
70
-		    return $result;
70
+			return $result;
71 71
 		}
72 72
 	}
73 73
 	
@@ -79,10 +79,10 @@  discard block
 block discarded – undo
79 79
 	}
80 80
 	
81 81
 	/**
82
-	* Convert a HTML table to an array
83
-	* @param String $data HTML page
84
-	* @return Array array of the tables in HTML page
85
-	*/
82
+	 * Convert a HTML table to an array
83
+	 * @param String $data HTML page
84
+	 * @return Array array of the tables in HTML page
85
+	 */
86 86
 	public function table2array($data) {
87 87
 		if (!is_string($data)) return array();
88 88
 		if ($data == '') return array();
@@ -115,10 +115,10 @@  discard block
 block discarded – undo
115 115
 	}
116 116
 	
117 117
 	/**
118
-	* Convert <p> part of a HTML page to an array
119
-	* @param String $data HTML page
120
-	* @return Array array of the <p> in HTML page
121
-	*/
118
+	 * Convert <p> part of a HTML page to an array
119
+	 * @param String $data HTML page
120
+	 * @return Array array of the <p> in HTML page
121
+	 */
122 122
 	public function text2array($data) {
123 123
 		$html = str_get_html($data);
124 124
 		$tabledata=array();
@@ -132,14 +132,14 @@  discard block
 block discarded – undo
132 132
 	}
133 133
 
134 134
 	/**
135
-	* Give distance between 2 coordonnates
136
-	* @param Float $lat latitude of first point
137
-	* @param Float $lon longitude of first point
138
-	* @param Float $latc latitude of second point
139
-	* @param Float $lonc longitude of second point
140
-	* @param String $unit km else no unit used
141
-	* @return Float Distance in $unit
142
-	*/
135
+	 * Give distance between 2 coordonnates
136
+	 * @param Float $lat latitude of first point
137
+	 * @param Float $lon longitude of first point
138
+	 * @param Float $latc latitude of second point
139
+	 * @param Float $lonc longitude of second point
140
+	 * @param String $unit km else no unit used
141
+	 * @return Float Distance in $unit
142
+	 */
143 143
 	public function distance($lat, $lon, $latc, $lonc, $unit = 'km') {
144 144
 		if ($lat == $latc && $lon == $lonc) return 0;
145 145
 		$dist = rad2deg(acos(sin(deg2rad(floatval($lat)))*sin(deg2rad(floatval($latc)))+ cos(deg2rad(floatval($lat)))*cos(deg2rad(floatval($latc)))*cos(deg2rad(floatval($lon)-floatval($lonc)))))*60*1.1515;
@@ -157,11 +157,11 @@  discard block
 block discarded – undo
157 157
 	}
158 158
 
159 159
 	/**
160
-	* Check is distance realistic
161
-	* @param int $timeDifference the time between the reception of both messages
162
-	* @param float $distance distance covered
163
-	* @return whether distance is realistic
164
-	*/
160
+	 * Check is distance realistic
161
+	 * @param int $timeDifference the time between the reception of both messages
162
+	 * @param float $distance distance covered
163
+	 * @return whether distance is realistic
164
+	 */
165 165
 	public function withinThreshold ($timeDifference, $distance) {
166 166
 		$x = abs($timeDifference);
167 167
 		$d = abs($distance);
@@ -179,7 +179,7 @@  discard block
 block discarded – undo
179 179
 	}
180 180
 
181 181
 	public function isInteger($input){
182
-	    return(ctype_digit(strval($input)));
182
+		return(ctype_digit(strval($input)));
183 183
 	}
184 184
 
185 185
 
@@ -195,11 +195,11 @@  discard block
 block discarded – undo
195 195
 	}
196 196
 	
197 197
 	/**
198
-	* Copy folder contents
199
-	* @param       string   $source    Source path
200
-	* @param       string   $dest      Destination path
201
-	* @return      bool     Returns true on success, false on failure
202
-	*/
198
+	 * Copy folder contents
199
+	 * @param       string   $source    Source path
200
+	 * @param       string   $dest      Destination path
201
+	 * @return      bool     Returns true on success, false on failure
202
+	 */
203 203
 	public function xcopy($source, $dest, $permissions = 0755)
204 204
 	{
205 205
 		$files = glob($source.'*.*');
@@ -211,20 +211,20 @@  discard block
 block discarded – undo
211 211
 	}
212 212
 	
213 213
 	/**
214
-	* Check if an url exist
215
-	* @param	String $url url to check
216
-	* @return	bool Return true on succes false on failure
217
-	*/
214
+	 * Check if an url exist
215
+	 * @param	String $url url to check
216
+	 * @return	bool Return true on succes false on failure
217
+	 */
218 218
 	public function urlexist($url){
219 219
 		$headers=get_headers($url);
220 220
 		return stripos($headers[0],"200 OK")?true:false;
221 221
 	}
222 222
 	
223 223
 	/**
224
-	* Convert hexa to string
225
-	* @param	String $hex data in hexa
226
-	* @return	String Return result
227
-	*/
224
+	 * Convert hexa to string
225
+	 * @param	String $hex data in hexa
226
+	 * @return	String Return result
227
+	 */
228 228
 	public function hex2str($hex) {
229 229
 		$str = '';
230 230
 		$hexln = strlen($hex);
@@ -272,9 +272,9 @@  discard block
 block discarded – undo
272 272
 	}
273 273
 	
274 274
 	/**
275
-	* Returns list of available locales
276
-	*
277
-	* @return array
275
+	 * Returns list of available locales
276
+	 *
277
+	 * @return array
278 278
 	 */
279 279
 	public function listLocaleDir()
280 280
 	{
Please login to merge, or discard this patch.
require/class.ACARS.php 1 patch
Indentation   +72 added lines, -72 removed lines patch added patch discarded remove patch
@@ -16,11 +16,11 @@  discard block
 block discarded – undo
16 16
 		$this->SI = new SpotterImport($this->db);
17 17
 	}
18 18
 	/**
19
-	* Change IATA to ICAO value for ident
20
-	*
21
-	* @param String $ident ident
22
-	* @return String the icao
23
-	*/
19
+	 * Change IATA to ICAO value for ident
20
+	 *
21
+	 * @param String $ident ident
22
+	 * @return String the icao
23
+	 */
24 24
 	public function ident2icao($ident) {
25 25
 		if (substr($ident,0,2) == 'AF') {
26 26
 			if (filter_var(substr($ident,2),FILTER_VALIDATE_INT,array("flags"=>FILTER_FLAG_ALLOW_OCTAL))) $icao = $ident;
@@ -36,11 +36,11 @@  discard block
 block discarded – undo
36 36
 	}
37 37
 
38 38
 	/**
39
-	* Deletes all info in the live table
40
-	*
41
-	* @return String success or false
42
-	*
43
-	*/
39
+	 * Deletes all info in the live table
40
+	 *
41
+	 * @return String success or false
42
+	 *
43
+	 */
44 44
 	public function deleteLiveAcarsData()
45 45
 	{
46 46
 		global $globalDBdriver;
@@ -60,11 +60,11 @@  discard block
 block discarded – undo
60 60
 	}
61 61
 
62 62
 	/**
63
-	* Deletes all info in the archive table
64
-	*
65
-	* @return String success or false
66
-	*
67
-	*/
63
+	 * Deletes all info in the archive table
64
+	 *
65
+	 * @return String success or false
66
+	 *
67
+	 */
68 68
 	public function deleteArchiveAcarsData()
69 69
 	{
70 70
 		global $globalACARSArchiveKeepMonths, $globalDBdriver;
@@ -85,11 +85,11 @@  discard block
 block discarded – undo
85 85
 
86 86
 
87 87
 	/**
88
-	* Parse ACARS data
89
-	*
90
-	* @param String ACARS data in acarsdec data
91
-	*
92
-	*/
88
+	 * Parse ACARS data
89
+	 *
90
+	 * @param String ACARS data in acarsdec data
91
+	 *
92
+	 */
93 93
 	function parse($data) {
94 94
 		global $globalDebug, $globalACARSArchive;
95 95
 		$Image = new Image($this->db);
@@ -660,11 +660,11 @@  discard block
 block discarded – undo
660 660
 
661 661
 
662 662
 	/**
663
-	* Add ACARS data
664
-	*
665
-	* @param String ACARS data in acarsdec data
666
-	*
667
-	*/
663
+	 * Add ACARS data
664
+	 *
665
+	 * @param String ACARS data in acarsdec data
666
+	 *
667
+	 */
668 668
 	function add($data) {
669 669
 		global $globalDebug, $globalACARSArchive;
670 670
 		$Image = new Image($this->db);
@@ -719,15 +719,15 @@  discard block
 block discarded – undo
719 719
 	}
720 720
 
721 721
 	/**
722
-	* Add Live ACARS data in DB
723
-	*
724
-	* @param String $ident ident
725
-	* @param String $registration Registration of the aircraft
726
-	* @param String $label Label of the ACARS message
727
-	* @param String $block_id Block id of the ACARS message
728
-	* @param String $msg_no Number of the ACARS message
729
-	* @param String $message ACARS message
730
-	*/
722
+	 * Add Live ACARS data in DB
723
+	 *
724
+	 * @param String $ident ident
725
+	 * @param String $registration Registration of the aircraft
726
+	 * @param String $label Label of the ACARS message
727
+	 * @param String $block_id Block id of the ACARS message
728
+	 * @param String $msg_no Number of the ACARS message
729
+	 * @param String $message ACARS message
730
+	 */
731 731
 	public function addLiveAcarsData($ident,$registration,$label,$block_id,$msg_no,$message,$decode = '') {
732 732
 		global $globalDebug;
733 733
 		date_default_timezone_set('UTC');
@@ -765,15 +765,15 @@  discard block
 block discarded – undo
765 765
 	}
766 766
 
767 767
 	/**
768
-	* Add Archive ACARS data in DB
769
-	*
770
-	* @param String $ident ident
771
-	* @param String $registration Registration of the aircraft
772
-	* @param String $label Label of the ACARS message
773
-	* @param String $block_id Block id of the ACARS message
774
-	* @param String $msg_no Number of the ACARS message
775
-	* @param String $message ACARS message
776
-	*/
768
+	 * Add Archive ACARS data in DB
769
+	 *
770
+	 * @param String $ident ident
771
+	 * @param String $registration Registration of the aircraft
772
+	 * @param String $label Label of the ACARS message
773
+	 * @param String $block_id Block id of the ACARS message
774
+	 * @param String $msg_no Number of the ACARS message
775
+	 * @param String $message ACARS message
776
+	 */
777 777
 	public function addArchiveAcarsData($ident,$registration,$label,$block_id,$msg_no,$message,$decode = '') {
778 778
 		global $globalDebug;
779 779
 		date_default_timezone_set('UTC');
@@ -807,11 +807,11 @@  discard block
 block discarded – undo
807 807
 	}
808 808
 
809 809
 	/**
810
-	* Get Message title from label from DB
811
-	*
812
-	* @param String $ident
813
-	* @return Array Return ACARS data in array
814
-	*/
810
+	 * Get Message title from label from DB
811
+	 *
812
+	 * @param String $ident
813
+	 * @return Array Return ACARS data in array
814
+	 */
815 815
 	public function getTitlefromLabel($label) {
816 816
 		$Connection = new Connection($this->db);
817 817
 		$this->db = $Connection->db;
@@ -830,10 +830,10 @@  discard block
 block discarded – undo
830 830
 	}
831 831
 
832 832
 	/**
833
-	* List all Message title & label from DB
834
-	*
835
-	* @return Array Return ACARS data in array
836
-	*/
833
+	 * List all Message title & label from DB
834
+	 *
835
+	 * @return Array Return ACARS data in array
836
+	 */
837 837
 	public function getAllTitleLabel() {
838 838
 		$query = "SELECT * FROM acars_label ORDER BY title";
839 839
 		$query_values = array();
@@ -850,11 +850,11 @@  discard block
 block discarded – undo
850 850
 	}
851 851
 
852 852
 	/**
853
-	* Get Live ACARS data from DB
854
-	*
855
-	* @param String $ident
856
-	* @return Array Return ACARS data in array
857
-	*/
853
+	 * Get Live ACARS data from DB
854
+	 *
855
+	 * @param String $ident
856
+	 * @return Array Return ACARS data in array
857
+	 */
858 858
 	public function getLiveAcarsData($ident) {
859 859
 		$query = "SELECT * FROM acars_live WHERE ident = :ident ORDER BY acars_live_id DESC";
860 860
 		$query_values = array(':ident' => $ident);
@@ -871,10 +871,10 @@  discard block
 block discarded – undo
871 871
 	}
872 872
 
873 873
 	/**
874
-	* Get Latest ACARS data from DB
875
-	*
876
-	* @return Array Return ACARS data in array
877
-	*/
874
+	 * Get Latest ACARS data from DB
875
+	 *
876
+	 * @return Array Return ACARS data in array
877
+	 */
878 878
 	public function getLatestAcarsData($limit = '',$label = '') {
879 879
 		global $globalURL, $globalDBdriver;
880 880
 		$Image = new Image($this->db);
@@ -972,10 +972,10 @@  discard block
 block discarded – undo
972 972
 	}
973 973
 
974 974
 	/**
975
-	* Get Archive ACARS data from DB
976
-	*
977
-	* @return Array Return ACARS data in array
978
-	*/
975
+	 * Get Archive ACARS data from DB
976
+	 *
977
+	 * @return Array Return ACARS data in array
978
+	 */
979 979
 	public function getArchiveAcarsData($limit = '',$label = '') {
980 980
 		global $globalURL, $globalDBdriver;
981 981
 		$Image = new Image($this->db);
@@ -1077,13 +1077,13 @@  discard block
 block discarded – undo
1077 1077
 	}
1078 1078
 
1079 1079
 	/**
1080
-	* Add ModeS data to DB
1081
-	*
1082
-	* @param String $ident ident
1083
-	* @param String $registration Registration of the aircraft
1084
-	* @param String $icao
1085
-	* @param String $ICAOTypeCode
1086
-	*/
1080
+	 * Add ModeS data to DB
1081
+	 *
1082
+	 * @param String $ident ident
1083
+	 * @param String $registration Registration of the aircraft
1084
+	 * @param String $icao
1085
+	 * @param String $ICAOTypeCode
1086
+	 */
1087 1087
 	public function addModeSData($ident,$registration,$icao = '',$ICAOTypeCode = '',$latitude = '', $longitude = '') {
1088 1088
 		global $globalDebug, $globalDBdriver;
1089 1089
 		$ident = trim($ident);
Please login to merge, or discard this patch.
require/class.SBS.php 1 patch
Indentation   +71 added lines, -71 removed lines patch added patch discarded remove patch
@@ -1,8 +1,8 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 class SBS {
3
-    static $latlon = array();
3
+	static $latlon = array();
4 4
     
5
-    function parse($buffer) {
5
+	function parse($buffer) {
6 6
 	// Not yet finished, no CRC checks
7 7
 	//echo $buffer."\n";
8 8
 	$typehex = substr($buffer,0,1);
@@ -12,47 +12,47 @@  discard block
 block discarded – undo
12 12
 	$bin = gmp_strval( gmp_init($hex,16), 2);
13 13
 	//if (strlen($hex) == 28 && $this->parityCheck($hex,$bin)) {
14 14
 	if (strlen($hex) == 28) {
15
-	    $df = intval(substr($bin,0,5),2);
16
-	    $ca = intval(substr($bin,5,3),2);
17
-	    // Only support DF17 for now
18
-	    //if ($df == 17 || ($df == 18 && ($ca == 0 || $ca == 1 || $ca == 6))) {
19
-	    if (($df == 17 || $df == 18) && ($this->parityCheck($hex,$bin) || $typehex == '@')) {
15
+		$df = intval(substr($bin,0,5),2);
16
+		$ca = intval(substr($bin,5,3),2);
17
+		// Only support DF17 for now
18
+		//if ($df == 17 || ($df == 18 && ($ca == 0 || $ca == 1 || $ca == 6))) {
19
+		if (($df == 17 || $df == 18) && ($this->parityCheck($hex,$bin) || $typehex == '@')) {
20 20
 		$icao = substr($hex,2,6);
21 21
 		$data['hex'] = $icao;
22 22
 		$tc = intval(substr($bin,32,5),2);
23 23
 		if ($tc >= 1 && $tc <= 4) {
24
-		    //callsign
25
-		    $csbin = substr($bin,40,56);
26
-		    $charset = str_split('#ABCDEFGHIJKLMNOPQRSTUVWXYZ#####_###############0123456789######');
27
-		    $cs = '';
28
-		    $cs .= $charset[intval(substr($csbin,0,6),2)];
29
-		    $cs .= $charset[intval(substr($csbin,6,6),2)];
30
-		    $cs .= $charset[intval(substr($csbin,12,6),2)];
31
-		    $cs .= $charset[intval(substr($csbin,18,6),2)];
32
-		    $cs .= $charset[intval(substr($csbin,24,6),2)];
33
-		    $cs .= $charset[intval(substr($csbin,30,6),2)];
34
-		    $cs .= $charset[intval(substr($csbin,36,6),2)];
35
-		    $cs .= $charset[intval(substr($csbin,42,6),2)];
36
-		    $cs = str_replace('_','',$cs);
37
-		    $cs = str_replace('#','',$cs);
38
-		    $callsign = $cs;
39
-		    $data['ident'] = $callsign;
24
+			//callsign
25
+			$csbin = substr($bin,40,56);
26
+			$charset = str_split('#ABCDEFGHIJKLMNOPQRSTUVWXYZ#####_###############0123456789######');
27
+			$cs = '';
28
+			$cs .= $charset[intval(substr($csbin,0,6),2)];
29
+			$cs .= $charset[intval(substr($csbin,6,6),2)];
30
+			$cs .= $charset[intval(substr($csbin,12,6),2)];
31
+			$cs .= $charset[intval(substr($csbin,18,6),2)];
32
+			$cs .= $charset[intval(substr($csbin,24,6),2)];
33
+			$cs .= $charset[intval(substr($csbin,30,6),2)];
34
+			$cs .= $charset[intval(substr($csbin,36,6),2)];
35
+			$cs .= $charset[intval(substr($csbin,42,6),2)];
36
+			$cs = str_replace('_','',$cs);
37
+			$cs = str_replace('#','',$cs);
38
+			$callsign = $cs;
39
+			$data['ident'] = $callsign;
40 40
 		} elseif ($tc >= 9 && $tc <= 18) {
41
-		    // Check Q-bit
42
-		    $q = substr($bin,47,1);
43
-		    if ($q) {
41
+			// Check Q-bit
42
+			$q = substr($bin,47,1);
43
+			if ($q) {
44 44
 			$n = intval(substr($bin,40,7).substr($bin,48,4),2);
45 45
 			$alt = $n*25-1000;
46 46
 			$data['altitude'] = $alt;
47
-		    }
48
-		    // Check odd/even flag
49
-		    $oe = substr($bin,53,1);
50
-		    //if ($oe) => odd else even
51
-		    //  131072 is 2^17 since CPR latitude and longitude are encoded in 17 bits.
52
-		    $cprlat = intval(substr($bin,54,17),2)/131072.0;
53
-		    $cprlon = intval(substr($bin,71,17),2)/131072.0;
54
-		    if ($oe == 0) $this::$latlon[$icao] = array('latitude' => $cprlat,'longitude' => $cprlon,'created' => time());
55
-		    elseif (isset($this::$latlon[$icao]) && (time() - $this::$latlon[$icao]['created']) < 10) {
47
+			}
48
+			// Check odd/even flag
49
+			$oe = substr($bin,53,1);
50
+			//if ($oe) => odd else even
51
+			//  131072 is 2^17 since CPR latitude and longitude are encoded in 17 bits.
52
+			$cprlat = intval(substr($bin,54,17),2)/131072.0;
53
+			$cprlon = intval(substr($bin,71,17),2)/131072.0;
54
+			if ($oe == 0) $this::$latlon[$icao] = array('latitude' => $cprlat,'longitude' => $cprlon,'created' => time());
55
+			elseif (isset($this::$latlon[$icao]) && (time() - $this::$latlon[$icao]['created']) < 10) {
56 56
 			$cprlat_odd = $cprlat;
57 57
 			$cprlon_odd = $cprlon;
58 58
 			$cprlat_even = $this::$latlon[$icao]['latitude'];
@@ -65,56 +65,56 @@  discard block
 block discarded – undo
65 65
 			if ($lat_odd >= 270) $lat_odd = $lat_odd - 360;
66 66
 			// check latitude zone
67 67
 			if ($this->cprNL($lat_even) == $this->cprNL($lat_odd)) {
68
-			    if ($this::$latlon[$icao]['created'] > time()) {
68
+				if ($this::$latlon[$icao]['created'] > time()) {
69 69
 				$ni = $this->cprN($lat_even,0);
70 70
 				$m = floor($cprlon_even*($this->cprNL($lat_even)-1) - $cprlon_odd * $this->cprNL($lat_even)+0.5);
71 71
 				$lon = (360.0/$ni)*($m%$ni+$cprlon_even);
72 72
 				$lat = $lat_even;
73 73
 				if ($lon > 180) $lon = $lon -360;
74 74
 				if ($lat > -91 && $lat < 91 && $lon > -181 && $lon < 181) {
75
-				    //if ($globalDebug) echo 'cs : '.$cs.' - hex : '.$hex.' - lat : '.$lat.' - lon : '.$lon;
76
-				    $data['latitude'] = $lat;
77
-				    $data['longitude'] = $lon;
75
+					//if ($globalDebug) echo 'cs : '.$cs.' - hex : '.$hex.' - lat : '.$lat.' - lon : '.$lon;
76
+					$data['latitude'] = $lat;
77
+					$data['longitude'] = $lon;
78 78
 				}
79
-			    } else {
79
+				} else {
80 80
 				$ni = $this->cprN($lat_odd,1);
81 81
 				$m = floor($cprlon_even*($this->cprNL($lat_odd)-1) - $cprlon_odd * $this->cprNL($lat_odd)+0.5);
82 82
 				$lon = (360.0/$ni)*($m%$ni+$cprlon_odd);
83 83
 				$lat = $lat_odd;
84 84
 				if ($lon > 180) $lon = $lon -360;
85 85
 				if ($lat > -91 && $lat < 91 && $lon > -181 && $lon < 181) {
86
-				    //if ($globalDebug) echo 'icao : '.$icao.' - hex : '.$hex.' - lat : '.$lat.' - lon : '.$lon.' second'."\n";
87
-				    $data['latitude'] = $lat;
88
-				    $data['longitude'] = $lon;
86
+					//if ($globalDebug) echo 'icao : '.$icao.' - hex : '.$hex.' - lat : '.$lat.' - lon : '.$lon.' second'."\n";
87
+					$data['latitude'] = $lat;
88
+					$data['longitude'] = $lon;
89
+				}
89 90
 				}
90
-			    }
91 91
 			} else echo "Not cprNL";
92 92
 			unset($this::$latlon[$icao]);
93
-		    }
93
+			}
94 94
 		} elseif ($tc == 19) {
95
-		    // speed & heading
96
-		    $v_ew_dir = intval(substr($bin,45,1));
97
-		    $v_ew = intval(substr($bin,46,10),2);
98
-		    $v_ns_dir = intval(substr($bin,56,1));
99
-		    $v_ns = intval(substr($bin,57,10),2);
100
-		    if ($v_ew_dir) $v_ew = -1*$v_ew;
101
-		    if ($v_ns_dir) $v_ns = -1*$v_ns;
102
-		    $speed = sqrt($v_ns*$v_ns+$v_ew*$v_ew);
103
-		    $heading = atan2($v_ew,$v_ns)*360.0/(2*pi());
104
-		    if ($heading <0) $heading = $heading+360;
105
-		    $data['speed'] = $speed;
106
-		    $data['heading'] = $heading;
95
+			// speed & heading
96
+			$v_ew_dir = intval(substr($bin,45,1));
97
+			$v_ew = intval(substr($bin,46,10),2);
98
+			$v_ns_dir = intval(substr($bin,56,1));
99
+			$v_ns = intval(substr($bin,57,10),2);
100
+			if ($v_ew_dir) $v_ew = -1*$v_ew;
101
+			if ($v_ns_dir) $v_ns = -1*$v_ns;
102
+			$speed = sqrt($v_ns*$v_ns+$v_ew*$v_ew);
103
+			$heading = atan2($v_ew,$v_ns)*360.0/(2*pi());
104
+			if ($heading <0) $heading = $heading+360;
105
+			$data['speed'] = $speed;
106
+			$data['heading'] = $heading;
107
+		}
107 108
 		}
108
-	    }
109
-	    if (isset($data)) {
109
+		if (isset($data)) {
110 110
 		//print_r($data);
111 111
 		return $data;
112
-	    }
113
-        }
114
-    }
112
+		}
113
+		}
114
+	}
115 115
 
116 116
 
117
-    function cprNL($lat) {
117
+	function cprNL($lat) {
118 118
 	//Lookup table to convert the latitude to index.
119 119
 	if ($lat < 0) $lat = -$lat;             // Table is simmetric about the equator.
120 120
 	if ($lat < 10.47047130) return 59;
@@ -176,16 +176,16 @@  discard block
 block discarded – undo
176 176
 	if ($lat < 86.53536998) return 3;
177 177
 	if ($lat < 87.00000000) return 2;
178 178
 	return 1;
179
-    }
179
+	}
180 180
     
181
-    function cprN($lat,$isodd) {
181
+	function cprN($lat,$isodd) {
182 182
 	$nl = $this->cprNL($lat) - $isodd;
183 183
 	if ($nl > 1) return $nl;
184 184
 	else return 1;
185
-    }
185
+	}
186 186
 
187 187
 
188
-    function parityCheck($msg, $bin) {
188
+	function parityCheck($msg, $bin) {
189 189
 $modes_checksum_table = array(
190 190
 0x3935ea, 0x1c9af5, 0xf1b77e, 0x78dbbf, 0xc397db, 0x9e31e9, 0xb0e2f0, 0x587178,
191 191
 0x2c38bc, 0x161c5e, 0x0b0e2f, 0xfa7d13, 0x82c48d, 0xbe9842, 0x5f4c21, 0xd05c14,
@@ -207,13 +207,13 @@  discard block
 block discarded – undo
207 207
 	$checksum = intval(substr($msg,22,6),16);
208 208
 
209 209
 	for ($j = 0; $j < strlen($bin); $j++) {
210
-	    if ($bin[$j]) $crc = $crc^intval($modes_checksum_table[$j],0);
210
+		if ($bin[$j]) $crc = $crc^intval($modes_checksum_table[$j],0);
211 211
 	}
212 212
 	if ($crc == $checksum) return true;
213 213
 	else {
214
-	    //echo "**** CRC ERROR ****\n";
215
-	    return false;
214
+		//echo "**** CRC ERROR ****\n";
215
+		return false;
216
+	}
216 217
 	}
217
-    }
218 218
 }
219 219
 ?>
Please login to merge, or discard this patch.
require/class.Stats.php 1 patch
Indentation   +685 added lines, -685 removed lines patch added patch discarded remove patch
@@ -8,199 +8,199 @@  discard block
 block discarded – undo
8 8
 require_once(dirname(__FILE__).'/class.Common.php');
9 9
 class Stats {
10 10
 	public $db;
11
-        function __construct($dbc = null) {
11
+		function __construct($dbc = null) {
12 12
 		$Connection = new Connection($dbc);
13 13
 		$this->db = $Connection->db;
14
-        }
14
+		}
15 15
               
16 16
 	public function addLastStatsUpdate($type,$stats_date) {
17
-                $query = "DELETE FROM config WHERE name = :type;
17
+				$query = "DELETE FROM config WHERE name = :type;
18 18
             		INSERT INTO config (name,value) VALUES (:type,:stats_date);";
19
-                $query_values = array('type' => $type,':stats_date' => $stats_date);
20
-                 try {
21
-                        $sth = $this->db->prepare($query);
22
-                        $sth->execute($query_values);
23
-                } catch(PDOException $e) {
24
-                        return "error : ".$e->getMessage();
25
-                }
26
-        }
19
+				$query_values = array('type' => $type,':stats_date' => $stats_date);
20
+				 try {
21
+						$sth = $this->db->prepare($query);
22
+						$sth->execute($query_values);
23
+				} catch(PDOException $e) {
24
+						return "error : ".$e->getMessage();
25
+				}
26
+		}
27 27
 
28 28
 	public function getLastStatsUpdate($type = 'last_update_stats') {
29
-                $query = "SELECT value FROM config WHERE name = :type";
30
-                 try {
31
-                        $sth = $this->db->prepare($query);
32
-                        $sth->execute(array(':type' => $type));
33
-                } catch(PDOException $e) {
34
-                        echo "error : ".$e->getMessage();
35
-                }
36
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
37
-                return $all;
38
-        }
29
+				$query = "SELECT value FROM config WHERE name = :type";
30
+				 try {
31
+						$sth = $this->db->prepare($query);
32
+						$sth->execute(array(':type' => $type));
33
+				} catch(PDOException $e) {
34
+						echo "error : ".$e->getMessage();
35
+				}
36
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
37
+				return $all;
38
+		}
39 39
 	public function getAllAirlineNames($airline_type = '') {
40
-                $query = "SELECT * FROM stats_airline ORDER BY airline_name ASC";
41
-                 try {
42
-                        $sth = $this->db->prepare($query);
43
-                        $sth->execute();
44
-                } catch(PDOException $e) {
45
-                        echo "error : ".$e->getMessage();
46
-                }
47
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
48
-                return $all;
49
-        }
40
+				$query = "SELECT * FROM stats_airline ORDER BY airline_name ASC";
41
+				 try {
42
+						$sth = $this->db->prepare($query);
43
+						$sth->execute();
44
+				} catch(PDOException $e) {
45
+						echo "error : ".$e->getMessage();
46
+				}
47
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
48
+				return $all;
49
+		}
50 50
 	public function getAllAircraftTypes() {
51
-                $query = "SELECT * FROM stats_aircraft ORDER BY aircraft_name ASC";
52
-                 try {
53
-                        $sth = $this->db->prepare($query);
54
-                        $sth->execute();
55
-                } catch(PDOException $e) {
56
-                        echo "error : ".$e->getMessage();
57
-                }
58
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
59
-                return $all;
60
-        }
51
+				$query = "SELECT * FROM stats_aircraft ORDER BY aircraft_name ASC";
52
+				 try {
53
+						$sth = $this->db->prepare($query);
54
+						$sth->execute();
55
+				} catch(PDOException $e) {
56
+						echo "error : ".$e->getMessage();
57
+				}
58
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
59
+				return $all;
60
+		}
61 61
 	public function getAllAirportNames() {
62
-                $query = "SELECT airport_icao, airport_name,airport_city,airport_country FROM stats_airport GROUP BY airport_icao,airport_name,airport_city,airport_country ORDER BY airport_city ASC";
63
-                 try {
64
-                        $sth = $this->db->prepare($query);
65
-                        $sth->execute();
66
-                } catch(PDOException $e) {
67
-                        echo "error : ".$e->getMessage();
68
-                }
69
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
70
-                return $all;
71
-        }
62
+				$query = "SELECT airport_icao, airport_name,airport_city,airport_country FROM stats_airport GROUP BY airport_icao,airport_name,airport_city,airport_country ORDER BY airport_city ASC";
63
+				 try {
64
+						$sth = $this->db->prepare($query);
65
+						$sth->execute();
66
+				} catch(PDOException $e) {
67
+						echo "error : ".$e->getMessage();
68
+				}
69
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
70
+				return $all;
71
+		}
72 72
 
73 73
 
74 74
 	public function countAllAircraftTypes($limit = true) {
75 75
 		if ($limit) $query = "SELECT aircraft_icao, cnt AS aircraft_icao_count, aircraft_name FROM stats_aircraft WHERE aircraft_name <> '' AND aircraft_icao <> '' ORDER BY aircraft_icao_count DESC LIMIT 10 OFFSET 0";
76 76
 		else $query = "SELECT aircraft_icao, cnt AS aircraft_icao_count, aircraft_name FROM stats_aircraft WHERE aircraft_name <> '' AND aircraft_icao <> '' ORDER BY aircraft_icao_count DESC";
77
-                 try {
78
-                        $sth = $this->db->prepare($query);
79
-                        $sth->execute();
80
-                } catch(PDOException $e) {
81
-                        echo "error : ".$e->getMessage();
82
-                }
83
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
84
-                if (empty($all)) {
85
-            	    $Spotter = new Spotter($this->db);
86
-            	    $all = $Spotter->countAllAircraftTypes($limit);
87
-                }
88
-                return $all;
77
+				 try {
78
+						$sth = $this->db->prepare($query);
79
+						$sth->execute();
80
+				} catch(PDOException $e) {
81
+						echo "error : ".$e->getMessage();
82
+				}
83
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
84
+				if (empty($all)) {
85
+					$Spotter = new Spotter($this->db);
86
+					$all = $Spotter->countAllAircraftTypes($limit);
87
+				}
88
+				return $all;
89 89
 	}
90 90
 	public function countAllAirlineCountries($limit = true) {
91 91
 		if ($limit) $query = "SELECT airlines.country AS airline_country, SUM(stats_airline.cnt) as airline_country_count FROM stats_airline,airlines WHERE stats_airline.airline_icao=airlines.icao GROUP BY airline_country ORDER BY airline_country_count DESC LIMIT 10 OFFSET 0";
92 92
 		else $query = "SELECT airlines.country AS airline_country, SUM(stats_airline.cnt) as airline_country_count FROM stats_airline,airlines WHERE stats_airline.airline_icao=airlines.icao GROUP BY airline_country ORDER BY airline_country_count DESC";
93
-                 try {
94
-                        $sth = $this->db->prepare($query);
95
-                        $sth->execute();
96
-                } catch(PDOException $e) {
97
-                        echo "error : ".$e->getMessage();
98
-                }
99
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
100
-                if (empty($all)) {
101
-            		$Spotter = new Spotter($this->db);
102
-            		$all = $Spotter->countAllAirlineCountries($limit);
93
+				 try {
94
+						$sth = $this->db->prepare($query);
95
+						$sth->execute();
96
+				} catch(PDOException $e) {
97
+						echo "error : ".$e->getMessage();
98
+				}
99
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
100
+				if (empty($all)) {
101
+					$Spotter = new Spotter($this->db);
102
+					$all = $Spotter->countAllAirlineCountries($limit);
103 103
                 
104
-                }
105
-                return $all;
104
+				}
105
+				return $all;
106 106
 	}
107 107
 	public function countAllAircraftManufacturers($limit = true) {
108 108
 		if ($limit) $query = "SELECT aircraft.manufacturer AS aircraft_manufacturer, SUM(stats_aircraft.cnt) as aircraft_manufacturer_count FROM stats_aircraft,aircraft WHERE stats_aircraft.aircraft_icao=aircraft.icao GROUP BY aircraft.manufacturer ORDER BY aircraft_manufacturer_count DESC LIMIT 10 OFFSET 0";
109 109
 		else $query = "SELECT aircraft.manufacturer AS aircraft_manufacturer, SUM(stats_aircraft.cnt) as aircraft_manufacturer_count FROM stats_aircraft,aircraft WHERE stats_aircraft.aircraft_icao=aircraft.icao GROUP BY aircraft.manufacturer ORDER BY aircraft_manufacturer_count DESC";
110
-                 try {
111
-                        $sth = $this->db->prepare($query);
112
-                        $sth->execute();
113
-                } catch(PDOException $e) {
114
-                        echo "error : ".$e->getMessage();
115
-                }
116
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
117
-                if (empty($all)) {
118
-            		$Spotter = new Spotter($this->db);
110
+				 try {
111
+						$sth = $this->db->prepare($query);
112
+						$sth->execute();
113
+				} catch(PDOException $e) {
114
+						echo "error : ".$e->getMessage();
115
+				}
116
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
117
+				if (empty($all)) {
118
+					$Spotter = new Spotter($this->db);
119 119
 			$all = $Spotter->countAllAircraftManufacturers($limit);
120
-                }
121
-                return $all;
120
+				}
121
+				return $all;
122 122
 	}
123 123
 
124 124
 	public function countAllArrivalCountries($limit = true) {
125 125
 		if ($limit) $query = "SELECT airport_country AS arrival_airport_country, arrival as airport_arrival_country_count FROM stats_airport WHERE stats_type = 'yearly' LIMIT 10 OFFSET 0";
126 126
 		else $query = "SELECT airport_country AS arrival_airport_country, arrival as airport_arrival_country_count FROM stats_airport WHERE stats_type = 'yearly'";
127
-                 try {
128
-                        $sth = $this->db->prepare($query);
129
-                        $sth->execute();
130
-                } catch(PDOException $e) {
131
-                        echo "error : ".$e->getMessage();
132
-                }
133
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
134
-                if (empty($all)) {
135
-	                $Spotter = new Spotter($this->db);
136
-            		$all = $Spotter->countAllArrivalCountries($limit);
137
-                }
138
-                return $all;
127
+				 try {
128
+						$sth = $this->db->prepare($query);
129
+						$sth->execute();
130
+				} catch(PDOException $e) {
131
+						echo "error : ".$e->getMessage();
132
+				}
133
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
134
+				if (empty($all)) {
135
+					$Spotter = new Spotter($this->db);
136
+					$all = $Spotter->countAllArrivalCountries($limit);
137
+				}
138
+				return $all;
139 139
 	}
140 140
 	public function countAllDepartureCountries($limit = true) {
141 141
 		if ($limit) $query = "SELECT airport_country AS departure_airport_country, departure as airport_departure_country_count FROM stats_airport WHERE stats_type = 'yearly' LIMIT 10 OFFSET 0";
142 142
 		else $query = "SELECT airport_country AS departure_airport_country, departure as airport_departure_country_count FROM stats_airport WHERE stats_type = 'yearly'";
143
-                 try {
144
-                        $sth = $this->db->prepare($query);
145
-                        $sth->execute();
146
-                } catch(PDOException $e) {
147
-                        echo "error : ".$e->getMessage();
148
-                }
149
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
150
-                if (empty($all)) {
151
-		        $Spotter = new Spotter($this->db);
152
-    	    	        $all = $Spotter->countAllDepartureCountries($limit);
153
-                }
154
-                return $all;
143
+				 try {
144
+						$sth = $this->db->prepare($query);
145
+						$sth->execute();
146
+				} catch(PDOException $e) {
147
+						echo "error : ".$e->getMessage();
148
+				}
149
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
150
+				if (empty($all)) {
151
+				$Spotter = new Spotter($this->db);
152
+						$all = $Spotter->countAllDepartureCountries($limit);
153
+				}
154
+				return $all;
155 155
 	}
156 156
 
157 157
 	public function countAllAirlines($limit = true) {
158 158
 		if ($limit) $query = "SELECT stats_airline.airline_icao, stats_airline.cnt AS airline_count, stats_airline.airline_name, airlines.country as airline_country FROM stats_airline, airlines WHERE stats_airline.airline_name <> '' AND stats_airline.airline_icao <> '' AND airlines.icao = airline_icao ORDER BY airline_count DESC LIMIT 10 OFFSET 0";
159 159
 		else $query = "SELECT stats_airline.airline_icao, stats_airline.cnt AS airline_count, stats_airline.airline_name, airlines.country as airline_country FROM stats_airline, airlines WHERE stats_airline.airline_name <> '' AND stats_airline.airline_icao <> '' AND airlines.icao = airline_icao ORDER BY airline_count DESC";
160
-                 try {
161
-                        $sth = $this->db->prepare($query);
162
-                        $sth->execute();
163
-                } catch(PDOException $e) {
164
-                        echo "error : ".$e->getMessage();
165
-                }
166
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
167
-                if (empty($all)) {
168
-	                $Spotter = new Spotter($this->db);
169
-    		        $all = $Spotter->countAllAirlines($limit);
170
-                }
171
-                return $all;
160
+				 try {
161
+						$sth = $this->db->prepare($query);
162
+						$sth->execute();
163
+				} catch(PDOException $e) {
164
+						echo "error : ".$e->getMessage();
165
+				}
166
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
167
+				if (empty($all)) {
168
+					$Spotter = new Spotter($this->db);
169
+					$all = $Spotter->countAllAirlines($limit);
170
+				}
171
+				return $all;
172 172
 	}
173 173
 	public function countAllAircraftRegistrations($limit = true) {
174 174
 		if ($limit) $query = "SELECT s.aircraft_icao, s.cnt AS aircraft_registration_count, a.type AS aircraft_name, s.registration FROM stats_registration s, aircraft a WHERE s.registration <> '' AND a.icao = s.aircraft_icao ORDER BY aircraft_registration_count DESC LIMIT 10 OFFSET 0";
175 175
 		else $query = "SELECT s.aircraft_icao, s.cnt AS aircraft_registration_count, a.type AS aircraft_name FROM stats_registration s, aircraft a WHERE s.registration <> '' AND a.icao = s.aircraft_icao ORDER BY aircraft_registration_count DESC";
176
-                 try {
177
-                        $sth = $this->db->prepare($query);
178
-                        $sth->execute();
179
-                } catch(PDOException $e) {
180
-                        echo "error : ".$e->getMessage();
181
-                }
182
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
183
-                if (empty($all)) {
184
-	                $Spotter = new Spotter($this->db);
185
-    		        $all = $Spotter->countAllAircraftRegistrations($limit);
186
-                }
187
-                return $all;
176
+				 try {
177
+						$sth = $this->db->prepare($query);
178
+						$sth->execute();
179
+				} catch(PDOException $e) {
180
+						echo "error : ".$e->getMessage();
181
+				}
182
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
183
+				if (empty($all)) {
184
+					$Spotter = new Spotter($this->db);
185
+					$all = $Spotter->countAllAircraftRegistrations($limit);
186
+				}
187
+				return $all;
188 188
 	}
189 189
 	public function countAllCallsigns($limit = true) {
190 190
 		if ($limit) $query = "SELECT s.callsign_icao, s.cnt AS callsign_icao_count, a.name AS airline_name, a.icao as airline_icao FROM stats_callsign s, airlines a WHERE s.callsign_icao <> '' AND a.icao = s.airline_icao ORDER BY callsign_icao_count DESC LIMIT 10 OFFSET 0";
191 191
 		else $query = "SELECT s.callsign_icao, s.cnt AS callsign_icao_count, a.name AS airline_name, a.icao as airline_icao FROM stats_callsign s, airlines a WHERE s.callsign_icao <> '' AND a.icao = s.airline_icao ORDER BY callsign_icao_count DESC";
192
-                 try {
193
-                        $sth = $this->db->prepare($query);
194
-                        $sth->execute();
195
-                } catch(PDOException $e) {
196
-                        echo "error : ".$e->getMessage();
197
-                }
198
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
199
-                if (empty($all)) {
200
-	                $Spotter = new Spotter($this->db);
201
-    		        $all = $Spotter->countAllCallsigns($limit);
202
-                }
203
-                return $all;
192
+				 try {
193
+						$sth = $this->db->prepare($query);
194
+						$sth->execute();
195
+				} catch(PDOException $e) {
196
+						echo "error : ".$e->getMessage();
197
+				}
198
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
199
+				if (empty($all)) {
200
+					$Spotter = new Spotter($this->db);
201
+					$all = $Spotter->countAllCallsigns($limit);
202
+				}
203
+				return $all;
204 204
 	}
205 205
 	public function countAllFlightOverCountries($limit = true) {
206 206
 		$Connection = new Connection();
@@ -214,7 +214,7 @@  discard block
 block discarded – undo
214 214
 				echo "error : ".$e->getMessage();
215 215
 			}
216 216
 			$all = $sth->fetchAll(PDO::FETCH_ASSOC);
217
-                /*
217
+				/*
218 218
                 if (empty($all)) {
219 219
 	                $Spotter = new Spotter($this->db);
220 220
     		        $all = $Spotter->countAllFlightOverCountries($limit);
@@ -228,102 +228,102 @@  discard block
 block discarded – undo
228 228
 	public function countAllPilots($limit = true) {
229 229
 		if ($limit) $query = "SELECT pilot_id, cnt AS pilot_count, pilot_name FROM stats_pilot ORDER BY pilot_count DESC LIMIT 10 OFFSET 0";
230 230
 		else $query = "SELECT pilot_id, cnt AS pilot_count, pilot_name FROM stats_pilot ORDER BY pilot_count DESC";
231
-                 try {
232
-                        $sth = $this->db->prepare($query);
233
-                        $sth->execute();
234
-                } catch(PDOException $e) {
235
-                        echo "error : ".$e->getMessage();
236
-                }
237
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
238
-                if (empty($all)) {
239
-            		$Spotter = new Spotter($this->db);
240
-            		$all = $Spotter->countAllPilots($limit);
241
-                }
242
-                return $all;
231
+				 try {
232
+						$sth = $this->db->prepare($query);
233
+						$sth->execute();
234
+				} catch(PDOException $e) {
235
+						echo "error : ".$e->getMessage();
236
+				}
237
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
238
+				if (empty($all)) {
239
+					$Spotter = new Spotter($this->db);
240
+					$all = $Spotter->countAllPilots($limit);
241
+				}
242
+				return $all;
243 243
 	}
244 244
 	public function countAllOwners($limit = true) {
245 245
 		if ($limit) $query = "SELECT owner_name, cnt AS owner_count FROM stats_owner ORDER BY owner_count DESC LIMIT 10 OFFSET 0";
246 246
 		else $query = "SELECT owner_name, cnt AS owner_count FROM stats_owner ORDER BY owner_count DESC";
247
-                 try {
248
-                        $sth = $this->db->prepare($query);
249
-                        $sth->execute();
250
-                } catch(PDOException $e) {
251
-                        echo "error : ".$e->getMessage();
252
-                }
253
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
254
-                if (empty($all)) {
255
-            		$Spotter = new Spotter($this->db);
256
-            		$all = $Spotter->countAllOwners($limit);
257
-                }
258
-                return $all;
247
+				 try {
248
+						$sth = $this->db->prepare($query);
249
+						$sth->execute();
250
+				} catch(PDOException $e) {
251
+						echo "error : ".$e->getMessage();
252
+				}
253
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
254
+				if (empty($all)) {
255
+					$Spotter = new Spotter($this->db);
256
+					$all = $Spotter->countAllOwners($limit);
257
+				}
258
+				return $all;
259 259
 	}
260 260
 	public function countAllDepartureAirports($limit = true) {
261 261
 		if ($limit) $query = "SELECT airport_icao AS airport_departure_icao,airport_city AS airport_departure_city,airport_country AS airport_departure_country,departure AS airport_departure_icao_count FROM stats_airport WHERE stats_type = 'yearly' LIMIT 10 OFFSET 0";
262 262
 		else $query = "SELECT airport_icao AS airport_departure_icao,airport_city AS airport_departure_city,airport_country AS airport_departure_country,departure AS airport_departure_icao_count FROM stats_airport WHERE stats_type = 'yearly'";
263
-                 try {
264
-                        $sth = $this->db->prepare($query);
265
-                        $sth->execute();
266
-                } catch(PDOException $e) {
267
-                        echo "error : ".$e->getMessage();
268
-                }
269
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
270
-                if (empty($all)) {
271
-            		$Spotter = new Spotter($this->db);
272
-            		$pall = $Spotter->countAllDepartureAirports($limit);
273
-        		$dall = $Spotter->countAllDetectedDepartureAirports($limit);
274
-        		$all = array();
275
-        		foreach ($pall as $value) {
276
-        			$icao = $value['airport_departure_icao'];
277
-        			$all[$icao] = $value;
278
-        		}
263
+				 try {
264
+						$sth = $this->db->prepare($query);
265
+						$sth->execute();
266
+				} catch(PDOException $e) {
267
+						echo "error : ".$e->getMessage();
268
+				}
269
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
270
+				if (empty($all)) {
271
+					$Spotter = new Spotter($this->db);
272
+					$pall = $Spotter->countAllDepartureAirports($limit);
273
+				$dall = $Spotter->countAllDetectedDepartureAirports($limit);
274
+				$all = array();
275
+				foreach ($pall as $value) {
276
+					$icao = $value['airport_departure_icao'];
277
+					$all[$icao] = $value;
278
+				}
279 279
         		
280
-        		foreach ($dall as $value) {
281
-        			$icao = $value['airport_departure_icao'];
282
-        			if (isset($all[$icao])) {                                                           
283
-        				$all[$icao]['airport_departure_icao_count'] = $all[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
284
-        			} else $all[$icao] = $value;
285
-        		}
286
-        		$count = array();
287
-        		foreach ($all as $key => $row) {
288
-        			$count[$key] = $row['airport_departure_icao_count'];
289
-        		}
290
-        		array_multisort($count,SORT_DESC,$all);
291
-                }
292
-                return $all;
280
+				foreach ($dall as $value) {
281
+					$icao = $value['airport_departure_icao'];
282
+					if (isset($all[$icao])) {                                                           
283
+						$all[$icao]['airport_departure_icao_count'] = $all[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
284
+					} else $all[$icao] = $value;
285
+				}
286
+				$count = array();
287
+				foreach ($all as $key => $row) {
288
+					$count[$key] = $row['airport_departure_icao_count'];
289
+				}
290
+				array_multisort($count,SORT_DESC,$all);
291
+				}
292
+				return $all;
293 293
 	}
294 294
 	public function countAllArrivalAirports($limit = true) {
295 295
 		if ($limit) $query = "SELECT airport_icao AS airport_arrival_icao,airport_city AS airport_arrival_city,airport_country AS airport_arrival_country,arrival AS airport_arrival_icao_count FROM stats_airport WHERE stats_type = 'yearly' LIMIT 10 OFFSET 0";
296 296
 		else $query = "SELECT airport_icao AS airport_arrival_icao,airport_city AS airport_arrival_city,airport_country AS airport_arrival_country,arrival AS airport_arrival_icao_count FROM stats_airport WHERE stats_type = 'yearly'";
297
-                 try {
298
-                        $sth = $this->db->prepare($query);
299
-                        $sth->execute();
300
-                } catch(PDOException $e) {
301
-                        echo "error : ".$e->getMessage();
302
-                }
303
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
304
-                if (empty($all)) {
305
-            		$Spotter = new Spotter($this->db);
306
-        		$pall = $Spotter->countAllArrivalAirports($limit);
307
-        		$dall = $Spotter->countAllDetectedArrivalAirports($limit);
308
-        		$all = array();
309
-        		foreach ($pall as $value) {
310
-        			$icao = $value['airport_arrival_icao'];
311
-        			$all[$icao] = $value;
312
-        		}
297
+				 try {
298
+						$sth = $this->db->prepare($query);
299
+						$sth->execute();
300
+				} catch(PDOException $e) {
301
+						echo "error : ".$e->getMessage();
302
+				}
303
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
304
+				if (empty($all)) {
305
+					$Spotter = new Spotter($this->db);
306
+				$pall = $Spotter->countAllArrivalAirports($limit);
307
+				$dall = $Spotter->countAllDetectedArrivalAirports($limit);
308
+				$all = array();
309
+				foreach ($pall as $value) {
310
+					$icao = $value['airport_arrival_icao'];
311
+					$all[$icao] = $value;
312
+				}
313 313
         		
314
-        		foreach ($dall as $value) {
315
-        			$icao = $value['airport_arrival_icao'];
316
-        			if (isset($all[$icao])) {
317
-        				$all[$icao]['airport_arrival_icao_count'] = $all[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
318
-        			} else $all[$icao] = $value;
319
-        		}
320
-        		$count = array();
321
-        		foreach ($all as $key => $row) {
322
-        			$count[$key] = $row['airport_arrival_icao_count'];
323
-        		}
324
-        		array_multisort($count,SORT_DESC,$all);
325
-                }
326
-                return $all;
314
+				foreach ($dall as $value) {
315
+					$icao = $value['airport_arrival_icao'];
316
+					if (isset($all[$icao])) {
317
+						$all[$icao]['airport_arrival_icao_count'] = $all[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
318
+					} else $all[$icao] = $value;
319
+				}
320
+				$count = array();
321
+				foreach ($all as $key => $row) {
322
+					$count[$key] = $row['airport_arrival_icao_count'];
323
+				}
324
+				array_multisort($count,SORT_DESC,$all);
325
+				}
326
+				return $all;
327 327
 	}
328 328
 	public function countAllMonthsLastYear($limit = true) {
329 329
 		global $globalDBdriver;
@@ -335,35 +335,35 @@  discard block
 block discarded – undo
335 335
 			else $query = "SELECT EXTRACT(MONTH FROM stats_date) as month_name, EXTRACT(YEAR FROM stats_date) as year_name, cnt as date_count FROM stats WHERE stats_type = 'flights_bymonth'";
336 336
 		}
337 337
 		$query_data = array();
338
-                 try {
339
-                        $sth = $this->db->prepare($query);
340
-                        $sth->execute($query_data);
341
-                } catch(PDOException $e) {
342
-                        echo "error : ".$e->getMessage();
343
-                }
344
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
345
-                if (empty($all)) {
346
-            		$Spotter = new Spotter($this->db);
347
-            		$all = $Spotter->countAllMonthsLastYear($limit);
348
-                }
349
-                return $all;
338
+				 try {
339
+						$sth = $this->db->prepare($query);
340
+						$sth->execute($query_data);
341
+				} catch(PDOException $e) {
342
+						echo "error : ".$e->getMessage();
343
+				}
344
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
345
+				if (empty($all)) {
346
+					$Spotter = new Spotter($this->db);
347
+					$all = $Spotter->countAllMonthsLastYear($limit);
348
+				}
349
+				return $all;
350 350
 	}
351 351
 	
352 352
 	public function countAllDatesLastMonth() {
353 353
 		$query = "SELECT flight_date as date_name, cnt as date_count FROM stats_flight WHERE stats_type = 'month'";
354 354
 		$query_data = array();
355
-                 try {
356
-                        $sth = $this->db->prepare($query);
357
-                        $sth->execute($query_data);
358
-                } catch(PDOException $e) {
359
-                        echo "error : ".$e->getMessage();
360
-                }
361
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
362
-                if (empty($all)) {
363
-            		$Spotter = new Spotter($this->db);
364
-            		$all = $Spotter->countAllDatesLastMonth();
365
-                }
366
-                return $all;
355
+				 try {
356
+						$sth = $this->db->prepare($query);
357
+						$sth->execute($query_data);
358
+				} catch(PDOException $e) {
359
+						echo "error : ".$e->getMessage();
360
+				}
361
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
362
+				if (empty($all)) {
363
+					$Spotter = new Spotter($this->db);
364
+					$all = $Spotter->countAllDatesLastMonth();
365
+				}
366
+				return $all;
367 367
 	}
368 368
 	public function countAllDatesLast7Days() {
369 369
 		global $globalDBdriver;
@@ -373,64 +373,64 @@  discard block
 block discarded – undo
373 373
 			$query = "SELECT flight_date as date_name, cnt as date_count FROM stats_flight WHERE stats_type = 'month' AND flight_date::timestamp >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '7 DAYS'";
374 374
 		}
375 375
 		$query_data = array();
376
-                 try {
377
-                        $sth = $this->db->prepare($query);
378
-                        $sth->execute($query_data);
379
-                } catch(PDOException $e) {
380
-                        echo "error : ".$e->getMessage();
381
-                }
382
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
383
-                if (empty($all)) {
384
-            		$Spotter = new Spotter($this->db);
385
-            		$all = $Spotter->countAllDatesLast7Days();
386
-                }
387
-                return $all;
376
+				 try {
377
+						$sth = $this->db->prepare($query);
378
+						$sth->execute($query_data);
379
+				} catch(PDOException $e) {
380
+						echo "error : ".$e->getMessage();
381
+				}
382
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
383
+				if (empty($all)) {
384
+					$Spotter = new Spotter($this->db);
385
+					$all = $Spotter->countAllDatesLast7Days();
386
+				}
387
+				return $all;
388 388
 	}
389 389
 	public function countAllDates() {
390 390
 		$query = "SELECT flight_date as date_name, cnt as date_count FROM stats_flight WHERE stats_type = 'date'";
391 391
 		$query_data = array();
392
-                 try {
393
-                        $sth = $this->db->prepare($query);
394
-                        $sth->execute($query_data);
395
-                } catch(PDOException $e) {
396
-                        echo "error : ".$e->getMessage();
397
-                }
398
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
399
-                if (empty($all)) {
400
-            		$Spotter = new Spotter($this->db);
401
-            		$all = $Spotter->countAllDates();
402
-                }
403
-                return $all;
392
+				 try {
393
+						$sth = $this->db->prepare($query);
394
+						$sth->execute($query_data);
395
+				} catch(PDOException $e) {
396
+						echo "error : ".$e->getMessage();
397
+				}
398
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
399
+				if (empty($all)) {
400
+					$Spotter = new Spotter($this->db);
401
+					$all = $Spotter->countAllDates();
402
+				}
403
+				return $all;
404 404
 	}
405 405
 	public function countAllMonths() {
406
-	    	$query = "SELECT YEAR(stats_date) AS year_name,MONTH(stats_date) AS month_name, cnt as date_count FROM stats WHERE stats_type = 'flights_bymonth'";
407
-                 try {
408
-                        $sth = $this->db->prepare($query);
409
-                        $sth->execute();
410
-                } catch(PDOException $e) {
411
-                        echo "error : ".$e->getMessage();
412
-                }
413
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
414
-                if (empty($all)) {
415
-            		$Spotter = new Spotter($this->db);
416
-            		$all = $Spotter->countAllMonths();
417
-                }
418
-                return $all;
406
+			$query = "SELECT YEAR(stats_date) AS year_name,MONTH(stats_date) AS month_name, cnt as date_count FROM stats WHERE stats_type = 'flights_bymonth'";
407
+				 try {
408
+						$sth = $this->db->prepare($query);
409
+						$sth->execute();
410
+				} catch(PDOException $e) {
411
+						echo "error : ".$e->getMessage();
412
+				}
413
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
414
+				if (empty($all)) {
415
+					$Spotter = new Spotter($this->db);
416
+					$all = $Spotter->countAllMonths();
417
+				}
418
+				return $all;
419 419
 	}
420 420
 	public function countAllMilitaryMonths() {
421
-	    	$query = "SELECT YEAR(stats_date) AS year_name,MONTH(stats_date) AS month_name, cnt as date_count FROM stats WHERE stats_type = 'military_flights_bymonth'";
422
-                 try {
423
-                        $sth = $this->db->prepare($query);
424
-                        $sth->execute();
425
-                } catch(PDOException $e) {
426
-                        echo "error : ".$e->getMessage();
427
-                }
428
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
429
-                if (empty($all)) {
430
-            		$Spotter = new Spotter($this->db);
431
-            		$all = $Spotter->countAllMilitaryMonths();
432
-                }
433
-                return $all;
421
+			$query = "SELECT YEAR(stats_date) AS year_name,MONTH(stats_date) AS month_name, cnt as date_count FROM stats WHERE stats_type = 'military_flights_bymonth'";
422
+				 try {
423
+						$sth = $this->db->prepare($query);
424
+						$sth->execute();
425
+				} catch(PDOException $e) {
426
+						echo "error : ".$e->getMessage();
427
+				}
428
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
429
+				if (empty($all)) {
430
+					$Spotter = new Spotter($this->db);
431
+					$all = $Spotter->countAllMilitaryMonths();
432
+				}
433
+				return $all;
434 434
 	}
435 435
 	public function countAllHours($orderby = 'hour',$limit = true) {
436 436
 		global $globalTimezone;
@@ -438,18 +438,18 @@  discard block
 block discarded – undo
438 438
 		else $query = "SELECT flight_date as hour_name, cnt as hour_count FROM stats_flight WHERE stats_type = 'hour'";
439 439
 		if ($orderby == 'hour') $query .= " ORDER BY CAST(flight_date AS integer) ASC";
440 440
 		if ($orderby == 'count') $query .= " ORDER BY hour_count DESC";
441
-                 try {
442
-                        $sth = $this->db->prepare($query);
443
-                        $sth->execute();
444
-                } catch(PDOException $e) {
445
-                        echo "error : ".$e->getMessage();
446
-                }
447
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
448
-                if (empty($all)) {
449
-            		$Spotter = new Spotter($this->db);
450
-            		$all = $Spotter->countAllHours($orderby,$limit);
451
-                }
452
-                return $all;
441
+				 try {
442
+						$sth = $this->db->prepare($query);
443
+						$sth->execute();
444
+				} catch(PDOException $e) {
445
+						echo "error : ".$e->getMessage();
446
+				}
447
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
448
+				if (empty($all)) {
449
+					$Spotter = new Spotter($this->db);
450
+					$all = $Spotter->countAllHours($orderby,$limit);
451
+				}
452
+				return $all;
453 453
 	}
454 454
 	
455 455
 	public function countOverallFlights() {
@@ -512,157 +512,157 @@  discard block
 block discarded – undo
512 512
 	public function getLast7DaysAirports($airport_icao = '') {
513 513
 		$query = "SELECT * FROM stats_airport WHERE stats_type = 'daily' AND airport_icao = :airport_icao ORDER BY date";
514 514
 		$query_values = array(':airport_icao' => $airport_icao);
515
-                 try {
516
-                        $sth = $this->db->prepare($query);
517
-                        $sth->execute($query_values);
518
-                } catch(PDOException $e) {
519
-                        echo "error : ".$e->getMessage();
520
-                }
521
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
522
-                return $all;
515
+				 try {
516
+						$sth = $this->db->prepare($query);
517
+						$sth->execute($query_values);
518
+				} catch(PDOException $e) {
519
+						echo "error : ".$e->getMessage();
520
+				}
521
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
522
+				return $all;
523 523
 	}
524 524
 	public function getStats($type) {
525
-                $query = "SELECT * FROM stats WHERE stats_type = :type ORDER BY stats_date";
526
-                $query_values = array(':type' => $type);
527
-                 try {
528
-                        $sth = $this->db->prepare($query);
529
-                        $sth->execute($query_values);
530
-                } catch(PDOException $e) {
531
-                        echo "error : ".$e->getMessage();
532
-                }
533
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
534
-                return $all;
535
-        }
525
+				$query = "SELECT * FROM stats WHERE stats_type = :type ORDER BY stats_date";
526
+				$query_values = array(':type' => $type);
527
+				 try {
528
+						$sth = $this->db->prepare($query);
529
+						$sth->execute($query_values);
530
+				} catch(PDOException $e) {
531
+						echo "error : ".$e->getMessage();
532
+				}
533
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
534
+				return $all;
535
+		}
536 536
 	public function getSumStats($type,$year) {
537
-    		global $globalArchiveMonths, $globalDBdriver;
538
-    		if ($globalDBdriver == 'mysql') {
539
-	                $query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND YEAR(stats_date) = :year";
540
-	        } else {
541
-            		$query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND EXTRACT(YEAR FROM stats_date) = :year";
542
-                }
543
-                $query_values = array(':type' => $type, ':year' => $year);
544
-                 try {
545
-                        $sth = $this->db->prepare($query);
546
-                        $sth->execute($query_values);
547
-                } catch(PDOException $e) {
548
-                        echo "error : ".$e->getMessage();
549
-                }
550
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
551
-                return $all[0]['total'];
552
-        }
537
+			global $globalArchiveMonths, $globalDBdriver;
538
+			if ($globalDBdriver == 'mysql') {
539
+					$query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND YEAR(stats_date) = :year";
540
+			} else {
541
+					$query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND EXTRACT(YEAR FROM stats_date) = :year";
542
+				}
543
+				$query_values = array(':type' => $type, ':year' => $year);
544
+				 try {
545
+						$sth = $this->db->prepare($query);
546
+						$sth->execute($query_values);
547
+				} catch(PDOException $e) {
548
+						echo "error : ".$e->getMessage();
549
+				}
550
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
551
+				return $all[0]['total'];
552
+		}
553 553
 	public function getStatsTotal($type) {
554
-    		global $globalArchiveMonths, $globalDBdriver;
555
-    		if ($globalDBdriver == 'mysql') {
554
+			global $globalArchiveMonths, $globalDBdriver;
555
+			if ($globalDBdriver == 'mysql') {
556 556
 			$query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND stats_date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL ".$globalArchiveMonths." MONTH)";
557 557
 		} else {
558 558
 			$query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND stats_date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalArchiveMonths." MONTHS'";
559
-                }
560
-                $query_values = array(':type' => $type);
561
-                 try {
562
-                        $sth = $this->db->prepare($query);
563
-                        $sth->execute($query_values);
564
-                } catch(PDOException $e) {
565
-                        echo "error : ".$e->getMessage();
566
-                }
567
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
568
-                return $all[0]['total'];
569
-        }
559
+				}
560
+				$query_values = array(':type' => $type);
561
+				 try {
562
+						$sth = $this->db->prepare($query);
563
+						$sth->execute($query_values);
564
+				} catch(PDOException $e) {
565
+						echo "error : ".$e->getMessage();
566
+				}
567
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
568
+				return $all[0]['total'];
569
+		}
570 570
 	public function getStatsAircraftTotal() {
571
-    		global $globalArchiveMonths, $globalDBdriver;
572
-    		if ($globalDBdriver == 'mysql') {
571
+			global $globalArchiveMonths, $globalDBdriver;
572
+			if ($globalDBdriver == 'mysql') {
573 573
 			$query = "SELECT SUM(cnt) as total FROM stats_aircraft";
574
-                } else {
574
+				} else {
575 575
 			$query = "SELECT SUM(cnt) as total FROM stats_aircraft";
576
-                }
577
-                 try {
578
-                        $sth = $this->db->prepare($query);
579
-                        $sth->execute();
580
-                } catch(PDOException $e) {
581
-                        echo "error : ".$e->getMessage();
582
-                }
583
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
584
-                return $all[0]['total'];
585
-        }
576
+				}
577
+				 try {
578
+						$sth = $this->db->prepare($query);
579
+						$sth->execute();
580
+				} catch(PDOException $e) {
581
+						echo "error : ".$e->getMessage();
582
+				}
583
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
584
+				return $all[0]['total'];
585
+		}
586 586
 	public function getStatsAirlineTotal() {
587
-    		global $globalArchiveMonths, $globalDBdriver;
588
-    		if ($globalDBdriver == 'mysql') {
587
+			global $globalArchiveMonths, $globalDBdriver;
588
+			if ($globalDBdriver == 'mysql') {
589 589
 			$query = "SELECT SUM(cnt) as total FROM stats_airline";
590
-                } else {
590
+				} else {
591 591
 			$query = "SELECT SUM(cnt) as total FROM stats_airline";
592
-                }
593
-                 try {
594
-                        $sth = $this->db->prepare($query);
595
-                        $sth->execute();
596
-                } catch(PDOException $e) {
597
-                        echo "error : ".$e->getMessage();
598
-                }
599
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
600
-                return $all[0]['total'];
601
-        }
592
+				}
593
+				 try {
594
+						$sth = $this->db->prepare($query);
595
+						$sth->execute();
596
+				} catch(PDOException $e) {
597
+						echo "error : ".$e->getMessage();
598
+				}
599
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
600
+				return $all[0]['total'];
601
+		}
602 602
 	public function getStatsOwnerTotal() {
603
-    		global $globalArchiveMonths, $globalDBdriver;
604
-    		if ($globalDBdriver == 'mysql') {
603
+			global $globalArchiveMonths, $globalDBdriver;
604
+			if ($globalDBdriver == 'mysql') {
605 605
 			$query = "SELECT SUM(cnt) as total FROM stats_owner";
606 606
 		} else {
607 607
 			$query = "SELECT SUM(cnt) as total FROM stats_owner";
608
-                }
609
-                 try {
610
-                        $sth = $this->db->prepare($query);
611
-                        $sth->execute();
612
-                } catch(PDOException $e) {
613
-                        echo "error : ".$e->getMessage();
614
-                }
615
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
616
-                return $all[0]['total'];
617
-        }
608
+				}
609
+				 try {
610
+						$sth = $this->db->prepare($query);
611
+						$sth->execute();
612
+				} catch(PDOException $e) {
613
+						echo "error : ".$e->getMessage();
614
+				}
615
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
616
+				return $all[0]['total'];
617
+		}
618 618
 	public function getStatsPilotTotal() {
619
-    		global $globalArchiveMonths, $globalDBdriver;
620
-    		if ($globalDBdriver == 'mysql') {
621
-            		$query = "SELECT SUM(cnt) as total FROM stats_pilot";
622
-            	} else {
623
-            		$query = "SELECT SUM(cnt) as total FROM stats_pilot";
624
-            	}
625
-                 try {
626
-                        $sth = $this->db->prepare($query);
627
-                        $sth->execute();
628
-                } catch(PDOException $e) {
629
-                        echo "error : ".$e->getMessage();
630
-                }
631
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
632
-                return $all[0]['total'];
633
-        }
619
+			global $globalArchiveMonths, $globalDBdriver;
620
+			if ($globalDBdriver == 'mysql') {
621
+					$query = "SELECT SUM(cnt) as total FROM stats_pilot";
622
+				} else {
623
+					$query = "SELECT SUM(cnt) as total FROM stats_pilot";
624
+				}
625
+				 try {
626
+						$sth = $this->db->prepare($query);
627
+						$sth->execute();
628
+				} catch(PDOException $e) {
629
+						echo "error : ".$e->getMessage();
630
+				}
631
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
632
+				return $all[0]['total'];
633
+		}
634 634
 
635 635
 	public function addStat($type,$cnt,$stats_date) {
636 636
 		global $globalDBdriver;
637 637
 		if ($globalDBdriver == 'mysql') {
638 638
 			$query = "INSERT INTO stats (stats_type,cnt,stats_date) VALUES (:type,:cnt,:stats_date) ON DUPLICATE KEY UPDATE cnt = :cnt";
639
-                } else {
639
+				} else {
640 640
 			$query = "UPDATE stats SET cnt = :cnt WHERE stats_type = :type AND stats_date = :stats_date; INSERT INTO stats (stats_type,cnt,stats_date) SELECT :type,:cnt,:stats_date WHERE NOT EXISTS (SELECT 1 FROM stats WHERE  stats_type = :type AND stats_date = :stats_date);"; 
641 641
 		}
642
-                $query_values = array(':type' => $type,':cnt' => $cnt,':stats_date' => $stats_date);
643
-                 try {
644
-                        $sth = $this->db->prepare($query);
645
-                        $sth->execute($query_values);
646
-                } catch(PDOException $e) {
647
-                        return "error : ".$e->getMessage();
648
-                }
649
-        }
642
+				$query_values = array(':type' => $type,':cnt' => $cnt,':stats_date' => $stats_date);
643
+				 try {
644
+						$sth = $this->db->prepare($query);
645
+						$sth->execute($query_values);
646
+				} catch(PDOException $e) {
647
+						return "error : ".$e->getMessage();
648
+				}
649
+		}
650 650
 	public function updateStat($type,$cnt,$stats_date) {
651 651
 		global $globalDBdriver;
652 652
 		if ($globalDBdriver == 'mysql') {
653 653
 			$query = "INSERT INTO stats (stats_type,cnt,stats_date) VALUES (:type,:cnt,:stats_date) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt, stats_date = :date";
654 654
 		} else {
655
-            		//$query = "INSERT INTO stats (stats_type,cnt,stats_date) VALUES (:type,:cnt,:stats_date) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt, stats_date = :date";
655
+					//$query = "INSERT INTO stats (stats_type,cnt,stats_date) VALUES (:type,:cnt,:stats_date) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt, stats_date = :date";
656 656
 			$query = "UPDATE stats SET cnt = cnt+:cnt WHERE stats_type = :type AND stats_date = :stats_date; INSERT INTO stats (stats_type,cnt,stats_date) SELECT :type,:cnt,:stats_date WHERE NOT EXISTS (SELECT 1 FROM stats WHERE  stats_type = :type AND stats_date = :stats_date);"; 
657
-                }
658
-                $query_values = array(':type' => $type,':cnt' => $cnt,':stats_date' => $stats_date);
659
-                 try {
660
-                        $sth = $this->db->prepare($query);
661
-                        $sth->execute($query_values);
662
-                } catch(PDOException $e) {
663
-                        return "error : ".$e->getMessage();
664
-                }
665
-        }
657
+				}
658
+				$query_values = array(':type' => $type,':cnt' => $cnt,':stats_date' => $stats_date);
659
+				 try {
660
+						$sth = $this->db->prepare($query);
661
+						$sth->execute($query_values);
662
+				} catch(PDOException $e) {
663
+						return "error : ".$e->getMessage();
664
+				}
665
+		}
666 666
 	public function getStatsSource($date,$stats_type = '') {
667 667
 		if ($stats_type == '') {
668 668
 			$query = "SELECT * FROM stats_source WHERE stats_date = :date ORDER BY source_name";
@@ -671,15 +671,15 @@  discard block
 block discarded – undo
671 671
 			$query = "SELECT * FROM stats_source WHERE stats_date = :date AND stats_type = :stats_type ORDER BY source_name";
672 672
 			$query_values = array(':date' => $date,':stats_type' => $stats_type);
673 673
 		}
674
-                 try {
675
-                        $sth = $this->db->prepare($query);
676
-                        $sth->execute($query_values);
677
-                } catch(PDOException $e) {
678
-                        echo "error : ".$e->getMessage();
679
-                }
680
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
681
-                return $all;
682
-        }
674
+				 try {
675
+						$sth = $this->db->prepare($query);
676
+						$sth->execute($query_values);
677
+				} catch(PDOException $e) {
678
+						echo "error : ".$e->getMessage();
679
+				}
680
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
681
+				return $all;
682
+		}
683 683
 
684 684
 	public function addStatSource($data,$source_name,$stats_type,$date) {
685 685
 		global $globalDBdriver;
@@ -687,25 +687,25 @@  discard block
 block discarded – undo
687 687
 			$query = "INSERT INTO stats_source (source_data,source_name,stats_type,stats_date) VALUES (:data,:source_name,:stats_type,:stats_date) ON DUPLICATE KEY UPDATE source_data = :data";
688 688
 		} else {
689 689
 			$query = "UPDATE stats_source SET source_data = :data WHERE stats_date = :stats_date AND source_name = :source_name AND stats_type = :stats_type; INSERT INTO stats_source (source_data,source_name,stats_type,stats_date) SELECT :data,:source_name,:stats_type,:stats_date WHERE NOT EXISTS (SELECT 1 FROM stats_source WHERE stats_date = :stats_date AND source_name = :source_name AND stats_type = :stats_type);"; 
690
-                }
691
-                $query_values = array(':data' => $data,':stats_date' => $date,':source_name' => $source_name,':stats_type' => $stats_type);
692
-                 try {
693
-                        $sth = $this->db->prepare($query);
694
-                        $sth->execute($query_values);
695
-                } catch(PDOException $e) {
696
-                        return "error : ".$e->getMessage();
697
-                }
698
-        }
690
+				}
691
+				$query_values = array(':data' => $data,':stats_date' => $date,':source_name' => $source_name,':stats_type' => $stats_type);
692
+				 try {
693
+						$sth = $this->db->prepare($query);
694
+						$sth->execute($query_values);
695
+				} catch(PDOException $e) {
696
+						return "error : ".$e->getMessage();
697
+				}
698
+		}
699 699
 	public function addStatFlight($type,$date_name,$cnt) {
700
-                $query = "INSERT INTO stats_flight (stats_type,flight_date,cnt) VALUES (:type,:flight_date,:cnt)";
701
-                $query_values = array(':type' => $type,':flight_date' => $date_name,':cnt' => $cnt);
702
-                 try {
703
-                        $sth = $this->db->prepare($query);
704
-                        $sth->execute($query_values);
705
-                } catch(PDOException $e) {
706
-                        return "error : ".$e->getMessage();
707
-                }
708
-        }
700
+				$query = "INSERT INTO stats_flight (stats_type,flight_date,cnt) VALUES (:type,:flight_date,:cnt)";
701
+				$query_values = array(':type' => $type,':flight_date' => $date_name,':cnt' => $cnt);
702
+				 try {
703
+						$sth = $this->db->prepare($query);
704
+						$sth->execute($query_values);
705
+				} catch(PDOException $e) {
706
+						return "error : ".$e->getMessage();
707
+				}
708
+		}
709 709
 	public function addStatAircraftRegistration($registration,$cnt,$aircraft_icao = '') {
710 710
 		global $globalDBdriver;
711 711
 		if ($globalDBdriver == 'mysql') {
@@ -713,14 +713,14 @@  discard block
 block discarded – undo
713 713
 		} else {
714 714
 			$query = "UPDATE stats_registration SET cnt = cnt+:cnt WHERE registration = :registration; INSERT INTO stats_registration (aircraft_icao,registration,cnt) SELECT :aircraft_icao,:registration,:cnt WHERE NOT EXISTS (SELECT 1 FROM stats_registration WHERE registration = :registration);"; 
715 715
 		}
716
-                $query_values = array(':aircraft_icao' => $aircraft_icao,':registration' => $registration,':cnt' => $cnt);
717
-                 try {
718
-                        $sth = $this->db->prepare($query);
719
-                        $sth->execute($query_values);
720
-                } catch(PDOException $e) {
721
-                        return "error : ".$e->getMessage();
722
-                }
723
-        }
716
+				$query_values = array(':aircraft_icao' => $aircraft_icao,':registration' => $registration,':cnt' => $cnt);
717
+				 try {
718
+						$sth = $this->db->prepare($query);
719
+						$sth->execute($query_values);
720
+				} catch(PDOException $e) {
721
+						return "error : ".$e->getMessage();
722
+				}
723
+		}
724 724
 	public function addStatCallsign($callsign_icao,$cnt,$airline_icao = '') {
725 725
 		global $globalDBdriver;
726 726
 		if ($globalDBdriver == 'mysql') {
@@ -728,14 +728,14 @@  discard block
 block discarded – undo
728 728
 		} else {
729 729
 			$query = "UPDATE stats_callsign SET cnt = cnt+:cnt WHERE callsign_icao = :callsign_icao; INSERT INTO stats_callsign (callsign_icao,airline_icao,cnt) SELECT :callsign_icao,:airline_icao,:cnt WHERE NOT EXISTS (SELECT 1 FROM stats_callsign WHERE callsign_icao = :callsign_icao);"; 
730 730
 		}
731
-                $query_values = array(':callsign_icao' => $callsign_icao,':airline_icao' => $airline_icao,':cnt' => $cnt);
732
-                 try {
733
-                        $sth = $this->db->prepare($query);
734
-                        $sth->execute($query_values);
735
-                } catch(PDOException $e) {
736
-                        return "error : ".$e->getMessage();
737
-                }
738
-        }
731
+				$query_values = array(':callsign_icao' => $callsign_icao,':airline_icao' => $airline_icao,':cnt' => $cnt);
732
+				 try {
733
+						$sth = $this->db->prepare($query);
734
+						$sth->execute($query_values);
735
+				} catch(PDOException $e) {
736
+						return "error : ".$e->getMessage();
737
+				}
738
+		}
739 739
 	public function addStatCountry($iso2,$iso3,$name,$cnt) {
740 740
 		global $globalDBdriver;
741 741
 		if ($globalDBdriver == 'mysql') {
@@ -743,14 +743,14 @@  discard block
 block discarded – undo
743 743
 		} else {
744 744
 			$query = "UPDATE stats_country SET cnt = cnt+:cnt WHERE iso2 = :iso2; INSERT INTO stats_country (iso2,iso3,name,cnt) SELECT :iso2,:iso3,:name,:cnt WHERE NOT EXISTS (SELECT 1 FROM stats_country WHERE iso2 = :iso2);"; 
745 745
 		}
746
-                $query_values = array(':iso2' => $iso2,':iso3' => $iso3,':name' => $name,':cnt' => $cnt);
747
-                 try {
748
-                        $sth = $this->db->prepare($query);
749
-                        $sth->execute($query_values);
750
-                } catch(PDOException $e) {
751
-                        return "error : ".$e->getMessage();
752
-                }
753
-        }
746
+				$query_values = array(':iso2' => $iso2,':iso3' => $iso3,':name' => $name,':cnt' => $cnt);
747
+				 try {
748
+						$sth = $this->db->prepare($query);
749
+						$sth->execute($query_values);
750
+				} catch(PDOException $e) {
751
+						return "error : ".$e->getMessage();
752
+				}
753
+		}
754 754
 	public function addStatAircraft($aircraft_icao,$cnt,$aircraft_name = '') {
755 755
 		global $globalDBdriver;
756 756
 		if ($globalDBdriver == 'mysql') {
@@ -758,14 +758,14 @@  discard block
 block discarded – undo
758 758
 		} else {
759 759
 			$query = "UPDATE stats_aircraft SET cnt = cnt+:cnt WHERE aircraft_icao = :aircraft_icao; INSERT INTO stats_aircraft (aircraft_icao,aircraft_name,cnt) SELECT :aircraft_icao,:aircraft_name,:cnt WHERE NOT EXISTS (SELECT 1 FROM stats_aircraft WHERE aircraft_icao = :aircraft_icao);"; 
760 760
 		}
761
-                $query_values = array(':aircraft_icao' => $aircraft_icao,':aircraft_name' => $aircraft_name,':cnt' => $cnt);
762
-                 try {
763
-                        $sth = $this->db->prepare($query);
764
-                        $sth->execute($query_values);
765
-                } catch(PDOException $e) {
766
-                        return "error : ".$e->getMessage();
767
-                }
768
-        }
761
+				$query_values = array(':aircraft_icao' => $aircraft_icao,':aircraft_name' => $aircraft_name,':cnt' => $cnt);
762
+				 try {
763
+						$sth = $this->db->prepare($query);
764
+						$sth->execute($query_values);
765
+				} catch(PDOException $e) {
766
+						return "error : ".$e->getMessage();
767
+				}
768
+		}
769 769
 	public function addStatAirline($airline_icao,$cnt,$airline_name = '') {
770 770
 		global $globalDBdriver;
771 771
 		if ($globalDBdriver == 'mysql') {
@@ -773,14 +773,14 @@  discard block
 block discarded – undo
773 773
 		} else {
774 774
 			$query = "UPDATE stats_airline SET cnt = cnt+:cnt WHERE airline_icao = :airline_icao; INSERT INTO stats_airline (airline_icao,airline_name,cnt) SELECT :airline_icao,:airline_name,:cnt WHERE NOT EXISTS (SELECT 1 FROM stats_airline WHERE airline_icao = :airline_icao);"; 
775 775
 		}
776
-                $query_values = array(':airline_icao' => $airline_icao,':airline_name' => $airline_name,':cnt' => $cnt);
777
-                 try {
778
-                        $sth = $this->db->prepare($query);
779
-                        $sth->execute($query_values);
780
-                } catch(PDOException $e) {
781
-                        return "error : ".$e->getMessage();
782
-                }
783
-        }
776
+				$query_values = array(':airline_icao' => $airline_icao,':airline_name' => $airline_name,':cnt' => $cnt);
777
+				 try {
778
+						$sth = $this->db->prepare($query);
779
+						$sth->execute($query_values);
780
+				} catch(PDOException $e) {
781
+						return "error : ".$e->getMessage();
782
+				}
783
+		}
784 784
 	public function addStatOwner($owner_name,$cnt) {
785 785
 		global $globalDBdriver;
786 786
 		if ($globalDBdriver == 'mysql') {
@@ -788,14 +788,14 @@  discard block
 block discarded – undo
788 788
 		} else {
789 789
 			$query = "UPDATE stats_owner SET cnt = cnt+:cnt WHERE owner_name = :owner_name; INSERT INTO stats_owner (owner_name,cnt) SELECT :owner_name,:cnt WHERE NOT EXISTS (SELECT 1 FROM stats_owner WHERE owner_name = :owner_name);"; 
790 790
 		}
791
-                $query_values = array(':owner_name' => $owner_name,':cnt' => $cnt);
792
-                 try {
793
-                        $sth = $this->db->prepare($query);
794
-                        $sth->execute($query_values);
795
-                } catch(PDOException $e) {
796
-                        return "error : ".$e->getMessage();
797
-                }
798
-        }
791
+				$query_values = array(':owner_name' => $owner_name,':cnt' => $cnt);
792
+				 try {
793
+						$sth = $this->db->prepare($query);
794
+						$sth->execute($query_values);
795
+				} catch(PDOException $e) {
796
+						return "error : ".$e->getMessage();
797
+				}
798
+		}
799 799
 	public function addStatPilot($pilot_id,$cnt) {
800 800
 		global $globalDBdriver;
801 801
 		if ($globalDBdriver == 'mysql') {
@@ -803,14 +803,14 @@  discard block
 block discarded – undo
803 803
 		} else {
804 804
 			$query = "UPDATE stats_pilot SET cnt = cnt+:cnt WHERE pilot_id = :pilot_id; INSERT INTO stats_pilot (pilot_id,cnt) SELECT :pilot_id,:cnt WHERE NOT EXISTS (SELECT 1 FROM stats_pilot WHERE pilot_id = :pilot_id);"; 
805 805
 		}
806
-                $query_values = array(':pilot_id' => $pilot_id,':cnt' => $cnt);
807
-                 try {
808
-                        $sth = $this->db->prepare($query);
809
-                        $sth->execute($query_values);
810
-                } catch(PDOException $e) {
811
-                        return "error : ".$e->getMessage();
812
-                }
813
-        }
806
+				$query_values = array(':pilot_id' => $pilot_id,':cnt' => $cnt);
807
+				 try {
808
+						$sth = $this->db->prepare($query);
809
+						$sth->execute($query_values);
810
+				} catch(PDOException $e) {
811
+						return "error : ".$e->getMessage();
812
+				}
813
+		}
814 814
 	public function addStatDepartureAirports($airport_icao,$airport_name,$airport_city,$airport_country,$departure) {
815 815
 		global $globalDBdriver;
816 816
 		if ($globalDBdriver == 'mysql') {
@@ -818,14 +818,14 @@  discard block
 block discarded – undo
818 818
 		} else {
819 819
 			$query = "UPDATE stats_airport SET departure = departure+:departure WHERE airport_icao = :airport_icao AND stats_type = 'yearly'; INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,departure,stats_type,date) SELECT :airport_icao,:airport_name,:airport_city,:airport_country,:departure,'yearly',:date WHERE NOT EXISTS (SELECT 1 FROM stats_airline WHERE airport_icao = :airport_icao AND stats_type = 'yearly');"; 
820 820
 		}
821
-                $query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':departure' => $departure,':date' => date('Y').'-01-01 00:00:00');
822
-                 try {
823
-                        $sth = $this->db->prepare($query);
824
-                        $sth->execute($query_values);
825
-                } catch(PDOException $e) {
826
-                        return "error : ".$e->getMessage();
827
-                }
828
-        }
821
+				$query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':departure' => $departure,':date' => date('Y').'-01-01 00:00:00');
822
+				 try {
823
+						$sth = $this->db->prepare($query);
824
+						$sth->execute($query_values);
825
+				} catch(PDOException $e) {
826
+						return "error : ".$e->getMessage();
827
+				}
828
+		}
829 829
 	public function addStatDepartureAirportsDaily($date,$airport_icao,$airport_name,$airport_city,$airport_country,$departure) {
830 830
 		global $globalDBdriver;
831 831
 		if ($globalDBdriver == 'mysql') {
@@ -833,14 +833,14 @@  discard block
 block discarded – undo
833 833
 		} else {
834 834
 			$query = "UPDATE stats_airport SET departure = departure+:departure WHERE airport_icao = :airport_icao AND stats_type = 'daily'; INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,departure,stats_type,date) SELECT :airport_icao,:airport_name,:airport_city,:airport_country,:departure,'daily',:date WHERE NOT EXISTS (SELECT 1 FROM stats_airline WHERE airport_icao = :airport_icao AND stats_type = 'daily');"; 
835 835
 		}
836
-                $query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':departure' => $departure,':date' => $date);
837
-                 try {
838
-                        $sth = $this->db->prepare($query);
839
-                        $sth->execute($query_values);
840
-                } catch(PDOException $e) {
841
-                        return "error : ".$e->getMessage();
842
-                }
843
-        }
836
+				$query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':departure' => $departure,':date' => $date);
837
+				 try {
838
+						$sth = $this->db->prepare($query);
839
+						$sth->execute($query_values);
840
+				} catch(PDOException $e) {
841
+						return "error : ".$e->getMessage();
842
+				}
843
+		}
844 844
 	public function addStatArrivalAirports($airport_icao,$airport_name,$airport_city,$airport_country,$arrival) {
845 845
 		global $globalDBdriver;
846 846
 		if ($globalDBdriver == 'mysql') {
@@ -848,14 +848,14 @@  discard block
 block discarded – undo
848 848
 		} else {
849 849
 			$query = "UPDATE stats_airport SET arrival = arrival+:arrival WHERE airport_icao = :airport_icao AND stats_type = 'yearly'; INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,arrival,stats_type,date) SELECT :airport_icao,:airport_name,:airport_city,:airport_country,:arrival,'yearly',:date WHERE NOT EXISTS (SELECT 1 FROM stats_airline WHERE airport_icao = :airport_icao AND stats_type = 'yearly');"; 
850 850
 		}
851
-                $query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':arrival' => $arrival,':date' => date('Y').'-01-01 00:00:00');
852
-                 try {
853
-                        $sth = $this->db->prepare($query);
854
-                        $sth->execute($query_values);
855
-                } catch(PDOException $e) {
856
-                        return "error : ".$e->getMessage();
857
-                }
858
-        }
851
+				$query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':arrival' => $arrival,':date' => date('Y').'-01-01 00:00:00');
852
+				 try {
853
+						$sth = $this->db->prepare($query);
854
+						$sth->execute($query_values);
855
+				} catch(PDOException $e) {
856
+						return "error : ".$e->getMessage();
857
+				}
858
+		}
859 859
 	public function addStatArrivalAirportsDaily($date,$airport_icao,$airport_name,$airport_city,$airport_country,$arrival) {
860 860
 		global $globalDBdriver;
861 861
 		if ($globalDBdriver == 'mysql') {
@@ -863,55 +863,55 @@  discard block
 block discarded – undo
863 863
 		} else {
864 864
 			$query = "UPDATE stats_airport SET arrival = arrival+:arrival WHERE airport_icao = :airport_icao AND stats_type = 'daily'; INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,arrival,stats_type,date) SELECT :airport_icao,:airport_name,:airport_city,:airport_country,:arrival,'yearly',:date WHERE NOT EXISTS (SELECT 1 FROM stats_airline WHERE airport_icao = :airport_icao AND stats_type = 'daily');"; 
865 865
 		}
866
-                $query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':arrival' => $arrival, ':date' => $date);
867
-                 try {
868
-                        $sth = $this->db->prepare($query);
869
-                        $sth->execute($query_values);
870
-                } catch(PDOException $e) {
871
-                        return "error : ".$e->getMessage();
872
-                }
873
-        }
866
+				$query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':arrival' => $arrival, ':date' => $date);
867
+				 try {
868
+						$sth = $this->db->prepare($query);
869
+						$sth->execute($query_values);
870
+				} catch(PDOException $e) {
871
+						return "error : ".$e->getMessage();
872
+				}
873
+		}
874 874
 
875 875
 	public function deleteStat($id) {
876
-                $query = "DELETE FROM stats WHERE stats_id = :id";
877
-                $query_values = array(':id' => $id);
878
-                 try {
879
-                        $sth = $this->db->prepare($query);
880
-                        $sth->execute($query_values);
881
-                } catch(PDOException $e) {
882
-                        return "error : ".$e->getMessage();
883
-                }
884
-        }
876
+				$query = "DELETE FROM stats WHERE stats_id = :id";
877
+				$query_values = array(':id' => $id);
878
+				 try {
879
+						$sth = $this->db->prepare($query);
880
+						$sth->execute($query_values);
881
+				} catch(PDOException $e) {
882
+						return "error : ".$e->getMessage();
883
+				}
884
+		}
885 885
 	public function deleteStatFlight($type) {
886
-                $query = "DELETE FROM stats_flight WHERE stats_type = :type";
887
-                $query_values = array(':type' => $type);
888
-                 try {
889
-                        $sth = $this->db->prepare($query);
890
-                        $sth->execute($query_values);
891
-                } catch(PDOException $e) {
892
-                        return "error : ".$e->getMessage();
893
-                }
894
-        }
886
+				$query = "DELETE FROM stats_flight WHERE stats_type = :type";
887
+				$query_values = array(':type' => $type);
888
+				 try {
889
+						$sth = $this->db->prepare($query);
890
+						$sth->execute($query_values);
891
+				} catch(PDOException $e) {
892
+						return "error : ".$e->getMessage();
893
+				}
894
+		}
895 895
 	public function deleteStatAirport($type) {
896
-                $query = "DELETE FROM stats_airport WHERE stats_type = :type";
897
-                $query_values = array(':type' => $type);
898
-                 try {
899
-                        $sth = $this->db->prepare($query);
900
-                        $sth->execute($query_values);
901
-                } catch(PDOException $e) {
902
-                        return "error : ".$e->getMessage();
903
-                }
904
-        }
896
+				$query = "DELETE FROM stats_airport WHERE stats_type = :type";
897
+				$query_values = array(':type' => $type);
898
+				 try {
899
+						$sth = $this->db->prepare($query);
900
+						$sth->execute($query_values);
901
+				} catch(PDOException $e) {
902
+						return "error : ".$e->getMessage();
903
+				}
904
+		}
905 905
         
906
-        public function addOldStats() {
907
-    		global $globalArchiveMonths, $globalArchive, $globalArchiveYear, $globalDBdriver;
908
-    		$Common = new Common();
909
-    		$Connection = new Connection();
910
-    		date_default_timezone_set('UTC');
911
-    		$last_update = $this->getLastStatsUpdate('last_update_stats');
906
+		public function addOldStats() {
907
+			global $globalArchiveMonths, $globalArchive, $globalArchiveYear, $globalDBdriver;
908
+			$Common = new Common();
909
+			$Connection = new Connection();
910
+			date_default_timezone_set('UTC');
911
+			$last_update = $this->getLastStatsUpdate('last_update_stats');
912 912
 		//print_r($last_update);
913 913
 		$flightsbymonth = $this->getStats('flights_by_month');
914
-    		if (empty($last_update) && empty($flightsbymonth)) {
914
+			if (empty($last_update) && empty($flightsbymonth)) {
915 915
 			// Initial update
916 916
 			$Spotter = new Spotter($this->db);
917 917
 			$alldata = $Spotter->countAllMonths();
@@ -1052,46 +1052,46 @@  discard block
 block discarded – undo
1052 1052
 					$this->addStatPilot($number['pilot_id'],$number['pilot_count']);
1053 1053
 				}
1054 1054
 				$pall = $Spotter->countAllDepartureAirports(false,$globalArchiveMonths);
1055
-        			$dall = $Spotter->countAllDetectedDepartureAirports(false,$globalArchiveMonths);
1056
-	        		$alldata = array();
1057
-    				foreach ($pall as $value) {
1058
-	        			$icao = $value['airport_departure_icao'];
1059
-    					$alldata[$icao] = $value;
1060
-	        		}
1061
-	        		foreach ($dall as $value) {
1062
-    					$icao = $value['airport_departure_icao'];
1063
-        				if (isset($alldata[$icao])) {                                                           
1064
-        					$alldata[$icao]['airport_departure_icao_count'] = $alldata[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
1065
-	        			} else $alldata[$icao] = $value;
1066
-    				}
1067
-        			$count = array();
1068
-        			foreach ($alldata as $key => $row) {
1069
-        				$count[$key] = $row['airport_departure_icao_count'];
1070
-	        		}
1071
-    				array_multisort($count,SORT_DESC,$alldata);
1055
+					$dall = $Spotter->countAllDetectedDepartureAirports(false,$globalArchiveMonths);
1056
+					$alldata = array();
1057
+					foreach ($pall as $value) {
1058
+						$icao = $value['airport_departure_icao'];
1059
+						$alldata[$icao] = $value;
1060
+					}
1061
+					foreach ($dall as $value) {
1062
+						$icao = $value['airport_departure_icao'];
1063
+						if (isset($alldata[$icao])) {                                                           
1064
+							$alldata[$icao]['airport_departure_icao_count'] = $alldata[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
1065
+						} else $alldata[$icao] = $value;
1066
+					}
1067
+					$count = array();
1068
+					foreach ($alldata as $key => $row) {
1069
+						$count[$key] = $row['airport_departure_icao_count'];
1070
+					}
1071
+					array_multisort($count,SORT_DESC,$alldata);
1072 1072
 
1073 1073
 				//print_r($alldate);
1074 1074
 				foreach ($alldata as $number) {
1075 1075
 					$this->addStatDepartureAirports($number['airport_departure_icao'],$number['airport_departure_name'],$number['airport_departure_city'],$number['airport_departure_country'],$number['airport_departure_icao_count']);
1076 1076
 				}
1077 1077
 				$pdata = $Spotter->countAllArrivalAirports(false,$globalArchiveMonths);
1078
-        			$dall = $Spotter->countAllDetectedArrivalAirports(false,$globalArchiveMonths);
1079
-	        		$alldata = array();
1080
-    				foreach ($pdata as $value) {
1081
-	        			$icao = $value['airport_arrival_icao'];
1082
-    					$alldata[$icao] = $value;
1083
-	        		}
1084
-	        		foreach ($dall as $value) {
1085
-    					$icao = $value['airport_arrival_icao'];
1086
-        				if (isset($alldata[$icao])) {                                                           
1087
-        					$alldata[$icao]['airport_arrival_icao_count'] = $alldata[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
1088
-	        			} else $alldata[$icao] = $value;
1089
-    				}
1090
-        			$count = array();
1091
-        			foreach ($alldata as $key => $row) {
1092
-        				$count[$key] = $row['airport_arrival_icao_count'];
1093
-	        		}
1094
-    				array_multisort($count,SORT_DESC,$alldata);
1078
+					$dall = $Spotter->countAllDetectedArrivalAirports(false,$globalArchiveMonths);
1079
+					$alldata = array();
1080
+					foreach ($pdata as $value) {
1081
+						$icao = $value['airport_arrival_icao'];
1082
+						$alldata[$icao] = $value;
1083
+					}
1084
+					foreach ($dall as $value) {
1085
+						$icao = $value['airport_arrival_icao'];
1086
+						if (isset($alldata[$icao])) {                                                           
1087
+							$alldata[$icao]['airport_arrival_icao_count'] = $alldata[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
1088
+						} else $alldata[$icao] = $value;
1089
+					}
1090
+					$count = array();
1091
+					foreach ($alldata as $key => $row) {
1092
+						$count[$key] = $row['airport_arrival_icao_count'];
1093
+					}
1094
+					array_multisort($count,SORT_DESC,$alldata);
1095 1095
 				foreach ($alldata as $number) {
1096 1096
 					$this->addStatArrivalAirports($number['airport_arrival_icao'],$number['airport_arrival_name'],$number['airport_arrival_city'],$number['airport_arrival_country'],$number['airport_arrival_icao_count']);
1097 1097
 				}
@@ -1159,46 +1159,46 @@  discard block
 block discarded – undo
1159 1159
 				$this->addStatPilot($number['pilot_id'],$number['pilot_count']);
1160 1160
 			}
1161 1161
 			$pall = $Spotter->countAllDepartureAirports(false,0,$last_update_day);
1162
-        		$dall = $Spotter->countAllDetectedDepartureAirports(false,0,$last_update_day);
1163
-	        	$alldata = array();
1164
-    			foreach ($pall as $value) {
1165
-	        		$icao = $value['airport_departure_icao'];
1166
-    				$alldata[$icao] = $value;
1167
-	        	}
1168
-	        	foreach ($dall as $value) {
1169
-    				$icao = $value['airport_departure_icao'];
1170
-        			if (isset($alldata[$icao])) {                                                           
1171
-    					$alldata[$icao]['airport_departure_icao_count'] = $alldata[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
1172
-        			} else $alldata[$icao] = $value;
1162
+				$dall = $Spotter->countAllDetectedDepartureAirports(false,0,$last_update_day);
1163
+				$alldata = array();
1164
+				foreach ($pall as $value) {
1165
+					$icao = $value['airport_departure_icao'];
1166
+					$alldata[$icao] = $value;
1167
+				}
1168
+				foreach ($dall as $value) {
1169
+					$icao = $value['airport_departure_icao'];
1170
+					if (isset($alldata[$icao])) {                                                           
1171
+						$alldata[$icao]['airport_departure_icao_count'] = $alldata[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
1172
+					} else $alldata[$icao] = $value;
1173 1173
 			}
1174
-    			$count = array();
1175
-    			foreach ($alldata as $key => $row) {
1176
-    				$count[$key] = $row['airport_departure_icao_count'];
1177
-        		}
1174
+				$count = array();
1175
+				foreach ($alldata as $key => $row) {
1176
+					$count[$key] = $row['airport_departure_icao_count'];
1177
+				}
1178 1178
 			array_multisort($count,SORT_DESC,$alldata);
1179 1179
 
1180 1180
 			foreach ($alldata as $number) {
1181 1181
 				$this->addStatDepartureAirports($number['airport_departure_icao'],$number['airport_departure_name'],$number['airport_departure_city'],$number['airport_departure_country'],$number['airport_departure_icao_count']);
1182 1182
 			}
1183 1183
 			$pall = $Spotter->countAllArrivalAirports(false,0,$last_update_day);
1184
-        		$dall = $Spotter->countAllDetectedArrivalAirports(false,0,$last_update_day);
1185
-	        	$alldata = array();
1186
-    			foreach ($pall as $value) {
1187
-	        		$icao = $value['airport_arrival_icao'];
1188
-    				$alldata[$icao] = $value;
1189
-	        	}
1190
-	        	foreach ($dall as $value) {
1191
-    				$icao = $value['airport_arrival_icao'];
1192
-        			if (isset($alldata[$icao])) {                                                           
1193
-        				$alldata[$icao]['airport_arrival_icao_count'] = $alldata[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
1194
-	        		} else $alldata[$icao] = $value;
1195
-    			}
1196
-        		$count = array();
1197
-        		foreach ($alldata as $key => $row) {
1198
-        			$count[$key] = $row['airport_arrival_icao_count'];
1199
-	        	}
1200
-    			array_multisort($count,SORT_DESC,$alldata);
1201
-                        foreach ($alldata as $number) {
1184
+				$dall = $Spotter->countAllDetectedArrivalAirports(false,0,$last_update_day);
1185
+				$alldata = array();
1186
+				foreach ($pall as $value) {
1187
+					$icao = $value['airport_arrival_icao'];
1188
+					$alldata[$icao] = $value;
1189
+				}
1190
+				foreach ($dall as $value) {
1191
+					$icao = $value['airport_arrival_icao'];
1192
+					if (isset($alldata[$icao])) {                                                           
1193
+						$alldata[$icao]['airport_arrival_icao_count'] = $alldata[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
1194
+					} else $alldata[$icao] = $value;
1195
+				}
1196
+				$count = array();
1197
+				foreach ($alldata as $key => $row) {
1198
+					$count[$key] = $row['airport_arrival_icao_count'];
1199
+				}
1200
+				array_multisort($count,SORT_DESC,$alldata);
1201
+						foreach ($alldata as $number) {
1202 1202
 				$this->addStatArrivalAirports($number['airport_arrival_icao'],$number['airport_arrival_name'],$number['airport_arrival_city'],$number['airport_arrival_country'],$number['airport_arrival_icao_count']);
1203 1203
 			}
1204 1204
 			if ($Connection->tableExists('countries')) {
@@ -1248,45 +1248,45 @@  discard block
 block discarded – undo
1248 1248
 			echo '...Departure'."\n";
1249 1249
 			$this->deleteStatAirport('daily');
1250 1250
 			$pall = $Spotter->getLast7DaysAirportsDeparture();
1251
-        		$dall = $Spotter->getLast7DaysDetectedAirportsDeparture();
1252
-	        	$alldata = array();
1253
-    			foreach ($pall as $value) {
1254
-	        		$icao = $value['departure_airport_icao'];
1255
-    				$alldata[$icao] = $value;
1256
-	        	}
1257
-	        	foreach ($dall as $value) {
1258
-    				$icao = $value['departure_airport_icao'];
1259
-        			if (isset($alldata[$icao])) {                                                           
1260
-        				$alldata[$icao]['departure_airport_count'] = $alldata[$icao]['departure_airport_count'] + $value['departure_airport_count'];
1261
-	        		} else $alldata[$icao] = $value;
1262
-    			}
1263
-        		$count = array();
1264
-        		foreach ($alldata as $key => $row) {
1265
-        			$count[$key] = $row['departure_airport_count'];
1266
-	        	}
1267
-    			array_multisort($count,SORT_DESC,$alldata);
1251
+				$dall = $Spotter->getLast7DaysDetectedAirportsDeparture();
1252
+				$alldata = array();
1253
+				foreach ($pall as $value) {
1254
+					$icao = $value['departure_airport_icao'];
1255
+					$alldata[$icao] = $value;
1256
+				}
1257
+				foreach ($dall as $value) {
1258
+					$icao = $value['departure_airport_icao'];
1259
+					if (isset($alldata[$icao])) {                                                           
1260
+						$alldata[$icao]['departure_airport_count'] = $alldata[$icao]['departure_airport_count'] + $value['departure_airport_count'];
1261
+					} else $alldata[$icao] = $value;
1262
+				}
1263
+				$count = array();
1264
+				foreach ($alldata as $key => $row) {
1265
+					$count[$key] = $row['departure_airport_count'];
1266
+				}
1267
+				array_multisort($count,SORT_DESC,$alldata);
1268 1268
 			foreach ($alldata as $number) {
1269 1269
 				$this->addStatDepartureAirportsDaily($number['date'],$number['departure_airport_icao'],$number['departure_airport_name'],$number['departure_airport_city'],$number['departure_airport_country'],$number['departure_airport_count']);
1270 1270
 			}
1271 1271
 			echo '...Arrival'."\n";
1272 1272
 			$pall = $Spotter->getLast7DaysAirportsArrival();
1273
-        		$dall = $Spotter->getLast7DaysDetectedAirportsArrival();
1274
-	        	$alldata = array();
1275
-    			foreach ($pall as $value) {
1276
-	        		$icao = $value['arrival_airport_icao'];
1277
-    				$alldata[$icao] = $value;
1278
-	        	}
1279
-	        	foreach ($dall as $value) {
1280
-    				$icao = $value['arrival_airport_icao'];
1281
-        			if (isset($alldata[$icao])) {                                                           
1282
-        				$alldata[$icao]['arrival_airport_icao_count'] = $alldata[$icao]['arrival_airport_count'] + $value['arrival_airport_count'];
1283
-	        		} else $alldata[$icao] = $value;
1284
-    			}
1285
-        		$count = array();
1286
-        		foreach ($alldata as $key => $row) {
1287
-        			$count[$key] = $row['arrival_airport_count'];
1288
-	        	}
1289
-    			array_multisort($count,SORT_DESC,$alldata);
1273
+				$dall = $Spotter->getLast7DaysDetectedAirportsArrival();
1274
+				$alldata = array();
1275
+				foreach ($pall as $value) {
1276
+					$icao = $value['arrival_airport_icao'];
1277
+					$alldata[$icao] = $value;
1278
+				}
1279
+				foreach ($dall as $value) {
1280
+					$icao = $value['arrival_airport_icao'];
1281
+					if (isset($alldata[$icao])) {                                                           
1282
+						$alldata[$icao]['arrival_airport_icao_count'] = $alldata[$icao]['arrival_airport_count'] + $value['arrival_airport_count'];
1283
+					} else $alldata[$icao] = $value;
1284
+				}
1285
+				$count = array();
1286
+				foreach ($alldata as $key => $row) {
1287
+					$count[$key] = $row['arrival_airport_count'];
1288
+				}
1289
+				array_multisort($count,SORT_DESC,$alldata);
1290 1290
 
1291 1291
 			foreach ($alldata as $number) {
1292 1292
 				$this->addStatArrivalAirportsDaily($number['date'],$number['arrival_airport_icao'],$number['arrival_airport_name'],$number['arrival_airport_city'],$number['arrival_airport_country'],$number['arrival_airport_count']);
Please login to merge, or discard this patch.
require/class.METAR.php 1 patch
Indentation   +257 added lines, -257 removed lines patch added patch discarded remove patch
@@ -7,107 +7,107 @@  discard block
 block discarded – undo
7 7
 	public $db;
8 8
 	
9 9
 	protected $texts = Array(
10
-	    'MI' => 'Shallow',
11
-	    'PR' => 'Partial',
12
-	    'BC' => 'Low drifting',
13
-	    'BL' => 'Blowing',
14
-	    'SH' => 'Showers',
15
-	    'TS' => 'Thunderstorm',
16
-	    'FZ' => 'Freezing',
17
-	    'DZ' => 'Drizzle',
18
-	    'RA' => 'Rain',
19
-	    'SN' => 'Snow',
20
-	    'SG' => 'Snow Grains',
21
-	    'IC' => 'Ice crystals',
22
-	    'PL' => 'Ice pellets',
23
-	    'GR' => 'Hail',
24
-	    'GS' => 'Small hail',
25
-	    'UP' => 'Unknown',
26
-	    'BR' => 'Mist',
27
-	    'FG' => 'Fog',
28
-	    'FU' => 'Smoke',
29
-	    'VA' => 'Volcanic ash',
30
-	    'DU' => 'Widespread dust',
31
-	    'SA' => 'Sand',
32
-	    'HZ' => 'Haze',
33
-	    'PY' => 'Spray',
34
-	    'PO' => 'Well developed dust / sand whirls',
35
-	    'SQ' => 'Squalls',
36
-	    'FC' => 'Funnel clouds inc tornadoes or waterspouts',
37
-	    'SS' => 'Sandstorm',
38
-	    'DS' => 'Duststorm'
10
+		'MI' => 'Shallow',
11
+		'PR' => 'Partial',
12
+		'BC' => 'Low drifting',
13
+		'BL' => 'Blowing',
14
+		'SH' => 'Showers',
15
+		'TS' => 'Thunderstorm',
16
+		'FZ' => 'Freezing',
17
+		'DZ' => 'Drizzle',
18
+		'RA' => 'Rain',
19
+		'SN' => 'Snow',
20
+		'SG' => 'Snow Grains',
21
+		'IC' => 'Ice crystals',
22
+		'PL' => 'Ice pellets',
23
+		'GR' => 'Hail',
24
+		'GS' => 'Small hail',
25
+		'UP' => 'Unknown',
26
+		'BR' => 'Mist',
27
+		'FG' => 'Fog',
28
+		'FU' => 'Smoke',
29
+		'VA' => 'Volcanic ash',
30
+		'DU' => 'Widespread dust',
31
+		'SA' => 'Sand',
32
+		'HZ' => 'Haze',
33
+		'PY' => 'Spray',
34
+		'PO' => 'Well developed dust / sand whirls',
35
+		'SQ' => 'Squalls',
36
+		'FC' => 'Funnel clouds inc tornadoes or waterspouts',
37
+		'SS' => 'Sandstorm',
38
+		'DS' => 'Duststorm'
39 39
 	);
40 40
 	
41 41
 	function __construct($dbc = null) {
42
-                $Connection = new Connection($dbc);
43
-                $this->db = $Connection->db;
44
-        }
42
+				$Connection = new Connection($dbc);
43
+				$this->db = $Connection->db;
44
+		}
45 45
 
46
-       public static function check_last_update() {
47
-    		global $globalDBdriver;
48
-    		if ($globalDBdriver == 'mysql') {
46
+	   public static function check_last_update() {
47
+			global $globalDBdriver;
48
+			if ($globalDBdriver == 'mysql') {
49 49
 			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_metar' AND value > DATE_SUB(DATE(NOW()), INTERVAL 1 HOUR)";
50 50
 		} else {
51 51
 			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_metar' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '1 HOURS'";
52 52
 		}
53
-                try {
54
-                        $Connection = new Connection();
55
-                        $sth = $Connection->db->prepare($query);
56
-                        $sth->execute();
57
-                } catch(PDOException $e) {
58
-                        return "error : ".$e->getMessage();
59
-                }
60
-                $row = $sth->fetch(PDO::FETCH_ASSOC);
61
-                if ($row['nb'] > 0) return false;
62
-                else return true;
63
-        }
53
+				try {
54
+						$Connection = new Connection();
55
+						$sth = $Connection->db->prepare($query);
56
+						$sth->execute();
57
+				} catch(PDOException $e) {
58
+						return "error : ".$e->getMessage();
59
+				}
60
+				$row = $sth->fetch(PDO::FETCH_ASSOC);
61
+				if ($row['nb'] > 0) return false;
62
+				else return true;
63
+		}
64 64
 
65
-        public static function insert_last_update() {
66
-                $query = "DELETE FROM config WHERE name = 'last_update_metar';
65
+		public static function insert_last_update() {
66
+				$query = "DELETE FROM config WHERE name = 'last_update_metar';
67 67
                         INSERT INTO config (name,value) VALUES ('last_update_metar',NOW());";
68
-                try {
69
-                        $Connection = new Connection();
70
-                        $sth = $Connection->db->prepare($query);
71
-                        $sth->execute();
72
-                } catch(PDOException $e) {
73
-                        return "error : ".$e->getMessage();
74
-                }
75
-        }
68
+				try {
69
+						$Connection = new Connection();
70
+						$sth = $Connection->db->prepare($query);
71
+						$sth->execute();
72
+				} catch(PDOException $e) {
73
+						return "error : ".$e->getMessage();
74
+				}
75
+		}
76 76
 
77 77
 
78 78
         
79
-        public function parse($data) {
80
-    		//$data = str_replace(array('\n','\r','\r','\n'),'',$data);
81
-    		$codes = implode('|', array_keys($this->texts));
82
-    		$regWeather = '#^(\+|\-|VC)?(' . $codes . ')(' . $codes . ')?$#';
83
-    		//$pieces = explode(' ',$data);
84
-    		$pieces = preg_split('/\s/',$data);
85
-    		$pos = 0;
86
-    		if ($pieces[0] == 'METAR') $pos++;
87
-    		elseif ($pieces[0] == 'SPECI') $pos++;
88
-    		if (strlen($pieces[$pos]) != 4) $pos++;
89
-    		$result['location'] = $pieces[$pos];
90
-    		$pos++;
91
-    		$result['dayofmonth'] = substr($pieces[$pos],0,2);
92
-    		$result['time'] = substr($pieces[$pos],2,4);
93
-    		$c = count($pieces);
94
-    		for($pos++; $pos < $c; $pos++) {
95
-    			$piece = $pieces[$pos];
96
-    			if ($piece == 'RMK') break;
97
-    			if ($piece == 'AUTO') $result['auto'] = true;
98
-    			if ($piece == 'COR') $result['correction'] = true;
99
-    			// Wind Speed
100
-    			if (preg_match('#(VRB|\d\d\d)(\d\d)(?:G(\d\d))?(KT|MPS|KPH)(?: (\d{1,3})V(\d{1,3}))?$#', $piece, $matches)) {
101
-    				$result['wind']['direction'] = (float)$matches[1];
79
+		public function parse($data) {
80
+			//$data = str_replace(array('\n','\r','\r','\n'),'',$data);
81
+			$codes = implode('|', array_keys($this->texts));
82
+			$regWeather = '#^(\+|\-|VC)?(' . $codes . ')(' . $codes . ')?$#';
83
+			//$pieces = explode(' ',$data);
84
+			$pieces = preg_split('/\s/',$data);
85
+			$pos = 0;
86
+			if ($pieces[0] == 'METAR') $pos++;
87
+			elseif ($pieces[0] == 'SPECI') $pos++;
88
+			if (strlen($pieces[$pos]) != 4) $pos++;
89
+			$result['location'] = $pieces[$pos];
90
+			$pos++;
91
+			$result['dayofmonth'] = substr($pieces[$pos],0,2);
92
+			$result['time'] = substr($pieces[$pos],2,4);
93
+			$c = count($pieces);
94
+			for($pos++; $pos < $c; $pos++) {
95
+				$piece = $pieces[$pos];
96
+				if ($piece == 'RMK') break;
97
+				if ($piece == 'AUTO') $result['auto'] = true;
98
+				if ($piece == 'COR') $result['correction'] = true;
99
+				// Wind Speed
100
+				if (preg_match('#(VRB|\d\d\d)(\d\d)(?:G(\d\d))?(KT|MPS|KPH)(?: (\d{1,3})V(\d{1,3}))?$#', $piece, $matches)) {
101
+					$result['wind']['direction'] = (float)$matches[1];
102 102
 				$result['wind']['unit'] = $matches[4];
103
-    				if ($result['wind']['unit'] == 'KT') $result['wind']['speed'] = round(((float)$matches[2])*0.51444444444,2);
104
-    				elseif ($result['wind']['unit'] == 'KPH') $result['wind']['speed'] = round(((float)$matches[2])*1000,2);
105
-    				elseif ($result['wind']['unit'] == 'MPS') $result['wind']['speed'] = round(((float)$matches[2]),2);
103
+					if ($result['wind']['unit'] == 'KT') $result['wind']['speed'] = round(((float)$matches[2])*0.51444444444,2);
104
+					elseif ($result['wind']['unit'] == 'KPH') $result['wind']['speed'] = round(((float)$matches[2])*1000,2);
105
+					elseif ($result['wind']['unit'] == 'MPS') $result['wind']['speed'] = round(((float)$matches[2]),2);
106 106
 				$result['wind']['gust'] = (float)$matches[3];
107 107
 				$result['wind']['unit'] = $matches[4];
108 108
 				$result['wind']['min_variation'] = array_key_exists(5,$matches) ? $matches[5] : 0;
109 109
 				$result['wind']['max_variation'] = array_key_exists(6,$matches) ? $matches[6] : 0;
110
-    			}
110
+				}
111 111
 
112 112
 /*    			if (preg_match('#^([0-9]{3})([0-9]{2})(G([0-9]{2}))?(KT|MPS)$#', $piece, $matches)) {
113 113
     				$result['wind_direction'] = (float)$matches[1];
@@ -124,35 +124,35 @@  discard block
 block discarded – undo
124 124
     				}
125 125
     			}
126 126
     			*/
127
-    			// Temperature
128
-    			if (preg_match('#^(M?[0-9]{2,})/(M?[0-9]{2,})$#', $piece, $matches)) {
129
-    				$temp = (float)$matches[1];
127
+				// Temperature
128
+				if (preg_match('#^(M?[0-9]{2,})/(M?[0-9]{2,})$#', $piece, $matches)) {
129
+					$temp = (float)$matches[1];
130 130
 				if ($matches[1]{0} == 'M') {
131 131
 					$temp = ((float)substr($matches[1], 1)) * -1;
132 132
 				}
133
-    				$result['temperature'] = $temp;
134
-    				$dew = (float)$matches[2];
133
+					$result['temperature'] = $temp;
134
+					$dew = (float)$matches[2];
135 135
 				if ($matches[2]{0} == 'M') {
136 136
 					$dew = ((float)substr($matches[2], 1)) * -1;
137 137
 				}
138 138
 				$result['dew'] = $dew;
139
-    			}
140
-    			// QNH
141
-    			if (preg_match('#^(A|Q)([0-9]{4})$#', $piece, $matches)) {
142
-    			// #^(Q|A)(////|[0-9]{4})( )#
143
-    				if ($matches[1] == 'Q') {
144
-    					// hPa
145
-    					$result['QNH'] = $matches[2];
146
-    				} else {
147
-    					// inHg
148
-    					$result['QNH'] = round(($matches[2] / 100)*33.86389,2);
149 139
 				}
150
-    				/*
140
+				// QNH
141
+				if (preg_match('#^(A|Q)([0-9]{4})$#', $piece, $matches)) {
142
+				// #^(Q|A)(////|[0-9]{4})( )#
143
+					if ($matches[1] == 'Q') {
144
+						// hPa
145
+						$result['QNH'] = $matches[2];
146
+					} else {
147
+						// inHg
148
+						$result['QNH'] = round(($matches[2] / 100)*33.86389,2);
149
+				}
150
+					/*
151 151
     				$result['QNH'] = $matches[1] == 'Q' ? $matches[2] : ($matches[2] / 100);
152 152
     				$result['QNH_format'] = $matches[1] == 'Q' ? 'hPa' : 'inHg';
153 153
     				*/
154
-    			}
155
-                     /*
154
+				}
155
+					 /*
156 156
     			// Wind Direction
157 157
     			if (preg_match('#^([0-9]{3})V([0-9]{3})$#', $piece, $matches)) {
158 158
     				$result['wind_direction'] = $matches[1];
@@ -163,9 +163,9 @@  discard block
 block discarded – undo
163 163
     				$result['speed_variable'] = $matches[1];
164 164
     			}
165 165
     			*/
166
-    			// Visibility
167
-    			if (preg_match('#^([0-9]{4})|(([0-9]{1,4})SM)$#', $piece, $matches)) {
168
-    				if (isset($matches[3]) && strlen($matches[3]) > 0) {
166
+				// Visibility
167
+				if (preg_match('#^([0-9]{4})|(([0-9]{1,4})SM)$#', $piece, $matches)) {
168
+					if (isset($matches[3]) && strlen($matches[3]) > 0) {
169 169
 					$result['visibility'] = (float)$matches[3] * 1609.34;
170 170
 				} else {
171 171
 					if ($matches[1] == '9999') {
@@ -178,26 +178,26 @@  discard block
 block discarded – undo
178 178
 					$result['visibility'] = '> 10000';
179 179
 					$result['weather'] = "CAVOK";
180 180
 				}
181
-    			}
182
-    			// Cloud Coverage
183
-    			if (preg_match('#^(SKC|CLR|FEW|SCT|BKN|OVC|VV)([0-9]{3})(CB|TCU|CU|CI)?$#', $piece, $matches)) {
184
-    				//$this->addCloudCover($matches[1], ((float)$matches[2]) * 100, isset($matches[3]) ? $matches[3] : '');
185
-    				$type = $matches[1];
186
-    				if ($type == 'SKC') $cloud['type'] = 'No cloud/Sky clear';
187
-    				elseif ($type == 'CLR') $cloud['type'] = 'No cloud below 12,000ft (3700m)';
188
-    				elseif ($type == 'NSC') $cloud['type'] = 'No significant cloud';
189
-    				elseif ($type == 'FEW') $cloud['type'] = 'Few';
190
-    				elseif ($type == 'SCT') $cloud['type'] = 'Scattered';
191
-    				elseif ($type == 'BKN') $cloud['type'] = 'Broken';
192
-    				elseif ($type == 'OVC') $cloud['type'] = 'Overcast/Full cloud coverage';
193
-    				elseif ($type == 'VV') $cloud['type'] = 'Vertical visibility';
194
-    				$cloud['type_code'] = $type;
195
-    				$cloud['level'] = round(((float)$matches[2]) * 100 * 0.3048);
196
-    				$cloud['significant'] = isset($matches[3]) ? $matches[3] : '';
197
-    				$result['cloud'][] = $cloud;
198
-    			}
199
-    			// RVR
200
-    			 if (preg_match('#^(R.+)/([M|P])?(\d{4})(?:V(\d+)|[UDN])?(FT)?$#', $piece, $matches)) {
181
+				}
182
+				// Cloud Coverage
183
+				if (preg_match('#^(SKC|CLR|FEW|SCT|BKN|OVC|VV)([0-9]{3})(CB|TCU|CU|CI)?$#', $piece, $matches)) {
184
+					//$this->addCloudCover($matches[1], ((float)$matches[2]) * 100, isset($matches[3]) ? $matches[3] : '');
185
+					$type = $matches[1];
186
+					if ($type == 'SKC') $cloud['type'] = 'No cloud/Sky clear';
187
+					elseif ($type == 'CLR') $cloud['type'] = 'No cloud below 12,000ft (3700m)';
188
+					elseif ($type == 'NSC') $cloud['type'] = 'No significant cloud';
189
+					elseif ($type == 'FEW') $cloud['type'] = 'Few';
190
+					elseif ($type == 'SCT') $cloud['type'] = 'Scattered';
191
+					elseif ($type == 'BKN') $cloud['type'] = 'Broken';
192
+					elseif ($type == 'OVC') $cloud['type'] = 'Overcast/Full cloud coverage';
193
+					elseif ($type == 'VV') $cloud['type'] = 'Vertical visibility';
194
+					$cloud['type_code'] = $type;
195
+					$cloud['level'] = round(((float)$matches[2]) * 100 * 0.3048);
196
+					$cloud['significant'] = isset($matches[3]) ? $matches[3] : '';
197
+					$result['cloud'][] = $cloud;
198
+				}
199
+				// RVR
200
+				 if (preg_match('#^(R.+)/([M|P])?(\d{4})(?:V(\d+)|[UDN])?(FT)?$#', $piece, $matches)) {
201 201
 				$rvr['runway'] = $matches[1];
202 202
 				$rvr['assessment'] = $matches[2];
203 203
 				$rvr['rvr'] = $matches[3];
@@ -206,33 +206,33 @@  discard block
 block discarded – undo
206 206
 				$result['RVR'] = $rvr;
207 207
 			}
208 208
     			
209
-    			//if (preg_match('#^(R[A-Z0-9]{2,3})/([0-9]{4})(V([0-9]{4}))?(FT)?$#', $piece, $matches)) {
210
-    			if (preg_match('#^R(\d{2}[LRC]?)/([\d/])([\d/])([\d/]{2})([\d/]{2})$#', $piece, $matches)) {
211
-    				//print_r($matches);
212
-    				// https://github.com/davidmegginson/metar-taf/blob/master/Metar.php
213
-    				$result['RVR']['runway'] = $matches[1];
214
-        			$result['RVR']['deposits'] = $matches[2];
215
-        			$result['RVR']['extent'] = $matches[3];
216
-        			$result['RVR']['depth'] = $matches[4];
217
-        			$result['RVR']['friction'] = $matches[5];
218
-    			}
219
-    			if (preg_match('#^(R[A-Z0-9]{2,3})/([0-9]{4})(V([0-9]{4}))?(FT)?$#', $piece, $matches)) {
220
-    				//echo $piece;
221
-    				//print_r($matches);
222
-    				if (isset($matches[5])) $range = array('exact' => (float)$matches[2], 'unit' => $matches[5] ? 'FT' : 'M');
223
-    				else $range = array('exact' => (float)$matches[2], 'unit' => 'M');
209
+				//if (preg_match('#^(R[A-Z0-9]{2,3})/([0-9]{4})(V([0-9]{4}))?(FT)?$#', $piece, $matches)) {
210
+				if (preg_match('#^R(\d{2}[LRC]?)/([\d/])([\d/])([\d/]{2})([\d/]{2})$#', $piece, $matches)) {
211
+					//print_r($matches);
212
+					// https://github.com/davidmegginson/metar-taf/blob/master/Metar.php
213
+					$result['RVR']['runway'] = $matches[1];
214
+					$result['RVR']['deposits'] = $matches[2];
215
+					$result['RVR']['extent'] = $matches[3];
216
+					$result['RVR']['depth'] = $matches[4];
217
+					$result['RVR']['friction'] = $matches[5];
218
+				}
219
+				if (preg_match('#^(R[A-Z0-9]{2,3})/([0-9]{4})(V([0-9]{4}))?(FT)?$#', $piece, $matches)) {
220
+					//echo $piece;
221
+					//print_r($matches);
222
+					if (isset($matches[5])) $range = array('exact' => (float)$matches[2], 'unit' => $matches[5] ? 'FT' : 'M');
223
+					else $range = array('exact' => (float)$matches[2], 'unit' => 'M');
224 224
 				if (isset($matches[3])) {
225 225
 					$range = Array(
226
-					    'from' => (float)$matches[2],
227
-					    'to'   => (float)$matches[4],
228
-					    'unit' => $matches[5] ? 'FT' : 'M'
226
+						'from' => (float)$matches[2],
227
+						'to'   => (float)$matches[4],
228
+						'unit' => $matches[5] ? 'FT' : 'M'
229 229
 					);
230 230
 				}
231 231
 				$result['RVR'] = $matches[1];
232 232
 				$result['RVR_range'] = $range;
233
-    			}
234
-    			// Weather
235
-    			if (preg_match($regWeather, $piece, $matches)) {
233
+				}
234
+				// Weather
235
+				if (preg_match($regWeather, $piece, $matches)) {
236 236
 				$text = Array();
237 237
 				switch ($matches[1]) {
238 238
 					case '+':
@@ -255,35 +255,35 @@  discard block
 block discarded – undo
255 255
 				}
256 256
 				if (!isset($result['weather'])) $result['weather'] = implode(' ', $text);
257 257
 				else $result['weather'] = $result['weather'].' / '.implode(' ', $text);
258
-    			}
259
-    		}
260
-    		return $result;
258
+				}
259
+			}
260
+			return $result;
261 261
         
262
-        }
262
+		}
263 263
         
264 264
 	public function getMETAR($icao) {
265
-    		global $globalMETARcycle, $globalDBdriver;
266
-    		if (isset($globalMETARcycle) && $globalMETARcycle) {
267
-            		$query = "SELECT * FROM metar WHERE metar_location = :icao";
268
-                } else {
269
-            		if ($globalDBdriver == 'mysql') $query = "SELECT * FROM metar WHERE metar_location = :icao AND metar_date >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 10 HOUR) LIMIT 1";
270
-            		elseif ($globalDBdriver == 'pgsql') $query = "SELECT * FROM metar WHERE metar_location = :icao AND metar_date >= now() AT TIMEZONE 'UTC' - '10 HOUR'->INTERVAL LIMIT 0,1";
271
-                }
272
-                $query_values = array(':icao' => $icao);
273
-                 try {
274
-                        $sth = $this->db->prepare($query);
275
-                        $sth->execute($query_values);
276
-                } catch(PDOException $e) {
277
-                        return "error : ".$e->getMessage();
278
-                }
279
-                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
280
-                if ((!isset($globalMETARcyle) || $globalMETARcycle === false) && count($all) == 0) {
281
-            		$all = $this->downloadMETAR($icao);
282
-                }
283
-                return $all;
284
-        }
265
+			global $globalMETARcycle, $globalDBdriver;
266
+			if (isset($globalMETARcycle) && $globalMETARcycle) {
267
+					$query = "SELECT * FROM metar WHERE metar_location = :icao";
268
+				} else {
269
+					if ($globalDBdriver == 'mysql') $query = "SELECT * FROM metar WHERE metar_location = :icao AND metar_date >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 10 HOUR) LIMIT 1";
270
+					elseif ($globalDBdriver == 'pgsql') $query = "SELECT * FROM metar WHERE metar_location = :icao AND metar_date >= now() AT TIMEZONE 'UTC' - '10 HOUR'->INTERVAL LIMIT 0,1";
271
+				}
272
+				$query_values = array(':icao' => $icao);
273
+				 try {
274
+						$sth = $this->db->prepare($query);
275
+						$sth->execute($query_values);
276
+				} catch(PDOException $e) {
277
+						return "error : ".$e->getMessage();
278
+				}
279
+				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
280
+				if ((!isset($globalMETARcyle) || $globalMETARcycle === false) && count($all) == 0) {
281
+					$all = $this->downloadMETAR($icao);
282
+				}
283
+				return $all;
284
+		}
285 285
 
286
-       public function addMETAR($location,$metar,$date) {
286
+	   public function addMETAR($location,$metar,$date) {
287 287
 		global $globalDBdriver;
288 288
 		$date = date('Y-m-d H:i:s',strtotime($date));
289 289
 		if ($globalDBdriver == 'mysql') {
@@ -291,98 +291,98 @@  discard block
 block discarded – undo
291 291
 		} else {
292 292
 			$query = "UPDATE metar SET metar_date = :date, metar = metar WHERE metar_location = :location;INSERT INTO metar (metar_location,metar_date,metar) SELECT :location,:date,:metar WHERE NOT EXISTS (SELECT 1 FROM metar WHERE metar_location = :location);";
293 293
 		}
294
-                $query_values = array(':location' => $location,':date' => $date,':metar' => $metar);
295
-                 try {
296
-                        $sth = $this->db->prepare($query);
297
-                        $sth->execute($query_values);
298
-                } catch(PDOException $e) {
299
-                        return "error : ".$e->getMessage();
300
-                }
301
-        }
294
+				$query_values = array(':location' => $location,':date' => $date,':metar' => $metar);
295
+				 try {
296
+						$sth = $this->db->prepare($query);
297
+						$sth->execute($query_values);
298
+				} catch(PDOException $e) {
299
+						return "error : ".$e->getMessage();
300
+				}
301
+		}
302 302
 
303
-       public function deleteMETAR($id) {
304
-                $query = "DELETE FROM metar WHERE id = :id";
305
-                $query_values = array(':id' => $id);
306
-                 try {
307
-                        $sth = $this->db->prepare($query);
308
-                        $sth->execute($query_values);
309
-                } catch(PDOException $e) {
310
-                        return "error : ".$e->getMessage();
311
-                }
312
-        }
313
-       public function deleteAllMETARLocation() {
314
-                $query = "DELETE FROM metar";
315
-                 try {
316
-                        $sth = $this->db->prepare($query);
317
-                        $sth->execute();
318
-                } catch(PDOException $e) {
319
-                        return "error : ".$e->getMessage();
320
-                }
321
-        }
303
+	   public function deleteMETAR($id) {
304
+				$query = "DELETE FROM metar WHERE id = :id";
305
+				$query_values = array(':id' => $id);
306
+				 try {
307
+						$sth = $this->db->prepare($query);
308
+						$sth->execute($query_values);
309
+				} catch(PDOException $e) {
310
+						return "error : ".$e->getMessage();
311
+				}
312
+		}
313
+	   public function deleteAllMETARLocation() {
314
+				$query = "DELETE FROM metar";
315
+				 try {
316
+						$sth = $this->db->prepare($query);
317
+						$sth->execute();
318
+				} catch(PDOException $e) {
319
+						return "error : ".$e->getMessage();
320
+				}
321
+		}
322 322
         
323
-        public function addMETARCycle() {
324
-    		global $globalDebug, $globalIVAO;
325
-    		if (isset($globalDebug) && $globalDebug) echo "Downloading METAR cycle...";
326
-    		date_default_timezone_set("UTC");
327
-    		$Common = new Common();
328
-    		if (isset($globalIVAO) && $globalIVAO) {
329
-        		$cycle = $Common->getData('http://wx.ivao.aero/metar.php');
330
-    		} else {
323
+		public function addMETARCycle() {
324
+			global $globalDebug, $globalIVAO;
325
+			if (isset($globalDebug) && $globalDebug) echo "Downloading METAR cycle...";
326
+			date_default_timezone_set("UTC");
327
+			$Common = new Common();
328
+			if (isset($globalIVAO) && $globalIVAO) {
329
+				$cycle = $Common->getData('http://wx.ivao.aero/metar.php');
330
+			} else {
331 331
 			$cycle = $Common->getData('http://weather.noaa.gov/pub/data/observations/metar/cycles/'.date('H').'Z.TXT');
332
-    		}
333
-    		if (isset($globalDebug) && $globalDebug) echo "Done - Updating DB...";
334
-    		$date = '';
335
-    		foreach(explode("\n",$cycle) as $line) {
336
-    			if (preg_match('#^([0-9]{4})/([0-9]{2})/([0-9]{2}) ([0-9]{2}):([0-9]{2})$#',$line)) {
337
-    				//echo "date : ".$line."\n";
338
-    				$date = $line;
339
-    			} elseif ($line != '') {
340
-    			    //$this->parse($line);
341
-    			    //echo $line;
342
-    			    if ($date == '') $date = date('Y/m/d H:m');
343
-    			    $pos = 0;
344
-    			    $pieces = preg_split('/\s/',$line);
345
-    			    if ($pieces[0] == 'METAR') $pos++;
346
-    			    if (strlen($pieces[$pos]) != 4) $pos++;
347
-	        	    $location = $pieces[$pos];
348
-	        	    echo $this->addMETAR($location,$line,$date);
349
-    			}
350
-    			//echo $line."\n";
351
-    		}
352
-    		if (isset($globalDebug) && $globalDebug) echo "Done\n";
332
+			}
333
+			if (isset($globalDebug) && $globalDebug) echo "Done - Updating DB...";
334
+			$date = '';
335
+			foreach(explode("\n",$cycle) as $line) {
336
+				if (preg_match('#^([0-9]{4})/([0-9]{2})/([0-9]{2}) ([0-9]{2}):([0-9]{2})$#',$line)) {
337
+					//echo "date : ".$line."\n";
338
+					$date = $line;
339
+				} elseif ($line != '') {
340
+					//$this->parse($line);
341
+					//echo $line;
342
+					if ($date == '') $date = date('Y/m/d H:m');
343
+					$pos = 0;
344
+					$pieces = preg_split('/\s/',$line);
345
+					if ($pieces[0] == 'METAR') $pos++;
346
+					if (strlen($pieces[$pos]) != 4) $pos++;
347
+					$location = $pieces[$pos];
348
+					echo $this->addMETAR($location,$line,$date);
349
+				}
350
+				//echo $line."\n";
351
+			}
352
+			if (isset($globalDebug) && $globalDebug) echo "Done\n";
353 353
         
354
-        }
355
-        public function downloadMETAR($icao) {
356
-    		global $globalMETARurl;
357
-    		if ($globalMETARurl == '') return array();
358
-    		date_default_timezone_set("UTC");
359
-    		$Common = new Common();
360
-    		$url = str_replace('{icao}',$icao,$globalMETARurl);
361
-    		$cycle = $Common->getData($url);
362
-    		$date = '';
363
-    		foreach(explode("\n",$cycle) as $line) {
364
-    			if (preg_match('#^([0-9]{4})/([0-9]{2})/([0-9]{2}) ([0-9]{2}):([0-9]{2})$#',$line)) {
365
-    				echo "date : ".$line."\n";
366
-    				$date = $line;
367
-    			} elseif ($line != '') {
368
-    			    //$this->parse($line);
369
-    			    //echo $line;
370
-    			    if ($date == '') $date = date('Y/m/d H:m');
371
-    			    $pos = 0;
372
-    			    $pieces = preg_split('/\s/',$line);
373
-    			    if ($pieces[0] == 'METAR') $pos++;
374
-    			    if (strlen($pieces[$pos]) != 4) $pos++;
375
-	        	    $location = $pieces[$pos];
376
-	        	    if (strlen($location == 4)) {
377
-	        		$this->addMETAR($location,$line,$date);
378
-	        		return array('0' => array('metar_date' => $date, 'metar_location' => $location, 'metar' => $line));
379
-	        	    } else return array();
380
-    			}
381
-    			//echo $line."\n";
382
-    		}
383
-    		return array();
354
+		}
355
+		public function downloadMETAR($icao) {
356
+			global $globalMETARurl;
357
+			if ($globalMETARurl == '') return array();
358
+			date_default_timezone_set("UTC");
359
+			$Common = new Common();
360
+			$url = str_replace('{icao}',$icao,$globalMETARurl);
361
+			$cycle = $Common->getData($url);
362
+			$date = '';
363
+			foreach(explode("\n",$cycle) as $line) {
364
+				if (preg_match('#^([0-9]{4})/([0-9]{2})/([0-9]{2}) ([0-9]{2}):([0-9]{2})$#',$line)) {
365
+					echo "date : ".$line."\n";
366
+					$date = $line;
367
+				} elseif ($line != '') {
368
+					//$this->parse($line);
369
+					//echo $line;
370
+					if ($date == '') $date = date('Y/m/d H:m');
371
+					$pos = 0;
372
+					$pieces = preg_split('/\s/',$line);
373
+					if ($pieces[0] == 'METAR') $pos++;
374
+					if (strlen($pieces[$pos]) != 4) $pos++;
375
+					$location = $pieces[$pos];
376
+					if (strlen($location == 4)) {
377
+					$this->addMETAR($location,$line,$date);
378
+					return array('0' => array('metar_date' => $date, 'metar_location' => $location, 'metar' => $line));
379
+					} else return array();
380
+				}
381
+				//echo $line."\n";
382
+			}
383
+			return array();
384 384
         
385
-        }
385
+		}
386 386
 }
387 387
 /*
388 388
 $METAR = new METAR();
Please login to merge, or discard this patch.