Completed
Push — master ( f70d8f...37ebf7 )
by Yannick
13:12 queued 03:03
created

Stats::countAllDepartureCountries()   B

Complexity

Conditions 5
Paths 18

Size

Total Lines 21
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

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