Completed
Push — master ( 177cfd...bce49d )
by Yannick
08:42
created

Stats::countAllHours()   C

Complexity

Conditions 7
Paths 72

Size

Total Lines 31
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 7
eloc 20
nc 72
nop 4
dl 0
loc 31
rs 6.7272
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
			/*
553
			if ($globalDBdriver == 'mysql') {
554
				$query .= " ORDER BY flight_date ASC";
555
			} else {
556
			*/
557
			$query .= " ORDER BY CAST(flight_date AS integer) ASC";
558
		}
559
		if ($orderby == 'count') $query .= " ORDER BY hour_count DESC";
560
                 try {
561
                        $sth = $this->db->prepare($query);
562
                        $sth->execute(array(':stats_airline' => $stats_airline, ':filter_name' => $filter_name));
563
                } catch(PDOException $e) {
564
                        echo "error : ".$e->getMessage();
565
                }
566
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
567
                if (empty($all)) {
568
			$filters = array('airlines' => array($stats_airline));
569
			if ($filter_name != '') {
570
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
571
			}
572
            		$Spotter = new Spotter($this->db);
573
            		$all = $Spotter->countAllHours($orderby,$filters);
574
                }
575
                return $all;
576
	}
577
	
578
	public function countOverallFlights($stats_airline = '', $filter_name = '') {
579
		global $globalStatsFilters;
580
		$all = $this->getSumStats('flights_bymonth',date('Y'),$stats_airline,$filter_name);
581
		if (empty($all)) {
582
			$filters = array('airlines' => array($stats_airline));
583
			if ($filter_name != '') {
584
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
585
			}
586
			$Spotter = new Spotter($this->db);
587
			$all = $Spotter->countOverallFlights($filters);
588
		}
589
		return $all;
590
	}
591
	public function countOverallMilitaryFlights($filter_name = '') {
592
		global $globalStatsFilters;
593
		$all = $this->getSumStats('military_flights_bymonth',date('Y'),'',$filter_name);
594
		if (empty($all)) {
595
		        $filters = array();
596
            		if ($filter_name != '') {
597
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
598
			}
599
			$Spotter = new Spotter($this->db);
600
			$all = $Spotter->countOverallMilitaryFlights($filters);
601
		}
602
		return $all;
603
	}
604
	public function countOverallArrival($stats_airline = '',$filter_name = '') {
605
		global $globalStatsFilters;
606
		$all = $this->getSumStats('realarrivals_bymonth',date('Y'),$stats_airline,$filter_name);
607
		if (empty($all)) {
608
			$filters = array('airlines' => array($stats_airline));
609
			if ($filter_name != '') {
610
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
611
			}
612
			$Spotter = new Spotter($this->db);
613
			$all = $Spotter->countOverallArrival($filters);
614
		}
615
		return $all;
616
	}
617
	public function countOverallAircrafts($stats_airline = '',$filter_name = '') {
618
		global $globalStatsFilters;
619
		$all = $this->getSumStats('aircrafts_bymonth',date('Y'),$stats_airline,$filter_name);
620
		if (empty($all)) {
621
			$filters = array('airlines' => array($stats_airline));
622
			if ($filter_name != '') {
623
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
624
			}
625
			$Spotter = new Spotter($this->db);
626
			$all = $Spotter->countOverallAircrafts($filters);
627
		}
628
		return $all;
629
	}
630
	public function countOverallAirlines($filter_name = '') {
631
		global $globalStatsFilters;
632
		$query = "SELECT COUNT(*) AS nb_airline FROM stats_airline WHERE filter_name = :filter_name";
633
                 try {
634
                        $sth = $this->db->prepare($query);
635
                        $sth->execute(array(':filter_name' => $filter_name));
636
                } catch(PDOException $e) {
637
                        echo "error : ".$e->getMessage();
638
                }
639
                $result = $sth->fetchAll(PDO::FETCH_ASSOC);
640
                $all = $result[0]['nb_airline'];
641
		//$all = $this->getSumStats('airlines_bymonth',date('Y'));
642
		if (empty($all)) {
643
            		$filters = array();
644
            		if ($filter_name != '') {
645
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
646
			}
647
			$Spotter = new Spotter($this->db);
648
			$all = $Spotter->countOverallAirlines($filters);
649
		}
650
		return $all;
651
	}
652
	public function countOverallOwners($stats_airline = '',$filter_name = '') {
653
		global $globalStatsFilters;
654
		/*
655
		$query = "SELECT COUNT(*) AS nb_owner FROM stats_owner";
656
                 try {
657
                        $sth = $this->db->prepare($query);
658
                        $sth->execute();
659
                } catch(PDOException $e) {
660
                        echo "error : ".$e->getMessage();
661
                }
662
                $result = $sth->fetchAll(PDO::FETCH_ASSOC);
663
                $all = $result[0]['nb_owner'];
664
                */
665
		$all = $this->getSumStats('owners_bymonth',date('Y'),$stats_airline,$filter_name);
666
		if (empty($all)) {
667
			$filters = array('airlines' => array($stats_airline));
668
			if ($filter_name != '') {
669
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
670
			}
671
			$Spotter = new Spotter($this->db);
672
			$all = $Spotter->countOverallOwners($filters);
673
		}
674
		return $all;
675
	}
676
	public function countOverallPilots($stats_airline = '',$filter_name = '') {
677
		global $globalStatsFilters;
678
		$all = $this->getSumStats('pilots_bymonth',date('Y'),$stats_airline,$filter_name);
679
		if (empty($all)) {
680
			$filters = array('airlines' => array($stats_airline));
681
			if ($filter_name != '') {
682
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
683
			}
684
			$Spotter = new Spotter($this->db);
685
			$all = $Spotter->countOverallPilots($filters);
686
		}
687
		return $all;
688
	}
689
690
	public function getLast7DaysAirports($airport_icao = '', $stats_airline = '',$filter_name = '') {
691
		$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";
692
		$query_values = array(':airport_icao' => $airport_icao,':stats_airline' => $stats_airline, ':filter_name' => $filter_name);
693
                 try {
694
                        $sth = $this->db->prepare($query);
695
                        $sth->execute($query_values);
696
                } catch(PDOException $e) {
697
                        echo "error : ".$e->getMessage();
698
                }
699
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
700
                return $all;
701
	}
