Completed
Push — master ( ac5e38...54c225 )
by Yannick
06:46
created

Stats::addStatDepartureAirportsDaily()   A

Complexity

Conditions 3
Paths 6

Size

Total Lines 15
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

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

How to fix   Many Parameters   

Many Parameters

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

There are several approaches to avoid long parameter lists:

1
<?php
2
/*
3
* This class save stats older than a year and $globalArchiveMonths
4
*/
5
6
require_once(dirname(__FILE__).'/class.Spotter.php');
7
require_once(dirname(__FILE__).'/class.SpotterArchive.php');
8
require_once(dirname(__FILE__).'/class.Common.php');
9
class Stats {
10
	public $db;
11
	public $filter_name = '';
12
	
13
	public function __construct($dbc = null) {
14
		global $globalFilterName;
15
		if (isset($globalFilterName)) $this->filter_name = $globalFilterName;
16
		$Connection = new Connection($dbc);
17
		$this->db = $Connection->db();
18
        }
19
              
20
	public function addLastStatsUpdate($type,$stats_date) {
21
                $query = "DELETE FROM config WHERE name = :type;
22
            		INSERT INTO config (name,value) VALUES (:type,:stats_date);";
23
                $query_values = array('type' => $type,':stats_date' => $stats_date);
24
                 try {
25
                        $sth = $this->db->prepare($query);
26
                        $sth->execute($query_values);
27
                } catch(PDOException $e) {
28
                        return "error : ".$e->getMessage();
29
                }
30
        }
31
32
	public function getLastStatsUpdate($type = 'last_update_stats') {
33
                $query = "SELECT value FROM config WHERE name = :type";
34
                 try {
35
                        $sth = $this->db->prepare($query);
36
                        $sth->execute(array(':type' => $type));
37
                } catch(PDOException $e) {
38
                        echo "error : ".$e->getMessage();
39
                }
40
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
41
                return $all;
42
        }
43
	public function getAllAirlineNames($filter_name = '') {
44
		if ($filter_name == '') $filter_name = $this->filter_name;
45
                $query = "SELECT * FROM stats_airline WHERE filter_name = :filter_name ORDER BY airline_name ASC";
46
                 try {
47
                        $sth = $this->db->prepare($query);
48
                        $sth->execute(array(':filter_name' => $filter_name));
49
                } catch(PDOException $e) {
50
                        echo "error : ".$e->getMessage();
51
                }
52
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
53
                return $all;
54
        }
55
	public function getAllAircraftTypes($stats_airline = '',$filter_name = '') {
56
		if ($filter_name == '') $filter_name = $this->filter_name;
57
                $query = "SELECT * FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY aircraft_manufacturer ASC";
58
                 try {
59
                        $sth = $this->db->prepare($query);
60
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
61
                } catch(PDOException $e) {
62
                        echo "error : ".$e->getMessage();
63
                }
64
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
65
                return $all;
66
        }
67
	public function getAllManufacturers($stats_airline = '',$filter_name = '') {
68
		if ($filter_name == '') $filter_name = $this->filter_name;
69
                $query = "SELECT DISTINCT(aircraft_manufacturer) FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name AND aircraft_manufacturer <> '' ORDER BY aircraft_manufacturer 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
	public function getAllAirportNames($stats_airline = '',$filter_name = '') {
80
		if ($filter_name == '') $filter_name = $this->filter_name;
81
                $query = "SELECT airport_icao, airport_name,airport_city,airport_country FROM stats_airport WHERE stats_airline = :stats_airline AND filter_name = :filter_name AND stats_type = 'daily' GROUP BY airport_icao,airport_name,airport_city,airport_country ORDER BY airport_city ASC";
82
                 try {
83
                        $sth = $this->db->prepare($query);
84
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
85
                } catch(PDOException $e) {
86
                        echo "error : ".$e->getMessage();
87
                }
88
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
89
                return $all;
90
        }
91
92
93
	public function countAllAircraftTypes($limit = true, $stats_airline = '', $filter_name = '') {
94
		global $globalStatsFilters;
95
		if ($filter_name == '') $filter_name = $this->filter_name;
96
		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";
97
		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";
98
                 try {
99
                        $sth = $this->db->prepare($query);
100
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
101
                } catch(PDOException $e) {
102
                        echo "error : ".$e->getMessage();
103
                }
104
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
105
                if (empty($all)) {
106
            	    $filters = array('airlines' => array($stats_airline));
107
            	    if ($filter_name != '') {
108
            		    $filters = array_merge($filters,$globalStatsFilters[$filter_name]);
109
            	    }
110
            	    $Spotter = new Spotter($this->db);
111
            	    $all = $Spotter->countAllAircraftTypes($limit,0,'',$filters);
112
                }
113
                return $all;
114
	}
115
	public function countAllAirlineCountries($limit = true,$filter_name = '') {
116
		global $globalStatsFilters;
117
		if ($filter_name == '') $filter_name = $this->filter_name;
118
		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";
119
		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";
120
                 try {
121
                        $sth = $this->db->prepare($query);
122
                        $sth->execute(array(':filter_name' => $filter_name));
123
                } catch(PDOException $e) {
124
                        echo "error : ".$e->getMessage();
125
                }
126
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
127
                if (empty($all)) {
128
            		$Spotter = new Spotter($this->db);
129
            		$filters = array();
130
            		if ($filter_name != '') {
131
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
132
			}
133
            		$all = $Spotter->countAllAirlineCountries($limit,$filters);
134
                }
135
                return $all;
136
	}
137
	public function countAllAircraftManufacturers($limit = true,$stats_airline = '', $filter_name = '') {
138
		global $globalStatsFilters;
139
		if ($filter_name == '') $filter_name = $this->filter_name;
140
		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";
141
		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";
142
                 try {
143
                        $sth = $this->db->prepare($query);
144
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
145
                } catch(PDOException $e) {
146
                        echo "error : ".$e->getMessage();
147
                }
148
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
149
                if (empty($all)) {
150
            		$filters = array('airlines' => array($stats_airline));
151
            		if ($filter_name != '') {
152
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
153
			}
154
            		$Spotter = new Spotter($this->db);
155
			$all = $Spotter->countAllAircraftManufacturers($filters);
156
                }
157
                return $all;
158
	}
159
160
	public function countAllArrivalCountries($limit = true, $stats_airline = '', $filter_name = '') {
161
		global $globalStatsFilters;
162
		if ($filter_name == '') $filter_name = $this->filter_name;
163
		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";
164
		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";
165
                 try {
166
                        $sth = $this->db->prepare($query);
167
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
168
                } catch(PDOException $e) {
169
                        echo "error : ".$e->getMessage();
170
                }
171
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
172
                if (empty($all)) {
173
			$filters = array('airlines' => array($stats_airline));
174
			if ($filter_name != '') {
175
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
176
			}
177
			$Spotter = new Spotter($this->db);
178
			$all = $Spotter->countAllArrivalCountries($limit,$filters);
179
                }
180
                return $all;
181
	}
182
	public function countAllDepartureCountries($limit = true, $stats_airline = '', $filter_name = '') {
183
		global $globalStatsFilters;
184
		if ($filter_name == '') $filter_name = $this->filter_name;
185
		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";
186
		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";
187
                 try {
188
                        $sth = $this->db->prepare($query);
189
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
190
                } catch(PDOException $e) {
191
                        echo "error : ".$e->getMessage();
192
                }
193
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
194
                if (empty($all)) {
195
			$filters = array('airlines' => array($stats_airline));
196
			if ($filter_name != '') {
197
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
198
			}
199
			$Spotter = new Spotter($this->db);
200
			$all = $Spotter->countAllDepartureCountries($filters);
201
                }
202
                return $all;
203
	}
204
205
	public function countAllAirlines($limit = true,$filter_name = '') {
206
		global $globalStatsFilters;
207
		if ($filter_name == '') $filter_name = $this->filter_name;
208
		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";
209
		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";
210
                 try {
211
                        $sth = $this->db->prepare($query);
212
                        $sth->execute(array(':filter_name' => $filter_name));
213
                } catch(PDOException $e) {
214
                        echo "error : ".$e->getMessage();
215
                }
216
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
217
                if (empty($all)) {
218
	                $Spotter = new Spotter($this->db);
219
            		$filters = array();
220
            		if ($filter_name != '') {
221
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
222
			}
223
224
    		        $all = $Spotter->countAllAirlines($limit,0,'',$filters);
225
                }
226
                return $all;
227
	}
228
	public function countAllAircraftRegistrations($limit = true,$stats_airline = '',$filter_name = '') {
229
		global $globalStatsFilters;
230
		if ($filter_name == '') $filter_name = $this->filter_name;
231
		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";
232
		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";
233
                 try {
234
                        $sth = $this->db->prepare($query);
235
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
236
                } catch(PDOException $e) {
237
                        echo "error : ".$e->getMessage();
238
                }
239
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
240
                if (empty($all)) {
241
			$filters = array('airlines' => array($stats_airline));
242
			if ($filter_name != '') {
243
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
244
			}
245
	                $Spotter = new Spotter($this->db);
246
    		        $all = $Spotter->countAllAircraftRegistrations($limit,0,'',$filters);
247
                }
248
                return $all;
249
	}
250
	public function countAllCallsigns($limit = true,$stats_airline = '',$filter_name = '') {
251
		global $globalStatsFilters;
252
		if ($filter_name == '') $filter_name = $this->filter_name;
253
		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";
254
		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";
255
		 try {
256
			$sth = $this->db->prepare($query);
257
			$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
258
		} catch(PDOException $e) {
259
			echo "error : ".$e->getMessage();
260
		}
261
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
262
		if (empty($all)) {
263
			$filters = array('airlines' => array($stats_airline));
264
			if ($filter_name != '') {
265
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
266
			}
267
			$Spotter = new Spotter($this->db);
268
			$all = $Spotter->countAllCallsigns($limit,0,'',$filters);
269
		}
270
		return $all;
271
	}
272
	public function countAllFlightOverCountries($limit = true, $stats_airline = '',$filter_name = '') {
273
		$Connection = new Connection();
274
		if ($filter_name == '') $filter_name = $this->filter_name;
275
		if ($Connection->tableExists('countries')) {
276
			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";
277
			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";
278
			 try {
279
				$sth = $this->db->prepare($query);
280
				$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
281
			} catch(PDOException $e) {
282
				echo "error : ".$e->getMessage();
283
			}
284
			$all = $sth->fetchAll(PDO::FETCH_ASSOC);
285
                /*
286
                if (empty($all)) {
287
	                $Spotter = new Spotter($this->db);
288
    		        $all = $Spotter->countAllFlightOverCountries($limit);
289
                }
290
                */
291
			return $all;
292
		} else {
293
			return array();
294
		}
295
	}
296
	public function countAllPilots($limit = true,$stats_airline = '',$filter_name = '') {
297
		global $globalStatsFilters;
298
		if ($filter_name == '') $filter_name = $this->filter_name;
299
		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";
300
		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";
301
                 try {
302
                        $sth = $this->db->prepare($query);
303
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
304
                } catch(PDOException $e) {
305
                        echo "error : ".$e->getMessage();
306
                }
307
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
308
                if (empty($all)) {
309
			$filters = array('airlines' => array($stats_airline));
310
			if ($filter_name != '') {
311
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
312
			}
313
            		$Spotter = new Spotter($this->db);
314
            		$all = $Spotter->countAllPilots($limit,0,'',$filters);
315
                }
316
                return $all;
317
	}
318
	public function countAllOwners($limit = true,$stats_airline = '', $filter_name = '') {
319
		global $globalStatsFilters;
320
		if ($filter_name == '') $filter_name = $this->filter_name;
321
		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";
322
		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";
323
                 try {
324
                        $sth = $this->db->prepare($query);
325
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
326
                } catch(PDOException $e) {
327
                        echo "error : ".$e->getMessage();
328
                }
329
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
330
                if (empty($all)) {
331
			$filters = array('airlines' => array($stats_airline));
332
			if ($filter_name != '') {
333
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
334
			}
335
            		$Spotter = new Spotter($this->db);
336
            		$all = $Spotter->countAllOwners($limit,0,'',$filters);
337
                }
338
                return $all;
339
	}
340
	public function countAllDepartureAirports($limit = true,$stats_airline = '',$filter_name = '') {
341
		global $globalStatsFilters;
342
		if ($filter_name == '') $filter_name = $this->filter_name;
343
		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 departure > 0 AND stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY airport_departure_icao_count DESC LIMIT 10 OFFSET 0";
344
		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 departure > 0 AND stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY airport_departure_icao_count DESC";
345
                 try {
346
                        $sth = $this->db->prepare($query);
347
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
348
                } catch(PDOException $e) {
349
                        echo "error : ".$e->getMessage();
350
                }
351
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
352
                if (empty($all)) {
353
			$filters = array('airlines' => array($stats_airline));
354
            		if ($filter_name != '') {
355
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
356
			}
357
            		$Spotter = new Spotter($this->db);
358
            		$pall = $Spotter->countAllDepartureAirports($limit,0,'',$filters);
359
        		$dall = $Spotter->countAllDetectedDepartureAirports($limit,0,'',$filters);
360
        		$all = array();
361
        		foreach ($pall as $value) {
362
        			$icao = $value['airport_departure_icao'];
363
        			$all[$icao] = $value;
364
        		}
365
        		
366
        		foreach ($dall as $value) {
367
        			$icao = $value['airport_departure_icao'];
368
        			if (isset($all[$icao])) {
369
        				$all[$icao]['airport_departure_icao_count'] = $all[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
370
        			} else $all[$icao] = $value;
371
        		}
372
        		$count = array();
373
        		foreach ($all as $key => $row) {
374
        			$count[$key] = $row['airport_departure_icao_count'];
375
        		}
376
        		array_multisort($count,SORT_DESC,$all);
377
                }
378
                return $all;
379
	}
380
	public function countAllArrivalAirports($limit = true,$stats_airline = '',$filter_name = '') {
381
		global $globalStatsFilters;
382
		if ($filter_name == '') $filter_name = $this->filter_name;
383
		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 arrival > 0 AND stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY airport_arrival_icao_count DESC LIMIT 10 OFFSET 0";
384
		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 arrival > 0 AND stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY airport_arrival_icao_count DESC";
385
		try {
386
			$sth = $this->db->prepare($query);
387
			$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
388
		} catch(PDOException $e) {
389
			echo "error : ".$e->getMessage();
390
		}
391
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
392
		if (empty($all)) {
393
			$filters = array('airlines' => array($stats_airline));
394
			if ($filter_name != '') {
395
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
396
			}
397
			$Spotter = new Spotter($this->db);
398
			$pall = $Spotter->countAllArrivalAirports($limit,0,'',false,$filters);
399
			$dall = $Spotter->countAllDetectedArrivalAirports($limit,0,'',false,$filters);
400
        		$all = array();
401
        		foreach ($pall as $value) {
402
        			$icao = $value['airport_arrival_icao'];
403
        			$all[$icao] = $value;
404
        		}
405
        		
406
        		foreach ($dall as $value) {
407
        			$icao = $value['airport_arrival_icao'];
408
        			if (isset($all[$icao])) {
409
        				$all[$icao]['airport_arrival_icao_count'] = $all[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
410
        			} else $all[$icao] = $value;
411
        		}
412
        		$count = array();
413
        		foreach ($all as $key => $row) {
414
        			$count[$key] = $row['airport_arrival_icao_count'];
415
        		}
416
        		array_multisort($count,SORT_DESC,$all);
417
                }
418
 
419
                return $all;
420
	}
421
	public function countAllMonthsLastYear($limit = true,$stats_airline = '',$filter_name = '') {
422
		global $globalDBdriver, $globalStatsFilters;
423
		if ($filter_name == '') $filter_name = $this->filter_name;
424
		if ($globalDBdriver == 'mysql') {
425
			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";
426
			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";
427
		} else {
428
			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";
429
			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";
430
		}
431
		$query_data = array(':stats_airline' => $stats_airline,':filter_name' => $filter_name);
432
                 try {
433
                        $sth = $this->db->prepare($query);
434
                        $sth->execute($query_data);
435
                } catch(PDOException $e) {
436
                        echo "error : ".$e->getMessage();
437
                }
438
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
439
                if (empty($all)) {
440
			$filters = array('airlines' => array($stats_airline));
441
			if ($filter_name != '') {
442
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
443
			}
444
            		$Spotter = new Spotter($this->db);
445
            		$all = $Spotter->countAllMonthsLastYear($filters);
446
                }
447
                
448
                return $all;
449
	}
450
	
451
	public function countAllDatesLastMonth($stats_airline = '',$filter_name = '') {
452
		global $globalStatsFilters;
453
		if ($filter_name == '') $filter_name = $this->filter_name;
454
		$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";
455
		$query_data = array(':stats_airline' => $stats_airline,':filter_name' => $filter_name);
456
                 try {
457
                        $sth = $this->db->prepare($query);
458
                        $sth->execute($query_data);
459
                } catch(PDOException $e) {
460
                        echo "error : ".$e->getMessage();
461
                }
462
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
463
                if (empty($all)) {
464
			$filters = array('airlines' => array($stats_airline));
465
			if ($filter_name != '') {
466
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
467
			}
468
            		$Spotter = new Spotter($this->db);
469
            		$all = $Spotter->countAllDatesLastMonth($filters);
470
                }
471
                return $all;
472
	}
473
	public function countAllDatesLast7Days($stats_airline = '',$filter_name = '') {
474
		global $globalDBdriver, $globalStatsFilters;
475
		if ($filter_name == '') $filter_name = $this->filter_name;
476
		if ($globalDBdriver == 'mysql') {
477
			$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";
478
		} else {
479
			$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";
480
		}
481
		$query_data = array(':stats_airline' => $stats_airline,':filter_name' => $filter_name);
482
                 try {
483
                        $sth = $this->db->prepare($query);
484
                        $sth->execute($query_data);
485
                } catch(PDOException $e) {
486
                        echo "error : ".$e->getMessage();
487
                }
488
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
489
                if (empty($all)) {
490
			$filters = array('airlines' => array($stats_airline));
491
			if ($filter_name != '') {
492
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
493
			}
494
            		$Spotter = new Spotter($this->db);
495
            		$all = $Spotter->countAllDatesLast7Days($filters);
496
                }
497
                return $all;
498
	}
499
	public function countAllDates($stats_airline = '',$filter_name = '') {
500
		global $globalStatsFilters;
501
		if ($filter_name == '') $filter_name = $this->filter_name;
502
		$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";
503
		$query_data = array(':stats_airline' => $stats_airline,':filter_name' => $filter_name);
504
                 try {
505
                        $sth = $this->db->prepare($query);
506
                        $sth->execute($query_data);
507
                } catch(PDOException $e) {
508
                        echo "error : ".$e->getMessage();
509
                }
510
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
511
                if (empty($all)) {
512
			$filters = array('airlines' => array($stats_airline));
513
			if ($filter_name != '') {
514
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
515
			}
516
            		$Spotter = new Spotter($this->db);
517
            		$all = $Spotter->countAllDates($filters);
518
                }
519
                return $all;
520
	}
521
	public function countAllDatesByAirlines($filter_name = '') {
522
		global $globalStatsFilters;
523
		if ($filter_name == '') $filter_name = $this->filter_name;
524
		$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";
525
		$query_data = array('filter_name' => $filter_name);
526
                 try {
527
                        $sth = $this->db->prepare($query);
528
                        $sth->execute($query_data);
529
                } catch(PDOException $e) {
530
                        echo "error : ".$e->getMessage();
531
                }
532
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
533
                if (empty($all)) {
534
            		$filters = array();
535
            		if ($filter_name != '') {
536
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
537
			}
538
            		$Spotter = new Spotter($this->db);
539
            		$all = $Spotter->countAllDatesByAirlines($filters);
540
                }
541
                return $all;
542
	}
543
	public function countAllMonths($stats_airline = '',$filter_name = '') {
544
		global $globalStatsFilters;
545
		if ($filter_name == '') $filter_name = $this->filter_name;
546
	    	$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";
547
                 try {
548
                        $sth = $this->db->prepare($query);
549
                        $sth->execute(array(':stats_airline' => $stats_airline, ':filter_name' => $filter_name));
550
                } catch(PDOException $e) {
551
                        echo "error : ".$e->getMessage();
552
                }
553
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
554
                if (empty($all)) {
555
			$filters = array('airlines' => array($stats_airline));
556
			if ($filter_name != '') {
557
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
558
			}
559
            		$Spotter = new Spotter($this->db);
560
            		$all = $Spotter->countAllMonths($filters);
561
                }
562
                return $all;
563
	}
564
	public function countAllMilitaryMonths($filter_name = '') {
565
		global $globalStatsFilters;
566
		if ($filter_name == '') $filter_name = $this->filter_name;
567
	    	$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";
568
                 try {
569
                        $sth = $this->db->prepare($query);
570
                        $sth->execute(array(':filter_name' => $filter_name));
571
                } catch(PDOException $e) {
572
                        echo "error : ".$e->getMessage();
573
                }
574
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
575
                if (empty($all)) {
576
            		$filters = array();
577
            		if ($filter_name != '') {
578
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
579
			}
580
            		$Spotter = new Spotter($this->db);
581
            		$all = $Spotter->countAllMilitaryMonths($filters);
582
                }
583
                return $all;
584
	}
585
	public function countAllHours($orderby = 'hour',$limit = true,$stats_airline = '',$filter_name = '') {
586
		global $globalTimezone, $globalDBdriver, $globalStatsFilters;
587
		if ($filter_name == '') $filter_name = $this->filter_name;
588
		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";
589
		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";
590
		if ($orderby == 'hour') {
591
			/*
592
			if ($globalDBdriver == 'mysql') {
593
				$query .= " ORDER BY flight_date ASC";
594
			} else {
595
			*/
596
			$query .= " ORDER BY CAST(flight_date AS integer) ASC";
597
		}
598
		if ($orderby == 'count') $query .= " ORDER BY hour_count DESC";
599
                 try {
600
                        $sth = $this->db->prepare($query);
601
                        $sth->execute(array(':stats_airline' => $stats_airline, ':filter_name' => $filter_name));
602
                } catch(PDOException $e) {
603
                        echo "error : ".$e->getMessage();
604
                }
605
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
606
                if (empty($all)) {
607
			$filters = array('airlines' => array($stats_airline));
608
			if ($filter_name != '') {
609
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
610
			}
611
            		$Spotter = new Spotter($this->db);
612
            		$all = $Spotter->countAllHours($orderby,$filters);
613
                }
614
                return $all;
615
	}
616
	
617
	public function countOverallFlights($stats_airline = '', $filter_name = '') {
618
		global $globalStatsFilters;
619
		if ($filter_name == '') $filter_name = $this->filter_name;
620
		$all = $this->getSumStats('flights_bymonth',date('Y'),$stats_airline,$filter_name);
621
		if (empty($all)) {
622
			$filters = array('airlines' => array($stats_airline));
623
			if ($filter_name != '') {
624
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
625
			}
626
			$Spotter = new Spotter($this->db);
627
			$all = $Spotter->countOverallFlights($filters);
628
		}
629
		return $all;
630
	}
631
	public function countOverallMilitaryFlights($filter_name = '') {
632
		global $globalStatsFilters;
633
		if ($filter_name == '') $filter_name = $this->filter_name;
634
		$all = $this->getSumStats('military_flights_bymonth',date('Y'),'',$filter_name);
635
		if (empty($all)) {
636
		        $filters = array();
637
            		if ($filter_name != '') {
638
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
639
			}
640
			$Spotter = new Spotter($this->db);
641
			$all = $Spotter->countOverallMilitaryFlights($filters);
642
		}
643
		return $all;
644
	}
645
	public function countOverallArrival($stats_airline = '',$filter_name = '') {
646
		global $globalStatsFilters;
647
		if ($filter_name == '') $filter_name = $this->filter_name;
648
		$all = $this->getSumStats('realarrivals_bymonth',date('Y'),$stats_airline,$filter_name);
649
		if (empty($all)) {
650
			$filters = array('airlines' => array($stats_airline));
651
			if ($filter_name != '') {
652
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
653
			}
654
			$Spotter = new Spotter($this->db);
655
			$all = $Spotter->countOverallArrival($filters);
656
		}
657
		return $all;
658
	}
659
	public function countOverallAircrafts($stats_airline = '',$filter_name = '') {
660
		global $globalStatsFilters;
661
		if ($filter_name == '') $filter_name = $this->filter_name;
662
		$all = $this->getSumStats('aircrafts_bymonth',date('Y'),$stats_airline,$filter_name);
663
		if (empty($all)) {
664
			$filters = array('airlines' => array($stats_airline));
665
			if ($filter_name != '') {
666
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
667
			}
668
			$Spotter = new Spotter($this->db);
669
			$all = $Spotter->countOverallAircrafts($filters);
670
		}
671
		return $all;
672
	}
673
	public function countOverallAirlines($filter_name = '') {
674
		global $globalStatsFilters;
675
		if ($filter_name == '') $filter_name = $this->filter_name;
676
		$query = "SELECT COUNT(*) AS nb_airline FROM stats_airline WHERE filter_name = :filter_name";
677
                 try {
678
                        $sth = $this->db->prepare($query);
679
                        $sth->execute(array(':filter_name' => $filter_name));
680
                } catch(PDOException $e) {
681
                        echo "error : ".$e->getMessage();
682
                }
683
                $result = $sth->fetchAll(PDO::FETCH_ASSOC);
684
                $all = $result[0]['nb_airline'];
685
		//$all = $this->getSumStats('airlines_bymonth',date('Y'));
686
		if (empty($all)) {
687
            		$filters = array();
688
            		if ($filter_name != '') {
689
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
690
			}
691
			$Spotter = new Spotter($this->db);
692
			$all = $Spotter->countOverallAirlines($filters);
693
		}
694
		return $all;
695
	}
696
	public function countOverallOwners($stats_airline = '',$filter_name = '') {
697
		global $globalStatsFilters;
698
		if ($filter_name == '') $filter_name = $this->filter_name;
699
		/*
700
		$query = "SELECT COUNT(*) AS nb_owner FROM stats_owner";
701
                 try {
702
                        $sth = $this->db->prepare($query);
703
                        $sth->execute();
704
                } catch(PDOException $e) {
705
                        echo "error : ".$e->getMessage();
706
                }
707
                $result = $sth->fetchAll(PDO::FETCH_ASSOC);
708
                $all = $result[0]['nb_owner'];
709
                */
710
		$all = $this->getSumStats('owners_bymonth',date('Y'),$stats_airline,$filter_name);
711
		if (empty($all)) {
712
			$filters = array('airlines' => array($stats_airline));
713
			if ($filter_name != '') {
714
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
715
			}
716
			$Spotter = new Spotter($this->db);
717
			$all = $Spotter->countOverallOwners($filters);
718
		}
719
		return $all;
720
	}
721
	public function countOverallPilots($stats_airline = '',$filter_name = '') {
722
		global $globalStatsFilters;
723
		if ($filter_name == '') $filter_name = $this->filter_name;
724
		$all = $this->getSumStats('pilots_bymonth',date('Y'),$stats_airline,$filter_name);
725
		if (empty($all)) {
726
			$filters = array('airlines' => array($stats_airline));
727
			if ($filter_name != '') {
728
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
729
			}
730
			$Spotter = new Spotter($this->db);
731
			$all = $Spotter->countOverallPilots($filters);
732
		}
733
		return $all;
734
	}
735
736
	public function getLast7DaysAirports($airport_icao = '', $stats_airline = '',$filter_name = '') {
737
		if ($filter_name == '') $filter_name = $this->filter_name;
738
		$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";
739
		$query_values = array(':airport_icao' => $airport_icao,':stats_airline' => $stats_airline, ':filter_name' => $filter_name);
740
                 try {
741
                        $sth = $this->db->prepare($query);
742
                        $sth->execute($query_values);
743
                } catch(PDOException $e) {
744
                        echo "error : ".$e->getMessage();
745
                }
746
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
747
                return $all;
748
	}
749
	public function getStats($type,$stats_airline = '', $filter_name = '') {
750
		if ($filter_name == '') $filter_name = $this->filter_name;
751
                $query = "SELECT * FROM stats WHERE stats_type = :type AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY stats_date";
752
                $query_values = array(':type' => $type,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
753
                 try {
754
                        $sth = $this->db->prepare($query);
755
                        $sth->execute($query_values);
756
                } catch(PDOException $e) {
757
                        echo "error : ".$e->getMessage();
758
                }
759
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
760
                return $all;
761
        }
762
	public function getSumStats($type,$year,$stats_airline = '',$filter_name = '') {
763
		if ($filter_name == '') $filter_name = $this->filter_name;
764
    		global $globalArchiveMonths, $globalDBdriver;
765
    		if ($globalDBdriver == 'mysql') {
766
	                $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";
767
	        } else {
768
            		$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";
769
                }
770
                $query_values = array(':type' => $type, ':year' => $year, ':stats_airline' => $stats_airline,':filter_name' => $filter_name);
771
                 try {
772
                        $sth = $this->db->prepare($query);
773
                        $sth->execute($query_values);
774
                } catch(PDOException $e) {
775
                        echo "error : ".$e->getMessage();
776
                }
777
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
778
                return $all[0]['total'];
779
        }
780
	public function getStatsTotal($type, $stats_airline = '', $filter_name = '') {
781
    		global $globalArchiveMonths, $globalDBdriver;
782
		if ($filter_name == '') $filter_name = $this->filter_name;
783
    		if ($globalDBdriver == 'mysql') {
784
			$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";
785
		} else {
786
			$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";
787
                }
788
                $query_values = array(':type' => $type, ':stats_airline' => $stats_airline, ':filter_name' => $filter_name);
789
                 try {
790
                        $sth = $this->db->prepare($query);
791
                        $sth->execute($query_values);
792
                } catch(PDOException $e) {
793
                        echo "error : ".$e->getMessage();
794
                }
795
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
796
                return $all[0]['total'];
797
        }
798
	public function getStatsAircraftTotal($stats_airline = '', $filter_name = '') {
799
    		global $globalArchiveMonths, $globalDBdriver;
800
		if ($filter_name == '') $filter_name = $this->filter_name;
801
    		if ($globalDBdriver == 'mysql') {
802
			$query = "SELECT SUM(cnt) as total FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name";
803
                } else {
804
			$query = "SELECT SUM(cnt) as total FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name";
805
                }
806
                 try {
807
                        $sth = $this->db->prepare($query);
808
                        $sth->execute(array(':stats_airline' => $stats_airline, ':filter_name' => $filter_name));
809
                } catch(PDOException $e) {
810
                        echo "error : ".$e->getMessage();
811
                }
812
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
813
                return $all[0]['total'];
814
        }
815
	public function getStatsAirlineTotal($filter_name = '') {
816
    		global $globalArchiveMonths, $globalDBdriver;
817
		if ($filter_name == '') $filter_name = $this->filter_name;
818
    		if ($globalDBdriver == 'mysql') {
819
			$query = "SELECT SUM(cnt) as total FROM stats_airline WHERE filter_name = :filter_name";
820
                } else {
821
			$query = "SELECT SUM(cnt) as total FROM stats_airline WHERE filter_name = :filter_name";
822
                }
823
                 try {
824
                        $sth = $this->db->prepare($query);
825
                        $sth->execute(array(':filter_name' => $filter_name));
826
                } catch(PDOException $e) {
827
                        echo "error : ".$e->getMessage();
828
                }
829
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
830
                return $all[0]['total'];
831
        }
832
	public function getStatsOwnerTotal($filter_name = '') {
833
    		global $globalArchiveMonths, $globalDBdriver;
834
		if ($filter_name == '') $filter_name = $this->filter_name;
835
    		if ($globalDBdriver == 'mysql') {
836
			$query = "SELECT SUM(cnt) as total FROM stats_owner WHERE filter_name = :filter_name";
837
		} else {
838
			$query = "SELECT SUM(cnt) as total FROM stats_owner WHERE filter_name = :filter_name";
839
                }
840
                 try {
841
                        $sth = $this->db->prepare($query);
842
                        $sth->execute(array(':filter_name' => $filter_name));
843
                } catch(PDOException $e) {
844
                        echo "error : ".$e->getMessage();
845
                }
846
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
847
                return $all[0]['total'];
848
        }
849
	public function getStatsPilotTotal($filter_name = '') {
850
    		global $globalArchiveMonths, $globalDBdriver;
851
		if ($filter_name == '') $filter_name = $this->filter_name;
852
    		if ($globalDBdriver == 'mysql') {
853
            		$query = "SELECT SUM(cnt) as total FROM stats_pilot WHERE filter_name = :filter_name";
854
            	} else {
855
            		$query = "SELECT SUM(cnt) as total FROM stats_pilot WHERE filter_name = :filter_name";
856
            	}
857
                 try {
858
                        $sth = $this->db->prepare($query);
859
                        $sth->execute(array(':filter_name' => $filter_name));
860
                } catch(PDOException $e) {
861
                        echo "error : ".$e->getMessage();
862
                }
863
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
864
                return $all[0]['total'];
865
        }
866
867
	public function addStat($type,$cnt,$stats_date,$stats_airline = '',$filter_name = '') {
868
		global $globalDBdriver;
869
		if ($filter_name == '') $filter_name = $this->filter_name;
870
		if ($globalDBdriver == 'mysql') {
871
			$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";
872
                } else {
873
			$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);"; 
874
		}
875
                $query_values = array(':type' => $type,':cnt' => $cnt,':stats_date' => $stats_date, ':stats_airline' => $stats_airline,':filter_name' => $filter_name);
876
                 try {
877
                        $sth = $this->db->prepare($query);
878
                        $sth->execute($query_values);
879
                } catch(PDOException $e) {
880
                        return "error : ".$e->getMessage();
881
                }
882
        }
883
	public function updateStat($type,$cnt,$stats_date,$stats_airline = '',$filter_name = '') {
884
		global $globalDBdriver;
885
		if ($filter_name == '') $filter_name = $this->filter_name;
886
		if ($globalDBdriver == 'mysql') {
887
			$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";
888
		} else {
889
            		//$query = "INSERT INTO stats (stats_type,cnt,stats_date) VALUES (:type,:cnt,:stats_date) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt, stats_date = :date";
890
			$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);"; 
891
                }
892
                $query_values = array(':type' => $type,':cnt' => $cnt,':stats_date' => $stats_date,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
893
                 try {
894
                        $sth = $this->db->prepare($query);
895
                        $sth->execute($query_values);
896
                } catch(PDOException $e) {
897
                        return "error : ".$e->getMessage();
898
                }
899
        }
900
	public function getStatsSource($date,$stats_type = '') {
901
		if ($stats_type == '') {
902
			$query = "SELECT * FROM stats_source WHERE stats_date = :date ORDER BY source_name";
903
			$query_values = array(':date' => $date);
904
		} else {
905
			$query = "SELECT * FROM stats_source WHERE stats_date = :date AND stats_type = :stats_type ORDER BY source_name";
906
			$query_values = array(':date' => $date,':stats_type' => $stats_type);
907
		}
908
                 try {
909
                        $sth = $this->db->prepare($query);
910
                        $sth->execute($query_values);
911
                } catch(PDOException $e) {
912
                        echo "error : ".$e->getMessage();
913
                }
914
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
915
                return $all;
916
        }
917
918
	public function addStatSource($data,$source_name,$stats_type,$date) {
919
		global $globalDBdriver;
920
		if ($globalDBdriver == 'mysql') {
921
			$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";
922
		} else {
923
			$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);"; 
924
                }
925
                $query_values = array(':data' => $data,':stats_date' => $date,':source_name' => $source_name,':stats_type' => $stats_type);
926
                 try {
927
                        $sth = $this->db->prepare($query);
928
                        $sth->execute($query_values);
929
                } catch(PDOException $e) {
930
                        return "error : ".$e->getMessage();
931
                }
932
        }
933
	public function addStatFlight($type,$date_name,$cnt,$stats_airline = '',$filter_name = '') {
934
                $query = "INSERT INTO stats_flight (stats_type,flight_date,cnt,stats_airline,filter_name) VALUES (:type,:flight_date,:cnt,:stats_airline,:filter_name)";
935
                $query_values = array(':type' => $type,':flight_date' => $date_name,':cnt' => $cnt, ':stats_airline' => $stats_airline,':filter_name' => $filter_name);
936
                 try {
937
                        $sth = $this->db->prepare($query);
938
                        $sth->execute($query_values);
939
                } catch(PDOException $e) {
940
                        return "error : ".$e->getMessage();
941
                }
942
        }
943
	public function addStatAircraftRegistration($registration,$cnt,$aircraft_icao = '',$airline_icao = '',$filter_name = '') {
944
		global $globalDBdriver;
945
		if ($globalDBdriver == 'mysql') {
946
			$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";
947
		} else {
948
			$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);"; 
949
		}
950
                $query_values = array(':aircraft_icao' => $aircraft_icao,':registration' => $registration,':cnt' => $cnt,':stats_airline' => $airline_icao, ':filter_name' => $filter_name);
951
                 try {
952
                        $sth = $this->db->prepare($query);
953
                        $sth->execute($query_values);
954
                } catch(PDOException $e) {
955
                        return "error : ".$e->getMessage();
956
                }
957
        }
958
	public function addStatCallsign($callsign_icao,$cnt,$airline_icao = '', $filter_name = '') {
959
		global $globalDBdriver;
960
		if ($globalDBdriver == 'mysql') {
961
			$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";
962
		} else {
963
			$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);"; 
964
		}
965
                $query_values = array(':callsign_icao' => $callsign_icao,':airline_icao' => $airline_icao,':cnt' => $cnt, ':filter_name' => $filter_name);
966
                 try {
967
                        $sth = $this->db->prepare($query);
968
                        $sth->execute($query_values);
969
                } catch(PDOException $e) {
970
                        return "error : ".$e->getMessage();
971
                }
972
        }
973
	public function addStatCountry($iso2,$iso3,$name,$cnt,$filter_name = '') {
974
		global $globalDBdriver;
975
		if ($globalDBdriver == 'mysql') {
976
			$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";
977
		} else {
978
			$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);"; 
979
		}
980
                $query_values = array(':iso2' => $iso2,':iso3' => $iso3,':name' => $name,':cnt' => $cnt,':filter_name' => $filter_name);
981
                 try {
982
                        $sth = $this->db->prepare($query);
983
                        $sth->execute($query_values);
984
                } catch(PDOException $e) {
985
                        return "error : ".$e->getMessage();
986
                }
987
        }
