Completed
Push — master ( 0da4d1...d670f0 )
by Yannick
15:46
created

Stats::addStatDepartureAirportsDaily()   A

Complexity

Conditions 3
Paths 6

Size

Total Lines 15
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 12
nc 6
nop 8
dl 0
loc 15
rs 9.4285
c 0
b 0
f 0

How to fix   Many Parameters   

Many Parameters

Methods with many parameters are not only hard to understand, but their parameters also often become inconsistent when you need more, or different data.

There are several approaches to avoid long parameter lists:

1
<?php
2
/*
3
* This class save stats older than a year and $globalArchiveMonths
4
*/
5
6
require_once(dirname(__FILE__).'/class.Spotter.php');
7
require_once(dirname(__FILE__).'/class.SpotterArchive.php');
8
require_once(dirname(__FILE__).'/class.Common.php');
9
class Stats {
10
	public $db;
11
	public $filter_name = '';
12
	
13
	public function __construct($dbc = null) {
14
		global $globalFilterName;
15
		if (isset($globalFilterName)) $this->filter_name = $globalFilterName;
16
		$Connection = new Connection($dbc);
17
		$this->db = $Connection->db();
18
        }
19
              
20
	public function addLastStatsUpdate($type,$stats_date) {
21
                $query = "DELETE FROM config WHERE name = :type;
22
            		INSERT INTO config (name,value) VALUES (:type,:stats_date);";
23
                $query_values = array('type' => $type,':stats_date' => $stats_date);
24
                 try {
25
                        $sth = $this->db->prepare($query);
26
                        $sth->execute($query_values);
27
                } catch(PDOException $e) {
28
                        return "error : ".$e->getMessage();
29
                }
30
        }
31
32
	public function getLastStatsUpdate($type = 'last_update_stats') {
33
                $query = "SELECT value FROM config WHERE name = :type";
34
                 try {
35
                        $sth = $this->db->prepare($query);
36
                        $sth->execute(array(':type' => $type));
37
                } catch(PDOException $e) {
38
                        echo "error : ".$e->getMessage();
39
                }
40
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
41
                return $all;
42
        }
43
	public function getAllAirlineNames($filter_name = '') {
44
		if ($filter_name == '') $filter_name = $this->filter_name;
45
                $query = "SELECT * FROM stats_airline WHERE filter_name = :filter_name ORDER BY airline_name ASC";
46
                 try {
47
                        $sth = $this->db->prepare($query);
48
                        $sth->execute(array(':filter_name' => $filter_name));
49
                } catch(PDOException $e) {
50
                        echo "error : ".$e->getMessage();
51
                }
52
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
53
                return $all;
54
        }
55
	public function getAllAircraftTypes($stats_airline = '',$filter_name = '') {
56
		if ($filter_name == '') $filter_name = $this->filter_name;
57
                $query = "SELECT * FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY aircraft_manufacturer ASC";
58
                 try {
59
                        $sth = $this->db->prepare($query);
60
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
61
                } catch(PDOException $e) {
62
                        echo "error : ".$e->getMessage();
63
                }
64
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
65
                return $all;
66
        }
67
	public function getAllAirportNames($stats_airline = '',$filter_name = '') {
68
		if ($filter_name == '') $filter_name = $this->filter_name;
69
                $query = "SELECT airport_icao, airport_name,airport_city,airport_country FROM stats_airport WHERE stats_airline = :stats_airline AND filter_name = :filter_name GROUP BY airport_icao,airport_name,airport_city,airport_country ORDER BY airport_city ASC";
70
                 try {
71
                        $sth = $this->db->prepare($query);
72
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
73
                } catch(PDOException $e) {
74
                        echo "error : ".$e->getMessage();
75
                }
76
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
77
                return $all;
78
        }
79
80
81
	public function countAllAircraftTypes($limit = true, $stats_airline = '', $filter_name = '') {
82
		global $globalStatsFilters;
83
		if ($filter_name == '') $filter_name = $this->filter_name;
84
		if ($limit) $query = "SELECT aircraft_icao, cnt AS aircraft_icao_count, aircraft_name FROM stats_aircraft WHERE aircraft_name <> '' AND aircraft_icao <> '' AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY aircraft_icao_count DESC LIMIT 10 OFFSET 0";
85
		else $query = "SELECT aircraft_icao, cnt AS aircraft_icao_count, aircraft_name FROM stats_aircraft WHERE aircraft_name <> '' AND aircraft_icao <> '' AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY aircraft_icao_count DESC";
86
                 try {
87
                        $sth = $this->db->prepare($query);
88
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
89
                } catch(PDOException $e) {
90
                        echo "error : ".$e->getMessage();
91
                }
92
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
93
                if (empty($all)) {
94
            	    $filters = array('airlines' => array($stats_airline));
95
            	    if ($filter_name != '') {
96
            		    $filters = array_merge($filters,$globalStatsFilters[$filter_name]);
97
            	    }
98
            	    $Spotter = new Spotter($this->db);
99
            	    $all = $Spotter->countAllAircraftTypes($limit,0,'',$filters);
100
                }
101
                return $all;
102
	}
103
	public function countAllAirlineCountries($limit = true,$filter_name = '') {
104
		global $globalStatsFilters;
105
		if ($filter_name == '') $filter_name = $this->filter_name;
106
		if ($limit) $query = "SELECT airlines.country AS airline_country, SUM(stats_airline.cnt) as airline_country_count FROM stats_airline,airlines WHERE stats_airline.airline_icao=airlines.icao AND filter_name = :filter_name GROUP BY airline_country ORDER BY airline_country_count DESC LIMIT 10 OFFSET 0";
107
		else $query = "SELECT airlines.country AS airline_country, SUM(stats_airline.cnt) as airline_country_count FROM stats_airline,airlines WHERE stats_airline.airline_icao=airlines.icao AND filter_name = :filter_name GROUP BY airline_country ORDER BY airline_country_count DESC";
108
                 try {
109
                        $sth = $this->db->prepare($query);
110
                        $sth->execute(array(':filter_name' => $filter_name));
111
                } catch(PDOException $e) {
112
                        echo "error : ".$e->getMessage();
113
                }
114
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
115
                if (empty($all)) {
116
            		$Spotter = new Spotter($this->db);
117
            		$filters = array();
118
            		if ($filter_name != '') {
119
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
120
			}
121
            		$all = $Spotter->countAllAirlineCountries($limit,$filters);
122
                }
123
                return $all;
124
	}
125
	public function countAllAircraftManufacturers($limit = true,$stats_airline = '', $filter_name = '') {
126
		global $globalStatsFilters;
127
		if ($filter_name == '') $filter_name = $this->filter_name;
128
		if ($limit) $query = "SELECT aircraft_manufacturer, SUM(stats_aircraft.cnt) as aircraft_manufacturer_count FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name GROUP BY aircraft_manufacturer ORDER BY aircraft_manufacturer_count DESC LIMIT 10 OFFSET 0";
129
		else $query = "SELECT aircraft_manufacturer, SUM(stats_aircraft.cnt) as aircraft_manufacturer_count FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name GROUP BY aircraft_manufacturer ORDER BY aircraft_manufacturer_count DESC";
130
                 try {
131
                        $sth = $this->db->prepare($query);
132
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
133
                } catch(PDOException $e) {
134
                        echo "error : ".$e->getMessage();
135
                }
136
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
137
                if (empty($all)) {
138
            		$filters = array('airlines' => array($stats_airline));
139
            		if ($filter_name != '') {
140
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
141
			}
142
            		$Spotter = new Spotter($this->db);
143
			$all = $Spotter->countAllAircraftManufacturers($filters);
144
                }
145
                return $all;
146
	}
147
148
	public function countAllArrivalCountries($limit = true, $stats_airline = '', $filter_name = '') {
149
		global $globalStatsFilters;
150
		if ($filter_name == '') $filter_name = $this->filter_name;
151
		if ($limit) $query = "SELECT airport_country AS airport_arrival_country, SUM(arrival) as airport_arrival_country_count FROM stats_airport WHERE stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name GROUP BY airport_arrival_country ORDER BY airport_arrival_country_count DESC LIMIT 10 OFFSET 0";
152
		else $query = "SELECT airport_country AS airport_arrival_country, SUM(arrival) as airport_arrival_country_count FROM stats_airport WHERE stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name GROUP BY airport_arrival_country ORDER BY airport_arrival_country_count DESC";
153
                 try {
154
                        $sth = $this->db->prepare($query);
155
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
156
                } catch(PDOException $e) {
157
                        echo "error : ".$e->getMessage();
158
                }
159
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
160
                if (empty($all)) {
161
			$filters = array('airlines' => array($stats_airline));
162
			if ($filter_name != '') {
163
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
164
			}
165
			$Spotter = new Spotter($this->db);
166
			$all = $Spotter->countAllArrivalCountries($limit,$filters);
167
                }
168
                return $all;
169
	}
170
	public function countAllDepartureCountries($limit = true, $stats_airline = '', $filter_name = '') {
171
		global $globalStatsFilters;
172
		if ($filter_name == '') $filter_name = $this->filter_name;
173
		if ($limit) $query = "SELECT airport_country AS airport_departure_country, SUM(departure) as airport_departure_country_count FROM stats_airport WHERE stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name GROUP BY airport_departure_country ORDER BY airport_departure_country_count DESC LIMIT 10 OFFSET 0";
174
		else $query = "SELECT airport_country AS airport_departure_country, SUM(departure) as airport_departure_country_count FROM stats_airport WHERE stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name GROUP BY airport_departure_country ORDER BY airport_departure_country_count DESC";
175
                 try {
176
                        $sth = $this->db->prepare($query);
177
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
178
                } catch(PDOException $e) {
179
                        echo "error : ".$e->getMessage();
180
                }
181
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
182
                if (empty($all)) {
183
			$filters = array('airlines' => array($stats_airline));
184
			if ($filter_name != '') {
185
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
186
			}
187
			$Spotter = new Spotter($this->db);
188
			$all = $Spotter->countAllDepartureCountries($filters);
189
                }
190
                return $all;
191
	}
192
193
	public function countAllAirlines($limit = true,$filter_name = '') {
194
		global $globalStatsFilters;
195
		if ($filter_name == '') $filter_name = $this->filter_name;
196
		if ($limit) $query = "SELECT DISTINCT stats_airline.airline_icao, stats_airline.cnt AS airline_count, stats_airline.airline_name, airlines.country as airline_country FROM stats_airline, airlines WHERE stats_airline.airline_name <> '' AND stats_airline.airline_icao <> '' AND airlines.icao = stats_airline.airline_icao AND filter_name = :filter_name ORDER BY airline_count DESC LIMIT 10 OFFSET 0";
197
		else $query = "SELECT DISTINCT stats_airline.airline_icao, stats_airline.cnt AS airline_count, stats_airline.airline_name, airlines.country as airline_country FROM stats_airline, airlines WHERE stats_airline.airline_name <> '' AND stats_airline.airline_icao <> '' AND airlines.icao = stats_airline.airline_icao AND filter_name = :filter_name ORDER BY airline_count DESC";
198
                 try {
199
                        $sth = $this->db->prepare($query);
200
                        $sth->execute(array(':filter_name' => $filter_name));
201
                } catch(PDOException $e) {
202
                        echo "error : ".$e->getMessage();
203
                }
204
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
205
                if (empty($all)) {
206
	                $Spotter = new Spotter($this->db);
207
            		$filters = array();
208
            		if ($filter_name != '') {
209
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
210
			}
211
212
    		        $all = $Spotter->countAllAirlines($limit,0,'',$filters);
213
                }
214
                return $all;
215
	}
216
	public function countAllAircraftRegistrations($limit = true,$stats_airline = '',$filter_name = '') {
217
		global $globalStatsFilters;
218
		if ($filter_name == '') $filter_name = $this->filter_name;
219
		if ($limit) $query = "SELECT s.aircraft_icao, s.cnt AS aircraft_registration_count, a.type AS aircraft_name, s.registration FROM stats_registration s, aircraft a WHERE s.registration <> '' AND a.icao = s.aircraft_icao AND s.stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY aircraft_registration_count DESC LIMIT 10 OFFSET 0";
220
		else $query = "SELECT s.aircraft_icao, s.cnt AS aircraft_registration_count, a.type AS aircraft_name FROM stats_registration s, aircraft a WHERE s.registration <> '' AND a.icao = s.aircraft_icao AND s.stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY aircraft_registration_count DESC";
221
                 try {
222
                        $sth = $this->db->prepare($query);
223
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
224
                } catch(PDOException $e) {
225
                        echo "error : ".$e->getMessage();
226
                }
227
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
228
                if (empty($all)) {
229
			$filters = array('airlines' => array($stats_airline));
230
			if ($filter_name != '') {
231
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
232
			}
233
	                $Spotter = new Spotter($this->db);
234
    		        $all = $Spotter->countAllAircraftRegistrations($limit,0,'',$filters);
235
                }
236
                return $all;
237
	}
238
	public function countAllCallsigns($limit = true,$stats_airline = '',$filter_name = '') {
239
		global $globalStatsFilters;
240
		if ($filter_name == '') $filter_name = $this->filter_name;
241
		if ($limit) $query = "SELECT s.callsign_icao, s.cnt AS callsign_icao_count, a.name AS airline_name, a.icao as airline_icao FROM stats_callsign s, airlines a WHERE s.callsign_icao <> '' AND a.icao = s.airline_icao AND s.airline_icao = :stats_airline AND filter_name = :filter_name ORDER BY callsign_icao_count DESC LIMIT 10 OFFSET 0";
242
		else $query = "SELECT s.callsign_icao, s.cnt AS callsign_icao_count, a.name AS airline_name, a.icao as airline_icao FROM stats_callsign s, airlines a WHERE s.callsign_icao <> '' AND a.icao = s.airline_icao AND s.airline_icao = :stats_airline AND filter_name = :filter_name ORDER BY callsign_icao_count DESC";
243
		 try {
244
			$sth = $this->db->prepare($query);
245
			$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
246
		} catch(PDOException $e) {
247
			echo "error : ".$e->getMessage();
248
		}
249
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
250
		if (empty($all)) {
251
			$filters = array('airlines' => array($stats_airline));
252
			if ($filter_name != '') {
253
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
254
			}
255
			$Spotter = new Spotter($this->db);
256
			$all = $Spotter->countAllCallsigns($limit,0,'',$filters);
257
		}
258
		return $all;
259
	}
260
	public function countAllFlightOverCountries($limit = true, $stats_airline = '',$filter_name = '') {
261
		$Connection = new Connection();
262
		if ($filter_name == '') $filter_name = $this->filter_name;
263
		if ($Connection->tableExists('countries')) {
264
			if ($limit) $query = "SELECT countries.iso3 as flight_country_iso3, countries.iso2 as flight_country_iso2, countries.name as flight_country, cnt as flight_count, lat as flight_country_latitude, lon as flight_country_longitude FROM stats_country, countries WHERE stats_country.iso2 = countries.iso2 AND stats_country.stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY flight_count DESC LIMIT 20 OFFSET 0";
265
			else $query = "SELECT countries.iso3 as flight_country_iso3, countries.iso2 as flight_country_iso2, countries.name as flight_country, cnt as flight_count, lat as flight_country_latitude, lon as flight_country_longitude FROM stats_country, countries WHERE stats_country.iso2 = countries.iso2 AND stats_country.stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY flight_count DESC";
266
			 try {
267
				$sth = $this->db->prepare($query);
268
				$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
269
			} catch(PDOException $e) {
270
				echo "error : ".$e->getMessage();
271
			}
272
			$all = $sth->fetchAll(PDO::FETCH_ASSOC);
273
                /*
274
                if (empty($all)) {
275
	                $Spotter = new Spotter($this->db);
276
    		        $all = $Spotter->countAllFlightOverCountries($limit);
277
                }
278
                */
279
			return $all;
280
		} else {
281
			return array();
282
		}
283
	}
284
	public function countAllPilots($limit = true,$stats_airline = '',$filter_name = '') {
285
		global $globalStatsFilters;
286
		if ($filter_name == '') $filter_name = $this->filter_name;
287
		if ($limit) $query = "SELECT pilot_id, cnt AS pilot_count, pilot_name FROM stats_pilot WHERE stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY pilot_count DESC LIMIT 10 OFFSET 0";
288
		else $query = "SELECT pilot_id, cnt AS pilot_count, pilot_name FROM stats_pilot WHERE stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY pilot_count DESC";
289
                 try {
290
                        $sth = $this->db->prepare($query);
291
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
292
                } catch(PDOException $e) {
293
                        echo "error : ".$e->getMessage();
294
                }
295
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
296
                if (empty($all)) {
297
			$filters = array('airlines' => array($stats_airline));
298
			if ($filter_name != '') {
299
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
300
			}
301
            		$Spotter = new Spotter($this->db);
302
            		$all = $Spotter->countAllPilots($limit,0,'',$filters);
303
                }
304
                return $all;
305
	}
306
	public function countAllOwners($limit = true,$stats_airline = '', $filter_name = '') {
307
		global $globalStatsFilters;
308
		if ($filter_name == '') $filter_name = $this->filter_name;
309
		if ($limit) $query = "SELECT owner_name, cnt AS owner_count FROM stats_owner WHERE stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY owner_count DESC LIMIT 10 OFFSET 0";
310
		else $query = "SELECT owner_name, cnt AS owner_count FROM stats_owner WHERE stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY owner_count DESC";
311
                 try {
312
                        $sth = $this->db->prepare($query);
313
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
314
                } catch(PDOException $e) {
315
                        echo "error : ".$e->getMessage();
316
                }
317
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
318
                if (empty($all)) {
319
			$filters = array('airlines' => array($stats_airline));
320
			if ($filter_name != '') {
321
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
322
			}
323
            		$Spotter = new Spotter($this->db);
324
            		$all = $Spotter->countAllOwners($limit,0,'',$filters);
325
                }
326
                return $all;
327
	}
328
	public function countAllDepartureAirports($limit = true,$stats_airline = '',$filter_name = '') {
329
		global $globalStatsFilters;
330
		if ($filter_name == '') $filter_name = $this->filter_name;
331
		if ($limit) $query = "SELECT DISTINCT airport_icao AS airport_departure_icao,airport_city AS airport_departure_city,airport_country AS airport_departure_country,departure AS airport_departure_icao_count FROM stats_airport WHERE stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY airport_departure_icao_count DESC LIMIT 10 OFFSET 0";
332
		else $query = "SELECT DISTINCT airport_icao AS airport_departure_icao,airport_city AS airport_departure_city,airport_country AS airport_departure_country,departure AS airport_departure_icao_count FROM stats_airport WHERE stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY airport_departure_icao_count DESC";
333
                 try {
334
                        $sth = $this->db->prepare($query);
335
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
336
                } catch(PDOException $e) {
337
                        echo "error : ".$e->getMessage();
338
                }
339
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
340
                if (empty($all)) {
341
			$filters = array('airlines' => array($stats_airline));
342
            		if ($filter_name != '') {
343
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
344
			}
345
            		$Spotter = new Spotter($this->db);
346
            		$pall = $Spotter->countAllDepartureAirports($limit,0,'',$filters);
347
        		$dall = $Spotter->countAllDetectedDepartureAirports($limit,0,'',$filters);
348
        		$all = array();
349
        		foreach ($pall as $value) {
350
        			$icao = $value['airport_departure_icao'];
351
        			$all[$icao] = $value;
352
        		}
353
        		
354
        		foreach ($dall as $value) {
355
        			$icao = $value['airport_departure_icao'];
356
        			if (isset($all[$icao])) {
357
        				$all[$icao]['airport_departure_icao_count'] = $all[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
358
        			} else $all[$icao] = $value;
359
        		}
360
        		$count = array();
361
        		foreach ($all as $key => $row) {
362
        			$count[$key] = $row['airport_departure_icao_count'];
363
        		}
364
        		array_multisort($count,SORT_DESC,$all);
365
                }
366
                return $all;
367
	}
368
	public function countAllArrivalAirports($limit = true,$stats_airline = '',$filter_name = '') {
369
		global $globalStatsFilters;
370
		if ($filter_name == '') $filter_name = $this->filter_name;
371
		if ($limit) $query = "SELECT DISTINCT airport_icao AS airport_arrival_icao,airport_city AS airport_arrival_city,airport_country AS airport_arrival_country,arrival AS airport_arrival_icao_count FROM stats_airport WHERE stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY airport_arrival_icao_count DESC LIMIT 10 OFFSET 0";
372
		else $query = "SELECT DISTINCT airport_icao AS airport_arrival_icao,airport_city AS airport_arrival_city,airport_country AS airport_arrival_country,arrival AS airport_arrival_icao_count FROM stats_airport WHERE stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY airport_arrival_icao_count DESC";
373
		try {
374
			$sth = $this->db->prepare($query);
375
			$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
376
		} catch(PDOException $e) {
377
			echo "error : ".$e->getMessage();
378
		}
379
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
380
		if (empty($all)) {
381
			$filters = array('airlines' => array($stats_airline));
382
			if ($filter_name != '') {
383
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
384
			}
385
			$Spotter = new Spotter($this->db);
386
			$pall = $Spotter->countAllArrivalAirports($limit,0,'',false,$filters);
387
			$dall = $Spotter->countAllDetectedArrivalAirports($limit,0,'',false,$filters);
388
        		$all = array();
389
        		foreach ($pall as $value) {
390
        			$icao = $value['airport_arrival_icao'];
391
        			$all[$icao] = $value;
392
        		}
393
        		
394
        		foreach ($dall as $value) {
395
        			$icao = $value['airport_arrival_icao'];
396
        			if (isset($all[$icao])) {
397
        				$all[$icao]['airport_arrival_icao_count'] = $all[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
398
        			} else $all[$icao] = $value;
399
        		}
400
        		$count = array();
401
        		foreach ($all as $key => $row) {
402
        			$count[$key] = $row['airport_arrival_icao_count'];
403
        		}
404
        		array_multisort($count,SORT_DESC,$all);
405
                }
406
 
407
                return $all;
408
	}
409
	public function countAllMonthsLastYear($limit = true,$stats_airline = '',$filter_name = '') {
410
		global $globalDBdriver, $globalStatsFilters;
411
		if ($filter_name == '') $filter_name = $this->filter_name;
412
		if ($globalDBdriver == 'mysql') {
413
			if ($limit) $query = "SELECT MONTH(stats_date) as month_name, YEAR(stats_date) as year_name, cnt as date_count FROM stats WHERE stats_type = 'flights_bymonth' AND stats_date >= DATE_SUB(UTC_TIMESTAMP(),INTERVAL 12 MONTH) AND stats_airline = :stats_airline AND filter_name = :filter_name";
414
			else $query = "SELECT MONTH(stats_date) as month_name, YEAR(stats_date) as year_name, cnt as date_count FROM stats WHERE stats_type = 'flights_bymonth' AND stats_airline = :stats_airline AND filter_name = :filter_name";
415
		} else {
416
			if ($limit) $query = "SELECT EXTRACT(MONTH FROM stats_date) as month_name, EXTRACT(YEAR FROM stats_date) as year_name, cnt as date_count FROM stats WHERE stats_type = 'flights_bymonth' AND stats_date >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '12 MONTHS' AND stats_airline = :stats_airline AND filter_name = :filter_name";
417
			else $query = "SELECT EXTRACT(MONTH FROM stats_date) as month_name, EXTRACT(YEAR FROM stats_date) as year_name, cnt as date_count FROM stats WHERE stats_type = 'flights_bymonth' AND stats_airline = :stats_airline AND filter_name = :filter_name";
418
		}
419
		$query_data = array(':stats_airline' => $stats_airline,':filter_name' => $filter_name);
420
                 try {
421
                        $sth = $this->db->prepare($query);
422
                        $sth->execute($query_data);
423
                } catch(PDOException $e) {
424
                        echo "error : ".$e->getMessage();
425
                }
426
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
427
                if (empty($all)) {
428
			$filters = array('airlines' => array($stats_airline));
429
			if ($filter_name != '') {
430
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
431
			}
432
            		$Spotter = new Spotter($this->db);
433
            		$all = $Spotter->countAllMonthsLastYear($filters);
434
                }
435
                
436
                return $all;
437
	}
438
	
439
	public function countAllDatesLastMonth($stats_airline = '',$filter_name = '') {
440
		global $globalStatsFilters;
441
		if ($filter_name == '') $filter_name = $this->filter_name;
442
		$query = "SELECT flight_date as date_name, cnt as date_count FROM stats_flight WHERE stats_type = 'month' AND stats_airline = :stats_airline AND filter_name = :filter_name";
443
		$query_data = array(':stats_airline' => $stats_airline,':filter_name' => $filter_name);
444
                 try {
445
                        $sth = $this->db->prepare($query);
446
                        $sth->execute($query_data);
447
                } catch(PDOException $e) {
448
                        echo "error : ".$e->getMessage();
449
                }
450
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
451
                if (empty($all)) {
452
			$filters = array('airlines' => array($stats_airline));
453
			if ($filter_name != '') {
454
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
455
			}
456
            		$Spotter = new Spotter($this->db);
457
            		$all = $Spotter->countAllDatesLastMonth($filters);
458
                }
459
                return $all;
460
	}
461
	public function countAllDatesLast7Days($stats_airline = '',$filter_name = '') {
462
		global $globalDBdriver, $globalStatsFilters;
463
		if ($filter_name == '') $filter_name = $this->filter_name;
464
		if ($globalDBdriver == 'mysql') {
465
			$query = "SELECT flight_date as date_name, cnt as date_count FROM stats_flight WHERE stats_type = 'month' AND flight_date >= DATE_SUB(UTC_TIMESTAMP(),INTERVAL 7 DAY) AND stats_airline = :stats_airline AND filter_name = :filter_name";
466
		} else {
467
			$query = "SELECT flight_date as date_name, cnt as date_count FROM stats_flight WHERE stats_type = 'month' AND flight_date::timestamp >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '7 DAYS' AND stats_airline = :stats_airline AND filter_name = :filter_name";
468
		}
469
		$query_data = array(':stats_airline' => $stats_airline,':filter_name' => $filter_name);
470
                 try {
471
                        $sth = $this->db->prepare($query);
472
                        $sth->execute($query_data);
473
                } catch(PDOException $e) {
474
                        echo "error : ".$e->getMessage();
475
                }
476
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
477
                if (empty($all)) {
478
			$filters = array('airlines' => array($stats_airline));
479
			if ($filter_name != '') {
480
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
481
			}
482
            		$Spotter = new Spotter($this->db);
483
            		$all = $Spotter->countAllDatesLast7Days($filters);
484
                }
485
                return $all;
486
	}
487
	public function countAllDates($stats_airline = '',$filter_name = '') {
488
		global $globalStatsFilters;
489
		if ($filter_name == '') $filter_name = $this->filter_name;
490
		$query = "SELECT flight_date as date_name, cnt as date_count FROM stats_flight WHERE stats_type = 'date' AND stats_airline = :stats_airline AND filter_name = :filter_name";
491
		$query_data = array(':stats_airline' => $stats_airline,':filter_name' => $filter_name);
492
                 try {
493
                        $sth = $this->db->prepare($query);
494
                        $sth->execute($query_data);
495
                } catch(PDOException $e) {
496
                        echo "error : ".$e->getMessage();
497
                }
498
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
499
                if (empty($all)) {
500
			$filters = array('airlines' => array($stats_airline));
501
			if ($filter_name != '') {
502
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
503
			}
504
            		$Spotter = new Spotter($this->db);
505
            		$all = $Spotter->countAllDates($filters);
506
                }
507
                return $all;
508
	}
509
	public function countAllDatesByAirlines($filter_name = '') {
510
		global $globalStatsFilters;
511
		if ($filter_name == '') $filter_name = $this->filter_name;
512
		$query = "SELECT stats_airline as airline_icao, flight_date as date_name, cnt as date_count FROM stats_flight WHERE stats_type = 'date' AND filter_name = :filter_name";
513
		$query_data = array('filter_name' => $filter_name);
514
                 try {
515
                        $sth = $this->db->prepare($query);
516
                        $sth->execute($query_data);
517
                } catch(PDOException $e) {
518
                        echo "error : ".$e->getMessage();
519
                }
520
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
521
                if (empty($all)) {
522
            		$filters = array();
523
            		if ($filter_name != '') {
524
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
525
			}
526
            		$Spotter = new Spotter($this->db);
527
            		$all = $Spotter->countAllDatesByAirlines($filters);
528
                }
529
                return $all;
530
	}
531
	public function countAllMonths($stats_airline = '',$filter_name = '') {
532
		global $globalStatsFilters;
533
		if ($filter_name == '') $filter_name = $this->filter_name;
534
	    	$query = "SELECT YEAR(stats_date) AS year_name,MONTH(stats_date) AS month_name, cnt as date_count FROM stats WHERE stats_type = 'flights_bymonth' AND stats_airline = :stats_airline AND filter_name = :filter_name";
535
                 try {
536
                        $sth = $this->db->prepare($query);
537
                        $sth->execute(array(':stats_airline' => $stats_airline, ':filter_name' => $filter_name));
538
                } catch(PDOException $e) {
539
                        echo "error : ".$e->getMessage();
540
                }
541
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
542
                if (empty($all)) {
543
			$filters = array('airlines' => array($stats_airline));
544
			if ($filter_name != '') {
545
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
546
			}
547
            		$Spotter = new Spotter($this->db);
548
            		$all = $Spotter->countAllMonths($filters);
549
                }
550
                return $all;
551
	}
552
	public function countAllMilitaryMonths($filter_name = '') {
553
		global $globalStatsFilters;
554
		if ($filter_name == '') $filter_name = $this->filter_name;
555
	    	$query = "SELECT YEAR(stats_date) AS year_name,MONTH(stats_date) AS month_name, cnt as date_count FROM stats WHERE stats_type = 'military_flights_bymonth' AND filter_name = :filter_name";
556
                 try {
557
                        $sth = $this->db->prepare($query);
558
                        $sth->execute(array(':filter_name' => $filter_name));
559
                } catch(PDOException $e) {
560
                        echo "error : ".$e->getMessage();
561
                }
562
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
563
                if (empty($all)) {
564
            		$filters = array();
565
            		if ($filter_name != '') {
566
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
567
			}
568
            		$Spotter = new Spotter($this->db);
569
            		$all = $Spotter->countAllMilitaryMonths($filters);
570
                }
571
                return $all;
572
	}
573
	public function countAllHours($orderby = 'hour',$limit = true,$stats_airline = '',$filter_name = '') {
574
		global $globalTimezone, $globalDBdriver, $globalStatsFilters;
575
		if ($filter_name == '') $filter_name = $this->filter_name;
576
		if ($limit) $query = "SELECT flight_date as hour_name, cnt as hour_count FROM stats_flight WHERE stats_type = 'hour' AND stats_airline = :stats_airline AND filter_name = :filter_name";
577
		else $query = "SELECT flight_date as hour_name, cnt as hour_count FROM stats_flight WHERE stats_type = 'hour' AND stats_airline = :stats_airline AND filter_name = :filter_name";
578
		if ($orderby == 'hour') {
579
			/*
580
			if ($globalDBdriver == 'mysql') {
581
				$query .= " ORDER BY flight_date ASC";
582
			} else {
583
			*/
584
			$query .= " ORDER BY CAST(flight_date AS integer) ASC";
585
		}
586
		if ($orderby == 'count') $query .= " ORDER BY hour_count DESC";
587
                 try {
588
                        $sth = $this->db->prepare($query);
589
                        $sth->execute(array(':stats_airline' => $stats_airline, ':filter_name' => $filter_name));
590
                } catch(PDOException $e) {
591
                        echo "error : ".$e->getMessage();
592
                }
593
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
594
                if (empty($all)) {
595
			$filters = array('airlines' => array($stats_airline));
596
			if ($filter_name != '') {
597
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
598
			}
599
            		$Spotter = new Spotter($this->db);
600
            		$all = $Spotter->countAllHours($orderby,$filters);
601
                }
602
                return $all;
603
	}
604
	
605
	public function countOverallFlights($stats_airline = '', $filter_name = '') {
606
		global $globalStatsFilters;
607
		if ($filter_name == '') $filter_name = $this->filter_name;
608
		$all = $this->getSumStats('flights_bymonth',date('Y'),$stats_airline,$filter_name);
609
		if (empty($all)) {
610
			$filters = array('airlines' => array($stats_airline));
611
			if ($filter_name != '') {
612
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
613
			}
614
			$Spotter = new Spotter($this->db);
615
			$all = $Spotter->countOverallFlights($filters);
616
		}
617
		return $all;
618
	}
619
	public function countOverallMilitaryFlights($filter_name = '') {
620
		global $globalStatsFilters;
621
		if ($filter_name == '') $filter_name = $this->filter_name;
622
		$all = $this->getSumStats('military_flights_bymonth',date('Y'),'',$filter_name);
623
		if (empty($all)) {
624
		        $filters = array();
625
            		if ($filter_name != '') {
626
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
627
			}
628
			$Spotter = new Spotter($this->db);
629
			$all = $Spotter->countOverallMilitaryFlights($filters);
630
		}
631
		return $all;
632
	}
633
	public function countOverallArrival($stats_airline = '',$filter_name = '') {
634
		global $globalStatsFilters;
635
		if ($filter_name == '') $filter_name = $this->filter_name;
636
		$all = $this->getSumStats('realarrivals_bymonth',date('Y'),$stats_airline,$filter_name);
637
		if (empty($all)) {
638
			$filters = array('airlines' => array($stats_airline));
639
			if ($filter_name != '') {
640
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
641
			}
642
			$Spotter = new Spotter($this->db);
643
			$all = $Spotter->countOverallArrival($filters);
644
		}
645
		return $all;
646
	}
647
	public function countOverallAircrafts($stats_airline = '',$filter_name = '') {
648
		global $globalStatsFilters;
649
		if ($filter_name == '') $filter_name = $this->filter_name;
650
		$all = $this->getSumStats('aircrafts_bymonth',date('Y'),$stats_airline,$filter_name);
651
		if (empty($all)) {
652
			$filters = array('airlines' => array($stats_airline));
653
			if ($filter_name != '') {
654
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
655
			}
656
			$Spotter = new Spotter($this->db);
657
			$all = $Spotter->countOverallAircrafts($filters);
658
		}
659
		return $all;
660
	}
661
	public function countOverallAirlines($filter_name = '') {
662
		global $globalStatsFilters;
663
		if ($filter_name == '') $filter_name = $this->filter_name;
664
		$query = "SELECT COUNT(*) AS nb_airline FROM stats_airline WHERE filter_name = :filter_name";
665
                 try {
666
                        $sth = $this->db->prepare($query);
667
                        $sth->execute(array(':filter_name' => $filter_name));
668
                } catch(PDOException $e) {
669
                        echo "error : ".$e->getMessage();
670
                }
671
                $result = $sth->fetchAll(PDO::FETCH_ASSOC);
672
                $all = $result[0]['nb_airline'];
673
		//$all = $this->getSumStats('airlines_bymonth',date('Y'));
674
		if (empty($all)) {
675
            		$filters = array();
676
            		if ($filter_name != '') {
677
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
678
			}
679
			$Spotter = new Spotter($this->db);
680
			$all = $Spotter->countOverallAirlines($filters);
681
		}
682
		return $all;
683
	}
684
	public function countOverallOwners($stats_airline = '',$filter_name = '') {
685
		global $globalStatsFilters;
686
		if ($filter_name == '') $filter_name = $this->filter_name;
687
		/*
688
		$query = "SELECT COUNT(*) AS nb_owner FROM stats_owner";
689
                 try {
690
                        $sth = $this->db->prepare($query);
691
                        $sth->execute();
692
                } catch(PDOException $e) {
693
                        echo "error : ".$e->getMessage();
694
                }
695
                $result = $sth->fetchAll(PDO::FETCH_ASSOC);
696
                $all = $result[0]['nb_owner'];
697
                */
698
		$all = $this->getSumStats('owners_bymonth',date('Y'),$stats_airline,$filter_name);
699
		if (empty($all)) {
700
			$filters = array('airlines' => array($stats_airline));
701
			if ($filter_name != '') {
702
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
703
			}
704
			$Spotter = new Spotter($this->db);
705
			$all = $Spotter->countOverallOwners($filters);
706
		}
707
		return $all;
708
	}
709
	public function countOverallPilots($stats_airline = '',$filter_name = '') {
710
		global $globalStatsFilters;
711
		if ($filter_name == '') $filter_name = $this->filter_name;
712
		$all = $this->getSumStats('pilots_bymonth',date('Y'),$stats_airline,$filter_name);
713
		if (empty($all)) {
714
			$filters = array('airlines' => array($stats_airline));
715
			if ($filter_name != '') {
716
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
717
			}
718
			$Spotter = new Spotter($this->db);
719
			$all = $Spotter->countOverallPilots($filters);
720
		}
721
		return $all;
722
	}
723
724
	public function getLast7DaysAirports($airport_icao = '', $stats_airline = '',$filter_name = '') {
725
		if ($filter_name == '') $filter_name = $this->filter_name;
726
		$query = "SELECT * FROM stats_airport WHERE stats_type = 'daily' AND airport_icao = :airport_icao AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY date";
727
		$query_values = array(':airport_icao' => $airport_icao,':stats_airline' => $stats_airline, ':filter_name' => $filter_name);
728
                 try {
729
                        $sth = $this->db->prepare($query);
730
                        $sth->execute($query_values);
731
                } catch(PDOException $e) {
732
                        echo "error : ".$e->getMessage();
733
                }
734
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
735
                return $all;
736
	}
737
	public function getStats($type,$stats_airline = '', $filter_name = '') {
738
		if ($filter_name == '') $filter_name = $this->filter_name;
739
                $query = "SELECT * FROM stats WHERE stats_type = :type AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY stats_date";
740
                $query_values = array(':type' => $type,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
741
                 try {
742
                        $sth = $this->db->prepare($query);
743
                        $sth->execute($query_values);
744
                } catch(PDOException $e) {
745
                        echo "error : ".$e->getMessage();
746
                }
747
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
748
                return $all;
749
        }
750
	public function getSumStats($type,$year,$stats_airline = '',$filter_name = '') {
751
		if ($filter_name == '') $filter_name = $this->filter_name;
752
    		global $globalArchiveMonths, $globalDBdriver;
753
    		if ($globalDBdriver == 'mysql') {
754
	                $query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND YEAR(stats_date) = :year AND stats_airline = :stats_airline AND filter_name = :filter_name";
755
	        } else {
756
            		$query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND EXTRACT(YEAR FROM stats_date) = :year AND stats_airline = :stats_airline AND filter_name = :filter_name";
757
                }
758
                $query_values = array(':type' => $type, ':year' => $year, ':stats_airline' => $stats_airline,':filter_name' => $filter_name);
759
                 try {
760
                        $sth = $this->db->prepare($query);
761
                        $sth->execute($query_values);
762
                } catch(PDOException $e) {
763
                        echo "error : ".$e->getMessage();
764
                }
765
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
766
                return $all[0]['total'];
767
        }
768
	public function getStatsTotal($type, $stats_airline = '', $filter_name = '') {
769
    		global $globalArchiveMonths, $globalDBdriver;
770
		if ($filter_name == '') $filter_name = $this->filter_name;
771
    		if ($globalDBdriver == 'mysql') {
772
			$query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND stats_date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL ".$globalArchiveMonths." MONTH) AND stats_airline = :stats_airline AND filter_name = :filter_name";
773
		} else {
774
			$query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND stats_date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalArchiveMonths." MONTHS' AND stats_airline = :stats_airline AND filter_name = :filter_name";
775
                }
776
                $query_values = array(':type' => $type, ':stats_airline' => $stats_airline, ':filter_name' => $filter_name);
777
                 try {
778
                        $sth = $this->db->prepare($query);
779
                        $sth->execute($query_values);
780
                } catch(PDOException $e) {
781
                        echo "error : ".$e->getMessage();
782
                }
783
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
784
                return $all[0]['total'];
785
        }
786
	public function getStatsAircraftTotal($stats_airline = '', $filter_name = '') {
787
    		global $globalArchiveMonths, $globalDBdriver;
788
		if ($filter_name == '') $filter_name = $this->filter_name;
789
    		if ($globalDBdriver == 'mysql') {
790
			$query = "SELECT SUM(cnt) as total FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name";
791
                } else {
792
			$query = "SELECT SUM(cnt) as total FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name";
793
                }
794
                 try {
795
                        $sth = $this->db->prepare($query);
796
                        $sth->execute(array(':stats_airline' => $stats_airline, ':filter_name' => $filter_name));
797
                } catch(PDOException $e) {
798
                        echo "error : ".$e->getMessage();
799
                }
800
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
801
                return $all[0]['total'];
802
        }
803
	public function getStatsAirlineTotal($filter_name = '') {
804
    		global $globalArchiveMonths, $globalDBdriver;
805
		if ($filter_name == '') $filter_name = $this->filter_name;
806
    		if ($globalDBdriver == 'mysql') {
807
			$query = "SELECT SUM(cnt) as total FROM stats_airline WHERE filter_name = :filter_name";
808
                } else {
809
			$query = "SELECT SUM(cnt) as total FROM stats_airline WHERE filter_name = :filter_name";
810
                }
811
                 try {
812
                        $sth = $this->db->prepare($query);
813
                        $sth->execute(array(':filter_name' => $filter_name));
814
                } catch(PDOException $e) {
815
                        echo "error : ".$e->getMessage();
816
                }
817
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
818
                return $all[0]['total'];
819
        }
820
	public function getStatsOwnerTotal($filter_name = '') {
821
    		global $globalArchiveMonths, $globalDBdriver;
822
		if ($filter_name == '') $filter_name = $this->filter_name;
823
    		if ($globalDBdriver == 'mysql') {
824
			$query = "SELECT SUM(cnt) as total FROM stats_owner WHERE filter_name = :filter_name";
825
		} else {
826
			$query = "SELECT SUM(cnt) as total FROM stats_owner WHERE filter_name = :filter_name";
827
                }
828
                 try {
829
                        $sth = $this->db->prepare($query);
830
                        $sth->execute(array(':filter_name' => $filter_name));
831
                } catch(PDOException $e) {
832
                        echo "error : ".$e->getMessage();
833
                }
834
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
835
                return $all[0]['total'];
836
        }
837
	public function getStatsPilotTotal($filter_name = '') {
838
    		global $globalArchiveMonths, $globalDBdriver;
839
		if ($filter_name == '') $filter_name = $this->filter_name;
840
    		if ($globalDBdriver == 'mysql') {
841
            		$query = "SELECT SUM(cnt) as total FROM stats_pilot WHERE filter_name = :filter_name";
842
            	} else {
843
            		$query = "SELECT SUM(cnt) as total FROM stats_pilot WHERE filter_name = :filter_name";
844
            	}
845
                 try {
846
                        $sth = $this->db->prepare($query);
847
                        $sth->execute(array(':filter_name' => $filter_name));
848
                } catch(PDOException $e) {
849
                        echo "error : ".$e->getMessage();
850
                }
851
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
852
                return $all[0]['total'];
853
        }
854
855
	public function addStat($type,$cnt,$stats_date,$stats_airline = '',$filter_name = '') {
856
		global $globalDBdriver;
857
		if ($filter_name == '') $filter_name = $this->filter_name;
858
		if ($globalDBdriver == 'mysql') {
859
			$query = "INSERT INTO stats (stats_type,cnt,stats_date,stats_airline,filter_name) VALUES (:type,:cnt,:stats_date,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE cnt = :cnt";
860
                } else {
861
			$query = "UPDATE stats SET cnt = :cnt WHERE stats_type = :type AND stats_date = :stats_date AND stats_airline = :stats_airline AND filter_name = :filter_name; INSERT INTO stats (stats_type,cnt,stats_date,stats_airline,filter_name) SELECT :type,:cnt,:stats_date,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats WHERE  stats_type = :type AND stats_date = :stats_date AND stats_airline = :stats_airline AND filter_name = :filter_name);"; 
862
		}
863
                $query_values = array(':type' => $type,':cnt' => $cnt,':stats_date' => $stats_date, ':stats_airline' => $stats_airline,':filter_name' => $filter_name);
864
                 try {
865
                        $sth = $this->db->prepare($query);
866
                        $sth->execute($query_values);
867
                } catch(PDOException $e) {
868
                        return "error : ".$e->getMessage();
869
                }
870
        }
871
	public function updateStat($type,$cnt,$stats_date,$stats_airline = '',$filter_name = '') {
872
		global $globalDBdriver;
873
		if ($filter_name == '') $filter_name = $this->filter_name;
874
		if ($globalDBdriver == 'mysql') {
875
			$query = "INSERT INTO stats (stats_type,cnt,stats_date,stats_airline,filter_name) VALUES (:type,:cnt,:stats_date,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt, stats_date = :date";
876
		} else {
877
            		//$query = "INSERT INTO stats (stats_type,cnt,stats_date) VALUES (:type,:cnt,:stats_date) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt, stats_date = :date";
878
			$query = "UPDATE stats SET cnt = cnt+:cnt WHERE stats_type = :type AND stats_date = :stats_date AND stats_airline = :stats_airline AND filter_name = :filter_name; INSERT INTO stats (stats_type,cnt,stats_date,stats_airline,filter_name) SELECT :type,:cnt,:stats_date,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats WHERE  stats_type = :type AND stats_date = :stats_date AND stats_airline = :stats_airline AND filter_name = :filter_name);"; 
879
                }
880
                $query_values = array(':type' => $type,':cnt' => $cnt,':stats_date' => $stats_date,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
881
                 try {
882
                        $sth = $this->db->prepare($query);
883
                        $sth->execute($query_values);
884
                } catch(PDOException $e) {
885
                        return "error : ".$e->getMessage();
886
                }
887
        }
888
	public function getStatsSource($date,$stats_type = '') {
889
		if ($stats_type == '') {
890
			$query = "SELECT * FROM stats_source WHERE stats_date = :date ORDER BY source_name";
891
			$query_values = array(':date' => $date);
892
		} else {
893
			$query = "SELECT * FROM stats_source WHERE stats_date = :date AND stats_type = :stats_type ORDER BY source_name";
894
			$query_values = array(':date' => $date,':stats_type' => $stats_type);
895
		}
896
                 try {
897
                        $sth = $this->db->prepare($query);
898
                        $sth->execute($query_values);
899
                } catch(PDOException $e) {
900
                        echo "error : ".$e->getMessage();
901
                }
902
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
903
                return $all;
904
        }
905
906
	public function addStatSource($data,$source_name,$stats_type,$date) {
907
		global $globalDBdriver;
908
		if ($globalDBdriver == 'mysql') {
909
			$query = "INSERT INTO stats_source (source_data,source_name,stats_type,stats_date) VALUES (:data,:source_name,:stats_type,:stats_date) ON DUPLICATE KEY UPDATE source_data = :data";
910
		} else {
911
			$query = "UPDATE stats_source SET source_data = :data WHERE stats_date = :stats_date AND source_name = :source_name AND stats_type = :stats_type; INSERT INTO stats_source (source_data,source_name,stats_type,stats_date) SELECT :data,:source_name,:stats_type,:stats_date WHERE NOT EXISTS (SELECT 1 FROM stats_source WHERE stats_date = :stats_date AND source_name = :source_name AND stats_type = :stats_type);"; 
912
                }
913
                $query_values = array(':data' => $data,':stats_date' => $date,':source_name' => $source_name,':stats_type' => $stats_type);
914
                 try {
915
                        $sth = $this->db->prepare($query);
916
                        $sth->execute($query_values);
917
                } catch(PDOException $e) {
918
                        return "error : ".$e->getMessage();
919
                }
920
        }
921
	public function addStatFlight($type,$date_name,$cnt,$stats_airline = '',$filter_name = '') {
922
                $query = "INSERT INTO stats_flight (stats_type,flight_date,cnt,stats_airline,filter_name) VALUES (:type,:flight_date,:cnt,:stats_airline,:filter_name)";
923
                $query_values = array(':type' => $type,':flight_date' => $date_name,':cnt' => $cnt, ':stats_airline' => $stats_airline,':filter_name' => $filter_name);
924
                 try {
925
                        $sth = $this->db->prepare($query);
926
                        $sth->execute($query_values);
927
                } catch(PDOException $e) {
928
                        return "error : ".$e->getMessage();
929
                }
930
        }
931
	public function addStatAircraftRegistration($registration,$cnt,$aircraft_icao = '',$airline_icao = '',$filter_name = '') {
932
		global $globalDBdriver;
933
		if ($globalDBdriver == 'mysql') {
934
			$query = "INSERT INTO stats_registration (aircraft_icao,registration,cnt,stats_airline,filter_name) VALUES (:aircraft_icao,:registration,:cnt,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt";
935
		} else {
936
			$query = "UPDATE stats_registration SET cnt = cnt+:cnt WHERE registration = :registration AND stats_airline = :stats_airline AND filter_name = :filter_name; INSERT INTO stats_registration (aircraft_icao,registration,cnt,stats_airline,filter_name) SELECT :aircraft_icao,:registration,:cnt,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_registration WHERE registration = :registration AND stats_airline = :stats_airline AND filter_name = :filter_name);"; 
937
		}
938
                $query_values = array(':aircraft_icao' => $aircraft_icao,':registration' => $registration,':cnt' => $cnt,':stats_airline' => $airline_icao, ':filter_name' => $filter_name);
939
                 try {
940
                        $sth = $this->db->prepare($query);
941
                        $sth->execute($query_values);
942
                } catch(PDOException $e) {
943
                        return "error : ".$e->getMessage();
944
                }
945
        }
946
	public function addStatCallsign($callsign_icao,$cnt,$airline_icao = '', $filter_name = '') {
947
		global $globalDBdriver;
948
		if ($globalDBdriver == 'mysql') {
949
			$query = "INSERT INTO stats_callsign (callsign_icao,airline_icao,cnt,filter_name) VALUES (:callsign_icao,:airline_icao,:cnt,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt";
950
		} else {
951
			$query = "UPDATE stats_callsign SET cnt = cnt+:cnt WHERE callsign_icao = :callsign_icao AND filter_name = :filter_name; INSERT INTO stats_callsign (callsign_icao,airline_icao,cnt,filter_name) SELECT :callsign_icao,:airline_icao,:cnt,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_callsign WHERE callsign_icao = :callsign_icao AND filter_name = :filter_name);"; 
952
		}
953
                $query_values = array(':callsign_icao' => $callsign_icao,':airline_icao' => $airline_icao,':cnt' => $cnt, ':filter_name' => $filter_name);
954
                 try {
955
                        $sth = $this->db->prepare($query);
956
                        $sth->execute($query_values);
957
                } catch(PDOException $e) {
958
                        return "error : ".$e->getMessage();
959
                }
960
        }
961
	public function addStatCountry($iso2,$iso3,$name,$cnt,$filter_name = '') {
962
		global $globalDBdriver;
963
		if ($globalDBdriver == 'mysql') {
964
			$query = "INSERT INTO stats_country (iso2,iso3,name,cnt,filter_name) VALUES (:iso2,:iso3,:name,:cnt,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt";
965
		} else {
966
			$query = "UPDATE stats_country SET cnt = cnt+:cnt WHERE iso2 = :iso2 AND filter_name = :filter_name; INSERT INTO stats_country (iso2,iso3,name,cnt,filter_name) SELECT :iso2,:iso3,:name,:cnt,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_country WHERE iso2 = :iso2 AND filter_name = :filter_name);"; 
967
		}
968
                $query_values = array(':iso2' => $iso2,':iso3' => $iso3,':name' => $name,':cnt' => $cnt,':filter_name' => $filter_name);
969
                 try {
970
                        $sth = $this->db->prepare($query);
971
                        $sth->execute($query_values);
972
                } catch(PDOException $e) {
973
                        return "error : ".$e->getMessage();
974
                }
975
        }
976
	public function addStatAircraft($aircraft_icao,$cnt,$aircraft_name = '',$aircraft_manufacturer = '', $airline_icao = '', $filter_name = '') {
977
		global $globalDBdriver;
978
		if ($globalDBdriver == 'mysql') {
979
			$query = "INSERT INTO stats_aircraft (aircraft_icao,aircraft_name,aircraft_manufacturer,cnt,stats_airline, filter_name) VALUES (:aircraft_icao,:aircraft_name,:aircraft_manufacturer,:cnt,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt, aircraft_name = :aircraft_name, aircraft_manufacturer = :aircraft_manufacturer, stats_airline = :stats_airline";
980
		} else {
981
			$query = "UPDATE stats_aircraft SET cnt = cnt+:cnt, aircraft_name = :aircraft_name, aircraft_manufacturer = :aircraft_manufacturer, filter_name = :filter_name WHERE aircraft_icao = :aircraft_icao AND stats_airline = :stats_airline AND filter_name = :filter_name; INSERT INTO stats_aircraft (aircraft_icao,aircraft_name,aircraft_manufacturer,cnt,stats_airline,filter_name) SELECT :aircraft_icao,:aircraft_name,:aircraft_manufacturer,:cnt,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_aircraft WHERE aircraft_icao = :aircraft_icao AND stats_airline = :stats_airline AND filter_name = :filter_name);"; 
982
		}
983
                $query_values = array(':aircraft_icao' => $aircraft_icao,':aircraft_name' => $aircraft_name,':cnt' => $cnt, ':aircraft_manufacturer' => $aircraft_manufacturer,':stats_airline' => $airline_icao, ':filter_name' => $filter_name);
984
                 try {
985
                        $sth = $this->db->prepare($query);
986
                        $sth->execute($query_values);
987
                } catch(PDOException $e) {
988
                        return "error : ".$e->getMessage();
989
                }
990
        }
991
	public function addStatAirline($airline_icao,$cnt,$airline_name = '',$filter_name = '') {
992
		global $globalDBdriver;
993
		if ($globalDBdriver == 'mysql') {
994
			$query = "INSERT INTO stats_airline (airline_icao,airline_name,cnt,filter_name) VALUES (:airline_icao,:airline_name,:cnt,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt,airline_name = :airline_name";
995
		} else {
996
			$query = "UPDATE stats_airline SET cnt = cnt+:cnt WHERE airline_icao = :airline_icao AND filter_name = :filter_name; INSERT INTO stats_airline (airline_icao,airline_name,cnt,filter_name) SELECT :airline_icao,:airline_name,:cnt,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_airline WHERE airline_icao = :airline_icao AND filter_name = :filter_name);"; 
997
		}
998
                $query_values = array(':airline_icao' => $airline_icao,':airline_name' => $airline_name,':cnt' => $cnt,':filter_name' => $filter_name);
999
                 try {
1000
                        $sth = $this->db->prepare($query);
1001
                        $sth->execute($query_values);
1002
                } catch(PDOException $e) {
1003
                        return "error : ".$e->getMessage();
1004
                }
1005
        }
1006
	public function addStatOwner($owner_name,$cnt,$stats_airline = '', $filter_name = '') {
1007
		global $globalDBdriver;
1008
		if ($globalDBdriver == 'mysql') {
1009
			$query = "INSERT INTO stats_owner (owner_name,cnt,stats_airline,filter_name) VALUES (:owner_name,:cnt,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt";
1010
		} else {
1011
			$query = "UPDATE stats_owner SET cnt = cnt+:cnt WHERE owner_name = :owner_name AND stats_airline = :stats_airline AND filter_name = :filter_name; INSERT INTO stats_owner (owner_name,cnt,stats_airline,filter_name) SELECT :owner_name,:cnt,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_owner WHERE owner_name = :owner_name AND stats_airline = :stats_airline AND filter_name = :filter_name);"; 
1012
		}
1013
                $query_values = array(':owner_name' => $owner_name,':cnt' => $cnt,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
1014
                 try {
1015
                        $sth = $this->db->prepare($query);
1016
                        $sth->execute($query_values);
1017
                } catch(PDOException $e) {
1018
                        return "error : ".$e->getMessage();
1019
                }
1020
        }
1021
	public function addStatPilot($pilot_id,$cnt,$pilot_name,$stats_airline = '',$filter_name = '') {
1022
		global $globalDBdriver;
1023
		if ($globalDBdriver == 'mysql') {
1024
			$query = "INSERT INTO stats_pilot (pilot_id,cnt,pilot_name,stats_airline,filter_name) VALUES (:pilot_id,:cnt,:pilot_name,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt, pilot_name = :pilot_name";
1025
		} else {
1026
			$query = "UPDATE stats_pilot SET cnt = cnt+:cnt, pilot_name = :pilot_name WHERE pilot_id = :pilot_id AND stats_airline = :stats_airline AND filter_name = :filter_name; INSERT INTO stats_pilot (pilot_id,cnt,pilot_name,stats_airline,filter_name) SELECT :pilot_id,:cnt,:pilot_name,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_pilot WHERE pilot_id = :pilot_id AND stats_airline = :stats_airline AND filter_name = :filter_name);"; 
1027
		}
1028
                $query_values = array(':pilot_id' => $pilot_id,':cnt' => $cnt,':pilot_name' => $pilot_name,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
1029
                 try {
1030
                        $sth = $this->db->prepare($query);
1031
                        $sth->execute($query_values);
1032
                } catch(PDOException $e) {
1033
                        return "error : ".$e->getMessage();
1034
                }
1035
        }
1036
	public function addStatDepartureAirports($airport_icao,$airport_name,$airport_city,$airport_country,$departure,$airline_icao = '',$filter_name = '') {
1037
		global $globalDBdriver;
1038
		if ($globalDBdriver == 'mysql') {
1039
			$query = "INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,departure,stats_type,date,stats_airline,filter_name) VALUES (:airport_icao,:airport_name,:airport_city,:airport_country,:departure,'yearly',:date,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE departure = departure+:departure";
1040
		} else {
1041
			$query = "UPDATE stats_airport SET departure = departure+:departure WHERE airport_icao = :airport_icao AND stats_type = 'yearly' AND stats_airline = :stats_airline AND date = :date AND filter_name = :filter_name; INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,departure,stats_type,date,stats_airline,filter_name) SELECT :airport_icao,:airport_name,:airport_city,:airport_country,:departure,'yearly',:date,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_airport WHERE airport_icao = :airport_icao AND stats_type = 'yearly' AND stats_airline = :stats_airline AND date = :date AND filter_name = :filter_name);"; 
1042
		}
1043
                $query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':departure' => $departure,':date' => date('Y').'-01-01 00:00:00', ':stats_airline' => $airline_icao,':filter_name' => $filter_name);
1044
                 try {
1045
                        $sth = $this->db->prepare($query);
1046
                        $sth->execute($query_values);
1047
                } catch(PDOException $e) {
1048
                        return "error : ".$e->getMessage();
1049
                }
1050
        }
1051
	public function addStatDepartureAirportsDaily($date,$airport_icao,$airport_name,$airport_city,$airport_country,$departure,$airline_icao = '',$filter_name = '') {
1052
		global $globalDBdriver;
1053
		if ($globalDBdriver == 'mysql') {
1054
			$query = "INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,departure,stats_type,date,stats_airline,filter_name) VALUES (:airport_icao,:airport_name,:airport_city,:airport_country,:departure,'daily',:date,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE departure = :departure";
1055
		} else {
1056
			$query = "UPDATE stats_airport SET departure = departure+:departure WHERE airport_icao = :airport_icao AND stats_type = 'daily' AND date = :date AND stats_airline = :stats_airline AND filter_name = :filter_name; INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,departure,stats_type,date,stats_airline,filter_name) SELECT :airport_icao,:airport_name,:airport_city,:airport_country,:departure,'daily',:date,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_airport WHERE airport_icao = :airport_icao AND stats_type = 'daily' AND date = :date AND stats_airline = :stats_airline AND filter_name = :filter_name);"; 
1057
		}
1058
                $query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':departure' => $departure,':date' => $date,':stats_airline' => $airline_icao,':filter_name' => $filter_name);
1059
                 try {
1060
                        $sth = $this->db->prepare($query);
1061
                        $sth->execute($query_values);
1062
                } catch(PDOException $e) {
1063
                        return "error : ".$e->getMessage();
1064
                }
1065
        }
1066
	public function addStatArrivalAirports($airport_icao,$airport_name,$airport_city,$airport_country,$arrival,$airline_icao = '',$filter_name = '') {
1067
		global $globalDBdriver;
1068
		if ($globalDBdriver == 'mysql') {
1069
			$query = "INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,arrival,stats_type,date,stats_airline,filter_name) VALUES (:airport_icao,:airport_name,:airport_city,:airport_country,:arrival,'yearly',:date,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE arrival = arrival+:arrival";
1070
		} else {
1071
			$query = "UPDATE stats_airport SET arrival = arrival+:arrival WHERE airport_icao = :airport_icao AND stats_type = 'yearly' AND stats_airline = :stats_airline AND date = :date AND filter_name = :filter_name; INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,arrival,stats_type,date,stats_airline,filter_name) SELECT :airport_icao,:airport_name,:airport_city,:airport_country,:arrival,'yearly',:date,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_airport WHERE airport_icao = :airport_icao AND stats_type = 'yearly' AND stats_airline = :stats_airline AND date = :date AND filter_name = :filter_name);"; 
1072
		}
1073
                $query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':arrival' => $arrival,':date' => date('Y').'-01-01 00:00:00',':stats_airline' => $airline_icao,':filter_name' => $filter_name);
1074
                 try {
1075
                        $sth = $this->db->prepare($query);
1076
                        $sth->execute($query_values);
1077
                } catch(PDOException $e) {
1078
                        return "error : ".$e->getMessage();
1079
                }
1080
        }
1081
	public function addStatArrivalAirportsDaily($date,$airport_icao,$airport_name,$airport_city,$airport_country,$arrival,$airline_icao = '',$filter_name = '') {
1082
		global $globalDBdriver;
1083
		if ($globalDBdriver == 'mysql') {
1084
			$query = "INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,arrival,stats_type,date,stats_airline,filter_name) VALUES (:airport_icao,:airport_name,:airport_city,:airport_country,:arrival,'daily',:date,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE arrival = :arrival";
1085
		} else {
1086
			$query = "UPDATE stats_airport SET arrival = arrival+:arrival WHERE airport_icao = :airport_icao AND stats_type = 'daily' AND date = :date AND stats_airline = :stats_airline AND filter_name = :filter_name; INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,arrival,stats_type,date,stats_airline,filter_name) SELECT :airport_icao,:airport_name,:airport_city,:airport_country,:arrival,'daily',:date,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_airport WHERE airport_icao = :airport_icao AND stats_type = 'daily' AND date = :date AND stats_airline = :stats_airline AND filter_name = :filter_name);"; 
1087
		}
1088
                $query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':arrival' => $arrival, ':date' => $date,':stats_airline' => $airline_icao,':filter_name' => $filter_name);
1089
                 try {
1090
                        $sth = $this->db->prepare($query);
1091
                        $sth->execute($query_values);
1092
                } catch(PDOException $e) {
1093
                        return "error : ".$e->getMessage();
1094
                }
1095
        }
1096
1097
	public function deleteStat($id) {
1098
                $query = "DELETE FROM stats WHERE stats_id = :id";
1099
                $query_values = array(':id' => $id);
1100
                 try {
1101
                        $sth = $this->db->prepare($query);
1102
                        $sth->execute($query_values);
1103
                } catch(PDOException $e) {
1104
                        return "error : ".$e->getMessage();
1105
                }
1106
        }
1107
	public function deleteStatFlight($type) {
1108
                $query = "DELETE FROM stats_flight WHERE stats_type = :type";
1109
                $query_values = array(':type' => $type);
1110
                 try {
1111
                        $sth = $this->db->prepare($query);
1112
                        $sth->execute($query_values);
1113
                } catch(PDOException $e) {
1114
                        return "error : ".$e->getMessage();
1115
                }
1116
        }
1117
	public function deleteStatAirport($type) {
1118
                $query = "DELETE FROM stats_airport WHERE stats_type = :type";
1119
                $query_values = array(':type' => $type);
1120
                 try {
1121
                        $sth = $this->db->prepare($query);
1122
                        $sth->execute($query_values);
1123
                } catch(PDOException $e) {
1124
                        return "error : ".$e->getMessage();
1125
                }
1126
        }
1127
        
1128
        public function addOldStats() {
1129
    		global $globalArchiveMonths, $globalArchive, $globalArchiveYear, $globalDBdriver, $globalStatsFilters;
1130
    		$Common = new Common();
1131
    		$Connection = new Connection();
1132
    		date_default_timezone_set('UTC');
1133
    		$last_update = $this->getLastStatsUpdate('last_update_stats');
1134
		//print_r($last_update);
1135
		/*
1136
		$flightsbymonth = $this->getStats('flights_by_month');
1137
    		if (empty($last_update) && empty($flightsbymonth)) {
1138
			// Initial update
1139
			$Spotter = new Spotter($this->db);
1140
			$alldata = $Spotter->countAllMonths();
1141
			$lastyear = false;
1142
			foreach ($alldata as $number) {
1143
				if ($number['year_name'] != date('Y')) $lastyear = true;
1144
				$this->addStat('flights_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1145
			}
1146
			$alldata = $Spotter->countAllMilitaryMonths();
1147
			//$lastyear = false;
1148
			foreach ($alldata as $number) {
1149
				if ($number['year_name'] != date('Y')) $lastyear = true;
1150
				$this->addStat('military_flights_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1151
			}
1152
			$alldata = $Spotter->countAllMonthsOwners();
1153
			foreach ($alldata as $number) {
1154
				$this->addStat('owners_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1155
			}
1156
			$alldata = $Spotter->countAllMonthsPilots();
1157
			foreach ($alldata as $number) {
1158
				$this->addStat('pilots_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1159
			}
1160
			$alldata = $Spotter->countAllMonthsAirlines();
1161
			foreach ($alldata as $number) {
1162
				$this->addStat('airlines_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1163
			}
1164
			$alldata = $Spotter->countAllMonthsAircrafts();
1165
			foreach ($alldata as $number) {
1166
				$this->addStat('aircrafts_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1167
			}
1168
			$alldata = $Spotter->countAllMonthsRealArrivals();
1169
			foreach ($alldata as $number) {
1170
				$this->addStat('realarrivals_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1171
			}
1172
			$this->deleteStatFlight('month');
1173
			$alldata = $Spotter->countAllDatesLastMonth();
1174
			foreach ($alldata as $number) {
1175
				$this->addStatFlight('month',$number['date_name'],$number['date_count']);
1176
			}
1177
			$previousdata = $this->countAllDates();
1178
			$this->deleteStatFlight('date');
1179
			$alldata = $Common->array_merge_noappend($previousdata,$Spotter->countAllDates());
1180
			$values = array();
1181
			foreach ($alldata as $cnt) {
1182
				$values[] = $cnt['date_count'];
1183
			}
1184
			array_multisort($values,SORT_DESC,$alldata);
1185
			array_splice($alldata,11);
1186
			foreach ($alldata as $number) {
1187
				$this->addStatFlight('date',$number['date_name'],$number['date_count']);
1188
			}
1189
			$this->deleteStatFlight('hour');
1190
			$alldata = $Spotter->countAllHours('hour');
1191
			foreach ($alldata as $number) {
1192
				$this->addStatFlight('hour',$number['hour_name'],$number['hour_count']);
1193
			}
1194
			if ($lastyear) {
1195
				$monthsSinceLastYear = date('n');
1196
				$alldata = $Spotter->countAllAircraftTypes(false,$monthsSinceLastYear);
1197
				foreach ($alldata as $number) {
1198
					$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer']);
1199
				}
1200
				$alldata = $Spotter->countAllAirlines(false,$monthsSinceLastYear);
1201
				foreach ($alldata as $number) {
1202
					$this->addStatAirline($number['airline_icao'],$number['airline_count'],$number['airline_name']);
1203
				}
1204
				if ($Connection->tableExists('countries')) {
1205
					$alldata = $Spotter->countAllFlightOverCountries(false,$monthsSinceLastYear);
1206
					foreach ($alldata as $number) {
1207
						$this->addStatCountry($number['flight_country_iso2'],$number['flight_country_iso3'],$number['flight_country'],$number['flight_count']);
1208
					}
1209
				}
1210
				$alldata = $Spotter->countAllOwners(false,$monthsSinceLastYear);
1211
				foreach ($alldata as $number) {
1212
					$this->addStatOwner($number['owner_name'],$number['owner_count']);
1213
				}
1214
				$alldata = $Spotter->countAllPilots(false,$monthsSinceLastYear);
1215
				foreach ($alldata as $number) {
1216
					$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name']);
1217
				}
1218
				$previous_year = date('Y');
1219
				$previous_year--;
1220
				$this->addStat('aircrafts_byyear',$this->getStatsAircraftTotal(),$previous_year.'-01-01 00:00:00');
1221
				$this->addStat('airlines_byyear',$this->getStatsAirlineTotal(),$previous_year.'-01-01 00:00:00');
1222
				$this->addStat('owner_byyear',$this->getStatsOwnerTotal(),$previous_year.'-01-01 00:00:00');
1223
				$this->addStat('pilot_byyear',$this->getStatsPilotTotal(),$previous_year.'-01-01 00:00:00');
1224
				
1225
				if (isset($globalArchiveYear) && $globalArchiveYear) {
1226
					if ($globalArchive) {
1227
						$query = "INSERT INTO spotter_archive_output SELECT * FROM spotter_output WHERE spotter_output.date < '".date('Y')."-01-01 00:00:00'";
1228
						//echo $query;
1229
						try {
1230
							$sth = $this->db->prepare($query);
1231
							$sth->execute();
1232
						} catch(PDOException $e) {
1233
							return "error : ".$e->getMessage().' - query : '.$query."\n";
1234
						}
1235
					}
1236
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < '".date('Y')."-01-01 00:00:00'";
1237
					try {
1238
						$sth = $this->db->prepare($query);
1239
						$sth->execute();
1240
					} catch(PDOException $e) {
1241
						return "error : ".$e->getMessage().' - query : '.$query."\n";
1242
					}
1243
				}
1244
			}
1245
			if (!isset($globalArchiveMonths) || $globalArchiveMonths == '') $globalArchiveMonths = 2;
1246
			if ($globalArchiveMonths > 0) {
1247
				$alldata = $Spotter->countAllAircraftTypes(false,$globalArchiveMonths);
1248
				foreach ($alldata as $number) {
1249
					$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer']);
1250
				}
1251
				$alldata = $Spotter->countAllAirlines(false,$globalArchiveMonths);
1252
				foreach ($alldata as $number) {
1253
					$this->addStatAirline($number['airline_icao'],$number['airline_count'],$number['airline_name']);
1254
				}
1255
				$alldata = $Spotter->countAllAircraftRegistrations(false,$globalArchiveMonths);
1256
				foreach ($alldata as $number) {
1257
					$this->addStatAircraftRegistration($number['registration'],$number['aircraft_registration_count'],$number['aircraft_icao']);
1258
				}
1259
				$alldata = $Spotter->countAllCallsigns(false,$globalArchiveMonths);
1260
				foreach ($alldata as $number) {
1261
					$this->addStatCallsign($number['callsign_icao'],$number['callsign_icao_count'],$number['airline_icao']);
1262
				}
1263
				$alldata = $Spotter->countAllOwners(false,$globalArchiveMonths);
1264
				foreach ($alldata as $number) {
1265
					$this->addStatOwner($number['owner_name'],$number['owner_count']);
1266
				}
1267
				if ($Connection->tableExists('countries')) {
1268
					$alldata = $Spotter->countAllFlightOverCountries(false,$globalArchiveMonths);
1269
					foreach ($alldata as $number) {
1270
						$this->addStatCountry($number['flight_country_iso2'],$number['flight_country_iso3'],$number['flight_country'],$number['flight_count']);
1271
					}
1272
				}
1273
				$alldata = $Spotter->countAllPilots(false,$globalArchiveMonths);
1274
				foreach ($alldata as $number) {
1275
					$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name']);
1276
				}
1277
				$pall = $Spotter->countAllDepartureAirports(false,$globalArchiveMonths);
1278
        			$dall = $Spotter->countAllDetectedDepartureAirports(false,$globalArchiveMonths);
1279
	        		$alldata = array();
1280
    				foreach ($pall as $value) {
1281
	        			$icao = $value['airport_departure_icao'];
1282
    					$alldata[$icao] = $value;
1283
	        		}
1284
	        		foreach ($dall as $value) {
1285
    					$icao = $value['airport_departure_icao'];
1286
        				if (isset($alldata[$icao])) {                                                           
1287
        					$alldata[$icao]['airport_departure_icao_count'] = $alldata[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
1288
	        			} else $alldata[$icao] = $value;
1289
    				}
1290
        			$count = array();
1291
        			foreach ($alldata as $key => $row) {
1292
        				$count[$key] = $row['airport_departure_icao_count'];
1293
	        		}
1294
    				array_multisort($count,SORT_DESC,$alldata);
1295
1296
				//print_r($alldate);
1297
				foreach ($alldata as $number) {
1298
					$this->addStatDepartureAirports($number['airport_departure_icao'],$number['airport_departure_name'],$number['airport_departure_city'],$number['airport_departure_country'],$number['airport_departure_icao_count']);
1299
				}
1300
				$pdata = $Spotter->countAllArrivalAirports(false,$globalArchiveMonths);
1301
        			$dall = $Spotter->countAllDetectedArrivalAirports(false,$globalArchiveMonths);
1302
	        		$alldata = array();
1303
    				foreach ($pdata as $value) {
1304
	        			$icao = $value['airport_arrival_icao'];
1305
    					$alldata[$icao] = $value;
1306
	        		}
1307
	        		foreach ($dall as $value) {
1308
    					$icao = $value['airport_arrival_icao'];
1309
        				if (isset($alldata[$icao])) {                                                           
1310
        					$alldata[$icao]['airport_arrival_icao_count'] = $alldata[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
1311
	        			} else $alldata[$icao] = $value;
1312
    				}
1313
        			$count = array();
1314
        			foreach ($alldata as $key => $row) {
1315
        				$count[$key] = $row['airport_arrival_icao_count'];
1316
	        		}
1317
    				array_multisort($count,SORT_DESC,$alldata);
1318
				foreach ($alldata as $number) {
1319
					$this->addStatArrivalAirports($number['airport_arrival_icao'],$number['airport_arrival_name'],$number['airport_arrival_city'],$number['airport_arrival_country'],$number['airport_arrival_icao_count']);
1320
				}
1321
				$this->addStat('aircrafts_byyear',$this->getStatsAircraftTotal(),date('Y').'-01-01 00:00:00');
1322
				$this->addStat('airlines_byyear',$this->getStatsAirlineTotal(),date('Y').'-01-01 00:00:00');
1323
				$this->addStat('owner_byyear',$this->getStatsOwnerTotal(),date('Y').'-01-01 00:00:00');
1324
				$this->addStat('pilot_byyear',$this->getStatsPilotTotal(),date('Y').'-01-01 00:00:00');
1325
			
1326
				if ($globalArchive) {
1327
					if ($globalDBdriver == 'mysql') {
1328
						$query = "INSERT INTO spotter_archive_output SELECT * FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
1329
					} else {
1330
						$query = "INSERT INTO spotter_archive_output SELECT * FROM spotter_output WHERE spotter_output.date < CAST(to_char(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalArchiveMonths." MONTHS', 'YYYY/mm/01') AS TIMESTAMP)";
1331
					}
1332
					try {
1333
						$sth = $this->db->prepare($query);
1334
						$sth->execute();
1335
					} catch(PDOException $e) {
1336
						return "error : ".$e->getMessage().' - query : '.$query."\n";
1337
					}
1338
				}
1339
	
1340
				//$query = 'DELETE FROM spotter_output WHERE spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$globalArchiveMonths.' MONTH)';
1341
				if ($globalDBdriver == 'mysql') {
1342
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
1343
				} else {
1344
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < CAST(to_char(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalArchiveMonths." MONTHS, 'YYYY/mm/01') AS TIMESTAMP)";
1345
				}
1346
				try {
1347
					$sth = $this->db->prepare($query);
1348
					$sth->execute();
1349
				} catch(PDOException $e) {
1350
					return "error : ".$e->getMessage().' - query : '.$query."\n";
1351
				}
1352
			}
1353
			$this->addLastStatsUpdate('last_update_stats',date('Y-m-d G:i:s'));
1354
		} else {
1355
		*/
1356
			echo 'Update stats !'."\n";
1357
			if (isset($last_update[0]['value'])) {
1358
				$last_update_day = $last_update[0]['value'];
1359
			} else $last_update_day = '2012-12-12 12:12:12';
1360
			$Spotter = new Spotter($this->db);
1361
			$alldata = $Spotter->countAllAircraftTypes(false,0,$last_update_day);
1362
			foreach ($alldata as $number) {
1363
				$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer']);
1364
			}
1365
			$alldata = $Spotter->countAllAirlines(false,0,$last_update_day);
1366
			foreach ($alldata as $number) {
1367
				$this->addStatAirline($number['airline_icao'],$number['airline_count'],$number['airline_name']);
1368
			}
1369
			$alldata = $Spotter->countAllAircraftRegistrations(false,0,$last_update_day);
1370
			foreach ($alldata as $number) {
1371
				$this->addStatAircraftRegistration($number['registration'],$number['aircraft_registration_count'],$number['aircraft_icao']);
1372
			}
1373
			$alldata = $Spotter->countAllCallsigns(false,0,$last_update_day);
1374
			foreach ($alldata as $number) {
1375
				$this->addStatCallsign($number['callsign_icao'],$number['callsign_icao_count'],$number['airline_icao']);
1376
			}
1377
			$alldata = $Spotter->countAllOwners(false,0,$last_update_day);
1378
			foreach ($alldata as $number) {
1379
				$this->addStatOwner($number['owner_name'],$number['owner_count']);
1380
			}
1381
			$alldata = $Spotter->countAllPilots(false,0,$last_update_day);
1382
			foreach ($alldata as $number) {
1383
				$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name']);
1384
			}
1385
			
1386
			$pall = $Spotter->countAllDepartureAirports(false,0,$last_update_day);
1387
        		$dall = $Spotter->countAllDetectedDepartureAirports(false,0,$last_update_day);
1388
	        	$alldata = array();
1389
	        	
1390
    			foreach ($pall as $value) {
1391
	        		$icao = $value['airport_departure_icao'];
1392
    				$alldata[$icao] = $value;
1393
	        	}
1394
	        	foreach ($dall as $value) {
1395
    				$icao = $value['airport_departure_icao'];
1396
        			if (isset($alldata[$icao])) {
1397
    					$alldata[$icao]['airport_departure_icao_count'] = $alldata[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
1398
        			} else $alldata[$icao] = $value;
1399
			}
1400
    			$count = array();
1401
    			foreach ($alldata as $key => $row) {
1402
    				$count[$key] = $row['airport_departure_icao_count'];
1403
        		}
1404
			array_multisort($count,SORT_DESC,$alldata);
1405
			foreach ($alldata as $number) {
1406
				echo $this->addStatDepartureAirports($number['airport_departure_icao'],$number['airport_departure_name'],$number['airport_departure_city'],$number['airport_departure_country'],$number['airport_departure_icao_count']);
1407
			}
1408
			$pall = $Spotter->countAllArrivalAirports(false,0,$last_update_day);
1409
        		$dall = $Spotter->countAllDetectedArrivalAirports(false,0,$last_update_day);
1410
	        	$alldata = array();
1411
    			foreach ($pall as $value) {
1412
	        		$icao = $value['airport_arrival_icao'];
1413
    				$alldata[$icao] = $value;
1414
	        	}
1415
	        	foreach ($dall as $value) {
1416
    				$icao = $value['airport_arrival_icao'];
1417
        			if (isset($alldata[$icao])) {
1418
        				$alldata[$icao]['airport_arrival_icao_count'] = $alldata[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
1419
	        		} else $alldata[$icao] = $value;
1420
    			}
1421
        		$count = array();
1422
        		foreach ($alldata as $key => $row) {
1423
        			$count[$key] = $row['airport_arrival_icao_count'];
1424
	        	}
1425
    			array_multisort($count,SORT_DESC,$alldata);
1426
                        foreach ($alldata as $number) {
1427
				echo $this->addStatArrivalAirports($number['airport_arrival_icao'],$number['airport_arrival_name'],$number['airport_arrival_city'],$number['airport_arrival_country'],$number['airport_arrival_icao_count']);
1428
			}
1429
			if ($Connection->tableExists('countries')) {
1430
				$SpotterArchive = new SpotterArchive();
1431
				$alldata = $SpotterArchive->countAllFlightOverCountries(false,0,$last_update_day);
1432
				foreach ($alldata as $number) {
1433
					$this->addStatCountry($number['flight_country_iso2'],$number['flight_country_iso3'],$number['flight_country'],$number['flight_count']);
1434
				}
1435
			}
1436
			
1437
1438
			// Add by month using getstat if month finish...
1439
1440
			//if (date('m',strtotime($last_update_day)) != date('m')) {
1441
			$Spotter = new Spotter($this->db);
1442
			$alldata = $Spotter->countAllMonths();
1443
			$lastyear = false;
0 ignored issues
show
Unused Code introduced by
$lastyear is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
1444
			foreach ($alldata as $number) {
1445
				if ($number['year_name'] != date('Y')) $lastyear = true;
0 ignored issues
show
Unused Code introduced by
$lastyear is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
1446
				$this->addStat('flights_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1447
			}
1448
			$alldata = $Spotter->countAllMilitaryMonths();
1449
			foreach ($alldata as $number) {
1450
				$this->addStat('military_flights_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1451
			}
1452
			$alldata = $Spotter->countAllMonthsOwners();
1453
			foreach ($alldata as $number) {
1454
				$this->addStat('owners_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1455
			}
1456
			$alldata = $Spotter->countAllMonthsPilots();
1457
			foreach ($alldata as $number) {
1458
				$this->addStat('pilots_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1459
			}
1460
			$alldata = $Spotter->countAllMonthsAirlines();
1461
			foreach ($alldata as $number) {
1462
				$this->addStat('airlines_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1463
			}
1464
			$alldata = $Spotter->countAllMonthsAircrafts();
1465
			foreach ($alldata as $number) {
1466
				$this->addStat('aircrafts_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1467
			}
1468
			$alldata = $Spotter->countAllMonthsRealArrivals();
1469
			foreach ($alldata as $number) {
1470
				$this->addStat('realarrivals_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1471
			}
1472
			echo 'Airports data...'."\n";
1473
			echo '...Departure'."\n";
1474
			$this->deleteStatAirport('daily');
1475
//			$pall = $Spotter->getLast7DaysAirportsDeparture();
1476
  //      		$dall = $Spotter->getLast7DaysDetectedAirportsDeparture();
1477
			$pall = $Spotter->getLast7DaysAirportsDeparture();
1478
        		$dall = $Spotter->getLast7DaysDetectedAirportsDeparture();
1479
        		/*
1480
	        	$alldata = array();
1481
    			foreach ($pall as $value) {
1482
	        		$icao = $value['departure_airport_icao'];
1483
    				$alldata[$icao] = $value;
1484
	        	}
1485
	        	foreach ($dall as $value) {
1486
    				$icao = $value['departure_airport_icao'];
1487
    				$ddate = $value['date'];
1488
        			if (isset($alldata[$icao])) {
1489
        				$alldata[$icao]['departure_airport_count'] = $alldata[$icao]['departure_airport_count'] + $value['departure_airport_count'];
1490
	        		} else $alldata[$icao] = $value;
1491
    			}
1492
        		$count = array();
1493
        		foreach ($alldata as $key => $row) {
1494
        			$count[$key] = $row['departure_airport_count'];
1495
	        	}
1496
    			array_multisort($count,SORT_DESC,$alldata);
1497
    			*/
1498
    			foreach ($dall as $value) {
1499
    				$icao = $value['departure_airport_icao'];
1500
    				$ddate = $value['date'];
1501
    				$find = false;
1502
    				foreach ($pall as $pvalue) {
1503
    					if ($pvalue['departure_airport_icao'] == $icao && $pvalue['date'] == $ddate) {
1504
    						$pvalue['departure_airport_count'] = $pvalue['departure_airport_count'] + $value['departure_airport_count'];
1505
    						$find = true;
1506
    						break;
1507
    					}
1508
    				}
1509
    				if ($find === false) {
1510
    					$pall[] = $value;
1511
    				}
1512
    			}
1513
    			$alldata = $pall;
1514
			foreach ($alldata as $number) {
1515
				$this->addStatDepartureAirportsDaily($number['date'],$number['departure_airport_icao'],$number['departure_airport_name'],$number['departure_airport_city'],$number['departure_airport_country'],$number['departure_airport_count']);
1516
			}
1517
			echo '...Arrival'."\n";
1518
			$pall = $Spotter->getLast7DaysAirportsArrival();
1519
        		$dall = $Spotter->getLast7DaysDetectedAirportsArrival();
1520
        		/*
1521
	        	$alldata = array();
1522
    			foreach ($pall as $value) {
1523
	        		$icao = $value['arrival_airport_icao'];
1524
    				$alldata[$icao] = $value;
1525
	        	}
1526
	        	foreach ($dall as $value) {
1527
    				$icao = $value['arrival_airport_icao'];
1528
        			if (isset($alldata[$icao])) {
1529
        				$alldata[$icao]['arrival_airport_icao_count'] = $alldata[$icao]['arrival_airport_count'] + $value['arrival_airport_count'];
1530
	        		} else $alldata[$icao] = $value;
1531
    			}
1532
        		$count = array();
1533
        		foreach ($alldata as $key => $row) {
1534
        			$count[$key] = $row['arrival_airport_count'];
1535
	        	}
1536
    			array_multisort($count,SORT_DESC,$alldata);
1537
    			*/
1538
1539
1540
    			foreach ($dall as $value) {
1541
    				$icao = $value['arrival_airport_icao'];
1542
    				$ddate = $value['date'];
1543
    				$find = false;
1544
    				foreach ($pall as $pvalue) {
1545
    					if ($pvalue['arrival_airport_icao'] == $icao && $pvalue['date'] == $ddate) {
1546
    						$pvalue['arrival_airport_count'] = $pvalue['arrival_airport_count'] + $value['arrival_airport_count'];
1547
    						$find = true;
1548
    						break;
1549
    					}
1550
    				}
1551
    				if ($find === false) {
1552
    					$pall[] = $value;
1553
    				}
1554
    			}
1555
    			$alldata = $pall;
1556
			foreach ($alldata as $number) {
1557
				$this->addStatArrivalAirportsDaily($number['date'],$number['arrival_airport_icao'],$number['arrival_airport_name'],$number['arrival_airport_city'],$number['arrival_airport_country'],$number['arrival_airport_count']);
1558
			}
1559
1560
			echo 'Flights data...'."\n";
1561
			$this->deleteStatFlight('month');
1562
			echo '-> countAllDatesLastMonth...'."\n";
1563
			$alldata = $Spotter->countAllDatesLastMonth();
1564
			foreach ($alldata as $number) {
1565
				$this->addStatFlight('month',$number['date_name'],$number['date_count']);
1566
			}
1567
			echo '-> countAllDates...'."\n";
1568
			$previousdata = $this->countAllDates();
1569
			$this->deleteStatFlight('date');
1570
			$alldata = $Common->array_merge_noappend($previousdata,$Spotter->countAllDates());
1571
			$values = array();
1572
			foreach ($alldata as $cnt) {
1573
				$values[] = $cnt['date_count'];
1574
			}
1575
			array_multisort($values,SORT_DESC,$alldata);
1576
			array_splice($alldata,11);
1577
			foreach ($alldata as $number) {
1578
				$this->addStatFlight('date',$number['date_name'],$number['date_count']);
1579
			}
1580
			
1581
			$this->deleteStatFlight('hour');
1582
			echo '-> countAllHours...'."\n";
1583
			$alldata = $Spotter->countAllHours('hour');
1584
			foreach ($alldata as $number) {
1585
				$this->addStatFlight('hour',$number['hour_name'],$number['hour_count']);
1586
			}
1587
1588
1589
1590
			// Count by airlines
1591
			echo '--- Stats by airlines ---'."\n";
1592
			$Spotter = new Spotter($this->db);
1593
			$alldata = $Spotter->countAllAircraftTypesByAirlines(false,0,$last_update_day);
1594
			foreach ($alldata as $number) {
1595
				$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer'],$number['airline_icao']);
1596
			}
1597
			$alldata = $Spotter->countAllAircraftRegistrationsByAirlines(false,0,$last_update_day);
1598
			foreach ($alldata as $number) {
1599
				$this->addStatAircraftRegistration($number['registration'],$number['aircraft_registration_count'],$number['aircraft_icao'],$number['airline_icao']);
1600
			}
1601
			$alldata = $Spotter->countAllCallsignsByAirlines(false,0,$last_update_day);
1602
			foreach ($alldata as $number) {
1603
				$this->addStatCallsign($number['callsign_icao'],$number['callsign_icao_count'],$number['airline_icao']);
1604
			}
1605
			$alldata = $Spotter->countAllOwnersByAirlines(false,0,$last_update_day);
1606
			foreach ($alldata as $number) {
1607
				$this->addStatOwner($number['owner_name'],$number['owner_count'],$number['airline_icao']);
1608
			}
1609
			$alldata = $Spotter->countAllPilotsByAirlines(false,0,$last_update_day);
1610
			foreach ($alldata as $number) {
1611
				$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name'],$number['airline_icao']);
1612
			}
1613
			
1614
			$pall = $Spotter->countAllDepartureAirportsByAirlines(false,0,$last_update_day);
1615
       			$dall = $Spotter->countAllDetectedDepartureAirportsByAirlines(false,0,$last_update_day);
1616
	        	//$alldata = array();
1617
    			foreach ($dall as $value) {
1618
    				$icao = $value['airport_departure_icao'];
1619
    				$dicao = $value['airline_icap'];
1620
    				$find = false;
1621
    				foreach ($pall as $pvalue) {
1622
    					if ($pvalue['airport_departure_icao'] == $icao && $pvalue['airline_icao'] = $dicao) {
1623
    						$pvalue['airport_departure_icao_count'] = $pvalue['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
1624
    						$find = true;
1625
    						break;
1626
    					}
1627
    				}
1628
    				if ($find === false) {
1629
    					$pall[] = $value;
1630
    				}
1631
    			}
1632
    			$alldata = $pall;
1633
			foreach ($alldata as $number) {
1634
				echo $this->addStatDepartureAirports($number['airport_departure_icao'],$number['airport_departure_name'],$number['airport_departure_city'],$number['airport_departure_country'],$number['airport_departure_icao_count'],$number['airline_icao']);
1635
			}
1636
			$pall = $Spotter->countAllArrivalAirportsByAirlines(false,0,$last_update_day);
1637
        		$dall = $Spotter->countAllDetectedArrivalAirportsByAirlines(false,0,$last_update_day);
1638
	        	//$alldata = array();
1639
    			foreach ($dall as $value) {
1640
    				$icao = $value['airport_arrival_icao'];
1641
    				$dicao = $value['airline_icao'];
1642
    				$find = false;
1643
    				foreach ($pall as $pvalue) {
1644
    					if ($pvalue['airport_arrival_icao'] == $icao && $pvalue['airline_icao'] = $dicao) {
1645
    						$pvalue['airport_arrival_icao_count'] = $pvalue['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
1646
    						$find = true;
1647
    						break;
1648
    					}
1649
    				}
1650
    				if ($find === false) {
1651
    					$pall[] = $value;
1652
    				}
1653
    			}
1654
    			$alldata = $pall;
1655
                        foreach ($alldata as $number) {
1656
				echo $this->addStatArrivalAirports($number['airport_arrival_icao'],$number['airport_arrival_name'],$number['airport_arrival_city'],$number['airport_arrival_country'],$number['airport_arrival_icao_count'],$number['airline_icao']);
1657
			}
1658
			$Spotter = new Spotter($this->db);
1659
			$alldata = $Spotter->countAllMonthsByAirlines();
1660
			$lastyear = false;
1661
			foreach ($alldata as $number) {
1662
				if ($number['year_name'] != date('Y')) $lastyear = true;
1663
				$this->addStat('flights_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])),$number['airline_icao']);
1664
			}
1665
			$alldata = $Spotter->countAllMonthsOwnersByAirlines();
1666
			foreach ($alldata as $number) {
1667
				$this->addStat('owners_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])),$number['airline_icao']);
1668
			}
1669
			$alldata = $Spotter->countAllMonthsPilotsByAirlines();
1670
			foreach ($alldata as $number) {
1671
				$this->addStat('pilots_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])),$number['airline_icao']);
1672
			}
1673
			$alldata = $Spotter->countAllMonthsAircraftsByAirlines();
1674
			foreach ($alldata as $number) {
1675
				$this->addStat('aircrafts_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])),$number['airline_icao']);
1676
			}
1677
			$alldata = $Spotter->countAllMonthsRealArrivalsByAirlines();
1678
			foreach ($alldata as $number) {
1679
				$this->addStat('realarrivals_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])),$number['airline_icao']);
1680
			}
1681
			echo '...Departure'."\n";
1682
			$pall = $Spotter->getLast7DaysAirportsDepartureByAirlines();
1683
        		$dall = $Spotter->getLast7DaysDetectedAirportsDepartureByAirlines();
1684
    			foreach ($dall as $value) {
1685
    				$icao = $value['departure_airport_icao'];
1686
    				$airline = $value['airline_icao'];
1687
    				$ddate = $value['date'];
1688
    				$find = false;
1689
    				foreach ($pall as $pvalue) {
1690
    					if ($pvalue['departure_airport_icao'] == $icao && $pvalue['date'] == $ddate && $pvalue['airline_icao'] = $airline) {
1691
    						$pvalue['departure_airport_count'] = $pvalue['departure_airport_count'] + $value['departure_airport_count'];
1692
    						$find = true;
1693
    						break;
1694
    					}
1695
    				}
1696
    				if ($find === false) {
1697
    					$pall[] = $value;
1698
    				}
1699
    			}
1700
    			$alldata = $pall;
1701
			foreach ($alldata as $number) {
1702
				$this->addStatDepartureAirportsDaily($number['date'],$number['departure_airport_icao'],$number['departure_airport_name'],$number['departure_airport_city'],$number['departure_airport_country'],$number['departure_airport_count'],$number['airline_icao']);
1703
			}
1704
			echo '...Arrival'."\n";
1705
			$pall = $Spotter->getLast7DaysAirportsArrivalByAirlines();
1706
        		$dall = $Spotter->getLast7DaysDetectedAirportsArrivalByAirlines();
1707
    			foreach ($dall as $value) {
1708
    				$icao = $value['arrival_airport_icao'];
1709
    				$airline = $value['airline_icao'];
1710
    				$ddate = $value['date'];
1711
    				$find = false;
1712
    				foreach ($pall as $pvalue) {
1713
    					if ($pvalue['arrival_airport_icao'] == $icao && $pvalue['date'] == $ddate && $pvalue['airline_icao'] == $airline) {
1714
    						$pvalue['arrival_airport_count'] = $pvalue['arrival_airport_count'] + $value['arrival_airport_count'];
1715
    						$find = true;
1716
    						break;
1717
    					}
1718
    				}
1719
    				if ($find === false) {
1720
    					$pall[] = $value;
1721
    				}
1722
    			}
1723
    			$alldata = $pall;
1724
			foreach ($alldata as $number) {
1725
				$this->addStatArrivalAirportsDaily($number['date'],$number['arrival_airport_icao'],$number['arrival_airport_name'],$number['arrival_airport_city'],$number['arrival_airport_country'],$number['arrival_airport_count'],$number['airline_icao']);
1726
			}
1727
1728
			echo 'Flights data...'."\n";
1729
			echo '-> countAllDatesLastMonth...'."\n";
1730
			$alldata = $Spotter->countAllDatesLastMonthByAirlines();
1731
			foreach ($alldata as $number) {
1732
				$this->addStatFlight('month',$number['date_name'],$number['date_count'], $number['airline_icao']);
1733
			}
1734
			echo '-> countAllDates...'."\n";
1735
			$previousdata = $this->countAllDatesByAirlines();
1736
			$alldata = $Common->array_merge_noappend($previousdata,$Spotter->countAllDatesByAirlines());
1737
			$values = array();
1738
			foreach ($alldata as $cnt) {
1739
				$values[] = $cnt['date_count'];
1740
			}
1741
			array_multisort($values,SORT_DESC,$alldata);
1742
			array_splice($alldata,11);
1743
			foreach ($alldata as $number) {
1744
				$this->addStatFlight('date',$number['date_name'],$number['date_count'],$number['airline_icao']);
1745
			}
1746
			
1747
			echo '-> countAllHours...'."\n";
1748
			$alldata = $Spotter->countAllHoursByAirlines('hour');
1749
			foreach ($alldata as $number) {
1750
				$this->addStatFlight('hour',$number['hour_name'],$number['hour_count'],$number['airline_icao']);
1751
			}
1752
			
1753
1754
			if (!isset($globalStatsFilters) || $globalStatsFilters == '') $globalStatsFilters = array();
1755
			foreach ($globalStatsFilters as $name => $filter) {
1756
				//$filter_name = $filter['name'];
1757
				$filter_name = $name;
1758
				// Count by filter
1759
				echo '--- Stats by airlines ---'."\n";
1760
				$Spotter = new Spotter($this->db);
1761
				$alldata = $Spotter->countAllAircraftTypes(false,0,$last_update_day,$filter);
1762
				foreach ($alldata as $number) {
1763
					$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer'],'',$filter_name);
1764
				}
1765
				$alldata = $Spotter->countAllAircraftRegistrations(false,0,$last_update_day,$filter);
1766
				foreach ($alldata as $number) {
1767
					$this->addStatAircraftRegistration($number['registration'],$number['aircraft_registration_count'],$number['aircraft_icao'],'',$filter_name);
1768
				}
1769
				$alldata = $Spotter->countAllCallsigns(false,0,$last_update_day,$filter);
1770
				foreach ($alldata as $number) {
1771
					$this->addStatCallsign($number['callsign_icao'],$number['callsign_icao_count'],'',$filter_name);
1772
				}
1773
				$alldata = $Spotter->countAllOwners(false,0,$last_update_day,$filter);
1774
				foreach ($alldata as $number) {
1775
					$this->addStatOwner($number['owner_name'],$number['owner_count'],'',$filter_name);
1776
				}
1777
				$alldata = $Spotter->countAllPilots(false,0,$last_update_day,$filter);
1778
				foreach ($alldata as $number) {
1779
					$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name'],'',$filter_name);
1780
				}
1781
    			
1782
				$pall = $Spotter->countAllDepartureAirports(false,0,$last_update_day,$filter);
1783
	       			$dall = $Spotter->countAllDetectedDepartureAirports(false,0,$last_update_day,$filter);
1784
		        	//$alldata = array();
1785
	    			foreach ($dall as $value) {
1786
	    				$icao = $value['airport_departure_icao'];
1787
	    				$dicao = $value['airline_icap'];
1788
	    				$find = false;
1789
        				foreach ($pall as $pvalue) {
1790
        					if ($pvalue['airport_departure_icao'] == $icao && $pvalue['airline_icao'] = $dicao) {
1791
        						$pvalue['airport_departure_icao_count'] = $pvalue['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
1792
        						$find = true;
1793
        						break;
1794
        					}
1795
        				}
1796
        				if ($find === false) {
1797
        					$pall[] = $value;
1798
        				}
1799
        			}
1800
        			$alldata = $pall;
1801
				foreach ($alldata as $number) {
1802
    					echo $this->addStatDepartureAirports($number['airport_departure_icao'],$number['airport_departure_name'],$number['airport_departure_city'],$number['airport_departure_country'],$number['airport_departure_icao_count'],'',$filter_name);
1803
				}
1804
				$pall = $Spotter->countAllArrivalAirports(false,0,$last_update_day,$filter);
1805
    				$dall = $Spotter->countAllDetectedArrivalAirports(false,0,$last_update_day,$filter);
1806
	    			//$alldata = array();
1807
				foreach ($dall as $value) {
1808
    					$icao = $value['airport_arrival_icao'];
1809
	    				$dicao = $value['airline_icao'];
1810
	    				$find = false;
1811
    					foreach ($pall as $pvalue) {
1812
    						if ($pvalue['airport_arrival_icao'] == $icao && $pvalue['airline_icao'] = $dicao) {
1813
							$pvalue['airport_arrival_icao_count'] = $pvalue['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
1814
							$find = true;
1815
							break;
1816
        					}
1817
					}
1818
					if ($find === false) {
1819
						$pall[] = $value;
1820
					}
1821
        			}
1822
				$alldata = $pall;
1823
				foreach ($alldata as $number) {
1824
					echo $this->addStatArrivalAirports($number['airport_arrival_icao'],$number['airport_arrival_name'],$number['airport_arrival_city'],$number['airport_arrival_country'],$number['airport_arrival_icao_count'],'',$filter_name);
1825
				}
1826
				$Spotter = new Spotter($this->db);
1827
				$alldata = $Spotter->countAllMonths($filter);
1828
				$lastyear = false;
1829
				foreach ($alldata as $number) {
1830
					if ($number['year_name'] != date('Y')) $lastyear = true;
1831
					$this->addStat('flights_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])),'',$filter_name);
1832
				}
1833
				$alldata = $Spotter->countAllMonthsOwners($filter);
1834
				foreach ($alldata as $number) {
1835
					$this->addStat('owners_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])),'',$filter_name);
1836
				}
1837
				$alldata = $Spotter->countAllMonthsPilots($filter);
1838
				foreach ($alldata as $number) {
1839
					$this->addStat('pilots_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])),'',$filter_name);
1840
				}
1841
				$alldata = $Spotter->countAllMonthsAircrafts($filter);
1842
				foreach ($alldata as $number) {
1843
					$this->addStat('aircrafts_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])),'',$filter_name);
1844
				}
1845
				$alldata = $Spotter->countAllMonthsRealArrivals($filter);
1846
				foreach ($alldata as $number) {
1847
					$this->addStat('realarrivals_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])),'',$filter_name);
1848
				}
1849
				echo '...Departure'."\n";
1850
				$pall = $Spotter->getLast7DaysAirportsDeparture($filter);
1851
        			$dall = $Spotter->getLast7DaysDetectedAirportsDeparture($filter);
1852
	    			foreach ($dall as $value) {
1853
    					$icao = $value['departure_airport_icao'];
1854
    					$airline = $value['airline_icao'];
1855
	    				$ddate = $value['date'];
1856
    					$find = false;
1857
    					foreach ($pall as $pvalue) {
1858
    						if ($pvalue['departure_airport_icao'] == $icao && $pvalue['date'] == $ddate && $pvalue['airline_icao'] = $airline) {
1859
	    						$pvalue['departure_airport_count'] = $pvalue['departure_airport_count'] + $value['departure_airport_count'];
1860
    							$find = true;
1861
    							break;
1862
    						}
1863
    					}
1864
					if ($find === false) {
1865
	    					$pall[] = $value;
1866
    					}
1867
    				}
1868
	    			$alldata = $pall;
1869
				foreach ($alldata as $number) {
1870
					$this->addStatDepartureAirportsDaily($number['date'],$number['departure_airport_icao'],$number['departure_airport_name'],$number['departure_airport_city'],$number['departure_airport_country'],$number['departure_airport_count'],'',$filter_name);
1871
				}
1872
				echo '...Arrival'."\n";
1873
				$pall = $Spotter->getLast7DaysAirportsArrival($filter);
1874
    				$dall = $Spotter->getLast7DaysDetectedAirportsArrival($filter);
1875
				foreach ($dall as $value) {
1876
					$icao = $value['arrival_airport_icao'];
1877
					$airline = $value['airline_icao'];
1878
					$ddate = $value['date'];
1879
    					$find = false;
1880
					foreach ($pall as $pvalue) {
1881
    						if ($pvalue['arrival_airport_icao'] == $icao && $pvalue['date'] == $ddate && $pvalue['airline_icao'] == $airline) {
1882
    							$pvalue['arrival_airport_count'] = $pvalue['arrival_airport_count'] + $value['arrival_airport_count'];
1883
    							$find = true;
1884
    							break;
1885
	    					}
1886
    					}
1887
    					if ($find === false) {
1888
    						$pall[] = $value;
1889
	    				}
1890
    				}
1891
    				$alldata = $pall;
1892
				foreach ($alldata as $number) {
1893
					$this->addStatArrivalAirportsDaily($number['date'],$number['arrival_airport_icao'],$number['arrival_airport_name'],$number['arrival_airport_city'],$number['arrival_airport_country'],$number['arrival_airport_count'],'',$filter_name);
1894
				}
1895
    
1896
				echo 'Flights data...'."\n";
1897
				echo '-> countAllDatesLastMonth...'."\n";
1898
				$alldata = $Spotter->countAllDatesLastMonth($filter);
1899
				foreach ($alldata as $number) {
1900
					$this->addStatFlight('month',$number['date_name'],$number['date_count'], '',$filter_name);
1901
				}
1902
				echo '-> countAllDates...'."\n";
1903
				$previousdata = $this->countAllDates($filter);
1904
				$alldata = $Common->array_merge_noappend($previousdata,$Spotter->countAllDates($filter));
1905
				$values = array();
1906
				foreach ($alldata as $cnt) {
1907
					$values[] = $cnt['date_count'];
1908
				}
1909
				array_multisort($values,SORT_DESC,$alldata);
1910
				array_splice($alldata,11);
1911
				foreach ($alldata as $number) {
1912
					$this->addStatFlight('date',$number['date_name'],$number['date_count'],'',$filter_name);
1913
				}
1914
				
1915
				echo '-> countAllHours...'."\n";
1916
				$alldata = $Spotter->countAllHours('hour',$filter);
1917
				foreach ($alldata as $number) {
1918
					$this->addStatFlight('hour',$number['hour_name'],$number['hour_count'],'',$filter_name);
1919
				}
1920
			}
1921
	
1922
1923
			// Last year stats
1924
			if ($lastyear) {
1925
				echo 'Data from last year...'."\n";
1926
				// SUM all previous month to put as year
1927
				$previous_year = date('Y');
1928
				$previous_year--;
1929
				$this->addStat('aircrafts_byyear',$this->getSumStats('aircrafts_bymonth',$previous_year),$previous_year.'-01-01 00:00:00');
1930
				$this->addStat('airlines_byyear',$this->getSumStats('airlines_bymonth',$previous_year),$previous_year.'-01-01 00:00:00');
1931
				$this->addStat('owner_byyear',$this->getSumStats('owner_bymonth',$previous_year),$previous_year.'-01-01 00:00:00');
1932
				$this->addStat('pilot_byyear',$this->getSumStats('pilot_bymonth',$previous_year),$previous_year.'-01-01 00:00:00');
1933
				$allairlines = $this->getAllAirlineNames();
1934
				foreach ($allairlines as $data) {
1935
					$this->addStat('aircrafts_byyear',$this->getSumStats('aircrafts_bymonth',$previous_year,$data['airline_icao']),$previous_year.'-01-01 00:00:00',$data['airline_icao']);
1936
					$this->addStat('airlines_byyear',$this->getSumStats('airlines_bymonth',$previous_year,$data['airline_icao']),$previous_year.'-01-01 00:00:00',$data['airline_icao']);
1937
					$this->addStat('owner_byyear',$this->getSumStats('owner_bymonth',$previous_year,$data['airline_icao']),$previous_year.'-01-01 00:00:00',$data['airline_icao']);
1938
					$this->addStat('pilot_byyear',$this->getSumStats('pilot_bymonth',$previous_year,$data['airline_icao']),$previous_year.'-01-01 00:00:00',$data['airline_icao']);
1939
				}
1940
				
1941
				if (isset($globalArchiveYear) && $globalArchiveYear) {
1942
					if ($globalArchive) {
1943
						$query = "INSERT INTO spotter_archive_output SELECT * FROM spotter_output WHERE spotter_output.date < '".date('Y')."-01-01 00:00:00'";
1944
						try {
1945
							$sth = $this->db->prepare($query);
1946
							$sth->execute();
1947
						} catch(PDOException $e) {
1948
							return "error : ".$e->getMessage().' - query : '.$query."\n";
1949
						}
1950
					}
1951
					echo 'Delete old data'."\n";
1952
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < '".date('Y')."-01-01 00:00:00'";
1953
					try {
1954
						$sth = $this->db->prepare($query);
1955
						$sth->execute();
1956
					} catch(PDOException $e) {
1957
						return "error : ".$e->getMessage().' - query : '.$query."\n";
1958
					}
1959
				}
1960
			}
1961
			if ($globalArchiveMonths > 0) {
1962
				if ($globalArchive) {
1963
					echo 'Archive old data...'."\n";
1964
					if ($globalDBdriver == 'mysql') {
1965
						//$query = "INSERT INTO spotter_archive_output SELECT * FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
1966
						$query = "INSERT INTO spotter_archive_output (spotter_id,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,departure_airport_time,arrival_airport_icao,arrival_airport_name,arrival_airport_city,arrival_airport_country,arrival_airport_time,route_stop,date,latitude,longitude,waypoints,altitude,heading,ground_speed,highlight,squawk,ModeS,pilot_id,pilot_name,owner_name,verticalrate,format_source,source_name,ground,last_ground,last_seen,last_latitude,last_longitude,last_altitude,last_ground_speed,real_arrival_airport_icao,real_arrival_airport_time,real_departure_airport_icao,real_departure_airport_time)
1967
							    SELECT spotter_id,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,departure_airport_time,arrival_airport_icao,arrival_airport_name,arrival_airport_city,arrival_airport_country,arrival_airport_time,route_stop,date,latitude,longitude,waypoints,altitude,heading,ground_speed,highlight,squawk,ModeS,pilot_id,pilot_name,owner_name,verticalrate,format_source,source_name,ground,last_ground,last_seen,last_latitude,last_longitude,last_altitude,last_ground_speed,real_arrival_airport_icao,real_arrival_airport_time,real_departure_airport_icao,real_departure_airport_time
1968
	    						     FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
1969
					} else {
1970
						$query = "INSERT INTO spotter_archive_output (spotter_id,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,departure_airport_time,arrival_airport_icao,arrival_airport_name,arrival_airport_city,arrival_airport_country,arrival_airport_time,route_stop,date,latitude,longitude,waypoints,altitude,heading,ground_speed,highlight,squawk,ModeS,pilot_id,pilot_name,owner_name,verticalrate,format_source,source_name,ground,last_ground,last_seen,last_latitude,last_longitude,last_altitude,last_ground_speed,real_arrival_airport_icao,real_arrival_airport_time,real_departure_airport_icao,real_departure_airport_time)
1971
							     SELECT 
1972
								spotter_id,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,departure_airport_time,arrival_airport_icao,arrival_airport_name,arrival_airport_city,arrival_airport_country,arrival_airport_time,route_stop,date,latitude,longitude,waypoints,altitude,heading,ground_speed,highlight,squawk,ModeS,pilot_id,pilot_name,owner_name,verticalrate,format_source,source_name,ground,last_ground,last_seen,last_latitude,last_longitude,last_altitude,last_ground_speed,real_arrival_airport_icao,real_arrival_airport_time,real_departure_airport_icao,real_departure_airport_time
1973
							    FROM spotter_output WHERE spotter_output.date < CAST(to_char(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalArchiveMonths." MONTHS', 'YYYY/mm/01') AS TIMESTAMP)";
1974
					}
1975
					try {
1976
						$sth = $this->db->prepare($query);
1977
						$sth->execute();
1978
					} catch(PDOException $e) {
1979
						return "error : ".$e->getMessage();
1980
					}
1981
				}
1982
				echo 'Deleting old data...'."\n";
1983
				//$query = 'DELETE FROM spotter_output WHERE spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$globalArchiveMonths.' MONTH)';
1984
				if ($globalDBdriver == 'mysql') {
1985
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
1986
				} else {
1987
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < CAST(to_char(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalArchiveMonths." MONTHS', 'YYYY/mm/01') AS TIMESTAMP)";
1988
				}
1989
				try {
1990
					$sth = $this->db->prepare($query);
1991
					$sth->execute();
1992
				} catch(PDOException $e) {
1993
					return "error : ".$e->getMessage();
1994
				}
1995
			}
1996
			echo 'Insert last stats update date...'."\n";
1997
			date_default_timezone_set('UTC');
1998
			$this->addLastStatsUpdate('last_update_stats',date('Y-m-d G:i:s'));
1999
		//}
2000
	}
2001
}
2002
2003
?>