702
	public function getStats($type,$stats_airline = '', $filter_name = '') {
703
                $query = "SELECT * FROM stats WHERE stats_type = :type AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY stats_date";
704
                $query_values = array(':type' => $type,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
705
                 try {
706
                        $sth = $this->db->prepare($query);
707
                        $sth->execute($query_values);
708
                } catch(PDOException $e) {
709
                        echo "error : ".$e->getMessage();
710
                }
711
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
712
                return $all;
713
        }
714
	public function getSumStats($type,$year,$stats_airline = '',$filter_name = '') {
715
    		global $globalArchiveMonths, $globalDBdriver;
716
    		if ($globalDBdriver == 'mysql') {
717
	                $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";
718
	        } else {
719
            		$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";
720
                }
721
                $query_values = array(':type' => $type, ':year' => $year, ':stats_airline' => $stats_airline,':filter_name' => $filter_name);
722
                 try {
723
                        $sth = $this->db->prepare($query);
724
                        $sth->execute($query_values);
725
                } catch(PDOException $e) {
726
                        echo "error : ".$e->getMessage();
727
                }
728
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
729
                return $all[0]['total'];
730
        }
731
	public function getStatsTotal($type, $stats_airline = '', $filter_name = '') {
732
    		global $globalArchiveMonths, $globalDBdriver;
733
    		if ($globalDBdriver == 'mysql') {
734
			$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";
735
		} else {
736
			$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";
737
                }
738
                $query_values = array(':type' => $type, ':stats_airline' => $stats_airline, ':filter_name' => $filter_name);
739
                 try {
740
                        $sth = $this->db->prepare($query);
741
                        $sth->execute($query_values);
742
                } catch(PDOException $e) {
743
                        echo "error : ".$e->getMessage();
744
                }
745
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
746
                return $all[0]['total'];
747
        }
748
	public function getStatsAircraftTotal($stats_airline = '', $filter_name = '') {
749
    		global $globalArchiveMonths, $globalDBdriver;
750
    		if ($globalDBdriver == 'mysql') {
751
			$query = "SELECT SUM(cnt) as total FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name";
752
                } else {
753
			$query = "SELECT SUM(cnt) as total FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name";
754
                }
755
                 try {
756
                        $sth = $this->db->prepare($query);
757
                        $sth->execute(array(':stats_airline' => $stats_airline, ':filter_name' => $filter_name));
758
                } catch(PDOException $e) {
759
                        echo "error : ".$e->getMessage();
760
                }
761
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
762
                return $all[0]['total'];
763
        }
764
	public function getStatsAirlineTotal($filter_name = '') {
765
    		global $globalArchiveMonths, $globalDBdriver;
766
    		if ($globalDBdriver == 'mysql') {
767
			$query = "SELECT SUM(cnt) as total FROM stats_airline WHERE filter_name = :filter_name";
768
                } else {
769
			$query = "SELECT SUM(cnt) as total FROM stats_airline WHERE filter_name = :filter_name";
770
                }
771
                 try {
772
                        $sth = $this->db->prepare($query);
773
                        $sth->execute(array(':filter_name' => $filter_name));
774
                } catch(PDOException $e) {
775
                        echo "error : ".$e->getMessage();
776
                }
777
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
778
                return $all[0]['total'];
779
        }
780
	public function getStatsOwnerTotal($filter_name = '') {
781
    		global $globalArchiveMonths, $globalDBdriver;
782
    		if ($globalDBdriver == 'mysql') {
783
			$query = "SELECT SUM(cnt) as total FROM stats_owner WHERE filter_name = :filter_name";
784
		} else {
785
			$query = "SELECT SUM(cnt) as total FROM stats_owner WHERE filter_name = :filter_name";
786
                }
787
                 try {
788
                        $sth = $this->db->prepare($query);
789
                        $sth->execute(array(':filter_name' => $filter_name));
790
                } catch(PDOException $e) {
791
                        echo "error : ".$e->getMessage();
792
                }
793
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
794
                return $all[0]['total'];
795
        }
796
	public function getStatsPilotTotal($filter_name = '') {
797
    		global $globalArchiveMonths, $globalDBdriver;
798
    		if ($globalDBdriver == 'mysql') {
799
            		$query = "SELECT SUM(cnt) as total FROM stats_pilot WHERE filter_name = :filter_name";
800
            	} else {
801
            		$query = "SELECT SUM(cnt) as total FROM stats_pilot WHERE filter_name = :filter_name";
802
            	}
803
                 try {
804
                        $sth = $this->db->prepare($query);
805
                        $sth->execute(array(':filter_name' => $filter_name));
806
                } catch(PDOException $e) {
807
                        echo "error : ".$e->getMessage();
808
                }
809
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
810
                return $all[0]['total'];
811
        }
812
813
	public function addStat($type,$cnt,$stats_date,$stats_airline = '',$filter_name = '') {
814
		global $globalDBdriver;
815
		if ($globalDBdriver == 'mysql') {
816
			$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";
817
                } else {
818
			$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);"; 
819
		}
820
                $query_values = array(':type' => $type,':cnt' => $cnt,':stats_date' => $stats_date, ':stats_airline' => $stats_airline,':filter_name' => $filter_name);
821
                 try {
822
                        $sth = $this->db->prepare($query);
823
                        $sth->execute($query_values);
824
                } catch(PDOException $e) {
825
                        return "error : ".$e->getMessage();
826
                }
827
        }
828
	public function updateStat($type,$cnt,$stats_date,$stats_airline = '',$filter_name = '') {
829
		global $globalDBdriver;
830
		if ($globalDBdriver == 'mysql') {
831
			$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";
832
		} else {
833
            		//$query = "INSERT INTO stats (stats_type,cnt,stats_date) VALUES (:type,:cnt,:stats_date) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt, stats_date = :date";
834
			$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);"; 
835
                }
836
                $query_values = array(':type' => $type,':cnt' => $cnt,':stats_date' => $stats_date,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
837
                 try {
838
                        $sth = $this->db->prepare($query);
839
                        $sth->execute($query_values);
840
                } catch(PDOException $e) {
841
                        return "error : ".$e->getMessage();
842
                }
843
        }
844
	public function getStatsSource($date,$stats_type = '') {
845
		if ($stats_type == '') {
846
			$query = "SELECT * FROM stats_source WHERE stats_date = :date ORDER BY source_name";
847
			$query_values = array(':date' => $date);
848
		} else {
849
			$query = "SELECT * FROM stats_source WHERE stats_date = :date AND stats_type = :stats_type ORDER BY source_name";
850
			$query_values = array(':date' => $date,':stats_type' => $stats_type);
851
		}
852
                 try {
853
                        $sth = $this->db->prepare($query);
854
                        $sth->execute($query_values);
855
                } catch(PDOException $e) {
856
                        echo "error : ".$e->getMessage();
857
                }
858
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
859
                return $all;
860
        }
861
862
	public function addStatSource($data,$source_name,$stats_type,$date) {
863
		global $globalDBdriver;
864
		if ($globalDBdriver == 'mysql') {
865
			$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";
866
		} else {
867
			$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);"; 
868
                }
869
                $query_values = array(':data' => $data,':stats_date' => $date,':source_name' => $source_name,':stats_type' => $stats_type);
870
                 try {
871
                        $sth = $this->db->prepare($query);
872
                        $sth->execute($query_values);
873
                } catch(PDOException $e) {
874
                        return "error : ".$e->getMessage();
875
                }
876
        }
877
	public function addStatFlight($type,$date_name,$cnt,$stats_airline = '',$filter_name = '') {
878
                $query = "INSERT INTO stats_flight (stats_type,flight_date,cnt,stats_airline,filter_name) VALUES (:type,:flight_date,:cnt,:stats_airline,:filter_name)";
879
                $query_values = array(':type' => $type,':flight_date' => $date_name,':cnt' => $cnt, ':stats_airline' => $stats_airline,':filter_name' => $filter_name);
880
                 try {
881
                        $sth = $this->db->prepare($query);
882
                        $sth->execute($query_values);
883
                } catch(PDOException $e) {
884
                        return "error : ".$e->getMessage();
885
                }
886
        }
887
	public function addStatAircraftRegistration($registration,$cnt,$aircraft_icao = '',$airline_icao = '',$filter_name = '') {
888
		global $globalDBdriver;
889
		if ($globalDBdriver == 'mysql') {
890
			$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";
891
		} else {
892
			$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);"; 
893
		}
894
                $query_values = array(':aircraft_icao' => $aircraft_icao,':registration' => $registration,':cnt' => $cnt,':stats_airline' => $airline_icao, ':filter_name' => $filter_name);
895
                 try {
896
                        $sth = $this->db->prepare($query);
897
                        $sth->execute($query_values);
898
                } catch(PDOException $e) {
899
                        return "error : ".$e->getMessage();
900
                }
901
        }
902
	public function addStatCallsign($callsign_icao,$cnt,$airline_icao = '', $filter_name = '') {
903
		global $globalDBdriver;
904
		if ($globalDBdriver == 'mysql') {
905
			$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";
906
		} else {
907
			$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);"; 
908
		}
909
                $query_values = array(':callsign_icao' => $callsign_icao,':airline_icao' => $airline_icao,':cnt' => $cnt, ':filter_name' => $filter_name);
910
                 try {
911
                        $sth = $this->db->prepare($query);
912
                        $sth->execute($query_values);
913
                } catch(PDOException $e) {
914
                        return "error : ".$e->getMessage();
915
                }
916
        }
917
	public function addStatCountry($iso2,$iso3,$name,$cnt,$filter_name = '') {
918
		global $globalDBdriver;
919
		if ($globalDBdriver == 'mysql') {
920
			$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";
921
		} else {
922
			$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);"; 
923
		}
924
                $query_values = array(':iso2' => $iso2,':iso3' => $iso3,':name' => $name,':cnt' => $cnt,':filter_name' => $filter_name);
925
                 try {
926
                        $sth = $this->db->prepare($query);
927
                        $sth->execute($query_values);
928
                } catch(PDOException $e) {
929
                        return "error : ".$e->getMessage();
930
                }
931
        }
932
	public function addStatAircraft($aircraft_icao,$cnt,$aircraft_name = '',$aircraft_manufacturer = '', $airline_icao = '', $filter_name = '') {
933
		global $globalDBdriver;
934
		if ($globalDBdriver == 'mysql') {
935
			$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";
936
		} else {
937
			$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);"; 
938
		}