988
	public function addStatAircraft($aircraft_icao,$cnt,$aircraft_name = '',$aircraft_manufacturer = '', $airline_icao = '', $filter_name = '') {
989
		global $globalDBdriver;
990
		if ($globalDBdriver == 'mysql') {
991
			$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";
992
		} else {
993
			$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);"; 
994
		}
995
                $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);
996
                 try {
997
                        $sth = $this->db->prepare($query);
998
                        $sth->execute($query_values);
999
                } catch(PDOException $e) {
1000
                        return "error : ".$e->getMessage();
1001
                }
1002
        }
1003
	public function addStatAirline($airline_icao,$cnt,$airline_name = '',$filter_name = '') {
1004
		global $globalDBdriver;
1005
		if ($globalDBdriver == 'mysql') {
1006
			$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";
1007
		} else {
1008
			$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);"; 
1009
		}
1010
                $query_values = array(':airline_icao' => $airline_icao,':airline_name' => $airline_name,':cnt' => $cnt,':filter_name' => $filter_name);
1011
                 try {
1012
                        $sth = $this->db->prepare($query);
1013
                        $sth->execute($query_values);
1014
                } catch(PDOException $e) {
1015
                        return "error : ".$e->getMessage();
1016
                }
1017
        }
1018
	public function addStatOwner($owner_name,$cnt,$stats_airline = '', $filter_name = '') {
1019
		global $globalDBdriver;
1020
		if ($globalDBdriver == 'mysql') {
1021
			$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";
1022
		} else {
1023
			$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);"; 
1024
		}
