@@ -4,55 +4,55 @@ |
||
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); |
@@ -6,706 +6,706 @@ |
||
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) { |
@@ -7,90 +7,90 @@ discard block |
||
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 |
||
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) { |
@@ -11,11 +11,11 @@ discard block |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
@@ -6,13 +6,13 @@ discard block |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 | { |
@@ -16,11 +16,11 @@ discard block |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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); |
@@ -1,8 +1,8 @@ discard block |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 | ?> |
@@ -8,199 +8,199 @@ discard block |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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']); |
@@ -7,107 +7,107 @@ discard block |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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 |
||
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(); |