939
                $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);
940
                 try {
941
                        $sth = $this->db->prepare($query);
942
                        $sth->execute($query_values);
943
                } catch(PDOException $e) {
944
                        return "error : ".$e->getMessage();
945
                }
946
        }
947
	public function addStatAirline($airline_icao,$cnt,$airline_name = '',$filter_name = '') {
948
		global $globalDBdriver;
949
		if ($globalDBdriver == 'mysql') {
950
			$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";
951
		} else {
952
			$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);"; 
953
		}
954
                $query_values = array(':airline_icao' => $airline_icao,':airline_name' => $airline_name,':cnt' => $cnt,':filter_name' => $filter_name);
955
                 try {
956
                        $sth = $this->db->prepare($query);
957
                        $sth->execute($query_values);
958
                } catch(PDOException $e) {
959
                        return "error : ".$e->getMessage();
960
                }
961
        }
962
	public function addStatOwner($owner_name,$cnt,$stats_airline = '', $filter_name = '') {
963
		global $globalDBdriver;
964
		if ($globalDBdriver == 'mysql') {
965
			$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";
966
		} else {
967
			$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);"; 
968
		}
969
                $query_values = array(':owner_name' => $owner_name,':cnt' => $cnt,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
970
                 try {
971
                        $sth = $this->db->prepare($query);
972
                        $sth->execute($query_values);
973
                } catch(PDOException $e) {
974
                        return "error : ".$e->getMessage();
975
                }
976
        }
977
	public function addStatPilot($pilot_id,$cnt,$pilot_name,$stats_airline = '',$filter_name = '') {
978
		global $globalDBdriver;
979
		if ($globalDBdriver == 'mysql') {
980
			$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";
981
		} else {
982
			$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);"; 
983
		}
984
                $query_values = array(':pilot_id' => $pilot_id,':cnt' => $cnt,':pilot_name' => $pilot_name,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
985
                 try {
986
                        $sth = $this->db->prepare($query);
987
                        $sth->execute($query_values);
988
                } catch(PDOException $e) {
989
                        return "error : ".$e->getMessage();
990
                }
991
        }
992
	public function addStatDepartureAirports($airport_icao,$airport_name,$airport_city,$airport_country,$departure,$airline_icao = '',$filter_name = '') {
993
		global $globalDBdriver;
994
		if ($globalDBdriver == 'mysql') {
995
			$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";
996
		} else {
997
			$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);"; 
998
		}
999
                $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);
1000
                 try {
1001
                        $sth = $this->db->prepare($query);
1002
                        $sth->execute($query_values);
1003
                } catch(PDOException $e) {
1004
                        return "error : ".$e->getMessage();
1005
                }
1006
        }
1007
	public function addStatDepartureAirportsDaily($date,$airport_icao,$airport_name,$airport_city,$airport_country,$departure,$airline_icao = '',$filter_name = '') {
1008
		global $globalDBdriver;
1009
		if ($globalDBdriver == 'mysql') {
1010
			$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";
1011
		} else {
1012
			$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);"; 
1013
		}
1014
                $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);
1015
                 try {
1016
                        $sth = $this->db->prepare($query);
1017
                        $sth->execute($query_values);
1018
                } catch(PDOException $e) {
1019
                        return "error : ".$e->getMessage();
1020
                }
1021
        }
1022
	public function addStatArrivalAirports($airport_icao,$airport_name,$airport_city,$airport_country,$arrival,$airline_icao = '',$filter_name = '') {
1023
		global $globalDBdriver;
1024
		if ($globalDBdriver == 'mysql') {
1025
			$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";
1026
		} else {
1027
			$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);"; 
1028
		}
1029
                $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);
1030
                 try {
1031
                        $sth = $this->db->prepare($query);
1032
                        $sth->execute($query_values);
1033
                } catch(PDOException $e) {
1034
                        return "error : ".$e->getMessage();
1035
                }
1036
        }
1037
	public function addStatArrivalAirportsDaily($date,$airport_icao,$airport_name,$airport_city,$airport_country,$arrival,$airline_icao = '',$filter_name = '') {
1038
		global $globalDBdriver;
1039
		if ($globalDBdriver == 'mysql') {
1040
			$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";
1041
		} else {
1042
			$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);"; 
1043
		}
1044
                $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);
1045
                 try {
1046
                        $sth = $this->db->prepare($query);
1047
                        $sth->execute($query_values);
1048
                } catch(PDOException $e) {
1049
                        return "error : ".$e->getMessage();
1050
                }
1051
        }
1052
1053
	public function deleteStat($id) {
1054
                $query = "DELETE FROM stats WHERE stats_id = :id";
1055
                $query_values = array(':id' => $id);
1056
                 try {
1057
                        $sth = $this->db->prepare($query);
1058
                        $sth->execute($query_values);
1059
                } catch(PDOException $e) {
1060
                        return "error : ".$e->getMessage();
1061
                }
1062
        }
1063
	public function deleteStatFlight($type) {
1064
                $query = "DELETE FROM stats_flight WHERE stats_type = :type";
1065
                $query_values = array(':type' => $type);
1066
                 try {
1067
                        $sth = $this->db->prepare($query);
1068
                        $sth->execute($query_values);
1069
                } catch(PDOException $e) {
1070
                        return "error : ".$e->getMessage();
1071
                }
1072
        }
1073
	public function deleteStatAirport($type) {
1074
                $query = "DELETE FROM stats_airport WHERE stats_type = :type";
1075
                $query_values = array(':type' => $type);
1076
                 try {
1077
                        $sth = $this->db->prepare($query);
1078
                        $sth->execute($query_values);
1079
                } catch(PDOException $e) {
1080
                        return "error : ".$e->getMessage();
1081
                }
1082
        }
1083
        