1025
                $query_values = array(':owner_name' => $owner_name,':cnt' => $cnt,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
1026
                 try {
1027
                        $sth = $this->db->prepare($query);
1028
                        $sth->execute($query_values);
1029
                } catch(PDOException $e) {
1030
                        return "error : ".$e->getMessage();
1031
                }
1032
        }
1033
	public function addStatPilot($pilot_id,$cnt,$pilot_name,$stats_airline = '',$filter_name = '') {
1034
		global $globalDBdriver;
1035
		if ($globalDBdriver == 'mysql') {
1036
			$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";
1037
		} else {
1038
			$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);"; 
1039
		}
1040
                $query_values = array(':pilot_id' => $pilot_id,':cnt' => $cnt,':pilot_name' => $pilot_name,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
1041
                 try {
1042
                        $sth = $this->db->prepare($query);
1043
                        $sth->execute($query_values);
1044
                } catch(PDOException $e) {
1045
                        return "error : ".$e->getMessage();
1046
                }
1047
        }
1048
	public function addStatDepartureAirports($airport_icao,$airport_name,$airport_city,$airport_country,$departure,$airline_icao = '',$filter_name = '') {
1049
		global $globalDBdriver;
1050
		if ($globalDBdriver == 'mysql') {
1051
			$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";
1052
		} else {
1053
			$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);"; 
1054
		}
