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

Stats::countAllCallsigns()   B

Complexity

Conditions 6
Paths 36

Size

Total Lines 22
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 6
eloc 18
nc 36
nop 3
dl 0
loc 22
rs 8.6737
c 0
b 0
f 0
1
<?php
2
/*
3
* This class save stats older than a year and $globalArchiveMonths
4
*/
5
6
require_once(dirname(__FILE__).'/class.Spotter.php');
7
require_once(dirname(__FILE__).'/class.SpotterArchive.php');
8
require_once(dirname(__FILE__).'/class.Common.php');
9
class Stats {
10
	public $db;
11
	public $filter_name = '';
12
	
13
	public function __construct($dbc = null) {
14
		global $globalFilterName;
15
		if (isset($globalFilterName)) $this->filter_name = $globalFilterName;
16
		$Connection = new Connection($dbc);
17
		$this->db = $Connection->db();
18
        }
19
              
20
	public function addLastStatsUpdate($type,$stats_date) {
21
                $query = "DELETE FROM config WHERE name = :type;
22
            		INSERT INTO config (name,value) VALUES (:type,:stats_date);";
23
                $query_values = array('type' => $type,':stats_date' => $stats_date);
24
                 try {
25
                        $sth = $this->db->prepare($query);
26
                        $sth->execute($query_values);
27
                } catch(PDOException $e) {
28
                        return "error : ".$e->getMessage();
29
                }
30
        }
31
32
	public function getLastStatsUpdate($type = 'last_update_stats') {
33
                $query = "SELECT value FROM config WHERE name = :type";
34
                 try {
35
                        $sth = $this->db->prepare($query);
36
                        $sth->execute(array(':type' => $type));
37
                } catch(PDOException $e) {
38
                        echo "error : ".$e->getMessage();
39
                }
40
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
41
                return $all;
42
        }
43
	public function getAllAirlineNames($filter_name = '') {
44
		if ($filter_name == '') $filter_name = $this->filter_name;
45
                $query = "SELECT * FROM stats_airline WHERE filter_name = :filter_name ORDER BY airline_name ASC";
46
                 try {
47
                        $sth = $this->db->prepare($query);
48
                        $sth->execute(array(':filter_name' => $filter_name));
49
                } catch(PDOException $e) {
50
                        echo "error : ".$e->getMessage();
51
                }
52
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
53
                return $all;
54
        }
55
	public function getAllAircraftTypes($stats_airline = '',$filter_name = '') {
56
		if ($filter_name == '') $filter_name = $this->filter_name;
57
                $query = "SELECT * FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY aircraft_manufacturer ASC";
58
                 try {
59
                        $sth = $this->db->prepare($query);
60
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
61
                } catch(PDOException $e) {
62
                        echo "error : ".$e->getMessage();
63
                }
64
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
65
                return $all;
66
        }
67
	public function 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
?>