1084
        public function addOldStats() {
1085
    		global $globalArchiveMonths, $globalArchive, $globalArchiveYear, $globalDBdriver, $globalStatsFilters;
1086
    		$Common = new Common();
1087
    		$Connection = new Connection();
1088
    		date_default_timezone_set('UTC');
1089
    		$last_update = $this->getLastStatsUpdate('last_update_stats');
1090
		//print_r($last_update);
1091
		/*
1092
		$flightsbymonth = $this->getStats('flights_by_month');
1093
    		if (empty($last_update) && empty($flightsbymonth)) {
1094
			// Initial update
1095
			$Spotter = new Spotter($this->db);
1096
			$alldata = $Spotter->countAllMonths();
1097
			$lastyear = false;
1098
			foreach ($alldata as $number) {
1099
				if ($number['year_name'] != date('Y')) $lastyear = true;
1100
				$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'])));
1101
			}
1102
			$alldata = $Spotter->countAllMilitaryMonths();
1103
			//$lastyear = false;
1104
			foreach ($alldata as $number) {
1105
				if ($number['year_name'] != date('Y')) $lastyear = true;
1106
				$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'])));
1107
			}
1108
			$alldata = $Spotter->countAllMonthsOwners();
1109
			foreach ($alldata as $number) {
1110
				$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'])));
1111
			}
1112
			$alldata = $Spotter->countAllMonthsPilots();
1113
			foreach ($alldata as $number) {
1114
				$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'])));
1115
			}
1116
			$alldata = $Spotter->countAllMonthsAirlines();
1117
			foreach ($alldata as $number) {
1118
				$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'])));
1119
			}
1120
			$alldata = $Spotter->countAllMonthsAircrafts();
1121
			foreach ($alldata as $number) {
1122
				$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'])));
1123
			}
1124
			$alldata = $Spotter->countAllMonthsRealArrivals();
1125
			foreach ($alldata as $number) {
1126
				$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'])));
1127
			}
1128
			$this->deleteStatFlight('month');
1129
			$alldata = $Spotter->countAllDatesLastMonth();
1130
			foreach ($alldata as $number) {
1131
				$this->addStatFlight('month',$number['date_name'],$number['date_count']);
1132
			}
1133
			$previousdata = $this->countAllDates();
1134
			$this->deleteStatFlight('date');
1135
			$alldata = $Common->array_merge_noappend($previousdata,$Spotter->countAllDates());
1136
			$values = array();
1137
			foreach ($alldata as $cnt) {
1138
				$values[] = $cnt['date_count'];
1139
			}
1140
			array_multisort($values,SORT_DESC,$alldata);
1141
			array_splice($alldata,11);
1142
			foreach ($alldata as $number) {
1143
				$this->addStatFlight('date',$number['date_name'],$number['date_count']);
1144
			}
1145
			$this->deleteStatFlight('hour');
1146
			$alldata = $Spotter->countAllHours('hour');
1147
			foreach ($alldata as $number) {
1148
				$this->addStatFlight('hour',$number['hour_name'],$number['hour_count']);
1149
			}
1150
			if ($lastyear) {
1151
				$monthsSinceLastYear = date('n');
1152
				$alldata = $Spotter->countAllAircraftTypes(false,$monthsSinceLastYear);
1153
				foreach ($alldata as $number) {
1154
					$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer']);
1155
				}
1156
				$alldata = $Spotter->countAllAirlines(false,$monthsSinceLastYear);
1157
				foreach ($alldata as $number) {
1158
					$this->addStatAirline($number['airline_icao'],$number['airline_count'],$number['airline_name']);
1159
				}
1160
				if ($Connection->tableExists('countries')) {
1161
					$alldata = $Spotter->countAllFlightOverCountries(false,$monthsSinceLastYear);
1162
					foreach ($alldata as $number) {
1163
						$this->addStatCountry($number['flight_country_iso2'],$number['flight_country_iso3'],$number['flight_country'],$number['flight_count']);
1164
					}
1165
				}
1166
				$alldata = $Spotter->countAllOwners(false,$monthsSinceLastYear);
1167
				foreach ($alldata as $number) {
1168
					$this->addStatOwner($number['owner_name'],$number['owner_count']);
1169
				}
1170
				$alldata = $Spotter->countAllPilots(false,$monthsSinceLastYear);
1171
				foreach ($alldata as $number) {
1172
					$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name']);
1173
				}
1174
				$previous_year = date('Y');
1175
				$previous_year--;
1176
				$this->addStat('aircrafts_byyear',$this->getStatsAircraftTotal(),$previous_year.'-01-01 00:00:00');
1177
				$this->addStat('airlines_byyear',$this->getStatsAirlineTotal(),$previous_year.'-01-01 00:00:00');
1178
				$this->addStat('owner_byyear',$this->getStatsOwnerTotal(),$previous_year.'-01-01 00:00:00');
1179
				$this->addStat('pilot_byyear',$this->getStatsPilotTotal(),$previous_year.'-01-01 00:00:00');
1180
				
1181
				if (isset($globalArchiveYear) && $globalArchiveYear) {
1182
					if ($globalArchive) {
1183
						$query = "INSERT INTO spotter_archive_output SELECT * FROM spotter_output WHERE spotter_output.date < '".date('Y')."-01-01 00:00:00'";
1184
						//echo $query;
1185
						try {
1186
							$sth = $this->db->prepare($query);
1187
							$sth->execute();
1188
						} catch(PDOException $e) {
1189
							return "error : ".$e->getMessage().' - query : '.$query."\n";
1190
						}
1191
					}
1192
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < '".date('Y')."-01-01 00:00:00'";
1193
					try {
1194
						$sth = $this->db->prepare($query);
1195
						$sth->execute();
1196
					} catch(PDOException $e) {
1197
						return "error : ".$e->getMessage().' - query : '.$query."\n";
1198
					}
1199
				}
1200
			}
1201
			if (!isset($globalArchiveMonths) || $globalArchiveMonths == '') $globalArchiveMonths = 2;
1202
			if ($globalArchiveMonths > 0) {
1203
				$alldata = $Spotter->countAllAircraftTypes(false,$globalArchiveMonths);
1204
				foreach ($alldata as $number) {
1205
					$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer']);
1206
				}
1207
				$alldata = $Spotter->countAllAirlines(false,$globalArchiveMonths);
1208
				foreach ($alldata as $number) {
1209
					$this->addStatAirline($number['airline_icao'],$number['airline_count'],$number['airline_name']);
1210
				}
1211
				$alldata = $Spotter->countAllAircraftRegistrations(false,$globalArchiveMonths);
1212
				foreach ($alldata as $number) {
1213
					$this->addStatAircraftRegistration($number['registration'],$number['aircraft_registration_count'],$number['aircraft_icao']);
1214
				}
1215
				$alldata = $Spotter->countAllCallsigns(false,$globalArchiveMonths);
1216
				foreach ($alldata as $number) {
1217
					$this->addStatCallsign($number['callsign_icao'],$number['callsign_icao_count'],$number['airline_icao']);
1218
				}
1219
				$alldata = $Spotter->countAllOwners(false,$globalArchiveMonths);
1220
				foreach ($alldata as $number) {
1221
					$this->addStatOwner($number['owner_name'],$number['owner_count']);
1222
				}
1223
				if ($Connection->tableExists('countries')) {
1224
					$alldata = $Spotter->countAllFlightOverCountries(false,$globalArchiveMonths);
1225
					foreach ($alldata as $number) {
1226
						$this->addStatCountry($number['flight_country_iso2'],$number['flight_country_iso3'],$number['flight_country'],$number['flight_count']);
1227
					}
1228
				}
1229
				$alldata = $Spotter->countAllPilots(false,$globalArchiveMonths);
1230
				foreach ($alldata as $number) {
1231
					$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name']);
1232
				}
1233
				$pall = $Spotter->countAllDepartureAirports(false,$globalArchiveMonths);
1234
        			$dall = $Spotter->countAllDetectedDepartureAirports(false,$globalArchiveMonths);
1235
	        		$alldata = array();
1236
    				foreach ($pall as $value) {
1237
	        			$icao = $value['airport_departure_icao'];
1238
    					$alldata[$icao] = $value;
1239
	        		}
1240
	        		foreach ($dall as $value) {
1241
    					$icao = $value['airport_departure_icao'];
1242
        				if (isset($alldata[$icao])) {                                                           
1243
        					$alldata[$icao]['airport_departure_icao_count'] = $alldata[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
1244
	        			} else $alldata[$icao] = $value;
1245
    				}
1246
        			$count = array();
1247
        			foreach ($alldata as $key => $row) {
1248
        				$count[$key] = $row['airport_departure_icao_count'];
1249
	        		}
1250
    				array_multisort($count,SORT_DESC,$alldata);
1251
1252
				//print_r($alldate);
1253
				foreach ($alldata as $number) {
1254
					$this->addStatDepartureAirports($number['airport_departure_icao'],$number['airport_departure_name'],$number['airport_departure_city'],$number['airport_departure_country'],$number['airport_departure_icao_count']);
1255
				}
1256
				$pdata = $Spotter->countAllArrivalAirports(false,$globalArchiveMonths);
1257
        			$dall = $Spotter->countAllDetectedArrivalAirports(false,$globalArchiveMonths);
1258
	        		$alldata = array();
1259
    				foreach ($pdata as $value) {
1260
	        			$icao = $value['airport_arrival_icao'];
1261
    					$alldata[$icao] = $value;
1262
	        		}
1263
	        		foreach ($dall as $value) {
1264
    					$icao = $value['airport_arrival_icao'];
1265
        				if (isset($alldata[$icao])) {                                                           
1266
        					$alldata[$icao]['airport_arrival_icao_count'] = $alldata[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
1267
	        			} else $alldata[$icao] = $value;
1268
    				}
1269
        			$count = array();
1270
        			foreach ($alldata as $key => $row) {
1271
        				$count[$key] = $row['airport_arrival_icao_count'];
1272
	        		}
1273
    				array_multisort($count,SORT_DESC,$alldata);
1274
				foreach ($alldata as $number) {
1275
					$this->addStatArrivalAirports($number['airport_arrival_icao'],$number['airport_arrival_name'],$number['airport_arrival_city'],$number['airport_arrival_country'],$number['airport_arrival_icao_count']);
1276
				}
1277
				$this->addStat('aircrafts_byyear',$this->getStatsAircraftTotal(),date('Y').'-01-01 00:00:00');
1278
				$this->addStat('airlines_byyear',$this->getStatsAirlineTotal(),date('Y').'-01-01 00:00:00');
1279
				$this->addStat('owner_byyear',$this->getStatsOwnerTotal(),date('Y').'-01-01 00:00:00');
1280
				$this->addStat('pilot_byyear',$this->getStatsPilotTotal(),date('Y').'-01-01 00:00:00');
1281
			
1282
				if ($globalArchive) {
1283
					if ($globalDBdriver == 'mysql') {
1284
						$query = "INSERT INTO spotter_archive_output SELECT * FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
1285
					} else {
1286
						$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)";
1287
					}
1288
					try {
1289
						$sth = $this->db->prepare($query);
1290
						$sth->execute();
1291
					} catch(PDOException $e) {
1292
						return "error : ".$e->getMessage().' - query : '.$query."\n";
1293
					}
1294
				}
1295
	
1296
				//$query = 'DELETE FROM spotter_output WHERE spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$globalArchiveMonths.' MONTH)';
1297
				if ($globalDBdriver == 'mysql') {
1298
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
1299
				} else {
1300
					$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)";
1301
				}
1302
				try {
1303
					$sth = $this->db->prepare($query);
1304
					$sth->execute();
1305
				} catch(PDOException $e) {
1306
					return "error : ".$e->getMessage().' - query : '.$query."\n";
1307
				}
1308
			}
1309
			$this->addLastStatsUpdate('last_update_stats',date('Y-m-d G:i:s'));
1310
		} else {
1311
		*/
1312
			echo 'Update stats !'."\n";
1313
			if (isset($last_update[0]['value'])) {
1314
				$last_update_day = $last_update[0]['value'];
1315
			} else $last_update_day = '2012-12-12 12:12:12';
1316
			$Spotter = new Spotter($this->db);
1317
			$alldata = $Spotter->countAllAircraftTypes(false,0,$last_update_day);
1318
			foreach ($alldata as $number) {
1319
				$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer']);
1320
			}
1321
			$alldata = $Spotter->countAllAirlines(false,0,$last_update_day);
1322
			foreach ($alldata as $number) {
1323
				$this->addStatAirline($number['airline_icao'],$number['airline_count'],$number['airline_name']);
1324
			}
1325
			$alldata = $Spotter->countAllAircraftRegistrations(false,0,$last_update_day);
1326
			foreach ($alldata as $number) {
1327
				$this->addStatAircraftRegistration($number['registration'],$number['aircraft_registration_count'],$number['aircraft_icao']);
1328
			}
1329
			$alldata = $Spotter->countAllCallsigns(false,0,$last_update_day);
1330
			foreach ($alldata as $number) {
1331
				$this->addStatCallsign($number['callsign_icao'],$number['callsign_icao_count'],$number['airline_icao']);
1332
			}
1333
			$alldata = $Spotter->countAllOwners(false,0,$last_update_day);
1334
			foreach ($alldata as $number) {
1335
				$this->addStatOwner($number['owner_name'],$number['owner_count']);
1336
			}
1337
			$alldata = $Spotter->countAllPilots(false,0,$last_update_day);
1338
			foreach ($alldata as $number) {
1339
				$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name']);
1340
			}
1341
			
1342
			$pall = $Spotter->countAllDepartureAirports(false,0,$last_update_day);
1343
        		$dall = $Spotter->countAllDetectedDepartureAirports(false,0,$last_update_day);
1344
	        	$alldata = array();
1345
	        	
1346
    			foreach ($pall as $value) {
1347
	        		$icao = $value['airport_departure_icao'];
1348
    				$alldata[$icao] = $value;
1349
	        	}
1350
	        	foreach ($dall as $value) {
1351
    				$icao = $value['airport_departure_icao'];
1352
        			if (isset($alldata[$icao])) {
1353
    					$alldata[$icao]['airport_departure_icao_count'] = $alldata[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
1354
        			} else $alldata[$icao] = $value;
1355
			}
1356
    			$count = array();
1357
    			foreach ($alldata as $key => $row) {
1358
    				$count[$key] = $row['airport_departure_icao_count'];
1359
        		}
1360
			array_multisort($count,SORT_DESC,$alldata);
1361
			foreach ($alldata as $number) {
1362
				echo $this->addStatDepartureAirports($number['airport_departure_icao'],$number['airport_departure_name'],$number['airport_departure_city'],$number['airport_departure_country'],$number['airport_departure_icao_count']);
1363
			}
1364
			$pall = $Spotter->countAllArrivalAirports(false,0,$last_update_day);
1365
        		$dall = $Spotter->countAllDetectedArrivalAirports(false,0,$last_update_day);
1366
	        	$alldata = array();
1367
    			foreach ($pall as $value) {
1368
	        		$icao = $value['airport_arrival_icao'];
1369
    				$alldata[$icao] = $value;
1370
	        	}
1371
	        	foreach ($dall as $value) {
1372
    				$icao = $value['airport_arrival_icao'];
1373
        			if (isset($alldata[$icao])) {
1374
        				$alldata[$icao]['airport_arrival_icao_count'] = $alldata[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
1375
	        		} else $alldata[$icao] = $value;
1376
    			}
1377
        		$count = array();
1378
        		foreach ($alldata as $key => $row) {
1379
        			$count[$key] = $row['airport_arrival_icao_count'];
1380
	        	}
1381
    			array_multisort($count,SORT_DESC,$alldata);
1382
                        foreach ($alldata as $number) {
1383
				echo $this->addStatArrivalAirports($number['airport_arrival_icao'],$number['airport_arrival_name'],$number['airport_arrival_city'],$number['airport_arrival_country'],$number['airport_arrival_icao_count']);
1384
			}
1385
			if ($Connection->tableExists('countries')) {
1386
				$SpotterArchive = new SpotterArchive();
1387
				$alldata = $SpotterArchive->countAllFlightOverCountries(false,0,$last_update_day);
1388
				foreach ($alldata as $number) {
1389
					$this->addStatCountry($number['flight_country_iso2'],$number['flight_country_iso3'],$number['flight_country'],$number['flight_count']);
1390
				}
1391
			}
1392
			
1393
1394
			// Add by month using getstat if month finish...
1395
1396
			//if (date('m',strtotime($last_update_day)) != date('m')) {
1397
			$Spotter = new Spotter($this->db);
1398
			$alldata = $Spotter->countAllMonths();
1399
			$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...
1400
			foreach ($alldata as $number) {
1401
				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...
1402
				$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'])));
1403
			}
1404
			$alldata = $Spotter->countAllMilitaryMonths();
1405
			foreach ($alldata as $number) {
1406
				$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'])));
1407
			}
1408
			$alldata = $Spotter->countAllMonthsOwners();
1409
			foreach ($alldata as $number) {
1410
				$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'])));
1411
			}
1412
			$alldata = $Spotter->countAllMonthsPilots();
1413
			foreach ($alldata as $number) {
1414
				$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'])));
1415
			}
1416
			$alldata = $Spotter->countAllMonthsAirlines();
1417
			foreach ($alldata as $number) {
1418
				$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'])));
1419
			}
1420
			$alldata = $Spotter->countAllMonthsAircrafts();
1421
			foreach ($alldata as $number) {
1422
				$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'])));
1423
			}
1424
			$alldata = $Spotter->countAllMonthsRealArrivals();
1425
			foreach ($alldata as $number) {
1426
				$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'])));
1427
			}
1428
			echo 'Airports data...'."\n";
1429
			echo '...Departure'."\n";
1430
			$this->deleteStatAirport('daily');
1431
//			$pall = $Spotter->getLast7DaysAirportsDeparture();
1432
  //      		$dall = $Spotter->getLast7DaysDetectedAirportsDeparture();
1433
			$pall = $Spotter->getLast7DaysAirportsDeparture();
1434
        		$dall = $Spotter->getLast7DaysDetectedAirportsDeparture();
1435
        		/*
1436
	        	$alldata = array();
1437
    			foreach ($pall as $value) {
1438
	        		$icao = $value['departure_airport_icao'];
1439
    				$alldata[$icao] = $value;
1440
	        	}
1441
	        	foreach ($dall as $value) {
1442
    				$icao = $value['departure_airport_icao'];
1443
    				$ddate = $value['date'];
1444
        			if (isset($alldata[$icao])) {
1445
        				$alldata[$icao]['departure_airport_count'] = $alldata[$icao]['departure_airport_count'] + $value['departure_airport_count'];
1446
	        		} else $alldata[$icao] = $value;
1447
    			}
1448
        		$count = array();
1449
        		foreach ($alldata as $key => $row) {
1450
        			$count[$key] = $row['departure_airport_count'];
1451
	        	}
1452
    			array_multisort($count,SORT_DESC,$alldata);
1453
    			*/
1454
    			foreach ($dall as $value) {
1455
    				$icao = $value['departure_airport_icao'];
1456
    				$ddate = $value['date'];
1457
    				$find = false;
1458
    				foreach ($pall as $pvalue) {
1459
    					if ($pvalue['departure_airport_icao'] == $icao && $pvalue['date'] == $ddate) {
1460
    						$pvalue['departure_airport_count'] = $pvalue['departure_airport_count'] + $value['departure_airport_count'];
1461
    						$find = true;
1462
    						break;
1463
    					}
1464
    				}
1465
    				if ($find === false) {
1466
    					$pall[] = $value;
1467
    				}
1468
    			}
1469
    			$alldata = $pall;
1470
			foreach ($alldata as $number) {
1471
				$this->addStatDepartureAirportsDaily($number['date'],$number['departure_airport_icao'],$number['departure_airport_name'],$number['departure_airport_city'],$number['departure_airport_country'],$number['departure_airport_count']);
1472
			}
1473
			echo '...Arrival'."\n";
1474
			$pall = $Spotter->getLast7DaysAirportsArrival();
1475
        		$dall = $Spotter->getLast7DaysDetectedAirportsArrival();
1476
        		/*
1477
	        	$alldata = array();
1478
    			foreach ($pall as $value) {
1479
	        		$icao = $value['arrival_airport_icao'];
1480
    				$alldata[$icao] = $value;
1481
	        	}
1482
	        	foreach ($dall as $value) {
1483
    				$icao = $value['arrival_airport_icao'];
1484
        			if (isset($alldata[$icao])) {
1485
        				$alldata[$icao]['arrival_airport_icao_count'] = $alldata[$icao]['arrival_airport_count'] + $value['arrival_airport_count'];
1486
	        		} else $alldata[$icao] = $value;
1487
    			}
1488
        		$count = array();
1489
        		foreach ($alldata as $key => $row) {
1490
        			$count[$key] = $row['arrival_airport_count'];
1491
	        	}
1492
    			array_multisort($count,SORT_DESC,$alldata);
1493
    			*/
1494
1495
1496
    			foreach ($dall as $value) {
1497
    				$icao = $value['arrival_airport_icao'];
1498
    				$ddate = $value['date'];
1499
    				$find = false;
1500
    				foreach ($pall as $pvalue) {
1501
    					if ($pvalue['arrival_airport_icao'] == $icao && $pvalue['date'] == $ddate) {
1502
    						$pvalue['arrival_airport_count'] = $pvalue['arrival_airport_count'] + $value['arrival_airport_count'];
1503
    						$find = true;
1504
    						break;
1505
    					}
1506
    				}
1507
    				if ($find === false) {
1508
    					$pall[] = $value;
1509
    				}
1510
    			}
1511
    			$alldata = $pall;
1512
			foreach ($alldata as $number) {
1513
				$this->addStatArrivalAirportsDaily($number['date'],$number['arrival_airport_icao'],$number['arrival_airport_name'],$number['arrival_airport_city'],$number['arrival_airport_country'],$number['arrival_airport_count']);
1514
			}
1515
1516
			echo 'Flights data...'."\n";
1517
			$this->deleteStatFlight('month');
1518
			echo '-> countAllDatesLastMonth...'."\n";
1519
			$alldata = $Spotter->countAllDatesLastMonth();
1520
			foreach ($alldata as $number) {
1521
				$this->addStatFlight('month',$number['date_name'],$number['date_count']);
1522
			}
1523
			echo '-> countAllDates...'."\n";
1524
			$previousdata = $this->countAllDates();
1525
			$this->deleteStatFlight('date');
1526
			$alldata = $Common->array_merge_noappend($previousdata,$Spotter->countAllDates());
1527
			$values = array();
1528
			foreach ($alldata as $cnt) {
1529
				$values[] = $cnt['date_count'];
1530
			}
1531
			array_multisort($values,SORT_DESC,$alldata);
1532
			array_splice($alldata,11);
1533
			foreach ($alldata as $number) {
1534
				$this->addStatFlight('date',$number['date_name'],$number['date_count']);
1535
			}
1536
			
1537
			$this->deleteStatFlight('hour');
1538
			echo '-> countAllHours...'."\n";
1539
			$alldata = $Spotter->countAllHours('hour');
1540
			foreach ($alldata as $number) {
1541
				$this->addStatFlight('hour',$number['hour_name'],$number['hour_count']);
1542
			}
1543
1544
1545
1546
			// Count by airlines
1547
			echo '--- Stats by airlines ---'."\n";
1548
			$Spotter = new Spotter($this->db);
1549
			$alldata = $Spotter->countAllAircraftTypesByAirlines(false,0,$last_update_day);
1550
			foreach ($alldata as $number) {
1551
				$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer'],$number['airline_icao']);
1552
			}
1553
			$alldata = $Spotter->countAllAircraftRegistrationsByAirlines(false,0,$last_update_day);
1554
			foreach ($alldata as $number) {
1555
				$this->addStatAircraftRegistration($number['registration'],$number['aircraft_registration_count'],$number['aircraft_icao'],$number['airline_icao']);
1556
			}
1557
			$alldata = $Spotter->countAllCallsignsByAirlines(false,0,$last_update_day);
1558
			foreach ($alldata as $number) {
1559
				$this->addStatCallsign($number['callsign_icao'],$number['callsign_icao_count'],$number['airline_icao']);
1560
			}
1561
			$alldata = $Spotter->countAllOwnersByAirlines(false,0,$last_update_day);
1562
			foreach ($alldata as $number) {
1563
				$this->addStatOwner($number['owner_name'],$number['owner_count'],$number['airline_icao']);
1564
			}
1565
			$alldata = $Spotter->countAllPilotsByAirlines(false,0,$last_update_day);
1566
			foreach ($alldata as $number) {
1567
				$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name'],$number['airline_icao']);
1568
			}
1569
			
1570
			$pall = $Spotter->countAllDepartureAirportsByAirlines(false,0,$last_update_day);
1571
       			$dall = $Spotter->countAllDetectedDepartureAirportsByAirlines(false,0,$last_update_day);
1572
	        	//$alldata = array();
1573
    			foreach ($dall as $value) {
1574
    				$icao = $value['airport_departure_icao'];
1575
    				$dicao = $value['airline_icap'];
1576
    				$find = false;
1577
    				foreach ($pall as $pvalue) {
1578
    					if ($pvalue['airport_departure_icao'] == $icao && $pvalue['airline_icao'] = $dicao) {
1579
    						$pvalue['airport_departure_icao_count'] = $pvalue['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
1580
    						$find = true;
1581
    						break;
1582
    					}
1583
    				}
1584
    				if ($find === false) {
1585
    					$pall[] = $value;
1586
    				}
1587
    			}
1588
    			$alldata = $pall;
1589
			foreach ($alldata as $number) {
1590
				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']);
1591
			}
1592
			$pall = $Spotter->countAllArrivalAirportsByAirlines(false,0,$last_update_day);
1593
        		$dall = $Spotter->countAllDetectedArrivalAirportsByAirlines(false,0,$last_update_day);
1594
	        	//$alldata = array();
1595
    			foreach ($dall as $value) {
1596
    				$icao = $value['airport_arrival_icao'];
1597
    				$dicao = $value['airline_icao'];
1598
    				$find = false;
1599
    				foreach ($pall as $pvalue) {
1600
    					if ($pvalue['airport_arrival_icao'] == $icao && $pvalue['airline_icao'] = $dicao) {
1601
    						$pvalue['airport_arrival_icao_count'] = $pvalue['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
1602
    						$find = true;
1603
    						break;
1604
    					}
1605
    				}
1606
    				if ($find === false) {
1607
    					$pall[] = $value;
1608
    				}
1609
    			}
1610
    			$alldata = $pall;
1611
                        foreach ($alldata as $number) {
1612
				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']);
1613
			}
1614
			$Spotter = new Spotter($this->db);
1615
			$alldata = $Spotter->countAllMonthsByAirlines();
1616
			$lastyear = false;
1617
			foreach ($alldata as $number) {
1618
				if ($number['year_name'] != date('Y')) $lastyear = true;
1619
				$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']);
1620
			}
1621
			$alldata = $Spotter->countAllMonthsOwnersByAirlines();
1622
			foreach ($alldata as $number) {
1623
				$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']);
1624
			}
1625
			$alldata = $Spotter->countAllMonthsPilotsByAirlines();
1626
			foreach ($alldata as $number) {
1627
				$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']);
1628
			}
1629
			$alldata = $Spotter->countAllMonthsAircraftsByAirlines();
1630
			foreach ($alldata as $number) {
1631
				$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']);
1632
			}
1633
			$alldata = $Spotter->countAllMonthsRealArrivalsByAirlines();
1634
			foreach ($alldata as $number) {
1635
				$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']);
1636
			}
1637
			echo '...Departure'."\n";
1638
			$pall = $Spotter->getLast7DaysAirportsDepartureByAirlines();
1639
        		$dall = $Spotter->getLast7DaysDetectedAirportsDepartureByAirlines();
1640
    			foreach ($dall as $value) {
1641
    				$icao = $value['departure_airport_icao'];
1642
    				$airline = $value['airline_icao'];
1643
    				$ddate = $value['date'];
1644
    				$find = false;
1645
    				foreach ($pall as $pvalue) {
1646
    					if ($pvalue['departure_airport_icao'] == $icao && $pvalue['date'] == $ddate && $pvalue['airline_icao'] = $airline) {
1647
    						$pvalue['departure_airport_count'] = $pvalue['departure_airport_count'] + $value['departure_airport_count'];
1648
    						$find = true;
1649
    						break;
1650
    					}
1651
    				}
1652
    				if ($find === false) {
1653
    					$pall[] = $value;
1654
    				}
1655
    			}
1656
    			$alldata = $pall;
1657
			foreach ($alldata as $number) {
1658
				$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']);
1659
			}
1660
			echo '...Arrival'."\n";
1661
			$pall = $Spotter->getLast7DaysAirportsArrivalByAirlines();
1662
        		$dall = $Spotter->getLast7DaysDetectedAirportsArrivalByAirlines();
1663
    			foreach ($dall as $value) {
1664
    				$icao = $value['arrival_airport_icao'];
1665
    				$airline = $value['airline_icao'];
1666
    				$ddate = $value['date'];
1667
    				$find = false;
1668
    				foreach ($pall as $pvalue) {
1669
    					if ($pvalue['arrival_airport_icao'] == $icao && $pvalue['date'] == $ddate && $pvalue['airline_icao'] == $airline) {
1670
    						$pvalue['arrival_airport_count'] = $pvalue['arrival_airport_count'] + $value['arrival_airport_count'];
1671
    						$find = true;
1672
    						break;
1673
    					}
1674
    				}
1675
    				if ($find === false) {
1676
    					$pall[] = $value;
1677
    				}
1678
    			}
1679
    			$alldata = $pall;
1680
			foreach ($alldata as $number) {
1681
				$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']);
1682
			}
1683
1684
			echo 'Flights data...'."\n";
1685
			echo '-> countAllDatesLastMonth...'."\n";
1686
			$alldata = $Spotter->countAllDatesLastMonthByAirlines();
1687
			foreach ($alldata as $number) {
1688
				$this->addStatFlight('month',$number['date_name'],$number['date_count'], $number['airline_icao']);
1689
			}
1690
			echo '-> countAllDates...'."\n";
1691
			$previousdata = $this->countAllDatesByAirlines();
1692
			$alldata = $Common->array_merge_noappend($previousdata,$Spotter->countAllDatesByAirlines());
1693
			$values = array();
1694
			foreach ($alldata as $cnt) {
1695
				$values[] = $cnt['date_count'];
1696
			}
1697
			array_multisort($values,SORT_DESC,$alldata);
1698
			array_splice($alldata,11);
1699
			foreach ($alldata as $number) {
1700
				$this->addStatFlight('date',$number['date_name'],$number['date_count'],$number['airline_icao']);
1701
			}
1702
			
1703
			echo '-> countAllHours...'."\n";
1704
			$alldata = $Spotter->countAllHoursByAirlines('hour');
1705
			foreach ($alldata as $number) {
1706
				$this->addStatFlight('hour',$number['hour_name'],$number['hour_count'],$number['airline_icao']);
1707
			}
1708
			
1709
1710
			if (!isset($globalStatsFilters) || $globalStatsFilters == '') $globalStatsFilters = array();
1711
			foreach ($globalStatsFilters as $name => $filter) {
1712
				//$filter_name = $filter['name'];
1713
				$filter_name = $name;
1714
				// Count by filter
1715
				echo '--- Stats by airlines ---'."\n";
1716
				$Spotter = new Spotter($this->db);
1717
				$alldata = $Spotter->countAllAircraftTypes(false,0,$last_update_day,$filter);
1718
				foreach ($alldata as $number) {
1719
					$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer'],'',$filter_name);
1720
				}
1721
				$alldata = $Spotter->countAllAircraftRegistrations(false,0,$last_update_day,$filter);
1722
				foreach ($alldata as $number) {
1723
					$this->addStatAircraftRegistration($number['registration'],$number['aircraft_registration_count'],$number['aircraft_icao'],'',$filter_name);
1724
				}
1725
				$alldata = $Spotter->countAllCallsigns(false,0,$last_update_day,$filter);
1726
				foreach ($alldata as $number) {
1727
					$this->addStatCallsign($number['callsign_icao'],$number['callsign_icao_count'],'',$filter_name);
1728
				}
1729
				$alldata = $Spotter->countAllOwners(false,0,$last_update_day,$filter);
1730
				foreach ($alldata as $number) {
1731
					$this->addStatOwner($number['owner_name'],$number['owner_count'],'',$filter_name);
1732
				}
1733
				$alldata = $Spotter->countAllPilots(false,0,$last_update_day,$filter);
1734
				foreach ($alldata as $number) {
1735
					$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name'],'',$filter_name);
1736
				}
1737
    			
1738
				$pall = $Spotter->countAllDepartureAirports(false,0,$last_update_day,$filter);
1739
	       			$dall = $Spotter->countAllDetectedDepartureAirports(false,0,$last_update_day,$filter);
1740
		        	//$alldata = array();
1741
	    			foreach ($dall as $value) {
1742
	    				$icao = $value['airport_departure_icao'];
1743
	    				$dicao = $value['airline_icap'];
1744
	    				$find = false;
1745
        				foreach ($pall as $pvalue) {
1746
        					if ($pvalue['airport_departure_icao'] == $icao && $pvalue['airline_icao'] = $dicao) {
1747
        						$pvalue['airport_departure_icao_count'] = $pvalue['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
1748
        						$find = true;
1749
        						break;
1750
        					}
1751
        				}
1752
        				if ($find === false) {
1753
        					$pall[] = $value;
1754
        				}
1755
        			}
1756
        			$alldata = $pall;
1757
				foreach ($alldata as $number) {
1758
    					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);
1759
				}
1760
				$pall = $Spotter->countAllArrivalAirports(false,0,$last_update_day,$filter);
1761
    				$dall = $Spotter->countAllDetectedArrivalAirports(false,0,$last_update_day,$filter);
1762
	    			//$alldata = array();
1763
				foreach ($dall as $value) {
1764
    					$icao = $value['airport_arrival_icao'];
1765
	    				$dicao = $value['airline_icao'];
1766
	    				$find = false;
1767
    					foreach ($pall as $pvalue) {
1768
    						if ($pvalue['airport_arrival_icao'] == $icao && $pvalue['airline_icao'] = $dicao) {
1769
							$pvalue['airport_arrival_icao_count'] = $pvalue['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
1770
							$find = true;
1771
							break;
1772
        					}
1773
					}
1774
					if ($find === false) {
1775
						$pall[] = $value;
1776
					}
1777
        			}
1778
				$alldata = $pall;
1779
				foreach ($alldata as $number) {
1780
					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);
1781
				}
1782
				$Spotter = new Spotter($this->db);
1783
				$alldata = $Spotter->countAllMonths($filter);
1784
				$lastyear = false;
1785
				foreach ($alldata as $number) {
1786
					if ($number['year_name'] != date('Y')) $lastyear = true;
1787
					$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);
1788
				}
1789
				$alldata = $Spotter->countAllMonthsOwners($filter);
1790
				foreach ($alldata as $number) {
1791
					$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);
1792
				}
1793
				$alldata = $Spotter->countAllMonthsPilots($filter);
1794
				foreach ($alldata as $number) {
1795
					$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);
1796
				}
1797
				$alldata = $Spotter->countAllMonthsAircrafts($filter);
1798
				foreach ($alldata as $number) {
1799
					$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);
1800
				}
1801
				$alldata = $Spotter->countAllMonthsRealArrivals($filter);
1802
				foreach ($alldata as $number) {
1803
					$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);
1804
				}
1805
				echo '...Departure'."\n";
1806
				$pall = $Spotter->getLast7DaysAirportsDeparture($filter);
1807
        			$dall = $Spotter->getLast7DaysDetectedAirportsDeparture($filter);
1808
	    			foreach ($dall as $value) {
1809
    					$icao = $value['departure_airport_icao'];
1810
    					$airline = $value['airline_icao'];
1811
	    				$ddate = $value['date'];
1812
    					$find = false;
1813
    					foreach ($pall as $pvalue) {
1814
    						if ($pvalue['departure_airport_icao'] == $icao && $pvalue['date'] == $ddate && $pvalue['airline_icao'] = $airline) {
1815
	    						$pvalue['departure_airport_count'] = $pvalue['departure_airport_count'] + $value['departure_airport_count'];
1816
    							$find = true;
1817
    							break;
1818
    						}
1819
    					}
1820
					if ($find === false) {
1821
	    					$pall[] = $value;
1822
    					}
1823
    				}
1824
	    			$alldata = $pall;
1825
				foreach ($alldata as $number) {
1826
					$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);
1827
				}