1055
                $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);
1056
                 try {
1057
                        $sth = $this->db->prepare($query);
1058
                        $sth->execute($query_values);
1059
                } catch(PDOException $e) {
1060
                        return "error : ".$e->getMessage();
1061
                }
1062
        }
1063
	public function addStatDepartureAirportsDaily($date,$airport_icao,$airport_name,$airport_city,$airport_country,$departure,$airline_icao = '',$filter_name = '') {
1064
		global $globalDBdriver;
1065
		if ($globalDBdriver == 'mysql') {
1066
			$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";
1067
		} else {
1068
			$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);"; 
1069
		}
1070
                $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);
1071
                 try {
1072
                        $sth = $this->db->prepare($query);
1073
                        $sth->execute($query_values);
1074
                } catch(PDOException $e) {
1075
                        return "error : ".$e->getMessage();
1076
                }
1077
        }
1078
	public function addStatArrivalAirports($airport_icao,$airport_name,$airport_city,$airport_country,$arrival,$airline_icao = '',$filter_name = '') {
1079
		global $globalDBdriver;
1080
		if ($globalDBdriver == 'mysql') {
1081
			$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";
1082
		} else {
1083
			$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);"; 
1084
		}
1085
                $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);
1086
                 try {
1087
                        $sth = $this->db->prepare($query);
1088
                        $sth->execute($query_values);
1089
                } catch(PDOException $e) {
1090
                        return "error : ".$e->getMessage();
1091
                }
1092
        }
1093
	public function addStatArrivalAirportsDaily($date,$airport_icao,$airport_name,$airport_city,$airport_country,$arrival,$airline_icao = '',$filter_name = '') {
1094
		global $globalDBdriver;
1095
		if ($globalDBdriver == 'mysql') {
1096
			$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";
1097
		} else {
1098
			$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);"; 
1099
		}
1100
                $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);
1101
                 try {
1102
                        $sth = $this->db->prepare($query);
1103
                        $sth->execute($query_values);
1104
                } catch(PDOException $e) {
1105
                        return "error : ".$e->getMessage();
1106
                }
1107
        }
1108
1109
	public function deleteStat($id) {
1110
                $query = "DELETE FROM stats WHERE stats_id = :id";
1111
                $query_values = array(':id' => $id);
1112
                 try {
1113
                        $sth = $this->db->prepare($query);
1114
                        $sth->execute($query_values);
1115
                } catch(PDOException $e) {
1116
                        return "error : ".$e->getMessage();
1117
                }
1118
        }
1119
	public function deleteStatFlight($type) {
1120
                $query = "DELETE FROM stats_flight WHERE stats_type = :type";
1121
                $query_values = array(':type' => $type);
1122
                 try {
1123
                        $sth = $this->db->prepare($query);
1124
                        $sth->execute($query_values);
1125
                } catch(PDOException $e) {
1126
                        return "error : ".$e->getMessage();
1127
                }
1128
        }
1129
	public function deleteStatAirport($type) {
1130
                $query = "DELETE FROM stats_airport WHERE stats_type = :type";
1131
                $query_values = array(':type' => $type);
1132
                 try {
1133
                        $sth = $this->db->prepare($query);
1134
                        $sth->execute($query_values);
1135
                } catch(PDOException $e) {
1136
                        return "error : ".$e->getMessage();
1137
                }
1138
        }
1139
        
