Complex classes like Spotter often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes. You can also have a look at the cohesion graph to spot any un-connected, or weakly-connected components.
Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.
While breaking up the class, it is a good idea to analyze how other classes use Spotter, and based on these observations, apply Extract Interface, too.
1 | <?php |
||
7 | class Spotter{ |
||
8 | public $aircraft_correct_icaotype = array('CL64' => 'CL60', |
||
9 | 'F9LX' => 'F900', |
||
10 | 'K35T' => 'K35R', |
||
11 | 'F5EX' => 'FA50', |
||
12 | 'G102' => 'GLID', |
||
13 | 'LJ36' => 'LJ35', |
||
14 | 'G500' => 'EGRT', |
||
15 | 'A300' => 'A30B', |
||
16 | 'ROT' => 'B77W', |
||
17 | 'BPN' => 'B772', |
||
18 | '0011' => 'B77W', |
||
19 | 'F9DX' => 'F900', |
||
20 | 'B757' => 'B752', |
||
21 | '4/05' => 'A332', |
||
22 | 'F/A3' => 'A320', |
||
23 | 'F2EX' => 'F2TH', |
||
24 | 'EA55' => 'EA50', |
||
25 | 'B73B' => 'B737', |
||
26 | 'G450' => 'GLF4', |
||
27 | 'H25X' => 'H25B', |
||
28 | 'E175' => 'E75S', |
||
29 | 'B777' => 'B77W', |
||
30 | 'B777F' => 'B77W', |
||
31 | 'BAE' => 'B461', |
||
32 | 'BEECHCRAFT' => 'B190', |
||
33 | 'C172R' => 'C172', |
||
34 | 'CESSNA' => 'C550', |
||
35 | 'CONCORDE' => 'CONC', |
||
36 | 'CRJ200' => 'CRJ2', |
||
37 | 'CRJ700' => 'CRJ7', |
||
38 | 'A300B4' => 'A30B', |
||
39 | 'MD' => 'MD11', |
||
40 | 'DHC' => 'DH8A', |
||
41 | 'EMB' => 'E550', |
||
42 | 'A225' => 'AN225', |
||
43 | 'A140' => 'AN124', |
||
44 | 'F406GC' => 'F406', |
||
45 | 'RW500' => 'AC50', |
||
46 | 'S340A' => 'SF34', |
||
47 | 'F2LX' => 'F2TH', |
||
48 | 'CL65' => 'CL60', |
||
49 | 'A380' => 'A388', |
||
50 | 'G550' => 'GLF5', |
||
51 | 'F9EX' => 'F900', |
||
52 | 'E195' => 'E190', |
||
53 | 'H750' => 'H25B', |
||
54 | '777' => 'B772', |
||
55 | '747' => 'B748', |
||
56 | 'B747' => 'B744', |
||
57 | 'B757' => 'B753', |
||
58 | 'B767' => 'B763', |
||
59 | 'PA39' => 'PA30', |
||
60 | 'H900' => 'H25B', |
||
61 | 'AN74' => 'AN72', |
||
62 | 'CL85' => 'CRJ2', |
||
63 | 'G400' => 'GLF4', |
||
64 | 'CL61' => 'CL60', |
||
65 | 'F2TS' => 'F2TH', |
||
66 | 'Z602' => 'CH60', |
||
67 | 'G100' => 'ASTR'); |
||
68 | |||
69 | |||
70 | public $db; |
||
71 | |||
72 | public function __construct($dbc = null) { |
||
73 | $Connection = new Connection($dbc); |
||
74 | $this->db = $Connection->db(); |
||
75 | } |
||
76 | |||
77 | /** |
||
78 | * Get SQL query part for filter used |
||
79 | * @param Array $filter the filter |
||
80 | * @return Array the SQL part |
||
81 | */ |
||
82 | public function getFilter($filter = array(),$where = false,$and = false) { |
||
83 | global $globalFilter, $globalStatsFilters, $globalFilterName, $globalDBdriver; |
||
84 | $filters = array(); |
||
85 | if (is_array($globalStatsFilters) && isset($globalStatsFilters[$globalFilterName])) { |
||
86 | if (isset($globalStatsFilters[$globalFilterName][0]['source'])) { |
||
87 | $filters = $globalStatsFilters[$globalFilterName]; |
||
88 | } else { |
||
89 | $filter = array_merge($filter,$globalStatsFilters[$globalFilterName]); |
||
90 | } |
||
91 | } |
||
92 | if (isset($filter[0]['source'])) { |
||
93 | $filters = array_merge($filters,$filter); |
||
94 | } |
||
95 | if (is_array($globalFilter)) $filter = array_merge($filter,$globalFilter); |
||
96 | $filter_query_join = ''; |
||
97 | $filter_query_where = ''; |
||
98 | foreach($filters as $flt) { |
||
99 | if (isset($flt['airlines']) && !empty($flt['airlines'])) { |
||
100 | if ($flt['airlines'][0] != '') { |
||
101 | if (isset($flt['source'])) { |
||
102 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.airline_icao IN ('".implode("','",$flt['airlines'])."') AND spotter_output.format_source IN ('".implode("','",$flt['source'])."')) saf ON saf.flightaware_id = spotter_output.flightaware_id"; |
||
103 | } else { |
||
104 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.airline_icao IN ('".implode("','",$flt['airlines'])."')) saf ON saf.flightaware_id = spotter_output.flightaware_id"; |
||
105 | } |
||
106 | } |
||
107 | } |
||
108 | if (isset($flt['pilots_id']) && !empty($flt['pilots_id'])) { |
||
109 | if (isset($flt['source'])) { |
||
110 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.pilot_id IN ('".implode("','",$flt['pilots_id'])."') AND spotter_output.format_source IN ('".implode("','",$flt['source'])."')) spf ON spf.flightaware_id = spotter_output.flightaware_id"; |
||
111 | } else { |
||
112 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.pilot_id IN ('".implode("','",$flt['pilots_id'])."')) spf ON spf.flightaware_id = spotter_output.flightaware_id"; |
||
113 | } |
||
114 | } |
||
115 | if (isset($flt['idents']) && !empty($flt['idents'])) { |
||
116 | if (isset($flt['source'])) { |
||
117 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.ident IN ('".implode("','",$flt['idents'])."') AND spotter_output.format_source IN ('".implode("','",$flt['source'])."')) spfi ON spfi.flightaware_id = spotter_output.flightaware_id"; |
||
118 | } else { |
||
119 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.ident IN ('".implode("','",$flt['idents'])."')) spfi ON spfi.flightaware_id = spotter_output.flightaware_id"; |
||
120 | } |
||
121 | } |
||
122 | if (isset($flt['registrations']) && !empty($flt['registrations'])) { |
||
123 | if (isset($flt['source'])) { |
||
124 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.registration IN ('".implode("','",$flt['registrations'])."') AND spotter_output.format_source IN ('".implode("','",$flt['source'])."')) sre ON sre.flightaware_id = spotter_output.flightaware_id"; |
||
125 | } else { |
||
126 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.registration IN ('".implode("','",$flt['registrations'])."')) sre ON sre.flightaware_id = spotter_output.flightaware_id"; |
||
127 | } |
||
128 | } |
||
129 | if ((isset($flt['airlines']) && empty($flt['airlines']) && isset($flt['pilots_id']) && empty($flt['pilots_id']) && isset($flt['idents']) && empty($flt['idents']) && isset($flt['registrations']) && empty($flt['registrations'])) || (!isset($flt['airlines']) && !isset($flt['pilots_id']) && !isset($flt['idents']) && !isset($flt['registrations']))) { |
||
130 | if (isset($flt['source'])) { |
||
131 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.format_source IN ('".implode("','",$flt['source'])."')) sf ON sf.flightaware_id = spotter_output.flightaware_id"; |
||
132 | } |
||
133 | } |
||
134 | } |
||
135 | if (isset($filter['airlines']) && !empty($filter['airlines'])) { |
||
136 | if ($filter['airlines'][0] != '') { |
||
137 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.airline_icao IN ('".implode("','",$filter['airlines'])."')) sof ON sof.flightaware_id = spotter_output.flightaware_id"; |
||
138 | } |
||
139 | } |
||
140 | if (isset($filter['airlinestype']) && !empty($filter['airlinestype'])) { |
||
141 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.airline_type = '".$filter['airlinestype']."') sa ON sa.flightaware_id = spotter_output.flightaware_id "; |
||
142 | } |
||
143 | if (isset($filter['alliance']) && !empty($filter['alliance'])) { |
||
144 | $filter_query_join .= " INNER JOIN (SELECT icao FROM airlines WHERE alliance = '".$filter['alliance']."') sal ON sal.icao = spotter_output.airline_icao "; |
||
145 | } |
||
146 | if (isset($filter['pilots_id']) && !empty($filter['pilots_id'])) { |
||
147 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.pilot_id IN ('".implode("','",$filter['pilots_id'])."')) spid ON spid.flightaware_id = spotter_output.flightaware_id"; |
||
148 | } |
||
149 | if (isset($filter['source']) && !empty($filter['source'])) { |
||
150 | $filter_query_where .= " AND format_source IN ('".implode("','",$filter['source'])."')"; |
||
151 | } |
||
152 | if (isset($filter['ident']) && !empty($filter['ident'])) { |
||
153 | $filter_query_where .= " AND ident = '".$filter['ident']."'"; |
||
154 | } |
||
155 | if (isset($filter['source_aprs']) && !empty($filter['source_aprs'])) { |
||
156 | $filter_query_where .= " AND format_source = 'aprs' AND source_name IN ('".implode("','",$filter['source_aprs'])."')"; |
||
157 | } |
||
158 | if (isset($filter['year']) && $filter['year'] != '') { |
||
159 | if ($globalDBdriver == 'mysql') { |
||
160 | $filter_query_where .= " AND YEAR(spotter_output.date) = '".$filter['year']."'"; |
||
161 | } else { |
||
162 | $filter_query_where .= " AND EXTRACT(YEAR FROM spotter_output.date) = '".$filter['year']."'"; |
||
163 | } |
||
164 | } |
||
165 | if (isset($filter['month']) && $filter['month'] != '') { |
||
166 | if ($globalDBdriver == 'mysql') { |
||
167 | $filter_query_where .= " AND MONTH(spotter_output.date) = '".$filter['month']."'"; |
||
168 | } else { |
||
169 | $filter_query_where .= " AND EXTRACT(MONTH FROM spotter_output.date) = '".$filter['month']."'"; |
||
170 | } |
||
171 | } |
||
172 | if (isset($filter['day']) && $filter['day'] != '') { |
||
173 | if ($globalDBdriver == 'mysql') { |
||
174 | $filter_query_where .= " AND DAY(spotter_output.date) = '".$filter['day']."'"; |
||
175 | } else { |
||
176 | $filter_query_where .= " AND EXTRACT(DAY FROM spotter_output.date) = '".$filter['day']."'"; |
||
177 | } |
||
178 | } |
||
179 | if ($filter_query_where == '' && $where) $filter_query_where = ' WHERE'; |
||
180 | elseif ($filter_query_where != '' && $and) $filter_query_where .= ' AND'; |
||
181 | if ($filter_query_where != '') { |
||
182 | $filter_query_where = preg_replace('/^ AND/',' WHERE',$filter_query_where); |
||
183 | } |
||
184 | $filter_query = $filter_query_join.$filter_query_where; |
||
185 | return $filter_query; |
||
186 | } |
||
187 | |||
188 | /** |
||
189 | * Executes the SQL statements to get the spotter information |
||
190 | * |
||
191 | * @param String $query the SQL query |
||
192 | * @param Array $params parameter of the query |
||
193 | * @param String $limitQuery the limit query |
||
194 | * @return Array the spotter information |
||
195 | * |
||
196 | */ |
||
197 | public function getDataFromDB($query, $params = array(), $limitQuery = '',$schedules = false) |
||
198 | { |
||
199 | global $globalSquawkCountry, $globalIVAO, $globalVATSIM, $globalphpVMS, $globalAirlinesSource, $globalVAM; |
||
200 | $Image = new Image($this->db); |
||
201 | $Schedule = new Schedule($this->db); |
||
202 | $ACARS = new ACARS($this->db); |
||
203 | if (!isset($globalIVAO)) $globalIVAO = FALSE; |
||
204 | if (!isset($globalVATSIM)) $globalVATSIM = FALSE; |
||
205 | if (!isset($globalphpVMS)) $globalphpVMS = FALSE; |
||
206 | if (!isset($globalVAM)) $globalVAM = FALSE; |
||
207 | date_default_timezone_set('UTC'); |
||
208 | |||
209 | if (!is_string($query)) |
||
210 | { |
||
211 | return false; |
||
212 | } |
||
213 | |||
214 | if ($limitQuery != "") |
||
215 | { |
||
216 | if (!is_string($limitQuery)) |
||
217 | { |
||
218 | return false; |
||
219 | } |
||
220 | } |
||
221 | |||
222 | |||
223 | try { |
||
224 | $sth = $this->db->prepare($query.$limitQuery); |
||
225 | $sth->execute($params); |
||
226 | } catch (PDOException $e) { |
||
227 | printf("Invalid query : %s\nWhole query: %s\n",$e->getMessage(), $query.$limitQuery); |
||
228 | exit(); |
||
229 | } |
||
230 | |||
231 | // $num_rows = count($sth->fetchAll()); |
||
232 | $num_rows = 0; |
||
233 | |||
234 | $spotter_array = array(); |
||
235 | |||
236 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
237 | { |
||
238 | $num_rows++; |
||
239 | $temp_array = array(); |
||
240 | if (isset($row['spotter_live_id'])) { |
||
241 | //$temp_array['spotter_id'] = $row['spotter_live_id']; |
||
242 | $temp_array['spotter_id'] = $this->getSpotterIDBasedOnFlightAwareID($row['flightaware_id']); |
||
243 | } elseif (isset($row['spotter_archive_id'])) { |
||
244 | $temp_array['spotter_id'] = $row['spotter_archive_id']; |
||
245 | } elseif (isset($row['spotter_archive_output_id'])) { |
||
246 | $temp_array['spotter_id'] = $row['spotter_archive_output_id']; |
||
247 | } elseif (isset($row['spotter_id'])) { |
||
248 | $temp_array['spotter_id'] = $row['spotter_id']; |
||
249 | } else { |
||
250 | $temp_array['spotter_id'] = ''; |
||
251 | } |
||
252 | if (isset($row['flightaware_id'])) $temp_array['flightaware_id'] = $row['flightaware_id']; |
||
253 | if (isset($row['modes'])) $temp_array['modes'] = $row['modes']; |
||
254 | $temp_array['ident'] = $row['ident']; |
||
255 | if (isset($row['registration']) && $row['registration'] != '') { |
||
256 | $temp_array['registration'] = $row['registration']; |
||
257 | } elseif (isset($temp_array['modes'])) { |
||
258 | $temp_array['registration'] = $this->getAircraftRegistrationBymodeS($temp_array['modes']); |
||
259 | } else $temp_array['registration'] = ''; |
||
260 | if (isset($row['aircraft_icao'])) $temp_array['aircraft_type'] = $row['aircraft_icao']; |
||
261 | |||
262 | $temp_array['departure_airport'] = $row['departure_airport_icao']; |
||
263 | $temp_array['arrival_airport'] = $row['arrival_airport_icao']; |
||
264 | if (isset($row['real_arrival_airport_icao']) && $row['real_arrival_airport_icao'] != NULL) $temp_array['real_arrival_airport'] = $row['real_arrival_airport_icao']; |
||
265 | if (isset($row['latitude'])) $temp_array['latitude'] = $row['latitude']; |
||
266 | if (isset($row['longitude'])) $temp_array['longitude'] = $row['longitude']; |
||
267 | /* |
||
268 | if (Connection->tableExists('countries')) { |
||
269 | $country_info = $this->getCountryFromLatitudeLongitude($temp_array['latitude'],$temp_array['longitude']); |
||
270 | if (is_array($country_info) && isset($country_info['name']) && isset($country_info['iso2'])) { |
||
271 | $temp_array['country'] = $country_info['name']; |
||
272 | $temp_array['country_iso2'] = $country_info['iso2']; |
||
273 | } |
||
274 | } |
||
275 | */ |
||
276 | if (isset($row['waypoints'])) $temp_array['waypoints'] = $row['waypoints']; |
||
277 | if (isset($row['format_source'])) $temp_array['format_source'] = $row['format_source']; |
||
278 | if (isset($row['route_stop']) && $row['route_stop'] != '') { |
||
279 | $temp_array['route_stop'] = $row['route_stop']; |
||
280 | $allroute = explode(' ',$row['route_stop']); |
||
281 | foreach ($allroute as $route) { |
||
282 | $route_airport_array = $this->getAllAirportInfo($route); |
||
283 | if (isset($route_airport_array[0]['name'])) { |
||
284 | $route_stop_details = array(); |
||
285 | $route_stop_details['airport_name'] = $route_airport_array[0]['name']; |
||
286 | $route_stop_details['airport_city'] = $route_airport_array[0]['city']; |
||
287 | $route_stop_details['airport_country'] = $route_airport_array[0]['country']; |
||
288 | $route_stop_details['airport_icao'] = $route_airport_array[0]['icao']; |
||
289 | $temp_array['route_stop_details'][] = $route_stop_details; |
||
290 | } |
||
291 | } |
||
292 | } |
||
293 | if (isset($row['altitude'])) $temp_array['altitude'] = $row['altitude']; |
||
294 | if (isset($row['heading'])) { |
||
295 | $temp_array['heading'] = $row['heading']; |
||
296 | $heading_direction = $this->parseDirection($row['heading']); |
||
297 | if (isset($heading_direction[0]['direction_fullname'])) $temp_array['heading_name'] = $heading_direction[0]['direction_fullname']; |
||
298 | } |
||
299 | if (isset($row['ground_speed'])) $temp_array['ground_speed'] = $row['ground_speed']; |
||
300 | $temp_array['image'] = ""; |
||
301 | $temp_array['image_thumbnail'] = ""; |
||
302 | $temp_array['image_source'] = ""; |
||
303 | $temp_array['image_copyright'] = ""; |
||
304 | |||
305 | if (isset($row['highlight'])) { |
||
306 | $temp_array['highlight'] = $row['highlight']; |
||
307 | } else $temp_array['highlight'] = ''; |
||
308 | |||
309 | if (isset($row['date'])) { |
||
310 | $dateArray = $this->parseDateString($row['date']); |
||
311 | if ($dateArray['seconds'] < 10) |
||
312 | { |
||
313 | $temp_array['date'] = "a few seconds ago"; |
||
314 | } elseif ($dateArray['seconds'] >= 5 && $dateArray['seconds'] < 30) |
||
315 | { |
||
316 | $temp_array['date'] = "half a minute ago"; |
||
317 | } elseif ($dateArray['seconds'] >= 30 && $dateArray['seconds'] < 60) |
||
318 | { |
||
319 | $temp_array['date'] = "about a minute ago"; |
||
320 | } elseif ($dateArray['minutes'] < 5) |
||
321 | { |
||
322 | $temp_array['date'] = "a few minutes ago"; |
||
323 | } elseif ($dateArray['minutes'] >= 5 && $dateArray['minutes'] < 60) |
||
324 | { |
||
325 | $temp_array['date'] = "about ".$dateArray['minutes']." minutes ago"; |
||
326 | } elseif ($dateArray['hours'] < 2) |
||
327 | { |
||
328 | $temp_array['date'] = "about an hour ago"; |
||
329 | } elseif ($dateArray['hours'] >= 2 && $dateArray['hours'] < 24) |
||
330 | { |
||
331 | $temp_array['date'] = "about ".$dateArray['hours']." hours ago"; |
||
332 | } else { |
||
333 | $temp_array['date'] = date("M j Y, g:i a",strtotime($row['date']." UTC")); |
||
334 | } |
||
335 | $temp_array['date_minutes_past'] = $dateArray['minutes']; |
||
336 | $temp_array['date_iso_8601'] = date("c",strtotime($row['date']." UTC")); |
||
337 | $temp_array['date_rfc_2822'] = date("r",strtotime($row['date']." UTC")); |
||
338 | $temp_array['date_unix'] = strtotime($row['date']." UTC"); |
||
339 | if (isset($row['last_seen']) && $row['last_seen'] != '') { |
||
340 | if (strtotime($row['last_seen']) > strtotime($row['date'])) { |
||
341 | $temp_array['duration'] = strtotime($row['last_seen']) - strtotime($row['date']); |
||
342 | $temp_array['last_seen_date_iso_8601'] = date("c",strtotime($row['last_seen']." UTC")); |
||
343 | $temp_array['last_seen_date_rfc_2822'] = date("r",strtotime($row['last_seen']." UTC")); |
||
344 | $temp_array['last_seen_date_unix'] = strtotime($row['last_seen']." UTC"); |
||
345 | } |
||
346 | } |
||
347 | } |
||
348 | |||
349 | if (isset($row['aircraft_name']) && $row['aircraft_name'] != '' && isset($row['aircraft_shadow']) && $row['aircraft_shadow'] != '') { |
||
350 | $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
351 | $temp_array['aircraft_manufacturer'] = $row['aircraft_manufacturer']; |
||
352 | if (isset($row['aircraft_shadow'])) { |
||
353 | $temp_array['aircraft_shadow'] = $row['aircraft_shadow']; |
||
354 | } |
||
355 | } elseif (isset($row['aircraft_icao'])) { |
||
356 | $aircraft_array = $this->getAllAircraftInfo($row['aircraft_icao']); |
||
357 | if (count($aircraft_array) > 0) { |
||
358 | $temp_array['aircraft_name'] = $aircraft_array[0]['type']; |
||
359 | $temp_array['aircraft_manufacturer'] = $aircraft_array[0]['manufacturer']; |
||
360 | |||
361 | if ($aircraft_array[0]['aircraft_shadow'] != NULL) { |
||
362 | $temp_array['aircraft_shadow'] = $aircraft_array[0]['aircraft_shadow']; |
||
363 | } else $temp_array['aircraft_shadow'] = 'default.png'; |
||
364 | } else { |
||
365 | $temp_array['aircraft_shadow'] = 'default.png'; |
||
366 | $temp_array['aircraft_name'] = 'N/A'; |
||
367 | $temp_array['aircraft_manufacturer'] = 'N/A'; |
||
368 | } |
||
369 | } |
||
370 | $fromsource = NULL; |
||
371 | if (isset($globalAirlinesSource) && $globalAirlinesSource != '') $fromsource = $globalAirlinesSource; |
||
372 | elseif (isset($row['format_source']) && $row['format_source'] == 'vatsimtxt') $fromsource = 'vatsim'; |
||
373 | elseif (isset($row['format_source']) && $row['format_source'] == 'whazzup') $fromsource = 'ivao'; |
||
374 | elseif (isset($globalVATSIM) && $globalVATSIM) $fromsource = 'vatsim'; |
||
375 | elseif (isset($globalIVAO) && $globalIVAO) $fromsource = 'ivao'; |
||
376 | if (!isset($row['airline_name']) || $row['airline_name'] == '') { |
||
377 | if (!is_numeric(substr($row['ident'], 0, 3))) { |
||
378 | if (is_numeric(substr($row['ident'], 2, 1))) { |
||
379 | $airline_array = $this->getAllAirlineInfo(substr($row['ident'], 0, 2),$fromsource); |
||
380 | } elseif (is_numeric(substr($row['ident'], 3, 1))) { |
||
381 | $airline_array = $this->getAllAirlineInfo(substr($row['ident'], 0, 3),$fromsource); |
||
382 | } else { |
||
383 | $airline_array = $this->getAllAirlineInfo('NA'); |
||
384 | } |
||
385 | } else { |
||
386 | $airline_array = $this->getAllAirlineInfo('NA'); |
||
387 | } |
||
388 | if (count($airline_array) > 0) { |
||
389 | $temp_array['airline_icao'] = $airline_array[0]['icao']; |
||
390 | $temp_array['airline_iata'] = $airline_array[0]['iata']; |
||
391 | $temp_array['airline_name'] = $airline_array[0]['name']; |
||
392 | $temp_array['airline_country'] = $airline_array[0]['country']; |
||
393 | $temp_array['airline_callsign'] = $airline_array[0]['callsign']; |
||
394 | $temp_array['airline_type'] = $airline_array[0]['type']; |
||
395 | } |
||
396 | } else { |
||
397 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
398 | if (isset($row['airline_iata'])) $temp_array['airline_iata'] = $row['airline_iata']; |
||
399 | else $temp_array['airline_iata'] = 'N/A'; |
||
400 | $temp_array['airline_name'] = $row['airline_name']; |
||
401 | $temp_array['airline_country'] = $row['airline_country']; |
||
402 | if (isset($row['airline_callsign'])) $temp_array['airline_callsign'] = $row['airline_callsign']; |
||
403 | else $temp_array['airline_callsign'] = 'N/A'; |
||
404 | $temp_array['airline_type'] = $row['airline_type']; |
||
405 | if ($temp_array['airline_icao'] != '' && $temp_array['airline_iata'] == 'N/A') { |
||
406 | $airline_array = $this->getAllAirlineInfo($temp_array['airline_icao']); |
||
407 | if (count($airline_array) > 0) { |
||
408 | $temp_array['airline_icao'] = $airline_array[0]['icao']; |
||
409 | $temp_array['airline_iata'] = $airline_array[0]['iata']; |
||
410 | $temp_array['airline_name'] = $airline_array[0]['name']; |
||
411 | $temp_array['airline_country'] = $airline_array[0]['country']; |
||
412 | $temp_array['airline_callsign'] = $airline_array[0]['callsign']; |
||
413 | $temp_array['airline_type'] = $airline_array[0]['type']; |
||
414 | } |
||
415 | } |
||
416 | } |
||
417 | if (isset($temp_array['airline_iata']) && $temp_array['airline_iata'] != '') { |
||
418 | $acars_array = $ACARS->getLiveAcarsData($temp_array['airline_iata'].substr($temp_array['ident'],3)); |
||
419 | //$acars_array = ACARS->getLiveAcarsData('BA40YL'); |
||
420 | if (count($acars_array) > 0) { |
||
421 | $temp_array['acars'] = $acars_array; |
||
422 | //print_r($acars_array); |
||
423 | } |
||
424 | } |
||
425 | if (isset($row['owner_name']) && $row['owner_name'] != '' && $row['owner_name'] != NULL) { |
||
426 | $temp_array['aircraft_owner'] = $row['owner_name']; |
||
427 | } |
||
428 | if ($temp_array['registration'] != "" && !$globalIVAO && !$globalVATSIM && !$globalphpVMS && !$globalVAM && !isset($temp_array['aircraft_owner'])) { |
||
429 | $owner_info = $this->getAircraftOwnerByRegistration($temp_array['registration']); |
||
430 | if ($owner_info['owner'] != '') $temp_array['aircraft_owner'] = ucwords(strtolower($owner_info['owner'])); |
||
431 | $temp_array['aircraft_base'] = $owner_info['base']; |
||
432 | $temp_array['aircraft_date_first_reg'] = $owner_info['date_first_reg']; |
||
433 | } |
||
434 | |||
435 | if($temp_array['registration'] != "" || (($globalIVAO || $globalVATSIM || $globalphpVMS || $globalVAM) && isset($temp_array['aircraft_type']) && $temp_array['aircraft_type'] != '')) |
||
436 | { |
||
437 | if ($globalIVAO) { |
||
438 | if (isset($temp_array['airline_icao'])) $image_array = $Image->getSpotterImage('',$temp_array['aircraft_type'],$temp_array['airline_icao']); |
||
439 | else $image_array = $Image->getSpotterImage('',$temp_array['aircraft_type']); |
||
440 | } elseif (isset($temp_array['aircraft_type']) && isset($temp_array['airline_icao'])) $image_array = $Image->getSpotterImage($temp_array['registration'],$temp_array['aircraft_type'],$temp_array['airline_icao']); |
||
441 | elseif (isset($temp_array['aircraft_type'])) $image_array = $Image->getSpotterImage($temp_array['registration'],$temp_array['aircraft_type']); |
||
442 | else $image_array = $Image->getSpotterImage($temp_array['registration']); |
||
443 | if (count($image_array) > 0) { |
||
444 | $temp_array['image'] = $image_array[0]['image']; |
||
445 | $temp_array['image_thumbnail'] = $image_array[0]['image_thumbnail']; |
||
446 | $temp_array['image_source'] = $image_array[0]['image_source']; |
||
447 | $temp_array['image_source_website'] = $image_array[0]['image_source_website']; |
||
448 | if ($temp_array['image_source_website'] == '' && $temp_array['image_source'] == 'planespotters') { |
||
449 | $planespotter_url_array = explode("_", $temp_array['image']); |
||
450 | $planespotter_id = str_replace(".jpg", "", $planespotter_url_array[1]); |
||
451 | $temp_array['image_source_website'] = 'http://www.planespotters.net/Aviation_Photos/photo.show?id='.$planespotter_id; |
||
452 | } |
||
453 | $temp_array['image_copyright'] = $image_array[0]['image_copyright']; |
||
454 | } |
||
455 | } |
||
456 | |||
457 | |||
458 | if (isset($row['departure_airport_time']) && $row['departure_airport_time'] != '') { |
||
459 | $temp_array['departure_airport_time'] = $row['departure_airport_time']; |
||
460 | } |
||
461 | if (isset($row['arrival_airport_time']) && $row['arrival_airport_time'] != '') { |
||
462 | $temp_array['arrival_airport_time'] = $row['arrival_airport_time']; |
||
463 | } |
||
464 | |||
465 | if ((!isset($globalIVAO) || ! $globalIVAO) && (!isset($globalVATSIM) || !$globalVATSIM) && (!isset($globalphpVMS) || !$globalphpVMS) && (!isset($globalVAM) || !$globalVAM)) { |
||
466 | if ($schedules === true) { |
||
467 | $schedule_array = $Schedule->getSchedule($temp_array['ident']); |
||
468 | //print_r($schedule_array); |
||
469 | if (count($schedule_array) > 0) { |
||
470 | if ($schedule_array['departure_airport_icao'] != '') { |
||
471 | $row['departure_airport_icao'] = $schedule_array['departure_airport_icao']; |
||
472 | $temp_array['departure_airport'] = $row['departure_airport_icao']; |
||
473 | } |
||
474 | if ($schedule_array['arrival_airport_icao'] != '') { |
||
475 | $row['arrival_airport_icao'] = $schedule_array['arrival_airport_icao']; |
||
476 | $temp_array['arrival_airport'] = $row['arrival_airport_icao']; |
||
477 | } |
||
478 | $temp_array['departure_airport_time'] = $schedule_array['departure_airport_time']; |
||
479 | $temp_array['arrival_airport_time'] = $schedule_array['arrival_airport_time']; |
||
480 | } |
||
481 | } |
||
482 | } else { |
||
483 | if (isset($row['real_departure_airport_time']) && $row['real_departure_airport_time'] != '') { |
||
484 | $temp_array['departure_airport_time'] = $row['real_departure_airport_time']; |
||
485 | } |
||
486 | if (isset($row['real_arrival_airport_time']) && $row['real_arrival_airport_time'] != '') { |
||
487 | $temp_array['real_arrival_airport_time'] = $row['real_arrival_airport_time']; |
||
488 | } |
||
489 | } |
||
490 | |||
491 | //if ($row['departure_airport_icao'] != '' && $row['departure_airport_name'] == '') { |
||
492 | if ($row['departure_airport_icao'] != '') { |
||
493 | $departure_airport_array = $this->getAllAirportInfo($row['departure_airport_icao']); |
||
494 | if (!isset($departure_airport_array[0]['name'])) $departure_airport_array = $this->getAllAirportInfo('NA'); |
||
495 | /* |
||
496 | } elseif ($row['departure_airport_name'] != '') { |
||
497 | $temp_array['departure_airport_name'] = $row['departure_airport_name']; |
||
498 | $temp_array['departure_airport_city'] = $row['departure_airport_city']; |
||
499 | $temp_array['departure_airport_country'] = $row['departure_airport_country']; |
||
500 | $temp_array['departure_airport_icao'] = $row['departure_airport_icao']; |
||
501 | */ |
||
502 | } else $departure_airport_array = $this->getAllAirportInfo('NA'); |
||
503 | if (isset($departure_airport_array[0]['name'])) { |
||
504 | $temp_array['departure_airport_name'] = $departure_airport_array[0]['name']; |
||
505 | $temp_array['departure_airport_city'] = $departure_airport_array[0]['city']; |
||
506 | $temp_array['departure_airport_country'] = $departure_airport_array[0]['country']; |
||
507 | $temp_array['departure_airport_iata'] = $departure_airport_array[0]['iata']; |
||
508 | $temp_array['departure_airport_icao'] = $departure_airport_array[0]['icao']; |
||
509 | $temp_array['departure_airport_latitude'] = $departure_airport_array[0]['latitude']; |
||
510 | $temp_array['departure_airport_longitude'] = $departure_airport_array[0]['longitude']; |
||
511 | $temp_array['departure_airport_altitude'] = $departure_airport_array[0]['altitude']; |
||
512 | } |
||
513 | |||
514 | /* |
||
515 | if (isset($row['departure_airport_time'])) { |
||
516 | $temp_array['departure_airport_time'] = $row['departure_airport_time']; |
||
517 | } |
||
518 | */ |
||
519 | |||
520 | if ($row['arrival_airport_icao'] != '') { |
||
521 | $arrival_airport_array = $this->getAllAirportInfo($row['arrival_airport_icao']); |
||
522 | if (count($arrival_airport_array) == 0) $arrival_airport_array = $this->getAllAirportInfo('NA'); |
||
523 | } else $arrival_airport_array = $this->getAllAirportInfo('NA'); |
||
524 | if (isset($arrival_airport_array[0]['name'])) { |
||
525 | $temp_array['arrival_airport_name'] = $arrival_airport_array[0]['name']; |
||
526 | $temp_array['arrival_airport_city'] = $arrival_airport_array[0]['city']; |
||
527 | $temp_array['arrival_airport_country'] = $arrival_airport_array[0]['country']; |
||
528 | $temp_array['arrival_airport_iata'] = $arrival_airport_array[0]['iata']; |
||
529 | $temp_array['arrival_airport_icao'] = $arrival_airport_array[0]['icao']; |
||
530 | $temp_array['arrival_airport_latitude'] = $arrival_airport_array[0]['latitude']; |
||
531 | $temp_array['arrival_airport_longitude'] = $arrival_airport_array[0]['longitude']; |
||
532 | $temp_array['arrival_airport_altitude'] = $arrival_airport_array[0]['altitude']; |
||
533 | } |
||
534 | /* |
||
535 | if (isset($row['arrival_airport_time'])) { |
||
536 | $temp_array['arrival_airport_time'] = $row['arrival_airport_time']; |
||
537 | } |
||
538 | */ |
||
539 | if (isset($row['pilot_id']) && $row['pilot_id'] != '') $temp_array['pilot_id'] = $row['pilot_id']; |
||
540 | if (isset($row['pilot_name']) && $row['pilot_name'] != '') $temp_array['pilot_name'] = $row['pilot_name']; |
||
541 | if (isset($row['source_name']) && $row['source_name'] != '') $temp_array['source_name'] = $row['source_name']; |
||
542 | if (isset($row['over_country']) && $row['over_country'] != '') $temp_array['over_country'] = $row['over_country']; |
||
543 | if (isset($row['distance']) && $row['distance'] != '') $temp_array['distance'] = $row['distance']; |
||
544 | if (isset($row['squawk'])) { |
||
545 | $temp_array['squawk'] = $row['squawk']; |
||
546 | if ($row['squawk'] != '' && isset($temp_array['country_iso2'])) { |
||
547 | $temp_array['squawk_usage'] = $this->getSquawkUsage($row['squawk'],$temp_array['country_iso2']); |
||
548 | if ($temp_array['squawk_usage'] == '' && isset($globalSquawkCountry)) $temp_array['squawk_usage'] = $this->getSquawkUsage($row['squawk'],$globalSquawkCountry); |
||
549 | } elseif ($row['squawk'] != '' && isset($temp_array['over_country'])) { |
||
550 | $temp_array['squawk_usage'] = $this->getSquawkUsage($row['squawk'],$temp_array['over_country']); |
||
551 | if ($temp_array['squawk_usage'] == '' && isset($globalSquawkCountry)) $temp_array['squawk_usage'] = $this->getSquawkUsage($row['squawk'],$globalSquawkCountry); |
||
552 | } elseif ($row['squawk'] != '' && isset($globalSquawkCountry)) $temp_array['squawk_usage'] = $this->getSquawkUsage($row['squawk'],$globalSquawkCountry); |
||
553 | } |
||
554 | |||
555 | $temp_array['query_number_rows'] = $num_rows; |
||
556 | |||
557 | $spotter_array[] = $temp_array; |
||
558 | } |
||
559 | if ($num_rows == 0) return array(); |
||
560 | $spotter_array[0]['query_number_rows'] = $num_rows; |
||
561 | return $spotter_array; |
||
562 | } |
||
563 | |||
564 | |||
565 | /** |
||
566 | * Gets all the spotter information |
||
567 | * |
||
568 | * @return Array the spotter information |
||
569 | * |
||
570 | */ |
||
571 | public function searchSpotterData($q = '', $registration = '', $aircraft_icao = '', $aircraft_manufacturer = '', $highlights = '', $airline_icao = '', $airline_country = '', $airline_type = '', $airport = '', $airport_country = '', $callsign = '', $departure_airport_route = '', $arrival_airport_route = '', $owner = '',$pilot_id = '',$pilot_name = '',$altitude = '', $date_posted = '', $limit = '', $sort = '', $includegeodata = '',$origLat = '',$origLon = '',$dist = '',$filters = array()) |
||
572 | { |
||
573 | global $globalTimezone, $globalDBdriver; |
||
574 | require_once(dirname(__FILE__).'/class.Translation.php'); |
||
575 | $Translation = new Translation(); |
||
576 | |||
577 | date_default_timezone_set('UTC'); |
||
578 | |||
579 | $query_values = array(); |
||
580 | $additional_query = ''; |
||
581 | $filter_query = $this->getFilter($filters,true,true); |
||
582 | if ($q != "") |
||
583 | { |
||
584 | if (!is_string($q)) |
||
585 | { |
||
586 | return false; |
||
587 | } else { |
||
588 | $q_array = explode(" ", $q); |
||
589 | foreach ($q_array as $q_item){ |
||
590 | $q_item = filter_var($q_item,FILTER_SANITIZE_STRING); |
||
591 | $additional_query .= " AND ("; |
||
592 | if (is_int($q_item)) $additional_query .= "(spotter_output.spotter_id like '%".$q_item."%') OR "; |
||
593 | $additional_query .= "(spotter_output.aircraft_icao like '%".$q_item."%') OR "; |
||
594 | $additional_query .= "(spotter_output.aircraft_name like '%".$q_item."%') OR "; |
||
595 | $additional_query .= "(spotter_output.aircraft_manufacturer like '%".$q_item."%') OR "; |
||
596 | $additional_query .= "(spotter_output.airline_icao like '%".$q_item."%') OR "; |
||
597 | $additional_query .= "(spotter_output.airline_name like '%".$q_item."%') OR "; |
||
598 | $additional_query .= "(spotter_output.airline_country like '%".$q_item."%') OR "; |
||
599 | $additional_query .= "(spotter_output.departure_airport_icao like '%".$q_item."%') OR "; |
||
600 | $additional_query .= "(spotter_output.departure_airport_name like '%".$q_item."%') OR "; |
||
601 | $additional_query .= "(spotter_output.departure_airport_city like '%".$q_item."%') OR "; |
||
602 | $additional_query .= "(spotter_output.departure_airport_country like '%".$q_item."%') OR "; |
||
603 | $additional_query .= "(spotter_output.arrival_airport_icao like '%".$q_item."%') OR "; |
||
604 | $additional_query .= "(spotter_output.arrival_airport_name like '%".$q_item."%') OR "; |
||
605 | $additional_query .= "(spotter_output.arrival_airport_city like '%".$q_item."%') OR "; |
||
606 | $additional_query .= "(spotter_output.arrival_airport_country like '%".$q_item."%') OR "; |
||
607 | $additional_query .= "(spotter_output.registration like '%".$q_item."%') OR "; |
||
608 | $additional_query .= "(spotter_output.owner_name like '%".$q_item."%') OR "; |
||
609 | $additional_query .= "(spotter_output.pilot_id like '%".$q_item."%') OR "; |
||
610 | $additional_query .= "(spotter_output.pilot_name like '%".$q_item."%') OR "; |
||
611 | $additional_query .= "(spotter_output.ident like '%".$q_item."%') OR "; |
||
612 | $translate = $Translation->ident2icao($q_item); |
||
613 | if ($translate != $q_item) $additional_query .= "(spotter_output.ident like '%".$translate."%') OR "; |
||
614 | $additional_query .= "(spotter_output.highlight like '%".$q_item."%')"; |
||
615 | $additional_query .= ")"; |
||
616 | } |
||
617 | } |
||
618 | } |
||
619 | |||
620 | if ($registration != "") |
||
621 | { |
||
622 | $registration = filter_var($registration,FILTER_SANITIZE_STRING); |
||
623 | if (!is_string($registration)) |
||
624 | { |
||
625 | return false; |
||
626 | } else { |
||
627 | $additional_query .= " AND spotter_output.registration = :registration"; |
||
628 | $query_values = array_merge($query_values,array(':registration' => $registration)); |
||
629 | } |
||
630 | } |
||
631 | |||
632 | if ($aircraft_icao != "") |
||
633 | { |
||
634 | $aircraft_icao = filter_var($aircraft_icao,FILTER_SANITIZE_STRING); |
||
635 | if (!is_string($aircraft_icao)) |
||
636 | { |
||
637 | return false; |
||
638 | } else { |
||
639 | $additional_query .= " AND spotter_output.aircraft_icao = :aircraft_icao"; |
||
640 | $query_values = array_merge($query_values,array(':aircraft_icao' => $aircraft_icao)); |
||
641 | } |
||
642 | } |
||
643 | |||
644 | if ($aircraft_manufacturer != "") |
||
645 | { |
||
646 | $aircraft_manufacturer = filter_var($aircraft_manufacturer,FILTER_SANITIZE_STRING); |
||
647 | if (!is_string($aircraft_manufacturer)) |
||
648 | { |
||
649 | return false; |
||
650 | } else { |
||
651 | $additional_query .= " AND spotter_output.aircraft_manufacturer = :aircraft_manufacturer"; |
||
652 | $query_values = array_merge($query_values,array(':aircraft_manufacturer' => $aircraft_manufacturer)); |
||
653 | } |
||
654 | } |
||
655 | |||
656 | if ($highlights == "true") |
||
657 | { |
||
658 | if (!is_string($highlights)) |
||
659 | { |
||
660 | return false; |
||
661 | } else { |
||
662 | $additional_query .= " AND (spotter_output.highlight <> '')"; |
||
663 | } |
||
664 | } |
||
665 | |||
666 | if ($airline_icao != "") |
||
667 | { |
||
668 | $airline_icao = filter_var($airline_icao,FILTER_SANITIZE_STRING); |
||
669 | if (!is_string($airline_icao)) |
||
670 | { |
||
671 | return false; |
||
672 | } else { |
||
673 | $additional_query .= " AND spotter_output.airline_icao = :airline_icao"; |
||
674 | $query_values = array_merge($query_values,array(':airline_icao' => $airline_icao)); |
||
675 | } |
||
676 | } |
||
677 | |||
678 | if ($airline_country != "") |
||
679 | { |
||
680 | $airline_country = filter_var($airline_country,FILTER_SANITIZE_STRING); |
||
681 | if (!is_string($airline_country)) |
||
682 | { |
||
683 | return false; |
||
684 | } else { |
||
685 | $additional_query .= " AND spotter_output.airline_country = :airline_country"; |
||
686 | $query_values = array_merge($query_values,array(':airline_country' => $airline_country)); |
||
687 | } |
||
688 | } |
||
689 | |||
690 | if ($airline_type != "") |
||
691 | { |
||
692 | if (!is_string($airline_type)) |
||
693 | { |
||
694 | return false; |
||
695 | } else { |
||
696 | if ($airline_type == "passenger") |
||
697 | { |
||
698 | $additional_query .= " AND (spotter_output.airline_type = 'passenger')"; |
||
699 | } |
||
700 | if ($airline_type == "cargo") |
||
701 | { |
||
702 | $additional_query .= " AND (spotter_output.airline_type = 'cargo')"; |
||
703 | } |
||
704 | if ($airline_type == "military") |
||
705 | { |
||
706 | $additional_query .= " AND (spotter_output.airline_type = 'military')"; |
||
707 | } |
||
708 | } |
||
709 | } |
||
710 | |||
711 | if ($airport != "") |
||
712 | { |
||
713 | $airport = filter_var($airport,FILTER_SANITIZE_STRING); |
||
714 | if (!is_string($airport)) |
||
715 | { |
||
716 | return false; |
||
717 | } else { |
||
718 | $additional_query .= " AND (spotter_output.departure_airport_icao = :airport OR spotter_output.arrival_airport_icao = :airport)"; |
||
719 | $query_values = array_merge($query_values,array(':airport' => $airport)); |
||
720 | } |
||
721 | } |
||
722 | |||
723 | if ($airport_country != "") |
||
724 | { |
||
725 | $airport_country = filter_var($airport_country,FILTER_SANITIZE_STRING); |
||
726 | if (!is_string($airport_country)) |
||
727 | { |
||
728 | return false; |
||
729 | } else { |
||
730 | $additional_query .= " AND (spotter_output.departure_airport_country = :airport_country OR spotter_output.arrival_airport_country = :airport_country)"; |
||
731 | $query_values = array_merge($query_values,array(':airport_country' => $airport_country)); |
||
732 | } |
||
733 | } |
||
734 | |||
735 | if ($callsign != "") |
||
736 | { |
||
737 | $callsign = filter_var($callsign,FILTER_SANITIZE_STRING); |
||
738 | if (!is_string($callsign)) |
||
739 | { |
||
740 | return false; |
||
741 | } else { |
||
742 | $translate = $Translation->ident2icao($callsign); |
||
743 | if ($translate != $callsign) { |
||
744 | $additional_query .= " AND (spotter_output.ident = :callsign OR spotter_output.ident = :translate)"; |
||
745 | $query_values = array_merge($query_values,array(':callsign' => $callsign,':translate' => $translate)); |
||
746 | } else { |
||
747 | $additional_query .= " AND spotter_output.ident = :callsign"; |
||
748 | $query_values = array_merge($query_values,array(':callsign' => $callsign)); |
||
749 | } |
||
750 | } |
||
751 | } |
||
752 | |||
753 | if ($owner != "") |
||
754 | { |
||
755 | $owner = filter_var($owner,FILTER_SANITIZE_STRING); |
||
756 | if (!is_string($owner)) |
||
757 | { |
||
758 | return false; |
||
759 | } else { |
||
760 | $additional_query .= " AND spotter_output.owner_name = :owner"; |
||
761 | $query_values = array_merge($query_values,array(':owner' => $owner)); |
||
762 | } |
||
763 | } |
||
764 | |||
765 | if ($pilot_name != "") |
||
766 | { |
||
767 | $pilot_name = filter_var($pilot_name,FILTER_SANITIZE_STRING); |
||
768 | if (!is_string($pilot_name)) |
||
769 | { |
||
770 | return false; |
||
771 | } else { |
||
772 | $additional_query .= " AND spotter_output.pilot_name = :pilot_name"; |
||
773 | $query_values = array_merge($query_values,array(':pilot_name' => $pilot_name)); |
||
774 | } |
||
775 | } |
||
776 | |||
777 | if ($pilot_id != "") |
||
778 | { |
||
779 | $pilot_id = filter_var($pilot_id,FILTER_SANITIZE_STRING); |
||
780 | if (!is_string($pilot_id)) |
||
781 | { |
||
782 | return false; |
||
783 | } else { |
||
784 | $additional_query .= " AND spotter_output.pilot_id = :pilot_id"; |
||
785 | $query_values = array_merge($query_values,array(':pilot_id' => $pilot_id)); |
||
786 | } |
||
787 | } |
||
788 | |||
789 | if ($departure_airport_route != "") |
||
790 | { |
||
791 | $departure_airport_route = filter_var($departure_airport_route,FILTER_SANITIZE_STRING); |
||
792 | if (!is_string($departure_airport_route)) |
||
793 | { |
||
794 | return false; |
||
795 | } else { |
||
796 | $additional_query .= " AND spotter_output.departure_airport_icao = :departure_airport_route"; |
||
797 | $query_values = array_merge($query_values,array(':departure_airport_route' => $departure_airport_route)); |
||
798 | } |
||
799 | } |
||
800 | |||
801 | if ($arrival_airport_route != "") |
||
802 | { |
||
803 | $arrival_airport_route = filter_var($arrival_airport_route,FILTER_SANITIZE_STRING); |
||
804 | if (!is_string($arrival_airport_route)) |
||
805 | { |
||
806 | return false; |
||
807 | } else { |
||
808 | $additional_query .= " AND spotter_output.arrival_airport_icao = :arrival_airport_route"; |
||
809 | $query_values = array_merge($query_values,array(':arrival_airport_route' => $arrival_airport_route)); |
||
810 | } |
||
811 | } |
||
812 | |||
813 | if ($altitude != "") |
||
814 | { |
||
815 | $altitude_array = explode(",", $altitude); |
||
816 | $altitude_array[0] = filter_var($altitude_array[0],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
817 | $altitude_array[1] = filter_var($altitude_array[1],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
818 | |||
819 | if ($altitude_array[1] != "") |
||
820 | { |
||
821 | $altitude_array[0] = substr($altitude_array[0], 0, -2); |
||
822 | $altitude_array[1] = substr($altitude_array[1], 0, -2); |
||
823 | $additional_query .= " AND altitude BETWEEN '".$altitude_array[0]."' AND '".$altitude_array[1]."' "; |
||
824 | } else { |
||
825 | $altitude_array[0] = substr($altitude_array[0], 0, -2); |
||
826 | $additional_query .= " AND altitude <= '".$altitude_array[0]."' "; |
||
827 | } |
||
828 | } |
||
829 | |||
830 | if ($date_posted != "") |
||
831 | { |
||
832 | $date_array = explode(",", $date_posted); |
||
833 | $date_array[0] = filter_var($date_array[0],FILTER_SANITIZE_STRING); |
||
834 | $date_array[1] = filter_var($date_array[1],FILTER_SANITIZE_STRING); |
||
835 | |||
836 | if ($globalTimezone != '') { |
||
837 | date_default_timezone_set($globalTimezone); |
||
838 | $datetime = new DateTime(); |
||
839 | $offset = $datetime->format('P'); |
||
840 | } else $offset = '+00:00'; |
||
841 | |||
842 | if ($date_array[1] != "") |
||
843 | { |
||
844 | $date_array[0] = date("Y-m-d H:i:s", strtotime($date_array[0])); |
||
845 | $date_array[1] = date("Y-m-d H:i:s", strtotime($date_array[1])); |
||
846 | if ($globalDBdriver == 'mysql') { |
||
847 | $additional_query .= " AND TIMESTAMP(CONVERT_TZ(spotter_output.date,'+00:00', '".$offset."')) >= '".$date_array[0]."' AND TIMESTAMP(CONVERT_TZ(spotter_output.date,'+00:00', '".$offset."')) <= '".$date_array[1]."' "; |
||
848 | } else { |
||
849 | $additional_query .= " AND CAST(spotter_output.date AT TIME ZONE INTERVAL ".$offset." AS TIMESTAMP) >= '".$date_array[0]."' AND CAST(spotter_output.date AT TIME ZONE INTERVAL ".$offset." AS TIMESTAMP) <= '".$date_array[1]."' "; |
||
850 | } |
||
851 | } else { |
||
852 | $date_array[0] = date("Y-m-d H:i:s", strtotime($date_array[0])); |
||
853 | if ($globalDBdriver == 'mysql') { |
||
854 | $additional_query .= " AND TIMESTAMP(CONVERT_TZ(spotter_output.date,'+00:00', '".$offset."')) >= '".$date_array[0]."' "; |
||
855 | } else { |
||
856 | $additional_query .= " AND CAST(spotter_output.date AT TIME ZONE INTERVAL ".$offset." AS TIMESTAMP) >= '".$date_array[0]."' "; |
||
857 | } |
||
858 | } |
||
859 | } |
||
860 | |||
861 | if ($limit != "") |
||
862 | { |
||
863 | $limit_array = explode(",", $limit); |
||
864 | |||
865 | $limit_array[0] = filter_var($limit_array[0],FILTER_SANITIZE_NUMBER_INT); |
||
866 | $limit_array[1] = filter_var($limit_array[1],FILTER_SANITIZE_NUMBER_INT); |
||
867 | |||
868 | if ($limit_array[0] >= 0 && $limit_array[1] >= 0) |
||
869 | { |
||
870 | //$limit_query = " LIMIT ".$limit_array[0].",".$limit_array[1]; |
||
871 | $limit_query = " LIMIT ".$limit_array[1]." OFFSET ".$limit_array[0]; |
||
872 | } else $limit_query = ""; |
||
873 | } else $limit_query = ""; |
||
874 | |||
875 | |||
876 | if ($sort != "") |
||
877 | { |
||
878 | $search_orderby_array = $this->getOrderBy(); |
||
879 | $orderby_query = $search_orderby_array[$sort]['sql']; |
||
880 | } else { |
||
881 | if ($origLat != "" && $origLon != "" && $dist != "") { |
||
882 | $orderby_query = " ORDER BY distance ASC"; |
||
883 | } else { |
||
884 | $orderby_query = " ORDER BY spotter_output.date DESC"; |
||
885 | } |
||
886 | } |
||
887 | |||
888 | if ($includegeodata == "true") |
||
889 | { |
||
890 | $additional_query .= " AND spotter_output.waypoints <> ''"; |
||
891 | } |
||
892 | |||
893 | |||
894 | if ($origLat != "" && $origLon != "" && $dist != "") { |
||
895 | $dist = number_format($dist*0.621371,2,'.',''); // convert km to mile |
||
896 | |||
897 | if ($globalDBdriver == 'mysql') { |
||
898 | $query="SELECT spotter_output.*, 1.60935*3956 * 2 * ASIN(SQRT( POWER(SIN(($origLat - spotter_archive.latitude)*pi()/180/2),2)+COS( $origLat *pi()/180)*COS(spotter_archive.latitude*pi()/180)*POWER(SIN(($origLon-spotter_archive.longitude)*pi()/180/2),2))) as distance |
||
899 | FROM spotter_archive,spotter_output".$filter_query." spotter_output.flightaware_id = spotter_archive.flightaware_id AND spotter_output.ident <> '' ".$additional_query."AND spotter_archive.longitude between ($origLon-$dist/cos(radians($origLat))*69) and ($origLon+$dist/cos(radians($origLat)*69)) and spotter_archive.latitude between ($origLat-($dist/69)) and ($origLat+($dist/69)) |
||
900 | AND (3956 * 2 * ASIN(SQRT( POWER(SIN(($origLat - spotter_archive.latitude)*pi()/180/2),2)+COS( $origLat *pi()/180)*COS(spotter_archive.latitude*pi()/180)*POWER(SIN(($origLon-spotter_archive.longitude)*pi()/180/2),2)))) < $dist".$orderby_query; |
||
901 | } else { |
||
902 | $query="SELECT spotter_output.*, 1.60935 * 3956 * 2 * ASIN(SQRT( POWER(SIN(($origLat - CAST(spotter_archive.latitude as double precision))*pi()/180/2),2)+COS( $origLat *pi()/180)*COS(CAST(spotter_archive.latitude as double precision)*pi()/180)*POWER(SIN(($origLon-CAST(spotter_archive.longitude as double precision))*pi()/180/2),2))) as distance |
||
903 | FROM spotter_archive,spotter_output".$filter_query." spotter_output.flightaware_id = spotter_archive.flightaware_id AND spotter_output.ident <> '' ".$additional_query."AND CAST(spotter_archive.longitude as double precision) between ($origLon-$dist/cos(radians($origLat))*69) and ($origLon+$dist/cos(radians($origLat))*69) and CAST(spotter_archive.latitude as double precision) between ($origLat-($dist/69)) and ($origLat+($dist/69)) |
||
904 | AND (3956 * 2 * ASIN(SQRT( POWER(SIN(($origLat - CAST(spotter_archive.latitude as double precision))*pi()/180/2),2)+COS( $origLat *pi()/180)*COS(CAST(spotter_archive.latitude as double precision)*pi()/180)*POWER(SIN(($origLon-CAST(spotter_archive.longitude as double precision))*pi()/180/2),2)))) < $dist".$filter_query.$orderby_query; |
||
905 | } |
||
906 | } else { |
||
907 | $query = "SELECT spotter_output.* FROM spotter_output".$filter_query." spotter_output.ident <> '' |
||
908 | ".$additional_query." |
||
909 | ".$orderby_query; |
||
910 | } |
||
911 | $spotter_array = $this->getDataFromDB($query, $query_values,$limit_query); |
||
912 | return $spotter_array; |
||
913 | } |
||
914 | |||
915 | |||
916 | /** |
||
917 | * Gets all the spotter information based on the latest data entry |
||
918 | * |
||
919 | * @return Array the spotter information |
||
920 | * |
||
921 | */ |
||
922 | public function getLatestSpotterData($limit = '', $sort = '', $filter = array()) |
||
923 | { |
||
924 | global $global_query; |
||
925 | |||
926 | date_default_timezone_set('UTC'); |
||
927 | |||
928 | $filter_query = $this->getFilter($filter); |
||
929 | |||
930 | if ($limit != "") |
||
931 | { |
||
932 | $limit_array = explode(",", $limit); |
||
933 | |||
934 | $limit_array[0] = filter_var($limit_array[0],FILTER_SANITIZE_NUMBER_INT); |
||
935 | $limit_array[1] = filter_var($limit_array[1],FILTER_SANITIZE_NUMBER_INT); |
||
936 | |||
937 | if ($limit_array[0] >= 0 && $limit_array[1] >= 0) |
||
938 | { |
||
939 | //$limit_query = " LIMIT ".$limit_array[0].",".$limit_array[1]; |
||
940 | $limit_query = " LIMIT ".$limit_array[1]." OFFSET ".$limit_array[0]; |
||
941 | } else $limit_query = ""; |
||
942 | } else $limit_query = ""; |
||
943 | |||
944 | if ($sort != "") |
||
945 | { |
||
946 | $search_orderby_array = $this->getOrderBy(); |
||
947 | $orderby_query = $search_orderby_array[$sort]['sql']; |
||
948 | } else { |
||
949 | $orderby_query = " ORDER BY spotter_output.date DESC"; |
||
950 | } |
||
951 | |||
952 | $query = $global_query.$filter_query." ".$orderby_query; |
||
953 | |||
954 | $spotter_array = $this->getDataFromDB($query, array(),$limit_query,true); |
||
955 | |||
956 | return $spotter_array; |
||
957 | } |
||
958 | |||
959 | |||
960 | /** |
||
961 | * Gets all the spotter information based on a user's latitude and longitude |
||
962 | * |
||
963 | * @return Array the spotter information |
||
964 | * |
||
965 | */ |
||
966 | public function getLatestSpotterForLayar($lat, $lng, $radius, $interval) |
||
967 | { |
||
968 | date_default_timezone_set('UTC'); |
||
969 | $limit_query = ''; |
||
970 | if ($lat != "") |
||
971 | { |
||
972 | if (!is_numeric($lat)) |
||
973 | { |
||
974 | return false; |
||
975 | } |
||
976 | } |
||
977 | |||
978 | if ($lng != "") |
||
979 | { |
||
980 | if (!is_numeric($lng)) |
||
981 | { |
||
982 | return false; |
||
983 | } |
||
984 | } |
||
985 | |||
986 | if ($radius != "") |
||
987 | { |
||
988 | if (!is_numeric($radius)) |
||
989 | { |
||
990 | return false; |
||
991 | } |
||
992 | } |
||
993 | $additional_query = ''; |
||
994 | if ($interval != "") |
||
995 | { |
||
996 | if (!is_string($interval)) |
||
997 | { |
||
998 | return false; |
||
999 | } else { |
||
1000 | if ($interval == "30m"){ |
||
1001 | $additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 30 MINUTE) <= $this_output.date '; |
||
1002 | } else if ($interval == "1h"){ |
||
1003 | $additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 HOUR) <= $this_output.date '; |
||
1004 | } else if ($interval == "3h"){ |
||
1005 | $additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 3 HOUR) <= $this_output.date '; |
||
1006 | } else if ($interval == "6h"){ |
||
1007 | $additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 6 HOUR) <= $this_output.date '; |
||
1008 | } else if ($interval == "12h"){ |
||
1009 | $additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 12 HOUR) <= $this_output.date '; |
||
1010 | } else if ($interval == "24h"){ |
||
1011 | $additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 24 HOUR) <= $this_output.date '; |
||
1012 | } else if ($interval == "7d"){ |
||
1013 | $additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 7 DAY) <= $this_output.date '; |
||
1014 | } else if ($interval == "30d"){ |
||
1015 | $additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 30 DAY) <= $this_output.date '; |
||
1016 | } |
||
1017 | } |
||
1018 | } |
||
1019 | |||
1020 | $query = "SELECT spotter_output.*, ( 6371 * acos( cos( radians($lat) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians($lng) ) + sin( radians($lat) ) * sin( radians( latitude ) ) ) ) AS distance FROM spotter_output |
||
1021 | WHERE spotter_output.latitude <> '' |
||
1022 | AND spotter_output.longitude <> '' |
||
1023 | ".$additional_query." |
||
1024 | HAVING distance < :radius |
||
1025 | ORDER BY distance"; |
||
1026 | |||
1027 | $spotter_array = $this->getDataFromDB($query, array(':radius' => $radius),$limit_query); |
||
1028 | |||
1029 | return $spotter_array; |
||
1030 | } |
||
1031 | |||
1032 | |||
1033 | /** |
||
1034 | * Gets all the spotter information sorted by the newest aircraft type |
||
1035 | * |
||
1036 | * @return Array the spotter information |
||
1037 | * |
||
1038 | */ |
||
1039 | public function getNewestSpotterDataSortedByAircraftType($limit = '', $sort = '',$filter = array()) |
||
1040 | { |
||
1041 | global $global_query; |
||
1042 | |||
1043 | date_default_timezone_set('UTC'); |
||
1044 | |||
1045 | $filter_query = $this->getFilter($filter,true,true); |
||
1046 | |||
1047 | $limit_query = ''; |
||
1048 | if ($limit != "") |
||
1049 | { |
||
1050 | $limit_array = explode(",", $limit); |
||
1051 | |||
1052 | $limit_array[0] = filter_var($limit_array[0],FILTER_SANITIZE_NUMBER_INT); |
||
1053 | $limit_array[1] = filter_var($limit_array[1],FILTER_SANITIZE_NUMBER_INT); |
||
1054 | |||
1055 | if ($limit_array[0] >= 0 && $limit_array[1] >= 0) |
||
1056 | { |
||
1057 | //$limit_query = " LIMIT ".$limit_array[0].",".$limit_array[1]; |
||
1058 | $limit_query = " LIMIT ".$limit_array[1]." OFFSET ".$limit_array[0]; |
||
1059 | } |
||
1060 | } |
||
1061 | |||
1062 | if ($sort != "") |
||
1063 | { |
||
1064 | $search_orderby_array = $this->getOrderBy(); |
||
1065 | $orderby_query = $search_orderby_array[$sort]['sql']; |
||
1066 | } else { |
||
1067 | $orderby_query = " ORDER BY spotter_output.date DESC "; |
||
1068 | } |
||
1069 | |||
1070 | $query = $global_query." ".$filter_query." spotter_output.aircraft_name <> '' GROUP BY spotter_output.aircraft_icao,spotter_output.ident,spotter_output.spotter_id, spotter_output.flightaware_id, spotter_output.registration,spotter_output.airline_name,spotter_output.airline_icao,spotter_output.airline_country,spotter_output.airline_type,spotter_output.aircraft_icao,spotter_output.aircraft_name,spotter_output.aircraft_manufacturer,spotter_output.departure_airport_icao,spotter_output.departure_airport_name,spotter_output.departure_airport_city,spotter_output.departure_airport_country,spotter_output.departure_airport_time,spotter_output.arrival_airport_icao,spotter_output.arrival_airport_name,spotter_output.arrival_airport_city,spotter_output.arrival_airport_country,spotter_output.arrival_airport_time,spotter_output.route_stop,spotter_output.date,spotter_output.latitude,spotter_output.longitude,spotter_output.waypoints,spotter_output.altitude,spotter_output.heading,spotter_output.ground_speed,spotter_output.highlight,spotter_output.squawk,spotter_output.ModeS,spotter_output.pilot_id,spotter_output.pilot_name,spotter_output.verticalrate,spotter_output.owner_name,spotter_output.format_source,spotter_output.source_name,spotter_output.ground,spotter_output.last_ground,spotter_output.last_seen,spotter_output.last_latitude,spotter_output.last_longitude,spotter_output.last_altitude,spotter_output.last_ground_speed,spotter_output.real_arrival_airport_icao,spotter_output.real_arrival_airport_time ".$orderby_query; |
||
1071 | |||
1072 | $spotter_array = $this->getDataFromDB($query, array(), $limit_query); |
||
1073 | |||
1074 | return $spotter_array; |
||
1075 | } |
||
1076 | |||
1077 | |||
1078 | /** |
||
1079 | * Gets all the spotter information sorted by the newest aircraft registration |
||
1080 | * |
||
1081 | * @return Array the spotter information |
||
1082 | * |
||
1083 | */ |
||
1084 | public function getNewestSpotterDataSortedByAircraftRegistration($limit = '', $sort = '', $filter = array()) |
||
1085 | { |
||
1086 | global $global_query; |
||
1087 | |||
1088 | date_default_timezone_set('UTC'); |
||
1089 | $filter_query = $this->getFilter($filter,true,true); |
||
1090 | |||
1091 | $limit_query = ''; |
||
1092 | if ($limit != "") |
||
1093 | { |
||
1094 | $limit_array = explode(",", $limit); |
||
1095 | |||
1096 | $limit_array[0] = filter_var($limit_array[0],FILTER_SANITIZE_NUMBER_INT); |
||
1097 | $limit_array[1] = filter_var($limit_array[1],FILTER_SANITIZE_NUMBER_INT); |
||
1098 | |||
1099 | if ($limit_array[0] >= 0 && $limit_array[1] >= 0) |
||
1100 | { |
||
1101 | //$limit_query = " LIMIT ".$limit_array[0].",".$limit_array[1]; |
||
1102 | $limit_query = " LIMIT ".$limit_array[1]." OFFSET ".$limit_array[0]; |
||
1103 | } |
||
1104 | } |
||
1105 | |||
1106 | if ($sort != "") |
||
1107 | { |
||
1108 | $search_orderby_array = $this->getOrderBy(); |
||
1109 | $orderby_query = $search_orderby_array[$sort]['sql']; |
||
1110 | } else { |
||
1111 | $orderby_query = " ORDER BY spotter_output.date DESC "; |
||
1112 | } |
||
1113 | |||
1114 | $query = $global_query." ".$filter_query." spotter_output.registration <> '' GROUP BY spotter_output.registration,spotter_output.ident,spotter_output.spotter_id, spotter_output.flightaware_id, spotter_output.registration,spotter_output.airline_name,spotter_output.airline_icao,spotter_output.airline_country,spotter_output.airline_type,spotter_output.aircraft_icao,spotter_output.aircraft_name,spotter_output.aircraft_manufacturer,spotter_output.departure_airport_icao,spotter_output.departure_airport_name,spotter_output.departure_airport_city,spotter_output.departure_airport_country,spotter_output.departure_airport_time,spotter_output.arrival_airport_icao,spotter_output.arrival_airport_name,spotter_output.arrival_airport_city,spotter_output.arrival_airport_country,spotter_output.arrival_airport_time,spotter_output.route_stop,spotter_output.date,spotter_output.latitude,spotter_output.longitude,spotter_output.waypoints,spotter_output.altitude,spotter_output.heading,spotter_output.ground_speed,spotter_output.highlight,spotter_output.squawk,spotter_output.ModeS,spotter_output.pilot_id,spotter_output.pilot_name,spotter_output.verticalrate,spotter_output.owner_name,spotter_output.format_source,spotter_output.source_name,spotter_output.ground,spotter_output.last_ground,spotter_output.last_seen,spotter_output.last_latitude,spotter_output.last_longitude,spotter_output.last_altitude,spotter_output.last_ground_speed,spotter_output.real_arrival_airport_icao,spotter_output.real_arrival_airport_time ".$orderby_query; |
||
1115 | |||
1116 | $spotter_array = $this->getDataFromDB($query, array(), $limit_query); |
||
1117 | |||
1118 | return $spotter_array; |
||
1119 | } |
||
1120 | |||
1121 | |||
1122 | /** |
||
1123 | * Gets all the spotter information sorted by the newest airline |
||
1124 | * |
||
1125 | * @return Array the spotter information |
||
1126 | * |
||
1127 | */ |
||
1128 | public function getNewestSpotterDataSortedByAirline($limit = '', $sort = '',$filter = array()) |
||
1129 | { |
||
1130 | global $global_query; |
||
1131 | |||
1132 | date_default_timezone_set('UTC'); |
||
1133 | $filter_query = $this->getFilter($filter,true,true); |
||
1134 | |||
1135 | $limit_query = ''; |
||
1136 | if ($limit != "") |
||
1137 | { |
||
1138 | $limit_array = explode(",", $limit); |
||
1139 | |||
1140 | $limit_array[0] = filter_var($limit_array[0],FILTER_SANITIZE_NUMBER_INT); |
||
1141 | $limit_array[1] = filter_var($limit_array[1],FILTER_SANITIZE_NUMBER_INT); |
||
1142 | |||
1143 | if ($limit_array[0] >= 0 && $limit_array[1] >= 0) |
||
1144 | { |
||
1145 | //$limit_query = " LIMIT ".$limit_array[0].",".$limit_array[1]; |
||
1146 | $limit_query = " LIMIT ".$limit_array[1]." OFFSET ".$limit_array[0]; |
||
1147 | } |
||
1148 | } |
||
1149 | |||
1150 | if ($sort != "") |
||
1151 | { |
||
1152 | $search_orderby_array = $this->getOrderBy(); |
||
1153 | $orderby_query = $search_orderby_array[$sort]['sql']; |
||
1154 | } else { |
||
1155 | $orderby_query = " ORDER BY spotter_output.date DESC "; |
||
1156 | } |
||
1157 | |||
1158 | $query = $global_query." ".$filter_query." spotter_output.airline_name <> '' GROUP BY spotter_output.airline_icao,spotter_output.ident,spotter_output.spotter_id, spotter_output.flightaware_id, spotter_output.registration,spotter_output.airline_name,spotter_output.airline_icao,spotter_output.airline_country,spotter_output.airline_type,spotter_output.aircraft_icao,spotter_output.aircraft_name,spotter_output.aircraft_manufacturer,spotter_output.departure_airport_icao,spotter_output.departure_airport_name,spotter_output.departure_airport_city,spotter_output.departure_airport_country,spotter_output.departure_airport_time,spotter_output.arrival_airport_icao,spotter_output.arrival_airport_name,spotter_output.arrival_airport_city,spotter_output.arrival_airport_country,spotter_output.arrival_airport_time,spotter_output.route_stop,spotter_output.date,spotter_output.latitude,spotter_output.longitude,spotter_output.waypoints,spotter_output.altitude,spotter_output.heading,spotter_output.ground_speed,spotter_output.highlight,spotter_output.squawk,spotter_output.ModeS,spotter_output.pilot_id,spotter_output.pilot_name,spotter_output.verticalrate,spotter_output.owner_name,spotter_output.format_source,spotter_output.source_name,spotter_output.ground,spotter_output.last_ground,spotter_output.last_seen,spotter_output.last_latitude,spotter_output.last_longitude,spotter_output.last_altitude,spotter_output.last_ground_speed,spotter_output.real_arrival_airport_icao,spotter_output.real_arrival_airport_time ".$orderby_query; |
||
1159 | |||
1160 | $spotter_array = $this->getDataFromDB($query, array(), $limit_query); |
||
1161 | |||
1162 | return $spotter_array; |
||
1163 | } |
||
1164 | |||
1165 | |||
1166 | /** |
||
1167 | * Gets all the spotter information sorted by the newest departure airport |
||
1168 | * |
||
1169 | * @return Array the spotter information |
||
1170 | * |
||
1171 | */ |
||
1172 | public function getNewestSpotterDataSortedByDepartureAirport($limit = '', $sort = '', $filter = array()) |
||
1173 | { |
||
1174 | global $global_query; |
||
1175 | |||
1176 | date_default_timezone_set('UTC'); |
||
1177 | |||
1178 | $filter_query = $this->getFilter($filter,true,true); |
||
1179 | |||
1180 | $limit_query = ''; |
||
1181 | |||
1182 | if ($limit != "") |
||
1183 | { |
||
1184 | $limit_array = explode(",", $limit); |
||
1185 | |||
1186 | $limit_array[0] = filter_var($limit_array[0],FILTER_SANITIZE_NUMBER_INT); |
||
1187 | $limit_array[1] = filter_var($limit_array[1],FILTER_SANITIZE_NUMBER_INT); |
||
1188 | |||
1189 | if ($limit_array[0] >= 0 && $limit_array[1] >= 0) |
||
1190 | { |
||
1191 | //$limit_query = " LIMIT ".$limit_array[0].",".$limit_array[1]; |
||
1192 | $limit_query = " LIMIT ".$limit_array[1]." OFFSET ".$limit_array[0]; |
||
1193 | } |
||
1194 | } |
||
1195 | |||
1196 | if ($sort != "") |
||
1197 | { |
||
1198 | $search_orderby_array = $this->getOrderBy(); |
||
1199 | $orderby_query = $search_orderby_array[$sort]['sql']; |
||
1200 | } else { |
||
1201 | $orderby_query = " ORDER BY spotter_output.date DESC "; |
||
1202 | } |
||
1203 | |||
1204 | $query = $global_query." ".$filter_query." spotter_output.departure_airport_name <> '' AND spotter_output.departure_airport_icao <> 'NA' GROUP BY spotter_output.departure_airport_icao,spotter_output.ident,spotter_output.spotter_id, spotter_output.flightaware_id, spotter_output.registration,spotter_output.airline_name,spotter_output.airline_icao,spotter_output.airline_country,spotter_output.airline_type,spotter_output.aircraft_icao,spotter_output.aircraft_name,spotter_output.aircraft_manufacturer,spotter_output.departure_airport_icao,spotter_output.departure_airport_name,spotter_output.departure_airport_city,spotter_output.departure_airport_country,spotter_output.departure_airport_time,spotter_output.arrival_airport_icao,spotter_output.arrival_airport_name,spotter_output.arrival_airport_city,spotter_output.arrival_airport_country,spotter_output.arrival_airport_time,spotter_output.route_stop,spotter_output.date,spotter_output.latitude,spotter_output.longitude,spotter_output.waypoints,spotter_output.altitude,spotter_output.heading,spotter_output.ground_speed,spotter_output.highlight,spotter_output.squawk,spotter_output.ModeS,spotter_output.pilot_id,spotter_output.pilot_name,spotter_output.verticalrate,spotter_output.owner_name,spotter_output.format_source,spotter_output.source_name,spotter_output.ground,spotter_output.last_ground,spotter_output.last_seen,spotter_output.last_latitude,spotter_output.last_longitude,spotter_output.last_altitude,spotter_output.last_ground_speed,spotter_output.real_arrival_airport_icao,spotter_output.real_arrival_airport_time ".$orderby_query; |
||
1205 | |||
1206 | $spotter_array = $this->getDataFromDB($query, array(), $limit_query); |
||
1207 | |||
1208 | return $spotter_array; |
||
1209 | } |
||
1210 | |||
1211 | |||
1212 | /** |
||
1213 | * Gets all the spotter information sorted by the newest arrival airport |
||
1214 | * |
||
1215 | * @return Array the spotter information |
||
1216 | * |
||
1217 | */ |
||
1218 | public function getNewestSpotterDataSortedByArrivalAirport($limit = '', $sort = '', $filter = array()) |
||
1219 | { |
||
1220 | global $global_query; |
||
1221 | |||
1222 | date_default_timezone_set('UTC'); |
||
1223 | $filter_query = $this->getFilter($filter,true,true); |
||
1224 | $limit_query = ''; |
||
1225 | if ($limit != "") |
||
1226 | { |
||
1227 | $limit_array = explode(",", $limit); |
||
1228 | |||
1229 | $limit_array[0] = filter_var($limit_array[0],FILTER_SANITIZE_NUMBER_INT); |
||
1230 | $limit_array[1] = filter_var($limit_array[1],FILTER_SANITIZE_NUMBER_INT); |
||
1231 | |||
1232 | if ($limit_array[0] >= 0 && $limit_array[1] >= 0) |
||
1233 | { |
||
1234 | //$limit_query = " LIMIT ".$limit_array[0].",".$limit_array[1]; |
||
1235 | $limit_query = " LIMIT ".$limit_array[1]." OFFSET ".$limit_array[0]; |
||
1236 | } |
||
1237 | } |
||
1238 | |||
1239 | if ($sort != "") |
||
1240 | { |
||
1241 | $search_orderby_array = $this->getOrderBy(); |
||
1242 | $orderby_query = $search_orderby_array[$sort]['sql']; |
||
1243 | } else { |
||
1244 | $orderby_query = " ORDER BY spotter_output.date DESC "; |
||
1245 | } |
||
1246 | |||
1247 | $query = $global_query.$filter_query." spotter_output.arrival_airport_name <> '' AND spotter_output.arrival_airport_icao <> 'NA' AND spotter_output.arrival_airport_icao <> '' GROUP BY spotter_output.arrival_airport_icao,spotter_output.ident,spotter_output.spotter_id, spotter_output.flightaware_id, spotter_output.registration,spotter_output.airline_name,spotter_output.airline_icao,spotter_output.airline_country,spotter_output.airline_type,spotter_output.aircraft_icao,spotter_output.aircraft_name,spotter_output.aircraft_manufacturer,spotter_output.departure_airport_icao,spotter_output.departure_airport_name,spotter_output.departure_airport_city,spotter_output.departure_airport_country,spotter_output.departure_airport_time,spotter_output.arrival_airport_icao,spotter_output.arrival_airport_name,spotter_output.arrival_airport_city,spotter_output.arrival_airport_country,spotter_output.arrival_airport_time,spotter_output.route_stop,spotter_output.date,spotter_output.latitude,spotter_output.longitude,spotter_output.waypoints,spotter_output.altitude,spotter_output.heading,spotter_output.ground_speed,spotter_output.highlight,spotter_output.squawk,spotter_output.ModeS,spotter_output.pilot_id,spotter_output.pilot_name,spotter_output.verticalrate,spotter_output.owner_name,spotter_output.format_source,spotter_output.source_name,spotter_output.ground,spotter_output.last_ground,spotter_output.last_seen,spotter_output.last_latitude,spotter_output.last_longitude,spotter_output.last_altitude,spotter_output.last_ground_speed,spotter_output.real_arrival_airport_icao,spotter_output.real_arrival_airport_time ".$orderby_query; |
||
1248 | |||
1249 | $spotter_array = $this->getDataFromDB($query, array(), $limit_query); |
||
1250 | |||
1251 | return $spotter_array; |
||
1252 | } |
||
1253 | |||
1254 | |||
1255 | /** |
||
1256 | * Gets all the spotter information based on the spotter id |
||
1257 | * |
||
1258 | * @return Array the spotter information |
||
1259 | * |
||
1260 | */ |
||
1261 | public function getSpotterDataByID($id = '') |
||
1262 | { |
||
1263 | global $global_query; |
||
1264 | |||
1265 | date_default_timezone_set('UTC'); |
||
1266 | if ($id == '') return array(); |
||
1267 | $additional_query = "spotter_output.spotter_id = :id"; |
||
1268 | $query_values = array(':id' => $id); |
||
1269 | |||
1270 | //$query = $global_query." WHERE spotter_output.ident <> '' ".$additional_query." "; |
||
1271 | $query = $global_query." WHERE ".$additional_query." "; |
||
1272 | |||
1273 | $spotter_array = $this->getDataFromDB($query,$query_values); |
||
1274 | |||
1275 | return $spotter_array; |
||
1276 | } |
||
1277 | |||
1278 | |||
1279 | |||
1280 | |||
1281 | /** |
||
1282 | * Gets all the spotter information based on the callsign |
||
1283 | * |
||
1284 | * @return Array the spotter information |
||
1285 | * |
||
1286 | */ |
||
1287 | public function getSpotterDataByIdent($ident = '', $limit = '', $sort = '', $filter = array()) |
||
1288 | { |
||
1289 | global $global_query; |
||
1290 | |||
1291 | date_default_timezone_set('UTC'); |
||
1292 | |||
1293 | $query_values = array(); |
||
1294 | $limit_query = ''; |
||
1295 | $additional_query = ''; |
||
1296 | $filter_query = $this->getFilter($filter,true,true); |
||
1297 | if ($ident != "") |
||
1298 | { |
||
1299 | if (!is_string($ident)) |
||
1300 | { |
||
1301 | return false; |
||
1302 | } else { |
||
1303 | $additional_query = " AND (spotter_output.ident = :ident)"; |
||
1304 | $query_values = array(':ident' => $ident); |
||
1305 | } |
||
1306 | } |
||
1307 | |||
1308 | if ($limit != "") |
||
1309 | { |
||
1310 | $limit_array = explode(",", $limit); |
||
1311 | |||
1312 | $limit_array[0] = filter_var($limit_array[0],FILTER_SANITIZE_NUMBER_INT); |
||
1313 | $limit_array[1] = filter_var($limit_array[1],FILTER_SANITIZE_NUMBER_INT); |
||
1314 | |||
1315 | if ($limit_array[0] >= 0 && $limit_array[1] >= 0) |
||
1316 | { |
||
1317 | //$limit_query = " LIMIT ".$limit_array[0].",".$limit_array[1]; |
||
1318 | $limit_query = " LIMIT ".$limit_array[1]." OFFSET ".$limit_array[0]; |
||
1319 | } |
||
1320 | } |
||
1321 | |||
1322 | if ($sort != "") |
||
1323 | { |
||
1324 | $search_orderby_array = $this->getOrderBy(); |
||
1325 | $orderby_query = $search_orderby_array[$sort]['sql']; |
||
1326 | } else { |
||
1327 | $orderby_query = " ORDER BY spotter_output.date DESC"; |
||
1328 | } |
||
1329 | |||
1330 | $query = $global_query.$filter_query." spotter_output.ident <> '' ".$additional_query." ".$orderby_query; |
||
1331 | |||
1332 | $spotter_array = $this->getDataFromDB($query, $query_values, $limit_query); |
||
1333 | |||
1334 | return $spotter_array; |
||
1335 | } |
||
1336 | |||
1337 | /** |
||
1338 | * Gets all the spotter information based on the owner |
||
1339 | * |
||
1340 | * @return Array the spotter information |
||
1341 | * |
||
1342 | */ |
||
1343 | public function getSpotterDataByOwner($owner = '', $limit = '', $sort = '', $filter = array()) |
||
1344 | { |
||
1345 | global $global_query; |
||
1346 | |||
1347 | date_default_timezone_set('UTC'); |
||
1348 | |||
1349 | $query_values = array(); |
||
1350 | $limit_query = ''; |
||
1351 | $additional_query = ''; |
||
1352 | $filter_query = $this->getFilter($filter,true,true); |
||
1353 | if ($owner != "") |
||
1354 | { |
||
1355 | if (!is_string($owner)) |
||
1356 | { |
||
1357 | return false; |
||
1358 | } else { |
||
1359 | $additional_query = " AND (spotter_output.owner_name = :owner)"; |
||
1360 | $query_values = array(':owner' => $owner); |
||
1361 | } |
||
1362 | } |
||
1363 | |||
1364 | if ($limit != "") |
||
1365 | { |
||
1366 | $limit_array = explode(",", $limit); |
||
1367 | |||
1368 | $limit_array[0] = filter_var($limit_array[0],FILTER_SANITIZE_NUMBER_INT); |
||
1369 | $limit_array[1] = filter_var($limit_array[1],FILTER_SANITIZE_NUMBER_INT); |
||
1370 | |||
1371 | if ($limit_array[0] >= 0 && $limit_array[1] >= 0) |
||
1372 | { |
||
1373 | //$limit_query = " LIMIT ".$limit_array[0].",".$limit_array[1]; |
||
1374 | $limit_query = " LIMIT ".$limit_array[1]." OFFSET ".$limit_array[0]; |
||
1375 | } |
||
1376 | } |
||
1377 | |||
1378 | if ($sort != "") |
||
1379 | { |
||
1380 | $search_orderby_array = $this->getOrderBy(); |
||
1381 | if (isset($search_orderby_array[$sort]['sql'])) $orderby_query = $search_orderby_array[$sort]['sql']; |
||
1382 | else $orderby_query = " ORDER BY spotter_output.date DESC"; |
||
1383 | } else { |
||
1384 | $orderby_query = " ORDER BY spotter_output.date DESC"; |
||
1385 | } |
||
1386 | |||
1387 | $query = $global_query.$filter_query." spotter_output.owner_name <> '' ".$additional_query." ".$orderby_query; |
||
1388 | |||
1389 | $spotter_array = $this->getDataFromDB($query, $query_values, $limit_query); |
||
1390 | |||
1391 | return $spotter_array; |
||
1392 | } |
||
1393 | |||
1394 | /** |
||
1395 | * Gets all the spotter information based on the pilot |
||
1396 | * |
||
1397 | * @return Array the spotter information |
||
1398 | * |
||
1399 | */ |
||
1400 | public function getSpotterDataByPilot($pilot = '', $limit = '', $sort = '', $filter = array()) |
||
1401 | { |
||
1402 | global $global_query; |
||
1403 | |||
1404 | date_default_timezone_set('UTC'); |
||
1405 | |||
1406 | $query_values = array(); |
||
1407 | $limit_query = ''; |
||
1408 | $additional_query = ''; |
||
1409 | $filter_query = $this->getFilter($filter,true,true); |
||
1410 | if ($pilot != "") |
||
1411 | { |
||
1412 | $additional_query = " AND (spotter_output.pilot_name = :pilot OR spotter_output.pilot_id = :pilot)"; |
||
1413 | $query_values = array(':pilot' => $pilot); |
||
1414 | } |
||
1415 | |||
1416 | if ($limit != "") |
||
1417 | { |
||
1418 | $limit_array = explode(",", $limit); |
||
1419 | |||
1420 | $limit_array[0] = filter_var($limit_array[0],FILTER_SANITIZE_NUMBER_INT); |
||
1421 | $limit_array[1] = filter_var($limit_array[1],FILTER_SANITIZE_NUMBER_INT); |
||
1422 | |||
1423 | if ($limit_array[0] >= 0 && $limit_array[1] >= 0) |
||
1424 | { |
||
1425 | //$limit_query = " LIMIT ".$limit_array[0].",".$limit_array[1]; |
||
1426 | $limit_query = " LIMIT ".$limit_array[1]." OFFSET ".$limit_array[0]; |
||
1427 | } |
||
1428 | } |
||
1429 | |||
1430 | if ($sort != "") |
||
1431 | { |
||
1432 | $search_orderby_array = $this->getOrderBy(); |
||
1433 | $orderby_query = $search_orderby_array[$sort]['sql']; |
||
1434 | } else { |
||
1435 | $orderby_query = " ORDER BY spotter_output.date DESC"; |
||
1436 | } |
||
1437 | |||
1438 | $query = $global_query.$filter_query." spotter_output.pilot_name <> '' ".$additional_query." ".$orderby_query; |
||
1439 | |||
1440 | $spotter_array = $this->getDataFromDB($query, $query_values, $limit_query); |
||
1441 | |||
1442 | return $spotter_array; |
||
1443 | } |
||
1444 | |||
1445 | |||
1446 | |||
1447 | /** |
||
1448 | * Gets all the spotter information based on the aircraft type |
||
1449 | * |
||
1450 | * @return Array the spotter information |
||
1451 | * |
||
1452 | */ |
||
1453 | public function getSpotterDataByAircraft($aircraft_type = '', $limit = '', $sort = '', $filter = array()) |
||
1454 | { |
||
1455 | global $global_query; |
||
1456 | |||
1457 | date_default_timezone_set('UTC'); |
||
1458 | |||
1459 | $query_values = array(); |
||
1460 | $limit_query = ''; |
||
1461 | $additional_query = ''; |
||
1462 | $filter_query = $this->getFilter($filter,true,true); |
||
1463 | |||
1464 | if ($aircraft_type != "") |
||
1465 | { |
||
1466 | if (!is_string($aircraft_type)) |
||
1467 | { |
||
1468 | return false; |
||
1469 | } else { |
||
1470 | $additional_query = " AND (spotter_output.aircraft_icao = :aircraft_type)"; |
||
1471 | $query_values = array(':aircraft_type' => $aircraft_type); |
||
1472 | } |
||
1473 | } |
||
1474 | |||
1475 | if ($limit != "") |
||
1476 | { |
||
1477 | $limit_array = explode(",", $limit); |
||
1478 | |||
1479 | $limit_array[0] = filter_var($limit_array[0],FILTER_SANITIZE_NUMBER_INT); |
||
1480 | $limit_array[1] = filter_var($limit_array[1],FILTER_SANITIZE_NUMBER_INT); |
||
1481 | |||
1482 | if ($limit_array[0] >= 0 && $limit_array[1] >= 0) |
||
1483 | { |
||
1484 | //$limit_query = " LIMIT ".$limit_array[0].",".$limit_array[1]; |
||
1485 | $limit_query = " LIMIT ".$limit_array[1]." OFFSET ".$limit_array[0]; |
||
1486 | } |
||
1487 | } |
||
1488 | |||
1489 | if ($sort != "") |
||
1490 | { |
||
1491 | $search_orderby_array = $this->getOrderBy(); |
||
1492 | $orderby_query = $search_orderby_array[$sort]['sql']; |
||
1493 | } else { |
||
1494 | $orderby_query = " ORDER BY spotter_output.date DESC"; |
||
1495 | } |
||
1496 | |||
1497 | $query = $global_query.$filter_query." spotter_output.ident <> '' ".$additional_query." ".$orderby_query; |
||
1498 | |||
1499 | $spotter_array = $this->getDataFromDB($query, $query_values, $limit_query); |
||
1500 | |||
1501 | return $spotter_array; |
||
1502 | } |
||
1503 | |||
1504 | |||
1505 | /** |
||
1506 | * Gets all the spotter information based on the aircraft registration |
||
1507 | * |
||
1508 | * @return Array the spotter information |
||
1509 | * |
||
1510 | */ |
||
1511 | public function getSpotterDataByRegistration($registration = '', $limit = '', $sort = '', $filter = array()) |
||
1512 | { |
||
1513 | global $global_query; |
||
1514 | |||
1515 | date_default_timezone_set('UTC'); |
||
1516 | |||
1517 | $query_values = array(); |
||
1518 | $limit_query = ''; |
||
1519 | $additional_query = ''; |
||
1520 | |||
1521 | if ($registration != "") |
||
1522 | { |
||
1523 | if (!is_string($registration)) |
||
1524 | { |
||
1525 | return false; |
||
1526 | } else { |
||
1527 | $additional_query = " (spotter_output.registration = :registration)"; |
||
1528 | $query_values = array(':registration' => $registration); |
||
1529 | } |
||
1530 | } |
||
1531 | |||
1532 | if ($limit != "") |
||
1533 | { |
||
1534 | $limit_array = explode(",", $limit); |
||
1535 | |||
1536 | $limit_array[0] = filter_var($limit_array[0],FILTER_SANITIZE_NUMBER_INT); |
||
1537 | $limit_array[1] = filter_var($limit_array[1],FILTER_SANITIZE_NUMBER_INT); |
||
1538 | |||
1539 | if ($limit_array[0] >= 0 && $limit_array[1] >= 0) |
||
1540 | { |
||
1541 | //$limit_query = " LIMIT ".$limit_array[0].",".$limit_array[1]; |
||
1542 | $limit_query = " LIMIT ".$limit_array[1]." OFFSET ".$limit_array[0]; |
||
1543 | } |
||
1544 | } |
||
1545 | |||
1546 | if ($sort != "") |
||
1547 | { |
||
1548 | $search_orderby_array = $this->getOrderBy(); |
||
1549 | $orderby_query = $search_orderby_array[$sort]['sql']; |
||
1550 | } else { |
||
1551 | $orderby_query = " ORDER BY spotter_output.date DESC"; |
||
1552 | } |
||
1553 | $filter_query = $this->getFilter($filter,true,true); |
||
1554 | |||
1555 | //$query = $global_query.$filter_query." spotter_output.ident <> '' ".$additional_query." ".$orderby_query; |
||
1556 | $query = $global_query.$filter_query." ".$additional_query." ".$orderby_query; |
||
1557 | |||
1558 | $spotter_array = $this->getDataFromDB($query, $query_values, $limit_query); |
||
1559 | |||
1560 | return $spotter_array; |
||
1561 | } |
||
1562 | |||
1563 | |||
1564 | |||
1565 | |||
1566 | /** |
||
1567 | * Gets all the spotter information based on the airline |
||
1568 | * |
||
1569 | * @return Array the spotter information |
||
1570 | * |
||
1571 | */ |
||
1572 | public function getSpotterDataByAirline($airline = '', $limit = '', $sort = '',$filters = array()) |
||
1573 | { |
||
1574 | global $global_query; |
||
1575 | |||
1576 | date_default_timezone_set('UTC'); |
||
1577 | |||
1578 | $query_values = array(); |
||
1579 | $limit_query = ''; |
||
1580 | $additional_query = ''; |
||
1581 | $filter_query = $this->getFilter($filters,true,true); |
||
1582 | |||
1583 | if ($airline != "") |
||
1584 | { |
||
1585 | if (!is_string($airline)) |
||
1586 | { |
||
1587 | return false; |
||
1588 | } else { |
||
1589 | $additional_query = " AND (spotter_output.airline_icao = :airline)"; |
||
1590 | $query_values = array(':airline' => $airline); |
||
1591 | } |
||
1592 | } |
||
1593 | |||
1594 | if ($limit != "") |
||
1595 | { |
||
1596 | $limit_array = explode(",", $limit); |
||
1597 | |||
1598 | $limit_array[0] = filter_var($limit_array[0],FILTER_SANITIZE_NUMBER_INT); |
||
1599 | $limit_array[1] = filter_var($limit_array[1],FILTER_SANITIZE_NUMBER_INT); |
||
1600 | |||
1601 | if ($limit_array[0] >= 0 && $limit_array[1] >= 0) |
||
1602 | { |
||
1603 | //$limit_query = " LIMIT ".$limit_array[0].",".$limit_array[1]; |
||
1604 | $limit_query = " LIMIT ".$limit_array[1]." OFFSET ".$limit_array[0]; |
||
1605 | } |
||
1606 | } |
||
1607 | |||
1608 | if ($sort != "") |
||
1609 | { |
||
1610 | $search_orderby_array = $this->getOrderBy(); |
||
1611 | $orderby_query = $search_orderby_array[$sort]['sql']; |
||
1612 | } else { |
||
1613 | $orderby_query = " ORDER BY spotter_output.date DESC"; |
||
1614 | } |
||
1615 | |||
1616 | $query = $global_query.$filter_query." spotter_output.ident <> '' ".$additional_query." ".$orderby_query; |
||
1617 | $spotter_array = $this->getDataFromDB($query, $query_values, $limit_query); |
||
1618 | |||
1619 | return $spotter_array; |
||
1620 | } |
||
1621 | |||
1622 | |||
1623 | /** |
||
1624 | * Gets all the spotter information based on the airport |
||
1625 | * |
||
1626 | * @return Array the spotter information |
||
1627 | * |
||
1628 | */ |
||
1629 | public function getSpotterDataByAirport($airport = '', $limit = '', $sort = '',$filters = array()) |
||
1630 | { |
||
1631 | global $global_query; |
||
1632 | |||
1633 | date_default_timezone_set('UTC'); |
||
1634 | $query_values = array(); |
||
1635 | $limit_query = ''; |
||
1636 | $additional_query = ''; |
||
1637 | $filter_query = $this->getFilter($filters,true,true); |
||
1638 | |||
1639 | if ($airport != "") |
||
1640 | { |
||
1641 | if (!is_string($airport)) |
||
1642 | { |
||
1643 | return false; |
||
1644 | } else { |
||
1645 | $additional_query .= " AND ((spotter_output.departure_airport_icao = :airport) OR (spotter_output.arrival_airport_icao = :airport))"; |
||
1646 | $query_values = array(':airport' => $airport); |
||
1647 | } |
||
1648 | } |
||
1649 | |||
1650 | if ($limit != "") |
||
1651 | { |
||
1652 | $limit_array = explode(",", $limit); |
||
1653 | |||
1654 | $limit_array[0] = filter_var($limit_array[0],FILTER_SANITIZE_NUMBER_INT); |
||
1655 | $limit_array[1] = filter_var($limit_array[1],FILTER_SANITIZE_NUMBER_INT); |
||
1656 | |||
1657 | if ($limit_array[0] >= 0 && $limit_array[1] >= 0) |
||
1658 | { |
||
1659 | //$limit_query = " LIMIT ".$limit_array[0].",".$limit_array[1]; |
||
1660 | $limit_query = " LIMIT ".$limit_array[1]." OFFSET ".$limit_array[0]; |
||
1661 | } |
||
1662 | } |
||
1663 | |||
1664 | if ($sort != "") |
||
1665 | { |
||
1666 | $search_orderby_array = $this->getOrderBy(); |
||
1667 | $orderby_query = $search_orderby_array[$sort]['sql']; |
||
1668 | } else { |
||
1669 | $orderby_query = " ORDER BY spotter_output.date DESC"; |
||
1670 | } |
||
1671 | |||
1672 | $query = $global_query.$filter_query." spotter_output.ident <> '' ".$additional_query." AND ((spotter_output.departure_airport_icao <> 'NA') AND (spotter_output.arrival_airport_icao <> 'NA')) ".$orderby_query; |
||
1673 | |||
1674 | $spotter_array = $this->getDataFromDB($query, $query_values, $limit_query); |
||
1675 | |||
1676 | return $spotter_array; |
||
1677 | } |
||
1678 | |||
1679 | |||
1680 | |||
1681 | /** |
||
1682 | * Gets all the spotter information based on the date |
||
1683 | * |
||
1684 | * @return Array the spotter information |
||
1685 | * |
||
1686 | */ |
||
1687 | public function getSpotterDataByDate($date = '', $limit = '', $sort = '',$filter = array()) |
||
1688 | { |
||
1689 | global $global_query, $globalTimezone, $globalDBdriver; |
||
1690 | |||
1691 | $query_values = array(); |
||
1692 | $limit_query = ''; |
||
1693 | $additional_query = ''; |
||
1694 | |||
1695 | $filter_query = $this->getFilter($filter,true,true); |
||
1696 | |||
1697 | if ($date != "") |
||
1698 | { |
||
1699 | if ($globalTimezone != '') { |
||
1700 | date_default_timezone_set($globalTimezone); |
||
1701 | $datetime = new DateTime($date); |
||
1702 | $offset = $datetime->format('P'); |
||
1703 | } else { |
||
1704 | date_default_timezone_set('UTC'); |
||
1705 | $datetime = new DateTime($date); |
||
1706 | $offset = '+00:00'; |
||
1707 | } |
||
1708 | if ($globalDBdriver == 'mysql') { |
||
1709 | $additional_query = " AND DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) = :date "; |
||
1710 | $query_values = array(':date' => $datetime->format('Y-m-d'), ':offset' => $offset); |
||
1711 | } elseif ($globalDBdriver == 'pgsql') { |
||
1712 | //$globalTimezone = 'UTC'; |
||
1713 | $additional_query = " AND to_char(spotter_output.date AT TIME ZONE :timezone,'YYYY-mm-dd') = :date "; |
||
1714 | $query_values = array(':date' => $datetime->format('Y-m-d'), ':timezone' => $globalTimezone); |
||
1715 | //$additional_query = " AND to_char(spotter_output.date,'YYYY-mm-dd') = :date "; |
||
1716 | //$query_values = array(':date' => $datetime->format('Y-m-d')); |
||
1717 | } |
||
1718 | } |
||
1719 | |||
1720 | if ($limit != "") |
||
1721 | { |
||
1722 | $limit_array = explode(",", $limit); |
||
1723 | |||
1724 | $limit_array[0] = filter_var($limit_array[0],FILTER_SANITIZE_NUMBER_INT); |
||
1725 | $limit_array[1] = filter_var($limit_array[1],FILTER_SANITIZE_NUMBER_INT); |
||
1726 | |||
1727 | if ($limit_array[0] >= 0 && $limit_array[1] >= 0) |
||
1728 | { |
||
1729 | //$limit_query = " LIMIT ".$limit_array[0].",".$limit_array[1]; |
||
1730 | $limit_query = " LIMIT ".$limit_array[1]." OFFSET ".$limit_array[0]; |
||
1731 | } |
||
1732 | } |
||
1733 | |||
1734 | if ($sort != "") |
||
1735 | { |
||
1736 | $search_orderby_array = $this->getOrderBy(); |
||
1737 | $orderby_query = $search_orderby_array[$sort]['sql']; |
||
1738 | } else { |
||
1739 | $orderby_query = " ORDER BY spotter_output.date DESC"; |
||
1740 | } |
||
1741 | |||
1742 | $query = $global_query.$filter_query." spotter_output.ident <> '' ".$additional_query.$orderby_query; |
||
1743 | $spotter_array = $this->getDataFromDB($query, $query_values, $limit_query); |
||
1744 | return $spotter_array; |
||
1745 | } |
||
1746 | |||
1747 | |||
1748 | |||
1749 | /** |
||
1750 | * Gets all the spotter information based on the country name |
||
1751 | * |
||
1752 | * @return Array the spotter information |
||
1753 | * |
||
1754 | */ |
||
1755 | public function getSpotterDataByCountry($country = '', $limit = '', $sort = '',$filters = array()) |
||
1756 | { |
||
1757 | global $global_query; |
||
1758 | |||
1759 | date_default_timezone_set('UTC'); |
||
1760 | |||
1761 | $query_values = array(); |
||
1762 | $limit_query = ''; |
||
1763 | $additional_query = ''; |
||
1764 | $filter_query = $this->getFilter($filters,true,true); |
||
1765 | if ($country != "") |
||
1766 | { |
||
1767 | if (!is_string($country)) |
||
1768 | { |
||
1769 | return false; |
||
1770 | } else { |
||
1771 | $additional_query .= " AND ((spotter_output.departure_airport_country = :country) OR (spotter_output.arrival_airport_country = :country))"; |
||
1772 | $additional_query .= " OR spotter_output.airline_country = :country"; |
||
1773 | $query_values = array(':country' => $country); |
||
1774 | } |
||
1775 | } |
||
1776 | |||
1777 | if ($limit != "") |
||
1778 | { |
||
1779 | $limit_array = explode(",", $limit); |
||
1780 | |||
1781 | $limit_array[0] = filter_var($limit_array[0],FILTER_SANITIZE_NUMBER_INT); |
||
1782 | $limit_array[1] = filter_var($limit_array[1],FILTER_SANITIZE_NUMBER_INT); |
||
1783 | |||
1784 | if ($limit_array[0] >= 0 && $limit_array[1] >= 0) |
||
1785 | { |
||
1786 | //$limit_query = " LIMIT ".$limit_array[0].",".$limit_array[1]; |
||
1787 | $limit_query = " LIMIT ".$limit_array[1]." OFFSET ".$limit_array[0]; |
||
1788 | } |
||
1789 | } |
||
1790 | |||
1791 | if ($sort != "") |
||
1792 | { |
||
1793 | $search_orderby_array = $this->getOrderBy(); |
||
1794 | $orderby_query = $search_orderby_array[$sort]['sql']; |
||
1795 | } else { |
||
1796 | $orderby_query = " ORDER BY spotter_output.date DESC"; |
||
1797 | } |
||
1798 | |||
1799 | $query = $global_query.$filter_query." spotter_output.ident <> '' ".$additional_query." ".$orderby_query; |
||
1800 | |||
1801 | $spotter_array = $this->getDataFromDB($query, $query_values, $limit_query); |
||
1802 | |||
1803 | return $spotter_array; |
||
1804 | } |
||
1805 | |||
1806 | |||
1807 | /** |
||
1808 | * Gets all the spotter information based on the manufacturer name |
||
1809 | * |
||
1810 | * @return Array the spotter information |
||
1811 | * |
||
1812 | */ |
||
1813 | public function getSpotterDataByManufacturer($aircraft_manufacturer = '', $limit = '', $sort = '', $filters = array()) |
||
1814 | { |
||
1815 | global $global_query; |
||
1816 | |||
1817 | date_default_timezone_set('UTC'); |
||
1818 | |||
1819 | $query_values = array(); |
||
1820 | $additional_query = ''; |
||
1821 | $limit_query = ''; |
||
1822 | $filter_query = $this->getFilter($filters,true,true); |
||
1823 | |||
1824 | if ($aircraft_manufacturer != "") |
||
1825 | { |
||
1826 | if (!is_string($aircraft_manufacturer)) |
||
1827 | { |
||
1828 | return false; |
||
1829 | } else { |
||
1830 | $additional_query .= " AND (spotter_output.aircraft_manufacturer = :aircraft_manufacturer)"; |
||
1831 | $query_values = array(':aircraft_manufacturer' => $aircraft_manufacturer); |
||
1832 | } |
||
1833 | } |
||
1834 | |||
1835 | if ($limit != "") |
||
1836 | { |
||
1837 | $limit_array = explode(",", $limit); |
||
1838 | |||
1839 | $limit_array[0] = filter_var($limit_array[0],FILTER_SANITIZE_NUMBER_INT); |
||
1840 | $limit_array[1] = filter_var($limit_array[1],FILTER_SANITIZE_NUMBER_INT); |
||
1841 | |||
1842 | if ($limit_array[0] >= 0 && $limit_array[1] >= 0) |
||
1843 | { |
||
1844 | //$limit_query = " LIMIT ".$limit_array[0].",".$limit_array[1]; |
||
1845 | $limit_query = " LIMIT ".$limit_array[1]." OFFSET ".$limit_array[0]; |
||
1846 | } |
||
1847 | } |
||
1848 | |||
1849 | if ($sort != "") |
||
1850 | { |
||
1851 | $search_orderby_array = $this->getOrderBy(); |
||
1852 | $orderby_query = $search_orderby_array[$sort]['sql']; |
||
1853 | } else { |
||
1854 | $orderby_query = " ORDER BY spotter_output.date DESC"; |
||
1855 | } |
||
1856 | |||
1857 | $query = $global_query.$filter_query." spotter_output.ident <> '' ".$additional_query." ".$orderby_query; |
||
1858 | |||
1859 | $spotter_array = $this->getDataFromDB($query, $query_values, $limit_query); |
||
1860 | |||
1861 | return $spotter_array; |
||
1862 | } |
||
1863 | |||
1864 | |||
1865 | |||
1866 | |||
1867 | /** |
||
1868 | * Gets a list of all aircraft that take a route |
||
1869 | * |
||
1870 | * @param String $departure_airport_icao ICAO code of departure airport |
||
1871 | * @param String $arrival_airport_icao ICAO code of arrival airport |
||
1872 | * @return Array the spotter information |
||
1873 | * |
||
1874 | */ |
||
1875 | public function getSpotterDataByRoute($departure_airport_icao = '', $arrival_airport_icao = '', $limit = '', $sort = '', $filters = array()) |
||
1876 | { |
||
1877 | global $global_query; |
||
1878 | |||
1879 | $query_values = array(); |
||
1880 | $additional_query = ''; |
||
1881 | $limit_query = ''; |
||
1882 | $filter_query = $this->getFilter($filters,true,true); |
||
1883 | if ($departure_airport_icao != "") |
||
1884 | { |
||
1885 | if (!is_string($departure_airport_icao)) |
||
1886 | { |
||
1887 | return false; |
||
1888 | } else { |
||
1889 | $departure_airport_icao = filter_var($departure_airport_icao,FILTER_SANITIZE_STRING); |
||
1890 | $additional_query .= " AND (spotter_output.departure_airport_icao = :departure_airport_icao)"; |
||
1891 | //$additional_query .= " AND (spotter_output.departure_airport_icao = :departure_airport_icao AND spotter_output.real_departure_airport_icao IS NULL) OR spotter_output.real_departure_airport_icao = :departure_airport_icao"; |
||
1892 | $query_values = array(':departure_airport_icao' => $departure_airport_icao); |
||
1893 | } |
||
1894 | } |
||
1895 | |||
1896 | if ($arrival_airport_icao != "") |
||
1897 | { |
||
1898 | if (!is_string($arrival_airport_icao)) |
||
1899 | { |
||
1900 | return false; |
||
1901 | } else { |
||
1902 | $arrival_airport_icao = filter_var($arrival_airport_icao,FILTER_SANITIZE_STRING); |
||
1903 | $additional_query .= " AND (spotter_output.arrival_airport_icao = :arrival_airport_icao)"; |
||
1904 | //$additional_query .= " AND ((spotter_output.arrival_airport_icao = :arrival_airport_icao AND spotter_output.real_arrival_airport_icao IS NULL) OR spotter_output.real_arrival_airport_icao = :arrival_airport_icao)"; |
||
1905 | $query_values = array_merge($query_values,array(':arrival_airport_icao' => $arrival_airport_icao)); |
||
1906 | } |
||
1907 | } |
||
1908 | |||
1909 | if ($limit != "") |
||
1910 | { |
||
1911 | $limit_array = explode(",", $limit); |
||
1912 | |||
1913 | $limit_array[0] = filter_var($limit_array[0],FILTER_SANITIZE_NUMBER_INT); |
||
1914 | $limit_array[1] = filter_var($limit_array[1],FILTER_SANITIZE_NUMBER_INT); |
||
1915 | |||
1916 | if ($limit_array[0] >= 0 && $limit_array[1] >= 0) |
||
1917 | { |
||
1918 | //$limit_query = " LIMIT ".$limit_array[0].",".$limit_array[1]; |
||
1919 | $limit_query = " LIMIT ".$limit_array[1]." OFFSET ".$limit_array[0]; |
||
1920 | } |
||
1921 | } |
||
1922 | |||
1923 | if ($sort != "") |
||
1924 | { |
||
1925 | $search_orderby_array = $this->getOrderBy(); |
||
1926 | $orderby_query = $search_orderby_array[$sort]['sql']; |
||
1927 | } else { |
||
1928 | $orderby_query = " ORDER BY spotter_output.date DESC"; |
||
1929 | } |
||
1930 | |||
1931 | $query = $global_query.$filter_query." spotter_output.ident <> '' ".$additional_query." ".$orderby_query; |
||
1932 | |||
1933 | //$result = mysqli_query($GLOBALS["___mysqli_ston"], $query); |
||
1934 | |||
1935 | $spotter_array = $this->getDataFromDB($query, $query_values, $limit_query); |
||
1936 | |||
1937 | return $spotter_array; |
||
1938 | } |
||
1939 | |||
1940 | |||
1941 | |||
1942 | /** |
||
1943 | * Gets all the spotter information based on the special column in the table |
||
1944 | * |
||
1945 | * @return Array the spotter information |
||
1946 | * |
||
1947 | */ |
||
1948 | public function getSpotterDataByHighlight($limit = '', $sort = '', $filter = array()) |
||
1949 | { |
||
1950 | global $global_query; |
||
1951 | |||
1952 | date_default_timezone_set('UTC'); |
||
1953 | $filter_query = $this->getFilter($filter,true,true); |
||
1954 | $limit_query = ''; |
||
1955 | |||
1956 | if ($limit != "") |
||
1957 | { |
||
1958 | $limit_array = explode(",", $limit); |
||
1959 | |||
1960 | $limit_array[0] = filter_var($limit_array[0],FILTER_SANITIZE_NUMBER_INT); |
||
1961 | $limit_array[1] = filter_var($limit_array[1],FILTER_SANITIZE_NUMBER_INT); |
||
1962 | |||
1963 | if ($limit_array[0] >= 0 && $limit_array[1] >= 0) |
||
1964 | { |
||
1965 | //$limit_query = " LIMIT ".$limit_array[0].",".$limit_array[1]; |
||
1966 | $limit_query = " LIMIT ".$limit_array[1]." OFFSET ".$limit_array[0]; |
||
1967 | } |
||
1968 | } |
||
1969 | |||
1970 | if ($sort != "") |
||
1971 | { |
||
1972 | $search_orderby_array = $this->getOrderBy(); |
||
1973 | $orderby_query = $search_orderby_array[$sort]['sql']; |
||
1974 | } else { |
||
1975 | $orderby_query = " ORDER BY spotter_output.date DESC"; |
||
1976 | } |
||
1977 | |||
1978 | $query = $global_query.$filter_query." spotter_output.highlight <> '' ".$orderby_query; |
||
1979 | |||
1980 | $spotter_array = $this->getDataFromDB($query, array(), $limit_query); |
||
1981 | |||
1982 | return $spotter_array; |
||
1983 | } |
||
1984 | |||
1985 | /** |
||
1986 | * Gets all the highlight based on a aircraft registration |
||
1987 | * |
||
1988 | * @return String the highlight text |
||
1989 | * |
||
1990 | */ |
||
1991 | public function getHighlightByRegistration($registration,$filter = array()) |
||
1992 | { |
||
1993 | global $global_query; |
||
1994 | |||
1995 | date_default_timezone_set('UTC'); |
||
1996 | $filter_query = $this->getFilter($filter,true,true); |
||
1997 | $registration = filter_var($registration,FILTER_SANITIZE_STRING); |
||
1998 | |||
1999 | $query = $global_query.$filter_query." spotter_output.highlight <> '' AND spotter_output.registration = :registration"; |
||
2000 | $sth = $this->db->prepare($query); |
||
2001 | $sth->execute(array(':registration' => $registration)); |
||
2002 | |||
2003 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
2004 | { |
||
2005 | $highlight = $row['highlight']; |
||
2006 | } |
||
2007 | if (isset($highlight)) return $highlight; |
||
2008 | } |
||
2009 | |||
2010 | |||
2011 | /** |
||
2012 | * Gets the squawk usage from squawk code |
||
2013 | * |
||
2014 | * @param String $squawk squawk code |
||
2015 | * @param String $country country |
||
2016 | * @return String usage |
||
2017 | * |
||
2018 | */ |
||
2019 | public function getSquawkUsage($squawk = '',$country = 'FR') |
||
2020 | { |
||
2021 | |||
2022 | $squawk = filter_var($squawk,FILTER_SANITIZE_STRING); |
||
2023 | $country = filter_var($country,FILTER_SANITIZE_STRING); |
||
2024 | |||
2025 | $query = "SELECT squawk.* FROM squawk WHERE squawk.code = :squawk AND squawk.country = :country LIMIT 1"; |
||
2026 | $query_values = array(':squawk' => ltrim($squawk,'0'), ':country' => $country); |
||
2027 | |||
2028 | $sth = $this->db->prepare($query); |
||
2029 | $sth->execute($query_values); |
||
2030 | |||
2031 | $row = $sth->fetch(PDO::FETCH_ASSOC); |
||
2032 | $sth->closeCursor(); |
||
2033 | if (count($row) > 0) { |
||
2034 | return $row['usage']; |
||
2035 | } else return ''; |
||
2036 | } |
||
2037 | |||
2038 | /** |
||
2039 | * Gets the airport icao from the iata |
||
2040 | * |
||
2041 | * @param String $airport_iata the iata code of the airport |
||
2042 | * @return String airport iata |
||
2043 | * |
||
2044 | */ |
||
2045 | public function getAirportIcao($airport_iata = '') |
||
2046 | { |
||
2047 | |||
2048 | $airport_iata = filter_var($airport_iata,FILTER_SANITIZE_STRING); |
||
2049 | |||
2050 | $query = "SELECT airport.* FROM airport WHERE airport.iata = :airport LIMIT 1"; |
||
2051 | $query_values = array(':airport' => $airport_iata); |
||
2052 | |||
2053 | $sth = $this->db->prepare($query); |
||
2054 | $sth->execute($query_values); |
||
2055 | |||
2056 | $row = $sth->fetch(PDO::FETCH_ASSOC); |
||
2057 | $sth->closeCursor(); |
||
2058 | if (count($row) > 0) { |
||
2059 | return $row['icao']; |
||
2060 | } else return ''; |
||
2061 | } |
||
2062 | |||
2063 | /** |
||
2064 | * Gets the airport distance |
||
2065 | * |
||
2066 | * @param String $airport_icao the icao code of the airport |
||
2067 | * @param Float $latitude the latitude |
||
2068 | * @param Float $longitude the longitude |
||
2069 | * @return Float distance to the airport |
||
2070 | * |
||
2071 | */ |
||
2072 | public function getAirportDistance($airport_icao,$latitude,$longitude) |
||
2073 | { |
||
2074 | |||
2075 | $airport_icao = filter_var($airport_icao,FILTER_SANITIZE_STRING); |
||
2076 | |||
2077 | $query = "SELECT airport.latitude, airport.longitude FROM airport WHERE airport.icao = :airport LIMIT 1"; |
||
2078 | $query_values = array(':airport' => $airport_icao); |
||
2079 | $sth = $this->db->prepare($query); |
||
2080 | $sth->execute($query_values); |
||
2081 | $row = $sth->fetch(PDO::FETCH_ASSOC); |
||
2082 | $sth->closeCursor(); |
||
2083 | if (count($row) > 0) { |
||
2084 | $airport_latitude = $row['latitude']; |
||
2085 | $airport_longitude = $row['longitude']; |
||
2086 | $Common = new Common(); |
||
2087 | return $Common->distance($latitude,$longitude,$airport_latitude,$airport_longitude); |
||
2088 | } else return ''; |
||
2089 | } |
||
2090 | |||
2091 | /** |
||
2092 | * Gets the airport info based on the icao |
||
2093 | * |
||
2094 | * @param String $airport the icao code of the airport |
||
2095 | * @return Array airport information |
||
2096 | * |
||
2097 | */ |
||
2098 | public function getAllAirportInfo($airport = '') |
||
2099 | { |
||
2100 | |||
2101 | $airport = filter_var($airport,FILTER_SANITIZE_STRING); |
||
2102 | |||
2103 | $query_values = array(); |
||
2104 | if ($airport == 'NA') { |
||
2105 | return array(array('name' => 'Not available','city' => 'N/A', 'country' => 'N/A','iata' => 'NA','icao' => 'NA','altitude' => NULL,'latitude' => 0,'longitude' => 0,'type' => 'NA','home_link' => '','wikipedia_link' => '','image_thumb' => '', 'image' => '')); |
||
2106 | } elseif ($airport == '') { |
||
2107 | $query = "SELECT airport.name, airport.city, airport.country, airport.iata, airport.icao, airport.latitude, airport.longitude, airport.altitude, airport.type, airport.home_link, airport.wikipedia_link, airport.image_thumb, airport.image FROM airport"; |
||
2108 | } else { |
||
2109 | $query = "SELECT airport.name, airport.city, airport.country, airport.iata, airport.icao, airport.latitude, airport.longitude, airport.altitude, airport.type, airport.home_link, airport.wikipedia_link, airport.image_thumb, airport.image FROM airport WHERE airport.icao = :airport LIMIT 1"; |
||
2110 | $query_values = array(':airport' => $airport); |
||
2111 | } |
||
2112 | |||
2113 | $sth = $this->db->prepare($query); |
||
2114 | $sth->execute($query_values); |
||
2115 | /* |
||
2116 | $airport_array = array(); |
||
2117 | $temp_array = array(); |
||
2118 | |||
2119 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
2120 | { |
||
2121 | $temp_array['name'] = $row['name']; |
||
2122 | $temp_array['city'] = $row['city']; |
||
2123 | $temp_array['country'] = $row['country']; |
||
2124 | $temp_array['iata'] = $row['iata']; |
||
2125 | $temp_array['icao'] = $row['icao']; |
||
2126 | $temp_array['latitude'] = $row['latitude']; |
||
2127 | $temp_array['longitude'] = $row['longitude']; |
||
2128 | $temp_array['altitude'] = $row['altitude']; |
||
2129 | $temp_array['home_link'] = $row['home_link']; |
||
2130 | $temp_array['wikipedia_link'] = $row['wikipedia_link']; |
||
2131 | $temp_array['image'] = $row['image']; |
||
2132 | $temp_array['image_thumb'] = $row['image_thumb']; |
||
2133 | |||
2134 | $airport_array[] = $temp_array; |
||
2135 | } |
||
2136 | |||
2137 | return $airport_array; |
||
2138 | */ |
||
2139 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
2140 | } |
||
2141 | |||
2142 | /** |
||
2143 | * Gets the airport info based on the country |
||
2144 | * |
||
2145 | * @param Array $countries Airports countries |
||
2146 | * @return Array airport information |
||
2147 | * |
||
2148 | */ |
||
2149 | public function getAllAirportInfobyCountry($countries) |
||
2150 | { |
||
2151 | $lst_countries = ''; |
||
2152 | foreach ($countries as $country) { |
||
2153 | $country = filter_var($country,FILTER_SANITIZE_STRING); |
||
2154 | if ($lst_countries == '') { |
||
2155 | $lst_countries = "'".$country."'"; |
||
2156 | } else { |
||
2157 | $lst_countries .= ",'".$country."'"; |
||
2158 | } |
||
2159 | } |
||
2160 | $query = "SELECT airport.* FROM airport WHERE airport.country IN (".$lst_countries.")"; |
||
2161 | |||
2162 | $sth = $this->db->prepare($query); |
||
2163 | $sth->execute(); |
||
2164 | |||
2165 | $airport_array = array(); |
||
2166 | $temp_array = array(); |
||
2167 | |||
2168 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
2169 | { |
||
2170 | $temp_array['name'] = $row['name']; |
||
2171 | $temp_array['city'] = $row['city']; |
||
2172 | $temp_array['country'] = $row['country']; |
||
2173 | $temp_array['iata'] = $row['iata']; |
||
2174 | $temp_array['icao'] = $row['icao']; |
||
2175 | $temp_array['latitude'] = $row['latitude']; |
||
2176 | $temp_array['longitude'] = $row['longitude']; |
||
2177 | $temp_array['altitude'] = $row['altitude']; |
||
2178 | |||
2179 | $airport_array[] = $temp_array; |
||
2180 | } |
||
2181 | |||
2182 | return $airport_array; |
||
2183 | } |
||
2184 | |||
2185 | /** |
||
2186 | * Gets airports info based on the coord |
||
2187 | * |
||
2188 | * @param Array $coord Airports longitude min,latitude min, longitude max, latitude max |
||
2189 | * @return Array airport information |
||
2190 | * |
||
2191 | */ |
||
2192 | public function getAllAirportInfobyCoord($coord) |
||
2193 | { |
||
2194 | global $globalDBdriver; |
||
2195 | if (is_array($coord)) { |
||
2196 | $minlong = filter_var($coord[0],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
2197 | $minlat = filter_var($coord[1],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
2198 | $maxlong = filter_var($coord[2],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
2199 | $maxlat = filter_var($coord[3],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
2200 | } else return array(); |
||
2201 | if ($globalDBdriver == 'mysql') { |
||
2202 | $query = "SELECT airport.* FROM airport WHERE airport.latitude BETWEEN ".$minlat." AND ".$maxlat." AND airport.longitude BETWEEN ".$minlong." AND ".$maxlong." AND airport.type != 'closed'"; |
||
2203 | } else { |
||
2204 | $query = "SELECT airport.* FROM airport WHERE CAST(airport.latitude AS FLOAT) BETWEEN ".$minlat." AND ".$maxlat." AND CAST(airport.longitude AS FLOAT) BETWEEN ".$minlong." AND ".$maxlong." AND airport.type != 'closed'"; |
||
2205 | } |
||
2206 | $sth = $this->db->prepare($query); |
||
2207 | $sth->execute(); |
||
2208 | |||
2209 | $airport_array = array(); |
||
2210 | |||
2211 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
2212 | { |
||
2213 | $temp_array = $row; |
||
2214 | |||
2215 | $airport_array[] = $temp_array; |
||
2216 | } |
||
2217 | |||
2218 | return $airport_array; |
||
2219 | } |
||
2220 | |||
2221 | /** |
||
2222 | * Gets waypoints info based on the coord |
||
2223 | * |
||
2224 | * @param Array $coord waypoints coord |
||
2225 | * @return Array airport information |
||
2226 | * |
||
2227 | */ |
||
2228 | public function getAllWaypointsInfobyCoord($coord) |
||
2229 | { |
||
2230 | if (is_array($coord)) { |
||
2231 | $minlong = filter_var($coord[0],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
2232 | $minlat = filter_var($coord[1],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
2233 | $maxlong = filter_var($coord[2],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
2234 | $maxlat = filter_var($coord[3],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
2235 | } else return array(); |
||
2236 | //$query = "SELECT waypoints.* FROM waypoints WHERE waypoints.latitude_begin BETWEEN ".$minlat." AND ".$maxlat." AND waypoints.longitude_begin BETWEEN ".$minlong." AND ".$maxlong; |
||
2237 | $query = "SELECT waypoints.* FROM waypoints WHERE (waypoints.latitude_begin BETWEEN ".$minlat." AND ".$maxlat." AND waypoints.longitude_begin BETWEEN ".$minlong." AND ".$maxlong.") OR (waypoints.latitude_end BETWEEN ".$minlat." AND ".$maxlat." AND waypoints.longitude_end BETWEEN ".$minlong." AND ".$maxlong.")"; |
||
2238 | //$query = "SELECT waypoints.* FROM waypoints"; |
||
2239 | //$query = "SELECT waypoints.* FROM waypoints INNER JOIN (SELECT waypoints.* FROM waypoints WHERE waypoints.latitude_begin BETWEEN ".$minlat." AND ".$maxlat." AND waypoints.longitude_begin BETWEEN ".$minlong." AND ".$maxlong.") w ON w.name_end = waypoints.name_begin OR w.name_begin = waypoints.name_begin OR w.name_begin = waypoints.name_end OR w.name_end = waypoints.name_end"; |
||
2240 | //$query = "SELECT * FROM waypoints LEFT JOIN waypoints w ON waypoints.name_end = w.name_begin WHERE waypoints.latitude_begin BETWEEN ".$minlat." AND ".$maxlat." AND waypoints.longitude_begin BETWEEN ".$minlong." AND ".$maxlong; |
||
2241 | //$query = "SELECT z.name_begin as name_begin, z.name_end as name_end, z.latitude_begin as latitude_begin, z.longitude_begin as longitude_begin, z.latitude_end as latitude_end, z.longitude_end as longitude_end, z.segment_name as segment_name, w.name_end as name_end_seg2, w.latitude_end as latitude_end_seg2, w.longitude_end as longitude_end_seg2, w.segment_name as segment_name_seg2 FROM waypoints z INNER JOIN waypoints w ON z.name_end = w.name_begin WHERE z.latitude_begin BETWEEN ".$minlat." AND ".$maxlat." AND z.longitude_begin BETWEEN ".$minlong." AND ".$maxlong; |
||
2242 | //echo $query; |
||
2243 | |||
2244 | $sth = $this->db->prepare($query); |
||
2245 | $sth->execute(); |
||
2246 | |||
2247 | $waypoints_array = array(); |
||
2248 | |||
2249 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
2250 | { |
||
2251 | $temp_array = $row; |
||
2252 | |||
2253 | $waypoints_array[] = $temp_array; |
||
2254 | } |
||
2255 | |||
2256 | return $waypoints_array; |
||
2257 | } |
||
2258 | |||
2259 | |||
2260 | /** |
||
2261 | * Gets the airline info based on the icao code or iata code |
||
2262 | * |
||
2263 | * @param String $airline_icao the iata code of the airport |
||
2264 | * @return Array airport information |
||
2265 | * |
||
2266 | */ |
||
2267 | public function getAllAirlineInfo($airline_icao, $fromsource = NULL) |
||
2268 | { |
||
2269 | global $globalUseRealAirlines; |
||
2270 | if (isset($globalUseRealAirlines) && $globalUseRealAirlines) $fromsource = NULL; |
||
2271 | $airline_icao = strtoupper(filter_var($airline_icao,FILTER_SANITIZE_STRING)); |
||
2272 | if ($airline_icao == 'NA') { |
||
2273 | $airline_array = array(); |
||
2274 | $airline_array[] = array('name' => 'Not Available','iata' => 'NA', 'icao' => 'NA', 'callsign' => '', 'country' => 'NA', 'type' =>''); |
||
2275 | return $airline_array; |
||
2276 | } else { |
||
2277 | if (strlen($airline_icao) == 2) { |
||
2278 | if ($fromsource === NULL) { |
||
2279 | $query = "SELECT airlines.name, airlines.iata, airlines.icao, airlines.callsign, airlines.country, airlines.type FROM airlines WHERE airlines.iata = :airline_icao AND airlines.active = 'Y' AND airlines.forsource IS NULL LIMIT 1"; |
||
2280 | } else { |
||
2281 | $query = "SELECT airlines.name, airlines.iata, airlines.icao, airlines.callsign, airlines.country, airlines.type FROM airlines WHERE airlines.iata = :airline_icao AND airlines.active = 'Y' AND airlines.forsource = :fromsource LIMIT 1"; |
||
2282 | } |
||
2283 | } else { |
||
2284 | if ($fromsource === NULL) { |
||
2285 | $query = "SELECT airlines.name, airlines.iata, airlines.icao, airlines.callsign, airlines.country, airlines.type FROM airlines WHERE airlines.icao = :airline_icao AND airlines.active = 'Y' AND airlines.forsource IS NULL LIMIT 1"; |
||
2286 | } else { |
||
2287 | $query = "SELECT airlines.name, airlines.iata, airlines.icao, airlines.callsign, airlines.country, airlines.type FROM airlines WHERE airlines.icao = :airline_icao AND airlines.active = 'Y' AND airlines.forsource = :fromsource LIMIT 1"; |
||
2288 | } |
||
2289 | } |
||
2290 | |||
2291 | $sth = $this->db->prepare($query); |
||
2292 | if ($fromsource === NULL) { |
||
2293 | $sth->execute(array(':airline_icao' => $airline_icao)); |
||
2294 | } else { |
||
2295 | $sth->execute(array(':airline_icao' => $airline_icao,':fromsource' => $fromsource)); |
||
2296 | } |
||
2297 | /* |
||
2298 | $airline_array = array(); |
||
2299 | $temp_array = array(); |
||
2300 | |||
2301 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
2302 | { |
||
2303 | $temp_array['name'] = $row['name']; |
||
2304 | $temp_array['iata'] = $row['iata']; |
||
2305 | $temp_array['icao'] = $row['icao']; |
||
2306 | $temp_array['callsign'] = $row['callsign']; |
||
2307 | $temp_array['country'] = $row['country']; |
||
2308 | $temp_array['type'] = $row['type']; |
||
2309 | $airline_array[] = $temp_array; |
||
2310 | } |
||
2311 | return $airline_array; |
||
2312 | */ |
||
2313 | $result = $sth->fetchAll(PDO::FETCH_ASSOC); |
||
2314 | if (empty($result) && $fromsource !== NULL) { |
||
2315 | /* |
||
2316 | $query = 'SELECT COUNT(*) AS nb FROM airlines WHERE forsource = :fromsource'; |
||
2317 | $sth = $this->db->prepare($query); |
||
2318 | $sth->execute(array(':fromsource' => $fromsource)); |
||
2319 | $row = $sth->fetch(PDO::FETCH_ASSOC); |
||
2320 | $sth->closeCursor(); |
||
2321 | if ($row['nb'] == 0) $result = $this->getAllAirlineInfo($airline_icao); |
||
2322 | */ |
||
2323 | $result = $this->getAllAirlineInfo($airline_icao); |
||
2324 | } |
||
2325 | return $result; |
||
2326 | } |
||
2327 | } |
||
2328 | |||
2329 | /** |
||
2330 | * Gets the airline info based on the airline name |
||
2331 | * |
||
2332 | * @param String $airline_name the name of the airline |
||
2333 | * @return Array airline information |
||
2334 | * |
||
2335 | */ |
||
2336 | public function getAllAirlineInfoByName($airline_name, $fromsource = NULL) |
||
2337 | { |
||
2338 | global $globalUseRealAirlines; |
||
2339 | if (isset($globalUseRealAirlines) && $globalUseRealAirlines) $fromsource = NULL; |
||
2340 | $airline_name = strtolower(filter_var($airline_name,FILTER_SANITIZE_STRING)); |
||
2341 | $query = "SELECT airlines.name, airlines.iata, airlines.icao, airlines.callsign, airlines.country, airlines.type FROM airlines WHERE lower(airlines.name) = :airline_name AND airlines.active = 'Y' AND airlines.forsource IS NULL LIMIT 1"; |
||
2342 | $sth = $this->db->prepare($query); |
||
2343 | if ($fromsource === NULL) { |
||
2344 | $sth->execute(array(':airline_name' => $airline_name)); |
||
2345 | } else { |
||
2346 | $sth->execute(array(':airline_name' => $airline_name,':fromsource' => $fromsource)); |
||
2347 | } |
||
2348 | $result = $sth->fetchAll(PDO::FETCH_ASSOC); |
||
2349 | if (empty($result) && $fromsource !== NULL) { |
||
2350 | $query = 'SELECT COUNT(*) AS nb FROM airlines WHERE forsource = :fromsource'; |
||
2351 | $sth = $this->db->prepare($query); |
||
2352 | $sth->execute(array(':fromsource' => $fromsource)); |
||
2353 | $row = $sth->fetch(PDO::FETCH_ASSOC); |
||
2354 | $sth->closeCursor(); |
||
2355 | if ($row['nb'] == 0) $result = $this->getAllAirlineInfoByName($airline_name); |
||
2356 | } |
||
2357 | return $result; |
||
2358 | } |
||
2359 | |||
2360 | |||
2361 | |||
2362 | /** |
||
2363 | * Gets the aircraft info based on the aircraft type |
||
2364 | * |
||
2365 | * @param String $aircraft_type the aircraft type |
||
2366 | * @return Array aircraft information |
||
2367 | * |
||
2368 | */ |
||
2369 | public function getAllAircraftInfo($aircraft_type) |
||
2370 | { |
||
2371 | $aircraft_type = filter_var($aircraft_type,FILTER_SANITIZE_STRING); |
||
2372 | |||
2373 | if ($aircraft_type == 'NA') { |
||
2374 | return array(array('icao' => 'NA','type' => 'Not Available', 'manufacturer' => 'Not Available', 'aircraft_shadow' => NULL)); |
||
2375 | } |
||
2376 | $query = "SELECT aircraft.icao, aircraft.type,aircraft.manufacturer,aircraft.aircraft_shadow, aircraft.official_page, aircraft.aircraft_description, aircraft.engine_type, aircraft.engine_count, aircraft.wake_category FROM aircraft WHERE aircraft.icao = :aircraft_type"; |
||
2377 | |||
2378 | $sth = $this->db->prepare($query); |
||
2379 | $sth->execute(array(':aircraft_type' => $aircraft_type)); |
||
2380 | /* |
||
2381 | $aircraft_array = array(); |
||
2382 | $temp_array = array(); |
||
2383 | |||
2384 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
2385 | { |
||
2386 | $temp_array = array(); |
||
2387 | $temp_array['icao'] = $row['icao']; |
||
2388 | $temp_array['type'] = $row['type']; |
||
2389 | $temp_array['manufacturer'] = $row['manufacturer']; |
||
2390 | $temp_array['aircraft_shadow'] = $row['aircraft_shadow']; |
||
2391 | |||
2392 | $aircraft_array[] = $temp_array; |
||
2393 | } |
||
2394 | return $aircraft_array; |
||
2395 | */ |
||
2396 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
2397 | } |
||
2398 | |||
2399 | /** |
||
2400 | * Gets the aircraft icao based on the aircraft name/type |
||
2401 | * |
||
2402 | * @param String $aircraft_type the aircraft type |
||
2403 | * @return String aircraft information |
||
2404 | * |
||
2405 | */ |
||
2406 | public function getAircraftIcao($aircraft_type) |
||
2407 | { |
||
2408 | $aircraft_type = filter_var($aircraft_type,FILTER_SANITIZE_STRING); |
||
2409 | $all_aircraft = array('737-300' => 'B733', |
||
2410 | '777-200' => 'B772', |
||
2411 | '777-200ER' => 'B772', |
||
2412 | '777-300ER' => 'B77W', |
||
2413 | 'c172p' => 'C172', |
||
2414 | 'aerostar' => 'AEST', |
||
2415 | 'A320-211' => 'A320', |
||
2416 | '747-8i' => 'B748', |
||
2417 | 'A380' => 'A388'); |
||
2418 | if (isset($all_aircraft[$aircraft_type])) return $all_aircraft[$aircraft_type]; |
||
2419 | |||
2420 | $query = "SELECT aircraft.icao FROM aircraft WHERE aircraft.type LIKE :saircraft_type OR aircraft.type = :aircraft_type OR aircraft.icao = :aircraft_type LIMIT 1"; |
||
2421 | $aircraft_type = strtoupper($aircraft_type); |
||
2422 | $sth = $this->db->prepare($query); |
||
2423 | $sth->execute(array(':saircraft_type' => '%'.$aircraft_type.'%',':aircraft_type' => $aircraft_type,)); |
||
2424 | $result = $sth->fetchAll(PDO::FETCH_ASSOC); |
||
2425 | if (isset($result[0]['icao'])) return $result[0]['icao']; |
||
2426 | else return ''; |
||
2427 | } |
||
2428 | |||
2429 | /** |
||
2430 | * Gets the aircraft info based on the aircraft modes |
||
2431 | * |
||
2432 | * @param String $aircraft_modes the aircraft ident (hex) |
||
2433 | * @return String aircraft type |
||
2434 | * |
||
2435 | */ |
||
2436 | public function getAllAircraftType($aircraft_modes,$source_type = '') |
||
2437 | { |
||
2438 | $aircraft_modes = filter_var($aircraft_modes,FILTER_SANITIZE_STRING); |
||
2439 | $source_type = filter_var($source_type,FILTER_SANITIZE_STRING); |
||
2440 | |||
2441 | if ($source_type == '' || $source_type == 'modes') { |
||
2442 | $query = "SELECT aircraft_modes.ICAOTypeCode FROM aircraft_modes WHERE aircraft_modes.ModeS = :aircraft_modes AND aircraft_modes.source_type = 'modes' ORDER BY FirstCreated DESC LIMIT 1"; |
||
2443 | } else { |
||
2444 | $query = "SELECT aircraft_modes.ICAOTypeCode FROM aircraft_modes WHERE aircraft_modes.ModeS = :aircraft_modes AND aircraft_modes.source_type = 'flarm' ORDER BY FirstCreated DESC LIMIT 1"; |
||
2445 | } |
||
2446 | |||
2447 | $sth = $this->db->prepare($query); |
||
2448 | $sth->execute(array(':aircraft_modes' => $aircraft_modes)); |
||
2449 | |||
2450 | $row = $sth->fetch(PDO::FETCH_ASSOC); |
||
2451 | $sth->closeCursor(); |
||
2452 | if (isset($row['icaotypecode'])) { |
||
2453 | $icao = $row['icaotypecode']; |
||
2454 | if (isset($this->aircraft_correct_icaotype[$icao])) $icao = $this->aircraft_correct_icaotype[$icao]; |
||
2455 | return $icao; |
||
2456 | } elseif ($source_type == 'flarm') { |
||
2457 | return $this->getAllAircraftType($aircraft_modes); |
||
2458 | } else return ''; |
||
2459 | } |
||
2460 | |||
2461 | /** |
||
2462 | * Gets the aircraft info based on the aircraft registration |
||
2463 | * |
||
2464 | * @param String $registration the aircraft registration |
||
2465 | * @return String aircraft type |
||
2466 | * |
||
2467 | */ |
||
2468 | public function getAllAircraftTypeByRegistration($registration) |
||
2469 | { |
||
2470 | $registration = filter_var($registration,FILTER_SANITIZE_STRING); |
||
2471 | |||
2472 | $query = "SELECT aircraft_modes.ICAOTypeCode FROM aircraft_modes WHERE aircraft_modes.registration = :registration ORDER BY FirstCreated DESC LIMIT 1"; |
||
2473 | |||
2474 | $sth = $this->db->prepare($query); |
||
2475 | $sth->execute(array(':registration' => $registration)); |
||
2476 | |||
2477 | $row = $sth->fetch(PDO::FETCH_ASSOC); |
||
2478 | $sth->closeCursor(); |
||
2479 | if (isset($row['icaotypecode'])) { |
||
2480 | return $row['icaotypecode']; |
||
2481 | } else return ''; |
||
2482 | } |
||
2483 | |||
2484 | /** |
||
2485 | * Gets the spotter_id and flightaware_id based on the aircraft registration |
||
2486 | * |
||
2487 | * @param String $registration the aircraft registration |
||
2488 | * @return Array spotter_id and flightaware_id |
||
2489 | * |
||
2490 | */ |
||
2491 | public function getAllIDByRegistration($registration) |
||
2492 | { |
||
2493 | $registration = filter_var($registration,FILTER_SANITIZE_STRING); |
||
2494 | |||
2495 | $query = "SELECT spotter_id,flightaware_id, date FROM spotter_output WHERE spotter_output.registration = :registration"; |
||
2496 | |||
2497 | $sth = $this->db->prepare($query); |
||
2498 | $sth->execute(array(':registration' => $registration)); |
||
2499 | |||
2500 | $idarray = array(); |
||
2501 | while ($row = $sth->fetch(PDO::FETCH_ASSOC)) { |
||
2502 | $date = $row['date']; |
||
2503 | $idarray[$date] = array('flightaware_id' => $row['flightaware_id'],'spotter_id' => $row['spotter_id']); |
||
2504 | } |
||
2505 | return $idarray; |
||
2506 | } |
||
2507 | |||
2508 | /** |
||
2509 | * Gets correct aircraft operator code |
||
2510 | * |
||
2511 | * @param String $operator the aircraft operator code (callsign) |
||
2512 | * @return String aircraft operator code |
||
2513 | * |
||
2514 | */ |
||
2515 | public function getOperator($operator) |
||
2516 | { |
||
2517 | $operator = filter_var($operator,FILTER_SANITIZE_STRING); |
||
2518 | $query = "SELECT translation.operator_correct FROM translation WHERE translation.operator = :operator LIMIT 1"; |
||
2519 | |||
2520 | $sth = $this->db->prepare($query); |
||
2521 | $sth->execute(array(':operator' => $operator)); |
||
2522 | |||
2523 | $row = $sth->fetch(PDO::FETCH_ASSOC); |
||
2524 | $sth->closeCursor(); |
||
2525 | if (isset($row['operator_correct'])) { |
||
2526 | return $row['operator_correct']; |
||
2527 | } else return $operator; |
||
2528 | } |
||
2529 | |||
2530 | /** |
||
2531 | * Gets the aircraft route based on the aircraft callsign |
||
2532 | * |
||
2533 | * @param String $callsign the aircraft callsign |
||
2534 | * @return Array aircraft type |
||
2535 | * |
||
2536 | */ |
||
2537 | public function getRouteInfo($callsign) |
||
2538 | { |
||
2539 | $callsign = filter_var($callsign,FILTER_SANITIZE_STRING); |
||
2540 | if ($callsign == '') return array(); |
||
2541 | $query = "SELECT routes.Operator_ICAO, routes.FromAirport_ICAO, routes.ToAirport_ICAO, routes.RouteStop, routes.FromAirport_Time, routes.ToAirport_Time FROM routes WHERE CallSign = :callsign LIMIT 1"; |
||
2542 | |||
2543 | $sth = $this->db->prepare($query); |
||
2544 | $sth->execute(array(':callsign' => $callsign)); |
||
2545 | |||
2546 | $row = $sth->fetch(PDO::FETCH_ASSOC); |
||
2547 | $sth->closeCursor(); |
||
2548 | if (count($row) > 0) { |
||
2549 | return $row; |
||
2550 | } else return array(); |
||
2551 | } |
||
2552 | |||
2553 | /** |
||
2554 | * Gets the aircraft info based on the aircraft registration |
||
2555 | * |
||
2556 | * @param String $registration the aircraft registration |
||
2557 | * @return Array aircraft information |
||
2558 | * |
||
2559 | */ |
||
2560 | public function getAircraftInfoByRegistration($registration) |
||
2561 | { |
||
2562 | $registration = filter_var($registration,FILTER_SANITIZE_STRING); |
||
2563 | |||
2564 | $query = "SELECT spotter_output.aircraft_icao, spotter_output.aircraft_name, spotter_output.aircraft_manufacturer, spotter_output.airline_icao FROM spotter_output WHERE spotter_output.registration = :registration"; |
||
2565 | |||
2566 | $sth = $this->db->prepare($query); |
||
2567 | $sth->execute(array(':registration' => $registration)); |
||
2568 | |||
2569 | $aircraft_array = array(); |
||
2570 | $temp_array = array(); |
||
2571 | |||
2572 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
2573 | { |
||
2574 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
2575 | $temp_array['aircraft_icao'] = $row['aircraft_icao']; |
||
2576 | $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
2577 | $temp_array['aircraft_manufacturer'] = $row['aircraft_manufacturer']; |
||
2578 | |||
2579 | $aircraft_array[] = $temp_array; |
||
2580 | } |
||
2581 | |||
2582 | return $aircraft_array; |
||
2583 | } |
||
2584 | |||
2585 | /** |
||
2586 | * Gets the aircraft owner & base based on the aircraft registration |
||
2587 | * |
||
2588 | * @param String $registration the aircraft registration |
||
2589 | * @return Array aircraft information |
||
2590 | * |
||
2591 | */ |
||
2592 | public function getAircraftOwnerByRegistration($registration) |
||
2593 | { |
||
2594 | $registration = filter_var($registration,FILTER_SANITIZE_STRING); |
||
2595 | $Connection = new Connection($this->db); |
||
2596 | if ($Connection->tableExists('aircraft_owner')) { |
||
2597 | $query = "SELECT aircraft_owner.base, aircraft_owner.owner, aircraft_owner.date_first_reg FROM aircraft_owner WHERE registration = :registration LIMIT 1"; |
||
2598 | $sth = $this->db->prepare($query); |
||
2599 | $sth->execute(array(':registration' => $registration)); |
||
2600 | $result = $sth->fetch(PDO::FETCH_ASSOC); |
||
2601 | $sth->closeCursor(); |
||
2602 | return $result; |
||
2603 | } else return array(); |
||
2604 | } |
||
2605 | |||
2606 | |||
2607 | /** |
||
2608 | * Gets all flights (but with only little info) |
||
2609 | * |
||
2610 | * @return Array basic flight information |
||
2611 | * |
||
2612 | */ |
||
2613 | public function getAllFlightsforSitemap() |
||
2614 | { |
||
2615 | //$query = "SELECT spotter_output.spotter_id, spotter_output.ident, spotter_output.airline_name, spotter_output.aircraft_name, spotter_output.aircraft_icao FROM spotter_output ORDER BY LIMIT "; |
||
2616 | $query = "SELECT spotter_output.spotter_id FROM spotter_output ORDER BY spotter_id DESC LIMIT 200 OFFSET 0"; |
||
2617 | |||
2618 | $sth = $this->db->prepare($query); |
||
2619 | $sth->execute(); |
||
2620 | /* |
||
2621 | $flight_array = array(); |
||
2622 | $temp_array = array(); |
||
2623 | |||
2624 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
2625 | { |
||
2626 | $temp_array['spotter_id'] = $row['spotter_id']; |
||
2627 | // $temp_array['ident'] = $row['ident']; |
||
2628 | // $temp_array['airline_name'] = $row['airline_name']; |
||
2629 | // $temp_array['aircraft_type'] = $row['aircraft_icao']; |
||
2630 | // $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
2631 | //$temp_array['image'] = $row['image']; |
||
2632 | |||
2633 | $flight_array[] = $temp_array; |
||
2634 | } |
||
2635 | |||
2636 | return $flight_array; |
||
2637 | */ |
||
2638 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
2639 | } |
||
2640 | |||
2641 | /** |
||
2642 | * Gets a list of all aircraft manufacturers |
||
2643 | * |
||
2644 | * @return Array list of aircraft types |
||
2645 | * |
||
2646 | */ |
||
2647 | public function getAllManufacturers() |
||
2648 | { |
||
2649 | /* |
||
2650 | $query = "SELECT DISTINCT spotter_output.aircraft_manufacturer AS aircraft_manufacturer |
||
2651 | FROM spotter_output |
||
2652 | WHERE spotter_output.aircraft_manufacturer <> '' |
||
2653 | ORDER BY spotter_output.aircraft_manufacturer ASC"; |
||
2654 | */ |
||
2655 | |||
2656 | $query = "SELECT DISTINCT manufacturer AS aircraft_manufacturer FROM aircraft WHERE manufacturer <> '' ORDER BY manufacturer ASC"; |
||
2657 | $sth = $this->db->prepare($query); |
||
2658 | $sth->execute(); |
||
2659 | |||
2660 | $manufacturer_array = array(); |
||
2661 | $temp_array = array(); |
||
2662 | |||
2663 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
2664 | { |
||
2665 | $temp_array['aircraft_manufacturer'] = $row['aircraft_manufacturer']; |
||
2666 | |||
2667 | $manufacturer_array[] = $temp_array; |
||
2668 | } |
||
2669 | |||
2670 | return $manufacturer_array; |
||
2671 | } |
||
2672 | |||
2673 | |||
2674 | /** |
||
2675 | * Gets a list of all aircraft types |
||
2676 | * |
||
2677 | * @return Array list of aircraft types |
||
2678 | * |
||
2679 | */ |
||
2680 | public function getAllAircraftTypes($filters = array()) |
||
2681 | { |
||
2682 | /* |
||
2683 | $query = "SELECT DISTINCT spotter_output.aircraft_icao AS aircraft_icao, spotter_output.aircraft_name AS aircraft_name |
||
2684 | FROM spotter_output |
||
2685 | WHERE spotter_output.aircraft_icao <> '' |
||
2686 | ORDER BY spotter_output.aircraft_name ASC"; |
||
2687 | |||
2688 | */ |
||
2689 | //$filter_query = $this->getFilter($filters,true,true); |
||
2690 | //$query = "SELECT DISTINCT icao AS aircraft_icao, type AS aircraft_name, manufacturer AS aircraft_manufacturer FROM aircraft".$filter_query." icao <> '' ORDER BY aircraft_manufacturer ASC"; |
||
2691 | |||
2692 | $query = "SELECT DISTINCT icao AS aircraft_icao, type AS aircraft_name, manufacturer AS aircraft_manufacturer FROM aircraft WHERE icao <> '' ORDER BY aircraft_manufacturer ASC"; |
||
2693 | |||
2694 | $sth = $this->db->prepare($query); |
||
2695 | $sth->execute(); |
||
2696 | |||
2697 | $aircraft_array = array(); |
||
2698 | $temp_array = array(); |
||
2699 | |||
2700 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
2701 | { |
||
2702 | $temp_array['aircraft_icao'] = $row['aircraft_icao']; |
||
2703 | $temp_array['aircraft_manufacturer'] = $row['aircraft_manufacturer']; |
||
2704 | $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
2705 | |||
2706 | $aircraft_array[] = $temp_array; |
||
2707 | } |
||
2708 | |||
2709 | return $aircraft_array; |
||
2710 | } |
||
2711 | |||
2712 | |||
2713 | /** |
||
2714 | * Gets a list of all aircraft registrations |
||
2715 | * |
||
2716 | * @return Array list of aircraft registrations |
||
2717 | * |
||
2718 | */ |
||
2719 | public function getAllAircraftRegistrations($filters = array()) |
||
2720 | { |
||
2721 | $filter_query = $this->getFilter($filters,true,true); |
||
2722 | $query = "SELECT DISTINCT spotter_output.registration |
||
2723 | FROM spotter_output".$filter_query." spotter_output.registration <> '' |
||
2724 | ORDER BY spotter_output.registration ASC"; |
||
2725 | |||
2726 | $sth = $this->db->prepare($query); |
||
2727 | $sth->execute(); |
||
2728 | |||
2729 | $aircraft_array = array(); |
||
2730 | $temp_array = array(); |
||
2731 | |||
2732 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
2733 | { |
||
2734 | $temp_array['registration'] = $row['registration']; |
||
2735 | |||
2736 | $aircraft_array[] = $temp_array; |
||
2737 | } |
||
2738 | |||
2739 | return $aircraft_array; |
||
2740 | } |
||
2741 | |||
2742 | /** |
||
2743 | * Gets all source name |
||
2744 | * |
||
2745 | * @param String type format of source |
||
2746 | * @return Array list of source name |
||
2747 | * |
||
2748 | */ |
||
2749 | public function getAllSourceName($type = '',$filters = array()) |
||
2750 | { |
||
2751 | $filter_query = $this->getFilter($filters,true,true); |
||
2752 | $query_values = array(); |
||
2753 | $query = "SELECT DISTINCT spotter_output.source_name |
||
2754 | FROM spotter_output".$filter_query." spotter_output.source_name <> ''"; |
||
2755 | if ($type != '') { |
||
2756 | $query_values = array(':type' => $type); |
||
2757 | $query .= " AND format_source = :type"; |
||
2758 | } |
||
2759 | $query .= " ORDER BY spotter_output.source_name ASC"; |
||
2760 | |||
2761 | $sth = $this->db->prepare($query); |
||
2762 | if (!empty($query_values)) $sth->execute($query_values); |
||
2763 | else $sth->execute(); |
||
2764 | |||
2765 | $source_array = array(); |
||
2766 | $temp_array = array(); |
||
2767 | |||
2768 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
2769 | { |
||
2770 | $temp_array['source_name'] = $row['source_name']; |
||
2771 | $source_array[] = $temp_array; |
||
2772 | } |
||
2773 | return $source_array; |
||
2774 | } |
||
2775 | |||
2776 | |||
2777 | |||
2778 | /** |
||
2779 | * Gets a list of all airline names |
||
2780 | * |
||
2781 | * @return Array list of airline names |
||
2782 | * |
||
2783 | */ |
||
2784 | public function getAllAirlineNames($airline_type = '',$forsource = NULL,$filters = array()) |
||
2785 | { |
||
2786 | global $globalAirlinesSource,$globalVATSIM, $globalIVAO; |
||
2787 | $filter_query = $this->getFilter($filters,true,true); |
||
2788 | $airline_type = filter_var($airline_type,FILTER_SANITIZE_STRING); |
||
2789 | if ($airline_type == '' || $airline_type == 'all') { |
||
2790 | /* |
||
2791 | $query = "SELECT DISTINCT spotter_output.airline_icao AS airline_icao, spotter_output.airline_name AS airline_name, spotter_output.airline_type AS airline_type |
||
2792 | FROM spotter_output |
||
2793 | WHERE spotter_output.airline_icao <> '' |
||
2794 | ORDER BY spotter_output.airline_name ASC"; |
||
2795 | */ |
||
2796 | if (isset($globalAirlinesSource) && $globalAirlinesSource != '') $forsource = $globalAirlinesSource; |
||
2797 | elseif (isset($globalVATSIM) && $globalVATSIM) $forsource = 'vatsim'; |
||
2798 | elseif (isset($globalIVAO) && $globalIVAO) $forsource = 'ivao'; |
||
2799 | if ($forsource === NULL) { |
||
2800 | $query = "SELECT DISTINCT icao AS airline_icao, name AS airline_name, type AS airline_type FROM airlines WHERE forsource IS NULL ORDER BY name ASC"; |
||
2801 | $query_data = array(); |
||
2802 | } else { |
||
2803 | $query = "SELECT DISTINCT icao AS airline_icao, name AS airline_name, type AS airline_type FROM airlines WHERE forsource = :forsource ORDER BY name ASC"; |
||
2804 | $query_data = array(':forsource' => $forsource); |
||
2805 | } |
||
2806 | } else { |
||
2807 | $query = "SELECT DISTINCT spotter_output.airline_icao AS airline_icao, spotter_output.airline_name AS airline_name, spotter_output.airline_type AS airline_type |
||
2808 | FROM spotter_output".$filter_query." spotter_output.airline_icao <> '' |
||
2809 | AND spotter_output.airline_type = :airline_type |
||
2810 | ORDER BY spotter_output.airline_icao ASC"; |
||
2811 | $query_data = array(':airline_type' => $airline_type); |
||
2812 | } |
||
2813 | |||
2814 | $sth = $this->db->prepare($query); |
||
2815 | $sth->execute($query_data); |
||
2816 | |||
2817 | $airline_array = array(); |
||
2818 | $temp_array = array(); |
||
2819 | |||
2820 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
2821 | { |
||
2822 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
2823 | $temp_array['airline_name'] = $row['airline_name']; |
||
2824 | $temp_array['airline_type'] = $row['airline_type']; |
||
2825 | |||
2826 | $airline_array[] = $temp_array; |
||
2827 | } |
||
2828 | return $airline_array; |
||
2829 | } |
||
2830 | |||
2831 | /** |
||
2832 | * Gets a list of all alliance names |
||
2833 | * |
||
2834 | * @return Array list of alliance names |
||
2835 | * |
||
2836 | */ |
||
2837 | public function getAllAllianceNames($forsource = NULL,$filters = array()) |
||
2838 | { |
||
2839 | global $globalAirlinesSource,$globalVATSIM, $globalIVAO; |
||
2840 | $filter_query = $this->getFilter($filters,true,true); |
||
2841 | if (isset($globalAirlinesSource) && $globalAirlinesSource != '') $forsource = $globalAirlinesSource; |
||
2842 | elseif (isset($globalVATSIM) && $globalVATSIM) $forsource = 'vatsim'; |
||
2843 | elseif (isset($globalIVAO) && $globalIVAO) $forsource = 'ivao'; |
||
2844 | if ($forsource === NULL) { |
||
2845 | $query = "SELECT DISTINCT alliance FROM airlines WHERE alliance IS NOT NULL AND forsource IS NULL ORDER BY alliance ASC"; |
||
2846 | $query_data = array(); |
||
2847 | } else { |
||
2848 | $query = "SELECT DISTINCT alliance FROM airlines WHERE alliance IS NOT NULL AND forsource = :forsource ORDER BY alliance ASC"; |
||
2849 | $query_data = array(':forsource' => $forsource); |
||
2850 | } |
||
2851 | |||
2852 | $sth = $this->db->prepare($query); |
||
2853 | $sth->execute($query_data); |
||
2854 | |||
2855 | $alliance_array = array(); |
||
2856 | $alliance_array = $sth->fetchAll(PDO::FETCH_ASSOC); |
||
2857 | return $alliance_array; |
||
2858 | } |
||
2859 | |||
2860 | /** |
||
2861 | * Gets a list of all airline countries |
||
2862 | * |
||
2863 | * @return Array list of airline countries |
||
2864 | * |
||
2865 | */ |
||
2866 | public function getAllAirlineCountries($filters = array()) |
||
2867 | { |
||
2868 | $filter_query = $this->getFilter($filters,true,true); |
||
2869 | $query = "SELECT DISTINCT spotter_output.airline_country AS airline_country |
||
2870 | FROM spotter_output".$filter_query." spotter_output.airline_country <> '' |
||
2871 | ORDER BY spotter_output.airline_country ASC"; |
||
2872 | |||
2873 | //$query = "SELECT DISTINCT country AS airline_country FROM airlines WHERE country <> '' AND active = 'Y' ORDER BY country ASC"; |
||
2874 | $sth = $this->db->prepare($query); |
||
2875 | $sth->execute(); |
||
2876 | |||
2877 | $airline_array = array(); |
||
2878 | $temp_array = array(); |
||
2879 | |||
2880 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
2881 | { |
||
2882 | $temp_array['airline_country'] = $row['airline_country']; |
||
2883 | |||
2884 | $airline_array[] = $temp_array; |
||
2885 | } |
||
2886 | |||
2887 | return $airline_array; |
||
2888 | } |
||
2889 | |||
2890 | |||
2891 | |||
2892 | /** |
||
2893 | * Gets a list of all departure & arrival names |
||
2894 | * |
||
2895 | * @return Array list of airport names |
||
2896 | * |
||
2897 | */ |
||
2898 | public function getAllAirportNames($filters = array()) |
||
2899 | { |
||
2900 | $filter_query = $this->getFilter($filters,true,true); |
||
2901 | $airport_array = array(); |
||
2902 | $query = "SELECT DISTINCT spotter_output.departure_airport_icao AS airport_icao, spotter_output.departure_airport_name AS airport_name, spotter_output.departure_airport_city AS airport_city, spotter_output.departure_airport_country AS airport_country |
||
2903 | FROM spotter_output".$filter_query." spotter_output.departure_airport_icao <> '' AND spotter_output.departure_airport_icao <> 'NA' |
||
2904 | ORDER BY spotter_output.departure_airport_city ASC"; |
||
2905 | |||
2906 | //$query = "SELECT DISTINCT icao AS airport_icao, name AS airport_name, city AS airport_city, country AS airport_country FROM airport ORDER BY city ASC"; |
||
2907 | $sth = $this->db->prepare($query); |
||
2908 | $sth->execute(); |
||
2909 | |||
2910 | $temp_array = array(); |
||
2911 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
2912 | { |
||
2913 | $temp_array['airport_icao'] = $row['airport_icao']; |
||
2914 | $temp_array['airport_name'] = $row['airport_name']; |
||
2915 | $temp_array['airport_city'] = $row['airport_city']; |
||
2916 | $temp_array['airport_country'] = $row['airport_country']; |
||
2917 | |||
2918 | $airport_array[$row['airport_city'].",".$row['airport_name']] = $temp_array; |
||
2919 | } |
||
2920 | |||
2921 | $query = "SELECT DISTINCT spotter_output.arrival_airport_icao AS airport_icao, spotter_output.arrival_airport_name AS airport_name, spotter_output.arrival_airport_city AS airport_city, spotter_output.arrival_airport_country AS airport_country |
||
2922 | FROM spotter_output".$filter_query." spotter_output.arrival_airport_icao <> '' AND spotter_output.arrival_airport_icao <> 'NA' |
||
2923 | ORDER BY spotter_output.arrival_airport_city ASC"; |
||
2924 | |||
2925 | $sth = $this->db->prepare($query); |
||
2926 | $sth->execute(); |
||
2927 | |||
2928 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
2929 | { |
||
2930 | // if ($airport_array[$row['airport_city'].",".$row['airport_name']]['airport_icao'] != $row['airport_icao']) |
||
2931 | // { |
||
2932 | $temp_array['airport_icao'] = $row['airport_icao']; |
||
2933 | $temp_array['airport_name'] = $row['airport_name']; |
||
2934 | $temp_array['airport_city'] = $row['airport_city']; |
||
2935 | $temp_array['airport_country'] = $row['airport_country']; |
||
2936 | |||
2937 | $airport_array[$row['airport_city'].",".$row['airport_name']] = $temp_array; |
||
2938 | // } |
||
2939 | } |
||
2940 | |||
2941 | return $airport_array; |
||
2942 | } |
||
2943 | |||
2944 | /** |
||
2945 | * Gets a list of all owner names |
||
2946 | * |
||
2947 | * @return Array list of owner names |
||
2948 | * |
||
2949 | */ |
||
2950 | public function getAllOwnerNames($filters = array()) |
||
2951 | { |
||
2952 | $filter_query = $this->getFilter($filters,true,true); |
||
2953 | $query = "SELECT DISTINCT spotter_output.owner_name |
||
2954 | FROM spotter_output".$filter_query." spotter_output.owner_name <> '' |
||
2955 | ORDER BY spotter_output.owner_name ASC"; |
||
2956 | |||
2957 | $sth = $this->db->prepare($query); |
||
2958 | $sth->execute(); |
||
2959 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
2960 | } |
||
2961 | |||
2962 | /** |
||
2963 | * Gets a list of all pilot names and pilot ids |
||
2964 | * |
||
2965 | * @return Array list of pilot names and pilot ids |
||
2966 | * |
||
2967 | */ |
||
2968 | public function getAllPilotNames($filters = array()) |
||
2969 | { |
||
2970 | $filter_query = $this->getFilter($filters,true,true); |
||
2971 | $query = "SELECT DISTINCT spotter_output.pilot_name, spotter_output.pilot_id |
||
2972 | FROM spotter_output".$filter_query." spotter_output.pilot_name <> '' |
||
2973 | ORDER BY spotter_output.pilot_name ASC"; |
||
2974 | |||
2975 | $sth = $this->db->prepare($query); |
||
2976 | $sth->execute(); |
||
2977 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
2978 | } |
||
2979 | |||
2980 | |||
2981 | /** |
||
2982 | * Gets a list of all departure & arrival airport countries |
||
2983 | * |
||
2984 | * @return Array list of airport countries |
||
2985 | * |
||
2986 | */ |
||
2987 | public function getAllAirportCountries($filters = array()) |
||
2988 | { |
||
2989 | $airport_array = array(); |
||
2990 | |||
2991 | /* |
||
2992 | $query = "SELECT DISTINCT spotter_output.departure_airport_country AS airport_country |
||
2993 | FROM spotter_output |
||
2994 | WHERE spotter_output.departure_airport_country <> '' |
||
2995 | ORDER BY spotter_output.departure_airport_country ASC"; |
||
2996 | */ |
||
2997 | $query = "SELECT DISTINCT country AS airport_country FROM airport ORDER BY country ASC"; |
||
2998 | |||
2999 | $sth = $this->db->prepare($query); |
||
3000 | $sth->execute(); |
||
3001 | |||
3002 | $temp_array = array(); |
||
3003 | |||
3004 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
3005 | { |
||
3006 | $temp_array['airport_country'] = $row['airport_country']; |
||
3007 | |||
3008 | $airport_array[$row['airport_country']] = $temp_array; |
||
3009 | } |
||
3010 | $filter_query = $this->getFilter($filters,true,true); |
||
3011 | $query = "SELECT DISTINCT spotter_output.arrival_airport_country AS airport_country |
||
3012 | FROM spotter_output".$filter_query." spotter_output.arrival_airport_country <> '' |
||
3013 | ORDER BY spotter_output.arrival_airport_country ASC"; |
||
3014 | |||
3015 | $sth = $this->db->prepare($query); |
||
3016 | $sth->execute(); |
||
3017 | |||
3018 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
3019 | { |
||
3020 | if (isset($airport_array[$row['airport_country']]['airport_country']) && $airport_array[$row['airport_country']]['airport_country'] != $row['airport_country']) |
||
3021 | { |
||
3022 | $temp_array['airport_country'] = $row['airport_country']; |
||
3023 | $airport_array[$row['airport_country']] = $temp_array; |
||
3024 | } |
||
3025 | } |
||
3026 | |||
3027 | return $airport_array; |
||
3028 | } |
||
3029 | |||
3030 | |||
3031 | |||
3032 | |||
3033 | /** |
||
3034 | * Gets a list of all countries (airline, departure airport & arrival airport) |
||
3035 | * |
||
3036 | * @return Array list of countries |
||
3037 | * |
||
3038 | */ |
||
3039 | public function getAllCountries($filters = array()) |
||
3040 | { |
||
3041 | $Connection= new Connection($this->db); |
||
3042 | if ($Connection->tableExists('countries')) { |
||
3043 | $query = "SELECT countries.name AS airport_country |
||
3044 | FROM countries |
||
3045 | ORDER BY countries.name ASC"; |
||
3046 | $sth = $this->db->prepare($query); |
||
3047 | $sth->execute(); |
||
3048 | |||
3049 | $temp_array = array(); |
||
3050 | $country_array = array(); |
||
3051 | |||
3052 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
3053 | { |
||
3054 | $temp_array['country'] = $row['airport_country']; |
||
3055 | $country_array[$row['airport_country']] = $temp_array; |
||
3056 | } |
||
3057 | } else { |
||
3058 | $filter_query = $this->getFilter($filters,true,true); |
||
3059 | $query = "SELECT DISTINCT spotter_output.departure_airport_country AS airport_country |
||
3060 | FROM spotter_output".$filter_query." spotter_output.departure_airport_country <> '' |
||
3061 | ORDER BY spotter_output.departure_airport_country ASC"; |
||
3062 | |||
3063 | $sth = $this->db->prepare($query); |
||
3064 | $sth->execute(); |
||
3065 | |||
3066 | $temp_array = array(); |
||
3067 | $country_array = array(); |
||
3068 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
3069 | { |
||
3070 | $temp_array['country'] = $row['airport_country']; |
||
3071 | $country_array[$row['airport_country']] = $temp_array; |
||
3072 | } |
||
3073 | |||
3074 | $query = "SELECT DISTINCT spotter_output.arrival_airport_country AS airport_country |
||
3075 | FROM spotter_output".$filter_query." spotter_output.arrival_airport_country <> '' |
||
3076 | ORDER BY spotter_output.arrival_airport_country ASC"; |
||
3077 | |||
3078 | $sth = $this->db->prepare($query); |
||
3079 | $sth->execute(); |
||
3080 | |||
3081 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
3082 | { |
||
3083 | if ($country_array[$row['airport_country']]['country'] != $row['airport_country']) |
||
3084 | { |
||
3085 | $temp_array['country'] = $row['airport_country']; |
||
3086 | |||
3087 | $country_array[$row['country']] = $temp_array; |
||
3088 | } |
||
3089 | } |
||
3090 | |||
3091 | $query = "SELECT DISTINCT spotter_output.airline_country AS airline_country |
||
3092 | FROM spotter_output".$filter_query." spotter_output.airline_country <> '' |
||
3093 | ORDER BY spotter_output.airline_country ASC"; |
||
3094 | |||
3095 | $sth = $this->db->prepare($query); |
||
3096 | $sth->execute(); |
||
3097 | |||
3098 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
3099 | { |
||
3100 | if (isset($country_array[$row['airline_country']]['country']) && $country_array[$row['airline_country']]['country'] != $row['airline_country']) |
||
3101 | { |
||
3102 | $temp_array['country'] = $row['airline_country']; |
||
3103 | |||
3104 | $country_array[$row['country']] = $temp_array; |
||
3105 | } |
||
3106 | } |
||
3107 | } |
||
3108 | return $country_array; |
||
3109 | } |
||
3110 | |||
3111 | |||
3112 | |||
3113 | |||
3114 | /** |
||
3115 | * Gets a list of all idents/callsigns |
||
3116 | * |
||
3117 | * @return Array list of ident/callsign names |
||
3118 | * |
||
3119 | */ |
||
3120 | public function getAllIdents($filters = array()) |
||
3121 | { |
||
3122 | $filter_query = $this->getFilter($filters,true,true); |
||
3123 | $query = "SELECT DISTINCT spotter_output.ident |
||
3124 | FROM spotter_output".$filter_query." spotter_output.ident <> '' |
||
3125 | ORDER BY spotter_output.date ASC LIMIT 700 OFFSET 0"; |
||
3126 | |||
3127 | $sth = $this->db->prepare($query); |
||
3128 | $sth->execute(); |
||
3129 | |||
3130 | $ident_array = array(); |
||
3131 | $temp_array = array(); |
||
3132 | |||
3133 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
3134 | { |
||
3135 | $temp_array['ident'] = $row['ident']; |
||
3136 | $ident_array[] = $temp_array; |
||
3137 | } |
||
3138 | |||
3139 | return $ident_array; |
||
3140 | } |
||
3141 | |||
3142 | /** |
||
3143 | * Get a list of flights from airport since 7 days |
||
3144 | * @return Array number, icao, name and city of airports |
||
3145 | */ |
||
3146 | |||
3147 | public function getLast7DaysAirportsDeparture($airport_icao = '',$filters = array()) { |
||
3148 | global $globalTimezone, $globalDBdriver; |
||
3149 | $filter_query = $this->getFilter($filters,true,true); |
||
3150 | if ($globalTimezone != '') { |
||
3151 | date_default_timezone_set($globalTimezone); |
||
3152 | $datetime = new DateTime(); |
||
3153 | $offset = $datetime->format('P'); |
||
3154 | } else $offset = '+00:00'; |
||
3155 | if ($airport_icao == '') { |
||
3156 | if ($globalDBdriver == 'mysql') { |
||
3157 | $query = "SELECT COUNT(departure_airport_icao) AS departure_airport_count, departure_airport_icao, departure_airport_name, departure_airport_city, departure_airport_country, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d') as date FROM `spotter_output`".$filter_query." spotter_output.date >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 7 DAY) AND departure_airport_icao <> 'NA' AND departure_airport_icao <> '' GROUP BY departure_airport_icao, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d'), departure_airport_name, departure_airport_city, departure_airport_country ORDER BY departure_airport_count DESC"; |
||
3158 | } else { |
||
3159 | $query = "SELECT COUNT(departure_airport_icao) AS departure_airport_count, departure_airport_icao, departure_airport_name, departure_airport_city, departure_airport_country, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') as date FROM spotter_output".$filter_query." spotter_output.date >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '7 DAYS' AND departure_airport_icao <> 'NA' AND departure_airport_icao <> '' GROUP BY departure_airport_icao, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd'), departure_airport_name, departure_airport_city, departure_airport_country ORDER BY departure_airport_count DESC"; |
||
3160 | } |
||
3161 | $sth = $this->db->prepare($query); |
||
3162 | $sth->execute(array(':offset' => $offset)); |
||
3163 | } else { |
||
3164 | if ($globalDBdriver == 'mysql') { |
||
3165 | $query = "SELECT COUNT(departure_airport_icao) AS departure_airport_count, departure_airport_icao, departure_airport_name, departure_airport_city, departure_airport_country, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d') as date FROM `spotter_output`".$filter_query." spotter_output.date >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 7 DAY) AND departure_airport_icao = :airport_icao GROUP BY departure_airport_icao, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d'), departure_airport_name, departure_airport_city, departure_airport_country ORDER BY departure_airport_count DESC"; |
||
3166 | } else { |
||
3167 | $query = "SELECT COUNT(departure_airport_icao) AS departure_airport_count, departure_airport_icao, departure_airport_name, departure_airport_city, departure_airport_country, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') as date FROM spotter_output".$filter_query." spotter_output.date >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '7 DAYS' AND departure_airport_icao = :airport_icao GROUP BY departure_airport_icao, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd'), departure_airport_name, departure_airport_city, departure_airport_country ORDER BY departure_airport_count DESC"; |
||
3168 | } |
||
3169 | $sth = $this->db->prepare($query); |
||
3170 | $sth->execute(array(':offset' => $offset, ':airport_icao' => $airport_icao)); |
||
3171 | } |
||
3172 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
3173 | } |
||
3174 | |||
3175 | /** |
||
3176 | * Get a list of flights from airport since 7 days |
||
3177 | * @return Array number, icao, name and city of airports |
||
3178 | */ |
||
3179 | |||
3180 | public function getLast7DaysAirportsDepartureByAirlines($airport_icao = '') { |
||
3181 | global $globalTimezone, $globalDBdriver; |
||
3182 | if ($globalTimezone != '') { |
||
3183 | date_default_timezone_set($globalTimezone); |
||
3184 | $datetime = new DateTime(); |
||
3185 | $offset = $datetime->format('P'); |
||
3186 | } else $offset = '+00:00'; |
||
3187 | if ($airport_icao == '') { |
||
3188 | if ($globalDBdriver == 'mysql') { |
||
3189 | $query = "SELECT spotter_output.airline_icao, COUNT(departure_airport_icao) AS departure_airport_count, departure_airport_icao, departure_airport_name, departure_airport_city, departure_airport_country, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d') as date FROM `spotter_output` WHERE spotter_output.date >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 7 DAY) AND departure_airport_icao <> 'NA' AND departure_airport_icao <> '' AND spotter_output.airline_icao <> '' GROUP BY spotter_output.airline_icao, departure_airport_icao, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d'), departure_airport_name, departure_airport_city, departure_airport_country ORDER BY departure_airport_count DESC"; |
||
3190 | } else { |
||
3191 | $query = "SELECT spotter_output.airline_icao, COUNT(departure_airport_icao) AS departure_airport_count, departure_airport_icao, departure_airport_name, departure_airport_city, departure_airport_country, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') as date FROM spotter_output WHERE spotter_output.date >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '7 DAYS' AND departure_airport_icao <> 'NA' AND departure_airport_icao <> '' AND spotter_output.airline_icao <> '' GROUP BY spotter_output.airline_icao, departure_airport_icao, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd'), departure_airport_name, departure_airport_city, departure_airport_country ORDER BY departure_airport_count DESC"; |
||
3192 | } |
||
3193 | $sth = $this->db->prepare($query); |
||
3194 | $sth->execute(array(':offset' => $offset)); |
||
3195 | } else { |
||
3196 | if ($globalDBdriver == 'mysql') { |
||
3197 | $query = "SELECT spotter_output.airline_icao, COUNT(departure_airport_icao) AS departure_airport_count, departure_airport_icao, departure_airport_name, departure_airport_city, departure_airport_country, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d') as date FROM `spotter_output` WHERE spotter_output.date >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 7 DAY) AND departure_airport_icao = :airport_icao AND spotter_output.airline_icao <> '' GROUP BY spotter_output.airline_icao, departure_airport_icao, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d'), departure_airport_name, departure_airport_city, departure_airport_country ORDER BY departure_airport_count DESC"; |
||
3198 | } else { |
||
3199 | $query = "SELECT spotter_output.airline_icao, COUNT(departure_airport_icao) AS departure_airport_count, departure_airport_icao, departure_airport_name, departure_airport_city, departure_airport_country, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') as date FROM spotter_output WHERE spotter_output.date >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '7 DAYS' AND departure_airport_icao = :airport_icao AND spotter_output.airline_icao <> '' GROUP BY spotter_output.airline_icao, departure_airport_icao, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd'), departure_airport_name, departure_airport_city, departure_airport_country ORDER BY departure_airport_count DESC"; |
||
3200 | } |
||
3201 | $sth = $this->db->prepare($query); |
||
3202 | $sth->execute(array(':offset' => $offset, ':airport_icao' => $airport_icao)); |
||
3203 | } |
||
3204 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
3205 | } |
||
3206 | |||
3207 | /** |
||
3208 | * Get a list of flights from detected airport since 7 days |
||
3209 | * @return Array number, icao, name and city of airports |
||
3210 | */ |
||
3211 | |||
3212 | public function getLast7DaysDetectedAirportsDeparture($airport_icao = '', $filters = array()) { |
||
3213 | global $globalTimezone, $globalDBdriver; |
||
3214 | $filter_query = $this->getFilter($filters,true,true); |
||
3215 | if ($globalTimezone != '') { |
||
3216 | date_default_timezone_set($globalTimezone); |
||
3217 | $datetime = new DateTime(); |
||
3218 | $offset = $datetime->format('P'); |
||
3219 | } else $offset = '+00:00'; |
||
3220 | if ($airport_icao == '') { |
||
3221 | if ($globalDBdriver == 'mysql') { |
||
3222 | $query = "SELECT COUNT(real_departure_airport_icao) AS departure_airport_count, real_departure_airport_icao AS departure_airport_icao, airport.name AS departure_airport_name, airport.city AS departure_airport_city, airport.country AS departure_airport_country, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d') as date |
||
3223 | FROM airport, spotter_output".$filter_query." airport.icao = spotter_output.real_departure_airport_icao AND spotter_output.date >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 7 DAY) AND real_departure_airport_icao <> 'NA' AND real_departure_airport_icao <> '' |
||
3224 | GROUP BY real_departure_airport_icao, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d'), airport.name, airport.city, airport.country ORDER BY departure_airport_count DESC"; |
||
3225 | } else { |
||
3226 | $query = "SELECT COUNT(real_departure_airport_icao) AS departure_airport_count, real_departure_airport_icao AS departure_airport_icao, airport.name AS departure_airport_name, airport.city AS departure_airport_city, airport.country AS departure_airport_country, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') as date |
||
3227 | FROM airport, spotter_output".$filter_query." airport.icao = spotter_output.real_departure_airport_icao AND spotter_output.date >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '7 DAYS' AND real_departure_airport_icao <> 'NA' AND real_departure_airport_icao <> '' |
||
3228 | GROUP BY real_departure_airport_icao, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd'), airport.name, airport.city, airport.country ORDER BY departure_airport_count DESC"; |
||
3229 | } |
||
3230 | $sth = $this->db->prepare($query); |
||
3231 | $sth->execute(array(':offset' => $offset)); |
||
3232 | } else { |
||
3233 | if ($globalDBdriver == 'mysql') { |
||
3234 | $query = "SELECT COUNT(real_departure_airport_icao) AS departure_airport_count, real_departure_airport_icao AS departure_airport_icao, airport.name AS departure_airport_name, airport.city AS departure_airport_city, airport.country AS departure_airport_country, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d') as date |
||
3235 | FROM airport,spotter_output".$filter_query." airport.icao = spotter_output.real_departure_airport_icao AND spotter_output.date >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 7 DAY) AND real_departure_airport_icao = :airport_icao |
||
3236 | GROUP BY departure_airport_icao, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d'), airport.name, airport.city, airport.country ORDER BY departure_airport_count DESC"; |
||
3237 | } else { |
||
3238 | $query = "SELECT COUNT(real_departure_airport_icao) AS departure_airport_count, real_departure_airport_icao AS departure_airport_icao, airport.name AS departure_airport_name, airport.city AS departure_airport_city, airport.country AS departure_airport_country, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') as date |
||
3239 | FROM airport,spotter_output".$filter_query." airport.icao = spotter_output.real_departure_airport_icao AND spotter_output.date >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '7 DAYS' AND real_departure_airport_icao = :airport_icao GROUP BY departure_airport_icao, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd'), airport.name, airport.city, airport.country ORDER BY departure_airport_count DESC"; |
||
3240 | } |
||
3241 | $sth = $this->db->prepare($query); |
||
3242 | $sth->execute(array(':offset' => $offset, ':airport_icao' => $airport_icao)); |
||
3243 | } |
||
3244 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
3245 | } |
||
3246 | |||
3247 | /** |
||
3248 | * Get a list of flights from detected airport since 7 days |
||
3249 | * @return Array number, icao, name and city of airports |
||
3250 | */ |
||
3251 | |||
3252 | public function getLast7DaysDetectedAirportsDepartureByAirlines($airport_icao = '') { |
||
3253 | global $globalTimezone, $globalDBdriver; |
||
3254 | if ($globalTimezone != '') { |
||
3255 | date_default_timezone_set($globalTimezone); |
||
3256 | $datetime = new DateTime(); |
||
3257 | $offset = $datetime->format('P'); |
||
3258 | } else $offset = '+00:00'; |
||
3259 | if ($airport_icao == '') { |
||
3260 | if ($globalDBdriver == 'mysql') { |
||
3261 | $query = "SELECT spotter_output.airline_icao, COUNT(real_departure_airport_icao) AS departure_airport_count, real_departure_airport_icao AS departure_airport_icao, airport.name AS departure_airport_name, airport.city AS departure_airport_city, airport.country AS departure_airport_country, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d') as date |
||
3262 | FROM `spotter_output`, airport |
||
3263 | WHERE spotter_output.airline_icao <> '' AND airport.icao = spotter_output.real_departure_airport_icao AND spotter_output.date >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 7 DAY) AND real_departure_airport_icao <> 'NA' AND real_departure_airport_icao <> '' |
||
3264 | GROUP BY spotter_output.airline_icao, real_departure_airport_icao, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d'), airport.name, airport.city, airport.country ORDER BY departure_airport_count DESC"; |
||
3265 | } else { |
||
3266 | $query = "SELECT spotter_output.airline_icao, COUNT(real_departure_airport_icao) AS departure_airport_count, real_departure_airport_icao AS departure_airport_icao, airport.name AS departure_airport_name, airport.city AS departure_airport_city, airport.country AS departure_airport_country, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') as date |
||
3267 | FROM spotter_output, airport |
||
3268 | WHERE spotter_output.airline_icao <> '' AND airport.icao = spotter_output.real_departure_airport_icao AND spotter_output.date >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '7 DAYS' AND real_departure_airport_icao <> 'NA' AND real_departure_airport_icao <> '' |
||
3269 | GROUP BY spotter_output.airline_icao, real_departure_airport_icao, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd'), airport.name, airport.city, airport.country ORDER BY departure_airport_count DESC"; |
||
3270 | } |
||
3271 | $sth = $this->db->prepare($query); |
||
3272 | $sth->execute(array(':offset' => $offset)); |
||
3273 | } else { |
||
3274 | if ($globalDBdriver == 'mysql') { |
||
3275 | $query = "SELECT spotter_output.airline_icao, COUNT(real_departure_airport_icao) AS departure_airport_count, real_departure_airport_icao AS departure_airport_icao, airport.name AS departure_airport_name, airport.city AS departure_airport_city, airport.country AS departure_airport_country, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d') as date |
||
3276 | FROM `spotter_output`, airport |
||
3277 | WHERE spotter_output.airline_icao <> '' AND airport.icao = spotter_output.real_departure_airport_icao AND spotter_output.date >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 7 DAY) AND real_departure_airport_icao = :airport_icao |
||
3278 | GROUP BY spotter_output.airline_icao, departure_airport_icao, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d'), airport.name, airport.city, airport.country ORDER BY departure_airport_count DESC"; |
||
3279 | } else { |
||
3280 | $query = "SELECT spotter_output.airline_icao, COUNT(real_departure_airport_icao) AS departure_airport_count, real_departure_airport_icao AS departure_airport_icao, airport.name AS departure_airport_name, airport.city AS departure_airport_city, airport.country AS departure_airport_country, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') as date |
||
3281 | FROM spotter_output, airport |
||
3282 | WHERE spotter_output.airline_icao <> '' AND airport.icao = spotter_output.real_departure_airport_icao AND spotter_output.date >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '7 DAYS' AND real_departure_airport_icao = :airport_icao GROUP BY spotter_output.airline_icao, departure_airport_icao, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd'), airport.name, airport.city, airport.country ORDER BY departure_airport_count DESC"; |
||
3283 | } |
||
3284 | $sth = $this->db->prepare($query); |
||
3285 | $sth->execute(array(':offset' => $offset, ':airport_icao' => $airport_icao)); |
||
3286 | } |
||
3287 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
3288 | } |
||
3289 | |||
3290 | |||
3291 | /** |
||
3292 | * Get a list of flights to airport since 7 days |
||
3293 | * @return Array number, icao, name and city of airports |
||
3294 | */ |
||
3295 | |||
3296 | public function getLast7DaysAirportsArrival($airport_icao = '', $filters = array()) { |
||
3297 | global $globalTimezone, $globalDBdriver; |
||
3298 | $filter_query = $this->getFilter($filters,true,true); |
||
3299 | if ($globalTimezone != '') { |
||
3300 | date_default_timezone_set($globalTimezone); |
||
3301 | $datetime = new DateTime(); |
||
3302 | $offset = $datetime->format('P'); |
||
3303 | } else $offset = '+00:00'; |
||
3304 | if ($airport_icao == '') { |
||
3305 | if ($globalDBdriver == 'mysql') { |
||
3306 | $query = "SELECT COUNT(arrival_airport_icao) AS arrival_airport_count, arrival_airport_icao, arrival_airport_name, arrival_airport_city, arrival_airport_country, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d') as date FROM `spotter_output`".$filter_query." spotter_output.date >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 7 DAY) AND arrival_airport_icao <> 'NA' AND arrival_airport_icao <> '' GROUP BY arrival_airport_icao, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d'), arrival_airport_name, arrival_airport_city, arrival_airport_country ORDER BY arrival_airport_count DESC"; |
||
3307 | } else { |
||
3308 | $query = "SELECT COUNT(arrival_airport_icao) AS arrival_airport_count, arrival_airport_icao, arrival_airport_name, arrival_airport_city, arrival_airport_country, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') as date FROM spotter_output".$filter_query." spotter_output.date >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '7 DAYS' AND arrival_airport_icao <> 'NA' AND arrival_airport_icao <> '' GROUP BY arrival_airport_icao, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd'), arrival_airport_name, arrival_airport_city, arrival_airport_country ORDER BY arrival_airport_count DESC"; |
||
3309 | } |
||
3310 | $sth = $this->db->prepare($query); |
||
3311 | $sth->execute(array(':offset' => $offset)); |
||
3312 | } else { |
||
3313 | if ($globalDBdriver == 'mysql') { |
||
3314 | $query = "SELECT COUNT(arrival_airport_icao) AS arrival_airport_count, arrival_airport_icao, arrival_airport_name, arrival_airport_city, arrival_airport_country, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d') as date FROM `spotter_output`".$filter_query." spotter_output.date >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 7 DAY) AND arrival_airport_icao = :airport_icao GROUP BY arrival_airport_icao, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d'),arrival_airport_name, arrival_airport_city, arrival_airport_country ORDER BY arrival_airport_count DESC"; |
||
3315 | } else { |
||
3316 | $query = "SELECT COUNT(arrival_airport_icao) AS arrival_airport_count, arrival_airport_icao, arrival_airport_name, arrival_airport_city, arrival_airport_country, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') as date FROM spotter_output".$filter_query." spotter_output.date >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '7 DAYS' AND arrival_airport_icao = :airport_icao GROUP BY arrival_airport_icao, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd'), arrival_airport_name, arrival_airport_city, arrival_airport_country ORDER BY arrival_airport_count DESC"; |
||
3317 | } |
||
3318 | $sth = $this->db->prepare($query); |
||
3319 | $sth->execute(array(':offset' => $offset, ':airport_icao' => $airport_icao)); |
||
3320 | } |
||
3321 | |||
3322 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
3323 | } |
||
3324 | |||
3325 | |||
3326 | /** |
||
3327 | * Get a list of flights detected to airport since 7 days |
||
3328 | * @return Array number, icao, name and city of airports |
||
3329 | */ |
||
3330 | |||
3331 | public function getLast7DaysDetectedAirportsArrival($airport_icao = '',$filters = array()) { |
||
3332 | global $globalTimezone, $globalDBdriver; |
||
3333 | $filter_query = $this->getFilter($filters,true,true); |
||
3334 | if ($globalTimezone != '') { |
||
3335 | date_default_timezone_set($globalTimezone); |
||
3336 | $datetime = new DateTime(); |
||
3337 | $offset = $datetime->format('P'); |
||
3338 | } else $offset = '+00:00'; |
||
3339 | if ($airport_icao == '') { |
||
3340 | if ($globalDBdriver == 'mysql') { |
||
3341 | $query = "SELECT COUNT(real_arrival_airport_icao) AS arrival_airport_count, real_arrival_airport_icao AS arrival_airport_icao, airport.name AS arrival_airport_name, airport.city AS arrival_airport_city, airport.country AS arrival_airport_country, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d') as date |
||
3342 | FROM airport,spotter_output".$filter_query." airport.icao = spotter_output.real_arrival_airport_icao AND spotter_output.date >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 7 DAY) AND arrival_airport_icao <> 'NA' AND arrival_airport_icao <> '' |
||
3343 | GROUP BY real_arrival_airport_icao, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d'), airport.name, airport.city, airport.country ORDER BY arrival_airport_count DESC"; |
||
3344 | } else { |
||
3345 | $query = "SELECT COUNT(real_arrival_airport_icao) AS arrival_airport_count, real_arrival_airport_icao AS arrival_airport_icao, airport.name AS arrival_airport_name, airport.city AS arrival_airport_city, airport.country AS arrival_airport_country, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') as date |
||
3346 | FROM airport,spotter_output".$filter_query." airport.icao = spotter_output.real_arrival_airport_icao AND spotter_output.date >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '7 DAYS' AND arrival_airport_icao <> 'NA' AND arrival_airport_icao <> '' |
||
3347 | GROUP BY real_arrival_airport_icao, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd'), airport.name, airport.city, airport.country ORDER BY arrival_airport_count DESC"; |
||
3348 | } |
||
3349 | $sth = $this->db->prepare($query); |
||
3350 | $sth->execute(array(':offset' => $offset)); |
||
3351 | } else { |
||
3352 | if ($globalDBdriver == 'mysql') { |
||
3353 | $query = "SELECT COUNT(real_arrival_airport_icao) AS arrival_airport_count, real_arrival_airport_icao AS arrival_airport_icao, airport.name AS arrival_airport_name, airport.city AS arrival_airport_city, airport.country AS arrival_airport_country, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d') as date |
||
3354 | FROM airport,spotter_output".$filter_query." airport.icao = spotter_output.real_arrival_airport_icao AND spotter_output.date >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 7 DAY) AND arrival_airport_icao = :airport_icao |
||
3355 | GROUP BY real_arrival_airport_icao, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d'),airport.name, airport.city, airport.country ORDER BY arrival_airport_count DESC"; |
||
3356 | } else { |
||
3357 | $query = "SELECT COUNT(real_arrival_airport_icao) AS arrival_airport_count, real_arrival_airport_icao AS arrival_airport_icao, airport.name AS arrival_airport_name, airport.city AS arrival_airport_city, airport.country AS arrival_airport_country, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') as date |
||
3358 | FROM airport, spotter_output".$filter_query." airport.icao = spotter_output.real_arrival_airport_icao AND spotter_output.date >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '7 DAYS' AND arrival_airport_icao = :airport_icao |
||
3359 | GROUP BY real_arrival_airport_icao, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd'), airport.name, airport.city, airport.country ORDER BY arrival_airport_count DESC"; |
||
3360 | } |
||
3361 | $sth = $this->db->prepare($query); |
||
3362 | $sth->execute(array(':offset' => $offset, ':airport_icao' => $airport_icao)); |
||
3363 | } |
||
3364 | |||
3365 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
3366 | } |
||
3367 | |||
3368 | |||
3369 | /** |
||
3370 | * Get a list of flights to airport since 7 days |
||
3371 | * @return Array number, icao, name and city of airports |
||
3372 | */ |
||
3373 | |||
3374 | public function getLast7DaysAirportsArrivalByAirlines($airport_icao = '') { |
||
3375 | global $globalTimezone, $globalDBdriver; |
||
3376 | if ($globalTimezone != '') { |
||
3377 | date_default_timezone_set($globalTimezone); |
||
3378 | $datetime = new DateTime(); |
||
3379 | $offset = $datetime->format('P'); |
||
3380 | } else $offset = '+00:00'; |
||
3381 | if ($airport_icao == '') { |
||
3382 | if ($globalDBdriver == 'mysql') { |
||
3383 | $query = "SELECT spotter_output.airline_icao, COUNT(arrival_airport_icao) AS arrival_airport_count, arrival_airport_icao, arrival_airport_name, arrival_airport_city, arrival_airport_country, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d') as date FROM `spotter_output` WHERE spotter_output.date >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 7 DAY) AND arrival_airport_icao <> 'NA' AND arrival_airport_icao <> '' AND spotter_output.airline_icao <> '' GROUP BY spotter_output.airline_icao, arrival_airport_icao, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d'), arrival_airport_name, arrival_airport_city, arrival_airport_country ORDER BY arrival_airport_count DESC"; |
||
3384 | } else { |
||
3385 | $query = "SELECT spotter_output.airline_icao, COUNT(arrival_airport_icao) AS arrival_airport_count, arrival_airport_icao, arrival_airport_name, arrival_airport_city, arrival_airport_country, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') as date FROM spotter_output WHERE spotter_output.date >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '7 DAYS' AND arrival_airport_icao <> 'NA' AND arrival_airport_icao <> '' AND spotter_output.airline_icao <> '' GROUP BY spotter_output.airline_icao, arrival_airport_icao, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd'), arrival_airport_name, arrival_airport_city, arrival_airport_country ORDER BY arrival_airport_count DESC"; |
||
3386 | } |
||
3387 | $sth = $this->db->prepare($query); |
||
3388 | $sth->execute(array(':offset' => $offset)); |
||
3389 | } else { |
||
3390 | if ($globalDBdriver == 'mysql') { |
||
3391 | $query = "SELECT spotter_output.airline_icao, COUNT(arrival_airport_icao) AS arrival_airport_count, arrival_airport_icao, arrival_airport_name, arrival_airport_city, arrival_airport_country, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d') as date FROM `spotter_output` WHERE spotter_output.date >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 7 DAY) AND arrival_airport_icao = :airport_icao AND spotter_output.airline_icao <> '' GROUP BY spotter_output.airline_icao, arrival_airport_icao, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d'),arrival_airport_name, arrival_airport_city, arrival_airport_country ORDER BY arrival_airport_count DESC"; |
||
3392 | } else { |
||
3393 | $query = "SELECT spotter_output.airline_icao, COUNT(arrival_airport_icao) AS arrival_airport_count, arrival_airport_icao, arrival_airport_name, arrival_airport_city, arrival_airport_country, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') as date FROM spotter_output WHERE spotter_output.date >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '7 DAYS' AND arrival_airport_icao = :airport_icao AND spotter_output.airline_icao <> '' GROUP BY spotter_output.airline_icao, arrival_airport_icao, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd'), arrival_airport_name, arrival_airport_city, arrival_airport_country ORDER BY arrival_airport_count DESC"; |
||
3394 | } |
||
3395 | $sth = $this->db->prepare($query); |
||
3396 | $sth->execute(array(':offset' => $offset, ':airport_icao' => $airport_icao)); |
||
3397 | } |
||
3398 | |||
3399 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
3400 | } |
||
3401 | |||
3402 | |||
3403 | /** |
||
3404 | * Get a list of flights detected to airport since 7 days |
||
3405 | * @return Array number, icao, name and city of airports |
||
3406 | */ |
||
3407 | |||
3408 | public function getLast7DaysDetectedAirportsArrivalByAirlines($airport_icao = '') { |
||
3409 | global $globalTimezone, $globalDBdriver; |
||
3410 | if ($globalTimezone != '') { |
||
3411 | date_default_timezone_set($globalTimezone); |
||
3412 | $datetime = new DateTime(); |
||
3413 | $offset = $datetime->format('P'); |
||
3414 | } else $offset = '+00:00'; |
||
3415 | if ($airport_icao == '') { |
||
3416 | if ($globalDBdriver == 'mysql') { |
||
3417 | $query = "SELECT spotter_output.airline_icao, COUNT(real_arrival_airport_icao) AS arrival_airport_count, real_arrival_airport_icao AS arrival_airport_icao, airport.name AS arrival_airport_name, airport.city AS arrival_airport_city, airport.country AS arrival_airport_country, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d') as date |
||
3418 | FROM `spotter_output`, airport |
||
3419 | WHERE spotter_output.airline_icao <> '' AND airport.icao = spotter_output.real_arrival_airport_icao AND spotter_output.date >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 7 DAY) AND arrival_airport_icao <> 'NA' AND arrival_airport_icao <> '' |
||
3420 | GROUP BY spotter_output.airline_icao, real_arrival_airport_icao, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d'), airport.name, airport.city, airport.country ORDER BY arrival_airport_count DESC"; |
||
3421 | } else { |
||
3422 | $query = "SELECT spotter_output.airline_icao, COUNT(real_arrival_airport_icao) AS arrival_airport_count, real_arrival_airport_icao AS arrival_airport_icao, airport.name AS arrival_airport_name, airport.city AS arrival_airport_city, airport.country AS arrival_airport_country, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') as date |
||
3423 | FROM spotter_output, airport |
||
3424 | WHERE spotter_output.airline_icao <> '' AND airport.icao = spotter_output.real_arrival_airport_icao AND spotter_output.date >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '7 DAYS' AND arrival_airport_icao <> 'NA' AND arrival_airport_icao <> '' |
||
3425 | GROUP BY spotter_output.airline_icao, real_arrival_airport_icao, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd'), airport.name, airport.city, airport.country ORDER BY arrival_airport_count DESC"; |
||
3426 | } |
||
3427 | $sth = $this->db->prepare($query); |
||
3428 | $sth->execute(array(':offset' => $offset)); |
||
3429 | } else { |
||
3430 | if ($globalDBdriver == 'mysql') { |
||
3431 | $query = "SELECT spotter_output.airline_icao, COUNT(real_arrival_airport_icao) AS arrival_airport_count, real_arrival_airport_icao AS arrival_airport_icao, airport.name AS arrival_airport_name, airport.city AS arrival_airport_city, airport.country AS arrival_airport_country, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d') as date |
||
3432 | FROM `spotter_output`, airport |
||
3433 | WHERE spotter_output.airline_icao <> '' AND airport.icao = spotter_output.real_arrival_airport_icao AND spotter_output.date >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 7 DAY) AND arrival_airport_icao = :airport_icao |
||
3434 | GROUP BY spotter_output.airline_icao, real_arrival_airport_icao, DATE_FORMAT(DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)),'%Y-%m-%d'),airport.name, airport.city, airport.country ORDER BY arrival_airport_count DESC"; |
||
3435 | } else { |
||
3436 | $query = "SELECT spotter_output.airline_icao, COUNT(real_arrival_airport_icao) AS arrival_airport_count, real_arrival_airport_icao AS arrival_airport_icao, airport.name AS arrival_airport_name, airport.city AS arrival_airport_city, airport.country AS arrival_airport_country, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') as date |
||
3437 | FROM spotter_output, airport |
||
3438 | WHERE spotter_output.airline_icao <> '' AND airport.icao = spotter_output.real_arrival_airport_icao AND spotter_output.date >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '7 DAYS' AND arrival_airport_icao = :airport_icao |
||
3439 | GROUP BY spotter_output.airline_icao,real_arrival_airport_icao, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd'), airport.name, airport.city, airport.country ORDER BY arrival_airport_count DESC"; |
||
3440 | } |
||
3441 | $sth = $this->db->prepare($query); |
||
3442 | $sth->execute(array(':offset' => $offset, ':airport_icao' => $airport_icao)); |
||
3443 | } |
||
3444 | |||
3445 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
3446 | } |
||
3447 | |||
3448 | |||
3449 | /** |
||
3450 | * Gets a list of all dates |
||
3451 | * |
||
3452 | * @return Array list of date names |
||
3453 | * |
||
3454 | */ |
||
3455 | public function getAllDates() |
||
3456 | { |
||
3457 | global $globalTimezone, $globalDBdriver; |
||
3458 | if ($globalTimezone != '') { |
||
3459 | date_default_timezone_set($globalTimezone); |
||
3460 | $datetime = new DateTime(); |
||
3461 | $offset = $datetime->format('P'); |
||
3462 | } else $offset = '+00:00'; |
||
3463 | |||
3464 | if ($globalDBdriver == 'mysql') { |
||
3465 | $query = "SELECT DISTINCT DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) as date |
||
3466 | FROM spotter_output |
||
3467 | WHERE spotter_output.date <> '' |
||
3468 | ORDER BY spotter_output.date ASC LIMIT 0,200"; |
||
3469 | } else { |
||
3470 | $query = "SELECT DISTINCT to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') as date |
||
3471 | FROM spotter_output |
||
3472 | WHERE spotter_output.date <> '' |
||
3473 | ORDER BY spotter_output.date ASC LIMIT 0,200"; |
||
3474 | } |
||
3475 | |||
3476 | $sth = $this->db->prepare($query); |
||
3477 | $sth->execute(array(':offset' => $offset)); |
||
3478 | |||
3479 | $date_array = array(); |
||
3480 | $temp_array = array(); |
||
3481 | |||
3482 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
3483 | { |
||
3484 | $temp_array['date'] = $row['date']; |
||
3485 | |||
3486 | $date_array[] = $temp_array; |
||
3487 | } |
||
3488 | |||
3489 | return $date_array; |
||
3490 | } |
||
3491 | |||
3492 | |||
3493 | |||
3494 | /** |
||
3495 | * Gets all route combinations |
||
3496 | * |
||
3497 | * @return Array the route list |
||
3498 | * |
||
3499 | */ |
||
3500 | public function getAllRoutes() |
||
3501 | { |
||
3502 | $query = "SELECT DISTINCT concat(spotter_output.departure_airport_icao, ' - ', spotter_output.arrival_airport_icao) AS route, spotter_output.departure_airport_icao, spotter_output.arrival_airport_icao |
||
3503 | FROM spotter_output |
||
3504 | WHERE spotter_output.ident <> '' |
||
3505 | GROUP BY route |
||
3506 | ORDER BY route ASC"; |
||
3507 | |||
3508 | $sth = $this->db->prepare($query); |
||
3509 | $sth->execute(); |
||
3510 | |||
3511 | $routes_array = array(); |
||
3512 | $temp_array = array(); |
||
3513 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
3514 | { |
||
3515 | $temp_array['route'] = $row['route']; |
||
3516 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
3517 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
3518 | |||
3519 | $routes_array[] = $temp_array; |
||
3520 | } |
||
3521 | return $routes_array; |
||
3522 | } |
||
3523 | |||
3524 | /** |
||
3525 | * Update ident spotter data |
||
3526 | * |
||
3527 | * @param String $flightaware_id the ID from flightaware |
||
3528 | * @param String $ident the flight ident |
||
3529 | * @return String success or false |
||
3530 | * |
||
3531 | */ |
||
3532 | public function updateIdentSpotterData($flightaware_id = '', $ident = '',$fromsource = NULL) |
||
3533 | { |
||
3534 | if (!is_numeric(substr($ident, 0, 3))) |
||
3535 | { |
||
3536 | if (is_numeric(substr(substr($ident, 0, 3), -1, 1))) { |
||
3537 | $airline_array = $this->getAllAirlineInfo(substr($ident, 0, 2),$fromsource); |
||
3538 | } elseif (is_numeric(substr(substr($ident, 0, 4), -1, 1))) { |
||
3539 | $airline_array = $this->getAllAirlineInfo(substr($ident, 0, 3),$fromsource); |
||
3540 | } else { |
||
3541 | $airline_array = $this->getAllAirlineInfo("NA"); |
||
3542 | } |
||
3543 | if (count($airline_array) == 0) { |
||
3544 | $airline_array = $this->getAllAirlineInfo("NA"); |
||
3545 | } |
||
3546 | if (!isset($airline_array[0]['icao']) || $airline_array[0]['icao'] == ""){ |
||
3547 | $airline_array = $this->getAllAirlineInfo("NA"); |
||
3548 | } |
||
3549 | } else { |
||
3550 | $airline_array = $this->getAllAirlineInfo("NA"); |
||
3551 | } |
||
3552 | $airline_name = $airline_array[0]['name']; |
||
3553 | $airline_icao = $airline_array[0]['icao']; |
||
3554 | $airline_country = $airline_array[0]['country']; |
||
3555 | $airline_type = $airline_array[0]['type']; |
||
3556 | |||
3557 | |||
3558 | $query = 'UPDATE spotter_output SET ident = :ident, airline_name = :airline_name, airline_icao = :airline_icao, airline_country = :airline_country, airline_type = :airline_type WHERE flightaware_id = :flightaware_id'; |
||
3559 | $query_values = array(':flightaware_id' => $flightaware_id,':ident' => $ident,':airline_name' => $airline_name,':airline_icao' => $airline_icao,':airline_country' => $airline_country,':airline_type' => $airline_type); |
||
3560 | |||
3561 | try { |
||
3562 | $sth = $this->db->prepare($query); |
||
3563 | $sth->execute($query_values); |
||
3564 | } catch (PDOException $e) { |
||
3565 | return "error : ".$e->getMessage(); |
||
3566 | } |
||
3567 | |||
3568 | return "success"; |
||
3569 | |||
3570 | } |
||
3571 | /** |
||
3572 | * Update latest spotter data |
||
3573 | * |
||
3574 | * @param String $flightaware_id the ID from flightaware |
||
3575 | * @param String $ident the flight ident |
||
3576 | * @param String $arrival_airport_icao the arrival airport |
||
3577 | * @return String success or false |
||
3578 | * |
||
3579 | */ |
||
3580 | public function updateLatestSpotterData($flightaware_id = '', $ident = '', $latitude = '', $longitude = '', $altitude = '', $ground = false, $groundspeed = NULL, $date = '', $arrival_airport_icao = '',$arrival_airport_time = '') |
||
3581 | { |
||
3582 | if ($groundspeed == '') $groundspeed = NULL; |
||
3583 | $query = 'UPDATE spotter_output SET ident = :ident, last_latitude = :last_latitude, last_longitude = :last_longitude, last_altitude = :last_altitude, last_ground = :last_ground, last_seen = :last_seen, real_arrival_airport_icao = :real_arrival_airport_icao, real_arrival_airport_time = :real_arrival_airport_time, last_ground_speed = :last_ground_speed WHERE flightaware_id = :flightaware_id'; |
||
3584 | $query_values = array(':flightaware_id' => $flightaware_id,':real_arrival_airport_icao' => $arrival_airport_icao,':last_latitude' => $latitude,':last_longitude' => $longitude, ':last_altitude' => $altitude,':last_ground_speed' => $groundspeed,':last_seen' => $date,':real_arrival_airport_time' => $arrival_airport_time, ':last_ground' => $ground, ':ident' => $ident); |
||
3585 | |||
3586 | try { |
||
3587 | $sth = $this->db->prepare($query); |
||
3588 | $sth->execute($query_values); |
||
3589 | } catch (PDOException $e) { |
||
3590 | return "error : ".$e->getMessage(); |
||
3591 | } |
||
3592 | |||
3593 | return "success"; |
||
3594 | |||
3595 | } |
||
3596 | |||
3597 | /** |
||
3598 | * Adds a new spotter data |
||
3599 | * |
||
3600 | * @param String $flightaware_id the ID from flightaware |
||
3601 | * @param String $ident the flight ident |
||
3602 | * @param String $aircraft_icao the aircraft type |
||
3603 | * @param String $departure_airport_icao the departure airport |
||
3604 | * @param String $arrival_airport_icao the arrival airport |
||
3605 | * @param String $latitude latitude of flight |
||
3606 | * @param String $longitude latitude of flight |
||
3607 | * @param String $waypoints waypoints of flight |
||
3608 | * @param String $altitude altitude of flight |
||
3609 | * @param String $heading heading of flight |
||
3610 | * @param String $groundspeed speed of flight |
||
3611 | * @param String $date date of flight |
||
3612 | * @param String $departure_airport_time departure time of flight |
||
3613 | * @param String $arrival_airport_time arrival time of flight |
||
3614 | * @param String $squawk squawk code of flight |
||
3615 | * @param String $route_stop route stop of flight |
||
3616 | * @param String $highlight highlight or not |
||
3617 | * @param String $ModeS ModesS code of flight |
||
3618 | * @param String $registration registration code of flight |
||
3619 | * @param String $pilot_id pilot id of flight (for virtual airlines) |
||
3620 | * @param String $pilot_name pilot name of flight (for virtual airlines) |
||
3621 | * @param String $verticalrate vertival rate of flight |
||
3622 | * @return String success or false |
||
3623 | */ |
||
3624 | public function addSpotterData($flightaware_id = '', $ident = '', $aircraft_icao = '', $departure_airport_icao = '', $arrival_airport_icao = '', $latitude = '', $longitude = '', $waypoints = '', $altitude = '', $altitude_real = '',$heading = '', $groundspeed = '', $date = '', $departure_airport_time = '', $arrival_airport_time = '',$squawk = '', $route_stop = '', $highlight = '', $ModeS = '', $registration = '',$pilot_id = '', $pilot_name = '', $verticalrate = '', $ground = false,$format_source = '', $source_name = '',$source_type = '') |
||
3625 | { |
||
3626 | global $globalURL, $globalIVAO, $globalVATSIM, $globalphpVMS, $globalDebugTimeElapsed, $globalAirlinesSource, $globalVAM; |
||
3627 | |||
3628 | //if (isset($globalDebugTimeElapsed) || $globalDebugTimeElapsed == '') $globalDebugTimeElapsed = FALSE; |
||
3629 | $Image = new Image($this->db); |
||
3630 | $Common = new Common(); |
||
3631 | |||
3632 | if (!isset($globalIVAO)) $globalIVAO = FALSE; |
||
3633 | if (!isset($globalVATSIM)) $globalVATSIM = FALSE; |
||
3634 | if (!isset($globalphpVMS)) $globalphpVMS = FALSE; |
||
3635 | if (!isset($globalVAM)) $globalVAM = FALSE; |
||
3636 | date_default_timezone_set('UTC'); |
||
3637 | |||
3638 | //getting the registration |
||
3639 | if ($flightaware_id != "" && $registration == '') |
||
3640 | { |
||
3641 | if (!is_string($flightaware_id)) |
||
3642 | { |
||
3643 | return false; |
||
3644 | } else { |
||
3645 | if ($ModeS != '') { |
||
3646 | $timeelapsed = microtime(true); |
||
3647 | $registration = $this->getAircraftRegistrationBymodeS($ModeS,$source_type); |
||
3648 | if ($globalDebugTimeElapsed) echo 'ADD SPOTTER DATA : Time elapsed for getAircraftRegistrationBymodes : '.round(microtime(true)-$timeelapsed,2).'s'."\n"; |
||
3649 | } else { |
||
3650 | $myhex = explode('-',$flightaware_id); |
||
3651 | if (count($myhex) > 0) { |
||
3652 | $timeelapsed = microtime(true); |
||
3653 | $registration = $this->getAircraftRegistrationBymodeS($myhex[0],$source_type); |
||
3654 | if ($globalDebugTimeElapsed) echo 'ADD SPOTTER DATA : Time elapsed for getAircraftRegistrationBymodes : '.round(microtime(true)-$timeelapsed,2).'s'."\n"; |
||
3655 | } |
||
3656 | } |
||
3657 | } |
||
3658 | } |
||
3659 | $fromsource = NULL; |
||
3660 | if (isset($globalAirlinesSource) && $globalAirlinesSource != '') $fromsource = $globalAirlinesSource; |
||
3661 | elseif ($format_source == 'vatsimtxt') $fromsource = 'vatsim'; |
||
3662 | elseif ($format_source == 'whazzup') $fromsource = 'ivao'; |
||
3663 | elseif (isset($globalVATSIM) && $globalVATSIM) $fromsource = 'vatsim'; |
||
3664 | elseif (isset($globalIVAO) && $globalIVAO) $fromsource = 'ivao'; |
||
3665 | //getting the airline information |
||
3666 | if ($ident != "") |
||
3667 | { |
||
3668 | if (!is_string($ident)) |
||
3669 | { |
||
3670 | return false; |
||
3671 | } else { |
||
3672 | if (!is_numeric(substr($ident, 0, 3)) && !((substr($ident, 0, 3) == 'OGN' || substr($ident, 0, 3) == 'FLR' || substr($ident, 0, 3) == 'ICA') && $format_source == 'aprs')) |
||
3673 | { |
||
3674 | $timeelapsed = microtime(true); |
||
3675 | if (is_numeric(substr(substr($ident, 0, 3), -1, 1))) { |
||
3676 | $airline_array = $this->getAllAirlineInfo(substr($ident, 0, 2),$fromsource); |
||
3677 | } elseif (is_numeric(substr(substr($ident, 0, 4), -1, 1))) { |
||
3678 | $airline_array = $this->getAllAirlineInfo(substr($ident, 0, 3),$fromsource); |
||
3679 | } else { |
||
3680 | $airline_array = $this->getAllAirlineInfo("NA"); |
||
3681 | } |
||
3682 | if (count($airline_array) == 0) { |
||
3683 | $airline_array = $this->getAllAirlineInfo("NA"); |
||
3684 | } |
||
3685 | if (!isset($airline_array[0]['icao']) || $airline_array[0]['icao'] == ""){ |
||
3686 | $airline_array = $this->getAllAirlineInfo("NA"); |
||
3687 | } |
||
3688 | if ($globalDebugTimeElapsed) echo 'ADD SPOTTER DATA : Time elapsed for getAirlineInfo : '.round(microtime(true)-$timeelapsed,2).'s'."\n"; |
||
3689 | |||
3690 | } else { |
||
3691 | $timeelapsed = microtime(true); |
||
3692 | $airline_array = $this->getAllAirlineInfo("NA"); |
||
3693 | if ($globalDebugTimeElapsed) echo 'ADD SPOTTER DATA : Time elapsed for getAirlineInfo(NA) : '.round(microtime(true)-$timeelapsed,2).'s'."\n"; |
||
3694 | } |
||
3695 | } |
||
3696 | } else $airline_array = array(); |
||
3697 | |||
3698 | //getting the aircraft information |
||
3699 | $aircraft_array = array(); |
||
3700 | if ($aircraft_icao != '') |
||
3701 | { |
||
3702 | if (!is_string($aircraft_icao)) |
||
3703 | { |
||
3704 | return false; |
||
3705 | } else { |
||
3706 | if ($aircraft_icao == "" || $aircraft_icao == "XXXX") |
||
3707 | { |
||
3708 | $timeelapsed = microtime(true); |
||
3709 | $aircraft_array = $this->getAllAircraftInfo("NA"); |
||
3710 | if ($globalDebugTimeElapsed) echo 'ADD SPOTTER DATA : Time elapsed for getAircraftInfo(NA) : '.round(microtime(true)-$timeelapsed,2).'s'."\n"; |
||
3711 | } else { |
||
3712 | $timeelapsed = microtime(true); |
||
3713 | $aircraft_array = $this->getAllAircraftInfo($aircraft_icao); |
||
3714 | if ($globalDebugTimeElapsed) echo 'ADD SPOTTER DATA : Time elapsed for getAircraftInfo : '.round(microtime(true)-$timeelapsed,2).'s'."\n"; |
||
3715 | } |
||
3716 | } |
||
3717 | } else { |
||
3718 | if ($ModeS != '') { |
||
3719 | $timeelapsed = microtime(true); |
||
3720 | $aircraft_icao = $this->getAllAircraftType($ModeS,$source_type); |
||
3721 | if ($globalDebugTimeElapsed) echo 'ADD SPOTTER DATA : Time elapsed for getAllAircraftType : '.round(microtime(true)-$timeelapsed,2).'s'."\n"; |
||
3722 | if ($aircraft_icao == "" || $aircraft_icao == "XXXX") |
||
3723 | { |
||
3724 | $timeelapsed = microtime(true); |
||
3725 | $aircraft_array = $this->getAllAircraftInfo("NA"); |
||
3726 | if ($globalDebugTimeElapsed) echo 'ADD SPOTTER DATA : Time elapsed for getAircraftInfo(NA) : '.round(microtime(true)-$timeelapsed,2).'s'."\n"; |
||
3727 | } else { |
||
3728 | $timeelapsed = microtime(true); |
||
3729 | $aircraft_array = $this->getAllAircraftInfo($aircraft_icao); |
||
3730 | if ($globalDebugTimeElapsed) echo 'ADD SPOTTER DATA : Time elapsed for getAircraftInfo : '.round(microtime(true)-$timeelapsed,2).'s'."\n"; |
||
3731 | } |
||
3732 | } |
||
3733 | } |
||
3734 | |||
3735 | //getting the departure airport information |
||
3736 | $departure_airport_array = array(); |
||
3737 | $departure_airport_icao = trim($departure_airport_icao); |
||
3738 | if ($departure_airport_icao != '') |
||
3739 | { |
||
3740 | if (!is_string($departure_airport_icao)) |
||
3741 | { |
||
3742 | return false; |
||
3743 | } else { |
||
3744 | $timeelapsed = microtime(true); |
||
3745 | $departure_airport_array = $this->getAllAirportInfo($departure_airport_icao); |
||
3746 | if ($globalDebugTimeElapsed) echo 'ADD SPOTTER DATA : Time elapsed for getAllAirportInfo : '.round(microtime(true)-$timeelapsed,2).'s'."\n"; |
||
3747 | } |
||
3748 | } |
||
3749 | |||
3750 | //getting the arrival airport information |
||
3751 | $arrival_airport_array = array(); |
||
3752 | $arrival_airport_icao = trim($arrival_airport_icao); |
||
3753 | if ($arrival_airport_icao != '') |
||
3754 | { |
||
3755 | if (!is_string($arrival_airport_icao)) |
||
3756 | { |
||
3757 | return false; |
||
3758 | } else { |
||
3759 | $timeelapsed = microtime(true); |
||
3760 | $arrival_airport_array = $this->getAllAirportInfo($arrival_airport_icao); |
||
3761 | if ($globalDebugTimeElapsed) echo 'ADD SPOTTER DATA : Time elapsed for getAllAirportInfo : '.round(microtime(true)-$timeelapsed,2).'s'."\n"; |
||
3762 | } |
||
3763 | } |
||
3764 | |||
3765 | if ($latitude != "") |
||
3766 | { |
||
3767 | if (!is_numeric($latitude)) |
||
3768 | { |
||
3769 | return false; |
||
3770 | } |
||
3771 | } |
||
3772 | |||
3773 | if ($longitude != "") |
||
3774 | { |
||
3775 | if (!is_numeric($longitude)) |
||
3776 | { |
||
3777 | return false; |
||
3778 | } |
||
3779 | } |
||
3780 | |||
3781 | if ($waypoints != "") |
||
3782 | { |
||
3783 | if (!is_string($waypoints)) |
||
3784 | { |
||
3785 | return false; |
||
3786 | } |
||
3787 | } |
||
3788 | |||
3789 | if ($altitude != "") |
||
3790 | { |
||
3791 | if (!is_numeric($altitude)) |
||
3792 | { |
||
3793 | return false; |
||
3794 | } |
||
3795 | } else $altitude = 0; |
||
3796 | |||
3797 | if ($heading != "") |
||
3798 | { |
||
3799 | if (!is_numeric($heading)) |
||
3800 | { |
||
3801 | return false; |
||
3802 | } |
||
3803 | } |
||
3804 | |||
3805 | if ($groundspeed != "") |
||
3806 | { |
||
3807 | if (!is_numeric($groundspeed)) |
||
3808 | { |
||
3809 | return false; |
||
3810 | } |
||
3811 | } |
||
3812 | |||
3813 | |||
3814 | if ($date == "" || strtotime($date) < time()-20*60) |
||
3815 | { |
||
3816 | $date = date("Y-m-d H:i:s", time()); |
||
3817 | } |
||
3818 | |||
3819 | //getting the aircraft image |
||
3820 | if (($registration != "" || $registration != 'NA') && !$globalIVAO && !$globalVATSIM && !$globalphpVMS && !$globalVAM) |
||
3821 | { |
||
3822 | $timeelapsed = microtime(true); |
||
3823 | $image_array = $Image->getSpotterImage($registration); |
||
3824 | if ($globalDebugTimeElapsed) echo 'ADD SPOTTER DATA : Time elapsed for getSpotterImage : '.round(microtime(true)-$timeelapsed,2).'s'."\n"; |
||
3825 | if (!isset($image_array[0]['registration'])) |
||
3826 | { |
||
3827 | //echo "Add image !!!! \n"; |
||
3828 | $Image->addSpotterImage($registration); |
||
3829 | } |
||
3830 | $timeelapsed = microtime(true); |
||
3831 | $owner_info = $this->getAircraftOwnerByRegistration($registration); |
||
3832 | if ($globalDebugTimeElapsed) echo 'ADD SPOTTER DATA : Time elapsed for getAircraftOwnerByRegistration : '.round(microtime(true)-$timeelapsed,2).'s'."\n"; |
||
3833 | if ($owner_info['owner'] != '') $aircraft_owner = ucwords(strtolower($owner_info['owner'])); |
||
3834 | } |
||
3835 | |||
3836 | if (($globalIVAO || $globalVATSIM || $globalphpVMS || $globalVAM) && $aircraft_icao != '') |
||
3837 | { |
||
3838 | if (isset($airline_array[0]['icao'])) $airline_icao = $airline_array[0]['icao']; |
||
3839 | else $airline_icao = ''; |
||
3840 | $image_array = $Image->getSpotterImage('',$aircraft_icao,$airline_icao); |
||
3841 | if (!isset($image_array[0]['registration'])) |
||
3842 | { |
||
3843 | //echo "Add image !!!! \n"; |
||
3844 | $Image->addSpotterImage('',$aircraft_icao,$airline_icao); |
||
3845 | } |
||
3846 | } |
||
3847 | |||
3848 | $flightaware_id = filter_var($flightaware_id,FILTER_SANITIZE_STRING); |
||
3849 | $ident = filter_var($ident,FILTER_SANITIZE_STRING); |
||
3850 | $registration = filter_var($registration,FILTER_SANITIZE_STRING); |
||
3851 | $aircraft_icao = filter_var($aircraft_icao,FILTER_SANITIZE_STRING); |
||
3852 | $departure_airport_icao = filter_var($departure_airport_icao,FILTER_SANITIZE_STRING); |
||
3853 | $arrival_airport_icao = filter_var($arrival_airport_icao,FILTER_SANITIZE_STRING); |
||
3854 | $latitude = filter_var($latitude,FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
3855 | $longitude = filter_var($longitude,FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
3856 | $waypoints = filter_var($waypoints,FILTER_SANITIZE_STRING); |
||
3857 | $altitude = filter_var($altitude,FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
3858 | $heading = filter_var($heading,FILTER_SANITIZE_NUMBER_INT); |
||
3859 | $groundspeed = filter_var($groundspeed,FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
3860 | $squawk = filter_var($squawk,FILTER_SANITIZE_NUMBER_INT); |
||
3861 | $route_stop = filter_var($route_stop,FILTER_SANITIZE_STRING); |
||
3862 | $ModeS = filter_var($ModeS,FILTER_SANITIZE_STRING); |
||
3863 | $pilot_id = filter_var($pilot_id,FILTER_SANITIZE_STRING); |
||
3864 | $pilot_name = filter_var($pilot_name,FILTER_SANITIZE_STRING); |
||
3865 | $format_source = filter_var($format_source,FILTER_SANITIZE_STRING); |
||
3866 | $verticalrate = filter_var($verticalrate,FILTER_SANITIZE_NUMBER_INT); |
||
3867 | |||
3868 | if (count($airline_array) == 0) |
||
3869 | { |
||
3870 | $airline_array = $this->getAllAirlineInfo('NA'); |
||
3871 | } |
||
3872 | if (count($aircraft_array) == 0) |
||
3873 | { |
||
3874 | $aircraft_array = $this->getAllAircraftInfo('NA'); |
||
3875 | } |
||
3876 | if (count($departure_airport_array) == 0 || $departure_airport_array[0]['icao'] == '' || $departure_airport_icao == '') |
||
3877 | { |
||
3878 | $departure_airport_array = $this->getAllAirportInfo('NA'); |
||
3879 | } |
||
3880 | if (count($arrival_airport_array) == 0 || $arrival_airport_array[0]['icao'] == '' || $arrival_airport_icao == '') |
||
3881 | { |
||
3882 | $arrival_airport_array = $this->getAllAirportInfo('NA'); |
||
3883 | } |
||
3884 | if ($registration == '') $registration = 'NA'; |
||
3885 | if ($latitude == '' && $longitude == '') { |
||
3886 | $latitude = 0; |
||
3887 | $longitude = 0; |
||
3888 | } |
||
3889 | if ($squawk == '' || $Common->isInteger($squawk) === false) $squawk = NULL; |
||
3890 | if ($verticalrate == '' || $Common->isInteger($verticalrate) === false) $verticalrate = NULL; |
||
3891 | if ($heading == '' || $Common->isInteger($heading) === false) $heading = 0; |
||
3892 | if ($groundspeed == '' || $Common->isInteger($groundspeed) === false) $groundspeed = 0; |
||
3893 | if (!isset($aircraft_owner)) $aircraft_owner = NULL; |
||
3894 | $query = "INSERT INTO spotter_output (flightaware_id, ident, registration, airline_name, airline_icao, airline_country, airline_type, aircraft_icao, 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,highlight,ModeS, pilot_id, pilot_name, verticalrate, owner_name, ground, format_source, source_name) |
||
3895 | VALUES (:flightaware_id,:ident,:registration,:airline_name,:airline_icao,:airline_country,:airline_type,:aircraft_icao,: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, :highlight, :ModeS, :pilot_id, :pilot_name, :verticalrate, :owner_name,:ground, :format_source, :source_name)"; |
||
3896 | |||
3897 | $airline_name = $airline_array[0]['name']; |
||
3898 | $airline_icao = $airline_array[0]['icao']; |
||
3899 | $airline_country = $airline_array[0]['country']; |
||
3900 | $airline_type = $airline_array[0]['type']; |
||
3901 | if ($airline_type == '') { |
||
3902 | $timeelapsed = microtime(true); |
||
3903 | $airline_type = $this->getAircraftTypeBymodeS($ModeS); |
||
3904 | if ($globalDebugTimeElapsed) echo 'ADD SPOTTER DATA : Time elapsed for getAircraftTypeBymodes : '.round(microtime(true)-$timeelapsed,2).'s'."\n"; |
||
3905 | } |
||
3906 | if ($airline_type == null) $airline_type = ''; |
||
3907 | $aircraft_type = $aircraft_array[0]['type']; |
||
3908 | $aircraft_manufacturer = $aircraft_array[0]['manufacturer']; |
||
3909 | $departure_airport_name = $departure_airport_array[0]['name']; |
||
3910 | $departure_airport_city = $departure_airport_array[0]['city']; |
||
3911 | $departure_airport_country = $departure_airport_array[0]['country']; |
||
3912 | |||
3913 | $arrival_airport_name = $arrival_airport_array[0]['name']; |
||
3914 | $arrival_airport_city = $arrival_airport_array[0]['city']; |
||
3915 | $arrival_airport_country = $arrival_airport_array[0]['country']; |
||
3916 | $query_values = array(':flightaware_id' => $flightaware_id,':ident' => $ident, ':registration' => $registration,':airline_name' => $airline_name,':airline_icao' => $airline_icao,':airline_country' => $airline_country,':airline_type' => $airline_type,':aircraft_icao' => $aircraft_icao,':aircraft_type' => $aircraft_type,':aircraft_manufacturer' => $aircraft_manufacturer,':departure_airport_icao' => $departure_airport_icao,':departure_airport_name' => $departure_airport_name,':departure_airport_city' => $departure_airport_city,':departure_airport_country' => $departure_airport_country,':arrival_airport_icao' => $arrival_airport_icao,':arrival_airport_name' => $arrival_airport_name,':arrival_airport_city' => $arrival_airport_city,':arrival_airport_country' => $arrival_airport_country,':latitude' => $latitude,':longitude' => $longitude, ':waypoints' => $waypoints,':altitude' => $altitude,':heading' => $heading,':groundspeed' => $groundspeed,':date' => $date,':departure_airport_time' => $departure_airport_time,':arrival_airport_time' => $arrival_airport_time, ':squawk' => $squawk, ':route_stop' => $route_stop, ':highlight' => $highlight, ':ModeS' => $ModeS, ':pilot_id' => $pilot_id, ':pilot_name' => $pilot_name, ':verticalrate' => $verticalrate, ':owner_name' => $aircraft_owner, ':format_source' => $format_source, ':ground' => $ground, ':source_name' => $source_name); |
||
3917 | |||
3918 | try { |
||
3919 | |||
3920 | $sth = $this->db->prepare($query); |
||
3921 | $sth->execute($query_values); |
||
3922 | $this->db = null; |
||
3923 | } catch (PDOException $e) { |
||
3924 | return "error : ".$e->getMessage(); |
||
3925 | } |
||
3926 | |||
3927 | return "success"; |
||
3928 | |||
3929 | } |
||
3930 | |||
3931 | |||
3932 | /** |
||
3933 | * Gets the aircraft ident within the last hour |
||
3934 | * |
||
3935 | * @return String the ident |
||
3936 | * |
||
3937 | */ |
||
3938 | public function getIdentFromLastHour($ident) |
||
3939 | { |
||
3940 | global $globalDBdriver, $globalTimezone; |
||
3941 | if ($globalDBdriver == 'mysql') { |
||
3942 | $query = "SELECT spotter_output.ident FROM spotter_output |
||
3943 | WHERE spotter_output.ident = :ident |
||
3944 | AND spotter_output.date >= DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 HOUR) |
||
3945 | AND spotter_output.date < UTC_TIMESTAMP()"; |
||
3946 | $query_data = array(':ident' => $ident); |
||
3947 | } else { |
||
3948 | $query = "SELECT spotter_output.ident FROM spotter_output |
||
3949 | WHERE spotter_output.ident = :ident |
||
3950 | AND spotter_output.date >= now() AT TIME ZONE 'UTC' - INTERVAL '1 HOURS' |
||
3951 | AND spotter_output.date < now() AT TIME ZONE 'UTC'"; |
||
3952 | $query_data = array(':ident' => $ident); |
||
3953 | } |
||
3954 | |||
3955 | $sth = $this->db->prepare($query); |
||
3956 | $sth->execute($query_data); |
||
3957 | $ident_result=''; |
||
3958 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
3959 | { |
||
3960 | $ident_result = $row['ident']; |
||
3961 | } |
||
3962 | |||
3963 | return $ident_result; |
||
3964 | } |
||
3965 | |||
3966 | |||
3967 | /** |
||
3968 | * Gets the aircraft data from the last 20 seconds |
||
3969 | * |
||
3970 | * @return Array the spotter data |
||
3971 | * |
||
3972 | */ |
||
3973 | public function getRealTimeData($q = '') |
||
3974 | { |
||
3975 | global $globalDBdriver; |
||
3976 | $additional_query = ''; |
||
3977 | if ($q != "") |
||
3978 | { |
||
3979 | if (!is_string($q)) |
||
3980 | { |
||
3981 | return false; |
||
3982 | } else { |
||
3983 | $q_array = explode(" ", $q); |
||
3984 | foreach ($q_array as $q_item){ |
||
3985 | $q_item = filter_var($q_item,FILTER_SANITIZE_STRING); |
||
3986 | $additional_query .= " AND ("; |
||
3987 | $additional_query .= "(spotter_output.aircraft_icao like '%".$q_item."%') OR "; |
||
3988 | $additional_query .= "(spotter_output.aircraft_name like '%".$q_item."%') OR "; |
||
3989 | $additional_query .= "(spotter_output.aircraft_manufacturer like '%".$q_item."%') OR "; |
||
3990 | $additional_query .= "(spotter_output.airline_icao like '%".$q_item."%') OR "; |
||
3991 | $additional_query .= "(spotter_output.departure_airport_icao like '%".$q_item."%') OR "; |
||
3992 | $additional_query .= "(spotter_output.arrival_airport_icao like '%".$q_item."%') OR "; |
||
3993 | $additional_query .= "(spotter_output.registration like '%".$q_item."%') OR "; |
||
3994 | $additional_query .= "(spotter_output.ident like '%".$q_item."%')"; |
||
3995 | $additional_query .= ")"; |
||
3996 | } |
||
3997 | } |
||
3998 | } |
||
3999 | if ($globalDBdriver == 'mysql') { |
||
4000 | $query = "SELECT spotter_output.* FROM spotter_output |
||
4001 | WHERE spotter_output.date >= DATE_SUB(UTC_TIMESTAMP(),INTERVAL 20 SECOND) ".$additional_query." |
||
4002 | AND spotter_output.date < UTC_TIMESTAMP()"; |
||
4003 | } else { |
||
4004 | $query = "SELECT spotter_output.* FROM spotter_output |
||
4005 | WHERE spotter_output.date::timestamp >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '20 SECONDS' ".$additional_query." |
||
4006 | AND spotter_output.date::timestamp < CURRENT_TIMESTAMP AT TIME ZONE 'UTC'"; |
||
4007 | } |
||
4008 | $spotter_array = $this->getDataFromDB($query, array()); |
||
4009 | |||
4010 | return $spotter_array; |
||
4011 | } |
||
4012 | |||
4013 | |||
4014 | |||
4015 | /** |
||
4016 | * Gets all airlines that have flown over |
||
4017 | * |
||
4018 | * @return Array the airline list |
||
4019 | * |
||
4020 | */ |
||
4021 | public function countAllAirlines($limit = true, $olderthanmonths = 0, $sincedate = '',$filters = array(), $year = '', $month = '', $day = '') |
||
4022 | { |
||
4023 | global $globalDBdriver; |
||
4024 | $filter_query = $this->getFilter($filters,true,true); |
||
4025 | $query = "SELECT DISTINCT spotter_output.airline_name, spotter_output.airline_icao, spotter_output.airline_country, COUNT(spotter_output.airline_name) AS airline_count |
||
4026 | FROM spotter_output".$filter_query." spotter_output.airline_name <> '' AND spotter_output.airline_icao <> 'NA'"; |
||
4027 | if ($olderthanmonths > 0) { |
||
4028 | if ($globalDBdriver == 'mysql') { |
||
4029 | $query .= ' AND spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$olderthanmonths.' MONTH)'; |
||
4030 | } else { |
||
4031 | $query .= " AND spotter_output.date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$olderthanmonths." MONTHS'"; |
||
4032 | } |
||
4033 | } |
||
4034 | if ($sincedate != '') { |
||
4035 | if ($globalDBdriver == 'mysql') { |
||
4036 | $query .= " AND spotter_output.date > '".$sincedate."'"; |
||
4037 | } else { |
||
4038 | $query .= " AND spotter_output.date > CAST('".$sincedate."' AS TIMESTAMP)"; |
||
4039 | } |
||
4040 | } |
||
4041 | $query_values = array(); |
||
4042 | if ($year != '') { |
||
4043 | if ($globalDBdriver == 'mysql') { |
||
4044 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
4045 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
4046 | } else { |
||
4047 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
4048 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
4049 | } |
||
4050 | } |
||
4051 | if ($month != '') { |
||
4052 | if ($globalDBdriver == 'mysql') { |
||
4053 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
4054 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
4055 | } else { |
||
4056 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
4057 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
4058 | } |
||
4059 | } |
||
4060 | if ($day != '') { |
||
4061 | if ($globalDBdriver == 'mysql') { |
||
4062 | $query .= " AND DAY(spotter_output.date) = :day"; |
||
4063 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
4064 | } else { |
||
4065 | $query .= " AND EXTRACT(DAY FROM spotter_output.date) = :day"; |
||
4066 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
4067 | } |
||
4068 | } |
||
4069 | $query .= " GROUP BY spotter_output.airline_name,spotter_output.airline_icao, spotter_output.airline_country ORDER BY airline_count DESC"; |
||
4070 | if ($limit) $query .= " LIMIT 10 OFFSET 0"; |
||
4071 | |||
4072 | $sth = $this->db->prepare($query); |
||
4073 | $sth->execute($query_values); |
||
4074 | $airline_array = array(); |
||
4075 | $temp_array = array(); |
||
4076 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
4077 | { |
||
4078 | $temp_array['airline_name'] = $row['airline_name']; |
||
4079 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
4080 | $temp_array['airline_count'] = $row['airline_count']; |
||
4081 | $temp_array['airline_country'] = $row['airline_country']; |
||
4082 | $airline_array[] = $temp_array; |
||
4083 | } |
||
4084 | return $airline_array; |
||
4085 | } |
||
4086 | |||
4087 | /** |
||
4088 | * Gets all pilots that have flown over |
||
4089 | * |
||
4090 | * @return Array the pilots list |
||
4091 | * |
||
4092 | */ |
||
4093 | public function countAllPilots($limit = true, $olderthanmonths = 0, $sincedate = '',$filters = array(),$year = '', $month = '',$day = '') |
||
4094 | { |
||
4095 | global $globalDBdriver; |
||
4096 | $filter_query = $this->getFilter($filters,true,true); |
||
4097 | $query = "SELECT DISTINCT spotter_output.pilot_id, s.pilot_name, COUNT(spotter_output.pilot_id) AS pilot_count, spotter_output.format_source |
||
4098 | FROM spotter_output LEFT JOIN (SELECT DISTINCT pilot_id, pilot_name, max(date) as date FROM spotter_output GROUP BY pilot_id, pilot_name) s ON s.pilot_id = spotter_output.pilot_id".$filter_query." spotter_output.pilot_id <> ''"; |
||
4099 | if ($olderthanmonths > 0) { |
||
4100 | if ($globalDBdriver == 'mysql') { |
||
4101 | $query .= ' AND spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$olderthanmonths.' MONTH)'; |
||
4102 | } else { |
||
4103 | $query .= " AND spotter_output.date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$olderthanmonths." MONTHS'"; |
||
4104 | } |
||
4105 | } |
||
4106 | if ($sincedate != '') { |
||
4107 | if ($globalDBdriver == 'mysql') { |
||
4108 | $query .= " AND spotter_output.date > '".$sincedate."'"; |
||
4109 | } else { |
||
4110 | $query .= " AND spotter_output.date > CAST('".$sincedate."' AS TIMESTAMP)"; |
||
4111 | } |
||
4112 | } |
||
4113 | $query_values = array(); |
||
4114 | if ($year != '') { |
||
4115 | if ($globalDBdriver == 'mysql') { |
||
4116 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
4117 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
4118 | } else { |
||
4119 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
4120 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
4121 | } |
||
4122 | } |
||
4123 | if ($month != '') { |
||
4124 | if ($globalDBdriver == 'mysql') { |
||
4125 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
4126 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
4127 | } else { |
||
4128 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
4129 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
4130 | } |
||
4131 | } |
||
4132 | if ($day != '') { |
||
4133 | if ($globalDBdriver == 'mysql') { |
||
4134 | $query .= " AND DAY(spotter_output.date) = :day"; |
||
4135 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
4136 | } else { |
||
4137 | $query .= " AND EXTRACT(DAY FROM spotter_output.date) = :day"; |
||
4138 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
4139 | } |
||
4140 | } |
||
4141 | |||
4142 | $query .= " GROUP BY spotter_output.pilot_id,s.pilot_name,spotter_output.format_source ORDER BY pilot_count DESC"; |
||
4143 | if ($limit) $query .= " LIMIT 10 OFFSET 0"; |
||
4144 | |||
4145 | |||
4146 | $sth = $this->db->prepare($query); |
||
4147 | $sth->execute($query_values); |
||
4148 | $airline_array = array(); |
||
4149 | $temp_array = array(); |
||
4150 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
4151 | { |
||
4152 | $temp_array['pilot_name'] = $row['pilot_name']; |
||
4153 | $temp_array['pilot_id'] = $row['pilot_id']; |
||
4154 | $temp_array['pilot_count'] = $row['pilot_count']; |
||
4155 | $temp_array['format_source'] = $row['format_source']; |
||
4156 | $airline_array[] = $temp_array; |
||
4157 | } |
||
4158 | return $airline_array; |
||
4159 | } |
||
4160 | |||
4161 | /** |
||
4162 | * Gets all pilots that have flown over |
||
4163 | * |
||
4164 | * @return Array the pilots list |
||
4165 | * |
||
4166 | */ |
||
4167 | public function countAllPilotsByAirlines($limit = true, $olderthanmonths = 0, $sincedate = '') |
||
4168 | { |
||
4169 | global $globalDBdriver; |
||
4170 | $query = "SELECT DISTINCT spotter_output.airline_icao, spotter_output.pilot_id, spotter_output.pilot_name, COUNT(spotter_output.pilot_id) AS pilot_count, spotter_output.format_source |
||
4171 | FROM spotter_output WHERE spotter_output.pilot_id <> '' "; |
||
4172 | if ($olderthanmonths > 0) { |
||
4173 | if ($globalDBdriver == 'mysql') { |
||
4174 | $query .= 'AND spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$olderthanmonths.' MONTH) '; |
||
4175 | } else { |
||
4176 | $query .= "AND spotter_output.date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$olderthanmonths." MONTHS' "; |
||
4177 | } |
||
4178 | } |
||
4179 | if ($sincedate != '') { |
||
4180 | if ($globalDBdriver == 'mysql') { |
||
4181 | $query .= "AND spotter_output.date > '".$sincedate."' "; |
||
4182 | } else { |
||
4183 | $query .= "AND spotter_output.date > CAST('".$sincedate."' AS TIMESTAMP)"; |
||
4184 | } |
||
4185 | } |
||
4186 | $query .= "GROUP BY spotter_output.airline_icao, spotter_output.pilot_id,spotter_output.pilot_name,spotter_output.format_source ORDER BY pilot_count DESC"; |
||
4187 | if ($limit) $query .= " LIMIT 10 OFFSET 0"; |
||
4188 | |||
4189 | |||
4190 | $sth = $this->db->prepare($query); |
||
4191 | $sth->execute(); |
||
4192 | |||
4193 | $airline_array = array(); |
||
4194 | $temp_array = array(); |
||
4195 | |||
4196 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
4197 | { |
||
4198 | $temp_array['pilot_name'] = $row['pilot_name']; |
||
4199 | $temp_array['pilot_id'] = $row['pilot_id']; |
||
4200 | $temp_array['pilot_count'] = $row['pilot_count']; |
||
4201 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
4202 | $temp_array['format_source'] = $row['format_source']; |
||
4203 | $airline_array[] = $temp_array; |
||
4204 | } |
||
4205 | return $airline_array; |
||
4206 | } |
||
4207 | |||
4208 | /** |
||
4209 | * Gets all owner that have flown over |
||
4210 | * |
||
4211 | * @return Array the pilots list |
||
4212 | * |
||
4213 | */ |
||
4214 | public function countAllOwners($limit = true, $olderthanmonths = 0, $sincedate = '',$filters = array(),$year = '',$month = '',$day = '') |
||
4215 | { |
||
4216 | global $globalDBdriver; |
||
4217 | $filter_query = $this->getFilter($filters,true,true); |
||
4218 | $query = "SELECT DISTINCT spotter_output.owner_name, COUNT(spotter_output.owner_name) AS owner_count |
||
4219 | FROM spotter_output".$filter_query." spotter_output.owner_name <> '' AND spotter_output.owner_name IS NOT NULL"; |
||
4220 | if ($olderthanmonths > 0) { |
||
4221 | if ($globalDBdriver == 'mysql') { |
||
4222 | $query .= ' AND spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$olderthanmonths.' MONTH)'; |
||
4223 | } else { |
||
4224 | $query .= " AND spotter_output.date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$olderthanmonths." MONTHS'"; |
||
4225 | } |
||
4226 | } |
||
4227 | if ($sincedate != '') { |
||
4228 | if ($globalDBdriver == 'mysql') { |
||
4229 | $query .= " AND spotter_output.date > '".$sincedate."' "; |
||
4230 | } else { |
||
4231 | $query .= " AND spotter_output.date > CAST('".$sincedate."' AS TIMESTAMP)"; |
||
4232 | } |
||
4233 | } |
||
4234 | $query_values = array(); |
||
4235 | if ($year != '') { |
||
4236 | if ($globalDBdriver == 'mysql') { |
||
4237 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
4238 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
4239 | } else { |
||
4240 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
4241 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
4242 | } |
||
4243 | } |
||
4244 | if ($month != '') { |
||
4245 | if ($globalDBdriver == 'mysql') { |
||
4246 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
4247 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
4248 | } else { |
||
4249 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
4250 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
4251 | } |
||
4252 | } |
||
4253 | if ($day != '') { |
||
4254 | if ($globalDBdriver == 'mysql') { |
||
4255 | $query .= " AND DAY(spotter_output.date) = :day"; |
||
4256 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
4257 | } else { |
||
4258 | $query .= " AND EXTRACT(DAY FROM spotter_output.date) = :day"; |
||
4259 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
4260 | } |
||
4261 | } |
||
4262 | $query .= " GROUP BY spotter_output.owner_name ORDER BY owner_count DESC"; |
||
4263 | if ($limit) $query .= " LIMIT 10 OFFSET 0"; |
||
4264 | |||
4265 | $sth = $this->db->prepare($query); |
||
4266 | $sth->execute($query_values); |
||
4267 | $airline_array = array(); |
||
4268 | $temp_array = array(); |
||
4269 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
4270 | { |
||
4271 | $temp_array['owner_name'] = $row['owner_name']; |
||
4272 | $temp_array['owner_count'] = $row['owner_count']; |
||
4273 | $airline_array[] = $temp_array; |
||
4274 | } |
||
4275 | return $airline_array; |
||
4276 | } |
||
4277 | |||
4278 | /** |
||
4279 | * Gets all owner that have flown over |
||
4280 | * |
||
4281 | * @return Array the pilots list |
||
4282 | * |
||
4283 | */ |
||
4284 | public function countAllOwnersByAirlines($limit = true, $olderthanmonths = 0, $sincedate = '',$filters = array()) |
||
4285 | { |
||
4286 | global $globalDBdriver; |
||
4287 | $filter_query = $this->getFilter($filters,true,true); |
||
4288 | $query = "SELECT DISTINCT spotter_output.airline_icao, spotter_output.owner_name, COUNT(spotter_output.owner_name) AS owner_count |
||
4289 | FROM spotter_output".$filter_query." spotter_output.owner_name <> '' AND spotter_output.owner_name IS NOT NULL "; |
||
4290 | if ($olderthanmonths > 0) { |
||
4291 | if ($globalDBdriver == 'mysql') { |
||
4292 | $query .= 'AND spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$olderthanmonths.' MONTH) '; |
||
4293 | } else { |
||
4294 | $query .= "AND spotter_output.date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$olderthanmonths." MONTHS' "; |
||
4295 | } |
||
4296 | } |
||
4297 | if ($sincedate != '') { |
||
4298 | if ($globalDBdriver == 'mysql') { |
||
4299 | $query .= "AND spotter_output.date > '".$sincedate."' "; |
||
4300 | } else { |
||
4301 | $query .= "AND spotter_output.date > CAST('".$sincedate."' AS TIMESTAMP)"; |
||
4302 | } |
||
4303 | } |
||
4304 | $query .= "GROUP BY spotter_output.airline_icao, spotter_output.owner_name ORDER BY owner_count DESC"; |
||
4305 | if ($limit) $query .= " LIMIT 10 OFFSET 0"; |
||
4306 | |||
4307 | |||
4308 | $sth = $this->db->prepare($query); |
||
4309 | $sth->execute(); |
||
4310 | |||
4311 | $airline_array = array(); |
||
4312 | $temp_array = array(); |
||
4313 | |||
4314 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
4315 | { |
||
4316 | $temp_array['owner_name'] = $row['owner_name']; |
||
4317 | $temp_array['owner_count'] = $row['owner_count']; |
||
4318 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
4319 | $airline_array[] = $temp_array; |
||
4320 | } |
||
4321 | return $airline_array; |
||
4322 | } |
||
4323 | |||
4324 | /** |
||
4325 | * Gets all airlines that have flown over by aircraft |
||
4326 | * |
||
4327 | * @return Array the airline list |
||
4328 | * |
||
4329 | */ |
||
4330 | public function countAllAirlinesByAircraft($aircraft_icao,$filters = array()) |
||
4331 | { |
||
4332 | $aircraft_icao = filter_var($aircraft_icao,FILTER_SANITIZE_STRING); |
||
4333 | $filter_query = $this->getFilter($filters,true,true); |
||
4334 | $query = "SELECT DISTINCT spotter_output.airline_name, spotter_output.airline_icao, spotter_output.airline_country, COUNT(spotter_output.airline_name) AS airline_count |
||
4335 | FROM spotter_output".$filter_query." spotter_output.airline_name <> '' AND spotter_output.aircraft_icao = :aircraft_icao |
||
4336 | GROUP BY spotter_output.airline_name, spotter_output.airline_icao, spotter_output.airline_country |
||
4337 | ORDER BY airline_count DESC"; |
||
4338 | |||
4339 | |||
4340 | $sth = $this->db->prepare($query); |
||
4341 | $sth->execute(array(':aircraft_icao' => $aircraft_icao)); |
||
4342 | |||
4343 | $airline_array = array(); |
||
4344 | $temp_array = array(); |
||
4345 | |||
4346 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
4347 | { |
||
4348 | $temp_array['airline_name'] = $row['airline_name']; |
||
4349 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
4350 | $temp_array['airline_count'] = $row['airline_count']; |
||
4351 | $temp_array['airline_country'] = $row['airline_country']; |
||
4352 | |||
4353 | $airline_array[] = $temp_array; |
||
4354 | } |
||
4355 | |||
4356 | return $airline_array; |
||
4357 | } |
||
4358 | |||
4359 | |||
4360 | /** |
||
4361 | * Gets all airline countries that have flown over by aircraft |
||
4362 | * |
||
4363 | * @return Array the airline country list |
||
4364 | * |
||
4365 | */ |
||
4366 | public function countAllAirlineCountriesByAircraft($aircraft_icao,$filters = array()) |
||
4367 | { |
||
4368 | $aircraft_icao = filter_var($aircraft_icao,FILTER_SANITIZE_STRING); |
||
4369 | $filter_query = $this->getFilter($filters,true,true); |
||
4370 | $query = "SELECT DISTINCT spotter_output.airline_country, COUNT(spotter_output.airline_country) AS airline_country_count, countries.iso3 AS airline_country_iso3 |
||
4371 | FROM spotter_output, countries ".$filter_query." countries.name = spotter_output.airline_country AND spotter_output.airline_country <> '' AND spotter_output.aircraft_icao = :aircraft_icao |
||
4372 | GROUP BY spotter_output.airline_country, countries.iso3 |
||
4373 | ORDER BY airline_country_count DESC |
||
4374 | LIMIT 10 OFFSET 0"; |
||
4375 | |||
4376 | |||
4377 | $sth = $this->db->prepare($query); |
||
4378 | $sth->execute(array(':aircraft_icao' => $aircraft_icao)); |
||
4379 | |||
4380 | $airline_country_array = array(); |
||
4381 | $temp_array = array(); |
||
4382 | |||
4383 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
4384 | { |
||
4385 | $temp_array['airline_country_count'] = $row['airline_country_count']; |
||
4386 | $temp_array['airline_country'] = $row['airline_country']; |
||
4387 | $temp_array['airline_country_iso3'] = $row['airline_country_iso3']; |
||
4388 | |||
4389 | $airline_country_array[] = $temp_array; |
||
4390 | } |
||
4391 | return $airline_country_array; |
||
4392 | } |
||
4393 | |||
4394 | |||
4395 | |||
4396 | |||
4397 | /** |
||
4398 | * Gets all airlines that have flown over by airport |
||
4399 | * |
||
4400 | * @return Array the airline list |
||
4401 | * |
||
4402 | */ |
||
4403 | public function countAllAirlinesByAirport($airport_icao,$filters = array()) |
||
4404 | { |
||
4405 | $airport_icao = filter_var($airport_icao,FILTER_SANITIZE_STRING); |
||
4406 | $filter_query = $this->getFilter($filters,true,true); |
||
4407 | $query = "SELECT DISTINCT spotter_output.airline_name, spotter_output.airline_icao, spotter_output.airline_country, COUNT(spotter_output.airline_name) AS airline_count |
||
4408 | FROM spotter_output".$filter_query." spotter_output.airline_name <> '' AND (spotter_output.departure_airport_icao = :airport_icao OR spotter_output.arrival_airport_icao = :airport_icao ) |
||
4409 | GROUP BY spotter_output.airline_name, spotter_output.airline_icao, spotter_output.airline_country |
||
4410 | ORDER BY airline_count DESC"; |
||
4411 | |||
4412 | |||
4413 | $sth = $this->db->prepare($query); |
||
4414 | $sth->execute(array(':airport_icao' => $airport_icao)); |
||
4415 | |||
4416 | $airline_array = array(); |
||
4417 | $temp_array = array(); |
||
4418 | |||
4419 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
4420 | { |
||
4421 | $temp_array['airline_name'] = $row['airline_name']; |
||
4422 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
4423 | $temp_array['airline_count'] = $row['airline_count']; |
||
4424 | $temp_array['airline_country'] = $row['airline_country']; |
||
4425 | |||
4426 | $airline_array[] = $temp_array; |
||
4427 | } |
||
4428 | return $airline_array; |
||
4429 | } |
||
4430 | |||
4431 | |||
4432 | /** |
||
4433 | * Gets all airline countries that have flown over by airport icao |
||
4434 | * |
||
4435 | * @return Array the airline country list |
||
4436 | * |
||
4437 | */ |
||
4438 | public function countAllAirlineCountriesByAirport($airport_icao,$filters = array()) |
||
4439 | { |
||
4440 | $airport_icao = filter_var($airport_icao,FILTER_SANITIZE_STRING); |
||
4441 | $filter_query = $this->getFilter($filters,true,true); |
||
4442 | $query = "SELECT DISTINCT spotter_output.airline_country, COUNT(spotter_output.airline_country) AS airline_country_count, countries.iso3 AS airline_country_iso3 |
||
4443 | FROM countries, spotter_output".$filter_query." countries.name = spotter_output.airline_country AND spotter_output.airline_country <> '' AND (spotter_output.departure_airport_icao = :airport_icao OR spotter_output.arrival_airport_icao = :airport_icao ) |
||
4444 | GROUP BY spotter_output.airline_country, countries.iso3 |
||
4445 | ORDER BY airline_country_count DESC |
||
4446 | LIMIT 10 OFFSET 0"; |
||
4447 | |||
4448 | |||
4449 | $sth = $this->db->prepare($query); |
||
4450 | $sth->execute(array(':airport_icao' => $airport_icao)); |
||
4451 | |||
4452 | $airline_country_array = array(); |
||
4453 | $temp_array = array(); |
||
4454 | |||
4455 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
4456 | { |
||
4457 | $temp_array['airline_country_count'] = $row['airline_country_count']; |
||
4458 | $temp_array['airline_country'] = $row['airline_country']; |
||
4459 | $temp_array['airline_country_iso3'] = $row['airline_country_iso3']; |
||
4460 | |||
4461 | $airline_country_array[] = $temp_array; |
||
4462 | } |
||
4463 | return $airline_country_array; |
||
4464 | } |
||
4465 | |||
4466 | |||
4467 | /** |
||
4468 | * Gets all airlines that have flown over by aircraft manufacturer |
||
4469 | * |
||
4470 | * @return Array the airline list |
||
4471 | * |
||
4472 | */ |
||
4473 | public function countAllAirlinesByManufacturer($aircraft_manufacturer,$filters = array()) |
||
4474 | { |
||
4475 | $aircraft_manufacturer = filter_var($aircraft_manufacturer,FILTER_SANITIZE_STRING); |
||
4476 | $filter_query = $this->getFilter($filters,true,true); |
||
4477 | $query = "SELECT DISTINCT spotter_output.airline_name, spotter_output.airline_icao, spotter_output.airline_country, COUNT(spotter_output.airline_name) AS airline_count |
||
4478 | FROM spotter_output".$filter_query." spotter_output.aircraft_manufacturer = :aircraft_manufacturer |
||
4479 | GROUP BY spotter_output.airline_name |
||
4480 | ORDER BY airline_count DESC"; |
||
4481 | |||
4482 | $sth = $this->db->prepare($query); |
||
4483 | $sth->execute(array(':aircraft_manufacturer' => $aircraft_manufacturer)); |
||
4484 | |||
4485 | $airline_array = array(); |
||
4486 | $temp_array = array(); |
||
4487 | |||
4488 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
4489 | { |
||
4490 | $temp_array['airline_name'] = $row['airline_name']; |
||
4491 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
4492 | $temp_array['airline_count'] = $row['airline_count']; |
||
4493 | $temp_array['airline_country'] = $row['airline_country']; |
||
4494 | |||
4495 | $airline_array[] = $temp_array; |
||
4496 | } |
||
4497 | return $airline_array; |
||
4498 | } |
||
4499 | |||
4500 | |||
4501 | |||
4502 | /** |
||
4503 | * Gets all airline countries that have flown over by aircraft manufacturer |
||
4504 | * |
||
4505 | * @return Array the airline country list |
||
4506 | * |
||
4507 | */ |
||
4508 | public function countAllAirlineCountriesByManufacturer($aircraft_manufacturer,$filters = array()) |
||
4509 | { |
||
4510 | $aircraft_manufacturer = filter_var($aircraft_manufacturer,FILTER_SANITIZE_STRING); |
||
4511 | $filter_query = $this->getFilter($filters,true,true); |
||
4512 | $query = "SELECT DISTINCT spotter_output.airline_country, COUNT(spotter_output.airline_country) AS airline_country_count |
||
4513 | FROM spotter_output".$filter_query." spotter_output.airline_country <> '' AND spotter_output.aircraft_manufacturer = :aircraft_manufacturer |
||
4514 | GROUP BY spotter_output.airline_country |
||
4515 | ORDER BY airline_country_count DESC |
||
4516 | LIMIT 10 OFFSET 0"; |
||
4517 | |||
4518 | |||
4519 | $sth = $this->db->prepare($query); |
||
4520 | $sth->execute(array(':aircraft_manufacturer' => $aircraft_manufacturer)); |
||
4521 | |||
4522 | $airline_country_array = array(); |
||
4523 | $temp_array = array(); |
||
4524 | |||
4525 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
4526 | { |
||
4527 | $temp_array['airline_country_count'] = $row['airline_country_count']; |
||
4528 | $temp_array['airline_country'] = $row['airline_country']; |
||
4529 | $airline_country_array[] = $temp_array; |
||
4530 | } |
||
4531 | return $airline_country_array; |
||
4532 | } |
||
4533 | |||
4534 | |||
4535 | /** |
||
4536 | * Gets all airlines that have flown over by date |
||
4537 | * |
||
4538 | * @return Array the airline list |
||
4539 | * |
||
4540 | */ |
||
4541 | public function countAllAirlinesByDate($date,$filters = array()) |
||
4542 | { |
||
4543 | global $globalTimezone, $globalDBdriver; |
||
4544 | $filter_query = $this->getFilter($filters,true,true); |
||
4545 | $date = filter_var($date,FILTER_SANITIZE_STRING); |
||
4546 | if ($globalTimezone != '') { |
||
4547 | date_default_timezone_set($globalTimezone); |
||
4548 | $datetime = new DateTime($date); |
||
4549 | $offset = $datetime->format('P'); |
||
4550 | } else $offset = '+00:00'; |
||
4551 | |||
4552 | if ($globalDBdriver == 'mysql') { |
||
4553 | $query = "SELECT DISTINCT spotter_output.airline_name, spotter_output.airline_icao, spotter_output.airline_country, COUNT(spotter_output.airline_name) AS airline_count |
||
4554 | FROM spotter_output".$filter_query." DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) = :date |
||
4555 | GROUP BY spotter_output.airline_name,spotter_output.airline_icao,spotter_output.airline_country |
||
4556 | ORDER BY airline_count DESC"; |
||
4557 | } else { |
||
4558 | $query = "SELECT DISTINCT spotter_output.airline_name, spotter_output.airline_icao, spotter_output.airline_country, COUNT(spotter_output.airline_name) AS airline_count |
||
4559 | FROM spotter_output".$filter_query." to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') = :date |
||
4560 | GROUP BY spotter_output.airline_name,spotter_output.airline_icao,spotter_output.airline_country |
||
4561 | ORDER BY airline_count DESC"; |
||
4562 | } |
||
4563 | |||
4564 | $sth = $this->db->prepare($query); |
||
4565 | $sth->execute(array(':date' => $date, ':offset' => $offset)); |
||
4566 | |||
4567 | $airline_array = array(); |
||
4568 | $temp_array = array(); |
||
4569 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
4570 | { |
||
4571 | $temp_array['airline_name'] = $row['airline_name']; |
||
4572 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
4573 | $temp_array['airline_count'] = $row['airline_count']; |
||
4574 | $temp_array['airline_country'] = $row['airline_country']; |
||
4575 | |||
4576 | $airline_array[] = $temp_array; |
||
4577 | } |
||
4578 | |||
4579 | return $airline_array; |
||
4580 | } |
||
4581 | |||
4582 | |||
4583 | /** |
||
4584 | * Gets all airline countries that have flown over by date |
||
4585 | * |
||
4586 | * @return Array the airline country list |
||
4587 | * |
||
4588 | */ |
||
4589 | public function countAllAirlineCountriesByDate($date,$filters = array()) |
||
4590 | { |
||
4591 | global $globalTimezone, $globalDBdriver; |
||
4592 | $filter_query = $this->getFilter($filters,true,true); |
||
4593 | $date = filter_var($date,FILTER_SANITIZE_STRING); |
||
4594 | if ($globalTimezone != '') { |
||
4595 | date_default_timezone_set($globalTimezone); |
||
4596 | $datetime = new DateTime($date); |
||
4597 | $offset = $datetime->format('P'); |
||
4598 | } else $offset = '+00:00'; |
||
4599 | |||
4600 | if ($globalDBdriver == 'mysql') { |
||
4601 | $query = "SELECT DISTINCT spotter_output.airline_country, COUNT(spotter_output.airline_country) AS airline_country_count |
||
4602 | FROM spotter_output".$filter_query." spotter_output.airline_country <> '' AND DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) = :date |
||
4603 | GROUP BY spotter_output.airline_country |
||
4604 | ORDER BY airline_country_count DESC |
||
4605 | LIMIT 10 OFFSET 0"; |
||
4606 | } else { |
||
4607 | $query = "SELECT DISTINCT spotter_output.airline_country, COUNT(spotter_output.airline_country) AS airline_country_count |
||
4608 | FROM spotter_output".$filter_query." spotter_output.airline_country <> '' AND to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') = :date |
||
4609 | GROUP BY spotter_output.airline_country |
||
4610 | ORDER BY airline_country_count DESC |
||
4611 | LIMIT 10 OFFSET 0"; |
||
4612 | } |
||
4613 | |||
4614 | $sth = $this->db->prepare($query); |
||
4615 | $sth->execute(array(':date' => $date, ':offset' => $offset)); |
||
4616 | |||
4617 | $airline_country_array = array(); |
||
4618 | $temp_array = array(); |
||
4619 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
4620 | { |
||
4621 | $temp_array['airline_country_count'] = $row['airline_country_count']; |
||
4622 | $temp_array['airline_country'] = $row['airline_country']; |
||
4623 | |||
4624 | $airline_country_array[] = $temp_array; |
||
4625 | } |
||
4626 | return $airline_country_array; |
||
4627 | } |
||
4628 | |||
4629 | |||
4630 | /** |
||
4631 | * Gets all airlines that have flown over by ident/callsign |
||
4632 | * |
||
4633 | * @return Array the airline list |
||
4634 | * |
||
4635 | */ |
||
4636 | public function countAllAirlinesByIdent($ident,$filters = array()) |
||
4637 | { |
||
4638 | $ident = filter_var($ident,FILTER_SANITIZE_STRING); |
||
4639 | $filter_query = $this->getFilter($filters,true,true); |
||
4640 | $query = "SELECT DISTINCT spotter_output.airline_name, spotter_output.airline_icao, spotter_output.airline_country, COUNT(spotter_output.airline_name) AS airline_count |
||
4641 | FROM spotter_output".$filter_query." spotter_output.ident = :ident |
||
4642 | GROUP BY spotter_output.airline_icao, spotter_output.airline_name, spotter_output.airline_country |
||
4643 | ORDER BY airline_count DESC"; |
||
4644 | |||
4645 | |||
4646 | $sth = $this->db->prepare($query); |
||
4647 | $sth->execute(array(':ident' => $ident)); |
||
4648 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
4649 | } |
||
4650 | |||
4651 | /** |
||
4652 | * Gets all airlines by owner |
||
4653 | * |
||
4654 | * @return Array the airline list |
||
4655 | * |
||
4656 | */ |
||
4657 | public function countAllAirlinesByOwner($owner,$filters = array()) |
||
4658 | { |
||
4659 | $owner = filter_var($owner,FILTER_SANITIZE_STRING); |
||
4660 | $filter_query = $this->getFilter($filters,true,true); |
||
4661 | $query = "SELECT DISTINCT spotter_output.airline_name, spotter_output.airline_icao, spotter_output.airline_country, COUNT(spotter_output.airline_name) AS airline_count |
||
4662 | FROM spotter_output".$filter_query." spotter_output.owner_name = :owner |
||
4663 | GROUP BY spotter_output.airline_icao, spotter_output.airline_name, spotter_output.airline_country |
||
4664 | ORDER BY airline_count DESC"; |
||
4665 | |||
4666 | |||
4667 | $sth = $this->db->prepare($query); |
||
4668 | $sth->execute(array(':owner' => $owner)); |
||
4669 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
4670 | } |
||
4671 | |||
4672 | /** |
||
4673 | * Gets flight duration by owner |
||
4674 | * |
||
4675 | * @return String Duration of all flights |
||
4676 | * |
||
4677 | */ |
||
4678 | public function getFlightDurationByOwner($owner,$filters = array(),$year = '',$month = '',$day = '') |
||
4679 | { |
||
4680 | global $globalDBdriver; |
||
4681 | $owner = filter_var($owner,FILTER_SANITIZE_STRING); |
||
4682 | $filter_query = $this->getFilter($filters,true,true); |
||
4683 | $query = "SELECT SUM(last_seen - date) AS duration |
||
4684 | FROM spotter_output".$filter_query." spotter_output.owner_name = :owner |
||
4685 | AND last_seen > date"; |
||
4686 | $query_values = array(); |
||
4687 | if ($year != '') { |
||
4688 | if ($globalDBdriver == 'mysql') { |
||
4689 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
4690 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
4691 | } else { |
||
4692 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
4693 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
4694 | } |
||
4695 | } |
||
4696 | if ($month != '') { |
||
4697 | if ($globalDBdriver == 'mysql') { |
||
4698 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
4699 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
4700 | } else { |
||
4701 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
4702 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
4703 | } |
||
4704 | } |
||
4705 | if ($day != '') { |
||
4706 | if ($globalDBdriver == 'mysql') { |
||
4707 | $query .= " AND DAY(spotter_output.date) = :day"; |
||
4708 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
4709 | } else { |
||
4710 | $query .= " AND EXTRACT(DAY FROM spotter_output.date) = :day"; |
||
4711 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
4712 | } |
||
4713 | } |
||
4714 | $query_values = array_merge($query_values,array(':owner' => $owner)); |
||
4715 | $sth = $this->db->prepare($query); |
||
4716 | $sth->execute($query_values); |
||
4717 | $result = $sth->fetchAll(PDO::FETCH_ASSOC); |
||
4718 | if (is_numeric($result[0]['duration'])) return gmdate('H:i:s',$result[0]['duration']); |
||
4719 | elseif ($result[0]['duration'] == '') return 0; |
||
4720 | else return $result[0]['duration']; |
||
4721 | } |
||
4722 | |||
4723 | /** |
||
4724 | * Count flights by owner |
||
4725 | * |
||
4726 | * @return String Duration of all flights |
||
4727 | * |
||
4728 | */ |
||
4729 | public function countFlightsByOwner($owner,$filters = array()) |
||
4730 | { |
||
4731 | $owner = filter_var($owner,FILTER_SANITIZE_STRING); |
||
4732 | $filter_query = $this->getFilter($filters,true,true); |
||
4733 | $query = "SELECT COUNT(*) AS nb |
||
4734 | FROM spotter_output".$filter_query." spotter_output.owner_name = :owner"; |
||
4735 | $query_values = array(); |
||
4736 | $query_values = array_merge($query_values,array(':owner' => $owner)); |
||
4737 | $sth = $this->db->prepare($query); |
||
4738 | $sth->execute($query_values); |
||
4739 | $result = $sth->fetchAll(PDO::FETCH_ASSOC); |
||
4740 | return $result[0]['nb']; |
||
4741 | } |
||
4742 | |||
4743 | /** |
||
4744 | * Count flights by pilot |
||
4745 | * |
||
4746 | * @return String Duration of all flights |
||
4747 | * |
||
4748 | */ |
||
4749 | public function countFlightsByPilot($pilot,$filters = array()) |
||
4750 | { |
||
4751 | $pilot = filter_var($pilot,FILTER_SANITIZE_STRING); |
||
4752 | $filter_query = $this->getFilter($filters,true,true); |
||
4753 | $query = "SELECT COUNT(*) AS nb |
||
4754 | FROM spotter_output".$filter_query." (spotter_output.pilot_name = :pilot OR spotter_output.pilod_id = :pilot)"; |
||
4755 | $query_values = array(); |
||
4756 | $query_values = array_merge($query_values,array(':pilot' => $pilot)); |
||
4757 | $sth = $this->db->prepare($query); |
||
4758 | $sth->execute($query_values); |
||
4759 | $result = $sth->fetchAll(PDO::FETCH_ASSOC); |
||
4760 | return $result[0]['nb']; |
||
4761 | } |
||
4762 | |||
4763 | /** |
||
4764 | * Gets flight duration by pilot |
||
4765 | * |
||
4766 | * @return String Duration of all flights |
||
4767 | * |
||
4768 | */ |
||
4769 | public function getFlightDurationByPilot($pilot,$filters = array(),$year = '',$month = '',$day = '') |
||
4770 | { |
||
4771 | global $globalDBdriver; |
||
4772 | $pilot = filter_var($pilot,FILTER_SANITIZE_STRING); |
||
4773 | $filter_query = $this->getFilter($filters,true,true); |
||
4774 | $query = "SELECT SUM(last_seen - date) AS duration |
||
4775 | FROM spotter_output".$filter_query." (spotter_output.pilot_name = :pilot OR spotter_output.pilot_id = :pilot) |
||
4776 | AND last_seen > date"; |
||
4777 | $query_values = array(); |
||
4778 | if ($year != '') { |
||
4779 | if ($globalDBdriver == 'mysql') { |
||
4780 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
4781 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
4782 | } else { |
||
4783 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
4784 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
4785 | } |
||
4786 | } |
||
4787 | if ($month != '') { |
||
4788 | if ($globalDBdriver == 'mysql') { |
||
4789 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
4790 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
4791 | } else { |
||
4792 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
4793 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
4794 | } |
||
4795 | } |
||
4796 | if ($day != '') { |
||
4797 | if ($globalDBdriver == 'mysql') { |
||
4798 | $query .= " AND DAY(spotter_output.date) = :day"; |
||
4799 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
4800 | } else { |
||
4801 | $query .= " AND EXTRACT(DAY FROM spotter_output.date) = :day"; |
||
4802 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
4803 | } |
||
4804 | } |
||
4805 | $query_values = array_merge($query_values,array(':pilot' => $pilot)); |
||
4806 | $sth = $this->db->prepare($query); |
||
4807 | $sth->execute($query_values); |
||
4808 | $result = $sth->fetchAll(PDO::FETCH_ASSOC); |
||
4809 | if (is_int($result[0]['duration'])) return gmdate('H:i:s',$result[0]['duration']); |
||
4810 | else return $result[0]['duration']; |
||
4811 | } |
||
4812 | |||
4813 | /** |
||
4814 | * Gets all airlines used by pilot |
||
4815 | * |
||
4816 | * @return Array the airline list |
||
4817 | * |
||
4818 | */ |
||
4819 | public function countAllAirlinesByPilot($pilot,$filters = array()) |
||
4820 | { |
||
4821 | $pilot = filter_var($pilot,FILTER_SANITIZE_STRING); |
||
4822 | $filter_query = $this->getFilter($filters,true,true); |
||
4823 | $query = "SELECT DISTINCT spotter_output.airline_name, spotter_output.airline_icao, spotter_output.airline_country, COUNT(spotter_output.airline_name) AS airline_count |
||
4824 | FROM spotter_output".$filter_query." (spotter_output.pilot_name = :pilot OR spotter_output.pilot_id = :pilot) |
||
4825 | GROUP BY spotter_output.airline_icao, spotter_output.airline_name, spotter_output.airline_country |
||
4826 | ORDER BY airline_count DESC"; |
||
4827 | |||
4828 | |||
4829 | $sth = $this->db->prepare($query); |
||
4830 | $sth->execute(array(':pilot' => $pilot)); |
||
4831 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
4832 | } |
||
4833 | |||
4834 | /** |
||
4835 | * Gets all airlines that have flown over by route |
||
4836 | * |
||
4837 | * @return Array the airline list |
||
4838 | * |
||
4839 | */ |
||
4840 | public function countAllAirlinesByRoute($departure_airport_icao, $arrival_airport_icao,$filters = array()) |
||
4841 | { |
||
4842 | $filter_query = $this->getFilter($filters,true,true); |
||
4843 | $departure_airport_icao = filter_var($departure_airport_icao,FILTER_SANITIZE_STRING); |
||
4844 | $arrival_airport_icao = filter_var($arrival_airport_icao,FILTER_SANITIZE_STRING); |
||
4845 | |||
4846 | $query = "SELECT DISTINCT spotter_output.airline_name, spotter_output.airline_icao, spotter_output.airline_country, COUNT(spotter_output.airline_name) AS airline_count |
||
4847 | FROM spotter_output".$filter_query." (spotter_output.departure_airport_icao = :departure_airport_icao) AND (spotter_output.arrival_airport_icao = :arrival_airport_icao) |
||
4848 | GROUP BY spotter_output.airline_name |
||
4849 | ORDER BY airline_count DESC"; |
||
4850 | |||
4851 | |||
4852 | $sth = $this->db->prepare($query); |
||
4853 | $sth->execute(array(':departure_airport_icao' => $departure_airport_icao,':arrival_airport_icao' => $arrival_airport_icao)); |
||
4854 | |||
4855 | $airline_array = array(); |
||
4856 | $temp_array = array(); |
||
4857 | |||
4858 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
4859 | { |
||
4860 | $temp_array['airline_name'] = $row['airline_name']; |
||
4861 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
4862 | $temp_array['airline_count'] = $row['airline_count']; |
||
4863 | $temp_array['airline_country'] = $row['airline_country']; |
||
4864 | |||
4865 | $airline_array[] = $temp_array; |
||
4866 | } |
||
4867 | return $airline_array; |
||
4868 | } |
||
4869 | |||
4870 | /** |
||
4871 | * Gets all airline countries that have flown over by route |
||
4872 | * |
||
4873 | * @return Array the airline country list |
||
4874 | * |
||
4875 | */ |
||
4876 | public function countAllAirlineCountriesByRoute($departure_airport_icao, $arrival_airport_icao,$filters= array()) |
||
4877 | { |
||
4878 | $filter_query = $this->getFilter($filters,true,true); |
||
4879 | $departure_airport_icao = filter_var($departure_airport_icao,FILTER_SANITIZE_STRING); |
||
4880 | $arrival_airport_icao = filter_var($arrival_airport_icao,FILTER_SANITIZE_STRING); |
||
4881 | |||
4882 | $query = "SELECT DISTINCT spotter_output.airline_country, COUNT(spotter_output.airline_country) AS airline_country_count |
||
4883 | FROM spotter_output".$filter_query." spotter_output.airline_country <> '' AND (spotter_output.departure_airport_icao = :departure_airport_icao) AND (spotter_output.arrival_airport_icao = :arrival_airport_icao) |
||
4884 | GROUP BY spotter_output.airline_country |
||
4885 | ORDER BY airline_country_count DESC |
||
4886 | LIMIT 10 OFFSET 0"; |
||
4887 | |||
4888 | |||
4889 | $sth = $this->db->prepare($query); |
||
4890 | $sth->execute(array(':departure_airport_icao' => $departure_airport_icao,':arrival_airport_icao' => $arrival_airport_icao)); |
||
4891 | |||
4892 | $airline_country_array = array(); |
||
4893 | $temp_array = array(); |
||
4894 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
4895 | { |
||
4896 | $temp_array['airline_country_count'] = $row['airline_country_count']; |
||
4897 | $temp_array['airline_country'] = $row['airline_country']; |
||
4898 | |||
4899 | $airline_country_array[] = $temp_array; |
||
4900 | } |
||
4901 | |||
4902 | return $airline_country_array; |
||
4903 | } |
||
4904 | |||
4905 | |||
4906 | /** |
||
4907 | * Gets all airlines that have flown over by country |
||
4908 | * |
||
4909 | * @return Array the airline list |
||
4910 | * |
||
4911 | */ |
||
4912 | public function countAllAirlinesByCountry($country,$filters = array()) |
||
4913 | { |
||
4914 | $country = filter_var($country,FILTER_SANITIZE_STRING); |
||
4915 | $filter_query = $this->getFilter($filters,true,true); |
||
4916 | $query = "SELECT DISTINCT spotter_output.airline_name, spotter_output.airline_icao, spotter_output.airline_country, COUNT(spotter_output.airline_name) AS airline_count |
||
4917 | FROM spotter_output".$filter_query." ((spotter_output.departure_airport_country = :country) OR (spotter_output.arrival_airport_country = :country)) OR spotter_output.airline_country = :country |
||
4918 | GROUP BY spotter_output.airline_name, spotter_output.airline_icao, spotter_output.airline_country |
||
4919 | ORDER BY airline_count DESC"; |
||
4920 | |||
4921 | |||
4922 | $sth = $this->db->prepare($query); |
||
4923 | $sth->execute(array(':country' => $country)); |
||
4924 | |||
4925 | $airline_array = array(); |
||
4926 | $temp_array = array(); |
||
4927 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
4928 | { |
||
4929 | $temp_array['airline_name'] = $row['airline_name']; |
||
4930 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
4931 | $temp_array['airline_count'] = $row['airline_count']; |
||
4932 | $temp_array['airline_country'] = $row['airline_country']; |
||
4933 | |||
4934 | $airline_array[] = $temp_array; |
||
4935 | } |
||
4936 | return $airline_array; |
||
4937 | } |
||
4938 | |||
4939 | |||
4940 | /** |
||
4941 | * Gets all airline countries that have flown over by country |
||
4942 | * |
||
4943 | * @return Array the airline country list |
||
4944 | * |
||
4945 | */ |
||
4946 | public function countAllAirlineCountriesByCountry($country,$filters = array()) |
||
4947 | { |
||
4948 | $filter_query = $this->getFilter($filters,true,true); |
||
4949 | $country = filter_var($country,FILTER_SANITIZE_STRING); |
||
4950 | $query = "SELECT DISTINCT spotter_output.airline_country, COUNT(spotter_output.airline_country) AS airline_country_count, countries.iso3 AS airline_country_iso3 |
||
4951 | FROM countries,spotter_output".$filter_query." countries.name = spotter_output.airline_country AND spotter_output.airline_country <> '' AND ((spotter_output.departure_airport_country = :country) OR (spotter_output.arrival_airport_country = :country) OR spotter_output.airline_country = :country) |
||
4952 | GROUP BY spotter_output.airline_country, countries.iso3 |
||
4953 | ORDER BY airline_country_count DESC |
||
4954 | LIMIT 10 OFFSET 0"; |
||
4955 | |||
4956 | $sth = $this->db->prepare($query); |
||
4957 | $sth->execute(array(':country' => $country)); |
||
4958 | |||
4959 | $airline_country_array = array(); |
||
4960 | $temp_array = array(); |
||
4961 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
4962 | { |
||
4963 | $temp_array['airline_country_count'] = $row['airline_country_count']; |
||
4964 | $temp_array['airline_country'] = $row['airline_country']; |
||
4965 | $temp_array['airline_country_iso3'] = $row['airline_country_iso3']; |
||
4966 | $airline_country_array[] = $temp_array; |
||
4967 | } |
||
4968 | return $airline_country_array; |
||
4969 | } |
||
4970 | |||
4971 | |||
4972 | /** |
||
4973 | * Gets all airlines countries |
||
4974 | * |
||
4975 | * @return Array the airline country list |
||
4976 | * |
||
4977 | */ |
||
4978 | public function countAllAirlineCountries($limit = true, $filters = array(), $year = '', $month = '', $day = '') |
||
4979 | { |
||
4980 | global $globalDBdriver; |
||
4981 | $filter_query = $this->getFilter($filters,true,true); |
||
4982 | $query = "SELECT DISTINCT spotter_output.airline_country, COUNT(spotter_output.airline_country) AS airline_country_count, countries.iso3 AS airline_country_iso3 |
||
4983 | FROM countries, spotter_output".$filter_query." countries.name = spotter_output.airline_country AND spotter_output.airline_country <> '' AND spotter_output.airline_country <> 'NA'"; |
||
4984 | $query_values = array(); |
||
4985 | if ($year != '') { |
||
4986 | if ($globalDBdriver == 'mysql') { |
||
4987 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
4988 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
4989 | } else { |
||
4990 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
4991 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
4992 | } |
||
4993 | } |
||
4994 | if ($month != '') { |
||
4995 | if ($globalDBdriver == 'mysql') { |
||
4996 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
4997 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
4998 | } else { |
||
4999 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
5000 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
5001 | } |
||
5002 | } |
||
5003 | if ($day != '') { |
||
5004 | if ($globalDBdriver == 'mysql') { |
||
5005 | $query .= " AND DAY(spotter_output.date) = :day"; |
||
5006 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
5007 | } else { |
||
5008 | $query .= " AND EXTRACT(DAY FROM spotter_output.date) = :day"; |
||
5009 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
5010 | } |
||
5011 | } |
||
5012 | $query .= " GROUP BY spotter_output.airline_country, countries.iso3 |
||
5013 | ORDER BY airline_country_count DESC"; |
||
5014 | if ($limit) $query .= " LIMIT 10 OFFSET 0"; |
||
5015 | |||
5016 | $sth = $this->db->prepare($query); |
||
5017 | $sth->execute($query_values); |
||
5018 | |||
5019 | $airline_array = array(); |
||
5020 | $temp_array = array(); |
||
5021 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
5022 | { |
||
5023 | $temp_array['airline_country_count'] = $row['airline_country_count']; |
||
5024 | $temp_array['airline_country'] = $row['airline_country']; |
||
5025 | $temp_array['airline_country_iso3'] = $row['airline_country_iso3']; |
||
5026 | |||
5027 | $airline_array[] = $temp_array; |
||
5028 | } |
||
5029 | return $airline_array; |
||
5030 | } |
||
5031 | |||
5032 | /** |
||
5033 | * Gets all number of flight over countries |
||
5034 | * |
||
5035 | * @return Array the airline country list |
||
5036 | * |
||
5037 | */ |
||
5038 | public function countAllFlightOverCountries($limit = true,$olderthanmonths = 0,$sincedate = '',$filters = array()) |
||
5039 | { |
||
5040 | global $globalDBdriver; |
||
5041 | //$filter_query = $this->getFilter($filters,true,true); |
||
5042 | $Connection= new Connection($this->db); |
||
5043 | if (!$Connection->tableExists('countries')) return array(); |
||
5044 | /* |
||
5045 | $query = "SELECT c.name, c.iso3, c.iso2, count(c.name) as nb |
||
5046 | FROM countries c, spotter_output s |
||
5047 | WHERE Within(GeomFromText(CONCAT('POINT(',s.longitude,' ',s.latitude,')')), ogc_geom) "; |
||
5048 | */ |
||
5049 | /* |
||
5050 | $query = "SELECT c.name, c.iso3, c.iso2, count(c.name) as nb |
||
5051 | FROM countries c, spotter_live s |
||
5052 | WHERE c.iso2 = s.over_country "; |
||
5053 | $query = "SELECT c.name, c.iso3, c.iso2, count(c.name) as nb FROM countries c INNER JOIN (SELECT DISTINCT flightaware_id,over_country FROM spottrer_live) l ON c.iso2 = l.over_country "; |
||
5054 | */ |
||
5055 | require_once('class.SpotterLive.php'); |
||
5056 | $SpotterLive = new SpotterLive(); |
||
5057 | $filter_query = $SpotterLive->getFilter($filters,true,true); |
||
5058 | $filter_query .= ' over_country IS NOT NULL'; |
||
5059 | if ($olderthanmonths > 0) { |
||
5060 | if ($globalDBdriver == 'mysql') { |
||
5061 | $filter_query .= ' AND spotter_live.date < DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$olderthanmonths.' MONTH) '; |
||
5062 | } else { |
||
5063 | $filter_query .= " AND spotter_live.date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$olderthanmonths." MONTHS'"; |
||
5064 | } |
||
5065 | } |
||
5066 | if ($sincedate != '') { |
||
5067 | if ($globalDBdriver == 'mysql') { |
||
5068 | $filter_query .= " AND spotter_live.date > '".$sincedate."' "; |
||
5069 | } else { |
||
5070 | $filter_query .= " AND spotter_live.date > CAST('".$sincedate."' AS TIMESTAMP)"; |
||
5071 | } |
||
5072 | } |
||
5073 | $query = "SELECT c.name, c.iso3, c.iso2, count(c.name) as nb FROM countries c INNER JOIN (SELECT DISTINCT flightaware_id,over_country FROM spotter_live".$filter_query.") l ON c.iso2 = l.over_country "; |
||
5074 | $query .= "GROUP BY c.name,c.iso3,c.iso2 ORDER BY nb DESC"; |
||
5075 | if ($limit) $query .= " LIMIT 10 OFFSET 0"; |
||
5076 | |||
5077 | |||
5078 | $sth = $this->db->prepare($query); |
||
5079 | $sth->execute(); |
||
5080 | |||
5081 | $flight_array = array(); |
||
5082 | $temp_array = array(); |
||
5083 | |||
5084 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
5085 | { |
||
5086 | $temp_array['flight_count'] = $row['nb']; |
||
5087 | $temp_array['flight_country'] = $row['name']; |
||
5088 | $temp_array['flight_country_iso3'] = $row['iso3']; |
||
5089 | $temp_array['flight_country_iso2'] = $row['iso2']; |
||
5090 | $flight_array[] = $temp_array; |
||
5091 | } |
||
5092 | return $flight_array; |
||
5093 | } |
||
5094 | |||
5095 | |||
5096 | /** |
||
5097 | * Gets all aircraft types that have flown over |
||
5098 | * |
||
5099 | * @return Array the aircraft list |
||
5100 | * |
||
5101 | */ |
||
5102 | public function countAllAircraftTypes($limit = true,$olderthanmonths = 0,$sincedate = '',$filters = array(),$year = '',$month = '',$day = '') |
||
5103 | { |
||
5104 | global $globalDBdriver; |
||
5105 | $filter_query = $this->getFilter($filters,true,true); |
||
5106 | $query = "SELECT spotter_output.aircraft_icao, COUNT(spotter_output.aircraft_icao) AS aircraft_icao_count, spotter_output.aircraft_name, spotter_output.aircraft_manufacturer |
||
5107 | FROM spotter_output ".$filter_query." spotter_output.aircraft_name <> '' AND spotter_output.aircraft_icao <> ''"; |
||
5108 | if ($olderthanmonths > 0) { |
||
5109 | if ($globalDBdriver == 'mysql') { |
||
5110 | $query .= ' AND spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$olderthanmonths.' MONTH)'; |
||
5111 | } else { |
||
5112 | $query .= " AND spotter_output.date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$olderthanmonths." MONTHS'"; |
||
5113 | } |
||
5114 | } |
||
5115 | if ($sincedate != '') { |
||
5116 | if ($globalDBdriver == 'mysql') { |
||
5117 | $query .= " AND spotter_output.date > '".$sincedate."'"; |
||
5118 | } else { |
||
5119 | $query .= " AND spotter_output.date > CAST('".$sincedate."' AS TIMESTAMP)"; |
||
5120 | } |
||
5121 | } |
||
5122 | $query_values = array(); |
||
5123 | if ($year != '') { |
||
5124 | if ($globalDBdriver == 'mysql') { |
||
5125 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
5126 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
5127 | } else { |
||
5128 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
5129 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
5130 | } |
||
5131 | } |
||
5132 | if ($month != '') { |
||
5133 | if ($globalDBdriver == 'mysql') { |
||
5134 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
5135 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
5136 | } else { |
||
5137 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
5138 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
5139 | } |
||
5140 | } |
||
5141 | if ($day != '') { |
||
5142 | if ($globalDBdriver == 'mysql') { |
||
5143 | $query .= " AND DAY(spotter_output.date) = :day"; |
||
5144 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
5145 | } else { |
||
5146 | $query .= " AND EXTRACT(DAY FROM spotter_output.date) = :day"; |
||
5147 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
5148 | } |
||
5149 | } |
||
5150 | |||
5151 | $query .= " GROUP BY spotter_output.aircraft_icao, spotter_output.aircraft_name, spotter_output.aircraft_manufacturer ORDER BY aircraft_icao_count DESC"; |
||
5152 | if ($limit) $query .= " LIMIT 10 OFFSET 0"; |
||
5153 | |||
5154 | $sth = $this->db->prepare($query); |
||
5155 | $sth->execute($query_values); |
||
5156 | |||
5157 | $aircraft_array = array(); |
||
5158 | $temp_array = array(); |
||
5159 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
5160 | { |
||
5161 | $temp_array['aircraft_icao'] = $row['aircraft_icao']; |
||
5162 | $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
5163 | $temp_array['aircraft_manufacturer'] = $row['aircraft_manufacturer']; |
||
5164 | $temp_array['aircraft_icao_count'] = $row['aircraft_icao_count']; |
||
5165 | $aircraft_array[] = $temp_array; |
||
5166 | } |
||
5167 | return $aircraft_array; |
||
5168 | } |
||
5169 | |||
5170 | /** |
||
5171 | * Gets all aircraft types that have flown over by airline |
||
5172 | * |
||
5173 | * @return Array the aircraft list |
||
5174 | * |
||
5175 | */ |
||
5176 | public function countAllAircraftTypesByAirlines($limit = true,$olderthanmonths = 0,$sincedate = '',$filters = array(),$year = '',$month = '', $day = '') |
||
5177 | { |
||
5178 | global $globalDBdriver; |
||
5179 | $filter_query = $this->getFilter($filters,true,true); |
||
5180 | $query = "SELECT spotter_output.airline_icao, spotter_output.aircraft_icao, COUNT(spotter_output.aircraft_icao) AS aircraft_icao_count, spotter_output.aircraft_name, spotter_output.aircraft_manufacturer |
||
5181 | FROM spotter_output".$filter_query." spotter_output.aircraft_name <> '' AND spotter_output.aircraft_icao <> '' AND spotter_output.airline_icao <>'' AND spotter_output.airline_icao <> 'NA'"; |
||
5182 | if ($olderthanmonths > 0) { |
||
5183 | if ($globalDBdriver == 'mysql') { |
||
5184 | $query .= ' AND spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$olderthanmonths.' MONTH)'; |
||
5185 | } else { |
||
5186 | $query .= " AND spotter_output.date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$olderthanmonths." MONTHS'"; |
||
5187 | } |
||
5188 | } |
||
5189 | if ($sincedate != '') { |
||
5190 | if ($globalDBdriver == 'mysql') { |
||
5191 | $query .= " AND spotter_output.date > '".$sincedate."'"; |
||
5192 | } else { |
||
5193 | $query .= " AND spotter_output.date > CAST('".$sincedate."' AS TIMESTAMP)"; |
||
5194 | } |
||
5195 | } |
||
5196 | $query_values = array(); |
||
5197 | if ($year != '') { |
||
5198 | if ($globalDBdriver == 'mysql') { |
||
5199 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
5200 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
5201 | } else { |
||
5202 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
5203 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
5204 | } |
||
5205 | } |
||
5206 | if ($month != '') { |
||
5207 | if ($globalDBdriver == 'mysql') { |
||
5208 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
5209 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
5210 | } else { |
||
5211 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
5212 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
5213 | } |
||
5214 | } |
||
5215 | if ($day != '') { |
||
5216 | if ($globalDBdriver == 'mysql') { |
||
5217 | $query .= " AND DAY(spotter_output.date) = :day"; |
||
5218 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
5219 | } else { |
||
5220 | $query .= " AND EXTRACT(DAY FROM spotter_output.date) = :day"; |
||
5221 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
5222 | } |
||
5223 | } |
||
5224 | |||
5225 | $query .= " GROUP BY spotter_output.airline_icao, spotter_output.aircraft_icao, spotter_output.aircraft_name, spotter_output.aircraft_manufacturer ORDER BY aircraft_icao_count DESC"; |
||
5226 | if ($limit) $query .= " LIMIT 10 OFFSET 0"; |
||
5227 | |||
5228 | $sth = $this->db->prepare($query); |
||
5229 | $sth->execute($query_values); |
||
5230 | |||
5231 | $aircraft_array = array(); |
||
5232 | $temp_array = array(); |
||
5233 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
5234 | { |
||
5235 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
5236 | $temp_array['aircraft_icao'] = $row['aircraft_icao']; |
||
5237 | $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
5238 | $temp_array['aircraft_manufacturer'] = $row['aircraft_manufacturer']; |
||
5239 | $temp_array['aircraft_icao_count'] = $row['aircraft_icao_count']; |
||
5240 | $aircraft_array[] = $temp_array; |
||
5241 | } |
||
5242 | return $aircraft_array; |
||
5243 | } |
||
5244 | |||
5245 | /** |
||
5246 | * Gets all aircraft types that have flown over by months |
||
5247 | * |
||
5248 | * @return Array the aircraft list |
||
5249 | * |
||
5250 | */ |
||
5251 | public function countAllAircraftTypesByMonths($limit = true,$olderthanmonths = 0,$sincedate = '',$filters = array()) |
||
5252 | { |
||
5253 | global $globalDBdriver; |
||
5254 | $filter_query = $this->getFilter($filters,true,true); |
||
5255 | $query = "SELECT EXTRACT(month from spotter_output.date) as month, EXTRACT(year from spotter_output.date) as year,spotter_output.aircraft_icao, COUNT(spotter_output.aircraft_icao) AS aircraft_icao_count, spotter_output.aircraft_name, spotter_output.aircraft_manufacturer |
||
5256 | FROM spotter_output".$filter_query." spotter_output.aircraft_name <> '' AND spotter_output.aircraft_icao <> '' AND spotter_output.airline_icao <>'' AND spotter_output.airline_icao <> 'NA' "; |
||
5257 | if ($olderthanmonths > 0) { |
||
5258 | if ($globalDBdriver == 'mysql') { |
||
5259 | $query .= 'AND spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$olderthanmonths.' MONTH) '; |
||
5260 | } else { |
||
5261 | $query .= "AND spotter_output.date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$olderthanmonths." MONTHS' "; |
||
5262 | } |
||
5263 | } |
||
5264 | if ($sincedate != '') { |
||
5265 | if ($globalDBdriver == 'mysql') { |
||
5266 | $query .= "AND spotter_output.date > '".$sincedate."' "; |
||
5267 | } else { |
||
5268 | $query .= "AND spotter_output.date > CAST('".$sincedate."' AS TIMESTAMP)"; |
||
5269 | } |
||
5270 | } |
||
5271 | |||
5272 | $query .= "GROUP BY EXTRACT(month from spotter_output.date), EXTRACT(year from spotter_output.date), spotter_output.aircraft_icao, spotter_output.aircraft_name, spotter_output.aircraft_manufacturer ORDER BY aircraft_icao_count DESC"; |
||
5273 | if ($limit) $query .= " LIMIT 10 OFFSET 0"; |
||
5274 | |||
5275 | $sth = $this->db->prepare($query); |
||
5276 | $sth->execute(); |
||
5277 | |||
5278 | $aircraft_array = array(); |
||
5279 | $temp_array = array(); |
||
5280 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
5281 | { |
||
5282 | //$temp_array['airline_icao'] = $row['airline_icao']; |
||
5283 | $temp_array['aircraft_icao'] = $row['aircraft_icao']; |
||
5284 | $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
5285 | $temp_array['aircraft_manufacturer'] = $row['aircraft_manufacturer']; |
||
5286 | $temp_array['aircraft_icao_count'] = $row['aircraft_icao_count']; |
||
5287 | $aircraft_array[] = $temp_array; |
||
5288 | } |
||
5289 | return $aircraft_array; |
||
5290 | } |
||
5291 | |||
5292 | |||
5293 | /** |
||
5294 | * Gets all aircraft registration that have flown over by aircaft icao |
||
5295 | * |
||
5296 | * @return Array the aircraft list |
||
5297 | * |
||
5298 | */ |
||
5299 | public function countAllAircraftRegistrationByAircraft($aircraft_icao,$filters = array()) |
||
5300 | { |
||
5301 | $Image = new Image($this->db); |
||
5302 | $filter_query = $this->getFilter($filters,true,true); |
||
5303 | $aircraft_icao = filter_var($aircraft_icao,FILTER_SANITIZE_STRING); |
||
5304 | |||
5305 | $query = "SELECT DISTINCT spotter_output.aircraft_icao, COUNT(spotter_output.registration) AS registration_count, spotter_output.aircraft_name, spotter_output.registration, spotter_output.airline_name |
||
5306 | FROM spotter_output".$filter_query." spotter_output.registration <> '' AND spotter_output.aircraft_icao = :aircraft_icao |
||
5307 | GROUP BY spotter_output.registration, spotter_output.aircraft_icao, spotter_output.aircraft_name, spotter_output.registration, spotter_output.airline_name |
||
5308 | ORDER BY registration_count DESC"; |
||
5309 | |||
5310 | $sth = $this->db->prepare($query); |
||
5311 | $sth->execute(array(':aircraft_icao' => $aircraft_icao)); |
||
5312 | |||
5313 | $aircraft_array = array(); |
||
5314 | $temp_array = array(); |
||
5315 | |||
5316 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
5317 | { |
||
5318 | $temp_array['aircraft_icao'] = $row['aircraft_icao']; |
||
5319 | $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
5320 | $temp_array['registration'] = $row['registration']; |
||
5321 | $temp_array['airline_name'] = $row['airline_name']; |
||
5322 | $temp_array['image_thumbnail'] = ""; |
||
5323 | if($row['registration'] != "") |
||
5324 | { |
||
5325 | $image_array = $Image->getSpotterImage($row['registration']); |
||
5326 | if (isset($image_array[0]['image_thumbnail'])) $temp_array['image_thumbnail'] = $image_array[0]['image_thumbnail']; |
||
5327 | } |
||
5328 | $temp_array['registration_count'] = $row['registration_count']; |
||
5329 | |||
5330 | $aircraft_array[] = $temp_array; |
||
5331 | } |
||
5332 | return $aircraft_array; |
||
5333 | } |
||
5334 | |||
5335 | |||
5336 | /** |
||
5337 | * Gets all aircraft types that have flown over by airline icao |
||
5338 | * |
||
5339 | * @return Array the aircraft list |
||
5340 | * |
||
5341 | */ |
||
5342 | public function countAllAircraftTypesByAirline($airline_icao,$filters = array()) |
||
5343 | { |
||
5344 | $filter_query = $this->getFilter($filters,true,true); |
||
5345 | $airline_icao = filter_var($airline_icao,FILTER_SANITIZE_STRING); |
||
5346 | $query = "SELECT DISTINCT spotter_output.aircraft_icao, COUNT(spotter_output.aircraft_icao) AS aircraft_icao_count, spotter_output.aircraft_name |
||
5347 | FROM spotter_output".$filter_query." spotter_output.aircraft_icao <> '' AND spotter_output.airline_icao = :airline_icao |
||
5348 | GROUP BY spotter_output.aircraft_name, spotter_output.aircraft_icao |
||
5349 | ORDER BY aircraft_icao_count DESC"; |
||
5350 | |||
5351 | $sth = $this->db->prepare($query); |
||
5352 | $sth->execute(array(':airline_icao' => $airline_icao)); |
||
5353 | |||
5354 | $aircraft_array = array(); |
||
5355 | $temp_array = array(); |
||
5356 | |||
5357 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
5358 | { |
||
5359 | $temp_array['aircraft_icao'] = $row['aircraft_icao']; |
||
5360 | $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
5361 | $temp_array['aircraft_icao_count'] = $row['aircraft_icao_count']; |
||
5362 | |||
5363 | $aircraft_array[] = $temp_array; |
||
5364 | } |
||
5365 | return $aircraft_array; |
||
5366 | } |
||
5367 | |||
5368 | |||
5369 | /** |
||
5370 | * Gets all aircraft registration that have flown over by airline icao |
||
5371 | * |
||
5372 | * @return Array the aircraft list |
||
5373 | * |
||
5374 | */ |
||
5375 | public function countAllAircraftRegistrationByAirline($airline_icao,$filters = array()) |
||
5376 | { |
||
5377 | $filter_query = $this->getFilter($filters,true,true); |
||
5378 | $Image = new Image($this->db); |
||
5379 | $airline_icao = filter_var($airline_icao,FILTER_SANITIZE_STRING); |
||
5380 | |||
5381 | $query = "SELECT DISTINCT spotter_output.aircraft_icao, COUNT(spotter_output.registration) AS registration_count, spotter_output.aircraft_name, spotter_output.registration, spotter_output.airline_name |
||
5382 | FROM spotter_output".$filter_query." spotter_output.registration <> '' AND spotter_output.airline_icao = :airline_icao |
||
5383 | GROUP BY spotter_output.registration, spotter_output.aircraft_icao, spotter_output.aircraft_name, spotter_output.airline_name |
||
5384 | ORDER BY registration_count DESC"; |
||
5385 | |||
5386 | $sth = $this->db->prepare($query); |
||
5387 | $sth->execute(array(':airline_icao' => $airline_icao)); |
||
5388 | |||
5389 | $aircraft_array = array(); |
||
5390 | $temp_array = array(); |
||
5391 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
5392 | { |
||
5393 | $temp_array['aircraft_icao'] = $row['aircraft_icao']; |
||
5394 | $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
5395 | $temp_array['registration'] = $row['registration']; |
||
5396 | $temp_array['airline_name'] = $row['airline_name']; |
||
5397 | $temp_array['image_thumbnail'] = ""; |
||
5398 | if($row['registration'] != "") |
||
5399 | { |
||
5400 | $image_array = $Image->getSpotterImage($row['registration']); |
||
5401 | if (isset($image_array[0]['image_thumbnail'])) $temp_array['image_thumbnail'] = $image_array[0]['image_thumbnail']; |
||
5402 | } |
||
5403 | $temp_array['registration_count'] = $row['registration_count']; |
||
5404 | |||
5405 | $aircraft_array[] = $temp_array; |
||
5406 | } |
||
5407 | return $aircraft_array; |
||
5408 | } |
||
5409 | |||
5410 | |||
5411 | /** |
||
5412 | * Gets all aircraft manufacturer that have flown over by airline icao |
||
5413 | * |
||
5414 | * @return Array the aircraft list |
||
5415 | * |
||
5416 | */ |
||
5417 | public function countAllAircraftManufacturerByAirline($airline_icao,$filters = array()) |
||
5418 | { |
||
5419 | $filter_query = $this->getFilter($filters,true,true); |
||
5420 | $airline_icao = filter_var($airline_icao,FILTER_SANITIZE_STRING); |
||
5421 | $query = "SELECT DISTINCT spotter_output.aircraft_manufacturer, COUNT(spotter_output.aircraft_manufacturer) AS aircraft_manufacturer_count |
||
5422 | FROM spotter_output".$filter_query." spotter_output.aircraft_manufacturer <> '' AND spotter_output.airline_icao = :airline_icao |
||
5423 | GROUP BY spotter_output.aircraft_manufacturer |
||
5424 | ORDER BY aircraft_manufacturer_count DESC"; |
||
5425 | |||
5426 | $sth = $this->db->prepare($query); |
||
5427 | $sth->execute(array(':airline_icao' => $airline_icao)); |
||
5428 | |||
5429 | $aircraft_array = array(); |
||
5430 | $temp_array = array(); |
||
5431 | |||
5432 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
5433 | { |
||
5434 | $temp_array['aircraft_manufacturer'] = $row['aircraft_manufacturer']; |
||
5435 | $temp_array['aircraft_manufacturer_count'] = $row['aircraft_manufacturer_count']; |
||
5436 | |||
5437 | $aircraft_array[] = $temp_array; |
||
5438 | } |
||
5439 | return $aircraft_array; |
||
5440 | } |
||
5441 | |||
5442 | |||
5443 | /** |
||
5444 | * Gets all aircraft types that have flown over by airline icao |
||
5445 | * |
||
5446 | * @return Array the aircraft list |
||
5447 | * |
||
5448 | */ |
||
5449 | public function countAllAircraftTypesByAirport($airport_icao,$filters = array()) |
||
5450 | { |
||
5451 | $filter_query = $this->getFilter($filters,true,true); |
||
5452 | $airport_icao = filter_var($airport_icao,FILTER_SANITIZE_STRING); |
||
5453 | |||
5454 | $query = "SELECT DISTINCT spotter_output.aircraft_icao, COUNT(spotter_output.aircraft_icao) AS aircraft_icao_count, spotter_output.aircraft_name |
||
5455 | FROM spotter_output".$filter_query." spotter_output.aircraft_icao <> '' AND (spotter_output.departure_airport_icao = :airport_icao OR spotter_output.arrival_airport_icao = :airport_icao) |
||
5456 | GROUP BY spotter_output.aircraft_name, spotter_output.aircraft_icao |
||
5457 | ORDER BY aircraft_icao_count DESC"; |
||
5458 | |||
5459 | $sth = $this->db->prepare($query); |
||
5460 | $sth->execute(array(':airport_icao' => $airport_icao)); |
||
5461 | |||
5462 | $aircraft_array = array(); |
||
5463 | $temp_array = array(); |
||
5464 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
5465 | { |
||
5466 | $temp_array['aircraft_icao'] = $row['aircraft_icao']; |
||
5467 | $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
5468 | $temp_array['aircraft_icao_count'] = $row['aircraft_icao_count']; |
||
5469 | |||
5470 | $aircraft_array[] = $temp_array; |
||
5471 | } |
||
5472 | return $aircraft_array; |
||
5473 | } |
||
5474 | |||
5475 | |||
5476 | /** |
||
5477 | * Gets all aircraft registration that have flown over by airport icao |
||
5478 | * |
||
5479 | * @return Array the aircraft list |
||
5480 | * |
||
5481 | */ |
||
5482 | public function countAllAircraftRegistrationByAirport($airport_icao,$filters = array()) |
||
5483 | { |
||
5484 | $filter_query = $this->getFilter($filters,true,true); |
||
5485 | $Image = new Image($this->db); |
||
5486 | $airport_icao = filter_var($airport_icao,FILTER_SANITIZE_STRING); |
||
5487 | |||
5488 | $query = "SELECT DISTINCT spotter_output.aircraft_icao, COUNT(spotter_output.registration) AS registration_count, spotter_output.aircraft_name, spotter_output.registration, spotter_output.airline_name |
||
5489 | FROM spotter_output".$filter_query." spotter_output.registration <> '' AND (spotter_output.departure_airport_icao = :airport_icao OR spotter_output.arrival_airport_icao = :airport_icao) |
||
5490 | GROUP BY spotter_output.registration, spotter_output.aircraft_icao, spotter_output.aircraft_name, spotter_output.airline_name |
||
5491 | ORDER BY registration_count DESC"; |
||
5492 | |||
5493 | $sth = $this->db->prepare($query); |
||
5494 | $sth->execute(array(':airport_icao' => $airport_icao)); |
||
5495 | |||
5496 | $aircraft_array = array(); |
||
5497 | $temp_array = array(); |
||
5498 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
5499 | { |
||
5500 | $temp_array['aircraft_icao'] = $row['aircraft_icao']; |
||
5501 | $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
5502 | $temp_array['registration'] = $row['registration']; |
||
5503 | $temp_array['airline_name'] = $row['airline_name']; |
||
5504 | $temp_array['image_thumbnail'] = ""; |
||
5505 | if($row['registration'] != "") |
||
5506 | { |
||
5507 | $image_array = $Image->getSpotterImage($row['registration']); |
||
5508 | if (isset($image_array[0]['image_thumbnail'])) $temp_array['image_thumbnail'] = $image_array[0]['image_thumbnail']; |
||
5509 | } |
||
5510 | $temp_array['registration_count'] = $row['registration_count']; |
||
5511 | $aircraft_array[] = $temp_array; |
||
5512 | } |
||
5513 | return $aircraft_array; |
||
5514 | } |
||
5515 | |||
5516 | |||
5517 | /** |
||
5518 | * Gets all aircraft manufacturer that have flown over by airport icao |
||
5519 | * |
||
5520 | * @return Array the aircraft list |
||
5521 | * |
||
5522 | */ |
||
5523 | public function countAllAircraftManufacturerByAirport($airport_icao,$filters = array()) |
||
5524 | { |
||
5525 | $filter_query = $this->getFilter($filters,true,true); |
||
5526 | $airport_icao = filter_var($airport_icao,FILTER_SANITIZE_STRING); |
||
5527 | $query = "SELECT DISTINCT spotter_output.aircraft_manufacturer, COUNT(spotter_output.aircraft_manufacturer) AS aircraft_manufacturer_count |
||
5528 | FROM spotter_output".$filter_query." spotter_output.aircraft_manufacturer <> '' AND (spotter_output.departure_airport_icao = :airport_icao OR spotter_output.arrival_airport_icao = :airport_icao) |
||
5529 | GROUP BY spotter_output.aircraft_manufacturer |
||
5530 | ORDER BY aircraft_manufacturer_count DESC"; |
||
5531 | |||
5532 | |||
5533 | $sth = $this->db->prepare($query); |
||
5534 | $sth->execute(array(':airport_icao' => $airport_icao)); |
||
5535 | |||
5536 | $aircraft_array = array(); |
||
5537 | $temp_array = array(); |
||
5538 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
5539 | { |
||
5540 | $temp_array['aircraft_manufacturer'] = $row['aircraft_manufacturer']; |
||
5541 | $temp_array['aircraft_manufacturer_count'] = $row['aircraft_manufacturer_count']; |
||
5542 | $aircraft_array[] = $temp_array; |
||
5543 | } |
||
5544 | return $aircraft_array; |
||
5545 | } |
||
5546 | |||
5547 | /** |
||
5548 | * Gets all aircraft types that have flown over by aircraft manufacturer |
||
5549 | * |
||
5550 | * @return Array the aircraft list |
||
5551 | * |
||
5552 | */ |
||
5553 | public function countAllAircraftTypesByManufacturer($aircraft_manufacturer,$filters = array()) |
||
5554 | { |
||
5555 | $filter_query = $this->getFilter($filters,true,true); |
||
5556 | $aircraft_manufacturer = filter_var($aircraft_manufacturer,FILTER_SANITIZE_STRING); |
||
5557 | |||
5558 | $query = "SELECT DISTINCT spotter_output.aircraft_icao, COUNT(spotter_output.aircraft_icao) AS aircraft_icao_count, spotter_output.aircraft_name |
||
5559 | FROM spotter_output".$filter_query." spotter_output.aircraft_manufacturer = :aircraft_manufacturer |
||
5560 | GROUP BY spotter_output.aircraft_name |
||
5561 | ORDER BY aircraft_icao_count DESC"; |
||
5562 | |||
5563 | $sth = $this->db->prepare($query); |
||
5564 | $sth->execute(array(':aircraft_manufacturer' => $aircraft_manufacturer)); |
||
5565 | $aircraft_array = array(); |
||
5566 | $temp_array = array(); |
||
5567 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
5568 | { |
||
5569 | $temp_array['aircraft_icao'] = $row['aircraft_icao']; |
||
5570 | $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
5571 | $temp_array['aircraft_icao_count'] = $row['aircraft_icao_count']; |
||
5572 | $aircraft_array[] = $temp_array; |
||
5573 | } |
||
5574 | return $aircraft_array; |
||
5575 | } |
||
5576 | |||
5577 | |||
5578 | /** |
||
5579 | * Gets all aircraft registration that have flown over by aircaft manufacturer |
||
5580 | * |
||
5581 | * @return Array the aircraft list |
||
5582 | * |
||
5583 | */ |
||
5584 | public function countAllAircraftRegistrationByManufacturer($aircraft_manufacturer, $filters = array()) |
||
5585 | { |
||
5586 | $filter_query = $this->getFilter($filters,true,true); |
||
5587 | $Image = new Image($this->db); |
||
5588 | $aircraft_manufacturer = filter_var($aircraft_manufacturer,FILTER_SANITIZE_STRING); |
||
5589 | |||
5590 | $query = "SELECT DISTINCT spotter_output.aircraft_icao, COUNT(spotter_output.registration) AS registration_count, spotter_output.aircraft_name, spotter_output.registration, spotter_output.airline_name |
||
5591 | FROM spotter_output".$filter_query." spotter_output.registration <> '' AND spotter_output.aircraft_manufacturer = :aircraft_manufacturer |
||
5592 | GROUP BY spotter_output.registration |
||
5593 | ORDER BY registration_count DESC"; |
||
5594 | |||
5595 | |||
5596 | $sth = $this->db->prepare($query); |
||
5597 | $sth->execute(array(':aircraft_manufacturer' => $aircraft_manufacturer)); |
||
5598 | $aircraft_array = array(); |
||
5599 | $temp_array = array(); |
||
5600 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
5601 | { |
||
5602 | $temp_array['aircraft_icao'] = $row['aircraft_icao']; |
||
5603 | $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
5604 | $temp_array['registration'] = $row['registration']; |
||
5605 | $temp_array['airline_name'] = $row['airline_name']; |
||
5606 | $temp_array['image_thumbnail'] = ""; |
||
5607 | if($row['registration'] != "") |
||
5608 | { |
||
5609 | $image_array = $Image->getSpotterImage($row['registration']); |
||
5610 | $temp_array['image_thumbnail'] = $image_array[0]['image_thumbnail']; |
||
5611 | } |
||
5612 | $temp_array['registration_count'] = $row['registration_count']; |
||
5613 | $aircraft_array[] = $temp_array; |
||
5614 | } |
||
5615 | return $aircraft_array; |
||
5616 | } |
||
5617 | |||
5618 | /** |
||
5619 | * Gets all aircraft types that have flown over by date |
||
5620 | * |
||
5621 | * @return Array the aircraft list |
||
5622 | * |
||
5623 | */ |
||
5624 | public function countAllAircraftTypesByDate($date,$filters = array()) |
||
5625 | { |
||
5626 | global $globalTimezone, $globalDBdriver; |
||
5627 | $filter_query = $this->getFilter($filters,true,true); |
||
5628 | $date = filter_var($date,FILTER_SANITIZE_STRING); |
||
5629 | if ($globalTimezone != '') { |
||
5630 | date_default_timezone_set($globalTimezone); |
||
5631 | $datetime = new DateTime($date); |
||
5632 | $offset = $datetime->format('P'); |
||
5633 | } else $offset = '+00:00'; |
||
5634 | |||
5635 | if ($globalDBdriver == 'mysql') { |
||
5636 | $query = "SELECT DISTINCT spotter_output.aircraft_icao, COUNT(spotter_output.aircraft_icao) AS aircraft_icao_count, spotter_output.aircraft_name |
||
5637 | FROM spotter_output".$filter_query." DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) = :date |
||
5638 | GROUP BY spotter_output.aircraft_name, spotter_output.aircraft_icao |
||
5639 | ORDER BY aircraft_icao_count DESC"; |
||
5640 | } else { |
||
5641 | $query = "SELECT DISTINCT spotter_output.aircraft_icao, COUNT(spotter_output.aircraft_icao) AS aircraft_icao_count, spotter_output.aircraft_name |
||
5642 | FROM spotter_output".$filter_query." to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') = :date |
||
5643 | GROUP BY spotter_output.aircraft_name, spotter_output.aircraft_icao |
||
5644 | ORDER BY aircraft_icao_count DESC"; |
||
5645 | } |
||
5646 | |||
5647 | $sth = $this->db->prepare($query); |
||
5648 | $sth->execute(array(':date' => $date, ':offset' => $offset)); |
||
5649 | |||
5650 | $aircraft_array = array(); |
||
5651 | $temp_array = array(); |
||
5652 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
5653 | { |
||
5654 | $temp_array['aircraft_icao'] = $row['aircraft_icao']; |
||
5655 | $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
5656 | $temp_array['aircraft_icao_count'] = $row['aircraft_icao_count']; |
||
5657 | |||
5658 | $aircraft_array[] = $temp_array; |
||
5659 | } |
||
5660 | return $aircraft_array; |
||
5661 | } |
||
5662 | |||
5663 | |||
5664 | /** |
||
5665 | * Gets all aircraft registration that have flown over by date |
||
5666 | * |
||
5667 | * @return Array the aircraft list |
||
5668 | * |
||
5669 | */ |
||
5670 | public function countAllAircraftRegistrationByDate($date,$filters = array()) |
||
5671 | { |
||
5672 | global $globalTimezone, $globalDBdriver; |
||
5673 | $filter_query = $this->getFilter($filters,true,true); |
||
5674 | $Image = new Image($this->db); |
||
5675 | $date = filter_var($date,FILTER_SANITIZE_STRING); |
||
5676 | if ($globalTimezone != '') { |
||
5677 | date_default_timezone_set($globalTimezone); |
||
5678 | $datetime = new DateTime($date); |
||
5679 | $offset = $datetime->format('P'); |
||
5680 | } else $offset = '+00:00'; |
||
5681 | |||
5682 | if ($globalDBdriver == 'mysql') { |
||
5683 | $query = "SELECT DISTINCT spotter_output.aircraft_icao, COUNT(spotter_output.registration) AS registration_count, spotter_output.aircraft_name, spotter_output.registration, spotter_output.airline_name |
||
5684 | FROM spotter_output".$filter_query." spotter_output.registration <> '' AND DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) = :date |
||
5685 | GROUP BY spotter_output.registration, spotter_output.aircraft_icao, spotter_output.aircraft_name, spotter_output.airline_name |
||
5686 | ORDER BY registration_count DESC"; |
||
5687 | } else { |
||
5688 | $query = "SELECT DISTINCT spotter_output.aircraft_icao, COUNT(spotter_output.registration) AS registration_count, spotter_output.aircraft_name, spotter_output.registration, spotter_output.airline_name |
||
5689 | FROM spotter_output".$filter_query." spotter_output.registration <> '' AND to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') = :date |
||
5690 | GROUP BY spotter_output.registration, spotter_output.aircraft_icao, spotter_output.aircraft_name, spotter_output.airline_name |
||
5691 | ORDER BY registration_count DESC"; |
||
5692 | } |
||
5693 | |||
5694 | $sth = $this->db->prepare($query); |
||
5695 | $sth->execute(array(':date' => $date, ':offset' => $offset)); |
||
5696 | |||
5697 | $aircraft_array = array(); |
||
5698 | $temp_array = array(); |
||
5699 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
5700 | { |
||
5701 | $temp_array['aircraft_icao'] = $row['aircraft_icao']; |
||
5702 | $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
5703 | $temp_array['registration'] = $row['registration']; |
||
5704 | $temp_array['airline_name'] = $row['airline_name']; |
||
5705 | $temp_array['image_thumbnail'] = ""; |
||
5706 | if($row['registration'] != "") |
||
5707 | { |
||
5708 | $image_array = $Image->getSpotterImage($row['registration']); |
||
5709 | if (isset($image_array[0]['image_thumbnail'])) $temp_array['image_thumbnail'] = $image_array[0]['image_thumbnail']; |
||
5710 | } |
||
5711 | $temp_array['registration_count'] = $row['registration_count']; |
||
5712 | |||
5713 | $aircraft_array[] = $temp_array; |
||
5714 | } |
||
5715 | return $aircraft_array; |
||
5716 | } |
||
5717 | |||
5718 | |||
5719 | /** |
||
5720 | * Gets all aircraft manufacturer that have flown over by date |
||
5721 | * |
||
5722 | * @return Array the aircraft manufacturer list |
||
5723 | * |
||
5724 | */ |
||
5725 | public function countAllAircraftManufacturerByDate($date,$filters = array()) |
||
5726 | { |
||
5727 | global $globalTimezone, $globalDBdriver; |
||
5728 | $filter_query = $this->getFilter($filters,true,true); |
||
5729 | $date = filter_var($date,FILTER_SANITIZE_STRING); |
||
5730 | if ($globalTimezone != '') { |
||
5731 | date_default_timezone_set($globalTimezone); |
||
5732 | $datetime = new DateTime($date); |
||
5733 | $offset = $datetime->format('P'); |
||
5734 | } else $offset = '+00:00'; |
||
5735 | |||
5736 | if ($globalDBdriver == 'mysql') { |
||
5737 | $query = "SELECT DISTINCT spotter_output.aircraft_manufacturer, COUNT(spotter_output.aircraft_manufacturer) AS aircraft_manufacturer_count |
||
5738 | FROM spotter_output".$filter_query." spotter_output.aircraft_manufacturer <> '' AND DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) = :date |
||
5739 | GROUP BY spotter_output.aircraft_manufacturer |
||
5740 | ORDER BY aircraft_manufacturer_count DESC"; |
||
5741 | } else { |
||
5742 | $query = "SELECT DISTINCT spotter_output.aircraft_manufacturer, COUNT(spotter_output.aircraft_manufacturer) AS aircraft_manufacturer_count |
||
5743 | FROM spotter_output".$filter_query." spotter_output.aircraft_manufacturer <> '' AND to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') = :date |
||
5744 | GROUP BY spotter_output.aircraft_manufacturer |
||
5745 | ORDER BY aircraft_manufacturer_count DESC"; |
||
5746 | } |
||
5747 | |||
5748 | $sth = $this->db->prepare($query); |
||
5749 | $sth->execute(array(':date' => $date, ':offset' => $offset)); |
||
5750 | |||
5751 | $aircraft_array = array(); |
||
5752 | $temp_array = array(); |
||
5753 | |||
5754 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
5755 | { |
||
5756 | $temp_array['aircraft_manufacturer'] = $row['aircraft_manufacturer']; |
||
5757 | $temp_array['aircraft_manufacturer_count'] = $row['aircraft_manufacturer_count']; |
||
5758 | |||
5759 | $aircraft_array[] = $temp_array; |
||
5760 | } |
||
5761 | return $aircraft_array; |
||
5762 | } |
||
5763 | |||
5764 | |||
5765 | /** |
||
5766 | * Gets all aircraft types that have flown over by ident/callsign |
||
5767 | * |
||
5768 | * @return Array the aircraft list |
||
5769 | * |
||
5770 | */ |
||
5771 | public function countAllAircraftTypesByIdent($ident,$filters = array()) |
||
5772 | { |
||
5773 | $filter_query = $this->getFilter($filters,true,true); |
||
5774 | $ident = filter_var($ident,FILTER_SANITIZE_STRING); |
||
5775 | $query = "SELECT DISTINCT spotter_output.aircraft_icao, COUNT(spotter_output.aircraft_icao) AS aircraft_icao_count, spotter_output.aircraft_name |
||
5776 | FROM spotter_output".$filter_query." spotter_output.ident = :ident |
||
5777 | GROUP BY spotter_output.aircraft_name, spotter_output.aircraft_icao |
||
5778 | ORDER BY aircraft_icao_count DESC"; |
||
5779 | |||
5780 | $sth = $this->db->prepare($query); |
||
5781 | $sth->execute(array(':ident' => $ident)); |
||
5782 | |||
5783 | $aircraft_array = array(); |
||
5784 | $temp_array = array(); |
||
5785 | |||
5786 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
5787 | { |
||
5788 | $temp_array['aircraft_icao'] = $row['aircraft_icao']; |
||
5789 | $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
5790 | $temp_array['aircraft_icao_count'] = $row['aircraft_icao_count']; |
||
5791 | |||
5792 | $aircraft_array[] = $temp_array; |
||
5793 | } |
||
5794 | return $aircraft_array; |
||
5795 | } |
||
5796 | |||
5797 | /** |
||
5798 | * Gets all aircraft types that have flown over by pilot |
||
5799 | * |
||
5800 | * @return Array the aircraft list |
||
5801 | * |
||
5802 | */ |
||
5803 | public function countAllAircraftTypesByPilot($pilot,$filters = array(),$year = '',$month = '',$day = '') |
||
5804 | { |
||
5805 | global $globalDBdriver; |
||
5806 | $filter_query = $this->getFilter($filters,true,true); |
||
5807 | $pilot = filter_var($pilot,FILTER_SANITIZE_STRING); |
||
5808 | $query = "SELECT DISTINCT spotter_output.aircraft_icao, COUNT(spotter_output.aircraft_icao) AS aircraft_icao_count, spotter_output.aircraft_name |
||
5809 | FROM spotter_output".$filter_query." (spotter_output.pilot_id = :pilot OR spotter_output.pilot_name = :pilot)"; |
||
5810 | $query_values = array(); |
||
5811 | if ($year != '') { |
||
5812 | if ($globalDBdriver == 'mysql') { |
||
5813 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
5814 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
5815 | } else { |
||
5816 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
5817 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
5818 | } |
||
5819 | } |
||
5820 | if ($month != '') { |
||
5821 | if ($globalDBdriver == 'mysql') { |
||
5822 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
5823 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
5824 | } else { |
||
5825 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
5826 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
5827 | } |
||
5828 | } |
||
5829 | if ($day != '') { |
||
5830 | if ($globalDBdriver == 'mysql') { |
||
5831 | $query .= " AND DAY(spotter_output.date) = :day"; |
||
5832 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
5833 | } else { |
||
5834 | $query .= " AND EXTRACT(DAY FROM spotter_output.date) = :day"; |
||
5835 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
5836 | } |
||
5837 | } |
||
5838 | |||
5839 | $query .= " GROUP BY spotter_output.aircraft_name, spotter_output.aircraft_icao |
||
5840 | ORDER BY aircraft_icao_count DESC"; |
||
5841 | $query_values = array_merge($query_values,array(':pilot' => $pilot)); |
||
5842 | $sth = $this->db->prepare($query); |
||
5843 | $sth->execute($query_values); |
||
5844 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
5845 | } |
||
5846 | |||
5847 | /** |
||
5848 | * Gets all aircraft types that have flown over by owner |
||
5849 | * |
||
5850 | * @return Array the aircraft list |
||
5851 | * |
||
5852 | */ |
||
5853 | public function countAllAircraftTypesByOwner($owner,$filters = array(),$year = '',$month = '',$day = '') |
||
5854 | { |
||
5855 | global $globalDBdriver; |
||
5856 | $filter_query = $this->getFilter($filters,true,true); |
||
5857 | $owner = filter_var($owner,FILTER_SANITIZE_STRING); |
||
5858 | $query = "SELECT DISTINCT spotter_output.aircraft_icao, COUNT(spotter_output.aircraft_icao) AS aircraft_icao_count, spotter_output.aircraft_name, spotter_output.aircraft_manufacturer |
||
5859 | FROM spotter_output".$filter_query." spotter_output.owner_name = :owner"; |
||
5860 | $query_values = array(); |
||
5861 | if ($year != '') { |
||
5862 | if ($globalDBdriver == 'mysql') { |
||
5863 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
5864 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
5865 | } else { |
||
5866 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
5867 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
5868 | } |
||
5869 | } |
||
5870 | if ($month != '') { |
||
5871 | if ($globalDBdriver == 'mysql') { |
||
5872 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
5873 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
5874 | } else { |
||
5875 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
5876 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
5877 | } |
||
5878 | } |
||
5879 | if ($day != '') { |
||
5880 | if ($globalDBdriver == 'mysql') { |
||
5881 | $query .= " AND DAY(spotter_output.date) = :day"; |
||
5882 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
5883 | } else { |
||
5884 | $query .= " AND EXTRACT(DAY FROM spotter_output.date) = :day"; |
||
5885 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
5886 | } |
||
5887 | } |
||
5888 | $query .= " GROUP BY spotter_output.aircraft_name, spotter_output.aircraft_manufacturer, spotter_output.aircraft_icao |
||
5889 | ORDER BY aircraft_icao_count DESC"; |
||
5890 | $query_values = array_merge($query_values,array(':owner' => $owner)); |
||
5891 | $sth = $this->db->prepare($query); |
||
5892 | $sth->execute($query_values); |
||
5893 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
5894 | } |
||
5895 | |||
5896 | /** |
||
5897 | * Gets all aircraft registration that have flown over by ident/callsign |
||
5898 | * |
||
5899 | * @return Array the aircraft list |
||
5900 | * |
||
5901 | */ |
||
5902 | public function countAllAircraftRegistrationByIdent($ident,$filters = array()) |
||
5903 | { |
||
5904 | $filter_query = $this->getFilter($filters,true,true); |
||
5905 | $Image = new Image($this->db); |
||
5906 | $ident = filter_var($ident,FILTER_SANITIZE_STRING); |
||
5907 | |||
5908 | $query = "SELECT DISTINCT spotter_output.aircraft_icao, COUNT(spotter_output.registration) AS registration_count, spotter_output.aircraft_name, spotter_output.registration, spotter_output.airline_name |
||
5909 | FROM spotter_output".$filter_query." spotter_output.registration <> '' AND spotter_output.ident = :ident |
||
5910 | GROUP BY spotter_output.registration,spotter_output.aircraft_icao, spotter_output.aircraft_name, spotter_output.airline_name |
||
5911 | ORDER BY registration_count DESC"; |
||
5912 | |||
5913 | |||
5914 | $sth = $this->db->prepare($query); |
||
5915 | $sth->execute(array(':ident' => $ident)); |
||
5916 | |||
5917 | $aircraft_array = array(); |
||
5918 | $temp_array = array(); |
||
5919 | |||
5920 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
5921 | { |
||
5922 | $temp_array['aircraft_icao'] = $row['aircraft_icao']; |
||
5923 | $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
5924 | $temp_array['registration'] = $row['registration']; |
||
5925 | $temp_array['airline_name'] = $row['airline_name']; |
||
5926 | $temp_array['image_thumbnail'] = ""; |
||
5927 | if($row['registration'] != "") |
||
5928 | { |
||
5929 | $image_array = $Image->getSpotterImage($row['registration']); |
||
5930 | if (isset($image_array[0]['image_thumbnail'])) $temp_array['image_thumbnail'] = $image_array[0]['image_thumbnail']; |
||
5931 | else $temp_array['image_thumbnail'] = ''; |
||
5932 | } |
||
5933 | $temp_array['registration_count'] = $row['registration_count']; |
||
5934 | $aircraft_array[] = $temp_array; |
||
5935 | } |
||
5936 | return $aircraft_array; |
||
5937 | } |
||
5938 | |||
5939 | /** |
||
5940 | * Gets all aircraft registration that have flown over by owner |
||
5941 | * |
||
5942 | * @return Array the aircraft list |
||
5943 | * |
||
5944 | */ |
||
5945 | public function countAllAircraftRegistrationByOwner($owner,$filters = array(),$year = '',$month = '',$day = '') |
||
5946 | { |
||
5947 | global $globalDBdriver; |
||
5948 | $filter_query = $this->getFilter($filters,true,true); |
||
5949 | $Image = new Image($this->db); |
||
5950 | $owner = filter_var($owner,FILTER_SANITIZE_STRING); |
||
5951 | |||
5952 | $query = "SELECT DISTINCT spotter_output.aircraft_icao, COUNT(spotter_output.registration) AS registration_count, spotter_output.aircraft_name, spotter_output.aircraft_manufacturer, spotter_output.registration, spotter_output.airline_name |
||
5953 | FROM spotter_output".$filter_query." spotter_output.registration <> '' AND spotter_output.owner_name = :owner"; |
||
5954 | $query_values = array(); |
||
5955 | if ($year != '') { |
||
5956 | if ($globalDBdriver == 'mysql') { |
||
5957 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
5958 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
5959 | } else { |
||
5960 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
5961 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
5962 | } |
||
5963 | } |
||
5964 | if ($month != '') { |
||
5965 | if ($globalDBdriver == 'mysql') { |
||
5966 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
5967 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
5968 | } else { |
||
5969 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
5970 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
5971 | } |
||
5972 | } |
||
5973 | if ($day != '') { |
||
5974 | if ($globalDBdriver == 'mysql') { |
||
5975 | $query .= " AND DAY(spotter_output.date) = :day"; |
||
5976 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
5977 | } else { |
||
5978 | $query .= " AND EXTRACT(DAY FROM spotter_output.date) = :day"; |
||
5979 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
5980 | } |
||
5981 | } |
||
5982 | $query_values = array_merge($query_values,array(':owner' => $owner)); |
||
5983 | |||
5984 | $query .= " GROUP BY spotter_output.registration,spotter_output.aircraft_icao, spotter_output.aircraft_name, spotter_output.aircraft_manufacturer, spotter_output.airline_name |
||
5985 | ORDER BY registration_count DESC"; |
||
5986 | |||
5987 | |||
5988 | $sth = $this->db->prepare($query); |
||
5989 | $sth->execute($query_values); |
||
5990 | |||
5991 | $aircraft_array = array(); |
||
5992 | $temp_array = array(); |
||
5993 | |||
5994 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
5995 | { |
||
5996 | $temp_array['aircraft_icao'] = $row['aircraft_icao']; |
||
5997 | $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
5998 | $temp_array['aircraft_manufacturer'] = $row['aircraft_manufacturer']; |
||
5999 | $temp_array['registration'] = $row['registration']; |
||
6000 | $temp_array['airline_name'] = $row['airline_name']; |
||
6001 | $temp_array['image_thumbnail'] = ""; |
||
6002 | if($row['registration'] != "") |
||
6003 | { |
||
6004 | $image_array = $Image->getSpotterImage($row['registration']); |
||
6005 | if (isset($image_array[0]['image_thumbnail'])) $temp_array['image_thumbnail'] = $image_array[0]['image_thumbnail']; |
||
6006 | else $temp_array['image_thumbnail'] = ''; |
||
6007 | } |
||
6008 | $temp_array['registration_count'] = $row['registration_count']; |
||
6009 | $aircraft_array[] = $temp_array; |
||
6010 | } |
||
6011 | return $aircraft_array; |
||
6012 | } |
||
6013 | |||
6014 | /** |
||
6015 | * Gets all aircraft registration that have flown over by pilot |
||
6016 | * |
||
6017 | * @return Array the aircraft list |
||
6018 | * |
||
6019 | */ |
||
6020 | public function countAllAircraftRegistrationByPilot($pilot,$filters = array(),$year = '',$month = '',$day = '') |
||
6021 | { |
||
6022 | global $globalDBdriver; |
||
6023 | $filter_query = $this->getFilter($filters,true,true); |
||
6024 | $Image = new Image($this->db); |
||
6025 | $pilot = filter_var($pilot,FILTER_SANITIZE_STRING); |
||
6026 | |||
6027 | $query = "SELECT DISTINCT spotter_output.aircraft_icao, COUNT(spotter_output.registration) AS registration_count, spotter_output.aircraft_name, spotter_output.aircraft_manufacturer, spotter_output.registration, spotter_output.airline_name |
||
6028 | FROM spotter_output".$filter_query." spotter_output.registration <> '' AND (spotter_output.pilot_name = :pilot OR spotter_output.pilot_id = :pilot)"; |
||
6029 | $query_values = array(); |
||
6030 | if ($year != '') { |
||
6031 | if ($globalDBdriver == 'mysql') { |
||
6032 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
6033 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
6034 | } else { |
||
6035 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
6036 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
6037 | } |
||
6038 | } |
||
6039 | if ($month != '') { |
||
6040 | if ($globalDBdriver == 'mysql') { |
||
6041 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
6042 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
6043 | } else { |
||
6044 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
6045 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
6046 | } |
||
6047 | } |
||
6048 | if ($day != '') { |
||
6049 | if ($globalDBdriver == 'mysql') { |
||
6050 | $query .= " AND DAY(spotter_output.date) = :day"; |
||
6051 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
6052 | } else { |
||
6053 | $query .= " AND EXTRACT(DAY FROM spotter_output.date) = :day"; |
||
6054 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
6055 | } |
||
6056 | } |
||
6057 | $query_values = array_merge($query_values,array(':pilot' => $pilot)); |
||
6058 | |||
6059 | $query .= " GROUP BY spotter_output.registration,spotter_output.aircraft_icao, spotter_output.aircraft_name, spotter_output.aircraft_manufacturer, spotter_output.airline_name |
||
6060 | ORDER BY registration_count DESC"; |
||
6061 | |||
6062 | |||
6063 | $sth = $this->db->prepare($query); |
||
6064 | $sth->execute($query_values); |
||
6065 | |||
6066 | $aircraft_array = array(); |
||
6067 | $temp_array = array(); |
||
6068 | |||
6069 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
6070 | { |
||
6071 | $temp_array['aircraft_icao'] = $row['aircraft_icao']; |
||
6072 | $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
6073 | $temp_array['aircraft_manufacturer'] = $row['aircraft_manufacturer']; |
||
6074 | $temp_array['registration'] = $row['registration']; |
||
6075 | $temp_array['airline_name'] = $row['airline_name']; |
||
6076 | $temp_array['image_thumbnail'] = ""; |
||
6077 | if($row['registration'] != "") |
||
6078 | { |
||
6079 | $image_array = $Image->getSpotterImage($row['registration']); |
||
6080 | if (isset($image_array[0]['image_thumbnail'])) $temp_array['image_thumbnail'] = $image_array[0]['image_thumbnail']; |
||
6081 | else $temp_array['image_thumbnail'] = ''; |
||
6082 | } |
||
6083 | $temp_array['registration_count'] = $row['registration_count']; |
||
6084 | $aircraft_array[] = $temp_array; |
||
6085 | } |
||
6086 | return $aircraft_array; |
||
6087 | } |
||
6088 | |||
6089 | |||
6090 | /** |
||
6091 | * Gets all aircraft manufacturer that have flown over by ident/callsign |
||
6092 | * |
||
6093 | * @return Array the aircraft manufacturer list |
||
6094 | * |
||
6095 | */ |
||
6096 | public function countAllAircraftManufacturerByIdent($ident,$filters = array()) |
||
6097 | { |
||
6098 | $filter_query = $this->getFilter($filters,true,true); |
||
6099 | $ident = filter_var($ident,FILTER_SANITIZE_STRING); |
||
6100 | $query = "SELECT DISTINCT spotter_output.aircraft_manufacturer, COUNT(spotter_output.aircraft_manufacturer) AS aircraft_manufacturer_count |
||
6101 | FROM spotter_output".$filter_query." spotter_output.aircraft_manufacturer <> '' AND spotter_output.ident = :ident |
||
6102 | GROUP BY spotter_output.aircraft_manufacturer |
||
6103 | ORDER BY aircraft_manufacturer_count DESC"; |
||
6104 | |||
6105 | |||
6106 | $sth = $this->db->prepare($query); |
||
6107 | $sth->execute(array(':ident' => $ident)); |
||
6108 | $aircraft_array = array(); |
||
6109 | $temp_array = array(); |
||
6110 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
6111 | { |
||
6112 | $temp_array['aircraft_manufacturer'] = $row['aircraft_manufacturer']; |
||
6113 | $temp_array['aircraft_manufacturer_count'] = $row['aircraft_manufacturer_count']; |
||
6114 | $aircraft_array[] = $temp_array; |
||
6115 | } |
||
6116 | return $aircraft_array; |
||
6117 | } |
||
6118 | |||
6119 | /** |
||
6120 | * Gets all aircraft manufacturer that have flown over by owner |
||
6121 | * |
||
6122 | * @return Array the aircraft manufacturer list |
||
6123 | * |
||
6124 | */ |
||
6125 | public function countAllAircraftManufacturerByOwner($owner,$filters = array(),$year = '',$month = '',$day = '') |
||
6126 | { |
||
6127 | global $globalDBdriver; |
||
6128 | $filter_query = $this->getFilter($filters,true,true); |
||
6129 | $owner = filter_var($owner,FILTER_SANITIZE_STRING); |
||
6130 | $query = "SELECT DISTINCT spotter_output.aircraft_manufacturer, COUNT(spotter_output.aircraft_manufacturer) AS aircraft_manufacturer_count |
||
6131 | FROM spotter_output".$filter_query." spotter_output.aircraft_manufacturer <> '' AND spotter_output.owner_name = :owner"; |
||
6132 | $query_values = array(); |
||
6133 | if ($year != '') { |
||
6134 | if ($globalDBdriver == 'mysql') { |
||
6135 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
6136 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
6137 | } else { |
||
6138 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
6139 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
6140 | } |
||
6141 | } |
||
6142 | if ($month != '') { |
||
6143 | if ($globalDBdriver == 'mysql') { |
||
6144 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
6145 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
6146 | } else { |
||
6147 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
6148 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
6149 | } |
||
6150 | } |
||
6151 | if ($day != '') { |
||
6152 | if ($globalDBdriver == 'mysql') { |
||
6153 | $query .= " AND DAY(spotter_output.date) = :day"; |
||
6154 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
6155 | } else { |
||
6156 | $query .= " AND EXTRACT(DAY FROM spotter_output.date) = :day"; |
||
6157 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
6158 | } |
||
6159 | } |
||
6160 | $query_values = array_merge($query_values,array(':owner' => $owner)); |
||
6161 | |||
6162 | $query .= " GROUP BY spotter_output.aircraft_manufacturer |
||
6163 | ORDER BY aircraft_manufacturer_count DESC"; |
||
6164 | |||
6165 | |||
6166 | $sth = $this->db->prepare($query); |
||
6167 | $sth->execute($query_values); |
||
6168 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
6169 | } |
||
6170 | |||
6171 | /** |
||
6172 | * Gets all aircraft manufacturer that have flown over by pilot |
||
6173 | * |
||
6174 | * @return Array the aircraft manufacturer list |
||
6175 | * |
||
6176 | */ |
||
6177 | public function countAllAircraftManufacturerByPilot($pilot,$filters = array(),$year = '',$month = '',$day = '') |
||
6178 | { |
||
6179 | global $globalDBdriver; |
||
6180 | $filter_query = $this->getFilter($filters,true,true); |
||
6181 | $pilot = filter_var($pilot,FILTER_SANITIZE_STRING); |
||
6182 | $query = "SELECT DISTINCT spotter_output.aircraft_manufacturer, COUNT(spotter_output.aircraft_manufacturer) AS aircraft_manufacturer_count |
||
6183 | FROM spotter_output".$filter_query." spotter_output.aircraft_manufacturer <> '' AND (spotter_output.pilot_name = :pilot OR spotter_output.pilot_id = :pilot)"; |
||
6184 | $query_values = array(); |
||
6185 | if ($year != '') { |
||
6186 | if ($globalDBdriver == 'mysql') { |
||
6187 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
6188 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
6189 | } else { |
||
6190 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
6191 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
6192 | } |
||
6193 | } |
||
6194 | if ($month != '') { |
||
6195 | if ($globalDBdriver == 'mysql') { |
||
6196 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
6197 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
6198 | } else { |
||
6199 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
6200 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
6201 | } |
||
6202 | } |
||
6203 | if ($day != '') { |
||
6204 | if ($globalDBdriver == 'mysql') { |
||
6205 | $query .= " AND DAY(spotter_output.date) = :day"; |
||
6206 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
6207 | } else { |
||
6208 | $query .= " AND EXTRACT(DAY FROM spotter_output.date) = :day"; |
||
6209 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
6210 | } |
||
6211 | } |
||
6212 | $query_values = array_merge($query_values,array(':pilot' => $pilot)); |
||
6213 | |||
6214 | $query .= " GROUP BY spotter_output.aircraft_manufacturer |
||
6215 | ORDER BY aircraft_manufacturer_count DESC"; |
||
6216 | |||
6217 | |||
6218 | $sth = $this->db->prepare($query); |
||
6219 | $sth->execute($query_values); |
||
6220 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
6221 | } |
||
6222 | |||
6223 | |||
6224 | /** |
||
6225 | * Gets all aircraft types that have flown over by route |
||
6226 | * |
||
6227 | * @return Array the aircraft list |
||
6228 | * |
||
6229 | */ |
||
6230 | public function countAllAircraftTypesByRoute($departure_airport_icao, $arrival_airport_icao,$filters = array()) |
||
6231 | { |
||
6232 | $filter_query = $this->getFilter($filters,true,true); |
||
6233 | $departure_airport_icao = filter_var($departure_airport_icao,FILTER_SANITIZE_STRING); |
||
6234 | $arrival_airport_icao = filter_var($arrival_airport_icao,FILTER_SANITIZE_STRING); |
||
6235 | |||
6236 | |||
6237 | $query = "SELECT DISTINCT spotter_output.aircraft_icao, COUNT(spotter_output.aircraft_icao) AS aircraft_icao_count, spotter_output.aircraft_name |
||
6238 | FROM spotter_output".$filter_query." (spotter_output.departure_airport_icao = :departure_airport_icao) AND (spotter_output.arrival_airport_icao = :arrival_airport_icao) |
||
6239 | GROUP BY spotter_output.aircraft_name |
||
6240 | ORDER BY aircraft_icao_count DESC"; |
||
6241 | |||
6242 | |||
6243 | $sth = $this->db->prepare($query); |
||
6244 | $sth->execute(array(':departure_airport_icao' => $departure_airport_icao,':arrival_airport_icao' => $arrival_airport_icao)); |
||
6245 | $aircraft_array = array(); |
||
6246 | $temp_array = array(); |
||
6247 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
6248 | { |
||
6249 | $temp_array['aircraft_icao'] = $row['aircraft_icao']; |
||
6250 | $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
6251 | $temp_array['aircraft_icao_count'] = $row['aircraft_icao_count']; |
||
6252 | $aircraft_array[] = $temp_array; |
||
6253 | } |
||
6254 | return $aircraft_array; |
||
6255 | } |
||
6256 | |||
6257 | /** |
||
6258 | * Gets all aircraft registration that have flown over by route |
||
6259 | * |
||
6260 | * @return Array the aircraft list |
||
6261 | * |
||
6262 | */ |
||
6263 | public function countAllAircraftRegistrationByRoute($departure_airport_icao, $arrival_airport_icao,$filters = array()) |
||
6264 | { |
||
6265 | $filter_query = $this->getFilter($filters,true,true); |
||
6266 | $Image = new Image($this->db); |
||
6267 | $departure_airport_icao = filter_var($departure_airport_icao,FILTER_SANITIZE_STRING); |
||
6268 | $arrival_airport_icao = filter_var($arrival_airport_icao,FILTER_SANITIZE_STRING); |
||
6269 | |||
6270 | $query = "SELECT DISTINCT spotter_output.aircraft_icao, COUNT(spotter_output.registration) AS registration_count, spotter_output.aircraft_name, spotter_output.registration, spotter_output.airline_name |
||
6271 | FROM spotter_output".$filter_query." spotter_output.registration <> '' AND (spotter_output.departure_airport_icao = :departure_airport_icao) AND (spotter_output.arrival_airport_icao = :arrival_airport_icao) |
||
6272 | GROUP BY spotter_output.registration |
||
6273 | ORDER BY registration_count DESC"; |
||
6274 | |||
6275 | |||
6276 | $sth = $this->db->prepare($query); |
||
6277 | $sth->execute(array(':departure_airport_icao' => $departure_airport_icao,':arrival_airport_icao' => $arrival_airport_icao)); |
||
6278 | |||
6279 | $aircraft_array = array(); |
||
6280 | $temp_array = array(); |
||
6281 | |||
6282 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
6283 | { |
||
6284 | $temp_array['aircraft_icao'] = $row['aircraft_icao']; |
||
6285 | $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
6286 | $temp_array['registration'] = $row['registration']; |
||
6287 | $temp_array['airline_name'] = $row['airline_name']; |
||
6288 | $temp_array['image_thumbnail'] = ""; |
||
6289 | if($row['registration'] != "") |
||
6290 | { |
||
6291 | $image_array = $Image->getSpotterImage($row['registration']); |
||
6292 | if (isset($image_array[0]['image_thumbnail'])) $temp_array['image_thumbnail'] = $image_array[0]['image_thumbnail']; |
||
6293 | } |
||
6294 | $temp_array['registration_count'] = $row['registration_count']; |
||
6295 | |||
6296 | $aircraft_array[] = $temp_array; |
||
6297 | } |
||
6298 | |||
6299 | return $aircraft_array; |
||
6300 | } |
||
6301 | |||
6302 | |||
6303 | /** |
||
6304 | * Gets all aircraft manufacturer that have flown over by route |
||
6305 | * |
||
6306 | * @return Array the aircraft manufacturer list |
||
6307 | * |
||
6308 | */ |
||
6309 | public function countAllAircraftManufacturerByRoute($departure_airport_icao, $arrival_airport_icao,$filters = array()) |
||
6310 | { |
||
6311 | $filter_query = $this->getFilter($filters,true,true); |
||
6312 | $departure_airport_icao = filter_var($departure_airport_icao,FILTER_SANITIZE_STRING); |
||
6313 | $arrival_airport_icao = filter_var($arrival_airport_icao,FILTER_SANITIZE_STRING); |
||
6314 | |||
6315 | $query = "SELECT DISTINCT spotter_output.aircraft_manufacturer, COUNT(spotter_output.aircraft_manufacturer) AS aircraft_manufacturer_count |
||
6316 | FROM spotter_output".$filter_query." spotter_output.aircraft_manufacturer <> '' AND (spotter_output.departure_airport_icao = :departure_airport_icao) AND (spotter_output.arrival_airport_icao = :arrival_airport_icao) |
||
6317 | GROUP BY spotter_output.aircraft_manufacturer |
||
6318 | ORDER BY aircraft_manufacturer_count DESC"; |
||
6319 | |||
6320 | |||
6321 | $sth = $this->db->prepare($query); |
||
6322 | $sth->execute(array(':departure_airport_icao' => $departure_airport_icao,':arrival_airport_icao' => $arrival_airport_icao)); |
||
6323 | |||
6324 | $aircraft_array = array(); |
||
6325 | $temp_array = array(); |
||
6326 | |||
6327 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
6328 | { |
||
6329 | $temp_array['aircraft_manufacturer'] = $row['aircraft_manufacturer']; |
||
6330 | $temp_array['aircraft_manufacturer_count'] = $row['aircraft_manufacturer_count']; |
||
6331 | |||
6332 | $aircraft_array[] = $temp_array; |
||
6333 | } |
||
6334 | |||
6335 | return $aircraft_array; |
||
6336 | } |
||
6337 | |||
6338 | |||
6339 | |||
6340 | |||
6341 | /** |
||
6342 | * Gets all aircraft types that have flown over by country |
||
6343 | * |
||
6344 | * @return Array the aircraft list |
||
6345 | * |
||
6346 | */ |
||
6347 | public function countAllAircraftTypesByCountry($country,$filters = array()) |
||
6348 | { |
||
6349 | $filter_query = $this->getFilter($filters,true,true); |
||
6350 | $country = filter_var($country,FILTER_SANITIZE_STRING); |
||
6351 | $query = "SELECT DISTINCT spotter_output.aircraft_icao, COUNT(spotter_output.aircraft_icao) AS aircraft_icao_count, spotter_output.aircraft_name |
||
6352 | FROM spotter_output".$filter_query." ((spotter_output.departure_airport_country = :country) OR (spotter_output.arrival_airport_country = :country)) OR spotter_output.airline_country = :country |
||
6353 | GROUP BY spotter_output.aircraft_name, spotter_output.aircraft_icao |
||
6354 | ORDER BY aircraft_icao_count DESC"; |
||
6355 | |||
6356 | |||
6357 | $sth = $this->db->prepare($query); |
||
6358 | $sth->execute(array(':country' => $country)); |
||
6359 | |||
6360 | $aircraft_array = array(); |
||
6361 | $temp_array = array(); |
||
6362 | |||
6363 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
6364 | { |
||
6365 | $temp_array['aircraft_icao'] = $row['aircraft_icao']; |
||
6366 | $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
6367 | $temp_array['aircraft_icao_count'] = $row['aircraft_icao_count']; |
||
6368 | |||
6369 | $aircraft_array[] = $temp_array; |
||
6370 | } |
||
6371 | |||
6372 | return $aircraft_array; |
||
6373 | } |
||
6374 | |||
6375 | |||
6376 | /** |
||
6377 | * Gets all aircraft registration that have flown over by country |
||
6378 | * |
||
6379 | * @return Array the aircraft list |
||
6380 | * |
||
6381 | */ |
||
6382 | public function countAllAircraftRegistrationByCountry($country,$filters = array()) |
||
6383 | { |
||
6384 | $filter_query = $this->getFilter($filters,true,true); |
||
6385 | $Image = new Image($this->db); |
||
6386 | $country = filter_var($country,FILTER_SANITIZE_STRING); |
||
6387 | $query = "SELECT DISTINCT spotter_output.aircraft_icao, COUNT(spotter_output.registration) AS registration_count, spotter_output.aircraft_name, spotter_output.registration, spotter_output.airline_name |
||
6388 | FROM spotter_output".$filter_query." spotter_output.registration <> '' AND (((spotter_output.departure_airport_country = :country) OR (spotter_output.arrival_airport_country = :country)) OR spotter_output.airline_country = :country) |
||
6389 | GROUP BY spotter_output.registration, spotter_output.aircraft_icao, spotter_output.aircraft_name, spotter_output.airline_name |
||
6390 | ORDER BY registration_count DESC"; |
||
6391 | |||
6392 | |||
6393 | $sth = $this->db->prepare($query); |
||
6394 | $sth->execute(array(':country' => $country)); |
||
6395 | |||
6396 | $aircraft_array = array(); |
||
6397 | $temp_array = array(); |
||
6398 | |||
6399 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
6400 | { |
||
6401 | $temp_array['aircraft_icao'] = $row['aircraft_icao']; |
||
6402 | $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
6403 | $temp_array['registration'] = $row['registration']; |
||
6404 | $temp_array['airline_name'] = $row['airline_name']; |
||
6405 | $temp_array['image_thumbnail'] = ""; |
||
6406 | if($row['registration'] != "") |
||
6407 | { |
||
6408 | $image_array = $Image->getSpotterImage($row['registration']); |
||
6409 | if (isset($image_array[0]['image_thumbnail'])) $temp_array['image_thumbnail'] = $image_array[0]['image_thumbnail']; |
||
6410 | } |
||
6411 | $temp_array['registration_count'] = $row['registration_count']; |
||
6412 | |||
6413 | $aircraft_array[] = $temp_array; |
||
6414 | } |
||
6415 | |||
6416 | return $aircraft_array; |
||
6417 | } |
||
6418 | |||
6419 | |||
6420 | /** |
||
6421 | * Gets all aircraft manufacturer that have flown over by country |
||
6422 | * |
||
6423 | * @return Array the aircraft manufacturer list |
||
6424 | * |
||
6425 | */ |
||
6426 | public function countAllAircraftManufacturerByCountry($country,$filters = array()) |
||
6427 | { |
||
6428 | $filter_query = $this->getFilter($filters,true,true); |
||
6429 | $country = filter_var($country,FILTER_SANITIZE_STRING); |
||
6430 | $query = "SELECT DISTINCT spotter_output.aircraft_manufacturer, COUNT(spotter_output.aircraft_manufacturer) AS aircraft_manufacturer_count |
||
6431 | FROM spotter_output".$filter_query." spotter_output.aircraft_manufacturer <> '' AND (((spotter_output.departure_airport_country = :country) OR (spotter_output.arrival_airport_country = :country)) OR spotter_output.airline_country = :country) |
||
6432 | GROUP BY spotter_output.aircraft_manufacturer |
||
6433 | ORDER BY aircraft_manufacturer_count DESC"; |
||
6434 | |||
6435 | |||
6436 | $sth = $this->db->prepare($query); |
||
6437 | $sth->execute(array(':country' => $country)); |
||
6438 | |||
6439 | $aircraft_array = array(); |
||
6440 | $temp_array = array(); |
||
6441 | |||
6442 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
6443 | { |
||
6444 | $temp_array['aircraft_manufacturer'] = $row['aircraft_manufacturer']; |
||
6445 | $temp_array['aircraft_manufacturer_count'] = $row['aircraft_manufacturer_count']; |
||
6446 | |||
6447 | $aircraft_array[] = $temp_array; |
||
6448 | } |
||
6449 | |||
6450 | return $aircraft_array; |
||
6451 | } |
||
6452 | |||
6453 | |||
6454 | |||
6455 | /** |
||
6456 | * Gets all aircraft manufacturers that have flown over |
||
6457 | * |
||
6458 | * @return Array the aircraft list |
||
6459 | * |
||
6460 | */ |
||
6461 | public function countAllAircraftManufacturers($filters = array(),$year = '',$month = '',$day = '') |
||
6462 | { |
||
6463 | global $globalDBdriver; |
||
6464 | $filter_query = $this->getFilter($filters,true,true); |
||
6465 | $query = "SELECT DISTINCT spotter_output.aircraft_manufacturer, COUNT(spotter_output.aircraft_manufacturer) AS aircraft_manufacturer_count |
||
6466 | FROM spotter_output ".$filter_query." spotter_output.aircraft_manufacturer <> '' AND spotter_output.aircraft_manufacturer <> 'Not Available'"; |
||
6467 | $query_values = array(); |
||
6468 | if ($year != '') { |
||
6469 | if ($globalDBdriver == 'mysql') { |
||
6470 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
6471 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
6472 | } else { |
||
6473 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
6474 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
6475 | } |
||
6476 | } |
||
6477 | if ($month != '') { |
||
6478 | if ($globalDBdriver == 'mysql') { |
||
6479 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
6480 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
6481 | } else { |
||
6482 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
6483 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
6484 | } |
||
6485 | } |
||
6486 | if ($day != '') { |
||
6487 | if ($globalDBdriver == 'mysql') { |
||
6488 | $query .= " AND DAY(spotter_output.date) = :day"; |
||
6489 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
6490 | } else { |
||
6491 | $query .= " AND EXTRACT(DAY FROM spotter_output.date) = :day"; |
||
6492 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
6493 | } |
||
6494 | } |
||
6495 | $query .= " GROUP BY spotter_output.aircraft_manufacturer |
||
6496 | ORDER BY aircraft_manufacturer_count DESC |
||
6497 | LIMIT 10"; |
||
6498 | |||
6499 | |||
6500 | $sth = $this->db->prepare($query); |
||
6501 | $sth->execute($query_values); |
||
6502 | |||
6503 | $manufacturer_array = array(); |
||
6504 | $temp_array = array(); |
||
6505 | |||
6506 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
6507 | { |
||
6508 | $temp_array['aircraft_manufacturer'] = $row['aircraft_manufacturer']; |
||
6509 | $temp_array['aircraft_manufacturer_count'] = $row['aircraft_manufacturer_count']; |
||
6510 | |||
6511 | $manufacturer_array[] = $temp_array; |
||
6512 | } |
||
6513 | |||
6514 | return $manufacturer_array; |
||
6515 | } |
||
6516 | |||
6517 | |||
6518 | |||
6519 | /** |
||
6520 | * Gets all aircraft registrations that have flown over |
||
6521 | * |
||
6522 | * @return Array the aircraft list |
||
6523 | * |
||
6524 | */ |
||
6525 | public function countAllAircraftRegistrations($limit = true,$olderthanmonths = 0,$sincedate = '',$filters = array(),$year = '', $month = '', $day = '') |
||
6526 | { |
||
6527 | global $globalDBdriver; |
||
6528 | $Image = new Image($this->db); |
||
6529 | $filter_query = $this->getFilter($filters,true,true); |
||
6530 | $query = "SELECT DISTINCT spotter_output.registration, COUNT(spotter_output.registration) AS aircraft_registration_count, spotter_output.aircraft_icao, spotter_output.aircraft_name, spotter_output.airline_name |
||
6531 | FROM spotter_output ".$filter_query." spotter_output.registration <> '' AND spotter_output.registration <> 'NA'"; |
||
6532 | if ($olderthanmonths > 0) { |
||
6533 | if ($globalDBdriver == 'mysql') { |
||
6534 | $query .= ' AND spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$olderthanmonths.' MONTH)'; |
||
6535 | } else { |
||
6536 | $query .= " AND spotter_output.date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$olderthanmonths." MONTHS'"; |
||
6537 | } |
||
6538 | } |
||
6539 | if ($sincedate != '') { |
||
6540 | if ($globalDBdriver == 'mysql') { |
||
6541 | $query .= " AND spotter_output.date > '".$sincedate."'"; |
||
6542 | } else { |
||
6543 | $query .= " AND spotter_output.date > CAST('".$sincedate."' AS TIMESTAMP)"; |
||
6544 | } |
||
6545 | } |
||
6546 | $query_values = array(); |
||
6547 | if ($year != '') { |
||
6548 | if ($globalDBdriver == 'mysql') { |
||
6549 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
6550 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
6551 | } else { |
||
6552 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
6553 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
6554 | } |
||
6555 | } |
||
6556 | if ($month != '') { |
||
6557 | if ($globalDBdriver == 'mysql') { |
||
6558 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
6559 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
6560 | } else { |
||
6561 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
6562 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
6563 | } |
||
6564 | } |
||
6565 | if ($day != '') { |
||
6566 | if ($globalDBdriver == 'mysql') { |
||
6567 | $query .= " AND DAY(spotter_output.date) = :day"; |
||
6568 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
6569 | } else { |
||
6570 | $query .= " AND EXTRACT(DAY FROM spotter_output.date) = :day"; |
||
6571 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
6572 | } |
||
6573 | } |
||
6574 | $query .= " GROUP BY spotter_output.registration, spotter_output.aircraft_icao, spotter_output.aircraft_name, spotter_output.airline_name ORDER BY aircraft_registration_count DESC"; |
||
6575 | if ($limit) $query .= " LIMIT 10 OFFSET 0"; |
||
6576 | |||
6577 | $sth = $this->db->prepare($query); |
||
6578 | $sth->execute($query_values); |
||
6579 | |||
6580 | $aircraft_array = array(); |
||
6581 | $temp_array = array(); |
||
6582 | |||
6583 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
6584 | { |
||
6585 | $temp_array['registration'] = $row['registration']; |
||
6586 | $temp_array['aircraft_registration_count'] = $row['aircraft_registration_count']; |
||
6587 | $temp_array['aircraft_icao'] = $row['aircraft_icao']; |
||
6588 | $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
6589 | $temp_array['airline_name'] = $row['airline_name']; |
||
6590 | $temp_array['image_thumbnail'] = ""; |
||
6591 | if($row['registration'] != "") |
||
6592 | { |
||
6593 | $image_array = $Image->getSpotterImage($row['registration']); |
||
6594 | if (isset($image_array[0]['image_thumbnail'])) $temp_array['image_thumbnail'] = $image_array[0]['image_thumbnail']; |
||
6595 | } |
||
6596 | |||
6597 | $aircraft_array[] = $temp_array; |
||
6598 | } |
||
6599 | |||
6600 | return $aircraft_array; |
||
6601 | } |
||
6602 | |||
6603 | |||
6604 | /** |
||
6605 | * Gets all aircraft registrations that have flown over |
||
6606 | * |
||
6607 | * @return Array the aircraft list |
||
6608 | * |
||
6609 | */ |
||
6610 | public function countAllAircraftRegistrationsByAirlines($limit = true,$olderthanmonths = 0,$sincedate = '',$filters = array()) |
||
6611 | { |
||
6612 | global $globalDBdriver; |
||
6613 | $filter_query = $this->getFilter($filters,true,true); |
||
6614 | $Image = new Image($this->db); |
||
6615 | $query = "SELECT DISTINCT spotter_output.airline_icao, spotter_output.registration, COUNT(spotter_output.registration) AS aircraft_registration_count, spotter_output.aircraft_icao, spotter_output.aircraft_name, spotter_output.airline_name |
||
6616 | FROM spotter_output".$filter_query." spotter_output.airline_icao <> '' AND spotter_output.registration <> '' AND spotter_output.registration <> 'NA' "; |
||
6617 | if ($olderthanmonths > 0) { |
||
6618 | if ($globalDBdriver == 'mysql') { |
||
6619 | $query .= 'AND spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$olderthanmonths.' MONTH) '; |
||
6620 | } else { |
||
6621 | $query .= "AND spotter_output.date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$olderthanmonths." MONTHS' "; |
||
6622 | } |
||
6623 | } |
||
6624 | if ($sincedate != '') { |
||
6625 | if ($globalDBdriver == 'mysql') { |
||
6626 | $query .= "AND spotter_output.date > '".$sincedate."' "; |
||
6627 | } else { |
||
6628 | $query .= "AND spotter_output.date > CAST('".$sincedate."' AS TIMESTAMP)"; |
||
6629 | } |
||
6630 | } |
||
6631 | |||
6632 | // if ($olderthanmonths > 0) $query .= 'AND date < DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$olderthanmonths.' MONTH) '; |
||
6633 | //if ($sincedate != '') $query .= "AND date > '".$sincedate."' "; |
||
6634 | $query .= "GROUP BY spotter_output.airline_icao, spotter_output.registration, spotter_output.aircraft_icao, spotter_output.aircraft_name, spotter_output.airline_name ORDER BY aircraft_registration_count DESC"; |
||
6635 | if ($limit) $query .= " LIMIT 10 OFFSET 0"; |
||
6636 | |||
6637 | $sth = $this->db->prepare($query); |
||
6638 | $sth->execute(); |
||
6639 | |||
6640 | $aircraft_array = array(); |
||
6641 | $temp_array = array(); |
||
6642 | |||
6643 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
6644 | { |
||
6645 | $temp_array['registration'] = $row['registration']; |
||
6646 | $temp_array['aircraft_registration_count'] = $row['aircraft_registration_count']; |
||
6647 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
6648 | $temp_array['aircraft_icao'] = $row['aircraft_icao']; |
||
6649 | $temp_array['aircraft_name'] = $row['aircraft_name']; |
||
6650 | $temp_array['airline_name'] = $row['airline_name']; |
||
6651 | $temp_array['image_thumbnail'] = ""; |
||
6652 | if($row['registration'] != "") |
||
6653 | { |
||
6654 | $image_array = $Image->getSpotterImage($row['registration']); |
||
6655 | if (isset($image_array[0]['image_thumbnail'])) $temp_array['image_thumbnail'] = $image_array[0]['image_thumbnail']; |
||
6656 | } |
||
6657 | |||
6658 | $aircraft_array[] = $temp_array; |
||
6659 | } |
||
6660 | |||
6661 | return $aircraft_array; |
||
6662 | } |
||
6663 | |||
6664 | |||
6665 | /** |
||
6666 | * Gets all departure airports of the airplanes that have flown over |
||
6667 | * |
||
6668 | * @return Array the airport list |
||
6669 | * |
||
6670 | */ |
||
6671 | public function countAllDepartureAirports($limit = true, $olderthanmonths = 0, $sincedate = '',$filters = array(),$year = '',$month = '',$day = '') |
||
6672 | { |
||
6673 | global $globalDBdriver; |
||
6674 | $filter_query = $this->getFilter($filters,true,true); |
||
6675 | $query = "SELECT DISTINCT spotter_output.departure_airport_icao, COUNT(spotter_output.departure_airport_icao) AS airport_departure_icao_count, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country, airport.latitude, airport.longitude |
||
6676 | FROM airport, spotter_output".$filter_query." airport.icao = spotter_output.departure_airport_icao AND spotter_output.departure_airport_name <> '' AND spotter_output.departure_airport_icao <> 'NA' AND spotter_output.departure_airport_icao <> ''"; |
||
6677 | if ($olderthanmonths > 0) { |
||
6678 | if ($globalDBdriver == 'mysql') { |
||
6679 | $query .= ' AND spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$olderthanmonths.' MONTH)'; |
||
6680 | } else { |
||
6681 | $query .= " AND spotter_output.date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$olderthanmonths." MONTHS'"; |
||
6682 | } |
||
6683 | } |
||
6684 | if ($sincedate != '') { |
||
6685 | if ($globalDBdriver == 'mysql') { |
||
6686 | $query .= " AND spotter_output.date > '".$sincedate."'"; |
||
6687 | } else { |
||
6688 | $query .= " AND spotter_output.date > CAST('".$sincedate."' AS TIMESTAMP)"; |
||
6689 | } |
||
6690 | } |
||
6691 | $query_values = array(); |
||
6692 | if ($year != '') { |
||
6693 | if ($globalDBdriver == 'mysql') { |
||
6694 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
6695 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
6696 | } else { |
||
6697 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
6698 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
6699 | } |
||
6700 | } |
||
6701 | if ($month != '') { |
||
6702 | if ($globalDBdriver == 'mysql') { |
||
6703 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
6704 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
6705 | } else { |
||
6706 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
6707 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
6708 | } |
||
6709 | } |
||
6710 | if ($day != '') { |
||
6711 | if ($globalDBdriver == 'mysql') { |
||
6712 | $query .= " AND DAY(spotter_output.date) = :day"; |
||
6713 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
6714 | } else { |
||
6715 | $query .= " AND EXTRACT(DAY FROM spotter_output.date) = :day"; |
||
6716 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
6717 | } |
||
6718 | } |
||
6719 | $query .= " GROUP BY spotter_output.departure_airport_icao, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country, airport.latitude, airport.longitude |
||
6720 | ORDER BY airport_departure_icao_count DESC"; |
||
6721 | if ($limit) $query .= " LIMIT 10 OFFSET 0"; |
||
6722 | |||
6723 | $sth = $this->db->prepare($query); |
||
6724 | $sth->execute($query_values); |
||
6725 | |||
6726 | $airport_array = array(); |
||
6727 | $temp_array = array(); |
||
6728 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
6729 | { |
||
6730 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
6731 | $temp_array['airport_departure_icao_count'] = $row['airport_departure_icao_count']; |
||
6732 | $temp_array['airport_departure_name'] = $row['departure_airport_name']; |
||
6733 | $temp_array['airport_departure_city'] = $row['departure_airport_city']; |
||
6734 | $temp_array['airport_departure_country'] = $row['departure_airport_country']; |
||
6735 | $temp_array['airport_departure_latitude'] = $row['latitude']; |
||
6736 | $temp_array['airport_departure_longitude'] = $row['longitude']; |
||
6737 | $airport_array[] = $temp_array; |
||
6738 | } |
||
6739 | return $airport_array; |
||
6740 | } |
||
6741 | |||
6742 | /** |
||
6743 | * Gets all departure airports of the airplanes that have flown over |
||
6744 | * |
||
6745 | * @return Array the airport list |
||
6746 | * |
||
6747 | */ |
||
6748 | public function countAllDepartureAirportsByAirlines($limit = true, $olderthanmonths = 0, $sincedate = '',$filters = array()) |
||
6749 | { |
||
6750 | global $globalDBdriver; |
||
6751 | $filter_query = $this->getFilter($filters,true,true); |
||
6752 | $query = "SELECT DISTINCT spotter_output.airline_icao, spotter_output.departure_airport_icao, COUNT(spotter_output.departure_airport_icao) AS airport_departure_icao_count, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country |
||
6753 | FROM spotter_output".$filter_query." spotter_output.airline_icao <> '' AND spotter_output.departure_airport_name <> '' AND spotter_output.departure_airport_icao <> 'NA' AND spotter_output.departure_airport_icao <> '' "; |
||
6754 | if ($olderthanmonths > 0) { |
||
6755 | if ($globalDBdriver == 'mysql') { |
||
6756 | $query .= 'AND spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$olderthanmonths.' MONTH) '; |
||
6757 | } else { |
||
6758 | $query .= "AND spotter_output.date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$olderthanmonths." MONTHS' "; |
||
6759 | } |
||
6760 | } |
||
6761 | if ($sincedate != '') { |
||
6762 | if ($globalDBdriver == 'mysql') { |
||
6763 | $query .= "AND spotter_output.date > '".$sincedate."' "; |
||
6764 | } else { |
||
6765 | $query .= "AND spotter_output.date > CAST('".$sincedate."' AS TIMESTAMP)"; |
||
6766 | } |
||
6767 | } |
||
6768 | |||
6769 | //if ($olderthanmonths > 0) $query .= 'AND date < DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$olderthanmonths.' MONTH) '; |
||
6770 | //if ($sincedate != '') $query .= "AND date > '".$sincedate."' "; |
||
6771 | $query .= "GROUP BY spotter_output.airline_icao, spotter_output.departure_airport_icao, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country |
||
6772 | ORDER BY airport_departure_icao_count DESC"; |
||
6773 | if ($limit) $query .= " LIMIT 10 OFFSET 0"; |
||
6774 | |||
6775 | $sth = $this->db->prepare($query); |
||
6776 | $sth->execute(); |
||
6777 | |||
6778 | $airport_array = array(); |
||
6779 | $temp_array = array(); |
||
6780 | |||
6781 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
6782 | { |
||
6783 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
6784 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
6785 | $temp_array['airport_departure_icao_count'] = $row['airport_departure_icao_count']; |
||
6786 | $temp_array['airport_departure_name'] = $row['departure_airport_name']; |
||
6787 | $temp_array['airport_departure_city'] = $row['departure_airport_city']; |
||
6788 | $temp_array['airport_departure_country'] = $row['departure_airport_country']; |
||
6789 | |||
6790 | $airport_array[] = $temp_array; |
||
6791 | } |
||
6792 | return $airport_array; |
||
6793 | } |
||
6794 | |||
6795 | /** |
||
6796 | * Gets all detected departure airports of the airplanes that have flown over |
||
6797 | * |
||
6798 | * @return Array the airport list |
||
6799 | * |
||
6800 | */ |
||
6801 | public function countAllDetectedDepartureAirports($limit = true, $olderthanmonths = 0, $sincedate = '',$filters = array(),$year = '',$month = '',$day = '') |
||
6802 | { |
||
6803 | global $globalDBdriver; |
||
6804 | $filter_query = $this->getFilter($filters,true,true); |
||
6805 | $query = "SELECT DISTINCT spotter_output.real_departure_airport_icao AS departure_airport_icao, COUNT(spotter_output.real_departure_airport_icao) AS airport_departure_icao_count, airport.name as departure_airport_name, airport.city as departure_airport_city, airport.country as departure_airport_country, airport.latitude as departure_airport_latitude, airport.longitude as departure_airport_longitude |
||
6806 | FROM airport, spotter_output".$filter_query." spotter_output.real_departure_airport_icao <> '' AND spotter_output.real_departure_airport_icao <> 'NA' AND airport.icao = spotter_output.real_departure_airport_icao"; |
||
6807 | if ($olderthanmonths > 0) { |
||
6808 | if ($globalDBdriver == 'mysql') { |
||
6809 | $query .= ' AND spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$olderthanmonths.' MONTH)'; |
||
6810 | } else { |
||
6811 | $query .= " AND spotter_output.date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$olderthanmonths." MONTHS'"; |
||
6812 | } |
||
6813 | } |
||
6814 | if ($sincedate != '') { |
||
6815 | if ($globalDBdriver == 'mysql') { |
||
6816 | $query .= " AND spotter_output.date > '".$sincedate."'"; |
||
6817 | } else { |
||
6818 | $query .= " AND spotter_output.date > CAST('".$sincedate."' AS TIMESTAMP)"; |
||
6819 | } |
||
6820 | } |
||
6821 | $query_values = array(); |
||
6822 | if ($year != '') { |
||
6823 | if ($globalDBdriver == 'mysql') { |
||
6824 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
6825 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
6826 | } else { |
||
6827 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
6828 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
6829 | } |
||
6830 | } |
||
6831 | if ($month != '') { |
||
6832 | if ($globalDBdriver == 'mysql') { |
||
6833 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
6834 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
6835 | } else { |
||
6836 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
6837 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
6838 | } |
||
6839 | } |
||
6840 | if ($day != '') { |
||
6841 | if ($globalDBdriver == 'mysql') { |
||
6842 | $query .= " AND DAY(spotter_output.date) = :day"; |
||
6843 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
6844 | } else { |
||
6845 | $query .= " AND EXTRACT(DAY FROM spotter_output.date) = :day"; |
||
6846 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
6847 | } |
||
6848 | } |
||
6849 | $query .= " GROUP BY spotter_output.real_departure_airport_icao, airport.name, airport.city, airport.country, airport.latitude, airport.longitude |
||
6850 | ORDER BY airport_departure_icao_count DESC"; |
||
6851 | if ($limit) $query .= " LIMIT 10 OFFSET 0"; |
||
6852 | //echo $query; |
||
6853 | $sth = $this->db->prepare($query); |
||
6854 | $sth->execute($query_values); |
||
6855 | |||
6856 | $airport_array = array(); |
||
6857 | $temp_array = array(); |
||
6858 | |||
6859 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
6860 | { |
||
6861 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
6862 | $temp_array['airport_departure_icao_count'] = $row['airport_departure_icao_count']; |
||
6863 | $temp_array['airport_departure_name'] = $row['departure_airport_name']; |
||
6864 | $temp_array['airport_departure_city'] = $row['departure_airport_city']; |
||
6865 | $temp_array['airport_departure_country'] = $row['departure_airport_country']; |
||
6866 | $temp_array['airport_departure_latitude'] = $row['departure_airport_latitude']; |
||
6867 | $temp_array['airport_departure_longitude'] = $row['departure_airport_longitude']; |
||
6868 | |||
6869 | $airport_array[] = $temp_array; |
||
6870 | } |
||
6871 | return $airport_array; |
||
6872 | } |
||
6873 | |||
6874 | /** |
||
6875 | * Gets all detected departure airports of the airplanes that have flown over |
||
6876 | * |
||
6877 | * @return Array the airport list |
||
6878 | * |
||
6879 | */ |
||
6880 | public function countAllDetectedDepartureAirportsByAirlines($limit = true, $olderthanmonths = 0, $sincedate = '',$filters = array()) |
||
6881 | { |
||
6882 | global $globalDBdriver; |
||
6883 | $filter_query = $this->getFilter($filters,true,true); |
||
6884 | $query = "SELECT DISTINCT spotter_output.airline_icao, spotter_output.real_departure_airport_icao AS departure_airport_icao, COUNT(spotter_output.real_departure_airport_icao) AS airport_departure_icao_count, airport.name as departure_airport_name, airport.city as departure_airport_city, airport.country as departure_airport_country |
||
6885 | FROM airport, spotter_output".$filter_query." spotter_output.airline_icao <> '' AND spotter_output.real_departure_airport_icao <> '' AND spotter_output.real_departure_airport_icao <> 'NA' AND airport.icao = spotter_output.real_departure_airport_icao "; |
||
6886 | if ($olderthanmonths > 0) { |
||
6887 | if ($globalDBdriver == 'mysql') { |
||
6888 | $query .= 'AND spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$olderthanmonths.' MONTH) '; |
||
6889 | } else { |
||
6890 | $query .= "AND spotter_output.date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$olderthanmonths." MONTHS' "; |
||
6891 | } |
||
6892 | } |
||
6893 | if ($sincedate != '') { |
||
6894 | if ($globalDBdriver == 'mysql') { |
||
6895 | $query .= "AND spotter_output.date > '".$sincedate."' "; |
||
6896 | } else { |
||
6897 | $query .= "AND spotter_output.date > CAST('".$sincedate."' AS TIMESTAMP) "; |
||
6898 | } |
||
6899 | } |
||
6900 | |||
6901 | //if ($olderthanmonths > 0) $query .= 'AND date < DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$olderthanmonths.' MONTH) '; |
||
6902 | //if ($sincedate != '') $query .= "AND date > '".$sincedate."' "; |
||
6903 | $query .= "GROUP BY spotter_output.airline_icao, spotter_output.real_departure_airport_icao, airport.name, airport.city, airport.country |
||
6904 | ORDER BY airport_departure_icao_count DESC"; |
||
6905 | if ($limit) $query .= " LIMIT 10 OFFSET 0"; |
||
6906 | |||
6907 | $sth = $this->db->prepare($query); |
||
6908 | $sth->execute(); |
||
6909 | |||
6910 | $airport_array = array(); |
||
6911 | $temp_array = array(); |
||
6912 | |||
6913 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
6914 | { |
||
6915 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
6916 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
6917 | $temp_array['airport_departure_icao_count'] = $row['airport_departure_icao_count']; |
||
6918 | $temp_array['airport_departure_name'] = $row['departure_airport_name']; |
||
6919 | $temp_array['airport_departure_city'] = $row['departure_airport_city']; |
||
6920 | $temp_array['airport_departure_country'] = $row['departure_airport_country']; |
||
6921 | |||
6922 | $airport_array[] = $temp_array; |
||
6923 | } |
||
6924 | return $airport_array; |
||
6925 | } |
||
6926 | |||
6927 | /** |
||
6928 | * Gets all departure airports of the airplanes that have flown over based on an airline icao |
||
6929 | * |
||
6930 | * @return Array the airport list |
||
6931 | * |
||
6932 | */ |
||
6933 | public function countAllDepartureAirportsByAirline($airline_icao,$filters = array()) |
||
6934 | { |
||
6935 | $filter_query = $this->getFilter($filters,true,true); |
||
6936 | $airline_icao = filter_var($airline_icao,FILTER_SANITIZE_STRING); |
||
6937 | $query = "SELECT DISTINCT spotter_output.departure_airport_icao, COUNT(spotter_output.departure_airport_icao) AS airport_departure_icao_count, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country |
||
6938 | FROM spotter_output".$filter_query." spotter_output.departure_airport_name <> '' AND spotter_output.departure_airport_icao <> 'NA' AND spotter_output.airline_icao = :airline_icao AND spotter_output.departure_airport_icao <> '' |
||
6939 | GROUP BY spotter_output.departure_airport_icao, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country |
||
6940 | ORDER BY airport_departure_icao_count DESC"; |
||
6941 | |||
6942 | |||
6943 | $sth = $this->db->prepare($query); |
||
6944 | $sth->execute(array(':airline_icao' => $airline_icao)); |
||
6945 | |||
6946 | $airport_array = array(); |
||
6947 | $temp_array = array(); |
||
6948 | |||
6949 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
6950 | { |
||
6951 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
6952 | $temp_array['airport_departure_icao_count'] = $row['airport_departure_icao_count']; |
||
6953 | $temp_array['airport_departure_name'] = $row['departure_airport_name']; |
||
6954 | $temp_array['airport_departure_city'] = $row['departure_airport_city']; |
||
6955 | $temp_array['airport_departure_country'] = $row['departure_airport_country']; |
||
6956 | |||
6957 | $airport_array[] = $temp_array; |
||
6958 | } |
||
6959 | |||
6960 | return $airport_array; |
||
6961 | } |
||
6962 | |||
6963 | |||
6964 | |||
6965 | /** |
||
6966 | * Gets all departure airports by country of the airplanes that have flown over based on an airline icao |
||
6967 | * |
||
6968 | * @return Array the airport list |
||
6969 | * |
||
6970 | */ |
||
6971 | public function countAllDepartureAirportCountriesByAirline($airline_icao,$filters = array()) |
||
6972 | { |
||
6973 | $filter_query = $this->getFilter($filters,true,true); |
||
6974 | $airline_icao = filter_var($airline_icao,FILTER_SANITIZE_STRING); |
||
6975 | $query = "SELECT DISTINCT spotter_output.departure_airport_country, COUNT(spotter_output.departure_airport_country) AS airport_departure_country_count, countries.iso3 AS departure_airport_country_iso3 |
||
6976 | FROM countries,spotter_output".$filter_query." countries.name = spotter_output.departure_airport_country AND spotter_output.departure_airport_country <> '' AND spotter_output.airline_icao = :airline_icao |
||
6977 | GROUP BY spotter_output.departure_airport_country, countries.iso3 |
||
6978 | ORDER BY airport_departure_country_count DESC"; |
||
6979 | |||
6980 | $sth = $this->db->prepare($query); |
||
6981 | $sth->execute(array(':airline_icao' => $airline_icao)); |
||
6982 | |||
6983 | $airport_array = array(); |
||
6984 | $temp_array = array(); |
||
6985 | |||
6986 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
6987 | { |
||
6988 | $temp_array['departure_airport_country'] = $row['departure_airport_country']; |
||
6989 | $temp_array['airport_departure_country_count'] = $row['airport_departure_country_count']; |
||
6990 | $temp_array['departure_airport_country_iso3'] = $row['departure_airport_country_iso3']; |
||
6991 | $airport_array[] = $temp_array; |
||
6992 | } |
||
6993 | return $airport_array; |
||
6994 | } |
||
6995 | |||
6996 | |||
6997 | |||
6998 | /** |
||
6999 | * Gets all departure airports of the airplanes that have flown over based on an aircraft icao |
||
7000 | * |
||
7001 | * @return Array the airport list |
||
7002 | * |
||
7003 | */ |
||
7004 | public function countAllDepartureAirportsByAircraft($aircraft_icao,$filters = array()) |
||
7005 | { |
||
7006 | $filter_query = $this->getFilter($filters,true,true); |
||
7007 | $aircraft_icao = filter_var($aircraft_icao,FILTER_SANITIZE_STRING); |
||
7008 | $query = "SELECT DISTINCT spotter_output.departure_airport_icao, COUNT(spotter_output.departure_airport_icao) AS airport_departure_icao_count, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country |
||
7009 | FROM spotter_output".$filter_query." spotter_output.departure_airport_name <> '' AND spotter_output.departure_airport_icao <> 'NA' AND spotter_output.aircraft_icao = :aircraft_icao AND spotter_output.departure_airport_icao <> '' |
||
7010 | GROUP BY spotter_output.departure_airport_icao, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country |
||
7011 | ORDER BY airport_departure_icao_count DESC"; |
||
7012 | |||
7013 | |||
7014 | $sth = $this->db->prepare($query); |
||
7015 | $sth->execute(array(':aircraft_icao' => $aircraft_icao)); |
||
7016 | |||
7017 | $airport_array = array(); |
||
7018 | $temp_array = array(); |
||
7019 | |||
7020 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
7021 | { |
||
7022 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
7023 | $temp_array['airport_departure_icao_count'] = $row['airport_departure_icao_count']; |
||
7024 | $temp_array['airport_departure_name'] = $row['departure_airport_name']; |
||
7025 | $temp_array['airport_departure_city'] = $row['departure_airport_city']; |
||
7026 | $temp_array['airport_departure_country'] = $row['departure_airport_country']; |
||
7027 | |||
7028 | $airport_array[] = $temp_array; |
||
7029 | } |
||
7030 | |||
7031 | return $airport_array; |
||
7032 | } |
||
7033 | |||
7034 | |||
7035 | /** |
||
7036 | * Gets all departure airports by country of the airplanes that have flown over based on an aircraft icao |
||
7037 | * |
||
7038 | * @return Array the airport list |
||
7039 | * |
||
7040 | */ |
||
7041 | public function countAllDepartureAirportCountriesByAircraft($aircraft_icao,$filters = array()) |
||
7042 | { |
||
7043 | $filter_query = $this->getFilter($filters,true,true); |
||
7044 | $aircraft_icao = filter_var($aircraft_icao,FILTER_SANITIZE_STRING); |
||
7045 | $query = "SELECT DISTINCT spotter_output.departure_airport_country, COUNT(spotter_output.departure_airport_country) AS airport_departure_country_count, countries.iso3 AS departure_airport_country_iso3 |
||
7046 | FROM countries, spotter_output".$filter_query." countries.name = spotter_output.departure_airport_country AND spotter_output.departure_airport_country <> '' AND spotter_output.aircraft_icao = :aircraft_icao |
||
7047 | GROUP BY spotter_output.departure_airport_country, countries.iso3 |
||
7048 | ORDER BY airport_departure_country_count DESC"; |
||
7049 | |||
7050 | |||
7051 | $sth = $this->db->prepare($query); |
||
7052 | $sth->execute(array(':aircraft_icao' => $aircraft_icao)); |
||
7053 | |||
7054 | $airport_array = array(); |
||
7055 | $temp_array = array(); |
||
7056 | |||
7057 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
7058 | { |
||
7059 | $temp_array['departure_airport_country'] = $row['departure_airport_country']; |
||
7060 | $temp_array['airport_departure_country_count'] = $row['airport_departure_country_count']; |
||
7061 | $temp_array['departure_airport_country_iso3'] = $row['departure_airport_country_iso3']; |
||
7062 | $airport_array[] = $temp_array; |
||
7063 | } |
||
7064 | |||
7065 | return $airport_array; |
||
7066 | } |
||
7067 | |||
7068 | |||
7069 | /** |
||
7070 | * Gets all departure airports of the airplanes that have flown over based on an aircraft registration |
||
7071 | * |
||
7072 | * @return Array the airport list |
||
7073 | * |
||
7074 | */ |
||
7075 | public function countAllDepartureAirportsByRegistration($registration,$filters = array()) |
||
7076 | { |
||
7077 | $filter_query = $this->getFilter($filters,true,true); |
||
7078 | $registration = filter_var($registration,FILTER_SANITIZE_STRING); |
||
7079 | $query = "SELECT DISTINCT spotter_output.departure_airport_icao, COUNT(spotter_output.departure_airport_icao) AS airport_departure_icao_count, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country |
||
7080 | FROM spotter_output".$filter_query." spotter_output.departure_airport_name <> '' AND spotter_output.departure_airport_icao <> 'NA' AND spotter_output.registration = :registration AND spotter_output.departure_airport_icao <> '' |
||
7081 | GROUP BY spotter_output.departure_airport_icao |
||
7082 | ORDER BY airport_departure_icao_count DESC"; |
||
7083 | |||
7084 | |||
7085 | $sth = $this->db->prepare($query); |
||
7086 | $sth->execute(array(':registration' => $registration)); |
||
7087 | |||
7088 | $airport_array = array(); |
||
7089 | $temp_array = array(); |
||
7090 | |||
7091 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
7092 | { |
||
7093 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
7094 | $temp_array['airport_departure_icao_count'] = $row['airport_departure_icao_count']; |
||
7095 | $temp_array['airport_departure_name'] = $row['departure_airport_name']; |
||
7096 | $temp_array['airport_departure_city'] = $row['departure_airport_city']; |
||
7097 | $temp_array['airport_departure_country'] = $row['departure_airport_country']; |
||
7098 | |||
7099 | $airport_array[] = $temp_array; |
||
7100 | } |
||
7101 | |||
7102 | return $airport_array; |
||
7103 | } |
||
7104 | |||
7105 | |||
7106 | /** |
||
7107 | * Gets all departure airports by country of the airplanes that have flown over based on an aircraft registration |
||
7108 | * |
||
7109 | * @return Array the airport list |
||
7110 | * |
||
7111 | */ |
||
7112 | public function countAllDepartureAirportCountriesByRegistration($registration,$filters = array()) |
||
7113 | { |
||
7114 | $filter_query = $this->getFilter($filters,true,true); |
||
7115 | $registration = filter_var($registration,FILTER_SANITIZE_STRING); |
||
7116 | $query = "SELECT DISTINCT spotter_output.departure_airport_country, COUNT(spotter_output.departure_airport_country) AS airport_departure_country_count, countries.iso3 AS departure_airport_country_iso3 |
||
7117 | FROM countries,spotter_output".$filter_query." countries.name = spotter_output.departure_airport_country AND spotter_output.departure_airport_country <> '' AND spotter_output.registration = :registration |
||
7118 | GROUP BY spotter_output.departure_airport_country, countries.iso3 |
||
7119 | ORDER BY airport_departure_country_count DESC"; |
||
7120 | |||
7121 | $sth = $this->db->prepare($query); |
||
7122 | $sth->execute(array(':registration' => $registration)); |
||
7123 | $airport_array = array(); |
||
7124 | $temp_array = array(); |
||
7125 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
7126 | { |
||
7127 | $temp_array['departure_airport_country'] = $row['departure_airport_country']; |
||
7128 | $temp_array['departure_airport_country_iso3'] = $row['departure_airport_country_iso3']; |
||
7129 | $temp_array['airport_departure_country_count'] = $row['airport_departure_country_count']; |
||
7130 | $airport_array[] = $temp_array; |
||
7131 | } |
||
7132 | return $airport_array; |
||
7133 | } |
||
7134 | |||
7135 | |||
7136 | /** |
||
7137 | * Gets all departure airports of the airplanes that have flown over based on an arrivl airport icao |
||
7138 | * |
||
7139 | * @return Array the airport list |
||
7140 | * |
||
7141 | */ |
||
7142 | public function countAllDepartureAirportsByAirport($airport_icao,$filters = array()) |
||
7143 | { |
||
7144 | $filter_query = $this->getFilter($filters,true,true); |
||
7145 | $airport_icao = filter_var($airport_icao,FILTER_SANITIZE_STRING); |
||
7146 | $query = "SELECT DISTINCT spotter_output.departure_airport_icao, COUNT(spotter_output.departure_airport_icao) AS airport_departure_icao_count, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country |
||
7147 | FROM spotter_output".$filter_query." spotter_output.departure_airport_name <> '' AND spotter_output.departure_airport_icao <> 'NA' AND spotter_output.arrival_airport_icao = :airport_icao AND spotter_output.departure_airport_icao <> '' |
||
7148 | GROUP BY spotter_output.departure_airport_icao, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country |
||
7149 | ORDER BY airport_departure_icao_count DESC"; |
||
7150 | |||
7151 | |||
7152 | $sth = $this->db->prepare($query); |
||
7153 | $sth->execute(array(':airport_icao' => $airport_icao)); |
||
7154 | |||
7155 | $airport_array = array(); |
||
7156 | $temp_array = array(); |
||
7157 | |||
7158 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
7159 | { |
||
7160 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
7161 | $temp_array['airport_departure_icao_count'] = $row['airport_departure_icao_count']; |
||
7162 | $temp_array['airport_departure_name'] = $row['departure_airport_name']; |
||
7163 | $temp_array['airport_departure_city'] = $row['departure_airport_city']; |
||
7164 | $temp_array['airport_departure_country'] = $row['departure_airport_country']; |
||
7165 | |||
7166 | $airport_array[] = $temp_array; |
||
7167 | } |
||
7168 | |||
7169 | return $airport_array; |
||
7170 | } |
||
7171 | |||
7172 | |||
7173 | /** |
||
7174 | * Gets all departure airports by country of the airplanes that have flown over based on an airport icao |
||
7175 | * |
||
7176 | * @return Array the airport list |
||
7177 | * |
||
7178 | */ |
||
7179 | public function countAllDepartureAirportCountriesByAirport($airport_icao,$filters = array()) |
||
7180 | { |
||
7181 | $filter_query = $this->getFilter($filters,true,true); |
||
7182 | $airport_icao = filter_var($airport_icao,FILTER_SANITIZE_STRING); |
||
7183 | $query = "SELECT DISTINCT spotter_output.departure_airport_country, COUNT(spotter_output.departure_airport_country) AS airport_departure_country_count, countries.iso3 AS departure_airport_country_iso3 |
||
7184 | FROM countries,spotter_output".$filter_query." countries.name = spotter_output.departure_airport_country AND spotter_output.departure_airport_country <> '' AND spotter_output.arrival_airport_icao = :airport_icao |
||
7185 | GROUP BY spotter_output.departure_airport_country, countries.iso3 |
||
7186 | ORDER BY airport_departure_country_count DESC"; |
||
7187 | |||
7188 | $sth = $this->db->prepare($query); |
||
7189 | $sth->execute(array(':airport_icao' => $airport_icao)); |
||
7190 | |||
7191 | $airport_array = array(); |
||
7192 | $temp_array = array(); |
||
7193 | |||
7194 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
7195 | { |
||
7196 | $temp_array['departure_airport_country'] = $row['departure_airport_country']; |
||
7197 | $temp_array['airport_departure_country_count'] = $row['airport_departure_country_count']; |
||
7198 | $temp_array['departure_airport_country_iso3'] = $row['departure_airport_country_iso3']; |
||
7199 | $airport_array[] = $temp_array; |
||
7200 | } |
||
7201 | return $airport_array; |
||
7202 | } |
||
7203 | |||
7204 | |||
7205 | |||
7206 | /** |
||
7207 | * Gets all departure airports of the airplanes that have flown over based on an aircraft manufacturer |
||
7208 | * |
||
7209 | * @return Array the airport list |
||
7210 | * |
||
7211 | */ |
||
7212 | public function countAllDepartureAirportsByManufacturer($aircraft_manufacturer,$filters = array()) |
||
7213 | { |
||
7214 | $filter_query = $this->getFilter($filters,true,true); |
||
7215 | $aircraft_manufacturer = filter_var($aircraft_manufacturer,FILTER_SANITIZE_STRING); |
||
7216 | $query = "SELECT DISTINCT spotter_output.departure_airport_icao, COUNT(spotter_output.departure_airport_icao) AS airport_departure_icao_count, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country |
||
7217 | FROM spotter_output".$filter_query." spotter_output.departure_airport_name <> '' AND spotter_output.departure_airport_icao <> 'NA' AND spotter_output.aircraft_manufacturer = :aircraft_manufacturer AND spotter_output.departure_airport_icao <> '' |
||
7218 | GROUP BY spotter_output.departure_airport_icao |
||
7219 | ORDER BY airport_departure_icao_count DESC"; |
||
7220 | |||
7221 | |||
7222 | $sth = $this->db->prepare($query); |
||
7223 | $sth->execute(array(':aircraft_manufacturer' => $aircraft_manufacturer)); |
||
7224 | |||
7225 | $airport_array = array(); |
||
7226 | $temp_array = array(); |
||
7227 | |||
7228 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
7229 | { |
||
7230 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
7231 | $temp_array['airport_departure_icao_count'] = $row['airport_departure_icao_count']; |
||
7232 | $temp_array['airport_departure_name'] = $row['departure_airport_name']; |
||
7233 | $temp_array['airport_departure_city'] = $row['departure_airport_city']; |
||
7234 | $temp_array['airport_departure_country'] = $row['departure_airport_country']; |
||
7235 | |||
7236 | $airport_array[] = $temp_array; |
||
7237 | } |
||
7238 | |||
7239 | return $airport_array; |
||
7240 | } |
||
7241 | |||
7242 | |||
7243 | /** |
||
7244 | * Gets all departure airports by country of the airplanes that have flown over based on an aircraft manufacturer |
||
7245 | * |
||
7246 | * @return Array the airport list |
||
7247 | * |
||
7248 | */ |
||
7249 | public function countAllDepartureAirportCountriesByManufacturer($aircraft_manufacturer,$filters = array()) |
||
7250 | { |
||
7251 | $filter_query = $this->getFilter($filters,true,true); |
||
7252 | $aircraft_manufacturer = filter_var($aircraft_manufacturer,FILTER_SANITIZE_STRING); |
||
7253 | $query = "SELECT DISTINCT spotter_output.departure_airport_country, COUNT(spotter_output.departure_airport_country) AS airport_departure_country_count, countries.iso3 AS departure_airport_country_iso3 |
||
7254 | FROM countries, spotter_output".$filter_query." countries.name = departure_airport_country AND spotter_output.departure_airport_country <> '' AND spotter_output.aircraft_manufacturer = :aircraft_manufacturer |
||
7255 | GROUP BY spotter_output.departure_airport_country, countries.iso3 |
||
7256 | ORDER BY airport_departure_country_count DESC"; |
||
7257 | |||
7258 | $sth = $this->db->prepare($query); |
||
7259 | $sth->execute(array(':aircraft_manufacturer' => $aircraft_manufacturer)); |
||
7260 | $airport_array = array(); |
||
7261 | $temp_array = array(); |
||
7262 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
7263 | { |
||
7264 | $temp_array['departure_airport_country'] = $row['departure_airport_country']; |
||
7265 | $temp_array['departure_airport_country_iso3'] = $row['departure_airport_country_iso3']; |
||
7266 | $temp_array['airport_departure_country_count'] = $row['airport_departure_country_count']; |
||
7267 | $airport_array[] = $temp_array; |
||
7268 | } |
||
7269 | return $airport_array; |
||
7270 | } |
||
7271 | |||
7272 | |||
7273 | /** |
||
7274 | * Gets all departure airports of the airplanes that have flown over based on a date |
||
7275 | * |
||
7276 | * @return Array the airport list |
||
7277 | * |
||
7278 | */ |
||
7279 | public function countAllDepartureAirportsByDate($date,$filters = array()) |
||
7280 | { |
||
7281 | global $globalTimezone, $globalDBdriver; |
||
7282 | $filter_query = $this->getFilter($filters,true,true); |
||
7283 | $date = filter_var($date,FILTER_SANITIZE_STRING); |
||
7284 | if ($globalTimezone != '') { |
||
7285 | date_default_timezone_set($globalTimezone); |
||
7286 | $datetime = new DateTime($date); |
||
7287 | $offset = $datetime->format('P'); |
||
7288 | } else $offset = '+00:00'; |
||
7289 | |||
7290 | if ($globalDBdriver == 'mysql') { |
||
7291 | $query = "SELECT DISTINCT spotter_output.departure_airport_icao, COUNT(spotter_output.departure_airport_icao) AS airport_departure_icao_count, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country |
||
7292 | FROM spotter_output".$filter_query." spotter_output.departure_airport_name <> '' AND spotter_output.departure_airport_icao <> 'NA' AND spotter_output.departure_airport_icao <> '' AND DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) = :date |
||
7293 | GROUP BY spotter_output.departure_airport_icao, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country |
||
7294 | ORDER BY airport_departure_icao_count DESC"; |
||
7295 | } else { |
||
7296 | $query = "SELECT DISTINCT spotter_output.departure_airport_icao, COUNT(spotter_output.departure_airport_icao) AS airport_departure_icao_count, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country |
||
7297 | FROM spotter_output".$filter_query." spotter_output.departure_airport_name <> '' AND spotter_output.departure_airport_icao <> 'NA' AND spotter_output.departure_airport_icao <> '' AND to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') = :date |
||
7298 | GROUP BY spotter_output.departure_airport_icao, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country |
||
7299 | ORDER BY airport_departure_icao_count DESC"; |
||
7300 | } |
||
7301 | |||
7302 | $sth = $this->db->prepare($query); |
||
7303 | $sth->execute(array(':date' => $date, ':offset' => $offset)); |
||
7304 | |||
7305 | $airport_array = array(); |
||
7306 | $temp_array = array(); |
||
7307 | |||
7308 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
7309 | { |
||
7310 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
7311 | $temp_array['airport_departure_icao_count'] = $row['airport_departure_icao_count']; |
||
7312 | $temp_array['airport_departure_name'] = $row['departure_airport_name']; |
||
7313 | $temp_array['airport_departure_city'] = $row['departure_airport_city']; |
||
7314 | $temp_array['airport_departure_country'] = $row['departure_airport_country']; |
||
7315 | |||
7316 | $airport_array[] = $temp_array; |
||
7317 | } |
||
7318 | return $airport_array; |
||
7319 | } |
||
7320 | |||
7321 | |||
7322 | |||
7323 | /** |
||
7324 | * Gets all departure airports by country of the airplanes that have flown over based on a date |
||
7325 | * |
||
7326 | * @return Array the airport list |
||
7327 | * |
||
7328 | */ |
||
7329 | public function countAllDepartureAirportCountriesByDate($date,$filters = array()) |
||
7330 | { |
||
7331 | global $globalTimezone, $globalDBdriver; |
||
7332 | $filter_query = $this->getFilter($filters,true,true); |
||
7333 | $date = filter_var($date,FILTER_SANITIZE_STRING); |
||
7334 | if ($globalTimezone != '') { |
||
7335 | date_default_timezone_set($globalTimezone); |
||
7336 | $datetime = new DateTime($date); |
||
7337 | $offset = $datetime->format('P'); |
||
7338 | } else $offset = '+00:00'; |
||
7339 | |||
7340 | if ($globalDBdriver == 'mysql') { |
||
7341 | $query = "SELECT DISTINCT spotter_output.departure_airport_country, COUNT(spotter_output.departure_airport_country) AS airport_departure_country_count,countries.iso3 AS departure_airport_country_iso3 |
||
7342 | FROM countries,spotter_output".$filter_query." countries.name = spotter_output.departure_airport_country AND spotter_output.departure_airport_country <> '' AND DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) = :date |
||
7343 | GROUP BY spotter_output.departure_airport_country, countries.iso3 |
||
7344 | ORDER BY airport_departure_country_count DESC"; |
||
7345 | } else { |
||
7346 | $query = "SELECT DISTINCT spotter_output.departure_airport_country, COUNT(spotter_output.departure_airport_country) AS airport_departure_country_count, countries.iso3 AS departure_airport_country_iso3 |
||
7347 | FROM countries, spotter_output".$filter_query." countries.name = spotter_output.departure_airport_country AND spotter_output.departure_airport_country <> '' AND to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') = :date |
||
7348 | GROUP BY spotter_output.departure_airport_country, countries.iso3 |
||
7349 | ORDER BY airport_departure_country_count DESC"; |
||
7350 | } |
||
7351 | |||
7352 | $sth = $this->db->prepare($query); |
||
7353 | $sth->execute(array(':date' => $date, ':offset' => $offset)); |
||
7354 | |||
7355 | $airport_array = array(); |
||
7356 | $temp_array = array(); |
||
7357 | |||
7358 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
7359 | { |
||
7360 | $temp_array['departure_airport_country'] = $row['departure_airport_country']; |
||
7361 | $temp_array['departure_airport_country_iso3'] = $row['departure_airport_country_iso3']; |
||
7362 | $temp_array['airport_departure_country_count'] = $row['airport_departure_country_count']; |
||
7363 | |||
7364 | $airport_array[] = $temp_array; |
||
7365 | } |
||
7366 | return $airport_array; |
||
7367 | } |
||
7368 | |||
7369 | |||
7370 | |||
7371 | /** |
||
7372 | * Gets all departure airports of the airplanes that have flown over based on a ident/callsign |
||
7373 | * |
||
7374 | * @return Array the airport list |
||
7375 | * |
||
7376 | */ |
||
7377 | public function countAllDepartureAirportsByIdent($ident,$filters = array()) |
||
7378 | { |
||
7379 | $filter_query = $this->getFilter($filters,true,true); |
||
7380 | $ident = filter_var($ident,FILTER_SANITIZE_STRING); |
||
7381 | $query = "SELECT DISTINCT spotter_output.departure_airport_icao, COUNT(spotter_output.departure_airport_icao) AS airport_departure_icao_count, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country |
||
7382 | FROM spotter_output".$filter_query." spotter_output.departure_airport_name <> '' AND spotter_output.departure_airport_icao <> 'NA' AND spotter_output.departure_airport_icao <> '' AND spotter_output.ident = :ident |
||
7383 | GROUP BY spotter_output.departure_airport_icao, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country |
||
7384 | ORDER BY airport_departure_icao_count DESC"; |
||
7385 | |||
7386 | |||
7387 | $sth = $this->db->prepare($query); |
||
7388 | $sth->execute(array(':ident' => $ident)); |
||
7389 | |||
7390 | $airport_array = array(); |
||
7391 | $temp_array = array(); |
||
7392 | |||
7393 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
7394 | { |
||
7395 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
7396 | $temp_array['airport_departure_icao_count'] = $row['airport_departure_icao_count']; |
||
7397 | $temp_array['airport_departure_name'] = $row['departure_airport_name']; |
||
7398 | $temp_array['airport_departure_city'] = $row['departure_airport_city']; |
||
7399 | $temp_array['airport_departure_country'] = $row['departure_airport_country']; |
||
7400 | |||
7401 | $airport_array[] = $temp_array; |
||
7402 | } |
||
7403 | |||
7404 | return $airport_array; |
||
7405 | } |
||
7406 | |||
7407 | /** |
||
7408 | * Gets all departure airports of the airplanes that have flown over based on a owner |
||
7409 | * |
||
7410 | * @return Array the airport list |
||
7411 | * |
||
7412 | */ |
||
7413 | public function countAllDepartureAirportsByOwner($owner,$filters = array()) |
||
7414 | { |
||
7415 | $filter_query = $this->getFilter($filters,true,true); |
||
7416 | $owner = filter_var($owner,FILTER_SANITIZE_STRING); |
||
7417 | $query = "SELECT DISTINCT spotter_output.departure_airport_icao, COUNT(spotter_output.departure_airport_icao) AS airport_departure_icao_count, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country |
||
7418 | FROM spotter_output".$filter_query." spotter_output.departure_airport_name <> '' AND spotter_output.departure_airport_icao <> 'NA' AND spotter_output.departure_airport_icao <> '' AND spotter_output.owner_name = :owner |
||
7419 | GROUP BY spotter_output.departure_airport_icao, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country |
||
7420 | ORDER BY airport_departure_icao_count DESC"; |
||
7421 | |||
7422 | |||
7423 | $sth = $this->db->prepare($query); |
||
7424 | $sth->execute(array(':owner' => $owner)); |
||
7425 | |||
7426 | $airport_array = array(); |
||
7427 | $temp_array = array(); |
||
7428 | |||
7429 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
7430 | { |
||
7431 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
7432 | $temp_array['airport_departure_icao_count'] = $row['airport_departure_icao_count']; |
||
7433 | $temp_array['airport_departure_name'] = $row['departure_airport_name']; |
||
7434 | $temp_array['airport_departure_city'] = $row['departure_airport_city']; |
||
7435 | $temp_array['airport_departure_country'] = $row['departure_airport_country']; |
||
7436 | |||
7437 | $airport_array[] = $temp_array; |
||
7438 | } |
||
7439 | |||
7440 | return $airport_array; |
||
7441 | } |
||
7442 | |||
7443 | /** |
||
7444 | * Gets all departure airports of the airplanes that have flown over based on a pilot |
||
7445 | * |
||
7446 | * @return Array the airport list |
||
7447 | * |
||
7448 | */ |
||
7449 | public function countAllDepartureAirportsByPilot($pilot,$filters = array()) |
||
7450 | { |
||
7451 | $filter_query = $this->getFilter($filters,true,true); |
||
7452 | $pilot = filter_var($pilot,FILTER_SANITIZE_STRING); |
||
7453 | $query = "SELECT DISTINCT spotter_output.departure_airport_icao, COUNT(spotter_output.departure_airport_icao) AS airport_departure_icao_count, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country |
||
7454 | FROM spotter_output".$filter_query." spotter_output.departure_airport_name <> '' AND spotter_output.departure_airport_icao <> 'NA' AND spotter_output.departure_airport_icao <> '' AND (spotter_output.pilot_name = :pilot OR spotter_output.pilot_id = :pilot) |
||
7455 | GROUP BY spotter_output.departure_airport_icao, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country |
||
7456 | ORDER BY airport_departure_icao_count DESC"; |
||
7457 | |||
7458 | $sth = $this->db->prepare($query); |
||
7459 | $sth->execute(array(':pilot' => $pilot)); |
||
7460 | |||
7461 | $airport_array = array(); |
||
7462 | $temp_array = array(); |
||
7463 | |||
7464 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
7465 | { |
||
7466 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
7467 | $temp_array['airport_departure_icao_count'] = $row['airport_departure_icao_count']; |
||
7468 | $temp_array['airport_departure_name'] = $row['departure_airport_name']; |
||
7469 | $temp_array['airport_departure_city'] = $row['departure_airport_city']; |
||
7470 | $temp_array['airport_departure_country'] = $row['departure_airport_country']; |
||
7471 | |||
7472 | $airport_array[] = $temp_array; |
||
7473 | } |
||
7474 | |||
7475 | return $airport_array; |
||
7476 | } |
||
7477 | |||
7478 | |||
7479 | |||
7480 | /** |
||
7481 | * Gets all departure airports by country of the airplanes that have flown over based on a callsign/ident |
||
7482 | * |
||
7483 | * @return Array the airport list |
||
7484 | * |
||
7485 | */ |
||
7486 | public function countAllDepartureAirportCountriesByIdent($ident,$filters = array()) |
||
7487 | { |
||
7488 | $filter_query = $this->getFilter($filters,true,true); |
||
7489 | $ident = filter_var($ident,FILTER_SANITIZE_STRING); |
||
7490 | $query = "SELECT DISTINCT spotter_output.departure_airport_country, COUNT(spotter_output.departure_airport_country) AS airport_departure_country_count, countries.iso3 AS departure_airport_country_iso3 |
||
7491 | FROM countries,spotter_output".$filter_query." countries.name = spotter_output.departure_airport_country AND spotter_output.departure_airport_country <> '' AND spotter_output.ident = :ident |
||
7492 | GROUP BY spotter_output.departure_airport_country, countries.iso3 |
||
7493 | ORDER BY airport_departure_country_count DESC"; |
||
7494 | |||
7495 | $sth = $this->db->prepare($query); |
||
7496 | $sth->execute(array(':ident' => $ident)); |
||
7497 | $airport_array = array(); |
||
7498 | $temp_array = array(); |
||
7499 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
7500 | { |
||
7501 | $temp_array['departure_airport_country'] = $row['departure_airport_country']; |
||
7502 | $temp_array['departure_airport_country_iso3'] = $row['departure_airport_country_iso3']; |
||
7503 | $temp_array['airport_departure_country_count'] = $row['airport_departure_country_count']; |
||
7504 | $airport_array[] = $temp_array; |
||
7505 | } |
||
7506 | return $airport_array; |
||
7507 | } |
||
7508 | |||
7509 | /** |
||
7510 | * Gets all departure airports by country of the airplanes that have flown over based on owner |
||
7511 | * |
||
7512 | * @return Array the airport list |
||
7513 | * |
||
7514 | */ |
||
7515 | public function countAllDepartureAirportCountriesByOwner($owner,$filters = array()) |
||
7516 | { |
||
7517 | $filter_query = $this->getFilter($filters,true,true); |
||
7518 | $owner = filter_var($owner,FILTER_SANITIZE_STRING); |
||
7519 | $query = "SELECT DISTINCT spotter_output.departure_airport_country, COUNT(spotter_output.departure_airport_country) AS airport_departure_country_count |
||
7520 | FROM spotter_output".$filter_query." spotter_output.departure_airport_country <> '' AND spotter_output.owner_name = :owner |
||
7521 | GROUP BY spotter_output.departure_airport_country |
||
7522 | ORDER BY airport_departure_country_count DESC"; |
||
7523 | |||
7524 | $sth = $this->db->prepare($query); |
||
7525 | $sth->execute(array(':owner' => $owner)); |
||
7526 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
7527 | } |
||
7528 | |||
7529 | /** |
||
7530 | * Gets all departure airports by country of the airplanes that have flown over based on pilot |
||
7531 | * |
||
7532 | * @return Array the airport list |
||
7533 | * |
||
7534 | */ |
||
7535 | public function countAllDepartureAirportCountriesByPilot($pilot,$filters = array()) |
||
7536 | { |
||
7537 | $filter_query = $this->getFilter($filters,true,true); |
||
7538 | $pilot = filter_var($pilot,FILTER_SANITIZE_STRING); |
||
7539 | $query = "SELECT DISTINCT spotter_output.departure_airport_country, COUNT(spotter_output.departure_airport_country) AS airport_departure_country_count |
||
7540 | FROM spotter_output".$filter_query." spotter_output.departure_airport_country <> '' AND (spotter_output.pilot_name = :pilot OR spotter_output.pilot_id = :pilot) |
||
7541 | GROUP BY spotter_output.departure_airport_country |
||
7542 | ORDER BY airport_departure_country_count DESC"; |
||
7543 | |||
7544 | $sth = $this->db->prepare($query); |
||
7545 | $sth->execute(array(':pilot' => $pilot)); |
||
7546 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
7547 | } |
||
7548 | |||
7549 | |||
7550 | |||
7551 | /** |
||
7552 | * Gets all departure airports of the airplanes that have flown over based on a country |
||
7553 | * |
||
7554 | * @return Array the airport list |
||
7555 | * |
||
7556 | */ |
||
7557 | public function countAllDepartureAirportsByCountry($country,$filters = array()) |
||
7558 | { |
||
7559 | $filter_query = $this->getFilter($filters,true,true); |
||
7560 | $country = filter_var($country,FILTER_SANITIZE_STRING); |
||
7561 | |||
7562 | $query = "SELECT DISTINCT spotter_output.departure_airport_icao, COUNT(spotter_output.departure_airport_icao) AS airport_departure_icao_count, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country |
||
7563 | FROM spotter_output".$filter_query." ((spotter_output.departure_airport_country = :country) OR (spotter_output.arrival_airport_country = :country)) OR spotter_output.airline_country = :country |
||
7564 | GROUP BY spotter_output.departure_airport_icao, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country |
||
7565 | ORDER BY airport_departure_icao_count DESC"; |
||
7566 | |||
7567 | |||
7568 | $sth = $this->db->prepare($query); |
||
7569 | $sth->execute(array(':country' => $country)); |
||
7570 | |||
7571 | $airport_array = array(); |
||
7572 | $temp_array = array(); |
||
7573 | |||
7574 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
7575 | { |
||
7576 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
7577 | $temp_array['airport_departure_icao_count'] = $row['airport_departure_icao_count']; |
||
7578 | $temp_array['airport_departure_name'] = $row['departure_airport_name']; |
||
7579 | $temp_array['airport_departure_city'] = $row['departure_airport_city']; |
||
7580 | $temp_array['airport_departure_country'] = $row['departure_airport_country']; |
||
7581 | |||
7582 | $airport_array[] = $temp_array; |
||
7583 | } |
||
7584 | |||
7585 | return $airport_array; |
||
7586 | } |
||
7587 | |||
7588 | |||
7589 | /** |
||
7590 | * Gets all departure airports by country of the airplanes that have flown over based on an aircraft icao |
||
7591 | * |
||
7592 | * @return Array the airport list |
||
7593 | * |
||
7594 | */ |
||
7595 | public function countAllDepartureAirportCountriesByCountry($country,$filters = array()) |
||
7596 | { |
||
7597 | $filter_query = $this->getFilter($filters,true,true); |
||
7598 | $country = filter_var($country,FILTER_SANITIZE_STRING); |
||
7599 | $query = "SELECT DISTINCT spotter_output.departure_airport_country, COUNT(spotter_output.departure_airport_country) AS airport_departure_country_count, countries.iso3 AS departure_airport_country_iso3 |
||
7600 | FROM countries,spotter_output".$filter_query." countries.name = spotter_output.departure_airport_country AND spotter_output.departure_airport_country <> '' AND ((spotter_output.departure_airport_country = :country) OR (spotter_output.arrival_airport_country = :country) OR spotter_output.airline_country = :country) |
||
7601 | GROUP BY spotter_output.departure_airport_country, countries.iso3 |
||
7602 | ORDER BY airport_departure_country_count DESC"; |
||
7603 | |||
7604 | $sth = $this->db->prepare($query); |
||
7605 | $sth->execute(array(':country' => $country)); |
||
7606 | $airport_array = array(); |
||
7607 | $temp_array = array(); |
||
7608 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
7609 | { |
||
7610 | $temp_array['departure_airport_country'] = $row['departure_airport_country']; |
||
7611 | $temp_array['departure_airport_country_iso3'] = $row['departure_airport_country_iso3']; |
||
7612 | $temp_array['airport_departure_country_count'] = $row['airport_departure_country_count']; |
||
7613 | $airport_array[] = $temp_array; |
||
7614 | } |
||
7615 | return $airport_array; |
||
7616 | } |
||
7617 | |||
7618 | |||
7619 | /** |
||
7620 | * Gets all arrival airports of the airplanes that have flown over |
||
7621 | * |
||
7622 | * @param Boolean $limit Limit result to 10 or not |
||
7623 | * @param Integer $olderthanmonths Only show result older than x months |
||
7624 | * @param String $sincedate Only show result since x date |
||
7625 | * @param Boolean $icaoaskey Show result by ICAO |
||
7626 | * @param Array $filters Filter used here |
||
7627 | * @return Array the airport list |
||
7628 | * |
||
7629 | */ |
||
7630 | public function countAllArrivalAirports($limit = true, $olderthanmonths = 0, $sincedate = '', $icaoaskey = false,$filters = array(),$year = '',$month = '',$day = '') |
||
7631 | { |
||
7632 | global $globalDBdriver; |
||
7633 | $filter_query = $this->getFilter($filters,true,true); |
||
7634 | $query = "SELECT DISTINCT spotter_output.arrival_airport_icao, COUNT(spotter_output.arrival_airport_icao) AS airport_arrival_icao_count, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country, airport.latitude as arrival_airport_latitude, airport.longitude as arrival_airport_longitude |
||
7635 | FROM airport, spotter_output".$filter_query." airport.icao = spotter_output.arrival_airport_icao AND spotter_output.arrival_airport_name <> '' AND spotter_output.arrival_airport_icao <> 'NA' AND spotter_output.arrival_airport_icao <> ''"; |
||
7636 | if ($olderthanmonths > 0) { |
||
7637 | if ($globalDBdriver == 'mysql') { |
||
7638 | $query .= ' AND spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$olderthanmonths.' MONTH)'; |
||
7639 | } else { |
||
7640 | $query .= " AND spotter_output.date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$olderthanmonths." MONTHS'"; |
||
7641 | } |
||
7642 | } |
||
7643 | if ($sincedate != '') { |
||
7644 | if ($globalDBdriver == 'mysql') { |
||
7645 | $query .= " AND spotter_output.date > '".$sincedate."'"; |
||
7646 | } else { |
||
7647 | $query .= " AND spotter_output.date > CAST('".$sincedate."' AS TIMESTAMP)"; |
||
7648 | } |
||
7649 | } |
||
7650 | $query_values = array(); |
||
7651 | if ($year != '') { |
||
7652 | if ($globalDBdriver == 'mysql') { |
||
7653 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
7654 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
7655 | } else { |
||
7656 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
7657 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
7658 | } |
||
7659 | } |
||
7660 | if ($month != '') { |
||
7661 | if ($globalDBdriver == 'mysql') { |
||
7662 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
7663 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
7664 | } else { |
||
7665 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
7666 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
7667 | } |
||
7668 | } |
||
7669 | if ($day != '') { |
||
7670 | if ($globalDBdriver == 'mysql') { |
||
7671 | $query .= " AND DAY(spotter_output.date) = :day"; |
||
7672 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
7673 | } else { |
||
7674 | $query .= " AND EXTRACT(DAY FROM spotter_output.date) = :day"; |
||
7675 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
7676 | } |
||
7677 | } |
||
7678 | $query .= " GROUP BY spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country, airport.latitude, airport.longitude |
||
7679 | ORDER BY airport_arrival_icao_count DESC"; |
||
7680 | if ($limit) $query .= " LIMIT 10"; |
||
7681 | |||
7682 | |||
7683 | $sth = $this->db->prepare($query); |
||
7684 | $sth->execute($query_values); |
||
7685 | |||
7686 | $airport_array = array(); |
||
7687 | $temp_array = array(); |
||
7688 | |||
7689 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
7690 | { |
||
7691 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
7692 | $temp_array['airport_arrival_icao_count'] = $row['airport_arrival_icao_count']; |
||
7693 | $temp_array['airport_arrival_name'] = $row['arrival_airport_name']; |
||
7694 | $temp_array['airport_arrival_city'] = $row['arrival_airport_city']; |
||
7695 | $temp_array['airport_arrival_country'] = $row['arrival_airport_country']; |
||
7696 | $temp_array['airport_arrival_latitude'] = $row['arrival_airport_latitude']; |
||
7697 | $temp_array['airport_arrival_longitude'] = $row['arrival_airport_longitude']; |
||
7698 | |||
7699 | if ($icaoaskey) { |
||
7700 | $icao = $row['arrival_airport_icao']; |
||
7701 | $airport_array[$icao] = $temp_array; |
||
7702 | } else $airport_array[] = $temp_array; |
||
7703 | } |
||
7704 | |||
7705 | return $airport_array; |
||
7706 | } |
||
7707 | |||
7708 | /** |
||
7709 | * Gets all arrival airports of the airplanes that have flown over |
||
7710 | * |
||
7711 | * @return Array the airport list |
||
7712 | * |
||
7713 | */ |
||
7714 | public function countAllArrivalAirportsByAirlines($limit = true, $olderthanmonths = 0, $sincedate = '', $icaoaskey = false,$filters = array()) |
||
7715 | { |
||
7716 | global $globalDBdriver; |
||
7717 | $filter_query = $this->getFilter($filters,true,true); |
||
7718 | $query = "SELECT DISTINCT spotter_output.airline_icao, spotter_output.arrival_airport_icao, COUNT(spotter_output.arrival_airport_icao) AS airport_arrival_icao_count, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country, countries.iso3 AS arrival_airport_country_iso3 |
||
7719 | FROM countries,spotter_output".$filter_query." countries.name = spotter_output.arrival_airport_country AND spotter_output.airline_icao <> '' AND spotter_output.arrival_airport_name <> '' AND spotter_output.arrival_airport_icao <> 'NA' AND spotter_output.arrival_airport_icao <> '' "; |
||
7720 | if ($olderthanmonths > 0) { |
||
7721 | if ($globalDBdriver == 'mysql') { |
||
7722 | $query .= 'AND spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$olderthanmonths.' MONTH) '; |
||
7723 | } else { |
||
7724 | $query .= "AND spotter_output.date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$olderthanmonths." MONTHS' "; |
||
7725 | } |
||
7726 | } |
||
7727 | if ($sincedate != '') { |
||
7728 | if ($globalDBdriver == 'mysql') { |
||
7729 | $query .= "AND spotter_output.date > '".$sincedate."' "; |
||
7730 | } else { |
||
7731 | $query .= "AND spotter_output.date > CAST('".$sincedate."' AS TIMESTAMP)"; |
||
7732 | } |
||
7733 | } |
||
7734 | |||
7735 | //if ($olderthanmonths > 0) $query .= 'AND date < DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$olderthanmonths.' MONTH) '; |
||
7736 | //if ($sincedate != '') $query .= "AND date > '".$sincedate."' "; |
||
7737 | $query .= "GROUP BY spotter_output.airline_icao,spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country, countries.iso3 |
||
7738 | ORDER BY airport_arrival_icao_count DESC"; |
||
7739 | if ($limit) $query .= " LIMIT 10"; |
||
7740 | |||
7741 | |||
7742 | $sth = $this->db->prepare($query); |
||
7743 | $sth->execute(); |
||
7744 | |||
7745 | $airport_array = array(); |
||
7746 | $temp_array = array(); |
||
7747 | |||
7748 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
7749 | { |
||
7750 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
7751 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
7752 | $temp_array['airport_arrival_icao_count'] = $row['airport_arrival_icao_count']; |
||
7753 | $temp_array['airport_arrival_name'] = $row['arrival_airport_name']; |
||
7754 | $temp_array['airport_arrival_city'] = $row['arrival_airport_city']; |
||
7755 | $temp_array['airport_arrival_country'] = $row['arrival_airport_country']; |
||
7756 | $temp_array['airport_arrival_country_iso3'] = $row['arrival_airport_country_iso3']; |
||
7757 | |||
7758 | if ($icaoaskey) { |
||
7759 | $icao = $row['arrival_airport_icao']; |
||
7760 | $airport_array[$icao] = $temp_array; |
||
7761 | } else $airport_array[] = $temp_array; |
||
7762 | } |
||
7763 | |||
7764 | return $airport_array; |
||
7765 | } |
||
7766 | |||
7767 | |||
7768 | /** |
||
7769 | * Gets all detected arrival airports of the airplanes that have flown over |
||
7770 | * |
||
7771 | * @return Array the airport list |
||
7772 | * |
||
7773 | */ |
||
7774 | public function countAllDetectedArrivalAirports($limit = true, $olderthanmonths = 0, $sincedate = '',$icaoaskey = false,$filters = array(),$year = '',$month = '',$day = '') |
||
7775 | { |
||
7776 | global $globalDBdriver; |
||
7777 | $filter_query = $this->getFilter($filters,true,true); |
||
7778 | $query = "SELECT DISTINCT spotter_output.real_arrival_airport_icao as arrival_airport_icao, COUNT(spotter_output.real_arrival_airport_icao) AS airport_arrival_icao_count, airport.name AS arrival_airport_name, airport.city AS arrival_airport_city, airport.country AS arrival_airport_country, airport.latitude AS arrival_airport_latitude, airport.longitude AS arrival_airport_longitude |
||
7779 | FROM airport,spotter_output".$filter_query." spotter_output.real_arrival_airport_icao <> '' AND spotter_output.real_arrival_airport_icao <> 'NA' AND airport.icao = spotter_output.real_arrival_airport_icao"; |
||
7780 | if ($olderthanmonths > 0) { |
||
7781 | if ($globalDBdriver == 'mysql') { |
||
7782 | $query .= ' AND spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$olderthanmonths.' MONTH)'; |
||
7783 | } else { |
||
7784 | $query .= " AND spotter_output.date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$olderthanmonths." MONTHS'"; |
||
7785 | } |
||
7786 | } |
||
7787 | if ($sincedate != '') { |
||
7788 | if ($globalDBdriver == 'mysql') { |
||
7789 | $query .= " AND spotter_output.date > '".$sincedate."'"; |
||
7790 | } else { |
||
7791 | $query .= " AND spotter_output.date > CAST('".$sincedate."' AS TIMESTAMP)"; |
||
7792 | } |
||
7793 | } |
||
7794 | $query_values = array(); |
||
7795 | if ($year != '') { |
||
7796 | if ($globalDBdriver == 'mysql') { |
||
7797 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
7798 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
7799 | } else { |
||
7800 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
7801 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
7802 | } |
||
7803 | } |
||
7804 | if ($month != '') { |
||
7805 | if ($globalDBdriver == 'mysql') { |
||
7806 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
7807 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
7808 | } else { |
||
7809 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
7810 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
7811 | } |
||
7812 | } |
||
7813 | if ($day != '') { |
||
7814 | if ($globalDBdriver == 'mysql') { |
||
7815 | $query .= " AND DAY(spotter_output.date) = :day"; |
||
7816 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
7817 | } else { |
||
7818 | $query .= " AND EXTRACT(DAY FROM spotter_output.date) = :day"; |
||
7819 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
7820 | } |
||
7821 | } |
||
7822 | $query .= " GROUP BY spotter_output.real_arrival_airport_icao, airport.name, airport.city, airport.country, airport.latitude, airport.longitude |
||
7823 | ORDER BY airport_arrival_icao_count DESC"; |
||
7824 | if ($limit) $query .= " LIMIT 10"; |
||
7825 | |||
7826 | |||
7827 | $sth = $this->db->prepare($query); |
||
7828 | $sth->execute($query_values); |
||
7829 | |||
7830 | $airport_array = array(); |
||
7831 | $temp_array = array(); |
||
7832 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
7833 | { |
||
7834 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
7835 | $temp_array['airport_arrival_icao_count'] = $row['airport_arrival_icao_count']; |
||
7836 | $temp_array['airport_arrival_name'] = $row['arrival_airport_name']; |
||
7837 | $temp_array['airport_arrival_city'] = $row['arrival_airport_city']; |
||
7838 | $temp_array['airport_arrival_country'] = $row['arrival_airport_country']; |
||
7839 | |||
7840 | if ($icaoaskey) { |
||
7841 | $icao = $row['arrival_airport_icao']; |
||
7842 | $airport_array[$icao] = $temp_array; |
||
7843 | } else $airport_array[] = $temp_array; |
||
7844 | } |
||
7845 | |||
7846 | return $airport_array; |
||
7847 | } |
||
7848 | |||
7849 | /** |
||
7850 | * Gets all detected arrival airports of the airplanes that have flown over |
||
7851 | * |
||
7852 | * @return Array the airport list |
||
7853 | * |
||
7854 | */ |
||
7855 | public function countAllDetectedArrivalAirportsByAirlines($limit = true, $olderthanmonths = 0, $sincedate = '',$icaoaskey = false,$filters = array()) |
||
7856 | { |
||
7857 | global $globalDBdriver; |
||
7858 | $filter_query = $this->getFilter($filters,true,true); |
||
7859 | $query = "SELECT DISTINCT spotter_output.airline_icao, spotter_output.real_arrival_airport_icao as arrival_airport_icao, COUNT(spotter_output.real_arrival_airport_icao) AS airport_arrival_icao_count, airport.name AS arrival_airport_name, airport.city AS arrival_airport_city, airport.country AS arrival_airport_country |
||
7860 | FROM airport,spotter_output".$filter_query." spotter_output.airline_icao <> '' AND spotter_output.real_arrival_airport_icao <> '' AND spotter_output.real_arrival_airport_icao <> 'NA' AND airport.icao = spotter_output.real_arrival_airport_icao "; |
||
7861 | if ($olderthanmonths > 0) { |
||
7862 | if ($globalDBdriver == 'mysql') { |
||
7863 | $query .= 'AND spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$olderthanmonths.' MONTH) '; |
||
7864 | } else { |
||
7865 | $query .= "AND spotter_output.date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$olderthanmonths." MONTHS' "; |
||
7866 | } |
||
7867 | } |
||
7868 | if ($sincedate != '') { |
||
7869 | if ($globalDBdriver == 'mysql') { |
||
7870 | $query .= "AND spotter_output.date > '".$sincedate."' "; |
||
7871 | } else { |
||
7872 | $query .= "AND spotter_output.date > CAST('".$sincedate."' AS TIMESTAMP)"; |
||
7873 | } |
||
7874 | } |
||
7875 | |||
7876 | //if ($olderthanmonths > 0) $query .= 'AND date < DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$olderthanmonths.' MONTH) '; |
||
7877 | //if ($sincedate != '') $query .= "AND date > '".$sincedate."' "; |
||
7878 | $query .= "GROUP BY spotter_output.airline_icao, spotter_output.real_arrival_airport_icao, airport.name, airport.city, airport.country |
||
7879 | ORDER BY airport_arrival_icao_count DESC"; |
||
7880 | if ($limit) $query .= " LIMIT 10"; |
||
7881 | |||
7882 | |||
7883 | $sth = $this->db->prepare($query); |
||
7884 | $sth->execute(); |
||
7885 | |||
7886 | $airport_array = array(); |
||
7887 | $temp_array = array(); |
||
7888 | |||
7889 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
7890 | { |
||
7891 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
7892 | $temp_array['airport_arrival_icao_count'] = $row['airport_arrival_icao_count']; |
||
7893 | $temp_array['airport_arrival_name'] = $row['arrival_airport_name']; |
||
7894 | $temp_array['airport_arrival_city'] = $row['arrival_airport_city']; |
||
7895 | $temp_array['airport_arrival_country'] = $row['arrival_airport_country']; |
||
7896 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
7897 | |||
7898 | if ($icaoaskey) { |
||
7899 | $icao = $row['arrival_airport_icao']; |
||
7900 | $airport_array[$icao] = $temp_array; |
||
7901 | } else $airport_array[] = $temp_array; |
||
7902 | } |
||
7903 | |||
7904 | return $airport_array; |
||
7905 | } |
||
7906 | |||
7907 | /** |
||
7908 | * Gets all arrival airports of the airplanes that have flown over based on an airline icao |
||
7909 | * |
||
7910 | * @return Array the airport list |
||
7911 | * |
||
7912 | */ |
||
7913 | public function countAllArrivalAirportsByAirline($airline_icao, $filters = array()) |
||
7914 | { |
||
7915 | $filter_query = $this->getFilter($filters,true,true); |
||
7916 | $airline_icao = filter_var($airline_icao,FILTER_SANITIZE_STRING); |
||
7917 | $query = "SELECT DISTINCT spotter_output.arrival_airport_icao, COUNT(spotter_output.arrival_airport_icao) AS airport_arrival_icao_count, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
7918 | FROM spotter_output".$filter_query." spotter_output.arrival_airport_name <> '' AND spotter_output.arrival_airport_icao <> 'NA' AND spotter_output.arrival_airport_icao <> '' AND spotter_output.airline_icao = :airline_icao |
||
7919 | GROUP BY spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
7920 | ORDER BY airport_arrival_icao_count DESC"; |
||
7921 | |||
7922 | $sth = $this->db->prepare($query); |
||
7923 | $sth->execute(array(':airline_icao' => $airline_icao)); |
||
7924 | |||
7925 | $airport_array = array(); |
||
7926 | $temp_array = array(); |
||
7927 | |||
7928 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
7929 | { |
||
7930 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
7931 | $temp_array['airport_arrival_icao_count'] = $row['airport_arrival_icao_count']; |
||
7932 | $temp_array['airport_arrival_name'] = $row['arrival_airport_name']; |
||
7933 | $temp_array['airport_arrival_city'] = $row['arrival_airport_city']; |
||
7934 | $temp_array['airport_arrival_country'] = $row['arrival_airport_country']; |
||
7935 | |||
7936 | $airport_array[] = $temp_array; |
||
7937 | } |
||
7938 | |||
7939 | return $airport_array; |
||
7940 | } |
||
7941 | |||
7942 | |||
7943 | /** |
||
7944 | * Gets all arrival airports by country of the airplanes that have flown over based on an airline icao |
||
7945 | * |
||
7946 | * @return Array the airport list |
||
7947 | * |
||
7948 | */ |
||
7949 | public function countAllArrivalAirportCountriesByAirline($airline_icao,$filters = array()) |
||
7950 | { |
||
7951 | $filter_query = $this->getFilter($filters,true,true); |
||
7952 | $airline_icao = filter_var($airline_icao,FILTER_SANITIZE_STRING); |
||
7953 | |||
7954 | $query = "SELECT DISTINCT spotter_output.arrival_airport_country, COUNT(spotter_output.arrival_airport_country) AS airport_arrival_country_count, countries.iso3 AS arrival_airport_country_iso3 |
||
7955 | FROM countries, spotter_output".$filter_query." countries.name = spotter_output.arrival_airport_country AND spotter_output.arrival_airport_country <> '' AND spotter_output.airline_icao = :airline_icao |
||
7956 | GROUP BY spotter_output.arrival_airport_country, countries.iso3 |
||
7957 | ORDER BY airport_arrival_country_count DESC"; |
||
7958 | |||
7959 | |||
7960 | $sth = $this->db->prepare($query); |
||
7961 | $sth->execute(array(':airline_icao' => $airline_icao)); |
||
7962 | |||
7963 | $airport_array = array(); |
||
7964 | $temp_array = array(); |
||
7965 | |||
7966 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
7967 | { |
||
7968 | $temp_array['arrival_airport_country'] = $row['arrival_airport_country']; |
||
7969 | $temp_array['airport_arrival_country_count'] = $row['airport_arrival_country_count']; |
||
7970 | $temp_array['arrival_airport_country_iso3'] = $row['arrival_airport_country_iso3']; |
||
7971 | $airport_array[] = $temp_array; |
||
7972 | } |
||
7973 | return $airport_array; |
||
7974 | } |
||
7975 | |||
7976 | |||
7977 | /** |
||
7978 | * Gets all arrival airports of the airplanes that have flown over based on an aircraft icao |
||
7979 | * |
||
7980 | * @return Array the airport list |
||
7981 | * |
||
7982 | */ |
||
7983 | public function countAllArrivalAirportsByAircraft($aircraft_icao,$filters = array()) |
||
7984 | { |
||
7985 | $filter_query = $this->getFilter($filters,true,true); |
||
7986 | $aircraft_icao = filter_var($aircraft_icao,FILTER_SANITIZE_STRING); |
||
7987 | $query = "SELECT DISTINCT spotter_output.arrival_airport_icao, COUNT(spotter_output.arrival_airport_icao) AS airport_arrival_icao_count, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
7988 | FROM spotter_output".$filter_query." spotter_output.arrival_airport_name <> '' AND spotter_output.arrival_airport_icao <> 'NA' AND spotter_output.arrival_airport_icao <> '' AND spotter_output.aircraft_icao = :aircraft_icao |
||
7989 | GROUP BY spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
7990 | ORDER BY airport_arrival_icao_count DESC"; |
||
7991 | |||
7992 | |||
7993 | $sth = $this->db->prepare($query); |
||
7994 | $sth->execute(array(':aircraft_icao' => $aircraft_icao)); |
||
7995 | |||
7996 | $airport_array = array(); |
||
7997 | $temp_array = array(); |
||
7998 | |||
7999 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
8000 | { |
||
8001 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
8002 | $temp_array['airport_arrival_icao_count'] = $row['airport_arrival_icao_count']; |
||
8003 | $temp_array['airport_arrival_name'] = $row['arrival_airport_name']; |
||
8004 | $temp_array['airport_arrival_city'] = $row['arrival_airport_city']; |
||
8005 | $temp_array['airport_arrival_country'] = $row['arrival_airport_country']; |
||
8006 | |||
8007 | $airport_array[] = $temp_array; |
||
8008 | } |
||
8009 | |||
8010 | return $airport_array; |
||
8011 | } |
||
8012 | |||
8013 | |||
8014 | |||
8015 | /** |
||
8016 | * Gets all arrival airports by country of the airplanes that have flown over based on an aircraft icao |
||
8017 | * |
||
8018 | * @return Array the airport list |
||
8019 | * |
||
8020 | */ |
||
8021 | public function countAllArrivalAirportCountriesByAircraft($aircraft_icao,$filters = array()) |
||
8022 | { |
||
8023 | $filter_query = $this->getFilter($filters,true,true); |
||
8024 | $aircraft_icao = filter_var($aircraft_icao,FILTER_SANITIZE_STRING); |
||
8025 | $query = "SELECT DISTINCT spotter_output.arrival_airport_country, COUNT(spotter_output.arrival_airport_country) AS airport_arrival_country_count, countries.iso3 AS airport_arrival_country_iso3 |
||
8026 | FROM countries, spotter_output".$filter_query." countries.name = spotter_output.arrival_airport_country AND spotter_output.arrival_airport_country <> '' AND spotter_output.aircraft_icao = :aircraft_icao |
||
8027 | GROUP BY spotter_output.arrival_airport_country, countries.iso3 |
||
8028 | ORDER BY airport_arrival_country_count DESC"; |
||
8029 | |||
8030 | |||
8031 | $sth = $this->db->prepare($query); |
||
8032 | $sth->execute(array(':aircraft_icao' => $aircraft_icao)); |
||
8033 | |||
8034 | $airport_array = array(); |
||
8035 | $temp_array = array(); |
||
8036 | |||
8037 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
8038 | { |
||
8039 | $temp_array['arrival_airport_country'] = $row['arrival_airport_country']; |
||
8040 | $temp_array['airport_arrival_country_count'] = $row['airport_arrival_country_count']; |
||
8041 | $temp_array['arrival_airport_country_iso3'] = $row['airport_arrival_country_iso3']; |
||
8042 | $airport_array[] = $temp_array; |
||
8043 | } |
||
8044 | |||
8045 | return $airport_array; |
||
8046 | } |
||
8047 | |||
8048 | |||
8049 | /** |
||
8050 | * Gets all arrival airports of the airplanes that have flown over based on an aircraft registration |
||
8051 | * |
||
8052 | * @return Array the airport list |
||
8053 | * |
||
8054 | */ |
||
8055 | public function countAllArrivalAirportsByRegistration($registration,$filters = array()) |
||
8056 | { |
||
8057 | $filter_query = $this->getFilter($filters,true,true); |
||
8058 | $registration = filter_var($registration,FILTER_SANITIZE_STRING); |
||
8059 | |||
8060 | $query = "SELECT DISTINCT spotter_output.arrival_airport_icao, COUNT(spotter_output.arrival_airport_icao) AS airport_arrival_icao_count, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
8061 | FROM spotter_output".$filter_query." spotter_output.arrival_airport_name <> '' AND spotter_output.arrival_airport_icao <> 'NA' AND spotter_output.arrival_airport_icao <> '' AND spotter_output.registration = :registration |
||
8062 | GROUP BY spotter_output.arrival_airport_icao |
||
8063 | ORDER BY airport_arrival_icao_count DESC"; |
||
8064 | |||
8065 | |||
8066 | $sth = $this->db->prepare($query); |
||
8067 | $sth->execute(array(':registration' => $registration)); |
||
8068 | |||
8069 | $airport_array = array(); |
||
8070 | $temp_array = array(); |
||
8071 | |||
8072 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
8073 | { |
||
8074 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
8075 | $temp_array['airport_arrival_icao_count'] = $row['airport_arrival_icao_count']; |
||
8076 | $temp_array['airport_arrival_name'] = $row['arrival_airport_name']; |
||
8077 | $temp_array['airport_arrival_city'] = $row['arrival_airport_city']; |
||
8078 | $temp_array['airport_arrival_country'] = $row['arrival_airport_country']; |
||
8079 | |||
8080 | $airport_array[] = $temp_array; |
||
8081 | } |
||
8082 | |||
8083 | return $airport_array; |
||
8084 | } |
||
8085 | |||
8086 | |||
8087 | /** |
||
8088 | * Gets all arrival airports by country of the airplanes that have flown over based on an aircraft registration |
||
8089 | * |
||
8090 | * @return Array the airport list |
||
8091 | * |
||
8092 | */ |
||
8093 | public function countAllArrivalAirportCountriesByRegistration($registration,$filters = array()) |
||
8094 | { |
||
8095 | $filter_query = $this->getFilter($filters,true,true); |
||
8096 | $registration = filter_var($registration,FILTER_SANITIZE_STRING); |
||
8097 | $query = "SELECT DISTINCT spotter_output.arrival_airport_country, COUNT(spotter_output.arrival_airport_country) AS airport_arrival_country_count, countries.iso3 AS arrival_airport_country_iso3 |
||
8098 | FROM countries,spotter_output".$filter_query." countries.name = spotter_output.arrival_airport_country AND spotter_output.arrival_airport_country <> '' AND spotter_output.registration = :registration |
||
8099 | GROUP BY spotter_output.arrival_airport_country, countries.iso3 |
||
8100 | ORDER BY airport_arrival_country_count DESC"; |
||
8101 | |||
8102 | $sth = $this->db->prepare($query); |
||
8103 | $sth->execute(array(':registration' => $registration)); |
||
8104 | $airport_array = array(); |
||
8105 | $temp_array = array(); |
||
8106 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
8107 | { |
||
8108 | $temp_array['arrival_airport_country'] = $row['arrival_airport_country']; |
||
8109 | $temp_array['arrival_airport_country_iso3'] = $row['arrival_airport_country_iso3']; |
||
8110 | $temp_array['airport_arrival_country_count'] = $row['airport_arrival_country_count']; |
||
8111 | $airport_array[] = $temp_array; |
||
8112 | } |
||
8113 | return $airport_array; |
||
8114 | } |
||
8115 | |||
8116 | |||
8117 | |||
8118 | /** |
||
8119 | * Gets all arrival airports of the airplanes that have flown over based on an departure airport |
||
8120 | * |
||
8121 | * @return Array the airport list |
||
8122 | * |
||
8123 | */ |
||
8124 | public function countAllArrivalAirportsByAirport($airport_icao,$filters = array()) |
||
8125 | { |
||
8126 | $filter_query = $this->getFilter($filters,true,true); |
||
8127 | $airport_icao = filter_var($airport_icao,FILTER_SANITIZE_STRING); |
||
8128 | $query = "SELECT DISTINCT spotter_output.arrival_airport_icao, COUNT(spotter_output.arrival_airport_icao) AS airport_arrival_icao_count, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
8129 | FROM spotter_output".$filter_query." spotter_output.arrival_airport_name <> '' AND spotter_output.arrival_airport_icao <> 'NA' AND spotter_output.arrival_airport_icao <> '' AND spotter_output.departure_airport_icao = :airport_icao |
||
8130 | GROUP BY spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
8131 | ORDER BY airport_arrival_icao_count DESC"; |
||
8132 | |||
8133 | |||
8134 | $sth = $this->db->prepare($query); |
||
8135 | $sth->execute(array(':airport_icao' => $airport_icao)); |
||
8136 | |||
8137 | $airport_array = array(); |
||
8138 | $temp_array = array(); |
||
8139 | |||
8140 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
8141 | { |
||
8142 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
8143 | $temp_array['airport_arrival_icao_count'] = $row['airport_arrival_icao_count']; |
||
8144 | $temp_array['airport_arrival_name'] = $row['arrival_airport_name']; |
||
8145 | $temp_array['airport_arrival_city'] = $row['arrival_airport_city']; |
||
8146 | $temp_array['airport_arrival_country'] = $row['arrival_airport_country']; |
||
8147 | |||
8148 | $airport_array[] = $temp_array; |
||
8149 | } |
||
8150 | |||
8151 | return $airport_array; |
||
8152 | } |
||
8153 | |||
8154 | |||
8155 | /** |
||
8156 | * Gets all arrival airports by country of the airplanes that have flown over based on an airport icao |
||
8157 | * |
||
8158 | * @return Array the airport list |
||
8159 | * |
||
8160 | */ |
||
8161 | public function countAllArrivalAirportCountriesByAirport($airport_icao,$filters = array()) |
||
8162 | { |
||
8163 | $filter_query = $this->getFilter($filters,true,true); |
||
8164 | $airport_icao = filter_var($airport_icao,FILTER_SANITIZE_STRING); |
||
8165 | $query = "SELECT DISTINCT spotter_output.arrival_airport_country, COUNT(spotter_output.arrival_airport_country) AS airport_arrival_country_count, countries.iso3 AS arrival_airport_country_iso3 |
||
8166 | FROM countries, spotter_output".$filter_query." countries.name = spotter_output.arrival_airport_country AND spotter_output.arrival_airport_country <> '' AND spotter_output.departure_airport_icao = :airport_icao |
||
8167 | GROUP BY spotter_output.arrival_airport_country, countries.iso3 |
||
8168 | ORDER BY airport_arrival_country_count DESC"; |
||
8169 | |||
8170 | $sth = $this->db->prepare($query); |
||
8171 | $sth->execute(array(':airport_icao' => $airport_icao)); |
||
8172 | |||
8173 | $airport_array = array(); |
||
8174 | $temp_array = array(); |
||
8175 | |||
8176 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
8177 | { |
||
8178 | $temp_array['arrival_airport_country'] = $row['arrival_airport_country']; |
||
8179 | $temp_array['airport_arrival_country_count'] = $row['airport_arrival_country_count']; |
||
8180 | $temp_array['arrival_airport_country_iso3'] = $row['arrival_airport_country_iso3']; |
||
8181 | $airport_array[] = $temp_array; |
||
8182 | } |
||
8183 | return $airport_array; |
||
8184 | } |
||
8185 | |||
8186 | |||
8187 | /** |
||
8188 | * Gets all arrival airports of the airplanes that have flown over based on a aircraft manufacturer |
||
8189 | * |
||
8190 | * @return Array the airport list |
||
8191 | * |
||
8192 | */ |
||
8193 | public function countAllArrivalAirportsByManufacturer($aircraft_manufacturer,$filters = array()) |
||
8194 | { |
||
8195 | $filter_query = $this->getFilter($filters,true,true); |
||
8196 | $aircraft_manufacturer = filter_var($aircraft_manufacturer,FILTER_SANITIZE_STRING); |
||
8197 | $query = "SELECT DISTINCT spotter_output.arrival_airport_icao, COUNT(spotter_output.arrival_airport_icao) AS airport_arrival_icao_count, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
8198 | FROM spotter_output".$filter_query." spotter_output.arrival_airport_name <> '' AND spotter_output.arrival_airport_icao <> 'NA' AND spotter_output.arrival_airport_icao <> '' AND spotter_output.aircraft_manufacturer = :aircraft_manufacturer |
||
8199 | GROUP BY spotter_output.arrival_airport_icao |
||
8200 | ORDER BY airport_arrival_icao_count DESC"; |
||
8201 | |||
8202 | |||
8203 | $sth = $this->db->prepare($query); |
||
8204 | $sth->execute(array(':aircraft_manufacturer' => $aircraft_manufacturer)); |
||
8205 | |||
8206 | $airport_array = array(); |
||
8207 | $temp_array = array(); |
||
8208 | |||
8209 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
8210 | { |
||
8211 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
8212 | $temp_array['airport_arrival_icao_count'] = $row['airport_arrival_icao_count']; |
||
8213 | $temp_array['airport_arrival_name'] = $row['arrival_airport_name']; |
||
8214 | $temp_array['airport_arrival_city'] = $row['arrival_airport_city']; |
||
8215 | $temp_array['airport_arrival_country'] = $row['arrival_airport_country']; |
||
8216 | |||
8217 | $airport_array[] = $temp_array; |
||
8218 | } |
||
8219 | |||
8220 | return $airport_array; |
||
8221 | } |
||
8222 | |||
8223 | |||
8224 | |||
8225 | /** |
||
8226 | * Gets all arrival airports by country of the airplanes that have flown over based on a aircraft manufacturer |
||
8227 | * |
||
8228 | * @return Array the airport list |
||
8229 | * |
||
8230 | */ |
||
8231 | public function countAllArrivalAirportCountriesByManufacturer($aircraft_manufacturer,$filters = array()) |
||
8232 | { |
||
8233 | $filter_query = $this->getFilter($filters,true,true); |
||
8234 | $aircraft_manufacturer = filter_var($aircraft_manufacturer,FILTER_SANITIZE_STRING); |
||
8235 | $query = "SELECT DISTINCT spotter_output.arrival_airport_country, COUNT(spotter_output.arrival_airport_country) AS airport_arrival_country_count, countries.iso3 AS arrival_airport_country_iso3 |
||
8236 | FROM countries,spotter_output".$filter_query." countries.name = spotter_output.arrival_airport_country AND spotter_output.arrival_airport_country <> '' AND spotter_output.aircraft_manufacturer = :aircraft_manufacturer |
||
8237 | GROUP BY spotter_output.arrival_airport_country, countries.iso3 |
||
8238 | ORDER BY airport_arrival_country_count DESC"; |
||
8239 | |||
8240 | $sth = $this->db->prepare($query); |
||
8241 | $sth->execute(array(':aircraft_manufacturer' => $aircraft_manufacturer)); |
||
8242 | $airport_array = array(); |
||
8243 | $temp_array = array(); |
||
8244 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
8245 | { |
||
8246 | $temp_array['arrival_airport_country'] = $row['arrival_airport_country']; |
||
8247 | $temp_array['arrival_airport_country_iso3'] = $row['arrival_airport_country_iso3']; |
||
8248 | $temp_array['airport_arrival_country_count'] = $row['airport_arrival_country_count']; |
||
8249 | $airport_array[] = $temp_array; |
||
8250 | } |
||
8251 | return $airport_array; |
||
8252 | } |
||
8253 | |||
8254 | |||
8255 | |||
8256 | /** |
||
8257 | * Gets all arrival airports of the airplanes that have flown over based on a date |
||
8258 | * |
||
8259 | * @return Array the airport list |
||
8260 | * |
||
8261 | */ |
||
8262 | public function countAllArrivalAirportsByDate($date,$filters = array()) |
||
8263 | { |
||
8264 | global $globalTimezone, $globalDBdriver; |
||
8265 | $filter_query = $this->getFilter($filters,true,true); |
||
8266 | $date = filter_var($date,FILTER_SANITIZE_STRING); |
||
8267 | if ($globalTimezone != '') { |
||
8268 | date_default_timezone_set($globalTimezone); |
||
8269 | $datetime = new DateTime($date); |
||
8270 | $offset = $datetime->format('P'); |
||
8271 | } else $offset = '+00:00'; |
||
8272 | |||
8273 | if ($globalDBdriver == 'mysql') { |
||
8274 | $query = "SELECT DISTINCT spotter_output.arrival_airport_icao, COUNT(spotter_output.arrival_airport_icao) AS airport_arrival_icao_count, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
8275 | FROM spotter_output".$filter_query." spotter_output.arrival_airport_name <> '' AND spotter_output.arrival_airport_icao <> 'NA' AND spotter_output.arrival_airport_icao <> '' AND DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) = :date |
||
8276 | GROUP BY spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
8277 | ORDER BY airport_arrival_icao_count DESC"; |
||
8278 | } else { |
||
8279 | $query = "SELECT DISTINCT spotter_output.arrival_airport_icao, COUNT(spotter_output.arrival_airport_icao) AS airport_arrival_icao_count, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
8280 | FROM spotter_output".$filter_query." spotter_output.arrival_airport_name <> '' AND spotter_output.arrival_airport_icao <> 'NA' AND spotter_output.arrival_airport_icao <> '' AND to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') = :date |
||
8281 | GROUP BY spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
8282 | ORDER BY airport_arrival_icao_count DESC"; |
||
8283 | } |
||
8284 | |||
8285 | $sth = $this->db->prepare($query); |
||
8286 | $sth->execute(array(':date' => $date, ':offset' => $offset)); |
||
8287 | |||
8288 | $airport_array = array(); |
||
8289 | $temp_array = array(); |
||
8290 | |||
8291 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
8292 | { |
||
8293 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
8294 | $temp_array['airport_arrival_icao_count'] = $row['airport_arrival_icao_count']; |
||
8295 | $temp_array['airport_arrival_name'] = $row['arrival_airport_name']; |
||
8296 | $temp_array['airport_arrival_city'] = $row['arrival_airport_city']; |
||
8297 | $temp_array['airport_arrival_country'] = $row['arrival_airport_country']; |
||
8298 | |||
8299 | $airport_array[] = $temp_array; |
||
8300 | } |
||
8301 | return $airport_array; |
||
8302 | } |
||
8303 | |||
8304 | |||
8305 | |||
8306 | /** |
||
8307 | * Gets all arrival airports by country of the airplanes that have flown over based on a date |
||
8308 | * |
||
8309 | * @return Array the airport list |
||
8310 | * |
||
8311 | */ |
||
8312 | public function countAllArrivalAirportCountriesByDate($date, $filters = array()) |
||
8313 | { |
||
8314 | global $globalTimezone, $globalDBdriver; |
||
8315 | $filter_query = $this->getFilter($filters,true,true); |
||
8316 | $date = filter_var($date,FILTER_SANITIZE_STRING); |
||
8317 | if ($globalTimezone != '') { |
||
8318 | date_default_timezone_set($globalTimezone); |
||
8319 | $datetime = new DateTime($date); |
||
8320 | $offset = $datetime->format('P'); |
||
8321 | } else $offset = '+00:00'; |
||
8322 | |||
8323 | if ($globalDBdriver == 'mysql') { |
||
8324 | $query = "SELECT DISTINCT spotter_output.arrival_airport_country, COUNT(spotter_output.arrival_airport_country) AS airport_arrival_country_count, countries.iso3 AS arrival_airport_country_iso3 |
||
8325 | FROM countries,spotter_output".$filter_query." countries.name = spotter_output.arrival_airport_country AND spotter_output.arrival_airport_country <> '' AND DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) = :date |
||
8326 | GROUP BY spotter_output.arrival_airport_country, countries.iso3 |
||
8327 | ORDER BY airport_arrival_country_count DESC"; |
||
8328 | } else { |
||
8329 | $query = "SELECT DISTINCT spotter_output.arrival_airport_country, COUNT(spotter_output.arrival_airport_country) AS airport_arrival_country_count, countries.iso3 AS arrival_airport_country_iso3 |
||
8330 | FROM countries,spotter_output".$filter_query." countries.name = spotter_output.arrival_airport_country AND spotter_output.arrival_airport_country <> '' AND to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') = :date |
||
8331 | GROUP BY spotter_output.arrival_airport_country, countries.iso3 |
||
8332 | ORDER BY airport_arrival_country_count DESC"; |
||
8333 | } |
||
8334 | |||
8335 | $sth = $this->db->prepare($query); |
||
8336 | $sth->execute(array(':date' => $date, ':offset' => $offset)); |
||
8337 | |||
8338 | $airport_array = array(); |
||
8339 | $temp_array = array(); |
||
8340 | |||
8341 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
8342 | { |
||
8343 | $temp_array['arrival_airport_country'] = $row['arrival_airport_country']; |
||
8344 | $temp_array['arrival_airport_country_iso3'] = $row['arrival_airport_country_iso3']; |
||
8345 | $temp_array['airport_arrival_country_count'] = $row['airport_arrival_country_count']; |
||
8346 | $airport_array[] = $temp_array; |
||
8347 | } |
||
8348 | return $airport_array; |
||
8349 | } |
||
8350 | |||
8351 | |||
8352 | |||
8353 | /** |
||
8354 | * Gets all arrival airports of the airplanes that have flown over based on a ident/callsign |
||
8355 | * |
||
8356 | * @return Array the airport list |
||
8357 | * |
||
8358 | */ |
||
8359 | public function countAllArrivalAirportsByIdent($ident,$filters = array()) |
||
8360 | { |
||
8361 | $filter_query = $this->getFilter($filters,true,true); |
||
8362 | $ident = filter_var($ident,FILTER_SANITIZE_STRING); |
||
8363 | $query = "SELECT DISTINCT spotter_output.arrival_airport_icao, COUNT(spotter_output.arrival_airport_icao) AS airport_arrival_icao_count, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
8364 | FROM spotter_output".$filter_query." spotter_output.arrival_airport_name <> '' AND spotter_output.arrival_airport_icao <> 'NA' AND spotter_output.arrival_airport_icao <> '' AND spotter_output.ident = :ident |
||
8365 | GROUP BY spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
8366 | ORDER BY airport_arrival_icao_count DESC"; |
||
8367 | |||
8368 | |||
8369 | $sth = $this->db->prepare($query); |
||
8370 | $sth->execute(array(':ident' => $ident)); |
||
8371 | |||
8372 | $airport_array = array(); |
||
8373 | $temp_array = array(); |
||
8374 | |||
8375 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
8376 | { |
||
8377 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
8378 | $temp_array['airport_arrival_icao_count'] = $row['airport_arrival_icao_count']; |
||
8379 | $temp_array['airport_arrival_name'] = $row['arrival_airport_name']; |
||
8380 | $temp_array['airport_arrival_city'] = $row['arrival_airport_city']; |
||
8381 | $temp_array['airport_arrival_country'] = $row['arrival_airport_country']; |
||
8382 | |||
8383 | $airport_array[] = $temp_array; |
||
8384 | } |
||
8385 | |||
8386 | return $airport_array; |
||
8387 | } |
||
8388 | |||
8389 | /** |
||
8390 | * Gets all arrival airports of the airplanes that have flown over based on a owner |
||
8391 | * |
||
8392 | * @return Array the airport list |
||
8393 | * |
||
8394 | */ |
||
8395 | public function countAllArrivalAirportsByOwner($owner,$filters = array()) |
||
8396 | { |
||
8397 | $filter_query = $this->getFilter($filters,true,true); |
||
8398 | $owner = filter_var($owner,FILTER_SANITIZE_STRING); |
||
8399 | $query = "SELECT DISTINCT spotter_output.arrival_airport_icao, COUNT(spotter_output.arrival_airport_icao) AS airport_arrival_icao_count, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
8400 | FROM spotter_output".$filter_query." spotter_output.arrival_airport_name <> '' AND spotter_output.arrival_airport_icao <> 'NA' AND spotter_output.arrival_airport_icao <> '' AND spotter_output.owner_name = :owner |
||
8401 | GROUP BY spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
8402 | ORDER BY airport_arrival_icao_count DESC"; |
||
8403 | |||
8404 | |||
8405 | $sth = $this->db->prepare($query); |
||
8406 | $sth->execute(array(':owner' => $owner)); |
||
8407 | $airport_array = array(); |
||
8408 | $temp_array = array(); |
||
8409 | |||
8410 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
8411 | { |
||
8412 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
8413 | $temp_array['airport_arrival_icao_count'] = $row['airport_arrival_icao_count']; |
||
8414 | $temp_array['airport_arrival_name'] = $row['arrival_airport_name']; |
||
8415 | $temp_array['airport_arrival_city'] = $row['arrival_airport_city']; |
||
8416 | $temp_array['airport_arrival_country'] = $row['arrival_airport_country']; |
||
8417 | |||
8418 | $airport_array[] = $temp_array; |
||
8419 | } |
||
8420 | |||
8421 | return $airport_array; |
||
8422 | } |
||
8423 | |||
8424 | /** |
||
8425 | * Gets all arrival airports of the airplanes that have flown over based on a pilot |
||
8426 | * |
||
8427 | * @return Array the airport list |
||
8428 | * |
||
8429 | */ |
||
8430 | public function countAllArrivalAirportsByPilot($pilot,$filters = array()) |
||
8431 | { |
||
8432 | $filter_query = $this->getFilter($filters,true,true); |
||
8433 | $pilot = filter_var($pilot,FILTER_SANITIZE_STRING); |
||
8434 | $query = "SELECT DISTINCT spotter_output.arrival_airport_icao, COUNT(spotter_output.arrival_airport_icao) AS airport_arrival_icao_count, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
8435 | FROM spotter_output".$filter_query." spotter_output.arrival_airport_name <> '' AND spotter_output.arrival_airport_icao <> 'NA' AND spotter_output.arrival_airport_icao <> '' AND (spotter_output.pilot_name = :pilot OR spotter_output.pilot_id = :pilot) |
||
8436 | GROUP BY spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
8437 | ORDER BY airport_arrival_icao_count DESC"; |
||
8438 | |||
8439 | |||
8440 | $sth = $this->db->prepare($query); |
||
8441 | $sth->execute(array(':pilot' => $pilot)); |
||
8442 | $airport_array = array(); |
||
8443 | $temp_array = array(); |
||
8444 | |||
8445 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
8446 | { |
||
8447 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
8448 | $temp_array['airport_arrival_icao_count'] = $row['airport_arrival_icao_count']; |
||
8449 | $temp_array['airport_arrival_name'] = $row['arrival_airport_name']; |
||
8450 | $temp_array['airport_arrival_city'] = $row['arrival_airport_city']; |
||
8451 | $temp_array['airport_arrival_country'] = $row['arrival_airport_country']; |
||
8452 | |||
8453 | $airport_array[] = $temp_array; |
||
8454 | } |
||
8455 | |||
8456 | return $airport_array; |
||
8457 | } |
||
8458 | |||
8459 | /** |
||
8460 | * Gets all arrival airports by country of the airplanes that have flown over based on a callsign/ident |
||
8461 | * |
||
8462 | * @return Array the airport list |
||
8463 | * |
||
8464 | */ |
||
8465 | public function countAllArrivalAirportCountriesByIdent($ident, $filters = array()) |
||
8466 | { |
||
8467 | $filter_query = $this->getFilter($filters,true,true); |
||
8468 | $ident = filter_var($ident,FILTER_SANITIZE_STRING); |
||
8469 | $query = "SELECT DISTINCT spotter_output.arrival_airport_country, COUNT(spotter_output.arrival_airport_country) AS airport_arrival_country_count, countries.iso3 AS arrival_airport_country_iso3 |
||
8470 | FROM countries,spotter_output".$filter_query." countries.name = spotter_output.arrival_airport_country AND spotter_output.arrival_airport_country <> '' AND spotter_output.ident = :ident |
||
8471 | GROUP BY spotter_output.arrival_airport_country, countries.iso3 |
||
8472 | ORDER BY airport_arrival_country_count DESC"; |
||
8473 | |||
8474 | $sth = $this->db->prepare($query); |
||
8475 | $sth->execute(array(':ident' => $ident)); |
||
8476 | $airport_array = array(); |
||
8477 | $temp_array = array(); |
||
8478 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
8479 | { |
||
8480 | $temp_array['arrival_airport_country'] = $row['arrival_airport_country']; |
||
8481 | $temp_array['arrival_airport_country_iso3'] = $row['arrival_airport_country_iso3']; |
||
8482 | $temp_array['airport_arrival_country_count'] = $row['airport_arrival_country_count']; |
||
8483 | $airport_array[] = $temp_array; |
||
8484 | } |
||
8485 | return $airport_array; |
||
8486 | } |
||
8487 | |||
8488 | /** |
||
8489 | * Gets all arrival airports by country of the airplanes that have flown over based on a owner |
||
8490 | * |
||
8491 | * @return Array the airport list |
||
8492 | * |
||
8493 | */ |
||
8494 | public function countAllArrivalAirportCountriesByOwner($owner, $filters = array()) |
||
8495 | { |
||
8496 | $filter_query = $this->getFilter($filters,true,true); |
||
8497 | $owner = filter_var($owner,FILTER_SANITIZE_STRING); |
||
8498 | $query = "SELECT DISTINCT spotter_output.arrival_airport_country, COUNT(spotter_output.arrival_airport_country) AS airport_arrival_country_count |
||
8499 | FROM spotter_output".$filter_query." spotter_output.arrival_airport_country <> '' AND spotter_output.owner_name = :owner |
||
8500 | GROUP BY spotter_output.arrival_airport_country |
||
8501 | ORDER BY airport_arrival_country_count DESC"; |
||
8502 | |||
8503 | $sth = $this->db->prepare($query); |
||
8504 | $sth->execute(array(':owner' => $owner)); |
||
8505 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
8506 | } |
||
8507 | |||
8508 | /** |
||
8509 | * Gets all arrival airports by country of the airplanes that have flown over based on a pilot |
||
8510 | * |
||
8511 | * @return Array the airport list |
||
8512 | * |
||
8513 | */ |
||
8514 | public function countAllArrivalAirportCountriesByPilot($pilot, $filters = array()) |
||
8515 | { |
||
8516 | $filter_query = $this->getFilter($filters,true,true); |
||
8517 | $pilot = filter_var($pilot,FILTER_SANITIZE_STRING); |
||
8518 | $query = "SELECT DISTINCT spotter_output.arrival_airport_country, COUNT(spotter_output.arrival_airport_country) AS airport_arrival_country_count |
||
8519 | FROM spotter_output".$filter_query." spotter_output.arrival_airport_country <> '' AND (spotter_output.pilot_name = :pilot OR spotter_output.pilot_id = :pilot) |
||
8520 | GROUP BY spotter_output.arrival_airport_country |
||
8521 | ORDER BY airport_arrival_country_count DESC"; |
||
8522 | |||
8523 | $sth = $this->db->prepare($query); |
||
8524 | $sth->execute(array(':pilot' => $pilot)); |
||
8525 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
8526 | } |
||
8527 | |||
8528 | |||
8529 | |||
8530 | /** |
||
8531 | * Gets all arrival airports of the airplanes that have flown over based on a country |
||
8532 | * |
||
8533 | * @return Array the airport list |
||
8534 | * |
||
8535 | */ |
||
8536 | public function countAllArrivalAirportsByCountry($country,$filters = array()) |
||
8537 | { |
||
8538 | $filter_query = $this->getFilter($filters,true,true); |
||
8539 | $country = filter_var($country,FILTER_SANITIZE_STRING); |
||
8540 | $query = "SELECT DISTINCT spotter_output.arrival_airport_icao, COUNT(spotter_output.arrival_airport_icao) AS airport_arrival_icao_count, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
8541 | FROM spotter_output".$filter_query." ((spotter_output.departure_airport_country = :country) OR (spotter_output.arrival_airport_country = :country)) OR spotter_output.airline_country = :country |
||
8542 | GROUP BY spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
8543 | ORDER BY airport_arrival_icao_count DESC"; |
||
8544 | |||
8545 | |||
8546 | $sth = $this->db->prepare($query); |
||
8547 | $sth->execute(array(':country' => $country)); |
||
8548 | |||
8549 | $airport_array = array(); |
||
8550 | $temp_array = array(); |
||
8551 | |||
8552 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
8553 | { |
||
8554 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
8555 | $temp_array['airport_arrival_icao_count'] = $row['airport_arrival_icao_count']; |
||
8556 | $temp_array['airport_arrival_name'] = $row['arrival_airport_name']; |
||
8557 | $temp_array['airport_arrival_city'] = $row['arrival_airport_city']; |
||
8558 | $temp_array['airport_arrival_country'] = $row['arrival_airport_country']; |
||
8559 | |||
8560 | $airport_array[] = $temp_array; |
||
8561 | } |
||
8562 | |||
8563 | return $airport_array; |
||
8564 | } |
||
8565 | |||
8566 | |||
8567 | /** |
||
8568 | * Gets all arrival airports by country of the airplanes that have flown over based on a country |
||
8569 | * |
||
8570 | * @return Array the airport list |
||
8571 | * |
||
8572 | */ |
||
8573 | public function countAllArrivalAirportCountriesByCountry($country,$filters = array()) |
||
8574 | { |
||
8575 | global $globalDBdriver; |
||
8576 | $filter_query = $this->getFilter($filters,true,true); |
||
8577 | $country = filter_var($country,FILTER_SANITIZE_STRING); |
||
8578 | $query = "SELECT DISTINCT spotter_output.arrival_airport_country, COUNT(spotter_output.arrival_airport_country) AS airport_arrival_country_count, countries.iso3 AS arrival_airport_country_iso3 |
||
8579 | FROM countries,spotter_output".$filter_query." countries.name = spotter_output.arrival_airport_country AND spotter_output.arrival_airport_country <> '' AND ((spotter_output.departure_airport_country = :country) OR (spotter_output.arrival_airport_country = :country) OR spotter_output.airline_country = :country) |
||
8580 | GROUP BY spotter_output.arrival_airport_country, countries.iso3 |
||
8581 | ORDER BY airport_arrival_country_count DESC"; |
||
8582 | |||
8583 | $sth = $this->db->prepare($query); |
||
8584 | $sth->execute(array(':country' => $country)); |
||
8585 | $airport_array = array(); |
||
8586 | $temp_array = array(); |
||
8587 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
8588 | { |
||
8589 | $temp_array['arrival_airport_country'] = $row['arrival_airport_country']; |
||
8590 | $temp_array['arrival_airport_country_iso3'] = $row['arrival_airport_country_iso3']; |
||
8591 | $temp_array['airport_arrival_country_count'] = $row['airport_arrival_country_count']; |
||
8592 | $airport_array[] = $temp_array; |
||
8593 | } |
||
8594 | return $airport_array; |
||
8595 | } |
||
8596 | |||
8597 | |||
8598 | |||
8599 | /** |
||
8600 | * Counts all airport departure countries |
||
8601 | * |
||
8602 | * @return Array the airport departure list |
||
8603 | * |
||
8604 | */ |
||
8605 | public function countAllDepartureCountries($filters = array(),$year = '',$month = '', $day = '') |
||
8606 | { |
||
8607 | global $globalDBdriver; |
||
8608 | $filter_query = $this->getFilter($filters,true,true); |
||
8609 | $query = "SELECT DISTINCT spotter_output.departure_airport_country, COUNT(spotter_output.departure_airport_country) AS airport_departure_country_count, countries.iso3 AS airport_departure_country_iso3 |
||
8610 | FROM countries,spotter_output".$filter_query." countries.name = spotter_output.departure_airport_country AND spotter_output.departure_airport_country <> '' AND spotter_output.departure_airport_icao <> 'NA' AND spotter_output.departure_airport_icao <> ''"; |
||
8611 | $query_values = array(); |
||
8612 | if ($year != '') { |
||
8613 | if ($globalDBdriver == 'mysql') { |
||
8614 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
8615 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
8616 | } else { |
||
8617 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
8618 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
8619 | } |
||
8620 | } |
||
8621 | if ($month != '') { |
||
8622 | if ($globalDBdriver == 'mysql') { |
||
8623 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
8624 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
8625 | } else { |
||
8626 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
8627 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
8628 | } |
||
8629 | } |
||
8630 | if ($day != '') { |
||
8631 | if ($globalDBdriver == 'mysql') { |
||
8632 | $query .= " AND DAY(spotter_output.date) = :day"; |
||
8633 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
8634 | } else { |
||
8635 | $query .= " AND EXTRACT(DAY FROM spotter_output.date) = :day"; |
||
8636 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
8637 | } |
||
8638 | } |
||
8639 | $query .= " GROUP BY spotter_output.departure_airport_country, countries.iso3 |
||
8640 | ORDER BY airport_departure_country_count DESC |
||
8641 | LIMIT 10 OFFSET 0"; |
||
8642 | |||
8643 | |||
8644 | $sth = $this->db->prepare($query); |
||
8645 | $sth->execute($query_values); |
||
8646 | |||
8647 | $airport_array = array(); |
||
8648 | $temp_array = array(); |
||
8649 | |||
8650 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
8651 | { |
||
8652 | $temp_array['airport_departure_country_count'] = $row['airport_departure_country_count']; |
||
8653 | $temp_array['airport_departure_country'] = $row['departure_airport_country']; |
||
8654 | |||
8655 | $airport_array[] = $temp_array; |
||
8656 | } |
||
8657 | |||
8658 | return $airport_array; |
||
8659 | } |
||
8660 | |||
8661 | |||
8662 | /** |
||
8663 | * Counts all airport arrival countries |
||
8664 | * |
||
8665 | * @return Array the airport arrival list |
||
8666 | * |
||
8667 | */ |
||
8668 | public function countAllArrivalCountries($limit = true,$filters = array(),$year = '',$month = '',$day = '') |
||
8669 | { |
||
8670 | global $globalDBdriver; |
||
8671 | $filter_query = $this->getFilter($filters,true,true); |
||
8672 | $query = "SELECT DISTINCT spotter_output.arrival_airport_country, COUNT(spotter_output.arrival_airport_country) AS airport_arrival_country_count, countries.iso3 AS airport_arrival_country_iso3 |
||
8673 | FROM countries, spotter_output".$filter_query." countries.name = spotter_output.arrival_airport_country AND spotter_output.arrival_airport_country <> '' AND spotter_output.arrival_airport_icao <> 'NA' AND spotter_output.arrival_airport_icao <> ''"; |
||
8674 | $query_values = array(); |
||
8675 | if ($year != '') { |
||
8676 | if ($globalDBdriver == 'mysql') { |
||
8677 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
8678 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
8679 | } else { |
||
8680 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
8681 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
8682 | } |
||
8683 | } |
||
8684 | if ($month != '') { |
||
8685 | if ($globalDBdriver == 'mysql') { |
||
8686 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
8687 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
8688 | } else { |
||
8689 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
8690 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
8691 | } |
||
8692 | } |
||
8693 | if ($day != '') { |
||
8694 | if ($globalDBdriver == 'mysql') { |
||
8695 | $query .= " AND DAY(spotter_output.date) = :day"; |
||
8696 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
8697 | } else { |
||
8698 | $query .= " AND EXTRACT(DAY FROM spotter_output.date) = :day"; |
||
8699 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
8700 | } |
||
8701 | } |
||
8702 | $query .= " GROUP BY spotter_output.arrival_airport_country, countries.iso3 |
||
8703 | ORDER BY airport_arrival_country_count DESC"; |
||
8704 | if ($limit) $query .= " LIMIT 10 OFFSET 0"; |
||
8705 | |||
8706 | |||
8707 | $sth = $this->db->prepare($query); |
||
8708 | $sth->execute($query_values); |
||
8709 | |||
8710 | $airport_array = array(); |
||
8711 | $temp_array = array(); |
||
8712 | |||
8713 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
8714 | { |
||
8715 | $temp_array['airport_arrival_country_count'] = $row['airport_arrival_country_count']; |
||
8716 | $temp_array['airport_arrival_country'] = $row['arrival_airport_country']; |
||
8717 | $temp_array['airport_arrival_country_iso3'] = $row['airport_arrival_country_iso3']; |
||
8718 | |||
8719 | $airport_array[] = $temp_array; |
||
8720 | } |
||
8721 | |||
8722 | return $airport_array; |
||
8723 | } |
||
8724 | |||
8725 | |||
8726 | |||
8727 | |||
8728 | |||
8729 | /** |
||
8730 | * Gets all route combinations |
||
8731 | * |
||
8732 | * @return Array the route list |
||
8733 | * |
||
8734 | */ |
||
8735 | public function countAllRoutes($filters = array()) |
||
8736 | { |
||
8737 | $filter_query = $this->getFilter($filters,true,true); |
||
8738 | $query = "SELECT DISTINCT concat(spotter_output.departure_airport_icao, ' - ', spotter_output.arrival_airport_icao) AS route, count(concat(spotter_output.departure_airport_icao, ' - ', spotter_output.arrival_airport_icao)) AS route_count, spotter_output.departure_airport_icao, spotter_output.departure_airport_name AS airport_departure_name, spotter_output.departure_airport_city AS airport_departure_city, spotter_output.departure_airport_country AS airport_departure_country, spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name AS airport_arrival_name, spotter_output.arrival_airport_city AS airport_arrival_city, spotter_output.arrival_airport_country AS airport_arrival_country |
||
8739 | FROM spotter_output".$filter_query." spotter_output.ident <> '' AND spotter_output.departure_airport_icao <> 'NA' AND spotter_output.departure_airport_icao <> '' AND spotter_output.arrival_airport_icao <> 'NA' AND spotter_output.arrival_airport_icao <> '' |
||
8740 | GROUP BY route,spotter_output.departure_airport_icao, spotter_output.arrival_airport_icao,spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country |
||
8741 | ORDER BY route_count DESC |
||
8742 | LIMIT 10 OFFSET 0"; |
||
8743 | |||
8744 | |||
8745 | $sth = $this->db->prepare($query); |
||
8746 | $sth->execute(); |
||
8747 | |||
8748 | $routes_array = array(); |
||
8749 | $temp_array = array(); |
||
8750 | |||
8751 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
8752 | { |
||
8753 | $temp_array['route_count'] = $row['route_count']; |
||
8754 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
8755 | $temp_array['airport_departure_name'] = $row['airport_departure_name']; |
||
8756 | $temp_array['airport_departure_city'] = $row['airport_departure_city']; |
||
8757 | $temp_array['airport_departure_country'] = $row['airport_departure_country']; |
||
8758 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
8759 | $temp_array['airport_arrival_name'] = $row['airport_arrival_name']; |
||
8760 | $temp_array['airport_arrival_city'] = $row['airport_arrival_city']; |
||
8761 | $temp_array['airport_arrival_country'] = $row['airport_arrival_country']; |
||
8762 | |||
8763 | $routes_array[] = $temp_array; |
||
8764 | } |
||
8765 | |||
8766 | return $routes_array; |
||
8767 | } |
||
8768 | |||
8769 | |||
8770 | |||
8771 | |||
8772 | /** |
||
8773 | * Gets all route combinations based on an aircraft |
||
8774 | * |
||
8775 | * @return Array the route list |
||
8776 | * |
||
8777 | */ |
||
8778 | public function countAllRoutesByAircraft($aircraft_icao,$filters = array()) |
||
8779 | { |
||
8780 | $filter_query = $this->getFilter($filters,true,true); |
||
8781 | $aircraft_icao = filter_var($aircraft_icao,FILTER_SANITIZE_STRING); |
||
8782 | $query = "SELECT DISTINCT concat(spotter_output.departure_airport_icao, ' - ', spotter_output.arrival_airport_icao) AS route, count(concat(spotter_output.departure_airport_icao, ' - ', spotter_output.arrival_airport_icao)) AS route_count, spotter_output.departure_airport_icao, spotter_output.departure_airport_name AS airport_departure_name, spotter_output.departure_airport_city AS airport_departure_city, spotter_output.departure_airport_country AS airport_departure_country, spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name AS airport_arrival_name, spotter_output.arrival_airport_city AS airport_arrival_city, spotter_output.arrival_airport_country AS airport_arrival_country |
||
8783 | FROM spotter_output".$filter_query." spotter_output.ident <> '' AND spotter_output.aircraft_icao = :aircraft_icao |
||
8784 | GROUP BY route, spotter_output.departure_airport_icao, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country, spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
8785 | ORDER BY route_count DESC"; |
||
8786 | |||
8787 | $sth = $this->db->prepare($query); |
||
8788 | $sth->execute(array(':aircraft_icao' => $aircraft_icao)); |
||
8789 | |||
8790 | $routes_array = array(); |
||
8791 | $temp_array = array(); |
||
8792 | |||
8793 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
8794 | { |
||
8795 | $temp_array['route_count'] = $row['route_count']; |
||
8796 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
8797 | $temp_array['airport_departure_name'] = $row['airport_departure_name']; |
||
8798 | $temp_array['airport_departure_city'] = $row['airport_departure_city']; |
||
8799 | $temp_array['airport_departure_country'] = $row['airport_departure_country']; |
||
8800 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
8801 | $temp_array['airport_arrival_name'] = $row['airport_arrival_name']; |
||
8802 | $temp_array['airport_arrival_city'] = $row['airport_arrival_city']; |
||
8803 | $temp_array['airport_arrival_country'] = $row['airport_arrival_country']; |
||
8804 | |||
8805 | $routes_array[] = $temp_array; |
||
8806 | } |
||
8807 | |||
8808 | return $routes_array; |
||
8809 | } |
||
8810 | |||
8811 | |||
8812 | /** |
||
8813 | * Gets all route combinations based on an aircraft registration |
||
8814 | * |
||
8815 | * @return Array the route list |
||
8816 | * |
||
8817 | */ |
||
8818 | public function countAllRoutesByRegistration($registration, $filters = array()) |
||
8819 | { |
||
8820 | $filter_query = $this->getFilter($filters,true,true); |
||
8821 | $registration = filter_var($registration, FILTER_SANITIZE_STRING); |
||
8822 | $query = "SELECT DISTINCT concat(spotter_output.departure_airport_icao, ' - ', spotter_output.arrival_airport_icao) AS route, count(concat(spotter_output.departure_airport_icao, ' - ', spotter_output.arrival_airport_icao)) AS route_count, spotter_output.departure_airport_icao, spotter_output.departure_airport_name AS airport_departure_name, spotter_output.departure_airport_city AS airport_departure_city, spotter_output.departure_airport_country AS airport_departure_country, spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name AS airport_arrival_name, spotter_output.arrival_airport_city AS airport_arrival_city, spotter_output.arrival_airport_country AS airport_arrival_country |
||
8823 | FROM spotter_output".$filter_query." spotter_output.ident <> '' AND spotter_output.registration = :registration |
||
8824 | GROUP BY route |
||
8825 | ORDER BY route_count DESC"; |
||
8826 | |||
8827 | |||
8828 | $sth = $this->db->prepare($query); |
||
8829 | $sth->execute(array(':registration' => $registration)); |
||
8830 | |||
8831 | $routes_array = array(); |
||
8832 | $temp_array = array(); |
||
8833 | |||
8834 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
8835 | { |
||
8836 | $temp_array['route_count'] = $row['route_count']; |
||
8837 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
8838 | $temp_array['airport_departure_name'] = $row['airport_departure_name']; |
||
8839 | $temp_array['airport_departure_city'] = $row['airport_departure_city']; |
||
8840 | $temp_array['airport_departure_country'] = $row['airport_departure_country']; |
||
8841 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
8842 | $temp_array['airport_arrival_name'] = $row['airport_arrival_name']; |
||
8843 | $temp_array['airport_arrival_city'] = $row['airport_arrival_city']; |
||
8844 | $temp_array['airport_arrival_country'] = $row['airport_arrival_country']; |
||
8845 | |||
8846 | $routes_array[] = $temp_array; |
||
8847 | } |
||
8848 | |||
8849 | return $routes_array; |
||
8850 | } |
||
8851 | |||
8852 | |||
8853 | |||
8854 | /** |
||
8855 | * Gets all route combinations based on an airline |
||
8856 | * |
||
8857 | * @return Array the route list |
||
8858 | * |
||
8859 | */ |
||
8860 | public function countAllRoutesByAirline($airline_icao, $filters = array()) |
||
8861 | { |
||
8862 | $filter_query = $this->getFilter($filters,true,true); |
||
8863 | $airline_icao = filter_var($airline_icao,FILTER_SANITIZE_STRING); |
||
8864 | $query = "SELECT DISTINCT concat(spotter_output.departure_airport_icao, ' - ', spotter_output.arrival_airport_icao) AS route, count(concat(spotter_output.departure_airport_icao, ' - ', spotter_output.arrival_airport_icao)) AS route_count, spotter_output.departure_airport_icao, spotter_output.departure_airport_name AS airport_departure_name, spotter_output.departure_airport_city AS airport_departure_city, spotter_output.departure_airport_country AS airport_departure_country, spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name AS airport_arrival_name, spotter_output.arrival_airport_city AS airport_arrival_city, spotter_output.arrival_airport_country AS airport_arrival_country |
||
8865 | FROM spotter_output".$filter_query." spotter_output.ident <> '' AND spotter_output.airline_icao = :airline_icao |
||
8866 | GROUP BY route, spotter_output.departure_airport_icao, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country, spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
8867 | ORDER BY route_count DESC"; |
||
8868 | |||
8869 | |||
8870 | $sth = $this->db->prepare($query); |
||
8871 | $sth->execute(array(':airline_icao' => $airline_icao)); |
||
8872 | |||
8873 | $routes_array = array(); |
||
8874 | $temp_array = array(); |
||
8875 | |||
8876 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
8877 | { |
||
8878 | $temp_array['route_count'] = $row['route_count']; |
||
8879 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
8880 | $temp_array['airport_departure_name'] = $row['airport_departure_name']; |
||
8881 | $temp_array['airport_departure_city'] = $row['airport_departure_city']; |
||
8882 | $temp_array['airport_departure_country'] = $row['airport_departure_country']; |
||
8883 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
8884 | $temp_array['airport_arrival_name'] = $row['airport_arrival_name']; |
||
8885 | $temp_array['airport_arrival_city'] = $row['airport_arrival_city']; |
||
8886 | $temp_array['airport_arrival_country'] = $row['airport_arrival_country']; |
||
8887 | |||
8888 | $routes_array[] = $temp_array; |
||
8889 | } |
||
8890 | |||
8891 | return $routes_array; |
||
8892 | } |
||
8893 | |||
8894 | |||
8895 | |||
8896 | /** |
||
8897 | * Gets all route combinations based on an airport |
||
8898 | * |
||
8899 | * @return Array the route list |
||
8900 | * |
||
8901 | */ |
||
8902 | public function countAllRoutesByAirport($airport_icao, $filters = array()) |
||
8903 | { |
||
8904 | $filter_query = $this->getFilter($filters,true,true); |
||
8905 | $airport_icao = filter_var($airport_icao,FILTER_SANITIZE_STRING); |
||
8906 | $query = "SELECT DISTINCT concat(spotter_output.departure_airport_icao, ' - ', spotter_output.arrival_airport_icao) AS route, count(concat(spotter_output.departure_airport_icao, ' - ', spotter_output.arrival_airport_icao)) AS route_count, spotter_output.departure_airport_icao, spotter_output.departure_airport_name AS airport_departure_name, spotter_output.departure_airport_city AS airport_departure_city, spotter_output.departure_airport_country AS airport_departure_country, spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name AS airport_arrival_name, spotter_output.arrival_airport_city AS airport_arrival_city, spotter_output.arrival_airport_country AS airport_arrival_country |
||
8907 | FROM spotter_output".$filter_query." spotter_output.ident <> '' AND (spotter_output.departure_airport_icao = :airport_icao OR spotter_output.arrival_airport_icao = :airport_icao) |
||
8908 | GROUP BY route, spotter_output.departure_airport_icao, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country, spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
8909 | ORDER BY route_count DESC"; |
||
8910 | |||
8911 | $sth = $this->db->prepare($query); |
||
8912 | $sth->execute(array(':airport_icao' => $airport_icao)); |
||
8913 | |||
8914 | $routes_array = array(); |
||
8915 | $temp_array = array(); |
||
8916 | |||
8917 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
8918 | { |
||
8919 | $temp_array['route_count'] = $row['route_count']; |
||
8920 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
8921 | $temp_array['airport_departure_name'] = $row['airport_departure_name']; |
||
8922 | $temp_array['airport_departure_city'] = $row['airport_departure_city']; |
||
8923 | $temp_array['airport_departure_country'] = $row['airport_departure_country']; |
||
8924 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
8925 | $temp_array['airport_arrival_name'] = $row['airport_arrival_name']; |
||
8926 | $temp_array['airport_arrival_city'] = $row['airport_arrival_city']; |
||
8927 | $temp_array['airport_arrival_country'] = $row['airport_arrival_country']; |
||
8928 | |||
8929 | $routes_array[] = $temp_array; |
||
8930 | } |
||
8931 | |||
8932 | return $routes_array; |
||
8933 | } |
||
8934 | |||
8935 | |||
8936 | |||
8937 | /** |
||
8938 | * Gets all route combinations based on an country |
||
8939 | * |
||
8940 | * @return Array the route list |
||
8941 | * |
||
8942 | */ |
||
8943 | public function countAllRoutesByCountry($country, $filters = array()) |
||
8944 | { |
||
8945 | $filter_query = $this->getFilter($filters,true,true); |
||
8946 | $country = filter_var($country,FILTER_SANITIZE_STRING); |
||
8947 | $query = "SELECT DISTINCT concat(spotter_output.departure_airport_icao, ' - ', spotter_output.arrival_airport_icao) AS route, count(concat(spotter_output.departure_airport_icao, ' - ', spotter_output.arrival_airport_icao)) AS route_count, spotter_output.departure_airport_icao, spotter_output.departure_airport_name AS airport_departure_name, spotter_output.departure_airport_city AS airport_departure_city, spotter_output.departure_airport_country AS airport_departure_country, spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name AS airport_arrival_name, spotter_output.arrival_airport_city AS airport_arrival_city, spotter_output.arrival_airport_country AS airport_arrival_country |
||
8948 | FROM spotter_output".$filter_query." spotter_output.ident <> '' AND ((spotter_output.departure_airport_country = :country) OR (spotter_output.arrival_airport_country = :country)) OR spotter_output.airline_country = :country |
||
8949 | GROUP BY route, spotter_output.departure_airport_icao, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country, spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
8950 | ORDER BY route_count DESC"; |
||
8951 | |||
8952 | $sth = $this->db->prepare($query); |
||
8953 | $sth->execute(array(':country' => $country)); |
||
8954 | |||
8955 | $routes_array = array(); |
||
8956 | $temp_array = array(); |
||
8957 | |||
8958 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
8959 | { |
||
8960 | $temp_array['route_count'] = $row['route_count']; |
||
8961 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
8962 | $temp_array['airport_departure_name'] = $row['airport_departure_name']; |
||
8963 | $temp_array['airport_departure_city'] = $row['airport_departure_city']; |
||
8964 | $temp_array['airport_departure_country'] = $row['airport_departure_country']; |
||
8965 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
8966 | $temp_array['airport_arrival_name'] = $row['airport_arrival_name']; |
||
8967 | $temp_array['airport_arrival_city'] = $row['airport_arrival_city']; |
||
8968 | $temp_array['airport_arrival_country'] = $row['airport_arrival_country']; |
||
8969 | |||
8970 | $routes_array[] = $temp_array; |
||
8971 | } |
||
8972 | |||
8973 | return $routes_array; |
||
8974 | } |
||
8975 | |||
8976 | |||
8977 | /** |
||
8978 | * Gets all route combinations based on an date |
||
8979 | * |
||
8980 | * @return Array the route list |
||
8981 | * |
||
8982 | */ |
||
8983 | public function countAllRoutesByDate($date, $filters = array()) |
||
8984 | { |
||
8985 | global $globalTimezone, $globalDBdriver; |
||
8986 | $filter_query = $this->getFilter($filters,true,true); |
||
8987 | $date = filter_var($date,FILTER_SANITIZE_STRING); |
||
8988 | if ($globalTimezone != '') { |
||
8989 | date_default_timezone_set($globalTimezone); |
||
8990 | $datetime = new DateTime($date); |
||
8991 | $offset = $datetime->format('P'); |
||
8992 | } else $offset = '+00:00'; |
||
8993 | |||
8994 | if ($globalDBdriver == 'mysql') { |
||
8995 | $query = "SELECT DISTINCT concat(spotter_output.departure_airport_icao, ' - ', spotter_output.arrival_airport_icao) AS route, count(concat(spotter_output.departure_airport_icao, ' - ', spotter_output.arrival_airport_icao)) AS route_count, spotter_output.departure_airport_icao, spotter_output.departure_airport_name AS airport_departure_name, spotter_output.departure_airport_city AS airport_departure_city, spotter_output.departure_airport_country AS airport_departure_country, spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name AS airport_arrival_name, spotter_output.arrival_airport_city AS airport_arrival_city, spotter_output.arrival_airport_country AS airport_arrival_country |
||
8996 | FROM spotter_output".$filter_query." spotter_output.ident <> '' AND DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) = :date |
||
8997 | GROUP BY route, spotter_output.departure_airport_icao, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country, spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
8998 | ORDER BY route_count DESC"; |
||
8999 | } else { |
||
9000 | $query = "SELECT DISTINCT concat(spotter_output.departure_airport_icao, ' - ', spotter_output.arrival_airport_icao) AS route, count(concat(spotter_output.departure_airport_icao, ' - ', spotter_output.arrival_airport_icao)) AS route_count, spotter_output.departure_airport_icao, spotter_output.departure_airport_name AS airport_departure_name, spotter_output.departure_airport_city AS airport_departure_city, spotter_output.departure_airport_country AS airport_departure_country, spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name AS airport_arrival_name, spotter_output.arrival_airport_city AS airport_arrival_city, spotter_output.arrival_airport_country AS airport_arrival_country |
||
9001 | FROM spotter_output".$filter_query." spotter_output.ident <> '' AND to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') = :date |
||
9002 | GROUP BY route, spotter_output.departure_airport_icao, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country, spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
9003 | ORDER BY route_count DESC"; |
||
9004 | } |
||
9005 | |||
9006 | $sth = $this->db->prepare($query); |
||
9007 | $sth->execute(array(':date' => $date, ':offset' => $offset)); |
||
9008 | |||
9009 | $routes_array = array(); |
||
9010 | $temp_array = array(); |
||
9011 | |||
9012 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
9013 | { |
||
9014 | $temp_array['route_count'] = $row['route_count']; |
||
9015 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
9016 | $temp_array['airport_departure_name'] = $row['airport_departure_name']; |
||
9017 | $temp_array['airport_departure_city'] = $row['airport_departure_city']; |
||
9018 | $temp_array['airport_departure_country'] = $row['airport_departure_country']; |
||
9019 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
9020 | $temp_array['airport_arrival_name'] = $row['airport_arrival_name']; |
||
9021 | $temp_array['airport_arrival_city'] = $row['airport_arrival_city']; |
||
9022 | $temp_array['airport_arrival_country'] = $row['airport_arrival_country']; |
||
9023 | |||
9024 | $routes_array[] = $temp_array; |
||
9025 | } |
||
9026 | |||
9027 | return $routes_array; |
||
9028 | } |
||
9029 | |||
9030 | |||
9031 | /** |
||
9032 | * Gets all route combinations based on an ident/callsign |
||
9033 | * |
||
9034 | * @return Array the route list |
||
9035 | * |
||
9036 | */ |
||
9037 | public function countAllRoutesByIdent($ident, $filters = array()) |
||
9038 | { |
||
9039 | $filter_query = $this->getFilter($filters,true,true); |
||
9040 | $ident = filter_var($ident,FILTER_SANITIZE_STRING); |
||
9041 | $query = "SELECT DISTINCT concat(spotter_output.departure_airport_icao, ' - ', spotter_output.arrival_airport_icao) AS route, count(concat(spotter_output.departure_airport_icao, ' - ', spotter_output.arrival_airport_icao)) AS route_count, spotter_output.departure_airport_icao, spotter_output.departure_airport_name AS airport_departure_name, spotter_output.departure_airport_city AS airport_departure_city, spotter_output.departure_airport_country AS airport_departure_country, spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name AS airport_arrival_name, spotter_output.arrival_airport_city AS airport_arrival_city, spotter_output.arrival_airport_country AS airport_arrival_country |
||
9042 | FROM spotter_output".$filter_query." spotter_output.ident <> '' AND spotter_output.ident = :ident |
||
9043 | GROUP BY route, spotter_output.departure_airport_icao, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country, spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
9044 | ORDER BY route_count DESC"; |
||
9045 | |||
9046 | |||
9047 | $sth = $this->db->prepare($query); |
||
9048 | $sth->execute(array(':ident' => $ident)); |
||
9049 | |||
9050 | $routes_array = array(); |
||
9051 | $temp_array = array(); |
||
9052 | |||
9053 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
9054 | { |
||
9055 | $temp_array['route_count'] = $row['route_count']; |
||
9056 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
9057 | $temp_array['airport_departure_name'] = $row['airport_departure_name']; |
||
9058 | $temp_array['airport_departure_city'] = $row['airport_departure_city']; |
||
9059 | $temp_array['airport_departure_country'] = $row['airport_departure_country']; |
||
9060 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
9061 | $temp_array['airport_arrival_name'] = $row['airport_arrival_name']; |
||
9062 | $temp_array['airport_arrival_city'] = $row['airport_arrival_city']; |
||
9063 | $temp_array['airport_arrival_country'] = $row['airport_arrival_country']; |
||
9064 | |||
9065 | $routes_array[] = $temp_array; |
||
9066 | } |
||
9067 | |||
9068 | return $routes_array; |
||
9069 | } |
||
9070 | |||
9071 | /** |
||
9072 | * Gets all route combinations based on an owner |
||
9073 | * |
||
9074 | * @return Array the route list |
||
9075 | * |
||
9076 | */ |
||
9077 | public function countAllRoutesByOwner($owner,$filters = array()) |
||
9078 | { |
||
9079 | $filter_query = $this->getFilter($filters,true,true); |
||
9080 | $owner = filter_var($owner,FILTER_SANITIZE_STRING); |
||
9081 | $query = "SELECT DISTINCT concat(spotter_output.departure_airport_icao, ' - ', spotter_output.arrival_airport_icao) AS route, count(concat(spotter_output.departure_airport_icao, ' - ', spotter_output.arrival_airport_icao)) AS route_count, spotter_output.departure_airport_icao, spotter_output.departure_airport_name AS airport_departure_name, spotter_output.departure_airport_city AS airport_departure_city, spotter_output.departure_airport_country AS airport_departure_country, spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name AS airport_arrival_name, spotter_output.arrival_airport_city AS airport_arrival_city, spotter_output.arrival_airport_country AS airport_arrival_country |
||
9082 | FROM spotter_output".$filter_query." spotter_output.ident <> '' AND spotter_output.owner_name = :owner |
||
9083 | GROUP BY route, spotter_output.departure_airport_icao, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country, spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
9084 | ORDER BY route_count DESC"; |
||
9085 | |||
9086 | |||
9087 | $sth = $this->db->prepare($query); |
||
9088 | $sth->execute(array(':owner' => $owner)); |
||
9089 | |||
9090 | $routes_array = array(); |
||
9091 | $temp_array = array(); |
||
9092 | |||
9093 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
9094 | { |
||
9095 | $temp_array['route_count'] = $row['route_count']; |
||
9096 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
9097 | $temp_array['airport_departure_name'] = $row['airport_departure_name']; |
||
9098 | $temp_array['airport_departure_city'] = $row['airport_departure_city']; |
||
9099 | $temp_array['airport_departure_country'] = $row['airport_departure_country']; |
||
9100 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
9101 | $temp_array['airport_arrival_name'] = $row['airport_arrival_name']; |
||
9102 | $temp_array['airport_arrival_city'] = $row['airport_arrival_city']; |
||
9103 | $temp_array['airport_arrival_country'] = $row['airport_arrival_country']; |
||
9104 | |||
9105 | $routes_array[] = $temp_array; |
||
9106 | } |
||
9107 | |||
9108 | return $routes_array; |
||
9109 | } |
||
9110 | |||
9111 | /** |
||
9112 | * Gets all route combinations based on a pilot |
||
9113 | * |
||
9114 | * @return Array the route list |
||
9115 | * |
||
9116 | */ |
||
9117 | public function countAllRoutesByPilot($pilot,$filters = array()) |
||
9118 | { |
||
9119 | $filter_query = $this->getFilter($filters,true,true); |
||
9120 | $pilot = filter_var($pilot,FILTER_SANITIZE_STRING); |
||
9121 | $query = "SELECT DISTINCT concat(spotter_output.departure_airport_icao, ' - ', spotter_output.arrival_airport_icao) AS route, count(concat(spotter_output.departure_airport_icao, ' - ', spotter_output.arrival_airport_icao)) AS route_count, spotter_output.departure_airport_icao, spotter_output.departure_airport_name AS airport_departure_name, spotter_output.departure_airport_city AS airport_departure_city, spotter_output.departure_airport_country AS airport_departure_country, spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name AS airport_arrival_name, spotter_output.arrival_airport_city AS airport_arrival_city, spotter_output.arrival_airport_country AS airport_arrival_country |
||
9122 | FROM spotter_output".$filter_query." spotter_output.ident <> '' AND (spotter_output.pilot_name = :pilot OR spotter_output.pilot_id = :pilot) |
||
9123 | GROUP BY route, spotter_output.departure_airport_icao, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country, spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
9124 | ORDER BY route_count DESC"; |
||
9125 | |||
9126 | |||
9127 | $sth = $this->db->prepare($query); |
||
9128 | $sth->execute(array(':pilot' => $pilot)); |
||
9129 | |||
9130 | $routes_array = array(); |
||
9131 | $temp_array = array(); |
||
9132 | |||
9133 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
9134 | { |
||
9135 | $temp_array['route_count'] = $row['route_count']; |
||
9136 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
9137 | $temp_array['airport_departure_name'] = $row['airport_departure_name']; |
||
9138 | $temp_array['airport_departure_city'] = $row['airport_departure_city']; |
||
9139 | $temp_array['airport_departure_country'] = $row['airport_departure_country']; |
||
9140 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
9141 | $temp_array['airport_arrival_name'] = $row['airport_arrival_name']; |
||
9142 | $temp_array['airport_arrival_city'] = $row['airport_arrival_city']; |
||
9143 | $temp_array['airport_arrival_country'] = $row['airport_arrival_country']; |
||
9144 | |||
9145 | $routes_array[] = $temp_array; |
||
9146 | } |
||
9147 | |||
9148 | return $routes_array; |
||
9149 | } |
||
9150 | |||
9151 | |||
9152 | /** |
||
9153 | * Gets all route combinations based on an manufacturer |
||
9154 | * |
||
9155 | * @return Array the route list |
||
9156 | * |
||
9157 | */ |
||
9158 | public function countAllRoutesByManufacturer($aircraft_manufacturer, $filters = array()) |
||
9159 | { |
||
9160 | $filter_query = $this->getFilter($filters,true,true); |
||
9161 | $aircraft_manufacturer = filter_var($aircraft_manufacturer,FILTER_SANITIZE_STRING); |
||
9162 | $query = "SELECT DISTINCT concat(spotter_output.departure_airport_icao, ' - ', spotter_output.arrival_airport_icao) AS route, count(concat(spotter_output.departure_airport_icao, ' - ', spotter_output.arrival_airport_icao)) AS route_count, spotter_output.departure_airport_icao, spotter_output.departure_airport_name AS airport_departure_name, spotter_output.departure_airport_city AS airport_departure_city, spotter_output.departure_airport_country AS airport_departure_country, spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name AS airport_arrival_name, spotter_output.arrival_airport_city AS airport_arrival_city, spotter_output.arrival_airport_country AS airport_arrival_country |
||
9163 | FROM spotter_output".$filter_query." spotter_output.ident <> '' AND spotter_output.aircraft_manufacturer = :aircraft_manufacturer |
||
9164 | GROUP BY route |
||
9165 | ORDER BY route_count DESC"; |
||
9166 | |||
9167 | |||
9168 | $sth = $this->db->prepare($query); |
||
9169 | $sth->execute(array(':aircraft_manufacturer' => $aircraft_manufacturer)); |
||
9170 | |||
9171 | $routes_array = array(); |
||
9172 | $temp_array = array(); |
||
9173 | |||
9174 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
9175 | { |
||
9176 | $temp_array['route_count'] = $row['route_count']; |
||
9177 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
9178 | $temp_array['airport_departure_name'] = $row['airport_departure_name']; |
||
9179 | $temp_array['airport_departure_city'] = $row['airport_departure_city']; |
||
9180 | $temp_array['airport_departure_country'] = $row['airport_departure_country']; |
||
9181 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
9182 | $temp_array['airport_arrival_name'] = $row['airport_arrival_name']; |
||
9183 | $temp_array['airport_arrival_city'] = $row['airport_arrival_city']; |
||
9184 | $temp_array['airport_arrival_country'] = $row['airport_arrival_country']; |
||
9185 | |||
9186 | $routes_array[] = $temp_array; |
||
9187 | } |
||
9188 | |||
9189 | return $routes_array; |
||
9190 | } |
||
9191 | |||
9192 | |||
9193 | |||
9194 | /** |
||
9195 | * Gets all route combinations with waypoints |
||
9196 | * |
||
9197 | * @return Array the route list |
||
9198 | * |
||
9199 | */ |
||
9200 | public function countAllRoutesWithWaypoints($filters = array()) |
||
9201 | { |
||
9202 | $filter_query = $this->getFilter($filters,true,true); |
||
9203 | $query = "SELECT DISTINCT spotter_output.waypoints AS route, count(spotter_output.waypoints) AS route_count, spotter_output.spotter_id, spotter_output.departure_airport_icao, spotter_output.departure_airport_name AS airport_departure_name, spotter_output.departure_airport_city AS airport_departure_city, spotter_output.departure_airport_country AS airport_departure_country, spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name AS airport_arrival_name, spotter_output.arrival_airport_city AS airport_arrival_city, spotter_output.arrival_airport_country AS airport_arrival_country |
||
9204 | FROM spotter_output".$filter_query." spotter_output.ident <> '' AND spotter_output.waypoints <> '' |
||
9205 | GROUP BY route, spotter_output.spotter_id, spotter_output.departure_airport_icao, spotter_output.departure_airport_name, spotter_output.departure_airport_city, spotter_output.departure_airport_country, spotter_output.arrival_airport_icao, spotter_output.arrival_airport_name, spotter_output.arrival_airport_city, spotter_output.arrival_airport_country |
||
9206 | ORDER BY route_count DESC |
||
9207 | LIMIT 10 OFFSET 0"; |
||
9208 | |||
9209 | |||
9210 | $sth = $this->db->prepare($query); |
||
9211 | $sth->execute(); |
||
9212 | |||
9213 | $routes_array = array(); |
||
9214 | $temp_array = array(); |
||
9215 | |||
9216 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
9217 | { |
||
9218 | $temp_array['spotter_id'] = $row['spotter_id']; |
||
9219 | $temp_array['route_count'] = $row['route_count']; |
||
9220 | $temp_array['airport_departure_icao'] = $row['departure_airport_icao']; |
||
9221 | $temp_array['airport_departure_name'] = $row['airport_departure_name']; |
||
9222 | $temp_array['airport_departure_city'] = $row['airport_departure_city']; |
||
9223 | $temp_array['airport_departure_country'] = $row['airport_departure_country']; |
||
9224 | $temp_array['airport_arrival_icao'] = $row['arrival_airport_icao']; |
||
9225 | $temp_array['airport_arrival_name'] = $row['airport_arrival_name']; |
||
9226 | $temp_array['airport_arrival_city'] = $row['airport_arrival_city']; |
||
9227 | $temp_array['airport_arrival_country'] = $row['airport_arrival_country']; |
||
9228 | |||
9229 | $routes_array[] = $temp_array; |
||
9230 | } |
||
9231 | |||
9232 | return $routes_array; |
||
9233 | } |
||
9234 | |||
9235 | /** |
||
9236 | * Gets all callsigns that have flown over |
||
9237 | * |
||
9238 | * @return Array the callsign list |
||
9239 | * |
||
9240 | */ |
||
9241 | public function countAllCallsigns($limit = true, $olderthanmonths = 0, $sincedate = '',$filters = array(),$year = '', $month = '', $day = '') |
||
9242 | { |
||
9243 | global $globalDBdriver; |
||
9244 | $filter_query = $this->getFilter($filters,true,true); |
||
9245 | $query = "SELECT DISTINCT spotter_output.ident, COUNT(spotter_output.ident) AS callsign_icao_count, spotter_output.airline_name, spotter_output.airline_icao |
||
9246 | FROM spotter_output".$filter_query." spotter_output.ident <> ''"; |
||
9247 | if ($olderthanmonths > 0) { |
||
9248 | if ($globalDBdriver == 'mysql') $query .= ' AND date < DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$olderthanmonths.' MONTH)'; |
||
9249 | else $query .= " AND spotter_output.date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$olderthanmonths." MONTHS'"; |
||
9250 | } |
||
9251 | if ($sincedate != '') { |
||
9252 | if ($globalDBdriver == 'mysql') $query .= " AND spotter_output.date > '".$sincedate."'"; |
||
9253 | else $query .= " AND spotter_output.date > CAST('".$sincedate."' AS TIMESTAMP)"; |
||
9254 | } |
||
9255 | $query_values = array(); |
||
9256 | if ($year != '') { |
||
9257 | if ($globalDBdriver == 'mysql') { |
||
9258 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
9259 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
9260 | } else { |
||
9261 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
9262 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
9263 | } |
||
9264 | } |
||
9265 | if ($month != '') { |
||
9266 | if ($globalDBdriver == 'mysql') { |
||
9267 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
9268 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
9269 | } else { |
||
9270 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
9271 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
9272 | } |
||
9273 | } |
||
9274 | if ($day != '') { |
||
9275 | if ($globalDBdriver == 'mysql') { |
||
9276 | $query .= " AND DAY(spotter_output.date) = :day"; |
||
9277 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
9278 | } else { |
||
9279 | $query .= " AND EXTRACT(DAY FROM spotter_output.date) = :day"; |
||
9280 | $query_values = array_merge($query_values,array(':day' => $day)); |
||
9281 | } |
||
9282 | } |
||
9283 | $query .= " GROUP BY spotter_output.ident, spotter_output.airline_name, spotter_output.airline_icao ORDER BY callsign_icao_count DESC"; |
||
9284 | if ($limit) $query .= " LIMIT 10 OFFSET 0"; |
||
9285 | |||
9286 | $sth = $this->db->prepare($query); |
||
9287 | $sth->execute($query_values); |
||
9288 | |||
9289 | $callsign_array = array(); |
||
9290 | $temp_array = array(); |
||
9291 | |||
9292 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
9293 | { |
||
9294 | $temp_array['callsign_icao'] = $row['ident']; |
||
9295 | $temp_array['airline_name'] = $row['airline_name']; |
||
9296 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
9297 | $temp_array['callsign_icao_count'] = $row['callsign_icao_count']; |
||
9298 | |||
9299 | $callsign_array[] = $temp_array; |
||
9300 | } |
||
9301 | |||
9302 | return $callsign_array; |
||
9303 | } |
||
9304 | |||
9305 | /** |
||
9306 | * Gets all callsigns that have flown over |
||
9307 | * |
||
9308 | * @return Array the callsign list |
||
9309 | * |
||
9310 | */ |
||
9311 | public function countAllCallsignsByAirlines($limit = true, $olderthanmonths = 0, $sincedate = '', $filters = array()) |
||
9312 | { |
||
9313 | global $globalDBdriver; |
||
9314 | $filter_query = $this->getFilter($filters,true,true); |
||
9315 | $query = "SELECT DISTINCT spotter_output.airline_icao, spotter_output.ident, COUNT(spotter_output.ident) AS callsign_icao_count, spotter_output.airline_name |
||
9316 | FROM spotter_output".$filter_query." spotter_output.ident <> '' AND spotter_output.airline_icao <> '' "; |
||
9317 | if ($olderthanmonths > 0) { |
||
9318 | if ($globalDBdriver == 'mysql') $query .= 'AND date < DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$olderthanmonths.' MONTH) '; |
||
9319 | else $query .= "AND spotter_output.date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$olderthanmonths." MONTHS' "; |
||
9320 | } |
||
9321 | if ($sincedate != '') { |
||
9322 | if ($globalDBdriver == 'mysql') $query .= "AND spotter_output.date > '".$sincedate."' "; |
||
9323 | else $query .= "AND spotter_output.date > CAST('".$sincedate."' AS TIMESTAMP) "; |
||
9324 | } |
||
9325 | $query .= "GROUP BY spotter_output.airline_icao, spotter_output.ident, spotter_output.airline_name, spotter_output.airline_icao ORDER BY callsign_icao_count DESC"; |
||
9326 | if ($limit) $query .= " LIMIT 10 OFFSET 0"; |
||
9327 | |||
9328 | $sth = $this->db->prepare($query); |
||
9329 | $sth->execute(); |
||
9330 | |||
9331 | $callsign_array = array(); |
||
9332 | $temp_array = array(); |
||
9333 | |||
9334 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
9335 | { |
||
9336 | $temp_array['callsign_icao'] = $row['ident']; |
||
9337 | $temp_array['airline_name'] = $row['airline_name']; |
||
9338 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
9339 | $temp_array['callsign_icao_count'] = $row['callsign_icao_count']; |
||
9340 | |||
9341 | $callsign_array[] = $temp_array; |
||
9342 | } |
||
9343 | |||
9344 | return $callsign_array; |
||
9345 | } |
||
9346 | |||
9347 | |||
9348 | |||
9349 | |||
9350 | /** |
||
9351 | * Counts all dates |
||
9352 | * |
||
9353 | * @return Array the date list |
||
9354 | * |
||
9355 | */ |
||
9356 | public function countAllDates($filters = array()) |
||
9357 | { |
||
9358 | global $globalTimezone, $globalDBdriver; |
||
9359 | if ($globalTimezone != '') { |
||
9360 | date_default_timezone_set($globalTimezone); |
||
9361 | $datetime = new DateTime(); |
||
9362 | $offset = $datetime->format('P'); |
||
9363 | } else $offset = '+00:00'; |
||
9364 | |||
9365 | if ($globalDBdriver == 'mysql') { |
||
9366 | $query = "SELECT DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS date_name, count(*) as date_count |
||
9367 | FROM spotter_output"; |
||
9368 | $query .= $this->getFilter($filters); |
||
9369 | $query .= " GROUP BY date_name |
||
9370 | ORDER BY date_count DESC |
||
9371 | LIMIT 10 OFFSET 0"; |
||
9372 | } else { |
||
9373 | $query = "SELECT to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') AS date_name, count(*) as date_count |
||
9374 | FROM spotter_output"; |
||
9375 | $query .= $this->getFilter($filters); |
||
9376 | $query .= " GROUP BY date_name |
||
9377 | ORDER BY date_count DESC |
||
9378 | LIMIT 10 OFFSET 0"; |
||
9379 | } |
||
9380 | |||
9381 | |||
9382 | $sth = $this->db->prepare($query); |
||
9383 | $sth->execute(array(':offset' => $offset)); |
||
9384 | |||
9385 | $date_array = array(); |
||
9386 | $temp_array = array(); |
||
9387 | |||
9388 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
9389 | { |
||
9390 | $temp_array['date_name'] = $row['date_name']; |
||
9391 | $temp_array['date_count'] = $row['date_count']; |
||
9392 | |||
9393 | $date_array[] = $temp_array; |
||
9394 | } |
||
9395 | |||
9396 | return $date_array; |
||
9397 | } |
||
9398 | |||
9399 | /** |
||
9400 | * Counts all dates |
||
9401 | * |
||
9402 | * @return Array the date list |
||
9403 | * |
||
9404 | */ |
||
9405 | public function countAllDatesByAirlines($filters = array()) |
||
9406 | { |
||
9407 | global $globalTimezone, $globalDBdriver; |
||
9408 | if ($globalTimezone != '') { |
||
9409 | date_default_timezone_set($globalTimezone); |
||
9410 | $datetime = new DateTime(); |
||
9411 | $offset = $datetime->format('P'); |
||
9412 | } else $offset = '+00:00'; |
||
9413 | $filter_query = $this->getFilter($filters,true,true); |
||
9414 | if ($globalDBdriver == 'mysql') { |
||
9415 | $query = "SELECT spotter_output.airline_icao, DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS date_name, count(*) as date_count |
||
9416 | FROM spotter_output".$filter_query." spotter_output.airline_icao <> '' |
||
9417 | GROUP BY spotter_output.airline_icao, date_name |
||
9418 | ORDER BY date_count DESC |
||
9419 | LIMIT 10 OFFSET 0"; |
||
9420 | } else { |
||
9421 | $query = "SELECT spotter_output.airline_icao, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') AS date_name, count(*) as date_count |
||
9422 | FROM spotter_output |
||
9423 | WHERE spotter_output.airline_icao <> '' |
||
9424 | GROUP BY spotter_output.airline_icao, date_name |
||
9425 | ORDER BY date_count DESC |
||
9426 | LIMIT 10 OFFSET 0"; |
||
9427 | } |
||
9428 | |||
9429 | |||
9430 | $sth = $this->db->prepare($query); |
||
9431 | $sth->execute(array(':offset' => $offset)); |
||
9432 | |||
9433 | $date_array = array(); |
||
9434 | $temp_array = array(); |
||
9435 | |||
9436 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
9437 | { |
||
9438 | $temp_array['date_name'] = $row['date_name']; |
||
9439 | $temp_array['date_count'] = $row['date_count']; |
||
9440 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
9441 | |||
9442 | $date_array[] = $temp_array; |
||
9443 | } |
||
9444 | |||
9445 | return $date_array; |
||
9446 | } |
||
9447 | |||
9448 | /** |
||
9449 | * Counts all dates during the last 7 days |
||
9450 | * |
||
9451 | * @return Array the date list |
||
9452 | * |
||
9453 | */ |
||
9454 | public function countAllDatesLast7Days($filters = array()) |
||
9455 | { |
||
9456 | global $globalTimezone, $globalDBdriver; |
||
9457 | if ($globalTimezone != '') { |
||
9458 | date_default_timezone_set($globalTimezone); |
||
9459 | $datetime = new DateTime(); |
||
9460 | $offset = $datetime->format('P'); |
||
9461 | } else $offset = '+00:00'; |
||
9462 | $filter_query = $this->getFilter($filters,true,true); |
||
9463 | if ($globalDBdriver == 'mysql') { |
||
9464 | $query = "SELECT DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS date_name, count(*) as date_count |
||
9465 | FROM spotter_output".$filter_query." spotter_output.date >= DATE_SUB(UTC_TIMESTAMP(),INTERVAL 7 DAY)"; |
||
9466 | $query .= " GROUP BY date_name |
||
9467 | ORDER BY spotter_output.date ASC"; |
||
9468 | $query_data = array(':offset' => $offset); |
||
9469 | } else { |
||
9470 | $query = "SELECT to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') AS date_name, count(*) as date_count |
||
9471 | FROM spotter_output".$filter_query." spotter_output.date >= CURRENT_TIMESTAMP AT TIME ZONE INTERVAL :offset - INTERVAL '7 DAYS'"; |
||
9472 | $query .= " GROUP BY date_name |
||
9473 | ORDER BY date_name ASC"; |
||
9474 | $query_data = array(':offset' => $offset); |
||
9475 | } |
||
9476 | |||
9477 | $sth = $this->db->prepare($query); |
||
9478 | $sth->execute($query_data); |
||
9479 | |||
9480 | $date_array = array(); |
||
9481 | $temp_array = array(); |
||
9482 | |||
9483 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
9484 | { |
||
9485 | $temp_array['date_name'] = $row['date_name']; |
||
9486 | $temp_array['date_count'] = $row['date_count']; |
||
9487 | |||
9488 | $date_array[] = $temp_array; |
||
9489 | } |
||
9490 | |||
9491 | return $date_array; |
||
9492 | } |
||
9493 | |||
9494 | /** |
||
9495 | * Counts all dates during the last month |
||
9496 | * |
||
9497 | * @return Array the date list |
||
9498 | * |
||
9499 | */ |
||
9500 | public function countAllDatesLastMonth($filters = array()) |
||
9501 | { |
||
9502 | global $globalTimezone, $globalDBdriver; |
||
9503 | if ($globalTimezone != '') { |
||
9504 | date_default_timezone_set($globalTimezone); |
||
9505 | $datetime = new DateTime(); |
||
9506 | $offset = $datetime->format('P'); |
||
9507 | } else $offset = '+00:00'; |
||
9508 | $filter_query = $this->getFilter($filters,true,true); |
||
9509 | if ($globalDBdriver == 'mysql') { |
||
9510 | $query = "SELECT DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS date_name, count(*) as date_count |
||
9511 | FROM spotter_output".$filter_query." spotter_output.date >= DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 MONTH)"; |
||
9512 | $query .= " GROUP BY date_name |
||
9513 | ORDER BY spotter_output.date ASC"; |
||
9514 | $query_data = array(':offset' => $offset); |
||
9515 | } else { |
||
9516 | $query = "SELECT to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') AS date_name, count(*) as date_count |
||
9517 | FROM spotter_output".$filter_query." spotter_output.date >= CURRENT_TIMESTAMP AT TIME ZONE INTERVAL :offset - INTERVAL '1 MONTHS'"; |
||
9518 | $query .= " GROUP BY date_name |
||
9519 | ORDER BY date_name ASC"; |
||
9520 | $query_data = array(':offset' => $offset); |
||
9521 | } |
||
9522 | |||
9523 | $sth = $this->db->prepare($query); |
||
9524 | $sth->execute($query_data); |
||
9525 | |||
9526 | $date_array = array(); |
||
9527 | $temp_array = array(); |
||
9528 | |||
9529 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
9530 | { |
||
9531 | $temp_array['date_name'] = $row['date_name']; |
||
9532 | $temp_array['date_count'] = $row['date_count']; |
||
9533 | |||
9534 | $date_array[] = $temp_array; |
||
9535 | } |
||
9536 | |||
9537 | return $date_array; |
||
9538 | } |
||
9539 | |||
9540 | |||
9541 | /** |
||
9542 | * Counts all dates during the last month |
||
9543 | * |
||
9544 | * @return Array the date list |
||
9545 | * |
||
9546 | */ |
||
9547 | public function countAllDatesLastMonthByAirlines($filters = array()) |
||
9548 | { |
||
9549 | global $globalTimezone, $globalDBdriver; |
||
9550 | $filter_query = $this->getFilter($filters,true,true); |
||
9551 | if ($globalTimezone != '') { |
||
9552 | date_default_timezone_set($globalTimezone); |
||
9553 | $datetime = new DateTime(); |
||
9554 | $offset = $datetime->format('P'); |
||
9555 | } else $offset = '+00:00'; |
||
9556 | |||
9557 | if ($globalDBdriver == 'mysql') { |
||
9558 | $query = "SELECT spotter_output.airline_icao, DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS date_name, count(*) as date_count |
||
9559 | FROM spotter_output".$filter_query." spotter_output.airline_icao <> '' AND spotter_output.date >= DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 MONTH) |
||
9560 | GROUP BY spotter_output.airline_icao, date_name |
||
9561 | ORDER BY spotter_output.date ASC"; |
||
9562 | $query_data = array(':offset' => $offset); |
||
9563 | } else { |
||
9564 | $query = "SELECT spotter_output.airline_icao, to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') AS date_name, count(*) as date_count |
||
9565 | FROM spotter_output".$filter_query." spotter_output.airline_icao <> '' AND spotter_output.date >= CURRENT_TIMESTAMP AT TIME ZONE INTERVAL :offset - INTERVAL '1 MONTHS' |
||
9566 | GROUP BY spotter_output.airline_icao, date_name |
||
9567 | ORDER BY date_name ASC"; |
||
9568 | $query_data = array(':offset' => $offset); |
||
9569 | } |
||
9570 | |||
9571 | $sth = $this->db->prepare($query); |
||
9572 | $sth->execute($query_data); |
||
9573 | |||
9574 | $date_array = array(); |
||
9575 | $temp_array = array(); |
||
9576 | |||
9577 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
9578 | { |
||
9579 | $temp_array['date_name'] = $row['date_name']; |
||
9580 | $temp_array['date_count'] = $row['date_count']; |
||
9581 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
9582 | |||
9583 | $date_array[] = $temp_array; |
||
9584 | } |
||
9585 | |||
9586 | return $date_array; |
||
9587 | } |
||
9588 | |||
9589 | |||
9590 | /** |
||
9591 | * Counts all month |
||
9592 | * |
||
9593 | * @return Array the month list |
||
9594 | * |
||
9595 | */ |
||
9596 | public function countAllMonths($filters = array()) |
||
9597 | { |
||
9598 | global $globalTimezone, $globalDBdriver; |
||
9599 | if ($globalTimezone != '') { |
||
9600 | date_default_timezone_set($globalTimezone); |
||
9601 | $datetime = new DateTime(); |
||
9602 | $offset = $datetime->format('P'); |
||
9603 | } else $offset = '+00:00'; |
||
9604 | |||
9605 | if ($globalDBdriver == 'mysql') { |
||
9606 | $query = "SELECT YEAR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS year_name,MONTH(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS month_name, count(*) as date_count |
||
9607 | FROM spotter_output"; |
||
9608 | $query .= $this->getFilter($filters); |
||
9609 | $query .= " GROUP BY year_name, month_name ORDER BY date_count DESC"; |
||
9610 | } else { |
||
9611 | $query = "SELECT EXTRACT(YEAR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS year_name,EXTRACT(MONTH FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS month_name, count(*) as date_count |
||
9612 | FROM spotter_output"; |
||
9613 | $query .= $this->getFilter($filters); |
||
9614 | $query .= " GROUP BY year_name, month_name ORDER BY date_count DESC"; |
||
9615 | } |
||
9616 | |||
9617 | |||
9618 | $sth = $this->db->prepare($query); |
||
9619 | $sth->execute(array(':offset' => $offset)); |
||
9620 | |||
9621 | $date_array = array(); |
||
9622 | $temp_array = array(); |
||
9623 | |||
9624 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
9625 | { |
||
9626 | $temp_array['month_name'] = $row['month_name']; |
||
9627 | $temp_array['year_name'] = $row['year_name']; |
||
9628 | $temp_array['date_count'] = $row['date_count']; |
||
9629 | |||
9630 | $date_array[] = $temp_array; |
||
9631 | } |
||
9632 | |||
9633 | return $date_array; |
||
9634 | } |
||
9635 | |||
9636 | /** |
||
9637 | * Counts all month |
||
9638 | * |
||
9639 | * @return Array the month list |
||
9640 | * |
||
9641 | */ |
||
9642 | public function countAllMonthsByAirlines($filters = array()) |
||
9643 | { |
||
9644 | global $globalTimezone, $globalDBdriver; |
||
9645 | $filter_query = $this->getFilter($filters,true,true); |
||
9646 | if ($globalTimezone != '') { |
||
9647 | date_default_timezone_set($globalTimezone); |
||
9648 | $datetime = new DateTime(); |
||
9649 | $offset = $datetime->format('P'); |
||
9650 | } else $offset = '+00:00'; |
||
9651 | |||
9652 | if ($globalDBdriver == 'mysql') { |
||
9653 | $query = "SELECT spotter_output.airline_icao, YEAR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS year_name,MONTH(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS month_name, count(*) as date_count |
||
9654 | FROM spotter_output".$filter_query." spotter_output.airline_icao <> '' |
||
9655 | GROUP BY spotter_output.airline_icao, year_name, month_name |
||
9656 | ORDER BY date_count DESC"; |
||
9657 | } else { |
||
9658 | $query = "SELECT spotter_output.airline_icao, EXTRACT(YEAR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS year_name,EXTRACT(MONTH FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS month_name, count(*) as date_count |
||
9659 | FROM spotter_output |
||
9660 | WHERE spotter_output.airline_icao <> '' |
||
9661 | GROUP BY spotter_output.airline_icao, year_name, month_name |
||
9662 | ORDER BY date_count DESC"; |
||
9663 | } |
||
9664 | |||
9665 | |||
9666 | $sth = $this->db->prepare($query); |
||
9667 | $sth->execute(array(':offset' => $offset)); |
||
9668 | |||
9669 | $date_array = array(); |
||
9670 | $temp_array = array(); |
||
9671 | |||
9672 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
9673 | { |
||
9674 | $temp_array['month_name'] = $row['month_name']; |
||
9675 | $temp_array['year_name'] = $row['year_name']; |
||
9676 | $temp_array['date_count'] = $row['date_count']; |
||
9677 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
9678 | |||
9679 | $date_array[] = $temp_array; |
||
9680 | } |
||
9681 | |||
9682 | return $date_array; |
||
9683 | } |
||
9684 | |||
9685 | /** |
||
9686 | * Counts all military month |
||
9687 | * |
||
9688 | * @return Array the month list |
||
9689 | * |
||
9690 | */ |
||
9691 | public function countAllMilitaryMonths($filters = array()) |
||
9692 | { |
||
9693 | global $globalTimezone, $globalDBdriver; |
||
9694 | if ($globalTimezone != '') { |
||
9695 | date_default_timezone_set($globalTimezone); |
||
9696 | $datetime = new DateTime(); |
||
9697 | $offset = $datetime->format('P'); |
||
9698 | } else $offset = '+00:00'; |
||
9699 | $filter_query = $this->getFilter($filters,true,true); |
||
9700 | if ($globalDBdriver == 'mysql') { |
||
9701 | $query = "SELECT YEAR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS year_name,MONTH(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS month_name, count(*) as date_count |
||
9702 | FROM spotter_output".$filter_query." spotter_output.airline_type = 'military' |
||
9703 | GROUP BY year_name, month_name |
||
9704 | ORDER BY date_count DESC"; |
||
9705 | } else { |
||
9706 | $query = "SELECT EXTRACT(YEAR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS year_name,EXTRACT(MONTH FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS month_name, count(*) as date_count |
||
9707 | FROM spotter_output".$filter_query." spotter_output.airline_type = 'military' |
||
9708 | GROUP BY year_name, month_name |
||
9709 | ORDER BY date_count DESC"; |
||
9710 | } |
||
9711 | |||
9712 | $sth = $this->db->prepare($query); |
||
9713 | $sth->execute(array(':offset' => $offset)); |
||
9714 | |||
9715 | $date_array = array(); |
||
9716 | $temp_array = array(); |
||
9717 | |||
9718 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
9719 | { |
||
9720 | $temp_array['month_name'] = $row['month_name']; |
||
9721 | $temp_array['year_name'] = $row['year_name']; |
||
9722 | $temp_array['date_count'] = $row['date_count']; |
||
9723 | |||
9724 | $date_array[] = $temp_array; |
||
9725 | } |
||
9726 | |||
9727 | return $date_array; |
||
9728 | } |
||
9729 | |||
9730 | /** |
||
9731 | * Counts all month owners |
||
9732 | * |
||
9733 | * @return Array the month list |
||
9734 | * |
||
9735 | */ |
||
9736 | public function countAllMonthsOwners($filters = array()) |
||
9737 | { |
||
9738 | global $globalTimezone, $globalDBdriver; |
||
9739 | if ($globalTimezone != '') { |
||
9740 | date_default_timezone_set($globalTimezone); |
||
9741 | $datetime = new DateTime(); |
||
9742 | $offset = $datetime->format('P'); |
||
9743 | } else $offset = '+00:00'; |
||
9744 | $filter_query = $this->getFilter($filters,true,true); |
||
9745 | |||
9746 | if ($globalDBdriver == 'mysql') { |
||
9747 | $query = "SELECT YEAR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS year_name,MONTH(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS month_name, count(distinct owner_name) as date_count |
||
9748 | FROM spotter_output".$filter_query." owner_name <> '' |
||
9749 | GROUP BY year_name, month_name |
||
9750 | ORDER BY date_count DESC"; |
||
9751 | } else { |
||
9752 | $query = "SELECT EXTRACT(YEAR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS year_name,EXTRACT(MONTH FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS month_name, count(distinct owner_name) as date_count |
||
9753 | FROM spotter_output".$filter_query." owner_name <> '' |
||
9754 | GROUP BY year_name, month_name |
||
9755 | ORDER BY date_count DESC"; |
||
9756 | } |
||
9757 | |||
9758 | $sth = $this->db->prepare($query); |
||
9759 | $sth->execute(array(':offset' => $offset)); |
||
9760 | |||
9761 | $date_array = array(); |
||
9762 | $temp_array = array(); |
||
9763 | |||
9764 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
9765 | { |
||
9766 | $temp_array['month_name'] = $row['month_name']; |
||
9767 | $temp_array['year_name'] = $row['year_name']; |
||
9768 | $temp_array['date_count'] = $row['date_count']; |
||
9769 | |||
9770 | $date_array[] = $temp_array; |
||
9771 | } |
||
9772 | |||
9773 | return $date_array; |
||
9774 | } |
||
9775 | |||
9776 | /** |
||
9777 | * Counts all month owners |
||
9778 | * |
||
9779 | * @return Array the month list |
||
9780 | * |
||
9781 | */ |
||
9782 | public function countAllMonthsOwnersByAirlines($filters = array()) |
||
9783 | { |
||
9784 | global $globalTimezone, $globalDBdriver; |
||
9785 | $filter_query = $this->getFilter($filters,true,true); |
||
9786 | if ($globalTimezone != '') { |
||
9787 | date_default_timezone_set($globalTimezone); |
||
9788 | $datetime = new DateTime(); |
||
9789 | $offset = $datetime->format('P'); |
||
9790 | } else $offset = '+00:00'; |
||
9791 | |||
9792 | if ($globalDBdriver == 'mysql') { |
||
9793 | $query = "SELECT spotter_output.airline_icao, YEAR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS year_name,MONTH(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS month_name, count(distinct owner_name) as date_count |
||
9794 | FROM spotter_output".$filter_query." owner_name <> '' AND spotter_output.airline_icao <> '' |
||
9795 | GROUP BY spotter_output.airline_icao, year_name, month_name |
||
9796 | ORDER BY date_count DESC"; |
||
9797 | } else { |
||
9798 | $query = "SELECT spotter_output.airline_icao, EXTRACT(YEAR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS year_name,EXTRACT(MONTH FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS month_name, count(distinct owner_name) as date_count |
||
9799 | FROM spotter_output".$filter_query." owner_name <> '' AND spotter_output.airline_icao <> '' |
||
9800 | GROUP BY spotter_output.airline_icao, year_name, month_name |
||
9801 | ORDER BY date_count DESC"; |
||
9802 | } |
||
9803 | |||
9804 | $sth = $this->db->prepare($query); |
||
9805 | $sth->execute(array(':offset' => $offset)); |
||
9806 | |||
9807 | $date_array = array(); |
||
9808 | $temp_array = array(); |
||
9809 | |||
9810 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
9811 | { |
||
9812 | $temp_array['month_name'] = $row['month_name']; |
||
9813 | $temp_array['year_name'] = $row['year_name']; |
||
9814 | $temp_array['date_count'] = $row['date_count']; |
||
9815 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
9816 | |||
9817 | $date_array[] = $temp_array; |
||
9818 | } |
||
9819 | |||
9820 | return $date_array; |
||
9821 | } |
||
9822 | |||
9823 | /** |
||
9824 | * Counts all month pilot |
||
9825 | * |
||
9826 | * @return Array the month list |
||
9827 | * |
||
9828 | */ |
||
9829 | public function countAllMonthsPilots($filters = array()) |
||
9830 | { |
||
9831 | global $globalTimezone, $globalDBdriver; |
||
9832 | if ($globalTimezone != '') { |
||
9833 | date_default_timezone_set($globalTimezone); |
||
9834 | $datetime = new DateTime(); |
||
9835 | $offset = $datetime->format('P'); |
||
9836 | } else $offset = '+00:00'; |
||
9837 | $filter_query = $this->getFilter($filters,true,true); |
||
9838 | |||
9839 | if ($globalDBdriver == 'mysql') { |
||
9840 | $query = "SELECT YEAR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS year_name,MONTH(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS month_name, count(distinct pilot_id) as date_count |
||
9841 | FROM spotter_output".$filter_query." pilot_id <> '' AND pilot_id IS NOT NULL |
||
9842 | GROUP BY year_name, month_name |
||
9843 | ORDER BY date_count DESC"; |
||
9844 | } else { |
||
9845 | $query = "SELECT EXTRACT(YEAR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS year_name,EXTRACT(MONTH FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS month_name, count(distinct pilot_id) as date_count |
||
9846 | FROM spotter_output".$filter_query." pilot_id <> '' AND pilot_id IS NOT NULL |
||
9847 | GROUP BY year_name, month_name |
||
9848 | ORDER BY date_count DESC"; |
||
9849 | } |
||
9850 | |||
9851 | $sth = $this->db->prepare($query); |
||
9852 | $sth->execute(array(':offset' => $offset)); |
||
9853 | |||
9854 | $date_array = array(); |
||
9855 | $temp_array = array(); |
||
9856 | |||
9857 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
9858 | { |
||
9859 | $temp_array['month_name'] = $row['month_name']; |
||
9860 | $temp_array['year_name'] = $row['year_name']; |
||
9861 | $temp_array['date_count'] = $row['date_count']; |
||
9862 | |||
9863 | $date_array[] = $temp_array; |
||
9864 | } |
||
9865 | |||
9866 | return $date_array; |
||
9867 | } |
||
9868 | |||
9869 | /** |
||
9870 | * Counts all month pilot |
||
9871 | * |
||
9872 | * @return Array the month list |
||
9873 | * |
||
9874 | */ |
||
9875 | public function countAllMonthsPilotsByAirlines($filters = array()) |
||
9876 | { |
||
9877 | global $globalTimezone, $globalDBdriver; |
||
9878 | $filter_query = $this->getFilter($filters,true,true); |
||
9879 | if ($globalTimezone != '') { |
||
9880 | date_default_timezone_set($globalTimezone); |
||
9881 | $datetime = new DateTime(); |
||
9882 | $offset = $datetime->format('P'); |
||
9883 | } else $offset = '+00:00'; |
||
9884 | |||
9885 | if ($globalDBdriver == 'mysql') { |
||
9886 | $query = "SELECT spotter_output.airline_icao, YEAR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS year_name,MONTH(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS month_name, count(distinct pilot_id) as date_count |
||
9887 | FROM spotter_output".$filter_query." spotter_output.airline_icao <> '' AND pilot_id <> '' AND pilot_id IS NOT NULL |
||
9888 | GROUP BY spotter_output.airline_icao,year_name, month_name |
||
9889 | ORDER BY date_count DESC"; |
||
9890 | } else { |
||
9891 | $query = "SELECT spotter_output.airline_icao, EXTRACT(YEAR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS year_name,EXTRACT(MONTH FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS month_name, count(distinct pilot_id) as date_count |
||
9892 | FROM spotter_output".$filter_query." spotter_output.airline_icao <> '' AND pilot_id <> '' AND pilot_id IS NOT NULL |
||
9893 | GROUP BY spotter_output.airline_icao, year_name, month_name |
||
9894 | ORDER BY date_count DESC"; |
||
9895 | } |
||
9896 | |||
9897 | $sth = $this->db->prepare($query); |
||
9898 | $sth->execute(array(':offset' => $offset)); |
||
9899 | |||
9900 | $date_array = array(); |
||
9901 | $temp_array = array(); |
||
9902 | |||
9903 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
9904 | { |
||
9905 | $temp_array['month_name'] = $row['month_name']; |
||
9906 | $temp_array['year_name'] = $row['year_name']; |
||
9907 | $temp_array['date_count'] = $row['date_count']; |
||
9908 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
9909 | |||
9910 | $date_array[] = $temp_array; |
||
9911 | } |
||
9912 | |||
9913 | return $date_array; |
||
9914 | } |
||
9915 | |||
9916 | /** |
||
9917 | * Counts all month airline |
||
9918 | * |
||
9919 | * @return Array the month list |
||
9920 | * |
||
9921 | */ |
||
9922 | public function countAllMonthsAirlines($filters = array()) |
||
9923 | { |
||
9924 | global $globalTimezone, $globalDBdriver; |
||
9925 | $filter_query = $this->getFilter($filters,true,true); |
||
9926 | if ($globalTimezone != '') { |
||
9927 | date_default_timezone_set($globalTimezone); |
||
9928 | $datetime = new DateTime(); |
||
9929 | $offset = $datetime->format('P'); |
||
9930 | } else $offset = '+00:00'; |
||
9931 | |||
9932 | if ($globalDBdriver == 'mysql') { |
||
9933 | $query = "SELECT YEAR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS year_name,MONTH(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS month_name, count(distinct airline_icao) as date_count |
||
9934 | FROM spotter_output".$filter_query." airline_icao <> '' |
||
9935 | GROUP BY year_name, month_name |
||
9936 | ORDER BY date_count DESC"; |
||
9937 | } else { |
||
9938 | $query = "SELECT EXTRACT(YEAR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS year_name,EXTRACT(MONTH FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS month_name, count(distinct airline_icao) as date_count |
||
9939 | FROM spotter_output".$filter_query." airline_icao <> '' |
||
9940 | GROUP BY year_name, month_name |
||
9941 | ORDER BY date_count DESC"; |
||
9942 | } |
||
9943 | |||
9944 | $sth = $this->db->prepare($query); |
||
9945 | $sth->execute(array(':offset' => $offset)); |
||
9946 | |||
9947 | $date_array = array(); |
||
9948 | $temp_array = array(); |
||
9949 | |||
9950 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
9951 | { |
||
9952 | $temp_array['month_name'] = $row['month_name']; |
||
9953 | $temp_array['year_name'] = $row['year_name']; |
||
9954 | $temp_array['date_count'] = $row['date_count']; |
||
9955 | |||
9956 | $date_array[] = $temp_array; |
||
9957 | } |
||
9958 | |||
9959 | return $date_array; |
||
9960 | } |
||
9961 | |||
9962 | /** |
||
9963 | * Counts all month aircraft |
||
9964 | * |
||
9965 | * @return Array the month list |
||
9966 | * |
||
9967 | */ |
||
9968 | public function countAllMonthsAircrafts($filters = array()) |
||
9969 | { |
||
9970 | global $globalTimezone, $globalDBdriver; |
||
9971 | if ($globalTimezone != '') { |
||
9972 | date_default_timezone_set($globalTimezone); |
||
9973 | $datetime = new DateTime(); |
||
9974 | $offset = $datetime->format('P'); |
||
9975 | } else $offset = '+00:00'; |
||
9976 | $filter_query = $this->getFilter($filters,true,true); |
||
9977 | |||
9978 | if ($globalDBdriver == 'mysql') { |
||
9979 | $query = "SELECT YEAR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS year_name,MONTH(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS month_name, count(distinct aircraft_icao) as date_count |
||
9980 | FROM spotter_output".$filter_query." aircraft_icao <> '' |
||
9981 | GROUP BY year_name, month_name |
||
9982 | ORDER BY date_count DESC"; |
||
9983 | } else { |
||
9984 | $query = "SELECT EXTRACT(YEAR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS year_name,EXTRACT(MONTH FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS month_name, count(distinct aircraft_icao) as date_count |
||
9985 | FROM spotter_output".$filter_query." aircraft_icao <> '' |
||
9986 | GROUP BY year_name, month_name |
||
9987 | ORDER BY date_count DESC"; |
||
9988 | } |
||
9989 | |||
9990 | $sth = $this->db->prepare($query); |
||
9991 | $sth->execute(array(':offset' => $offset)); |
||
9992 | |||
9993 | $date_array = array(); |
||
9994 | $temp_array = array(); |
||
9995 | |||
9996 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
9997 | { |
||
9998 | $temp_array['month_name'] = $row['month_name']; |
||
9999 | $temp_array['year_name'] = $row['year_name']; |
||
10000 | $temp_array['date_count'] = $row['date_count']; |
||
10001 | |||
10002 | $date_array[] = $temp_array; |
||
10003 | } |
||
10004 | |||
10005 | return $date_array; |
||
10006 | } |
||
10007 | |||
10008 | |||
10009 | /** |
||
10010 | * Counts all month aircraft |
||
10011 | * |
||
10012 | * @return Array the month list |
||
10013 | * |
||
10014 | */ |
||
10015 | public function countAllMonthsAircraftsByAirlines($filters = array()) |
||
10016 | { |
||
10017 | global $globalTimezone, $globalDBdriver; |
||
10018 | $filter_query = $this->getFilter($filters,true,true); |
||
10019 | if ($globalTimezone != '') { |
||
10020 | date_default_timezone_set($globalTimezone); |
||
10021 | $datetime = new DateTime(); |
||
10022 | $offset = $datetime->format('P'); |
||
10023 | } else $offset = '+00:00'; |
||
10024 | |||
10025 | if ($globalDBdriver == 'mysql') { |
||
10026 | $query = "SELECT spotter_output.airline_icao,YEAR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS year_name,MONTH(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS month_name, count(distinct aircraft_icao) as date_count |
||
10027 | FROM spotter_output".$filter_query." aircraft_icao <> '' AND spotter_output.airline_icao <> '' |
||
10028 | GROUP BY spotter_output.airline_icao, year_name, month_name |
||
10029 | ORDER BY date_count DESC"; |
||
10030 | } else { |
||
10031 | $query = "SELECT spotter_output.airline_icao, EXTRACT(YEAR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS year_name,EXTRACT(MONTH FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS month_name, count(distinct aircraft_icao) as date_count |
||
10032 | FROM spotter_output".$filter_query." aircraft_icao <> '' AND spotter_output.airline_icao <> '' |
||
10033 | GROUP BY spotter_output.airline_icao, year_name, month_name |
||
10034 | ORDER BY date_count DESC"; |
||
10035 | } |
||
10036 | |||
10037 | $sth = $this->db->prepare($query); |
||
10038 | $sth->execute(array(':offset' => $offset)); |
||
10039 | |||
10040 | $date_array = array(); |
||
10041 | $temp_array = array(); |
||
10042 | |||
10043 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
10044 | { |
||
10045 | $temp_array['month_name'] = $row['month_name']; |
||
10046 | $temp_array['year_name'] = $row['year_name']; |
||
10047 | $temp_array['date_count'] = $row['date_count']; |
||
10048 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
10049 | |||
10050 | $date_array[] = $temp_array; |
||
10051 | } |
||
10052 | |||
10053 | return $date_array; |
||
10054 | } |
||
10055 | |||
10056 | /** |
||
10057 | * Counts all month real arrival |
||
10058 | * |
||
10059 | * @return Array the month list |
||
10060 | * |
||
10061 | */ |
||
10062 | public function countAllMonthsRealArrivals($filters = array()) |
||
10063 | { |
||
10064 | global $globalTimezone, $globalDBdriver; |
||
10065 | if ($globalTimezone != '') { |
||
10066 | date_default_timezone_set($globalTimezone); |
||
10067 | $datetime = new DateTime(); |
||
10068 | $offset = $datetime->format('P'); |
||
10069 | } else $offset = '+00:00'; |
||
10070 | $filter_query = $this->getFilter($filters,true,true); |
||
10071 | |||
10072 | if ($globalDBdriver == 'mysql') { |
||
10073 | $query = "SELECT YEAR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS year_name,MONTH(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS month_name, count(real_arrival_airport_icao) as date_count |
||
10074 | FROM spotter_output".$filter_query." real_arrival_airport_icao <> '' |
||
10075 | GROUP BY year_name, month_name |
||
10076 | ORDER BY date_count DESC"; |
||
10077 | } else { |
||
10078 | $query = "SELECT EXTRACT(YEAR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS year_name,EXTRACT(MONTH FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS month_name, count(real_arrival_airport_icao) as date_count |
||
10079 | FROM spotter_output".$filter_query." real_arrival_airport_icao <> '' |
||
10080 | GROUP BY year_name, month_name |
||
10081 | ORDER BY date_count DESC"; |
||
10082 | } |
||
10083 | |||
10084 | $sth = $this->db->prepare($query); |
||
10085 | $sth->execute(array(':offset' => $offset)); |
||
10086 | |||
10087 | $date_array = array(); |
||
10088 | $temp_array = array(); |
||
10089 | |||
10090 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
10091 | { |
||
10092 | $temp_array['month_name'] = $row['month_name']; |
||
10093 | $temp_array['year_name'] = $row['year_name']; |
||
10094 | $temp_array['date_count'] = $row['date_count']; |
||
10095 | |||
10096 | $date_array[] = $temp_array; |
||
10097 | } |
||
10098 | |||
10099 | return $date_array; |
||
10100 | } |
||
10101 | |||
10102 | |||
10103 | /** |
||
10104 | * Counts all month real arrival |
||
10105 | * |
||
10106 | * @return Array the month list |
||
10107 | * |
||
10108 | */ |
||
10109 | public function countAllMonthsRealArrivalsByAirlines($filters = array()) |
||
10110 | { |
||
10111 | global $globalTimezone, $globalDBdriver; |
||
10112 | $filter_query = $this->getFilter($filters,true,true); |
||
10113 | if ($globalTimezone != '') { |
||
10114 | date_default_timezone_set($globalTimezone); |
||
10115 | $datetime = new DateTime(); |
||
10116 | $offset = $datetime->format('P'); |
||
10117 | } else $offset = '+00:00'; |
||
10118 | |||
10119 | if ($globalDBdriver == 'mysql') { |
||
10120 | $query = "SELECT spotter_output.airline_icao, YEAR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS year_name,MONTH(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS month_name, count(real_arrival_airport_icao) as date_count |
||
10121 | FROM spotter_output".$filter_query." real_arrival_airport_icao <> '' AND spotter_output.airline_icao <> '' |
||
10122 | GROUP BY spotter_output.airline_icao, year_name, month_name |
||
10123 | ORDER BY date_count DESC"; |
||
10124 | } else { |
||
10125 | $query = "SELECT spotter_output.airline_icao, EXTRACT(YEAR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS year_name,EXTRACT(MONTH FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS month_name, count(real_arrival_airport_icao) as date_count |
||
10126 | FROM spotter_output".$filter_query." real_arrival_airport_icao <> '' AND spotter_output.airline_icao <> '' |
||
10127 | GROUP BY spotter_output.airline_icao, year_name, month_name |
||
10128 | ORDER BY date_count DESC"; |
||
10129 | } |
||
10130 | |||
10131 | $sth = $this->db->prepare($query); |
||
10132 | $sth->execute(array(':offset' => $offset)); |
||
10133 | |||
10134 | $date_array = array(); |
||
10135 | $temp_array = array(); |
||
10136 | |||
10137 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
10138 | { |
||
10139 | $temp_array['month_name'] = $row['month_name']; |
||
10140 | $temp_array['year_name'] = $row['year_name']; |
||
10141 | $temp_array['date_count'] = $row['date_count']; |
||
10142 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
10143 | |||
10144 | $date_array[] = $temp_array; |
||
10145 | } |
||
10146 | |||
10147 | return $date_array; |
||
10148 | } |
||
10149 | |||
10150 | |||
10151 | /** |
||
10152 | * Counts all dates during the last year |
||
10153 | * |
||
10154 | * @return Array the date list |
||
10155 | * |
||
10156 | */ |
||
10157 | public function countAllMonthsLastYear($filters) |
||
10158 | { |
||
10159 | global $globalTimezone, $globalDBdriver; |
||
10160 | if ($globalTimezone != '') { |
||
10161 | date_default_timezone_set($globalTimezone); |
||
10162 | $datetime = new DateTime(); |
||
10163 | $offset = $datetime->format('P'); |
||
10164 | } else $offset = '+00:00'; |
||
10165 | $filter_query = $this->getFilter($filters,true,true); |
||
10166 | if ($globalDBdriver == 'mysql') { |
||
10167 | $query = "SELECT MONTH(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS month_name, YEAR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS year_name, count(*) as date_count |
||
10168 | FROM spotter_output".$filter_query." spotter_output.date >= DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 YEAR)"; |
||
10169 | $query .= " GROUP BY year_name, month_name |
||
10170 | ORDER BY year_name, month_name ASC"; |
||
10171 | $query_data = array(':offset' => $offset); |
||
10172 | } else { |
||
10173 | $query = "SELECT EXTRACT(MONTH FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS month_name, EXTRACT(YEAR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS year_name, count(*) as date_count |
||
10174 | FROM spotter_output".$filter_query." spotter_output.date >= CURRENT_TIMESTAMP AT TIME ZONE INTERVAL :offset - INTERVAL '1 YEARS'"; |
||
10175 | $query .= " GROUP BY year_name, month_name |
||
10176 | ORDER BY year_name, month_name ASC"; |
||
10177 | $query_data = array(':offset' => $offset); |
||
10178 | } |
||
10179 | |||
10180 | $sth = $this->db->prepare($query); |
||
10181 | $sth->execute($query_data); |
||
10182 | |||
10183 | $date_array = array(); |
||
10184 | $temp_array = array(); |
||
10185 | |||
10186 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
10187 | { |
||
10188 | $temp_array['year_name'] = $row['year_name']; |
||
10189 | $temp_array['month_name'] = $row['month_name']; |
||
10190 | $temp_array['date_count'] = $row['date_count']; |
||
10191 | |||
10192 | $date_array[] = $temp_array; |
||
10193 | } |
||
10194 | |||
10195 | return $date_array; |
||
10196 | } |
||
10197 | |||
10198 | |||
10199 | |||
10200 | /** |
||
10201 | * Counts all hours |
||
10202 | * |
||
10203 | * @return Array the hour list |
||
10204 | * |
||
10205 | */ |
||
10206 | public function countAllHours($orderby,$filters = array()) |
||
10207 | { |
||
10208 | global $globalTimezone, $globalDBdriver; |
||
10209 | if ($globalTimezone != '') { |
||
10210 | date_default_timezone_set($globalTimezone); |
||
10211 | $datetime = new DateTime(); |
||
10212 | $offset = $datetime->format('P'); |
||
10213 | } else $offset = '+00:00'; |
||
10214 | |||
10215 | $orderby_sql = ''; |
||
10216 | if ($orderby == "hour") |
||
10217 | { |
||
10218 | $orderby_sql = "ORDER BY hour_name ASC"; |
||
10219 | } |
||
10220 | if ($orderby == "count") |
||
10221 | { |
||
10222 | $orderby_sql = "ORDER BY hour_count DESC"; |
||
10223 | } |
||
10224 | |||
10225 | if ($globalDBdriver == 'mysql') { |
||
10226 | $query = "SELECT HOUR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS hour_name, count(*) as hour_count |
||
10227 | FROM spotter_output"; |
||
10228 | $query .= $this->getFilter($filters); |
||
10229 | $query .= " GROUP BY hour_name |
||
10230 | ".$orderby_sql; |
||
10231 | |||
10232 | /* $query = "SELECT HOUR(spotter_output.date) AS hour_name, count(*) as hour_count |
||
10233 | FROM spotter_output |
||
10234 | GROUP BY hour_name |
||
10235 | ".$orderby_sql." |
||
10236 | LIMIT 10 OFFSET 00"; |
||
10237 | */ |
||
10238 | $query_data = array(':offset' => $offset); |
||
10239 | } else { |
||
10240 | $query = "SELECT EXTRACT(HOUR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS hour_name, count(*) as hour_count |
||
10241 | FROM spotter_output"; |
||
10242 | $query .= $this->getFilter($filters); |
||
10243 | $query .= " GROUP BY hour_name |
||
10244 | ".$orderby_sql; |
||
10245 | $query_data = array(':offset' => $offset); |
||
10246 | } |
||
10247 | |||
10248 | $sth = $this->db->prepare($query); |
||
10249 | $sth->execute($query_data); |
||
10250 | |||
10251 | $hour_array = array(); |
||
10252 | $temp_array = array(); |
||
10253 | |||
10254 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
10255 | { |
||
10256 | $temp_array['hour_name'] = $row['hour_name']; |
||
10257 | $temp_array['hour_count'] = $row['hour_count']; |
||
10258 | |||
10259 | $hour_array[] = $temp_array; |
||
10260 | } |
||
10261 | |||
10262 | return $hour_array; |
||
10263 | } |
||
10264 | |||
10265 | /** |
||
10266 | * Counts all hours |
||
10267 | * |
||
10268 | * @return Array the hour list |
||
10269 | * |
||
10270 | */ |
||
10271 | public function countAllHoursByAirlines($orderby, $filters = array()) |
||
10272 | { |
||
10273 | global $globalTimezone, $globalDBdriver; |
||
10274 | $filter_query = $this->getFilter($filters,true,true); |
||
10275 | if ($globalTimezone != '') { |
||
10276 | date_default_timezone_set($globalTimezone); |
||
10277 | $datetime = new DateTime(); |
||
10278 | $offset = $datetime->format('P'); |
||
10279 | } else $offset = '+00:00'; |
||
10280 | |||
10281 | $orderby_sql = ''; |
||
10282 | if ($orderby == "hour") |
||
10283 | { |
||
10284 | $orderby_sql = "ORDER BY hour_name ASC"; |
||
10285 | } |
||
10286 | if ($orderby == "count") |
||
10287 | { |
||
10288 | $orderby_sql = "ORDER BY hour_count DESC"; |
||
10289 | } |
||
10290 | |||
10291 | if ($globalDBdriver == 'mysql') { |
||
10292 | $query = "SELECT spotter_output.airline_icao, HOUR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS hour_name, count(*) as hour_count |
||
10293 | FROM spotter_output".$filter_query." spotter_output.airline_icao <> '' |
||
10294 | GROUP BY spotter_output.airline_icao, hour_name |
||
10295 | ".$orderby_sql; |
||
10296 | |||
10297 | /* $query = "SELECT HOUR(spotter_output.date) AS hour_name, count(*) as hour_count |
||
10298 | FROM spotter_output |
||
10299 | GROUP BY hour_name |
||
10300 | ".$orderby_sql." |
||
10301 | LIMIT 10 OFFSET 00"; |
||
10302 | */ |
||
10303 | $query_data = array(':offset' => $offset); |
||
10304 | } else { |
||
10305 | $query = "SELECT spotter_output.airline_icao, EXTRACT(HOUR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS hour_name, count(*) as hour_count |
||
10306 | FROM spotter_output".$filter_query." spotter_output.airline_icao <> '' |
||
10307 | GROUP BY spotter_output.airline_icao, hour_name |
||
10308 | ".$orderby_sql; |
||
10309 | $query_data = array(':offset' => $offset); |
||
10310 | } |
||
10311 | |||
10312 | $sth = $this->db->prepare($query); |
||
10313 | $sth->execute($query_data); |
||
10314 | |||
10315 | $hour_array = array(); |
||
10316 | $temp_array = array(); |
||
10317 | |||
10318 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
10319 | { |
||
10320 | $temp_array['hour_name'] = $row['hour_name']; |
||
10321 | $temp_array['hour_count'] = $row['hour_count']; |
||
10322 | $temp_array['airline_icao'] = $row['airline_icao']; |
||
10323 | |||
10324 | $hour_array[] = $temp_array; |
||
10325 | } |
||
10326 | |||
10327 | return $hour_array; |
||
10328 | } |
||
10329 | |||
10330 | |||
10331 | |||
10332 | /** |
||
10333 | * Counts all hours by airline |
||
10334 | * |
||
10335 | * @return Array the hour list |
||
10336 | * |
||
10337 | */ |
||
10338 | public function countAllHoursByAirline($airline_icao, $filters = array()) |
||
10339 | { |
||
10340 | global $globalTimezone, $globalDBdriver; |
||
10341 | $filter_query = $this->getFilter($filters,true,true); |
||
10342 | if ($globalTimezone != '') { |
||
10343 | date_default_timezone_set($globalTimezone); |
||
10344 | $datetime = new DateTime(); |
||
10345 | $offset = $datetime->format('P'); |
||
10346 | } else $offset = '+00:00'; |
||
10347 | |||
10348 | $airline_icao = filter_var($airline_icao,FILTER_SANITIZE_STRING); |
||
10349 | |||
10350 | if ($globalDBdriver == 'mysql') { |
||
10351 | $query = "SELECT HOUR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS hour_name, count(*) as hour_count |
||
10352 | FROM spotter_output".$filter_query." spotter_output.airline_icao = :airline_icao |
||
10353 | GROUP BY hour_name |
||
10354 | ORDER BY hour_name ASC"; |
||
10355 | } else { |
||
10356 | $query = "SELECT EXTRACT(HOUR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS hour_name, count(*) as hour_count |
||
10357 | FROM spotter_output".$filter_query." spotter_output.airline_icao = :airline_icao |
||
10358 | GROUP BY hour_name |
||
10359 | ORDER BY hour_name ASC"; |
||
10360 | } |
||
10361 | |||
10362 | $sth = $this->db->prepare($query); |
||
10363 | $sth->execute(array(':airline_icao' => $airline_icao,':offset' => $offset)); |
||
10364 | |||
10365 | $hour_array = array(); |
||
10366 | $temp_array = array(); |
||
10367 | |||
10368 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
10369 | { |
||
10370 | $temp_array['hour_name'] = $row['hour_name']; |
||
10371 | $temp_array['hour_count'] = $row['hour_count']; |
||
10372 | |||
10373 | $hour_array[] = $temp_array; |
||
10374 | } |
||
10375 | |||
10376 | return $hour_array; |
||
10377 | } |
||
10378 | |||
10379 | |||
10380 | |||
10381 | |||
10382 | /** |
||
10383 | * Counts all hours by aircraft |
||
10384 | * |
||
10385 | * @return Array the hour list |
||
10386 | * |
||
10387 | */ |
||
10388 | public function countAllHoursByAircraft($aircraft_icao, $filters = array()) |
||
10389 | { |
||
10390 | global $globalTimezone, $globalDBdriver; |
||
10391 | $filter_query = $this->getFilter($filters,true,true); |
||
10392 | $aircraft_icao = filter_var($aircraft_icao,FILTER_SANITIZE_STRING); |
||
10393 | if ($globalTimezone != '') { |
||
10394 | date_default_timezone_set($globalTimezone); |
||
10395 | $datetime = new DateTime(); |
||
10396 | $offset = $datetime->format('P'); |
||
10397 | } else $offset = '+00:00'; |
||
10398 | |||
10399 | if ($globalDBdriver == 'mysql') { |
||
10400 | $query = "SELECT HOUR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS hour_name, count(*) as hour_count |
||
10401 | FROM spotter_output".$filter_query." spotter_output.aircraft_icao = :aircraft_icao |
||
10402 | GROUP BY hour_name |
||
10403 | ORDER BY hour_name ASC"; |
||
10404 | } else { |
||
10405 | $query = "SELECT EXTRACT(HOUR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS hour_name, count(*) as hour_count |
||
10406 | FROM spotter_output".$filter_query." spotter_output.aircraft_icao = :aircraft_icao |
||
10407 | GROUP BY hour_name |
||
10408 | ORDER BY hour_name ASC"; |
||
10409 | } |
||
10410 | |||
10411 | $sth = $this->db->prepare($query); |
||
10412 | $sth->execute(array(':aircraft_icao' => $aircraft_icao,':offset' => $offset)); |
||
10413 | |||
10414 | $hour_array = array(); |
||
10415 | $temp_array = array(); |
||
10416 | |||
10417 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
10418 | { |
||
10419 | $temp_array['hour_name'] = $row['hour_name']; |
||
10420 | $temp_array['hour_count'] = $row['hour_count']; |
||
10421 | |||
10422 | $hour_array[] = $temp_array; |
||
10423 | } |
||
10424 | |||
10425 | return $hour_array; |
||
10426 | } |
||
10427 | |||
10428 | |||
10429 | /** |
||
10430 | * Counts all hours by aircraft registration |
||
10431 | * |
||
10432 | * @return Array the hour list |
||
10433 | * |
||
10434 | */ |
||
10435 | public function countAllHoursByRegistration($registration, $filters = array()) |
||
10436 | { |
||
10437 | global $globalTimezone, $globalDBdriver; |
||
10438 | $filter_query = $this->getFilter($filters,true,true); |
||
10439 | $registration = filter_var($registration,FILTER_SANITIZE_STRING); |
||
10440 | if ($globalTimezone != '') { |
||
10441 | date_default_timezone_set($globalTimezone); |
||
10442 | $datetime = new DateTime(); |
||
10443 | $offset = $datetime->format('P'); |
||
10444 | } else $offset = '+00:00'; |
||
10445 | |||
10446 | if ($globalDBdriver == 'mysql') { |
||
10447 | $query = "SELECT HOUR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS hour_name, count(*) as hour_count |
||
10448 | FROM spotter_output".$filter_query." spotter_output.registration = :registration |
||
10449 | GROUP BY hour_name |
||
10450 | ORDER BY hour_name ASC"; |
||
10451 | } else { |
||
10452 | $query = "SELECT EXTRACT(HOUR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS hour_name, count(*) as hour_count |
||
10453 | FROM spotter_output".$filter_query." spotter_output.registration = :registration |
||
10454 | GROUP BY hour_name |
||
10455 | ORDER BY hour_name ASC"; |
||
10456 | } |
||
10457 | |||
10458 | $sth = $this->db->prepare($query); |
||
10459 | $sth->execute(array(':registration' => $registration,':offset' => $offset)); |
||
10460 | |||
10461 | $hour_array = array(); |
||
10462 | $temp_array = array(); |
||
10463 | |||
10464 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
10465 | { |
||
10466 | $temp_array['hour_name'] = $row['hour_name']; |
||
10467 | $temp_array['hour_count'] = $row['hour_count']; |
||
10468 | |||
10469 | $hour_array[] = $temp_array; |
||
10470 | } |
||
10471 | |||
10472 | return $hour_array; |
||
10473 | } |
||
10474 | |||
10475 | |||
10476 | /** |
||
10477 | * Counts all hours by airport |
||
10478 | * |
||
10479 | * @return Array the hour list |
||
10480 | * |
||
10481 | */ |
||
10482 | public function countAllHoursByAirport($airport_icao, $filters = array()) |
||
10483 | { |
||
10484 | global $globalTimezone, $globalDBdriver; |
||
10485 | $filter_query = $this->getFilter($filters,true,true); |
||
10486 | $airport_icao = filter_var($airport_icao,FILTER_SANITIZE_STRING); |
||
10487 | if ($globalTimezone != '') { |
||
10488 | date_default_timezone_set($globalTimezone); |
||
10489 | $datetime = new DateTime(); |
||
10490 | $offset = $datetime->format('P'); |
||
10491 | } else $offset = '+00:00'; |
||
10492 | |||
10493 | if ($globalDBdriver == 'mysql') { |
||
10494 | $query = "SELECT HOUR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS hour_name, count(*) as hour_count |
||
10495 | FROM spotter_output".$filter_query." (spotter_output.departure_airport_icao = :airport_icao OR spotter_output.arrival_airport_icao = :airport_icao) |
||
10496 | GROUP BY hour_name |
||
10497 | ORDER BY hour_name ASC"; |
||
10498 | } else { |
||
10499 | $query = "SELECT EXTRACT(HOUR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS hour_name, count(*) as hour_count |
||
10500 | FROM spotter_output".$filter_query." (spotter_output.departure_airport_icao = :airport_icao OR spotter_output.arrival_airport_icao = :airport_icao) |
||
10501 | GROUP BY hour_name |
||
10502 | ORDER BY hour_name ASC"; |
||
10503 | } |
||
10504 | |||
10505 | $sth = $this->db->prepare($query); |
||
10506 | $sth->execute(array(':airport_icao' => $airport_icao,':offset' => $offset)); |
||
10507 | |||
10508 | $hour_array = array(); |
||
10509 | $temp_array = array(); |
||
10510 | |||
10511 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
10512 | { |
||
10513 | $temp_array['hour_name'] = $row['hour_name']; |
||
10514 | $temp_array['hour_count'] = $row['hour_count']; |
||
10515 | |||
10516 | $hour_array[] = $temp_array; |
||
10517 | } |
||
10518 | |||
10519 | return $hour_array; |
||
10520 | } |
||
10521 | |||
10522 | |||
10523 | |||
10524 | /** |
||
10525 | * Counts all hours by manufacturer |
||
10526 | * |
||
10527 | * @return Array the hour list |
||
10528 | * |
||
10529 | */ |
||
10530 | public function countAllHoursByManufacturer($aircraft_manufacturer,$filters =array()) |
||
10531 | { |
||
10532 | global $globalTimezone, $globalDBdriver; |
||
10533 | $filter_query = $this->getFilter($filters,true,true); |
||
10534 | $aircraft_manufacturer = filter_var($aircraft_manufacturer,FILTER_SANITIZE_STRING); |
||
10535 | if ($globalTimezone != '') { |
||
10536 | date_default_timezone_set($globalTimezone); |
||
10537 | $datetime = new DateTime(); |
||
10538 | $offset = $datetime->format('P'); |
||
10539 | } else $offset = '+00:00'; |
||
10540 | |||
10541 | if ($globalDBdriver == 'mysql') { |
||
10542 | $query = "SELECT HOUR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS hour_name, count(*) as hour_count |
||
10543 | FROM spotter_output".$filter_query." spotter_output.aircraft_manufacturer = :aircraft_manufacturer |
||
10544 | GROUP BY hour_name |
||
10545 | ORDER BY hour_name ASC"; |
||
10546 | } else { |
||
10547 | $query = "SELECT EXTRACT(HOUR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS hour_name, count(*) as hour_count |
||
10548 | FROM spotter_output".$filter_query." spotter_output.aircraft_manufacturer = :aircraft_manufacturer |
||
10549 | GROUP BY hour_name |
||
10550 | ORDER BY hour_name ASC"; |
||
10551 | } |
||
10552 | |||
10553 | $sth = $this->db->prepare($query); |
||
10554 | $sth->execute(array(':aircraft_manufacturer' => $aircraft_manufacturer,':offset' => $offset)); |
||
10555 | |||
10556 | $hour_array = array(); |
||
10557 | $temp_array = array(); |
||
10558 | |||
10559 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
10560 | { |
||
10561 | $temp_array['hour_name'] = $row['hour_name']; |
||
10562 | $temp_array['hour_count'] = $row['hour_count']; |
||
10563 | |||
10564 | $hour_array[] = $temp_array; |
||
10565 | } |
||
10566 | |||
10567 | return $hour_array; |
||
10568 | } |
||
10569 | |||
10570 | |||
10571 | |||
10572 | /** |
||
10573 | * Counts all hours by date |
||
10574 | * |
||
10575 | * @return Array the hour list |
||
10576 | * |
||
10577 | */ |
||
10578 | public function countAllHoursByDate($date, $filters = array()) |
||
10579 | { |
||
10580 | global $globalTimezone, $globalDBdriver; |
||
10581 | $filter_query = $this->getFilter($filters,true,true); |
||
10582 | $date = filter_var($date,FILTER_SANITIZE_STRING); |
||
10583 | if ($globalTimezone != '') { |
||
10584 | date_default_timezone_set($globalTimezone); |
||
10585 | $datetime = new DateTime($date); |
||
10586 | $offset = $datetime->format('P'); |
||
10587 | } else $offset = '+00:00'; |
||
10588 | |||
10589 | if ($globalDBdriver == 'mysql') { |
||
10590 | $query = "SELECT HOUR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS hour_name, count(*) as hour_count |
||
10591 | FROM spotter_output".$filter_query." DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) = :date |
||
10592 | GROUP BY hour_name |
||
10593 | ORDER BY hour_name ASC"; |
||
10594 | } else { |
||
10595 | $query = "SELECT EXTRACT(HOUR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS hour_name, count(*) as hour_count |
||
10596 | FROM spotter_output".$filter_query." to_char(spotter_output.date AT TIME ZONE INTERVAL :offset, 'YYYY-mm-dd') = :date |
||
10597 | GROUP BY hour_name |
||
10598 | ORDER BY hour_name ASC"; |
||
10599 | } |
||
10600 | |||
10601 | $sth = $this->db->prepare($query); |
||
10602 | $sth->execute(array(':date' => $date, ':offset' => $offset)); |
||
10603 | |||
10604 | $hour_array = array(); |
||
10605 | $temp_array = array(); |
||
10606 | |||
10607 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
10608 | { |
||
10609 | $temp_array['hour_name'] = $row['hour_name']; |
||
10610 | $temp_array['hour_count'] = $row['hour_count']; |
||
10611 | |||
10612 | $hour_array[] = $temp_array; |
||
10613 | } |
||
10614 | |||
10615 | return $hour_array; |
||
10616 | } |
||
10617 | |||
10618 | |||
10619 | |||
10620 | /** |
||
10621 | * Counts all hours by a ident/callsign |
||
10622 | * |
||
10623 | * @return Array the hour list |
||
10624 | * |
||
10625 | */ |
||
10626 | public function countAllHoursByIdent($ident, $filters = array()) |
||
10627 | { |
||
10628 | global $globalTimezone, $globalDBdriver; |
||
10629 | $filter_query = $this->getFilter($filters,true,true); |
||
10630 | $ident = filter_var($ident,FILTER_SANITIZE_STRING); |
||
10631 | if ($globalTimezone != '') { |
||
10632 | date_default_timezone_set($globalTimezone); |
||
10633 | $datetime = new DateTime(); |
||
10634 | $offset = $datetime->format('P'); |
||
10635 | } else $offset = '+00:00'; |
||
10636 | |||
10637 | if ($globalDBdriver == 'mysql') { |
||
10638 | $query = "SELECT HOUR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS hour_name, count(*) as hour_count |
||
10639 | FROM spotter_output".$filter_query." spotter_output.ident = :ident |
||
10640 | GROUP BY hour_name |
||
10641 | ORDER BY hour_name ASC"; |
||
10642 | } else { |
||
10643 | $query = "SELECT EXTRACT(HOUR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS hour_name, count(*) as hour_count |
||
10644 | FROM spotter_output".$filter_query." spotter_output.ident = :ident |
||
10645 | GROUP BY hour_name |
||
10646 | ORDER BY hour_name ASC"; |
||
10647 | } |
||
10648 | |||
10649 | |||
10650 | $sth = $this->db->prepare($query); |
||
10651 | $sth->execute(array(':ident' => $ident,':offset' => $offset)); |
||
10652 | |||
10653 | $hour_array = array(); |
||
10654 | $temp_array = array(); |
||
10655 | |||
10656 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
10657 | { |
||
10658 | $temp_array['hour_name'] = $row['hour_name']; |
||
10659 | $temp_array['hour_count'] = $row['hour_count']; |
||
10660 | |||
10661 | $hour_array[] = $temp_array; |
||
10662 | } |
||
10663 | |||
10664 | return $hour_array; |
||
10665 | } |
||
10666 | |||
10667 | /** |
||
10668 | * Counts all hours by a owner |
||
10669 | * |
||
10670 | * @return Array the hour list |
||
10671 | * |
||
10672 | */ |
||
10673 | public function countAllHoursByOwner($owner, $filters = array()) |
||
10674 | { |
||
10675 | global $globalTimezone, $globalDBdriver; |
||
10676 | $filter_query = $this->getFilter($filters,true,true); |
||
10677 | $owner = filter_var($owner,FILTER_SANITIZE_STRING); |
||
10678 | if ($globalTimezone != '') { |
||
10679 | date_default_timezone_set($globalTimezone); |
||
10680 | $datetime = new DateTime(); |
||
10681 | $offset = $datetime->format('P'); |
||
10682 | } else $offset = '+00:00'; |
||
10683 | |||
10684 | if ($globalDBdriver == 'mysql') { |
||
10685 | $query = "SELECT HOUR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS hour_name, count(*) as hour_count |
||
10686 | FROM spotter_output".$filter_query." spotter_output.owner_name = :owner |
||
10687 | GROUP BY hour_name |
||
10688 | ORDER BY hour_name ASC"; |
||
10689 | } else { |
||
10690 | $query = "SELECT EXTRACT(HOUR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS hour_name, count(*) as hour_count |
||
10691 | FROM spotter_output".$filter_query." spotter_output.owner_name = :owner |
||
10692 | GROUP BY hour_name |
||
10693 | ORDER BY hour_name ASC"; |
||
10694 | } |
||
10695 | |||
10696 | |||
10697 | $sth = $this->db->prepare($query); |
||
10698 | $sth->execute(array(':owner' => $owner,':offset' => $offset)); |
||
10699 | |||
10700 | $hour_array = array(); |
||
10701 | $temp_array = array(); |
||
10702 | |||
10703 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
10704 | { |
||
10705 | $temp_array['hour_name'] = $row['hour_name']; |
||
10706 | $temp_array['hour_count'] = $row['hour_count']; |
||
10707 | |||
10708 | $hour_array[] = $temp_array; |
||
10709 | } |
||
10710 | |||
10711 | return $hour_array; |
||
10712 | } |
||
10713 | |||
10714 | /** |
||
10715 | * Counts all hours by a pilot |
||
10716 | * |
||
10717 | * @return Array the hour list |
||
10718 | * |
||
10719 | */ |
||
10720 | public function countAllHoursByPilot($pilot, $filters = array()) |
||
10721 | { |
||
10722 | global $globalTimezone, $globalDBdriver; |
||
10723 | $filter_query = $this->getFilter($filters,true,true); |
||
10724 | $pilot = filter_var($pilot,FILTER_SANITIZE_STRING); |
||
10725 | if ($globalTimezone != '') { |
||
10726 | date_default_timezone_set($globalTimezone); |
||
10727 | $datetime = new DateTime(); |
||
10728 | $offset = $datetime->format('P'); |
||
10729 | } else $offset = '+00:00'; |
||
10730 | |||
10731 | if ($globalDBdriver == 'mysql') { |
||
10732 | $query = "SELECT HOUR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS hour_name, count(*) as hour_count |
||
10733 | FROM spotter_output".$filter_query." (spotter_output.pilot_name = :pilot OR spotter_output.pilot_id = :pilot) |
||
10734 | GROUP BY hour_name |
||
10735 | ORDER BY hour_name ASC"; |
||
10736 | } else { |
||
10737 | $query = "SELECT EXTRACT(HOUR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS hour_name, count(*) as hour_count |
||
10738 | FROM spotter_output".$filter_query." (spotter_output.pilot_name = :pilot OR spotter_output.pilot_id = :pilot) |
||
10739 | GROUP BY hour_name |
||
10740 | ORDER BY hour_name ASC"; |
||
10741 | } |
||
10742 | |||
10743 | |||
10744 | $sth = $this->db->prepare($query); |
||
10745 | $sth->execute(array(':pilot' => $pilot,':offset' => $offset)); |
||
10746 | |||
10747 | $hour_array = array(); |
||
10748 | $temp_array = array(); |
||
10749 | |||
10750 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
10751 | { |
||
10752 | $temp_array['hour_name'] = $row['hour_name']; |
||
10753 | $temp_array['hour_count'] = $row['hour_count']; |
||
10754 | |||
10755 | $hour_array[] = $temp_array; |
||
10756 | } |
||
10757 | |||
10758 | return $hour_array; |
||
10759 | } |
||
10760 | |||
10761 | |||
10762 | |||
10763 | /** |
||
10764 | * Counts all hours by route |
||
10765 | * |
||
10766 | * @return Array the hour list |
||
10767 | * |
||
10768 | */ |
||
10769 | public function countAllHoursByRoute($departure_airport_icao, $arrival_airport_icao, $filters =array()) |
||
10770 | { |
||
10771 | global $globalTimezone, $globalDBdriver; |
||
10772 | $filter_query = $this->getFilter($filters,true,true); |
||
10773 | $departure_airport_icao = filter_var($departure_airport_icao,FILTER_SANITIZE_STRING); |
||
10774 | $arrival_airport_icao = filter_var($arrival_airport_icao,FILTER_SANITIZE_STRING); |
||
10775 | if ($globalTimezone != '') { |
||
10776 | date_default_timezone_set($globalTimezone); |
||
10777 | $datetime = new DateTime(); |
||
10778 | $offset = $datetime->format('P'); |
||
10779 | } else $offset = '+00:00'; |
||
10780 | |||
10781 | if ($globalDBdriver == 'mysql') { |
||
10782 | $query = "SELECT HOUR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS hour_name, count(*) as hour_count |
||
10783 | FROM spotter_output".$filter_query." (spotter_output.departure_airport_icao = :departure_airport_icao) AND (spotter_output.arrival_airport_icao = :arrival_airport_icao) |
||
10784 | GROUP BY hour_name |
||
10785 | ORDER BY hour_name ASC"; |
||
10786 | } else { |
||
10787 | $query = "SELECT EXTRACT(HOUR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS hour_name, count(*) as hour_count |
||
10788 | FROM spotter_output".$filter_query." (spotter_output.departure_airport_icao = :departure_airport_icao) AND (spotter_output.arrival_airport_icao = :arrival_airport_icao) |
||
10789 | GROUP BY hour_name |
||
10790 | ORDER BY hour_name ASC"; |
||
10791 | } |
||
10792 | |||
10793 | $sth = $this->db->prepare($query); |
||
10794 | $sth->execute(array(':departure_airport_icao' => $departure_airport_icao,':arrival_airport_icao' => $arrival_airport_icao,':offset' => $offset)); |
||
10795 | |||
10796 | $hour_array = array(); |
||
10797 | $temp_array = array(); |
||
10798 | |||
10799 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
10800 | { |
||
10801 | $temp_array['hour_name'] = $row['hour_name']; |
||
10802 | $temp_array['hour_count'] = $row['hour_count']; |
||
10803 | |||
10804 | $hour_array[] = $temp_array; |
||
10805 | } |
||
10806 | |||
10807 | return $hour_array; |
||
10808 | } |
||
10809 | |||
10810 | |||
10811 | /** |
||
10812 | * Counts all hours by country |
||
10813 | * |
||
10814 | * @return Array the hour list |
||
10815 | * |
||
10816 | */ |
||
10817 | public function countAllHoursByCountry($country, $filters = array()) |
||
10818 | { |
||
10819 | global $globalTimezone, $globalDBdriver; |
||
10820 | $filter_query = $this->getFilter($filters,true,true); |
||
10821 | $country = filter_var($country,FILTER_SANITIZE_STRING); |
||
10822 | if ($globalTimezone != '') { |
||
10823 | date_default_timezone_set($globalTimezone); |
||
10824 | $datetime = new DateTime(); |
||
10825 | $offset = $datetime->format('P'); |
||
10826 | } else $offset = '+00:00'; |
||
10827 | |||
10828 | if ($globalDBdriver == 'mysql') { |
||
10829 | $query = "SELECT HOUR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS hour_name, count(*) as hour_count |
||
10830 | FROM spotter_output".$filter_query." ((spotter_output.departure_airport_country = :country) OR (spotter_output.arrival_airport_country = :country)) OR spotter_output.airline_country = :country |
||
10831 | GROUP BY hour_name |
||
10832 | ORDER BY hour_name ASC"; |
||
10833 | } else { |
||
10834 | $query = "SELECT EXTRACT(HOUR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS hour_name, count(*) as hour_count |
||
10835 | FROM spotter_output".$filter_query." ((spotter_output.departure_airport_country = :country) OR (spotter_output.arrival_airport_country = :country)) OR spotter_output.airline_country = :country |
||
10836 | GROUP BY hour_name |
||
10837 | ORDER BY hour_name ASC"; |
||
10838 | } |
||
10839 | |||
10840 | $sth = $this->db->prepare($query); |
||
10841 | $sth->execute(array(':country' => $country,':offset' => $offset)); |
||
10842 | |||
10843 | $hour_array = array(); |
||
10844 | $temp_array = array(); |
||
10845 | |||
10846 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
10847 | { |
||
10848 | $temp_array['hour_name'] = $row['hour_name']; |
||
10849 | $temp_array['hour_count'] = $row['hour_count']; |
||
10850 | |||
10851 | $hour_array[] = $temp_array; |
||
10852 | } |
||
10853 | |||
10854 | return $hour_array; |
||
10855 | } |
||
10856 | |||
10857 | |||
10858 | |||
10859 | |||
10860 | /** |
||
10861 | * Counts all aircraft that have flown over |
||
10862 | * |
||
10863 | * @return Integer the number of aircrafts |
||
10864 | * |
||
10865 | */ |
||
10866 | public function countOverallAircrafts($filters = array(),$year = '',$month = '') |
||
10867 | { |
||
10868 | global $globalDBdriver; |
||
10869 | $filter_query = $this->getFilter($filters,true,true); |
||
10870 | $query = "SELECT COUNT(DISTINCT spotter_output.aircraft_icao) AS aircraft_count |
||
10871 | FROM spotter_output".$filter_query." spotter_output.ident <> ''"; |
||
10872 | $query_values = array(); |
||
10873 | if ($year != '') { |
||
10874 | if ($globalDBdriver == 'mysql') { |
||
10875 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
10876 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
10877 | } else { |
||
10878 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
10879 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
10880 | } |
||
10881 | } |
||
10882 | if ($month != '') { |
||
10883 | if ($globalDBdriver == 'mysql') { |
||
10884 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
10885 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
10886 | } else { |
||
10887 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
10888 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
10889 | } |
||
10890 | } |
||
10891 | |||
10892 | $sth = $this->db->prepare($query); |
||
10893 | $sth->execute($query_values); |
||
10894 | return $sth->fetchColumn(); |
||
10895 | } |
||
10896 | |||
10897 | /** |
||
10898 | * Counts all flight that really arrival |
||
10899 | * |
||
10900 | * @return Integer the number of aircrafts |
||
10901 | * |
||
10902 | */ |
||
10903 | public function countOverallArrival($filters = array(),$year = '',$month = '') |
||
10904 | { |
||
10905 | global $globalDBdriver; |
||
10906 | $filter_query = $this->getFilter($filters,true,true); |
||
10907 | $query = "SELECT COUNT(spotter_output.real_arrival_airport_icao) AS arrival_count |
||
10908 | FROM spotter_output".$filter_query." spotter_output.arrival_airport_icao <> ''"; |
||
10909 | $query_values = array(); |
||
10910 | if ($year != '') { |
||
10911 | if ($globalDBdriver == 'mysql') { |
||
10912 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
10913 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
10914 | } else { |
||
10915 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
10916 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
10917 | } |
||
10918 | } |
||
10919 | if ($month != '') { |
||
10920 | if ($globalDBdriver == 'mysql') { |
||
10921 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
10922 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
10923 | } else { |
||
10924 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
10925 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
10926 | } |
||
10927 | } |
||
10928 | |||
10929 | $sth = $this->db->prepare($query); |
||
10930 | $sth->execute($query_values); |
||
10931 | return $sth->fetchColumn(); |
||
10932 | } |
||
10933 | |||
10934 | /** |
||
10935 | * Counts all pilots that have flown over |
||
10936 | * |
||
10937 | * @return Integer the number of pilots |
||
10938 | * |
||
10939 | */ |
||
10940 | public function countOverallPilots($filters = array(),$year = '',$month = '') |
||
10941 | { |
||
10942 | global $globalDBdriver; |
||
10943 | $filter_query = $this->getFilter($filters,true,true); |
||
10944 | $query = "SELECT COUNT(DISTINCT spotter_output.pilot_id) AS pilot_count |
||
10945 | FROM spotter_output".$filter_query." spotter_output.pilot_id <> ''"; |
||
10946 | $query_values = array(); |
||
10947 | if ($year != '') { |
||
10948 | if ($globalDBdriver == 'mysql') { |
||
10949 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
10950 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
10951 | } else { |
||
10952 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
10953 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
10954 | } |
||
10955 | } |
||
10956 | if ($month != '') { |
||
10957 | if ($globalDBdriver == 'mysql') { |
||
10958 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
10959 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
10960 | } else { |
||
10961 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
10962 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
10963 | } |
||
10964 | } |
||
10965 | $sth = $this->db->prepare($query); |
||
10966 | $sth->execute($query_values); |
||
10967 | return $sth->fetchColumn(); |
||
10968 | } |
||
10969 | |||
10970 | /** |
||
10971 | * Counts all owners that have flown over |
||
10972 | * |
||
10973 | * @return Integer the number of owners |
||
10974 | * |
||
10975 | */ |
||
10976 | public function countOverallOwners($filters = array(),$year = '',$month = '') |
||
10977 | { |
||
10978 | global $globalDBdriver; |
||
10979 | $filter_query = $this->getFilter($filters,true,true); |
||
10980 | $query = "SELECT COUNT(DISTINCT spotter_output.owner_name) AS owner_count |
||
10981 | FROM spotter_output".$filter_query." spotter_output.owner_name <> ''"; |
||
10982 | $query_values = array(); |
||
10983 | if ($year != '') { |
||
10984 | if ($globalDBdriver == 'mysql') { |
||
10985 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
10986 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
10987 | } else { |
||
10988 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
10989 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
10990 | } |
||
10991 | } |
||
10992 | if ($month != '') { |
||
10993 | if ($globalDBdriver == 'mysql') { |
||
10994 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
10995 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
10996 | } else { |
||
10997 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
10998 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
10999 | } |
||
11000 | } |
||
11001 | $sth = $this->db->prepare($query); |
||
11002 | $sth->execute($query_values); |
||
11003 | return $sth->fetchColumn(); |
||
11004 | } |
||
11005 | |||
11006 | |||
11007 | /** |
||
11008 | * Counts all flights that have flown over |
||
11009 | * |
||
11010 | * @return Integer the number of flights |
||
11011 | * |
||
11012 | */ |
||
11013 | public function countOverallFlights($filters = array(),$year = '',$month = '') |
||
11014 | { |
||
11015 | global $globalDBdriver; |
||
11016 | $queryi = "SELECT COUNT(spotter_output.spotter_id) AS flight_count FROM spotter_output"; |
||
11017 | $query_values = array(); |
||
11018 | $query = ''; |
||
11019 | if ($year != '') { |
||
11020 | if ($globalDBdriver == 'mysql') { |
||
11021 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
11022 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
11023 | } else { |
||
11024 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
11025 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
11026 | } |
||
11027 | } |
||
11028 | if ($month != '') { |
||
11029 | if ($globalDBdriver == 'mysql') { |
||
11030 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
11031 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
11032 | } else { |
||
11033 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
11034 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
11035 | } |
||
11036 | } |
||
11037 | if (empty($query_values)) $queryi .= $this->getFilter($filters); |
||
11038 | else $queryi .= $this->getFilter($filters,true,true).substr($query,4); |
||
11039 | |||
11040 | $sth = $this->db->prepare($queryi); |
||
11041 | $sth->execute($query_values); |
||
11042 | return $sth->fetchColumn(); |
||
11043 | } |
||
11044 | |||
11045 | /** |
||
11046 | * Counts all military flights that have flown over |
||
11047 | * |
||
11048 | * @return Integer the number of flights |
||
11049 | * |
||
11050 | */ |
||
11051 | public function countOverallMilitaryFlights($filters = array(),$year = '',$month = '') |
||
11052 | { |
||
11053 | global $globalDBdriver; |
||
11054 | $filter_query = $this->getFilter($filters,true,true); |
||
11055 | $query = "SELECT COUNT(spotter_output.spotter_id) AS flight_count |
||
11056 | FROM airlines,spotter_output".$filter_query." spotter_output.airline_icao = airlines.icao AND airlines.type = 'military'"; |
||
11057 | $query_values = array(); |
||
11058 | if ($year != '') { |
||
11059 | if ($globalDBdriver == 'mysql') { |
||
11060 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
11061 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
11062 | } else { |
||
11063 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
11064 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
11065 | } |
||
11066 | } |
||
11067 | if ($month != '') { |
||
11068 | if ($globalDBdriver == 'mysql') { |
||
11069 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
11070 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
11071 | } else { |
||
11072 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
11073 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
11074 | } |
||
11075 | } |
||
11076 | |||
11077 | $sth = $this->db->prepare($query); |
||
11078 | $sth->execute($query_values); |
||
11079 | return $sth->fetchColumn(); |
||
11080 | } |
||
11081 | |||
11082 | |||
11083 | |||
11084 | /** |
||
11085 | * Counts all airlines that have flown over |
||
11086 | * |
||
11087 | * @return Integer the number of airlines |
||
11088 | * |
||
11089 | */ |
||
11090 | public function countOverallAirlines($filters = array(),$year = '',$month = '') |
||
11091 | { |
||
11092 | global $globalDBdriver; |
||
11093 | $queryi = "SELECT COUNT(DISTINCT spotter_output.airline_name) AS airline_count |
||
11094 | FROM spotter_output"; |
||
11095 | |||
11096 | $query_values = array(); |
||
11097 | $query = ''; |
||
11098 | if ($year != '') { |
||
11099 | if ($globalDBdriver == 'mysql') { |
||
11100 | $query .= " AND YEAR(spotter_output.date) = :year"; |
||
11101 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
11102 | } else { |
||
11103 | $query .= " AND EXTRACT(YEAR FROM spotter_output.date) = :year"; |
||
11104 | $query_values = array_merge($query_values,array(':year' => $year)); |
||
11105 | } |
||
11106 | } |
||
11107 | if ($month != '') { |
||
11108 | if ($globalDBdriver == 'mysql') { |
||
11109 | $query .= " AND MONTH(spotter_output.date) = :month"; |
||
11110 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
11111 | } else { |
||
11112 | $query .= " AND EXTRACT(MONTH FROM spotter_output.date) = :month"; |
||
11113 | $query_values = array_merge($query_values,array(':month' => $month)); |
||
11114 | } |
||
11115 | } |
||
11116 | if ($query == '') $queryi .= $this->getFilter($filters); |
||
11117 | else $queryi .= $this->getFilter($filters,true,true).substr($query,4); |
||
11118 | |||
11119 | |||
11120 | $sth = $this->db->prepare($queryi); |
||
11121 | $sth->execute($query_values); |
||
11122 | return $sth->fetchColumn(); |
||
11123 | } |
||
11124 | |||
11125 | |||
11126 | /** |
||
11127 | * Counts all hours of today |
||
11128 | * |
||
11129 | * @return Array the hour list |
||
11130 | * |
||
11131 | */ |
||
11132 | public function countAllHoursFromToday($filters = array()) |
||
11133 | { |
||
11134 | global $globalTimezone, $globalDBdriver; |
||
11135 | $filter_query = $this->getFilter($filters,true,true); |
||
11136 | if ($globalTimezone != '') { |
||
11137 | date_default_timezone_set($globalTimezone); |
||
11138 | $datetime = new DateTime(); |
||
11139 | $offset = $datetime->format('P'); |
||
11140 | } else $offset = '+00:00'; |
||
11141 | |||
11142 | if ($globalDBdriver == 'mysql') { |
||
11143 | $query = "SELECT HOUR(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) AS hour_name, count(*) as hour_count |
||
11144 | FROM spotter_output".$filter_query." DATE(CONVERT_TZ(spotter_output.date,'+00:00', :offset)) = CURDATE() |
||
11145 | GROUP BY hour_name |
||
11146 | ORDER BY hour_name ASC"; |
||
11147 | } else { |
||
11148 | $query = "SELECT EXTRACT(HOUR FROM spotter_output.date AT TIME ZONE INTERVAL :offset) AS hour_name, count(*) as hour_count |
||
11149 | FROM spotter_output".$filter_query." to_char(spotter_output.date AT TIME ZONE INTERVAL :offset,'YYYY-mm-dd') = CAST(NOW() AS date) |
||
11150 | GROUP BY hour_name |
||
11151 | ORDER BY hour_name ASC"; |
||
11152 | } |
||
11153 | |||
11154 | $sth = $this->db->prepare($query); |
||
11155 | $sth->execute(array(':offset' => $offset)); |
||
11156 | |||
11157 | $hour_array = array(); |
||
11158 | $temp_array = array(); |
||
11159 | |||
11160 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
11161 | { |
||
11162 | $temp_array['hour_name'] = $row['hour_name']; |
||
11163 | $temp_array['hour_count'] = $row['hour_count']; |
||
11164 | $hour_array[] = $temp_array; |
||
11165 | } |
||
11166 | |||
11167 | return $hour_array; |
||
11168 | } |
||
11169 | |||
11170 | /** |
||
11171 | * Gets all the spotter information based on calculated upcoming flights |
||
11172 | * |
||
11173 | * @return Array the spotter information |
||
11174 | * |
||
11175 | */ |
||
11176 | public function getUpcomingFlights($limit = '', $sort = '', $filters = array()) |
||
11177 | { |
||
11178 | global $global_query, $globalDBdriver, $globalTimezone; |
||
11179 | $filter_query = $this->getFilter($filters,true,true); |
||
11180 | date_default_timezone_set('UTC'); |
||
11181 | $limit_query = ''; |
||
11182 | if ($limit != "") |
||
11183 | { |
||
11184 | $limit_array = explode(",", $limit); |
||
11185 | $limit_array[0] = filter_var($limit_array[0],FILTER_SANITIZE_NUMBER_INT); |
||
11186 | $limit_array[1] = filter_var($limit_array[1],FILTER_SANITIZE_NUMBER_INT); |
||
11187 | if ($limit_array[0] >= 0 && $limit_array[1] >= 0) |
||
11188 | { |
||
11189 | //$limit_query = " LIMIT ".$limit_array[0].",".$limit_array[1]; |
||
11190 | $limit_query = " LIMIT ".$limit_array[1]." OFFSET ".$limit_array[0]; |
||
11191 | } |
||
11192 | } |
||
11193 | $currentHour = date("G"); |
||
11194 | $next3Hours = date("G", strtotime("+3 hour")); |
||
11195 | //if the next 3 hours is already equal to/past midnight, we limit it to stay there, otherwise the query will fail |
||
11196 | if ($currentHour >= 21 && $next3Hours >= 00) |
||
11197 | { |
||
11198 | $next3Hours = 24; |
||
11199 | } |
||
11200 | $currentDayofWeek = date("l"); |
||
11201 | if ($globalDBdriver == 'mysql') { |
||
11202 | if ($sort != "") |
||
11203 | { |
||
11204 | $search_orderby_array = $this->getOrderBy(); |
||
11205 | $orderby_query = $search_orderby_array[$sort]['sql']; |
||
11206 | } else { |
||
11207 | $orderby_query = " ORDER BY HOUR(spotter_output.date) ASC"; |
||
11208 | } |
||
11209 | /* |
||
11210 | $query = "SELECT spotter_output.*, count(spotter_output.ident) as ident_count |
||
11211 | FROM spotter_output |
||
11212 | WHERE DAYNAME(spotter_output.date) = '$currentDayofWeek' AND HOUR(spotter_output.date) >= '$currentHour' AND HOUR(spotter_output.date) <= '$next3Hours' AND spotter_output.ident <> '' AND format_source <> 'aprs' |
||
11213 | GROUP BY spotter_output.ident,spotter_output.spotter_id, spotter_output.flightaware_id, spotter_output.registration,spotter_output.airline_name,spotter_output.airline_icao,spotter_output.airline_country,spotter_output.airline_type,spotter_output.aircraft_icao,spotter_output.aircraft_name,spotter_output.aircraft_manufacturer,spotter_output.departure_airport_icao,spotter_output.departure_airport_name,spotter_output.departure_airport_city,spotter_output.departure_airport_country,spotter_output.departure_airport_time,spotter_output.arrival_airport_icao,spotter_output.arrival_airport_name,spotter_output.arrival_airport_city,spotter_output.arrival_airport_country,spotter_output.arrival_airport_time,spotter_output.route_stop,spotter_output.date,spotter_output.latitude,spotter_output.longitude,spotter_output.waypoints,spotter_output.altitude,spotter_output.heading,spotter_output.ground_speed,spotter_output.highlight,spotter_output.squawk,spotter_output.ModeS,spotter_output.pilot_id,spotter_output.pilot_name,spotter_output.verticalrate,spotter_output.owner_name,spotter_output.format_source,spotter_output.source_name,spotter_output.ground,spotter_output.last_ground,spotter_output.last_seen,spotter_output.last_latitude,spotter_output.last_longitude,spotter_output.last_altitude,spotter_output.last_ground_speed,spotter_output.real_arrival_airport_icao,spotter_output.real_arrival_airport_time HAVING count(spotter_output.ident) > 10 $orderby_query"; |
||
11214 | */ |
||
11215 | /* $query = "SELECT spotter_output.ident, spotter_output.registration,spotter_output.airline_name,spotter_output.airline_icao,spotter_output.airline_country,spotter_output.airline_type,spotter_output.aircraft_icao,spotter_output.aircraft_name,spotter_output.aircraft_manufacturer,spotter_output.departure_airport_icao,spotter_output.departure_airport_name,spotter_output.departure_airport_city,spotter_output.departure_airport_country,spotter_output.departure_airport_time,spotter_output.arrival_airport_icao,spotter_output.arrival_airport_name,spotter_output.arrival_airport_city,spotter_output.arrival_airport_country,spotter_output.arrival_airport_time,spotter_output.route_stop,spotter_output.date,spotter_output.latitude,spotter_output.longitude,spotter_output.waypoints,spotter_output.altitude,spotter_output.heading,spotter_output.ground_speed,spotter_output.highlight,spotter_output.squawk,spotter_output.ModeS,spotter_output.pilot_id,spotter_output.pilot_name,spotter_output.verticalrate,spotter_output.owner_name,spotter_output.format_source,spotter_output.source_name,spotter_output.ground,spotter_output.last_ground,spotter_output.last_seen,spotter_output.last_latitude,spotter_output.last_longitude,spotter_output.last_altitude,spotter_output.last_ground_speed,spotter_output.real_arrival_airport_icao,spotter_output.real_arrival_airport_time, count(spotter_output.ident) as ident_count |
||
11216 | FROM spotter_output |
||
11217 | WHERE DAYNAME(spotter_output.date) = '$currentDayofWeek' AND HOUR(spotter_output.date) >= '$currentHour' AND HOUR(spotter_output.date) <= '$next3Hours' AND spotter_output.ident <> '' AND format_source <> 'aprs' |
||
11218 | GROUP BY spotter_output.ident,spotter_output.spotter_id, spotter_output.flightaware_id, spotter_output.registration,spotter_output.airline_name,spotter_output.airline_icao,spotter_output.airline_country,spotter_output.airline_type,spotter_output.aircraft_icao,spotter_output.aircraft_name,spotter_output.aircraft_manufacturer,spotter_output.departure_airport_icao,spotter_output.departure_airport_name,spotter_output.departure_airport_city,spotter_output.departure_airport_country,spotter_output.departure_airport_time,spotter_output.arrival_airport_icao,spotter_output.arrival_airport_name,spotter_output.arrival_airport_city,spotter_output.arrival_airport_country,spotter_output.arrival_airport_time,spotter_output.route_stop,spotter_output.date,spotter_output.latitude,spotter_output.longitude,spotter_output.waypoints,spotter_output.altitude,spotter_output.heading,spotter_output.ground_speed,spotter_output.highlight,spotter_output.squawk,spotter_output.ModeS,spotter_output.pilot_id,spotter_output.pilot_name,spotter_output.verticalrate,spotter_output.owner_name,spotter_output.format_source,spotter_output.source_name,spotter_output.ground,spotter_output.last_ground,spotter_output.last_seen,spotter_output.last_latitude,spotter_output.last_longitude,spotter_output.last_altitude,spotter_output.last_ground_speed,spotter_output.real_arrival_airport_icao,spotter_output.real_arrival_airport_time HAVING count(spotter_output.ident) > 10 $orderby_query"; |
||
11219 | */ |
||
11220 | $query = "SELECT spotter_output.ident, spotter_output.airline_name,spotter_output.airline_icao,spotter_output.airline_country,spotter_output.airline_type,spotter_output.departure_airport_icao,spotter_output.departure_airport_name,spotter_output.departure_airport_city,spotter_output.departure_airport_country,spotter_output.departure_airport_time,spotter_output.arrival_airport_icao,spotter_output.arrival_airport_name,spotter_output.arrival_airport_city,spotter_output.arrival_airport_country,spotter_output.arrival_airport_time, count(spotter_output.ident) as ident_count |
||
11221 | FROM spotter_output".$filter_query." DAYNAME(spotter_output.date) = '$currentDayofWeek' AND HOUR(spotter_output.date) >= '$currentHour' AND HOUR(spotter_output.date) <= '$next3Hours' AND spotter_output.ident <> '' AND format_source <> 'aprs' |
||
11222 | GROUP BY spotter_output.ident,spotter_output.airline_name,spotter_output.airline_icao,spotter_output.airline_country,spotter_output.airline_type,spotter_output.departure_airport_icao,spotter_output.departure_airport_name,spotter_output.departure_airport_city,spotter_output.departure_airport_country,spotter_output.departure_airport_time,spotter_output.arrival_airport_icao,spotter_output.arrival_airport_name,spotter_output.arrival_airport_city,spotter_output.arrival_airport_country,spotter_output.arrival_airport_time |
||
11223 | HAVING count(spotter_output.ident) > 5$orderby_query"; |
||
11224 | |||
11225 | $spotter_array = $this->getDataFromDB($query.$limit_query); |
||
11226 | } else { |
||
11227 | if ($sort != "") |
||
11228 | { |
||
11229 | $search_orderby_array = $this->getOrderBy(); |
||
11230 | $orderby_query = $search_orderby_array[$sort]['sql']; |
||
11231 | } else { |
||
11232 | $orderby_query = " ORDER BY to_char(spotter_output.date,'HH') ASC"; |
||
11233 | } |
||
11234 | $query = "SELECT spotter_output.ident, spotter_output.airline_name,spotter_output.airline_icao,spotter_output.airline_country,spotter_output.airline_type,spotter_output.departure_airport_icao,spotter_output.departure_airport_name,spotter_output.departure_airport_city,spotter_output.departure_airport_country,spotter_output.departure_airport_time,spotter_output.arrival_airport_icao,spotter_output.arrival_airport_name,spotter_output.arrival_airport_city,spotter_output.arrival_airport_country,spotter_output.arrival_airport_time, count(spotter_output.ident) as ident_count, to_char(spotter_output.date,'HH') |
||
11235 | FROM spotter_output".$filter_query." DATE_PART('dow', spotter_output.date) = DATE_PART('dow', date 'now' AT TIME ZONE :timezone) AND EXTRACT (HOUR FROM spotter_output.date AT TIME ZONE :timezone) >= '$currentHour' AND EXTRACT (HOUR FROM spotter_output.date AT TIME ZONE :timezone) <= '$next3Hours' AND ident <> '' |
||
11236 | GROUP BY spotter_output.ident,spotter_output.airline_name,spotter_output.airline_icao,spotter_output.airline_country,spotter_output.airline_type,spotter_output.departure_airport_icao,spotter_output.departure_airport_name,spotter_output.departure_airport_city,spotter_output.departure_airport_country,spotter_output.departure_airport_time,spotter_output.arrival_airport_icao,spotter_output.arrival_airport_name,spotter_output.arrival_airport_city,spotter_output.arrival_airport_country,spotter_output.arrival_airport_time, to_char(spotter_output.date,'HH') |
||
11237 | HAVING count(spotter_output.ident) > 5$orderby_query"; |
||
11238 | //echo $query; |
||
11239 | $spotter_array = $this->getDataFromDB($query.$limit_query,array(':timezone' => $globalTimezone)); |
||
11240 | /* |
||
11241 | $sth = $this->db->prepare($query); |
||
11242 | $sth->execute(array(':timezone' => $globalTimezone)); |
||
11243 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
11244 | */ |
||
11245 | } |
||
11246 | return $spotter_array; |
||
11247 | } |
||
11248 | |||
11249 | |||
11250 | /** |
||
11251 | * Gets the Barrie Spotter ID based on the FlightAware ID |
||
11252 | * |
||
11253 | * @return Integer the Barrie Spotter ID |
||
11254 | q * |
||
11255 | */ |
||
11256 | public function getSpotterIDBasedOnFlightAwareID($flightaware_id) |
||
11257 | { |
||
11258 | $flightaware_id = filter_var($flightaware_id,FILTER_SANITIZE_STRING); |
||
11259 | |||
11260 | $query = "SELECT spotter_output.spotter_id |
||
11261 | FROM spotter_output |
||
11262 | WHERE spotter_output.flightaware_id = '".$flightaware_id."'"; |
||
11263 | |||
11264 | |||
11265 | $sth = $this->db->prepare($query); |
||
11266 | $sth->execute(); |
||
11267 | |||
11268 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
11269 | { |
||
11270 | return $row['spotter_id']; |
||
11271 | } |
||
11272 | } |
||
11273 | |||
11274 | |||
11275 | /** |
||
11276 | * Parses a date string |
||
11277 | * |
||
11278 | * @param String $dateString the date string |
||
11279 | * @param String $timezone the timezone of a user |
||
11280 | * @return Array the time information |
||
11281 | * |
||
11282 | */ |
||
11283 | public function parseDateString($dateString, $timezone = '') |
||
11284 | { |
||
11285 | $time_array = array(); |
||
11286 | |||
11287 | if ($timezone != "") |
||
11288 | { |
||
11289 | date_default_timezone_set($timezone); |
||
11290 | } |
||
11291 | |||
11292 | $current_date = date("Y-m-d H:i:s"); |
||
11293 | $date = date("Y-m-d H:i:s",strtotime($dateString." UTC")); |
||
11294 | |||
11295 | $diff = abs(strtotime($current_date) - strtotime($date)); |
||
11296 | |||
11297 | $time_array['years'] = floor($diff / (365*60*60*24)); |
||
11298 | $years = $time_array['years']; |
||
11299 | |||
11300 | $time_array['months'] = floor(($diff - $years * 365*60*60*24) / (30*60*60*24)); |
||
11301 | $months = $time_array['months']; |
||
11302 | |||
11303 | $time_array['days'] = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24)); |
||
11304 | $days = $time_array['days']; |
||
11305 | $time_array['hours'] = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24)/ (60*60)); |
||
11306 | $hours = $time_array['hours']; |
||
11307 | $time_array['minutes'] = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24 - $hours*60*60)/ 60); |
||
11308 | $minutes = $time_array['minutes']; |
||
11309 | $time_array['seconds'] = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24 - $hours*60*60 - $minutes*60)); |
||
11310 | |||
11311 | return $time_array; |
||
11312 | } |
||
11313 | |||
11314 | |||
11315 | |||
11316 | |||
11317 | /** |
||
11318 | * Parses the direction degrees to working |
||
11319 | * |
||
11320 | * @param Float $direction the direction in degrees |
||
11321 | * @return Array the direction information |
||
11322 | * |
||
11323 | */ |
||
11324 | public function parseDirection($direction = 0) |
||
11325 | { |
||
11326 | if ($direction == '') $direction = 0; |
||
11327 | $direction_array = array(); |
||
11328 | $temp_array = array(); |
||
11329 | |||
11330 | if ($direction == 360 || ($direction >= 0 && $direction < 22.5)) |
||
11331 | { |
||
11332 | $temp_array['direction_degree'] = $direction; |
||
11333 | $temp_array['direction_shortname'] = "N"; |
||
11334 | $temp_array['direction_fullname'] = "North"; |
||
11335 | } elseif ($direction >= 22.5 && $direction < 45){ |
||
11336 | $temp_array['direction_degree'] = $direction; |
||
11337 | $temp_array['direction_shortname'] = "NNE"; |
||
11338 | $temp_array['direction_fullname'] = "North-Northeast"; |
||
11339 | } elseif ($direction >= 45 && $direction < 67.5){ |
||
11340 | $temp_array['direction_degree'] = $direction; |
||
11341 | $temp_array['direction_shortname'] = "NE"; |
||
11342 | $temp_array['direction_fullname'] = "Northeast"; |
||
11343 | } elseif ($direction >= 67.5 && $direction < 90){ |
||
11344 | $temp_array['direction_degree'] = $direction; |
||
11345 | $temp_array['direction_shortname'] = "ENE"; |
||
11346 | $temp_array['direction_fullname'] = "East-Northeast"; |
||
11347 | } elseif ($direction >= 90 && $direction < 112.5){ |
||
11348 | $temp_array['direction_degree'] = $direction; |
||
11349 | $temp_array['direction_shortname'] = "E"; |
||
11350 | $temp_array['direction_fullname'] = "East"; |
||
11351 | } elseif ($direction >= 112.5 && $direction < 135){ |
||
11352 | $temp_array['direction_degree'] = $direction; |
||
11353 | $temp_array['direction_shortname'] = "ESE"; |
||
11354 | $temp_array['direction_fullname'] = "East-Southeast"; |
||
11355 | } elseif ($direction >= 135 && $direction < 157.5){ |
||
11356 | $temp_array['direction_degree'] = $direction; |
||
11357 | $temp_array['direction_shortname'] = "SE"; |
||
11358 | $temp_array['direction_fullname'] = "Southeast"; |
||
11359 | } elseif ($direction >= 157.5 && $direction < 180){ |
||
11360 | $temp_array['direction_degree'] = $direction; |
||
11361 | $temp_array['direction_shortname'] = "SSE"; |
||
11362 | $temp_array['direction_fullname'] = "South-Southeast"; |
||
11363 | } elseif ($direction >= 180 && $direction < 202.5){ |
||
11364 | $temp_array['direction_degree'] = $direction; |
||
11365 | $temp_array['direction_shortname'] = "S"; |
||
11366 | $temp_array['direction_fullname'] = "South"; |
||
11367 | } elseif ($direction >= 202.5 && $direction < 225){ |
||
11368 | $temp_array['direction_degree'] = $direction; |
||
11369 | $temp_array['direction_shortname'] = "SSW"; |
||
11370 | $temp_array['direction_fullname'] = "South-Southwest"; |
||
11371 | } elseif ($direction >= 225 && $direction < 247.5){ |
||
11372 | $temp_array['direction_degree'] = $direction; |
||
11373 | $temp_array['direction_shortname'] = "SW"; |
||
11374 | $temp_array['direction_fullname'] = "Southwest"; |
||
11375 | } elseif ($direction >= 247.5 && $direction < 270){ |
||
11376 | $temp_array['direction_degree'] = $direction; |
||
11377 | $temp_array['direction_shortname'] = "WSW"; |
||
11378 | $temp_array['direction_fullname'] = "West-Southwest"; |
||
11379 | } elseif ($direction >= 270 && $direction < 292.5){ |
||
11380 | $temp_array['direction_degree'] = $direction; |
||
11381 | $temp_array['direction_shortname'] = "W"; |
||
11382 | $temp_array['direction_fullname'] = "West"; |
||
11383 | } elseif ($direction >= 292.5 && $direction < 315){ |
||
11384 | $temp_array['direction_degree'] = $direction; |
||
11385 | $temp_array['direction_shortname'] = "WNW"; |
||
11386 | $temp_array['direction_fullname'] = "West-Northwest"; |
||
11387 | } elseif ($direction >= 315 && $direction < 337.5){ |
||
11388 | $temp_array['direction_degree'] = $direction; |
||
11389 | $temp_array['direction_shortname'] = "NW"; |
||
11390 | $temp_array['direction_fullname'] = "Northwest"; |
||
11391 | } elseif ($direction >= 337.5 && $direction < 360){ |
||
11392 | $temp_array['direction_degree'] = $direction; |
||
11393 | $temp_array['direction_shortname'] = "NNW"; |
||
11394 | $temp_array['direction_fullname'] = "North-Northwest"; |
||
11395 | } |
||
11396 | $direction_array[] = $temp_array; |
||
11397 | return $direction_array; |
||
11398 | } |
||
11399 | |||
11400 | |||
11401 | /** |
||
11402 | * Gets the aircraft registration |
||
11403 | * |
||
11404 | * @param String $flightaware_id the flight aware id |
||
11405 | * @return String the aircraft registration |
||
11406 | * |
||
11407 | */ |
||
11408 | |||
11409 | public function getAircraftRegistration($flightaware_id) |
||
11410 | { |
||
11411 | global $globalFlightAwareUsername, $globalFlightAwarePassword; |
||
11412 | |||
11413 | $options = array( |
||
11414 | 'trace' => true, |
||
11415 | 'exceptions' => 0, |
||
11416 | 'login' => $globalFlightAwareUsername, |
||
11417 | 'password' => $globalFlightAwarePassword, |
||
11418 | ); |
||
11419 | $client = new SoapClient('http://flightxml.flightaware.com/soap/FlightXML2/wsdl', $options); |
||
11420 | |||
11421 | $params = array('faFlightID' => $flightaware_id); |
||
11422 | $result = $client->AirlineFlightInfo($params); |
||
11423 | |||
11424 | if (isset($result->AirlineFlightInfoResult)) |
||
11425 | { |
||
11426 | $registration = $result->AirlineFlightInfoResult->tailnumber; |
||
11427 | } else return ''; |
||
11428 | |||
11429 | $registration = $this->convertAircraftRegistration($registration); |
||
11430 | |||
11431 | return $registration; |
||
11432 | } |
||
11433 | |||
11434 | |||
11435 | /** |
||
11436 | * Gets the aircraft registration from ModeS |
||
11437 | * |
||
11438 | * @param String $aircraft_modes the flight ModeS in hex |
||
11439 | * @return String the aircraft registration |
||
11440 | * |
||
11441 | */ |
||
11442 | public function getAircraftRegistrationBymodeS($aircraft_modes, $source_type = '') |
||
11443 | { |
||
11444 | $aircraft_modes = filter_var($aircraft_modes,FILTER_SANITIZE_STRING); |
||
11445 | $source_type = filter_var($source_type,FILTER_SANITIZE_STRING); |
||
11446 | if ($source_type == '' || $source_type == 'modes') { |
||
11447 | $query = "SELECT aircraft_modes.Registration FROM aircraft_modes WHERE aircraft_modes.ModeS = :aircraft_modes AND aircraft_modes.source_type = 'modes' ORDER BY FirstCreated DESC LIMIT 1"; |
||
11448 | } else { |
||
11449 | $query = "SELECT aircraft_modes.Registration FROM aircraft_modes WHERE aircraft_modes.ModeS = :aircraft_modes AND aircraft_modes.source_type = 'flarm' ORDER BY FirstCreated DESC LIMIT 1"; |
||
11450 | } |
||
11451 | $sth = $this->db->prepare($query); |
||
11452 | $sth->execute(array(':aircraft_modes' => $aircraft_modes)); |
||
11453 | |||
11454 | $row = $sth->fetch(PDO::FETCH_ASSOC); |
||
11455 | $sth->closeCursor(); |
||
11456 | if (count($row) > 0) { |
||
11457 | //return $row['Registration']; |
||
11458 | return $row['registration']; |
||
11459 | } elseif ($source_type == 'flarm') { |
||
11460 | return $this->getAircraftRegistrationBymodeS($aircraft_modes); |
||
11461 | } else return ''; |
||
11462 | |||
11463 | } |
||
11464 | |||
11465 | /** |
||
11466 | * Gets the aircraft type from ModeS |
||
11467 | * |
||
11468 | * @param String $aircraft_modes the flight ModeS in hex |
||
11469 | * @return String the aircraft type |
||
11470 | * |
||
11471 | */ |
||
11472 | public function getAircraftTypeBymodeS($aircraft_modes,$source_type = '') |
||
11473 | { |
||
11474 | $aircraft_modes = filter_var($aircraft_modes,FILTER_SANITIZE_STRING); |
||
11475 | $source_type = filter_var($source_type,FILTER_SANITIZE_STRING); |
||
11476 | if ($source_type == '' || $source_type == 'modes') { |
||
11477 | $query = "SELECT aircraft_modes.type_flight FROM aircraft_modes WHERE aircraft_modes.ModeS = :aircraft_modes AND aircraft_modes.source_type = 'modes' ORDER BY FirstCreated DESC LIMIT 1"; |
||
11478 | } else { |
||
11479 | $query = "SELECT aircraft_modes.type_flight FROM aircraft_modes WHERE aircraft_modes.ModeS = :aircraft_modes AND aircraft_modes.source_type = 'flarm' ORDER BY FirstCreated DESC LIMIT 1"; |
||
11480 | } |
||
11481 | |||
11482 | $sth = $this->db->prepare($query); |
||
11483 | $sth->execute(array(':aircraft_modes' => $aircraft_modes)); |
||
11484 | |||
11485 | $row = $sth->fetch(PDO::FETCH_ASSOC); |
||
11486 | $sth->closeCursor(); |
||
11487 | if (count($row) > 0) { |
||
11488 | if ($row['type_flight'] == null) return ''; |
||
11489 | else return $row['type_flight']; |
||
11490 | } elseif ($source_type == 'flarm') { |
||
11491 | return $this->getAircraftTypeBymodeS($aircraft_modes); |
||
11492 | } else return ''; |
||
11493 | |||
11494 | } |
||
11495 | |||
11496 | /** |
||
11497 | * Gets Country from latitude/longitude |
||
11498 | * |
||
11499 | * @param Float $latitude latitute of the flight |
||
11500 | * @param Float $longitude longitute of the flight |
||
11501 | * @return String the countrie |
||
11502 | */ |
||
11503 | public function getCountryFromLatitudeLongitude($latitude,$longitude) |
||
11504 | { |
||
11505 | global $globalDBdriver, $globalDebug; |
||
11506 | $latitude = filter_var($latitude,FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
11507 | $longitude = filter_var($longitude,FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
11508 | |||
11509 | $Connection = new Connection($this->db); |
||
11510 | if (!$Connection->tableExists('countries')) return ''; |
||
11511 | |||
11512 | try { |
||
11513 | /* |
||
11514 | if ($globalDBdriver == 'mysql') { |
||
11515 | //$query = "SELECT name, iso2, iso3 FROM countries WHERE Within(GeomFromText('POINT(:latitude :longitude)'), ogc_geom) LIMIT 1"; |
||
11516 | $query = "SELECT name, iso2, iso3 FROM countries WHERE Within(GeomFromText('POINT(".$longitude.' '.$latitude.")'), ogc_geom) LIMIT 1"; |
||
11517 | } |
||
11518 | */ |
||
11519 | // This query seems to work both for MariaDB and PostgreSQL |
||
11520 | $query = "SELECT name,iso2,iso3 FROM countries WHERE ST_Within(ST_GeomFromText('POINT(".$longitude." ".$latitude.")',4326), ogc_geom) LIMIT 1"; |
||
11521 | |||
11522 | $sth = $this->db->prepare($query); |
||
11523 | //$sth->execute(array(':latitude' => $latitude,':longitude' => $longitude)); |
||
11524 | $sth->execute(); |
||
11525 | |||
11526 | $row = $sth->fetch(PDO::FETCH_ASSOC); |
||
11527 | $sth->closeCursor(); |
||
11528 | if (count($row) > 0) { |
||
11529 | return $row; |
||
11530 | } else return ''; |
||
11531 | } catch (PDOException $e) { |
||
11532 | if (isset($globalDebug) && $globalDebug) echo 'Error : '.$e->getMessage()."\n"; |
||
11533 | return ''; |
||
11534 | } |
||
11535 | |||
11536 | } |
||
11537 | |||
11538 | /** |
||
11539 | * Gets Country from iso2 |
||
11540 | * |
||
11541 | * @param String $iso2 ISO2 country code |
||
11542 | * @return String the countrie |
||
11543 | */ |
||
11544 | public function getCountryFromISO2($iso2) |
||
11545 | { |
||
11546 | global $globalDBdriver, $globalDebug; |
||
11547 | $iso2 = filter_var($iso2,FILTER_SANITIZE_STRING); |
||
11548 | |||
11549 | $Connection = new Connection($this->db); |
||
11550 | if (!$Connection->tableExists('countries')) return ''; |
||
11551 | |||
11552 | try { |
||
11553 | $query = "SELECT name,iso2,iso3 FROM countries WHERE iso2 = :iso2 LIMIT 1"; |
||
11554 | |||
11555 | $sth = $this->db->prepare($query); |
||
11556 | $sth->execute(array(':iso2' => $iso2)); |
||
11557 | |||
11558 | $row = $sth->fetch(PDO::FETCH_ASSOC); |
||
11559 | $sth->closeCursor(); |
||
11560 | if (count($row) > 0) { |
||
11561 | return $row; |
||
11562 | } else return ''; |
||
11563 | } catch (PDOException $e) { |
||
11564 | if (isset($globalDebug) && $globalDebug) echo 'Error : '.$e->getMessage()."\n"; |
||
11565 | return ''; |
||
11566 | } |
||
11567 | |||
11568 | } |
||
11569 | |||
11570 | /** |
||
11571 | * converts the registration code using the country prefix |
||
11572 | * |
||
11573 | * @param String $registration the aircraft registration |
||
11574 | * @return String the aircraft registration |
||
11575 | * |
||
11576 | */ |
||
11577 | public function convertAircraftRegistration($registration) |
||
11578 | { |
||
11579 | $registration = filter_var($registration,FILTER_SANITIZE_STRING); |
||
11580 | $registration_prefix = ''; |
||
11581 | $registration_1 = substr($registration, 0, 1); |
||
11582 | $registration_2 = substr($registration, 0, 2); |
||
11583 | |||
11584 | //first get the prefix based on two characters |
||
11585 | $query = "SELECT aircraft_registration.registration_prefix FROM aircraft_registration WHERE registration_prefix = :registration_2"; |
||
11586 | |||
11587 | |||
11588 | $sth = $this->db->prepare($query); |
||
11589 | $sth->execute(array(':registration_2' => $registration_2)); |
||
11590 | |||
11591 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
11592 | { |
||
11593 | $registration_prefix = $row['registration_prefix']; |
||
11594 | } |
||
11595 | |||
11596 | //if we didn't find a two chracter prefix lets just search the one with one character |
||
11597 | if ($registration_prefix == '') |
||
11598 | { |
||
11599 | $query = "SELECT aircraft_registration.registration_prefix FROM aircraft_registration WHERE registration_prefix = :registration_1"; |
||
11600 | $sth = $this->db->prepare($query); |
||
11601 | $sth->execute(array(':registration_1' => $registration_1)); |
||
11602 | |||
11603 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
11604 | { |
||
11605 | $registration_prefix = $row['registration_prefix']; |
||
11606 | } |
||
11607 | } |
||
11608 | |||
11609 | //determine which characters are being used and convert the registration code appropiately |
||
11610 | if (strlen($registration_prefix) == 1) |
||
11611 | { |
||
11612 | if (0 === strpos($registration, 'N')) { |
||
11613 | $registration = preg_replace("/^(.{1})/", "$1", $registration); |
||
11614 | } else { |
||
11615 | $registration = preg_replace("/^(.{1})/", "$1-", $registration); |
||
11616 | } |
||
11617 | } else if(strlen($registration_prefix) == 2){ |
||
11618 | if (0 === strpos($registration, 'N')) { |
||
11619 | $registration = preg_replace("/^(.{2})/", "$1", $registration); |
||
11620 | } else { |
||
11621 | $registration = preg_replace("/^(.{2})/", "$1-", $registration); |
||
11622 | } |
||
11623 | } |
||
11624 | return $registration; |
||
11625 | } |
||
11626 | |||
11627 | /** |
||
11628 | * Country from the registration code |
||
11629 | * |
||
11630 | * @param String $registration the aircraft registration |
||
11631 | * @return String the country |
||
11632 | * |
||
11633 | */ |
||
11634 | public function countryFromAircraftRegistration($registration) |
||
11635 | { |
||
11636 | $registration = filter_var($registration,FILTER_SANITIZE_STRING); |
||
11637 | |||
11638 | $registration_prefix = ''; |
||
11639 | $registration_test = explode('-',$registration); |
||
11640 | $country = ''; |
||
11641 | if ($registration_test[0] != $registration) { |
||
11642 | $query = "SELECT aircraft_registration.registration_prefix, aircraft_registration.country FROM aircraft_registration WHERE registration_prefix = :registration_1 LIMIT 1"; |
||
11643 | |||
11644 | $sth = $this->db->prepare($query); |
||
11645 | $sth->execute(array(':registration_1' => $registration_test[0])); |
||
11646 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
11647 | { |
||
11648 | //$registration_prefix = $row['registration_prefix']; |
||
11649 | $country = $row['country']; |
||
11650 | } |
||
11651 | } else { |
||
11652 | $registration_1 = substr($registration, 0, 1); |
||
11653 | $registration_2 = substr($registration, 0, 2); |
||
11654 | |||
11655 | $country = ''; |
||
11656 | //first get the prefix based on two characters |
||
11657 | $query = "SELECT aircraft_registration.registration_prefix, aircraft_registration.country FROM aircraft_registration WHERE registration_prefix = :registration_2 LIMIT 1"; |
||
11658 | |||
11659 | |||
11660 | $sth = $this->db->prepare($query); |
||
11661 | $sth->execute(array(':registration_2' => $registration_2)); |
||
11662 | |||
11663 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
11664 | { |
||
11665 | $registration_prefix = $row['registration_prefix']; |
||
11666 | $country = $row['country']; |
||
11667 | } |
||
11668 | |||
11669 | //if we didn't find a two chracter prefix lets just search the one with one character |
||
11670 | if ($registration_prefix == "") |
||
11671 | { |
||
11672 | $query = "SELECT aircraft_registration.registration_prefix, aircraft_registration.country FROM aircraft_registration WHERE registration_prefix = :registration_1 LIMIT 1"; |
||
11673 | |||
11674 | $sth = $this->db->prepare($query); |
||
11675 | $sth->execute(array(':registration_1' => $registration_1)); |
||
11676 | |||
11677 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
11678 | { |
||
11679 | //$registration_prefix = $row['registration_prefix']; |
||
11680 | $country = $row['country']; |
||
11681 | } |
||
11682 | } |
||
11683 | } |
||
11684 | |||
11685 | return $country; |
||
11686 | } |
||
11687 | |||
11688 | /** |
||
11689 | * Registration prefix from the registration code |
||
11690 | * |
||
11691 | * @param String $registration the aircraft registration |
||
11692 | * @return String the registration prefix |
||
11693 | * |
||
11694 | */ |
||
11695 | public function registrationPrefixFromAircraftRegistration($registration) |
||
11696 | { |
||
11697 | $registration = filter_var($registration,FILTER_SANITIZE_STRING); |
||
11698 | |||
11699 | $registration_prefix = ''; |
||
11700 | $registration_test = explode('-',$registration); |
||
11701 | //$country = ''; |
||
11702 | if ($registration_test[0] != $registration) { |
||
11703 | $query = "SELECT aircraft_registration.registration_prefix, aircraft_registration.country FROM aircraft_registration WHERE registration_prefix = :registration_1 LIMIT 1"; |
||
11704 | |||
11705 | $sth = $this->db->prepare($query); |
||
11706 | $sth->execute(array(':registration_1' => $registration_test[0])); |
||
11707 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
11708 | { |
||
11709 | $registration_prefix = $row['registration_prefix']; |
||
11710 | //$country = $row['country']; |
||
11711 | } |
||
11712 | } else { |
||
11713 | $registration_1 = substr($registration, 0, 1); |
||
11714 | $registration_2 = substr($registration, 0, 2); |
||
11715 | |||
11716 | //first get the prefix based on two characters |
||
11717 | $query = "SELECT aircraft_registration.registration_prefix, aircraft_registration.country FROM aircraft_registration WHERE registration_prefix = :registration_2 LIMIT 1"; |
||
11718 | |||
11719 | |||
11720 | $sth = $this->db->prepare($query); |
||
11721 | $sth->execute(array(':registration_2' => $registration_2)); |
||
11722 | |||
11723 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
11724 | { |
||
11725 | $registration_prefix = $row['registration_prefix']; |
||
11726 | //$country = $row['country']; |
||
11727 | } |
||
11728 | |||
11729 | //if we didn't find a two chracter prefix lets just search the one with one character |
||
11730 | if ($registration_prefix == "") |
||
11731 | { |
||
11732 | $query = "SELECT aircraft_registration.registration_prefix, aircraft_registration.country FROM aircraft_registration WHERE registration_prefix = :registration_1 LIMIT 1"; |
||
11733 | |||
11734 | $sth = $this->db->prepare($query); |
||
11735 | $sth->execute(array(':registration_1' => $registration_1)); |
||
11736 | |||
11737 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
11738 | { |
||
11739 | $registration_prefix = $row['registration_prefix']; |
||
11740 | //$country = $row['country']; |
||
11741 | } |
||
11742 | } |
||
11743 | } |
||
11744 | |||
11745 | return $registration_prefix; |
||
11746 | } |
||
11747 | |||
11748 | |||
11749 | /** |
||
11750 | * Country from the registration code |
||
11751 | * |
||
11752 | * @param String $registration the aircraft registration |
||
11753 | * @return String the country |
||
11754 | * |
||
11755 | */ |
||
11756 | public function countryFromAircraftRegistrationCode($registration) |
||
11757 | { |
||
11758 | $registration = filter_var($registration,FILTER_SANITIZE_STRING); |
||
11759 | |||
11760 | $country = ''; |
||
11761 | $query = "SELECT aircraft_registration.registration_prefix, aircraft_registration.country FROM aircraft_registration WHERE registration_prefix = :registration LIMIT 1"; |
||
11762 | $sth = $this->db->prepare($query); |
||
11763 | $sth->execute(array(':registration' => $registration)); |
||
11764 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
11765 | { |
||
11766 | $country = $row['country']; |
||
11767 | } |
||
11768 | return $country; |
||
11769 | } |
||
11770 | |||
11771 | /** |
||
11772 | * Set a new highlight value for a flight |
||
11773 | * |
||
11774 | * @param String $flightaware_id flightaware_id from spotter_output table |
||
11775 | * @param String $highlight New highlight value |
||
11776 | */ |
||
11777 | public function setHighlightFlight($flightaware_id,$highlight) { |
||
11778 | |||
11779 | $query = "UPDATE spotter_output SET highlight = :highlight WHERE flightaware_id = :flightaware_id"; |
||
11780 | $sth = $this->db->prepare($query); |
||
11781 | $sth->execute(array(':flightaware_id' => $flightaware_id, ':highlight' => $highlight)); |
||
11782 | } |
||
11783 | |||
11784 | /** |
||
11785 | * Set a new highlight value for a flight by Registration |
||
11786 | * |
||
11787 | * @param String $registration Registration of the aircraft |
||
11788 | * @param String $date Date of spotted aircraft |
||
11789 | * @param String $highlight New highlight value |
||
11790 | */ |
||
11791 | public function setHighlightFlightByRegistration($registration,$highlight, $date = '') { |
||
11792 | if ($date == '') { |
||
11793 | $query = "UPDATE spotter_output SET highlight = :highlight WHERE spotter_id IN (SELECT MAX(spotter_id) FROM spotter_output WHERE registration = :registration)"; |
||
11794 | $query_values = array(':registration' => $registration, ':highlight' => $highlight); |
||
11795 | } else { |
||
11796 | $query = "UPDATE spotter_output SET highlight = :highlight WHERE registration = :registration AND date(date) = :date"; |
||
11797 | $query_values = array(':registration' => $registration, ':highlight' => $highlight,':date' => $date); |
||
11798 | } |
||
11799 | $sth = $this->db->prepare($query); |
||
11800 | $sth->execute($query_values); |
||
11801 | } |
||
11802 | |||
11803 | /** |
||
11804 | * Gets the short url from bit.ly |
||
11805 | * |
||
11806 | * @param String $url the full url |
||
11807 | * @return String the bit.ly url |
||
11808 | * |
||
11809 | */ |
||
11810 | public function getBitlyURL($url) |
||
11811 | { |
||
11812 | global $globalBitlyAccessToken; |
||
11813 | |||
11814 | if ($globalBitlyAccessToken == '') return $url; |
||
11815 | |||
11816 | $google_url = 'https://api-ssl.bitly.com/v3/shorten?access_token='.$globalBitlyAccessToken.'&longUrl='.$url; |
||
11817 | |||
11818 | $ch = curl_init(); |
||
11819 | curl_setopt($ch, CURLOPT_HEADER, 0); |
||
11820 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); |
||
11821 | curl_setopt($ch, CURLOPT_URL, $google_url); |
||
11822 | $bitly_data = curl_exec($ch); |
||
11823 | curl_close($ch); |
||
11824 | |||
11825 | $bitly_data = json_decode($bitly_data); |
||
11826 | $bitly_url = ''; |
||
11827 | if ($bitly_data->status_txt = "OK"){ |
||
11828 | $bitly_url = $bitly_data->data->url; |
||
11829 | } |
||
11830 | |||
11831 | return $bitly_url; |
||
11832 | } |
||
11833 | |||
11834 | |||
11835 | public function getOrderBy() |
||
11836 | { |
||
11837 | $orderby = array("aircraft_asc" => array("key" => "aircraft_asc", "value" => "Aircraft Type - ASC", "sql" => "ORDER BY spotter_output.aircraft_icao ASC"), "aircraft_desc" => array("key" => "aircraft_desc", "value" => "Aircraft Type - DESC", "sql" => "ORDER BY spotter_output.aircraft_icao DESC"),"manufacturer_asc" => array("key" => "manufacturer_asc", "value" => "Aircraft Manufacturer - ASC", "sql" => "ORDER BY spotter_output.aircraft_manufacturer ASC"), "manufacturer_desc" => array("key" => "manufacturer_desc", "value" => "Aircraft Manufacturer - DESC", "sql" => "ORDER BY spotter_output.aircraft_manufacturer DESC"),"airline_name_asc" => array("key" => "airline_name_asc", "value" => "Airline Name - ASC", "sql" => "ORDER BY spotter_output.airline_name ASC"), "airline_name_desc" => array("key" => "airline_name_desc", "value" => "Airline Name - DESC", "sql" => "ORDER BY spotter_output.airline_name DESC"), "ident_asc" => array("key" => "ident_asc", "value" => "Ident - ASC", "sql" => "ORDER BY spotter_output.ident ASC"), "ident_desc" => array("key" => "ident_desc", "value" => "Ident - DESC", "sql" => "ORDER BY spotter_output.ident DESC"), "airport_departure_asc" => array("key" => "airport_departure_asc", "value" => "Departure Airport - ASC", "sql" => "ORDER BY spotter_output.departure_airport_city ASC"), "airport_departure_desc" => array("key" => "airport_departure_desc", "value" => "Departure Airport - DESC", "sql" => "ORDER BY spotter_output.departure_airport_city DESC"), "airport_arrival_asc" => array("key" => "airport_arrival_asc", "value" => "Arrival Airport - ASC", "sql" => "ORDER BY spotter_output.arrival_airport_city ASC"), "airport_arrival_desc" => array("key" => "airport_arrival_desc", "value" => "Arrival Airport - DESC", "sql" => "ORDER BY spotter_output.arrival_airport_city DESC"), "date_asc" => array("key" => "date_asc", "value" => "Date - ASC", "sql" => "ORDER BY spotter_output.date ASC"), "date_desc" => array("key" => "date_desc", "value" => "Date - DESC", "sql" => "ORDER BY spotter_output.date DESC"),"distance_asc" => array("key" => "distance_asc","value" => "Distance - ASC","sql" => "ORDER BY distance ASC"),"distance_desc" => array("key" => "distance_desc","value" => "Distance - DESC","sql" => "ORDER BY distance DESC")); |
||
11838 | |||
11839 | return $orderby; |
||
11840 | |||
11841 | } |
||
11842 | |||
11843 | /* |
||
11844 | public function importFromFlightAware() |
||
11845 | { |
||
11846 | global $globalFlightAwareUsername, $globalFlightAwarePassword, $globalLatitudeMax, $globalLatitudeMin, $globalLongitudeMax, $globalLongitudeMin, $globalAirportIgnore; |
||
11847 | $Spotter = new Spotter($this->db); |
||
11848 | $SpotterLive = new SpotterLive($this->db); |
||
11849 | $options = array( |
||
11850 | 'trace' => true, |
||
11851 | 'exceptions' => 0, |
||
11852 | 'login' => $globalFlightAwareUsername, |
||
11853 | 'password' => $globalFlightAwarePassword, |
||
11854 | ); |
||
11855 | $client = new SoapClient('http://flightxml.flightaware.com/soap/FlightXML2/wsdl', $options); |
||
11856 | $params = array('query' => '{range lat '.$globalLatitudeMin.' '.$globalLatitudeMax.'} {range lon '.$globalLongitudeMax.' '.$globalLongitudeMin.'} {true inAir}', 'howMany' => '15', 'offset' => '0'); |
||
11857 | $result = $client->SearchBirdseyeInFlight($params); |
||
11858 | $dataFound = false; |
||
11859 | $ignoreImport = false; |
||
11860 | if (isset($result->SearchBirdseyeInFlightResult)) |
||
11861 | { |
||
11862 | if (is_array($result->SearchBirdseyeInFlightResult->aircraft)) |
||
11863 | { |
||
11864 | foreach($result->SearchBirdseyeInFlightResult->aircraft as $aircraft) |
||
11865 | { |
||
11866 | if (!strstr($aircraft->origin, 'L ') && !strstr($aircraft->destination, 'L ')) |
||
11867 | { |
||
11868 | foreach($globalAirportIgnore as $airportIgnore) |
||
11869 | { |
||
11870 | if ($aircraft->origin == $airportIgnore || $aircraft->destination == $airportIgnore) |
||
11871 | { |
||
11872 | $ignoreImport = true; |
||
11873 | } |
||
11874 | } |
||
11875 | if ($ignoreImport == false) |
||
11876 | { |
||
11877 | $flightaware_id = $aircraft->faFlightID; |
||
11878 | $ident = $aircraft->ident; |
||
11879 | $aircraft_type = $aircraft->type; |
||
11880 | $departure_airport = $aircraft->origin; |
||
11881 | $arrival_airport = $aircraft->destination; |
||
11882 | $latitude = $aircraft->latitude; |
||
11883 | $longitude = $aircraft->longitude; |
||
11884 | $waypoints = $aircraft->waypoints; |
||
11885 | $altitude = $aircraft->altitude; |
||
11886 | $heading = $aircraft->heading; |
||
11887 | $groundspeed = $aircraft->groundspeed; |
||
11888 | $dataFound = true; |
||
11889 | //gets the callsign from the last hour |
||
11890 | $last_hour_ident = $this->getIdentFromLastHour($ident); |
||
11891 | //change the departure/arrival airport to NA if its not available |
||
11892 | if ($departure_airport == "" || $departure_airport == "---" || $departure_airport == "ZZZ" || $departure_airport == "ZZZZ") { $departure_airport = "NA"; } |
||
11893 | if ($arrival_airport == "" || $arrival_airport == "---" || $arrival_airport == "ZZZ" || $arrival_airport == "ZZZZ") { $arrival_airport = "NA"; } |
||
11894 | //if there was no aircraft with the same callsign within the last hour and go post it into the archive |
||
11895 | if($last_hour_ident == "") |
||
11896 | { |
||
11897 | //adds the spotter data for the archive |
||
11898 | $Spotter->addSpotterData($flightaware_id, $ident, $aircraft_type, $departure_airport, $arrival_airport, $latitude, $longitude, $waypoints, $altitude, $heading, $groundspeed); |
||
11899 | } |
||
11900 | |||
11901 | //adds the spotter LIVE data |
||
11902 | $SpotterLive->addLiveSpotterData($flightaware_id, $ident, $aircraft_type, $departure_airport, $arrival_airport, $latitude, $longitude, $waypoints, $altitude, $heading, $groundspeed); |
||
11903 | } |
||
11904 | } |
||
11905 | $ignoreImport = false; |
||
11906 | } |
||
11907 | } else { |
||
11908 | if (!strstr($result->SearchBirdseyeInFlightResult->aircraft->origin, 'L ') && !strstr($result->SearchBirdseyeInFlightResult->aircraft->destination, 'L ')) |
||
11909 | { |
||
11910 | foreach($globalAirportIgnore as $airportIgnore) |
||
11911 | { |
||
11912 | foreach($globalAirportIgnore as $airportIgnore) |
||
11913 | { |
||
11914 | if ($aircraft->origin == $airportIgnore || $aircraft->destination == $airportIgnore) |
||
11915 | { |
||
11916 | $ignoreImport = true; |
||
11917 | } |
||
11918 | } |
||
11919 | if ($ignoreImport == false) |
||
11920 | { |
||
11921 | $flightaware_id = $result->SearchBirdseyeInFlightResult->aircraft->faFlightID; |
||
11922 | $ident = $result->SearchBirdseyeInFlightResult->aircraft->ident; |
||
11923 | $aircraft_type = $result->SearchBirdseyeInFlightResult->aircraft->type; |
||
11924 | $departure_airport = $result->SearchBirdseyeInFlightResult->aircraft->origin; |
||
11925 | $arrival_airport = $result->SearchBirdseyeInFlightResult->aircraft->destination; |
||
11926 | $latitude = $result->SearchBirdseyeInFlightResult->aircraft->latitude; |
||
11927 | $longitude = $result->SearchBirdseyeInFlightResult->aircraft->longitude; |
||
11928 | $waypoints = $result->SearchBirdseyeInFlightResult->aircraft->waypoints; |
||
11929 | $altitude = $result->SearchBirdseyeInFlightResult->aircraft->altitude; |
||
11930 | $heading = $result->SearchBirdseyeInFlightResult->aircraft->heading; |
||
11931 | $groundspeed = $result->SearchBirdseyeInFlightResult->aircraft->groundspeed; |
||
11932 | $dataFound = true; |
||
11933 | //gets the callsign from the last hour |
||
11934 | $last_hour_ident = $this->getIdentFromLastHour($ident); |
||
11935 | //change the departure/arrival airport to NA if its not available |
||
11936 | if ($departure_airport == "" || $departure_airport == "---" || $departure_airport == "ZZZ" || $departure_airport == "ZZZZ") { $departure_airport = "NA"; } |
||
11937 | if ($arrival_airport == "" || $arrival_airport == "---" || $arrival_airport == "ZZZ" || $arrival_airport == "ZZZZ") { $arrival_airport = "NA"; } |
||
11938 | //if there was no aircraft with the same callsign within the last hour and go post it into the archive |
||
11939 | if($last_hour_ident == "") |
||
11940 | { |
||
11941 | //adds the spotter data for the archive |
||
11942 | $Spotter->addSpotterData($flightaware_id, $ident, $aircraft_type, $departure_airport, $arrival_airport, $latitude, $longitude, $waypoints, $altitude, $heading, $groundspeed); |
||
11943 | } |
||
11944 | //adds the spotter LIVE data |
||
11945 | $SpotterLive->addLiveSpotterData($flightaware_id, $ident, $aircraft_type, $departure_airport, $arrival_airport, $latitude, $longitude, $waypoints, $altitude, $heading, $groundspeed); |
||
11946 | } |
||
11947 | $ignoreImport = false; |
||
11948 | } |
||
11949 | } |
||
11950 | } |
||
11951 | } |
||
11952 | } |
||
11953 | */ |
||
11954 | |||
11955 | // Update flights data when new data in DB |
||
11956 | public function updateFieldsFromOtherTables() |
||
11957 | { |
||
11958 | global $globalDebug, $globalDBdriver; |
||
11959 | $Image = new Image($this->db); |
||
11960 | |||
11961 | |||
11962 | // routes |
||
11963 | if ($globalDebug) print "Routes...\n"; |
||
11964 | if ($globalDBdriver == 'mysql') { |
||
11965 | $query = "SELECT spotter_output.spotter_id, routes.FromAirport_ICAO, routes.ToAirport_ICAO FROM spotter_output, routes WHERE spotter_output.ident = routes.CallSign AND ( spotter_output.departure_airport_icao != routes.FromAirport_ICAO OR spotter_output.arrival_airport_icao != routes.ToAirport_ICAO) AND routes.FromAirport_ICAO != '' AND spotter_output.date >= DATE_SUB(UTC_TIMESTAMP(),INTERVAL 15 DAY)"; |
||
11966 | } else { |
||
11967 | $query = "SELECT spotter_output.spotter_id, routes.FromAirport_ICAO, routes.ToAirport_ICAO FROM spotter_output, routes WHERE spotter_output.ident = routes.CallSign AND ( spotter_output.departure_airport_icao != routes.FromAirport_ICAO OR spotter_output.arrival_airport_icao != routes.ToAirport_ICAO) AND routes.FromAirport_ICAO != '' AND spotter_output.date >= now() AT TIME ZONE 'UTC' - INTERVAL '15 DAYS'"; |
||
11968 | } |
||
11969 | $sth = $this->db->prepare($query); |
||
11970 | $sth->execute(); |
||
11971 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
11972 | { |
||
11973 | $departure_airport_array = $this->getAllAirportInfo($row['fromairport_icao']); |
||
11974 | $arrival_airport_array = $this->getAllAirportInfo($row['toairport_icao']); |
||
11975 | if (count($departure_airport_array) > 0 && count($arrival_airport_array) > 0) { |
||
11976 | $update_query="UPDATE spotter_output SET departure_airport_icao = :fromicao, arrival_airport_icao = :toicao, departure_airport_name = :departure_airport_name, departure_airport_city = :departure_airport_city, departure_airport_country = :departure_airport_country, arrival_airport_name = :arrival_airport_name, arrival_airport_city = :arrival_airport_city, arrival_airport_country = :arrival_airport_country WHERE spotter_id = :spotter_id"; |
||
11977 | $sthu = $this->db->prepare($update_query); |
||
11978 | $sthu->execute(array(':fromicao' => $row['fromairport_icao'],':toicao' => $row['toairport_icao'],':spotter_id' => $row['spotter_id'],':departure_airport_name' => $departure_airport_array[0]['name'],':departure_airport_city' => $departure_airport_array[0]['city'],':departure_airport_country' => $departure_airport_array[0]['country'],':arrival_airport_name' => $arrival_airport_array[0]['name'],':arrival_airport_city' => $arrival_airport_array[0]['city'],':arrival_airport_country' => $arrival_airport_array[0]['country'])); |
||
11979 | } |
||
11980 | } |
||
11981 | |||
11982 | if ($globalDebug) print "Airlines...\n"; |
||
11983 | //airlines |
||
11984 | if ($globalDBdriver == 'mysql') { |
||
11985 | $query = "SELECT spotter_output.spotter_id, spotter_output.ident FROM spotter_output WHERE (spotter_output.airline_name = '' OR spotter_output.airline_name = 'Not Available') AND spotter_output.date >= DATE_SUB(UTC_TIMESTAMP(),INTERVAL 15 DAY)"; |
||
11986 | } elseif ($globalDBdriver == 'pgsql') { |
||
11987 | $query = "SELECT spotter_output.spotter_id, spotter_output.ident FROM spotter_output WHERE (spotter_output.airline_name = '' OR spotter_output.airline_name = 'Not Available') AND spotter_output.date >= now() AT TIME ZONE 'UTC' - INTERVAL '15 DAYS'"; |
||
11988 | } |
||
11989 | $sth = $this->db->prepare($query); |
||
11990 | $sth->execute(); |
||
11991 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
11992 | { |
||
11993 | if (is_numeric(substr($row['ident'], -1, 1))) |
||
11994 | { |
||
11995 | $fromsource = NULL; |
||
11996 | if (isset($row['format_source']) && $row['format_source'] == 'vatsimtxt') $fromsource = 'vatsim'; |
||
11997 | elseif (isset($row['format_source']) && $row['format_source'] == 'whazzup') $fromsource = 'ivao'; |
||
11998 | elseif (isset($globalVATSIM) && $globalVATSIM) $fromsource = 'vatsim'; |
||
11999 | elseif (isset($globalIVAO) && $globalIVAO) $fromsource = 'ivao'; |
||
12000 | $airline_array = $this->getAllAirlineInfo(substr($row['ident'], 0, 3),$fromsource); |
||
12001 | if (isset($airline_array[0]['name'])) { |
||
12002 | $update_query = "UPDATE spotter_output SET spotter_output.airline_name = :airline_name, spotter_output.airline_icao = :airline_icao, spotter_output.airline_country = :airline_country, spotter_output.airline_type = :airline_type WHERE spotter_output.spotter_id = :spotter_id"; |
||
12003 | $sthu = $this->db->prepare($update_query); |
||
12004 | $sthu->execute(array(':airline_name' => $airline_array[0]['name'],':airline_icao' => $airline_array[0]['icao'], ':airline_country' => $airline_array[0]['country'], ':airline_type' => $airline_array[0]['type'], ':spotter_id' => $row['spotter_id'])); |
||
12005 | } |
||
12006 | } |
||
12007 | } |
||
12008 | |||
12009 | if ($globalDebug) print "Remove Duplicate in aircraft_modes...\n"; |
||
12010 | //duplicate modes |
||
12011 | $query = "DELETE aircraft_modes FROM aircraft_modes LEFT OUTER JOIN (SELECT max(`AircraftID`) as `AircraftID`,`ModeS` FROM `aircraft_modes` group by ModeS) as KeepRows ON aircraft_modes.AircraftID = KeepRows.AircraftID WHERE KeepRows.AircraftID IS NULL"; |
||
12012 | $sth = $this->db->prepare($query); |
||
12013 | $sth->execute(); |
||
12014 | |||
12015 | if ($globalDebug) print "Aircraft...\n"; |
||
12016 | //aircraft |
||
12017 | if ($globalDBdriver == 'mysql') { |
||
12018 | $query = "SELECT spotter_output.spotter_id, spotter_output.aircraft_icao, spotter_output.registration FROM spotter_output WHERE (spotter_output.aircraft_name = '' OR spotter_output.aircraft_name = 'Not Available') AND spotter_output.date >= DATE_SUB(UTC_TIMESTAMP(),INTERVAL 7 DAY)"; |
||
12019 | } elseif ($globalDBdriver == 'pgsql') { |
||
12020 | $query = "SELECT spotter_output.spotter_id, spotter_output.aircraft_icao, spotter_output.registration FROM spotter_output WHERE (spotter_output.aircraft_name = '' OR spotter_output.aircraft_name = 'Not Available') AND spotter_output.date >= now() AT TIME ZONE 'UTC' - INERVAL '15 DAYS'"; |
||
12021 | } |
||
12022 | $sth = $this->db->prepare($query); |
||
12023 | $sth->execute(); |
||
12024 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
12025 | { |
||
12026 | if ($row['aircraft_icao'] != '') { |
||
12027 | $aircraft_name = $this->getAllAircraftInfo($row['aircraft_icao']); |
||
12028 | if ($row['registration'] != ""){ |
||
12029 | $image_array = $Image->getSpotterImage($row['registration']); |
||
12030 | if (!isset($image_array[0]['registration'])) { |
||
12031 | $Image->addSpotterImage($row['registration']); |
||
12032 | } |
||
12033 | } |
||
12034 | if (count($aircraft_name) > 0) { |
||
12035 | $update_query = "UPDATE spotter_output SET spotter_output.aircraft_name = :aircraft_name, spotter_output.aircraft_manufacturer = :aircraft_manufacturer WHERE spotter_output.spotter_id = :spotter_id"; |
||
12036 | $sthu = $this->db->prepare($update_query); |
||
12037 | $sthu->execute(array(':aircraft_name' => $aircraft_name[0]['type'], ':aircraft_manufacturer' => $aircraft_name[0]['manufacturer'], ':spotter_id' => $row['spotter_id'])); |
||
12038 | } |
||
12039 | } |
||
12040 | } |
||
12041 | } |
||
12042 | |||
12043 | // Update arrival airports for data already in DB |
||
12044 | public function updateArrivalAirports() |
||
12045 | { |
||
12046 | global $globalDebug, $globalDBdriver, $globalClosestMinDist; |
||
12047 | $query = "SELECT spotter_output.spotter_id, spotter_output.last_latitude, spotter_output.last_longitude, spotter_output.last_altitude, spotter_output.arrival_airport_icao, spotter_output.real_arrival_airport_icao FROM spotter_output"; |
||
12048 | $sth = $this->db->prepare($query); |
||
12049 | $sth->execute(); |
||
12050 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
12051 | { |
||
12052 | if ($row['last_latitude'] != '' && $row['last_longitude'] != '') { |
||
12053 | $closestAirports = $this->closestAirports($row['last_latitude'],$row['last_longitude'],$globalClosestMinDist); |
||
12054 | $airport_icao = ''; |
||
12055 | if (isset($closestAirports[0])) { |
||
12056 | if ($row['arrival_airport_icao'] == $closestAirports[0]['icao']) { |
||
12057 | $airport_icao = $closestAirports[0]['icao']; |
||
12058 | if ($globalDebug) echo "\o/ 1st ---++ Find arrival airport. airport_icao : ".$airport_icao."\n"; |
||
12059 | } elseif (count($closestAirports > 1) && $row['arrival_airport_icao'] != '' && $row['arrival_airport_icao'] != 'NA') { |
||
12060 | foreach ($closestAirports as $airport) { |
||
12061 | if ($row['arrival_airport_icao'] == $airport['icao']) { |
||
12062 | $airport_icao = $airport['icao']; |
||
12063 | if ($globalDebug) echo "\o/ try --++ Find arrival airport. airport_icao : ".$airport_icao."\n"; |
||
12064 | break; |
||
12065 | } |
||
12066 | } |
||
12067 | } elseif ($row['last_altitude'] == 0 || ($row['last_altitude'] != '' && ($closestAirports[0]['altitude'] <= $row['last_altitude']*100+1000 && $row['last_altitude']*100 < $closestAirports[0]['altitude']+5000))) { |
||
12068 | $airport_icao = $closestAirports[0]['icao']; |
||
12069 | if ($globalDebug) echo "\o/ NP --++ Find arrival airport. Airport ICAO : ".$airport_icao." ! Latitude : ".$row['last_latitude'].' - Longitude : '.$row['last_longitude'].' - MinDist : '.$globalClosestMinDist." - Airport altitude : ".$closestAirports[0]['altitude'].' - flight altitude : '.($row['last_altitude']*100)."\n"; |
||
12070 | } else { |
||
12071 | if ($globalDebug) echo "----- Can't find arrival airport. Latitude : ".$row['last_latitude'].' - Longitude : '.$row['last_longitude'].' - MinDist : '.$globalClosestMinDist." - Airport altitude : ".$closestAirports[0]['altitude'].' - flight altitude : '.($row['last_altitude']*100)."\n"; |
||
12072 | } |
||
12073 | } else { |
||
12074 | if ($globalDebug) echo "----- No Airport near last coord. Latitude : ".$row['last_latitude'].' - Longitude : '.$row['last_longitude'].' - MinDist : '.$globalClosestMinDist."\n"; |
||
12075 | } |
||
12076 | if ($row['real_arrival_airport_icao'] != $airport_icao) { |
||
12077 | if ($globalDebug) echo "Updating airport to ".$airport_icao."...\n"; |
||
12078 | $update_query="UPDATE spotter_output SET real_arrival_airport_icao = :airport_icao WHERE spotter_id = :spotter_id"; |
||
12079 | $sthu = $this->db->prepare($update_query); |
||
12080 | $sthu->execute(array(':airport_icao' => $airport_icao,':spotter_id' => $row['spotter_id'])); |
||
12081 | } |
||
12082 | } |
||
12083 | } |
||
12084 | } |
||
12085 | |||
12086 | public function closestAirports($origLat,$origLon,$dist = 10) { |
||
12087 | global $globalDBdriver; |
||
12088 | $dist = number_format($dist*0.621371,2,'.',''); // convert km to mile |
||
12089 | /* |
||
12090 | $query="SELECT name, icao, latitude, longitude, altitude, 3956 * 2 * ASIN(SQRT( POWER(SIN(($origLat - abs(latitude))*pi()/180/2),2)+COS( $origLat *pi()/180)*COS(abs(latitude)*pi()/180)*POWER(SIN(($origLon-longitude)*pi()/180/2),2))) as distance |
||
12091 | FROM airport WHERE longitude between ($origLon-$dist/abs(cos(radians($origLat))*69)) and ($origLon+$dist/abs(cos(radians($origLat))*69)) and latitude between ($origLat-($dist/69)) and ($origLat+($dist/69)) |
||
12092 | having distance < $dist ORDER BY distance limit 100;"; |
||
12093 | */ |
||
12094 | if ($globalDBdriver == 'mysql') { |
||
12095 | $query="SELECT name, icao, latitude, longitude, altitude, 3956 * 2 * ASIN(SQRT( POWER(SIN(($origLat - latitude)*pi()/180/2),2)+COS( $origLat *pi()/180)*COS(latitude*pi()/180)*POWER(SIN(($origLon-longitude)*pi()/180/2),2))) as distance |
||
12096 | FROM airport WHERE longitude between ($origLon-$dist/cos(radians($origLat))*69) and ($origLon+$dist/cos(radians($origLat)*69)) and latitude between ($origLat-($dist/69)) and ($origLat+($dist/69)) |
||
12097 | AND (3956 * 2 * ASIN(SQRT( POWER(SIN(($origLat - latitude)*pi()/180/2),2)+COS( $origLat *pi()/180)*COS(latitude*pi()/180)*POWER(SIN(($origLon-longitude)*pi()/180/2),2)))) < $dist ORDER BY distance limit 100;"; |
||
12098 | } else { |
||
12099 | $query="SELECT name, icao, latitude, longitude, altitude, 3956 * 2 * ASIN(SQRT( POWER(SIN(($origLat - CAST(latitude as double precision))*pi()/180/2),2)+COS( $origLat *pi()/180)*COS(CAST(latitude as double precision)*pi()/180)*POWER(SIN(($origLon-CAST(longitude as double precision))*pi()/180/2),2))) as distance |
||
12100 | FROM airport WHERE CAST(longitude as double precision) between ($origLon-$dist/cos(radians($origLat))*69) and ($origLon+$dist/cos(radians($origLat))*69) and CAST(latitude as double precision) between ($origLat-($dist/69)) and ($origLat+($dist/69)) |
||
12101 | AND (3956 * 2 * ASIN(SQRT( POWER(SIN(($origLat - CAST(latitude as double precision))*pi()/180/2),2)+COS( $origLat *pi()/180)*COS(CAST(latitude as double precision)*pi()/180)*POWER(SIN(($origLon-CAST(longitude as double precision))*pi()/180/2),2)))) < $dist ORDER BY distance limit 100;"; |
||
12102 | } |
||
12103 | $sth = $this->db->prepare($query); |
||
12104 | $sth->execute(); |
||
12105 | return $sth->fetchAll(PDO::FETCH_ASSOC); |
||
12106 | } |
||
12107 | } |
||
12108 | /* |
||
12109 | $Spotter = new Spotter(); |
||
12110 | print_r($Spotter->closestAirports('-19.9813','-47.8286',10)); |
||
12120 | ?> |