1828
				echo '...Arrival'."\n";
1829
				$pall = $Spotter->getLast7DaysAirportsArrival($filter);
1830
    				$dall = $Spotter->getLast7DaysDetectedAirportsArrival($filter);
1831
				foreach ($dall as $value) {
1832
					$icao = $value['arrival_airport_icao'];
1833
					$airline = $value['airline_icao'];
1834
					$ddate = $value['date'];
1835
    					$find = false;
1836
					foreach ($pall as $pvalue) {
1837
    						if ($pvalue['arrival_airport_icao'] == $icao && $pvalue['date'] == $ddate && $pvalue['airline_icao'] == $airline) {
1838
    							$pvalue['arrival_airport_count'] = $pvalue['arrival_airport_count'] + $value['arrival_airport_count'];
1839
    							$find = true;
1840
    							break;
1841
	    					}
1842
    					}
1843
    					if ($find === false) {
1844
    						$pall[] = $value;
1845
	    				}
1846
    				}
1847
    				$alldata = $pall;
1848
				foreach ($alldata as $number) {
1849
					$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);
1850
				}
1851
    
1852
				echo 'Flights data...'."\n";
1853
				echo '-> countAllDatesLastMonth...'."\n";
1854
				$alldata = $Spotter->countAllDatesLastMonth($filter);