1140
        public function addOldStats() {
1141
    		global $globalDebug, $globalArchiveMonths, $globalArchive, $globalArchiveYear, $globalDBdriver, $globalStatsFilters;
1142
    		$Common = new Common();
1143
    		$Connection = new Connection();
1144
    		date_default_timezone_set('UTC');
1145
    		$last_update = $this->getLastStatsUpdate('last_update_stats');
1146
		//print_r($last_update);
1147
		/*
1148
		$flightsbymonth = $this->getStats('flights_by_month');
1149
    		if (empty($last_update) && empty($flightsbymonth)) {
1150
			// Initial update
1151
			$Spotter = new Spotter($this->db);
1152
			$alldata = $Spotter->countAllMonths();
1153
			$lastyear = false;
1154
			foreach ($alldata as $number) {
1155
				if ($number['year_name'] != date('Y')) $lastyear = true;
1156
				$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'])));
1157
			}
1158
			$alldata = $Spotter->countAllMilitaryMonths();
1159
			//$lastyear = false;
1160
			foreach ($alldata as $number) {
1161
				if ($number['year_name'] != date('Y')) $lastyear = true;
1162
				$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'])));
1163
			}
1164
			$alldata = $Spotter->countAllMonthsOwners();
1165
			foreach ($alldata as $number) {
1166
				$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'])));
1167
			}
1168
			$alldata = $Spotter->countAllMonthsPilots();
1169
			foreach ($alldata as $number) {
1170
				$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'])));
1171
			}
1172
			$alldata = $Spotter->countAllMonthsAirlines();
1173
			foreach ($alldata as $number) {
1174
				$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'])));
1175
			}
1176
			$alldata = $Spotter->countAllMonthsAircrafts();
1177
			foreach ($alldata as $number) {
1178
				$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'])));
1179
			}
1180
			$alldata = $Spotter->countAllMonthsRealArrivals();
1181
			foreach ($alldata as $number) {
1182
				$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'])));
1183
			}
1184
			$this->deleteStatFlight('month');
1185
			$alldata = $Spotter->countAllDatesLastMonth();
1186
			foreach ($alldata as $number) {
1187
				$this->addStatFlight('month',$number['date_name'],$number['date_count']);
1188
			}
1189
			$previousdata = $this->countAllDates();
1190
			$this->deleteStatFlight('date');
1191
			$alldata = $Common->array_merge_noappend($previousdata,$Spotter->countAllDates());
1192
			$values = array();
1193
			foreach ($alldata as $cnt) {
1194
				$values[] = $cnt['date_count'];
1195
			}
1196
			array_multisort($values,SORT_DESC,$alldata);
1197
			array_splice($alldata,11);
1198
			foreach ($alldata as $number) {
1199
				$this->addStatFlight('date',$number['date_name'],$number['date_count']);
1200
			}
1201
			$this->deleteStatFlight('hour');
1202
			$alldata = $Spotter->countAllHours('hour');
1203
			foreach ($alldata as $number) {
1204
				$this->addStatFlight('hour',$number['hour_name'],$number['hour_count']);
1205
			}
1206
			if ($lastyear) {
1207
				$monthsSinceLastYear = date('n');
1208
				$alldata = $Spotter->countAllAircraftTypes(false,$monthsSinceLastYear);
1209
				foreach ($alldata as $number) {
1210
					$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer']);
1211
				}
1212
				$alldata = $Spotter->countAllAirlines(false,$monthsSinceLastYear);
1213
				foreach ($alldata as $number) {
1214
					$this->addStatAirline($number['airline_icao'],$number['airline_count'],$number['airline_name']);
1215
				}
1216
				if ($Connection->tableExists('countries')) {
1217
					$alldata = $Spotter->countAllFlightOverCountries(false,$monthsSinceLastYear);
1218
					foreach ($alldata as $number) {
1219
						$this->addStatCountry($number['flight_country_iso2'],$number['flight_country_iso3'],$number['flight_country'],$number['flight_count']);
1220
					}
1221
				}
1222
				$alldata = $Spotter->countAllOwners(false,$monthsSinceLastYear);
1223
				foreach ($alldata as $number) {
1224
					$this->addStatOwner($number['owner_name'],$number['owner_count']);
1225
				}
1226
				$alldata = $Spotter->countAllPilots(false,$monthsSinceLastYear);
1227
				foreach ($alldata as $number) {
1228
					$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name']);
1229
				}
1230
				$previous_year = date('Y');
1231
				$previous_year--;
1232
				$this->addStat('aircrafts_byyear',$this->getStatsAircraftTotal(),$previous_year.'-01-01 00:00:00');
1233
				$this->addStat('airlines_byyear',$this->getStatsAirlineTotal(),$previous_year.'-01-01 00:00:00');
1234
				$this->addStat('owner_byyear',$this->getStatsOwnerTotal(),$previous_year.'-01-01 00:00:00');
1235
				$this->addStat('pilot_byyear',$this->getStatsPilotTotal(),$previous_year.'-01-01 00:00:00');
1236
				
1237
				if (isset($globalArchiveYear) && $globalArchiveYear) {
1238
					if ($globalArchive) {
1239
						$query = "INSERT INTO spotter_archive_output SELECT * FROM spotter_output WHERE spotter_output.date < '".date('Y')."-01-01 00:00:00'";
1240
						//echo $query;
1241
						try {
1242
							$sth = $this->db->prepare($query);
1243
							$sth->execute();
1244
						} catch(PDOException $e) {
1245
							return "error : ".$e->getMessage().' - query : '.$query."\n";
1246
						}
1247
					}
1248
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < '".date('Y')."-01-01 00:00:00'";
1249
					try {
1250
						$sth = $this->db->prepare($query);
1251
						$sth->execute();
1252
					} catch(PDOException $e) {
1253
						return "error : ".$e->getMessage().' - query : '.$query."\n";
1254
					}
1255
				}
1256
			}
1257
			if (!isset($globalArchiveMonths) || $globalArchiveMonths == '') $globalArchiveMonths = 2;
1258
			if ($globalArchiveMonths > 0) {
1259
				$alldata = $Spotter->countAllAircraftTypes(false,$globalArchiveMonths);
1260
				foreach ($alldata as $number) {
1261
					$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer']);
1262
				}
1263
				$alldata = $Spotter->countAllAirlines(false,$globalArchiveMonths);
1264
				foreach ($alldata as $number) {
1265
					$this->addStatAirline($number['airline_icao'],$number['airline_count'],$number['airline_name']);
1266
				}
1267
				$alldata = $Spotter->countAllAircraftRegistrations(false,$globalArchiveMonths);
1268
				foreach ($alldata as $number) {
1269
					$this->addStatAircraftRegistration($number['registration'],$number['aircraft_registration_count'],$number['aircraft_icao']);
1270
				}
1271
				$alldata = $Spotter->countAllCallsigns(false,$globalArchiveMonths);
1272
				foreach ($alldata as $number) {
1273
					$this->addStatCallsign($number['callsign_icao'],$number['callsign_icao_count'],$number['airline_icao']);
1274
				}
1275
				$alldata = $Spotter->countAllOwners(false,$globalArchiveMonths);
1276
				foreach ($alldata as $number) {
1277
					$this->addStatOwner($number['owner_name'],$number['owner_count']);
1278
				}
1279
				if ($Connection->tableExists('countries')) {
1280
					$alldata = $Spotter->countAllFlightOverCountries(false,$globalArchiveMonths);
1281
					foreach ($alldata as $number) {
1282
						$this->addStatCountry($number['flight_country_iso2'],$number['flight_country_iso3'],$number['flight_country'],$number['flight_count']);
1283
					}
1284
				}
1285
				$alldata = $Spotter->countAllPilots(false,$globalArchiveMonths);
1286
				foreach ($alldata as $number) {
1287
					$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name']);
1288
				}
1289
				$pall = $Spotter->countAllDepartureAirports(false,$globalArchiveMonths);
1290
        			$dall = $Spotter->countAllDetectedDepartureAirports(false,$globalArchiveMonths);
1291
	        		$alldata = array();
1292
    				foreach ($pall as $value) {
1293
	        			$icao = $value['airport_departure_icao'];
1294
    					$alldata[$icao] = $value;
1295
	        		}
1296
	        		foreach ($dall as $value) {
1297
    					$icao = $value['airport_departure_icao'];
1298
        				if (isset($alldata[$icao])) {                                                           
1299
        					$alldata[$icao]['airport_departure_icao_count'] = $alldata[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
1300
	        			} else $alldata[$icao] = $value;
1301
    				}
1302
        			$count = array();
1303
        			foreach ($alldata as $key => $row) {
1304
        				$count[$key] = $row['airport_departure_icao_count'];
1305
	        		}
1306
    				array_multisort($count,SORT_DESC,$alldata);
1307
1308
				//print_r($alldate);
1309
				foreach ($alldata as $number) {
1310
					$this->addStatDepartureAirports($number['airport_departure_icao'],$number['airport_departure_name'],$number['airport_departure_city'],$number['airport_departure_country'],$number['airport_departure_icao_count']);
1311
				}
1312
				$pdata = $Spotter->countAllArrivalAirports(false,$globalArchiveMonths);
1313
        			$dall = $Spotter->countAllDetectedArrivalAirports(false,$globalArchiveMonths);
1314
	        		$alldata = array();
1315
    				foreach ($pdata as $value) {
1316
	        			$icao = $value['airport_arrival_icao'];
1317
    					$alldata[$icao] = $value;
1318
	        		}
1319
	        		foreach ($dall as $value) {
1320
    					$icao = $value['airport_arrival_icao'];
1321
        				if (isset($alldata[$icao])) {                                                           
1322
        					$alldata[$icao]['airport_arrival_icao_count'] = $alldata[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
1323
	        			} else $alldata[$icao] = $value;
1324
    				}
1325
        			$count = array();
1326
        			foreach ($alldata as $key => $row) {
1327
        				$count[$key] = $row['airport_arrival_icao_count'];
1328
	        		}
1329
    				array_multisort($count,SORT_DESC,$alldata);
1330
				foreach ($alldata as $number) {
1331
					$this->addStatArrivalAirports($number['airport_arrival_icao'],$number['airport_arrival_name'],$number['airport_arrival_city'],$number['airport_arrival_country'],$number['airport_arrival_icao_count']);
1332
				}
1333
				$this->addStat('aircrafts_byyear',$this->getStatsAircraftTotal(),date('Y').'-01-01 00:00:00');
1334
				$this->addStat('airlines_byyear',$this->getStatsAirlineTotal(),date('Y').'-01-01 00:00:00');
1335
				$this->addStat('owner_byyear',$this->getStatsOwnerTotal(),date('Y').'-01-01 00:00:00');
1336
				$this->addStat('pilot_byyear',$this->getStatsPilotTotal(),date('Y').'-01-01 00:00:00');
1337
			
1338
				if ($globalArchive) {
1339
					if ($globalDBdriver == 'mysql') {
1340
						$query = "INSERT INTO spotter_archive_output SELECT * FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
1341
					} else {
1342
						$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)";
1343
					}
1344
					try {
1345
						$sth = $this->db->prepare($query);
1346
						$sth->execute();
1347
					} catch(PDOException $e) {
1348
						return "error : ".$e->getMessage().' - query : '.$query."\n";
1349
					}
1350
				}
1351
	
1352
				//$query = 'DELETE FROM spotter_output WHERE spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$globalArchiveMonths.' MONTH)';
1353
				if ($globalDBdriver == 'mysql') {
1354
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
1355
				} else {
1356
					$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)";
1357
				}
1358
				try {
1359
					$sth = $this->db->prepare($query);
1360
					$sth->execute();
1361
				} catch(PDOException $e) {
1362
					return "error : ".$e->getMessage().' - query : '.$query."\n";
1363
				}
1364
			}
1365
			$this->addLastStatsUpdate('last_update_stats',date('Y-m-d G:i:s'));
1366
		} else {
1367
		*/
1368
			if ($globalDebug) echo 'Update stats !'."\n";
1369
			if ($globalDebug) echo 'Count all aircraft types...'."\n";
1370
			if (isset($last_update[0]['value'])) {
1371
				$last_update_day = $last_update[0]['value'];
1372
			} else $last_update_day = '2012-12-12 12:12:12';
1373
			$Spotter = new Spotter($this->db);
1374
			$alldata = $Spotter->countAllAircraftTypes(false,0,$last_update_day);
1375
			foreach ($alldata as $number) {
1376
				$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer']);
1377
			}
1378
			if ($globalDebug) echo 'Count all airlines...'."\n";
1379
			$alldata = $Spotter->countAllAirlines(false,0,$last_update_day);
1380
			foreach ($alldata as $number) {
1381
				$this->addStatAirline($number['airline_icao'],$number['airline_count'],$number['airline_name']);
1382
			}
1383
			if ($globalDebug) echo 'Count all registrations...'."\n";
1384
			$alldata = $Spotter->countAllAircraftRegistrations(false,0,$last_update_day);
1385
			foreach ($alldata as $number) {
1386
				$this->addStatAircraftRegistration($number['registration'],$number['aircraft_registration_count'],$number['aircraft_icao']);
1387
			}
1388
			if ($globalDebug) echo 'Count all callsigns...'."\n";
1389
			$alldata = $Spotter->countAllCallsigns(false,0,$last_update_day);
1390
			foreach ($alldata as $number) {
1391
				$this->addStatCallsign($number['callsign_icao'],$number['callsign_icao_count'],$number['airline_icao']);
1392
			}
1393
			if ($globalDebug) echo 'Count all owners...'."\n";
1394
			$alldata = $Spotter->countAllOwners(false,0,$last_update_day);
1395
			foreach ($alldata as $number) {
1396
				$this->addStatOwner($number['owner_name'],$number['owner_count']);
1397
			}
1398
			if ($globalDebug) echo 'Count all pilots...'."\n";
1399
			$alldata = $Spotter->countAllPilots(false,0,$last_update_day);
1400
			foreach ($alldata as $number) {
1401
				$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name']);
1402
			}
1403
			
1404
			if ($globalDebug) echo 'Count all departure airports...'."\n";
1405
			$pall = $Spotter->countAllDepartureAirports(false,0,$last_update_day);
1406
			if ($globalDebug) echo 'Count all detected departure airports...'."\n";
1407
        		$dall = $Spotter->countAllDetectedDepartureAirports(false,0,$last_update_day);
1408
			if ($globalDebug) echo 'Order departure airports...'."\n";
1409
	        	$alldata = array();
1410
	        	
1411
    			foreach ($pall as $value) {
1412
	        		$icao = $value['airport_departure_icao'];
1413
    				$alldata[$icao] = $value;
1414
	        	}
1415
	        	foreach ($dall as $value) {
1416
    				$icao = $value['airport_departure_icao'];
1417
        			if (isset($alldata[$icao])) {
1418
    					$alldata[$icao]['airport_departure_icao_count'] = $alldata[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
1419
        			} else $alldata[$icao] = $value;
1420
			}
1421
    			$count = array();
1422
    			foreach ($alldata as $key => $row) {
1423
    				$count[$key] = $row['airport_departure_icao_count'];
1424
        		}
1425
			array_multisort($count,SORT_DESC,$alldata);
1426
			foreach ($alldata as $number) {
1427
				echo $this->addStatDepartureAirports($number['airport_departure_icao'],$number['airport_departure_name'],$number['airport_departure_city'],$number['airport_departure_country'],$number['airport_departure_icao_count']);
1428
			}
1429
			if ($globalDebug) echo 'Count all arrival airports...'."\n";
1430
			$pall = $Spotter->countAllArrivalAirports(false,0,$last_update_day);
1431
			if ($globalDebug) echo 'Count all detected arrival airports...'."\n";
1432
        		$dall = $Spotter->countAllDetectedArrivalAirports(false,0,$last_update_day);
1433
			if ($globalDebug) echo 'Order arrival airports...'."\n";
1434
	        	$alldata = array();
1435
    			foreach ($pall as $value) {
1436
	        		$icao = $value['airport_arrival_icao'];
1437
    				$alldata[$icao] = $value;
1438
	        	}
1439
	        	foreach ($dall as $value) {
1440
    				$icao = $value['airport_arrival_icao'];
1441
        			if (isset($alldata[$icao])) {
1442
        				$alldata[$icao]['airport_arrival_icao_count'] = $alldata[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
1443
	        		} else $alldata[$icao] = $value;
1444
    			}
1445
        		$count = array();
1446
        		foreach ($alldata as $key => $row) {
1447
        			$count[$key] = $row['airport_arrival_icao_count'];
1448
	        	}
1449
    			array_multisort($count,SORT_DESC,$alldata);
1450
                        foreach ($alldata as $number) {
1451
				echo $this->addStatArrivalAirports($number['airport_arrival_icao'],$number['airport_arrival_name'],$number['airport_arrival_city'],$number['airport_arrival_country'],$number['airport_arrival_icao_count']);
1452
			}
1453
			if ($Connection->tableExists('countries')) {
1454
				if ($globalDebug) echo 'Count all flights by countries...'."\n";
1455
				$SpotterArchive = new SpotterArchive();
1456
				$alldata = $SpotterArchive->countAllFlightOverCountries(false,0,$last_update_day);
1457
				foreach ($alldata as $number) {
1458
					$this->addStatCountry($number['flight_country_iso2'],$number['flight_country_iso3'],$number['flight_country'],$number['flight_count']);
1459
				}
1460
			}
1461
			
1462
1463
			// Add by month using getstat if month finish...
1464
1465
			//if (date('m',strtotime($last_update_day)) != date('m')) {
1466
			if ($globalDebug) echo 'Count all flights by months...'."\n";
1467
			$Spotter = new Spotter($this->db);
1468
			$alldata = $Spotter->countAllMonths();
1469
			$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...
1470
			foreach ($alldata as $number) {
1471
				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...
1472
				$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'])));
1473
			}
1474
			if ($globalDebug) echo 'Count all military flights by months...'."\n";
1475
			$alldata = $Spotter->countAllMilitaryMonths();
1476
			foreach ($alldata as $number) {
1477
				$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'])));
1478
			}
1479
			if ($globalDebug) echo 'Count all owners by months...'."\n";
1480
			$alldata = $Spotter->countAllMonthsOwners();
1481
			foreach ($alldata as $number) {
1482
				$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'])));
1483
			}
1484
			if ($globalDebug) echo 'Count all pilots by months...'."\n";
1485
			$alldata = $Spotter->countAllMonthsPilots();
1486
			foreach ($alldata as $number) {
1487
				$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'])));
1488
			}
1489
			if ($globalDebug) echo 'Count all airlines by months...'."\n";
1490
			$alldata = $Spotter->countAllMonthsAirlines();
1491
			foreach ($alldata as $number) {
1492
				$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'])));
1493
			}
1494
			if ($globalDebug) echo 'Count all aircrafts by months...'."\n";
1495
			$alldata = $Spotter->countAllMonthsAircrafts();
1496
			foreach ($alldata as $number) {
1497
				$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'])));
1498
			}
1499
			if ($globalDebug) echo 'Count all real arrivals by months...'."\n";
1500
			$alldata = $Spotter->countAllMonthsRealArrivals();
1501
			foreach ($alldata as $number) {
1502
				$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'])));
1503
			}
1504
			if ($globalDebug) echo 'Airports data...'."\n";
1505
			if ($globalDebug) echo '...Departure'."\n";
1506
			$this->deleteStatAirport('daily');
1507
//			$pall = $Spotter->getLast7DaysAirportsDeparture();
1508
  //      		$dall = $Spotter->getLast7DaysDetectedAirportsDeparture();
1509
			$pall = $Spotter->getLast7DaysAirportsDeparture();
1510
        		$dall = $Spotter->getLast7DaysDetectedAirportsDeparture();
1511
        		/*
1512
	        	$alldata = array();
1513
    			foreach ($pall as $value) {
1514
	        		$icao = $value['departure_airport_icao'];
1515
    				$alldata[$icao] = $value;
1516
	        	}
1517
	        	foreach ($dall as $value) {
1518
    				$icao = $value['departure_airport_icao'];
1519
    				$ddate = $value['date'];
1520
        			if (isset($alldata[$icao])) {
1521
        				$alldata[$icao]['departure_airport_count'] = $alldata[$icao]['departure_airport_count'] + $value['departure_airport_count'];
1522
	        		} else $alldata[$icao] = $value;
1523
    			}
1524
        		$count = array();
1525
        		foreach ($alldata as $key => $row) {
1526
        			$count[$key] = $row['departure_airport_count'];
1527
	        	}
1528
    			array_multisort($count,SORT_DESC,$alldata);
1529
    			*/
1530
    			foreach ($dall as $value) {
1531
    				$icao = $value['departure_airport_icao'];
1532
    				$ddate = $value['date'];
1533
    				$find = false;
1534
    				foreach ($pall as $pvalue) {
1535
    					if ($pvalue['departure_airport_icao'] == $icao && $pvalue['date'] == $ddate) {
1536
    						$pvalue['departure_airport_count'] = $pvalue['departure_airport_count'] + $value['departure_airport_count'];
1537
    						$find = true;
1538
    						break;
1539
    					}
1540
    				}
1541
    				if ($find === false) {
1542
    					$pall[] = $value;
1543
    				}
1544
    			}
1545
    			$alldata = $pall;
1546
			foreach ($alldata as $number) {
1547
				$this->addStatDepartureAirportsDaily($number['date'],$number['departure_airport_icao'],$number['departure_airport_name'],$number['departure_airport_city'],$number['departure_airport_country'],$number['departure_airport_count']);
1548
			}
1549
			echo '...Arrival'."\n";
1550
			$pall = $Spotter->getLast7DaysAirportsArrival();
1551
        		$dall = $Spotter->getLast7DaysDetectedAirportsArrival();
1552
        		/*
1553
	        	$alldata = array();
1554
    			foreach ($pall as $value) {
1555
	        		$icao = $value['arrival_airport_icao'];
1556
    				$alldata[$icao] = $value;
1557
	        	}
1558
	        	foreach ($dall as $value) {
1559
    				$icao = $value['arrival_airport_icao'];
1560
        			if (isset($alldata[$icao])) {
1561
        				$alldata[$icao]['arrival_airport_icao_count'] = $alldata[$icao]['arrival_airport_count'] + $value['arrival_airport_count'];
1562
	        		} else $alldata[$icao] = $value;
1563
    			}
1564
        		$count = array();
1565
        		foreach ($alldata as $key => $row) {
1566
        			$count[$key] = $row['arrival_airport_count'];
1567
	        	}
1568
    			array_multisort($count,SORT_DESC,$alldata);
1569
    			*/
1570
1571
1572
    			foreach ($dall as $value) {
1573
    				$icao = $value['arrival_airport_icao'];
1574
    				$ddate = $value['date'];
1575
    				$find = false;
1576
    				foreach ($pall as $pvalue) {
1577
    					if ($pvalue['arrival_airport_icao'] == $icao && $pvalue['date'] == $ddate) {
1578
    						$pvalue['arrival_airport_count'] = $pvalue['arrival_airport_count'] + $value['arrival_airport_count'];
1579
    						$find = true;
1580
    						break;
1581
    					}
1582
    				}
1583
    				if ($find === false) {
1584
    					$pall[] = $value;
1585
    				}
1586
    			}
1587
    			$alldata = $pall;
1588
			foreach ($alldata as $number) {
1589
				$this->addStatArrivalAirportsDaily($number['date'],$number['arrival_airport_icao'],$number['arrival_airport_name'],$number['arrival_airport_city'],$number['arrival_airport_country'],$number['arrival_airport_count']);
1590
			}
1591
1592
			echo 'Flights data...'."\n";
1593
			$this->deleteStatFlight('month');
1594
			echo '-> countAllDatesLastMonth...'."\n";
1595
			$alldata = $Spotter->countAllDatesLastMonth();
1596
			foreach ($alldata as $number) {
1597
				$this->addStatFlight('month',$number['date_name'],$number['date_count']);
1598
			}
1599
			echo '-> countAllDates...'."\n";
1600
			$previousdata = $this->countAllDates();
1601
			$previousdatabyairlines = $this->countAllDatesByAirlines();
1602
			$this->deleteStatFlight('date');
1603
			$alldata = $Common->array_merge_noappend($previousdata,$Spotter->countAllDates());
1604
			$values = array();
1605
			foreach ($alldata as $cnt) {
1606
				$values[] = $cnt['date_count'];
1607
			}
1608
			array_multisort($values,SORT_DESC,$alldata);
1609
			array_splice($alldata,11);
1610
			foreach ($alldata as $number) {
1611
				$this->addStatFlight('date',$number['date_name'],$number['date_count']);
1612
			}
1613
			
1614
			$this->deleteStatFlight('hour');
1615
			echo '-> countAllHours...'."\n";
1616
			$alldata = $Spotter->countAllHours('hour');
1617
			foreach ($alldata as $number) {
1618
				$this->addStatFlight('hour',$number['hour_name'],$number['hour_count']);
1619
			}
1620
1621
1622
1623
			// Count by airlines
1624
			echo '--- Stats by airlines ---'."\n";
1625
			if ($globalDebug) echo 'Count all aircraft types by airlines...'."\n";
1626
			$Spotter = new Spotter($this->db);
1627
			$alldata = $Spotter->countAllAircraftTypesByAirlines(false,0,$last_update_day);
1628
			foreach ($alldata as $number) {
1629
				$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer'],$number['airline_icao']);
1630
			}
1631
			if ($globalDebug) echo 'Count all aircraft registrations by airlines...'."\n";
1632
			$alldata = $Spotter->countAllAircraftRegistrationsByAirlines(false,0,$last_update_day);
1633
			foreach ($alldata as $number) {
1634
				$this->addStatAircraftRegistration($number['registration'],$number['aircraft_registration_count'],$number['aircraft_icao'],$number['airline_icao']);
1635
			}
1636
			if ($globalDebug) echo 'Count all callsigns by airlines...'."\n";
1637
			$alldata = $Spotter->countAllCallsignsByAirlines(false,0,$last_update_day);
1638
			foreach ($alldata as $number) {
1639
				$this->addStatCallsign($number['callsign_icao'],$number['callsign_icao_count'],$number['airline_icao']);
1640
			}
1641
			if ($globalDebug) echo 'Count all owners by airlines...'."\n";
1642
			$alldata = $Spotter->countAllOwnersByAirlines(false,0,$last_update_day);
1643
			foreach ($alldata as $number) {
1644
				$this->addStatOwner($number['owner_name'],$number['owner_count'],$number['airline_icao']);
1645
			}
1646
			if ($globalDebug) echo 'Count all pilots by airlines...'."\n";
1647
			$alldata = $Spotter->countAllPilotsByAirlines(false,0,$last_update_day);
1648
			foreach ($alldata as $number) {
1649
				$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name'],$number['airline_icao']);
1650
			}
1651
			if ($globalDebug) echo 'Count all departure airports by airlines...'."\n";
1652
			$pall = $Spotter->countAllDepartureAirportsByAirlines(false,0,$last_update_day);
1653
			if ($globalDebug) echo 'Count all detected departure airports by airlines...'."\n";
1654
       			$dall = $Spotter->countAllDetectedDepartureAirportsByAirlines(false,0,$last_update_day);
1655
			if ($globalDebug) echo 'Order detected departure airports by airlines...'."\n";
1656
	        	//$alldata = array();
1657
    			foreach ($dall as $value) {
1658
    				$icao = $value['airport_departure_icao'];
1659
    				$dicao = $value['airline_icao'];
1660
    				$find = false;
1661
    				foreach ($pall as $pvalue) {
1662
    					if ($pvalue['airport_departure_icao'] == $icao && $pvalue['airline_icao'] = $dicao) {
1663
    						$pvalue['airport_departure_icao_count'] = $pvalue['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
1664
    						$find = true;
1665
    						break;
1666
    					}
1667
    				}
1668
    				if ($find === false) {
1669
    					$pall[] = $value;
1670
    				}
1671
    			}
1672
    			$alldata = $pall;
1673
			foreach ($alldata as $number) {
1674
				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']);
1675
			}
1676
			if ($globalDebug) echo 'Count all arrival airports by airlines...'."\n";
1677
			$pall = $Spotter->countAllArrivalAirportsByAirlines(false,0,$last_update_day);
1678
			if ($globalDebug) echo 'Count all detected arrival airports by airlines...'."\n";
1679
        		$dall = $Spotter->countAllDetectedArrivalAirportsByAirlines(false,0,$last_update_day);
1680
			if ($globalDebug) echo 'Order arrival airports by airlines...'."\n";
1681
	        	//$alldata = array();
1682
    			foreach ($dall as $value) {
1683
    				$icao = $value['airport_arrival_icao'];
1684
    				$dicao = $value['airline_icao'];
1685
    				$find = false;
1686
    				foreach ($pall as $pvalue) {
1687
    					if ($pvalue['airport_arrival_icao'] == $icao && $pvalue['airline_icao'] = $dicao) {
1688
    						$pvalue['airport_arrival_icao_count'] = $pvalue['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
1689
    						$find = true;
1690
    						break;
1691
    					}
1692
    				}
1693
    				if ($find === false) {
1694
    					$pall[] = $value;
1695
    				}
1696
    			}
1697
    			$alldata = $pall;
1698
                        foreach ($alldata as $number) {
1699
				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']);
1700
			}
1701
			if ($globalDebug) echo 'Count all flights by months by airlines...'."\n";
1702
			$Spotter = new Spotter($this->db);
1703
			$alldata = $Spotter->countAllMonthsByAirlines();
1704
			$lastyear = false;
1705
			foreach ($alldata as $number) {
1706
				if ($number['year_name'] != date('Y')) $lastyear = true;
1707
				$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']);
1708
			}
1709
			if ($globalDebug) echo 'Count all owners by months by airlines...'."\n";
1710
			$alldata = $Spotter->countAllMonthsOwnersByAirlines();
1711
			foreach ($alldata as $number) {
1712
				$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']);
1713
			}
1714
			if ($globalDebug) echo 'Count all pilots by months by airlines...'."\n";
1715
			$alldata = $Spotter->countAllMonthsPilotsByAirlines();
1716
			foreach ($alldata as $number) {
1717
				$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']);
1718
			}
1719
			if ($globalDebug) echo 'Count all aircrafts by months by airlines...'."\n";
1720
			$alldata = $Spotter->countAllMonthsAircraftsByAirlines();
1721
			foreach ($alldata as $number) {
1722
				$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']);
1723
			}
1724
			if ($globalDebug) echo 'Count all real arrivals by months by airlines...'."\n";
1725
			$alldata = $Spotter->countAllMonthsRealArrivalsByAirlines();
1726
			foreach ($alldata as $number) {
1727
				$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']);
1728
			}
1729
			if ($globalDebug) echo '...Departure'."\n";
1730
			$pall = $Spotter->getLast7DaysAirportsDepartureByAirlines();
1731
        		$dall = $Spotter->getLast7DaysDetectedAirportsDepartureByAirlines();
1732
    			foreach ($dall as $value) {
1733
    				$icao = $value['departure_airport_icao'];
1734
    				$airline = $value['airline_icao'];
1735
    				$ddate = $value['date'];
1736
    				$find = false;
1737
    				foreach ($pall as $pvalue) {
1738
    					if ($pvalue['departure_airport_icao'] == $icao && $pvalue['date'] == $ddate && $pvalue['airline_icao'] = $airline) {
1739
    						$pvalue['departure_airport_count'] = $pvalue['departure_airport_count'] + $value['departure_airport_count'];
1740
    						$find = true;
1741
    						break;
1742
    					}
1743
    				}
1744
    				if ($find === false) {
1745
    					$pall[] = $value;
1746
    				}
1747
    			}
1748
    			$alldata = $pall;
1749
			foreach ($alldata as $number) {
1750
				$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']);
1751
			}
1752
			if ($globalDebug) echo '...Arrival'."\n";
1753
			$pall = $Spotter->getLast7DaysAirportsArrivalByAirlines();
1754
        		$dall = $Spotter->getLast7DaysDetectedAirportsArrivalByAirlines();
1755
    			foreach ($dall as $value) {
1756
    				$icao = $value['arrival_airport_icao'];
1757
    				$airline = $value['airline_icao'];
1758
    				$ddate = $value['date'];
1759
    				$find = false;
1760
    				foreach ($pall as $pvalue) {
1761
    					if ($pvalue['arrival_airport_icao'] == $icao && $pvalue['date'] == $ddate && $pvalue['airline_icao'] == $airline) {
1762
    						$pvalue['arrival_airport_count'] = $pvalue['arrival_airport_count'] + $value['arrival_airport_count'];
1763
    						$find = true;
1764
    						break;
1765
    					}
1766
    				}
1767
    				if ($find === false) {
1768
    					$pall[] = $value;
1769
    				}
1770
    			}
1771
    			$alldata = $pall;
1772
			foreach ($alldata as $number) {
1773
				$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']);
1774
			}
1775
1776
			if ($globalDebug) echo 'Flights data...'."\n";
1777
			if ($globalDebug) echo '-> countAllDatesLastMonth...'."\n";
1778
			$alldata = $Spotter->countAllDatesLastMonthByAirlines();
1779
			foreach ($alldata as $number) {
1780
				$this->addStatFlight('month',$number['date_name'],$number['date_count'], $number['airline_icao']);
1781
			}
1782
			if ($globalDebug) echo '-> countAllDates...'."\n";
1783
			//$previousdata = $this->countAllDatesByAirlines();
1784
			$alldata = $Common->array_merge_noappend($previousdatabyairlines,$Spotter->countAllDatesByAirlines());
1785
			$values = array();
1786
			foreach ($alldata as $cnt) {
1787
				$values[] = $cnt['date_count'];
1788
			}
1789
			array_multisort($values,SORT_DESC,$alldata);
1790
			array_splice($alldata,11);
1791
			foreach ($alldata as $number) {
1792
				$this->addStatFlight('date',$number['date_name'],$number['date_count'],$number['airline_icao']);
1793
			}
1794
			
1795
			if ($globalDebug) echo '-> countAllHours...'."\n";
1796
			$alldata = $Spotter->countAllHoursByAirlines('hour');
1797
			foreach ($alldata as $number) {
1798
				$this->addStatFlight('hour',$number['hour_name'],$number['hour_count'],$number['airline_icao']);
1799
			}
1800
			
1801
1802
			if (!isset($globalStatsFilters) || $globalStatsFilters == '') $globalStatsFilters = array();
1803
			foreach ($globalStatsFilters as $name => $filter) {
1804
				//$filter_name = $filter['name'];
1805
				$filter_name = $name;
1806
				// Count by filter
1807
				if ($globalDebug) echo '--- Stats for filter '.$filter_name.' ---'."\n";
1808
				$Spotter = new Spotter($this->db);
1809
				$alldata = $Spotter->countAllAircraftTypes(false,0,$last_update_day,$filter);
1810
				foreach ($alldata as $number) {
1811
					$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer'],'',$filter_name);
1812
				}
1813
				$alldata = $Spotter->countAllAirlines(false,0,$last_update_day,$filter);
1814
				foreach ($alldata as $number) {
1815
					$this->addStatAirline($number['airline_icao'],$number['airline_count'],$number['airline_name'],$filter_name);
1816
				}
1817
				$alldata = $Spotter->countAllAircraftRegistrations(false,0,$last_update_day,$filter);
1818
				foreach ($alldata as $number) {
1819
					$this->addStatAircraftRegistration($number['registration'],$number['aircraft_registration_count'],$number['aircraft_icao'],'',$filter_name);
1820
				}
1821
				$alldata = $Spotter->countAllCallsigns(false,0,$last_update_day,$filter);
1822
				foreach ($alldata as $number) {
1823
					$this->addStatCallsign($number['callsign_icao'],$number['callsign_icao_count'],'',$filter_name);
1824
				}
1825
				$alldata = $Spotter->countAllOwners(false,0,$last_update_day,$filter);
1826
				foreach ($alldata as $number) {
1827
					$this->addStatOwner($number['owner_name'],$number['owner_count'],'',$filter_name);
1828
				}
1829
				$alldata = $Spotter->countAllPilots(false,0,$last_update_day,$filter);
1830
				foreach ($alldata as $number) {
1831
					$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name'],'',$filter_name);
1832
				}
1833
    			
1834
				$pall = $Spotter->countAllDepartureAirports(false,0,$last_update_day,$filter);
1835
	       			$dall = $Spotter->countAllDetectedDepartureAirports(false,0,$last_update_day,$filter);
1836
		        	$alldata = array();
1837
	    			foreach ($pall as $value) {
1838
		        		$icao = $value['airport_departure_icao'];
1839
    					$alldata[$icao] = $value;
1840
	    			}
1841
		        	foreach ($dall as $value) {
1842
	    				$icao = $value['airport_departure_icao'];
1843
        				if (isset($alldata[$icao])) {
1844
    						$alldata[$icao]['airport_departure_icao_count'] = $alldata[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
1845
        				} else $alldata[$icao] = $value;
1846
				}
1847
	    			$count = array();
1848
    				foreach ($alldata as $key => $row) {
1849
    					$count[$key] = $row['airport_departure_icao_count'];
1850
    				}
1851
				array_multisort($count,SORT_DESC,$alldata);
1852
				foreach ($alldata as $number) {
1853
    					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);
1854
				}
1855
				$pall = $Spotter->countAllArrivalAirports(false,0,$last_update_day,$filter);
1856
    				$dall = $Spotter->countAllDetectedArrivalAirports(false,0,$last_update_day,$filter);
1857
				$alldata = array();
1858
    				foreach ($pall as $value) {
1859
		        		$icao = $value['airport_arrival_icao'];
1860
    					$alldata[$icao] = $value;
1861
	    			}
1862
		        	foreach ($dall as $value) {
1863
	    				$icao = $value['airport_arrival_icao'];
1864
        				if (isset($alldata[$icao])) {
1865
        					$alldata[$icao]['airport_arrival_icao_count'] = $alldata[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
1866
		        		} else $alldata[$icao] = $value;
1867
	    			}
1868
        			$count = array();
1869
        			foreach ($alldata as $key => $row) {
1870
    					$count[$key] = $row['airport_arrival_icao_count'];
1871
		        	}
1872
        			array_multisort($count,SORT_DESC,$alldata);
1873
				foreach ($alldata as $number) {
1874
					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);
1875
				}
1876
				$Spotter = new Spotter($this->db);
1877
				$alldata = $Spotter->countAllMonths($filter);
1878
				$lastyear = false;
1879
				foreach ($alldata as $number) {
1880
					if ($number['year_name'] != date('Y')) $lastyear = true;
1881
					$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);
1882
				}
1883
				$alldata = $Spotter->countAllMonthsOwners($filter);
1884
				foreach ($alldata as $number) {
1885
					$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);
1886
				}
1887
				$alldata = $Spotter->countAllMonthsPilots($filter);
1888
				foreach ($alldata as $number) {
1889
					$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);
1890
				}
1891
				$alldata = $Spotter->countAllMonthsAircrafts($filter);
1892
				foreach ($alldata as $number) {
1893
					$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);
1894
				}
1895
				$alldata = $Spotter->countAllMonthsRealArrivals($filter);
1896
				foreach ($alldata as $number) {
1897
					$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);
1898
				}
1899
				echo '...Departure'."\n";
1900
				$pall = $Spotter->getLast7DaysAirportsDeparture('',$filter);
1901
        			$dall = $Spotter->getLast7DaysDetectedAirportsDeparture('',$filter);
1902
				foreach ($dall as $value) {
1903
    					$icao = $value['departure_airport_icao'];
1904
    					$ddate = $value['date'];
1905
    					$find = false;
1906
    					foreach ($pall as $pvalue) {
1907
    						if ($pvalue['departure_airport_icao'] == $icao && $pvalue['date'] == $ddate) {
1908
    							$pvalue['departure_airport_count'] = $pvalue['departure_airport_count'] + $value['departure_airport_count'];
1909
	    						$find = true;
1910
    							break;
1911
    						}
1912
    					}
1913
    					if ($find === false) {
1914
    						$pall[] = $value;
1915
	    				}
1916
    				}
1917
	    			$alldata = $pall;
1918
				foreach ($alldata as $number) {
1919
					$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);
1920
				}
