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

Stats::countAllPilots()   B

Complexity

Conditions 6
Paths 36

Size

Total Lines 22
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 6
eloc 18
nc 36
nop 3
dl 0
loc 22
rs 8.6737
c 0
b 0
f 0
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
?>