1855
				foreach ($alldata as $number) {
1856
					$this->addStatFlight('month',$number['date_name'],$number['date_count'], '',$filter_name);
1857
				}
1858
				echo '-> countAllDates...'."\n";
1859
				$previousdata = $this->countAllDates($filter);
1860
				$alldata = $Common->array_merge_noappend($previousdata,$Spotter->countAllDates($filter));
1861
				$values = array();
1862
				foreach ($alldata as $cnt) {
1863
					$values[] = $cnt['date_count'];
1864
				}
1865
				array_multisort($values,SORT_DESC,$alldata);
1866
				array_splice($alldata,11);
1867
				foreach ($alldata as $number) {
1868
					$this->addStatFlight('date',$number['date_name'],$number['date_count'],'',$filter_name);
1869
				}
1870
				
1871
				echo '-> countAllHours...'."\n";
1872
				$alldata = $Spotter->countAllHours('hour',$filter);
1873
				foreach ($alldata as $number) {
1874
					$this->addStatFlight('hour',$number['hour_name'],$number['hour_count'],'',$filter_name);
1875
				}
1876
			}
1877
	
1878
1879
			// Last year stats
1880
			if ($lastyear) {
1881
				echo 'Data from last year...'."\n";
1882
				// SUM all previous month to put as year
1883
				$previous_year = date('Y');
1884
				$previous_year--;
1885
				$this->addStat('aircrafts_byyear',$this->getSumStats('aircrafts_bymonth',$previous_year),$previous_year.'-01-01 00:00:00');
1886
				$this->addStat('airlines_byyear',$this->getSumStats('airlines_bymonth',$previous_year),$previous_year.'-01-01 00:00:00');
1887
				$this->addStat('owner_byyear',$this->getSumStats('owner_bymonth',$previous_year),$previous_year.'-01-01 00:00:00');
1888
				$this->addStat('pilot_byyear',$this->getSumStats('pilot_bymonth',$previous_year),$previous_year.'-01-01 00:00:00');
1889
				$allairlines = $this->getAllAirlineNames();
1890
				foreach ($allairlines as $data) {
1891
					$this->addStat('aircrafts_byyear',$this->getSumStats('aircrafts_bymonth',$previous_year,$data['airline_icao']),$previous_year.'-01-01 00:00:00',$data['airline_icao']);
1892
					$this->addStat('airlines_byyear',$this->getSumStats('airlines_bymonth',$previous_year,$data['airline_icao']),$previous_year.'-01-01 00:00:00',$data['airline_icao']);
1893
					$this->addStat('owner_byyear',$this->getSumStats('owner_bymonth',$previous_year,$data['airline_icao']),$previous_year.'-01-01 00:00:00',$data['airline_icao']);
1894
					$this->addStat('pilot_byyear',$this->getSumStats('pilot_bymonth',$previous_year,$data['airline_icao']),$previous_year.'-01-01 00:00:00',$data['airline_icao']);
1895
				}
1896
				
1897
				if (isset($globalArchiveYear) && $globalArchiveYear) {
1898
					if ($globalArchive) {
1899
						$query = "INSERT INTO spotter_archive_output SELECT * FROM spotter_output WHERE spotter_output.date < '".date('Y')."-01-01 00:00:00'";
1900
						try {
1901
							$sth = $this->db->prepare($query);
1902
							$sth->execute();
1903
						} catch(PDOException $e) {
1904
							return "error : ".$e->getMessage().' - query : '.$query."\n";
1905
						}
1906
					}
1907
					echo 'Delete old data'."\n";
1908
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < '".date('Y')."-01-01 00:00:00'";
1909
					try {
1910
						$sth = $this->db->prepare($query);
1911
						$sth->execute();
1912
					} catch(PDOException $e) {
1913
						return "error : ".$e->getMessage().' - query : '.$query."\n";
1914
					}
1915
				}
1916
			}