1921
				echo '...Arrival'."\n";
1922
				$pall = $Spotter->getLast7DaysAirportsArrival('',$filter);
1923
    				$dall = $Spotter->getLast7DaysDetectedAirportsArrival('',$filter);
1924
				foreach ($dall as $value) {
1925
					$icao = $value['arrival_airport_icao'];
1926
					$ddate = $value['date'];
1927
    					$find = false;
1928
					foreach ($pall as $pvalue) {
1929
    						if ($pvalue['arrival_airport_icao'] == $icao && $pvalue['date'] == $ddate) {
1930
    							$pvalue['arrival_airport_count'] = $pvalue['arrival_airport_count'] + $value['arrival_airport_count'];
1931
    							$find = true;
1932
    							break;
1933
	    					}
1934
    					}
1935
    					if ($find === false) {
1936
    						$pall[] = $value;
1937
	    				}
1938
    				}
1939
    				$alldata = $pall;
1940
				foreach ($alldata as $number) {
1941
					$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);
1942
				}
1943
    
1944
				echo 'Flights data...'."\n";
1945
				echo '-> countAllDatesLastMonth...'."\n";
1946
				$alldata = $Spotter->countAllDatesLastMonth($filter);
1947
				foreach ($alldata as $number) {
1948
					$this->addStatFlight('month',$number['date_name'],$number['date_count'], '',$filter_name);
1949
				}
1950
				echo '-> countAllDates...'."\n";
1951
				$previousdata = $this->countAllDates('',$filter_name);
1952
				$alldata = $Common->array_merge_noappend($previousdata,$Spotter->countAllDates($filter));
1953
				$values = array();
1954
				foreach ($alldata as $cnt) {
1955
					$values[] = $cnt['date_count'];
1956
				}
1957
				array_multisort($values,SORT_DESC,$alldata);
1958
				array_splice($alldata,11);
1959
				foreach ($alldata as $number) {
1960
					$this->addStatFlight('date',$number['date_name'],$number['date_count'],'',$filter_name);
1961
				}
1962
				
1963
				echo '-> countAllHours...'."\n";
1964
				$alldata = $Spotter->countAllHours('hour',$filter);
1965
				foreach ($alldata as $number) {
1966
					$this->addStatFlight('hour',$number['hour_name'],$number['hour_count'],'',$filter_name);
1967
				}
1968
			}
1969
	
1970
1971
			// Last year stats
1972
			if ($lastyear) {
1973
				echo 'Data from last year...'."\n";
1974
				// SUM all previous month to put as year
1975
				$previous_year = date('Y');
1976
				$previous_year--;
1977
				$this->addStat('aircrafts_byyear',$this->getSumStats('aircrafts_bymonth',$previous_year),$previous_year.'-01-01 00:00:00');
1978
				$this->addStat('airlines_byyear',$this->getSumStats('airlines_bymonth',$previous_year),$previous_year.'-01-01 00:00:00');
1979
				$this->addStat('owner_byyear',$this->getSumStats('owner_bymonth',$previous_year),$previous_year.'-01-01 00:00:00');
1980
				$this->addStat('pilot_byyear',$this->getSumStats('pilot_bymonth',$previous_year),$previous_year.'-01-01 00:00:00');
1981
				$allairlines = $this->getAllAirlineNames();
1982
				foreach ($allairlines as $data) {
1983
					$this->addStat('aircrafts_byyear',$this->getSumStats('aircrafts_bymonth',$previous_year,$data['airline_icao']),$previous_year.'-01-01 00:00:00',$data['airline_icao']);
1984
					$this->addStat('airlines_byyear',$this->getSumStats('airlines_bymonth',$previous_year,$data['airline_icao']),$previous_year.'-01-01 00:00:00',$data['airline_icao']);
1985
					$this->addStat('owner_byyear',$this->getSumStats('owner_bymonth',$previous_year,$data['airline_icao']),$previous_year.'-01-01 00:00:00',$data['airline_icao']);
1986
					$this->addStat('pilot_byyear',$this->getSumStats('pilot_bymonth',$previous_year,$data['airline_icao']),$previous_year.'-01-01 00:00:00',$data['airline_icao']);
1987
				}
1988
				
1989
				if (isset($globalArchiveYear) && $globalArchiveYear) {
1990
					if ($globalArchive) {
1991
						$query = "INSERT INTO spotter_archive_output SELECT * FROM spotter_output WHERE spotter_output.date < '".date('Y')."-01-01 00:00:00'";
1992
						try {
1993
							$sth = $this->db->prepare($query);
1994
							$sth->execute();
1995
						} catch(PDOException $e) {
1996
							return "error : ".$e->getMessage().' - query : '.$query."\n";
1997
						}
1998
					}
1999
					echo 'Delete old data'."\n";
2000
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < '".date('Y')."-01-01 00:00:00'";
2001
					try {
2002
						$sth = $this->db->prepare($query);
2003
						$sth->execute();
2004
					} catch(PDOException $e) {
2005
						return "error : ".$e->getMessage().' - query : '.$query."\n";
2006
					}
2007
				}
2008
			}