1917
			if ($globalArchiveMonths > 0) {
1918
				if ($globalArchive) {
1919
					echo 'Archive old data...'."\n";
1920
					if ($globalDBdriver == 'mysql') {
1921
						//$query = "INSERT INTO spotter_archive_output SELECT * FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
1922
						$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)
1923
							    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
1924
	    						     FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
1925
					} else {
1926
						$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)
1927
							     SELECT 
1928
								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
1929
							    FROM spotter_output WHERE spotter_output.date < CAST(to_char(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalArchiveMonths." MONTHS', 'YYYY/mm/01') AS TIMESTAMP)";
1930
					}
1931
					try {
1932
						$sth = $this->db->prepare($query);
1933
						$sth->execute();
1934
					} catch(PDOException $e) {
1935
						return "error : ".$e->getMessage();
1936
					}
1937
				}
1938
				echo 'Deleting old data...'."\n";
1939
				//$query = 'DELETE FROM spotter_output WHERE spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$globalArchiveMonths.' MONTH)';
1940
				if ($globalDBdriver == 'mysql') {
1941
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
1942
				} else {
1943
					$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)";
1944
				}
1945
				try {
1946
					$sth = $this->db->prepare($query);
1947
					$sth->execute();
1948
				} catch(PDOException $e) {
1949
					return "error : ".$e->getMessage();
1950
				}
1951
			}
1952
			echo 'Insert last stats update date...'."\n";
1953
			date_default_timezone_set('UTC');
1954
			$this->addLastStatsUpdate('last_update_stats',date('Y-m-d G:i:s'));
1955
		//}
1956
	}
1957
}
1958
1959
?>