2009
			if ($globalArchiveMonths > 0) {
2010
				if ($globalArchive) {
2011
					echo 'Archive old data...'."\n";
2012
					if ($globalDBdriver == 'mysql') {
2013
						//$query = "INSERT INTO spotter_archive_output SELECT * FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
2014
						$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)
2015
							    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
2016
	    						     FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
2017
					} else {
2018
						$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)
2019
							     SELECT 
2020
								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
2021
							    FROM spotter_output WHERE spotter_output.date < CAST(to_char(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalArchiveMonths." MONTHS', 'YYYY/mm/01') AS TIMESTAMP)";
2022
					}
2023
					try {
2024
						$sth = $this->db->prepare($query);
2025
						$sth->execute();
2026
					} catch(PDOException $e) {
2027
						return "error : ".$e->getMessage();
2028
					}
2029
				}
2030
				echo 'Deleting old data...'."\n";
2031
				//$query = 'DELETE FROM spotter_output WHERE spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$globalArchiveMonths.' MONTH)';
2032
				if ($globalDBdriver == 'mysql') {
2033
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
2034
				} else {
2035
					$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)";
2036
				}
2037
				try {
2038
					$sth = $this->db->prepare($query);
2039
					$sth->execute();
2040
				} catch(PDOException $e) {
2041
					return "error : ".$e->getMessage();
2042
				}
2043
			}
2044
			echo 'Insert last stats update date...'."\n";
2045
			date_default_timezone_set('UTC');
2046
			$this->addLastStatsUpdate('last_update_stats',date('Y-m-d G:i:s'));
2047
		//}
2048
	}
2049
}
2050
2051
?>