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

Stats::addStatArrivalAirportsDaily()   A

Complexity

Conditions 3
Paths 6

Size

Total Lines 15
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

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

How to fix   Many Parameters   

Many Parameters

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

There are several approaches to avoid long parameter lists:

1
<?php
2
/*
3
* This class save stats older than a year and $globalArchiveMonths
4
*/
5
6
require_once(dirname(__FILE__).'/class.Spotter.php');
7
require_once(dirname(__FILE__).'/class.SpotterArchive.php');
8
require_once(dirname(__FILE__).'/class.Common.php');
9
class Stats {
10
	public $db;
11
	public function __construct($dbc = null) {
12
		$Connection = new Connection($dbc);
13
		$this->db = $Connection->db();
14
        }
15
              
16
	public function addLastStatsUpdate($type,$stats_date) {
17
                $query = "DELETE FROM config WHERE name = :type;
18
            		INSERT INTO config (name,value) VALUES (:type,:stats_date);";
19
                $query_values = array('type' => $type,':stats_date' => $stats_date);
20
                 try {
21
                        $sth = $this->db->prepare($query);
22
                        $sth->execute($query_values);
23
                } catch(PDOException $e) {
24
                        return "error : ".$e->getMessage();
25
                }
26
        }
27
28
	public function getLastStatsUpdate($type = 'last_update_stats') {
29
                $query = "SELECT value FROM config WHERE name = :type";
30
                 try {
31
                        $sth = $this->db->prepare($query);
32
                        $sth->execute(array(':type' => $type));
33
                } catch(PDOException $e) {
34
                        echo "error : ".$e->getMessage();
35
                }
36
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
37
                return $all;
38
        }
39
	public function getAllAirlineNames($filter_name = '') {
40
                $query = "SELECT * FROM stats_airline WHERE filter_name = :filter_name ORDER BY airline_name ASC";
41
                 try {
42
                        $sth = $this->db->prepare($query);
43
                        $sth->execute(array(':filter_name' => $filter_name));
44
                } catch(PDOException $e) {
45
                        echo "error : ".$e->getMessage();
46
                }
47
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
48
                return $all;
49
        }
50
	public function getAllAircraftTypes($stats_airline = '',$filter_name = '') {
51
                $query = "SELECT * FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY aircraft_manufacturer ASC";
52
                 try {
53
                        $sth = $this->db->prepare($query);
54
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
55
                } catch(PDOException $e) {
56
                        echo "error : ".$e->getMessage();
57
                }
58
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
59
                return $all;
60
        }
61
	public function getAllAirportNames($stats_airline = '',$filter_name = '') {
62
                $query = "SELECT airport_icao, airport_name,airport_city,airport_country FROM stats_airport WHERE stats_airline = :stats_airline AND filter_name = :filter_name GROUP BY airport_icao,airport_name,airport_city,airport_country ORDER BY airport_city ASC";
63
                 try {
64
                        $sth = $this->db->prepare($query);
65
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
66
                } catch(PDOException $e) {
67
                        echo "error : ".$e->getMessage();
68
                }
69
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
70
                return $all;
71
        }
72
73
74
	public function countAllAircraftTypes($limit = true, $stats_airline = '', $filter_name = '') {
75
		global $globalStatsFilters;
76
		if ($limit) $query = "SELECT aircraft_icao, cnt AS aircraft_icao_count, aircraft_name FROM stats_aircraft WHERE aircraft_name <> '' AND aircraft_icao <> '' AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY aircraft_icao_count DESC LIMIT 10 OFFSET 0";
77
		else $query = "SELECT aircraft_icao, cnt AS aircraft_icao_count, aircraft_name FROM stats_aircraft WHERE aircraft_name <> '' AND aircraft_icao <> '' AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY aircraft_icao_count DESC";
78
                 try {
79
                        $sth = $this->db->prepare($query);
80
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
81
                } catch(PDOException $e) {
82
                        echo "error : ".$e->getMessage();
83
                }
84
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
85
                if (empty($all)) {
86
            	    $filters = array('airlines' => array($stats_airline));
87
            	    if ($filter_name != '') {
88
            		    $filters = array_merge($filters,$globalStatsFilters[$filter_name]);
89
            	    }
90
            	    $Spotter = new Spotter($this->db);
91
            	    $all = $Spotter->countAllAircraftTypes($limit,0,'',$filters);
92
                }
93
                return $all;
94
	}
95
	public function countAllAirlineCountries($limit = true,$filter_name = '') {
96
		global $globalStatsFilters;
97
		if ($limit) $query = "SELECT airlines.country AS airline_country, SUM(stats_airline.cnt) as airline_country_count FROM stats_airline,airlines WHERE stats_airline.airline_icao=airlines.icao AND filter_name = :filter_name GROUP BY airline_country ORDER BY airline_country_count DESC LIMIT 10 OFFSET 0";
98
		else $query = "SELECT airlines.country AS airline_country, SUM(stats_airline.cnt) as airline_country_count FROM stats_airline,airlines WHERE stats_airline.airline_icao=airlines.icao AND filter_name = :filter_name GROUP BY airline_country ORDER BY airline_country_count DESC";
99
                 try {
100
                        $sth = $this->db->prepare($query);
101
                        $sth->execute(array(':filter_name' => $filter_name));
102
                } catch(PDOException $e) {
103
                        echo "error : ".$e->getMessage();
104
                }
105
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
106
                if (empty($all)) {
107
            		$Spotter = new Spotter($this->db);
108
            		$filters = array();
109
            		if ($filter_name != '') {
110
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
111
			}
112
            		$all = $Spotter->countAllAirlineCountries($limit,$filters);
113
                }
114
                return $all;
115
	}
116
	public function countAllAircraftManufacturers($limit = true,$stats_airline = '', $filter_name = '') {
117
		global $globalStatsFilters;
118
		if ($limit) $query = "SELECT aircraft_manufacturer, SUM(stats_aircraft.cnt) as aircraft_manufacturer_count FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name GROUP BY aircraft_manufacturer ORDER BY aircraft_manufacturer_count DESC LIMIT 10 OFFSET 0";
119
		else $query = "SELECT aircraft_manufacturer, SUM(stats_aircraft.cnt) as aircraft_manufacturer_count FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name GROUP BY aircraft_manufacturer ORDER BY aircraft_manufacturer_count DESC";
120
                 try {
121
                        $sth = $this->db->prepare($query);
122
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
123
                } catch(PDOException $e) {
124
                        echo "error : ".$e->getMessage();
125
                }
126
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
127
                if (empty($all)) {
128
            		$filters = array('airlines' => array($stats_airline));
129
            		if ($filter_name != '') {
130
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
131
			}
132
            		$Spotter = new Spotter($this->db);
133
			$all = $Spotter->countAllAircraftManufacturers($filters);
134
                }
135
                return $all;
136
	}
137
138
	public function countAllArrivalCountries($limit = true, $stats_airline = '', $filter_name = '') {
139
		global $globalStatsFilters;
140
		if ($limit) $query = "SELECT airport_country AS airport_arrival_country, SUM(arrival) as airport_arrival_country_count FROM stats_airport WHERE stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name GROUP BY airport_arrival_country ORDER BY airport_arrival_country_count DESC LIMIT 10 OFFSET 0";
141
		else $query = "SELECT airport_country AS airport_arrival_country, SUM(arrival) as airport_arrival_country_count FROM stats_airport WHERE stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name GROUP BY airport_arrival_country ORDER BY airport_arrival_country_count DESC";
142
                 try {
143
                        $sth = $this->db->prepare($query);
144
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
145
                } catch(PDOException $e) {
146
                        echo "error : ".$e->getMessage();
147
                }
148
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
149
                if (empty($all)) {
150
			$filters = array('airlines' => array($stats_airline));
151
			if ($filter_name != '') {
152
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
153
			}
154
			$Spotter = new Spotter($this->db);
155
			$all = $Spotter->countAllArrivalCountries($limit,$filters);
156
                }
157
                return $all;
158
	}
159
	public function countAllDepartureCountries($limit = true, $stats_airline = '', $filter_name = '') {
160
		global $globalStatsFilters;
161
		if ($limit) $query = "SELECT airport_country AS airport_departure_country, SUM(departure) as airport_departure_country_count FROM stats_airport WHERE stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name GROUP BY airport_departure_country ORDER BY airport_departure_country_count DESC LIMIT 10 OFFSET 0";
162
		else $query = "SELECT airport_country AS airport_departure_country, SUM(departure) as airport_departure_country_count FROM stats_airport WHERE stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name GROUP BY airport_departure_country ORDER BY airport_departure_country_count DESC";
163
                 try {
164
                        $sth = $this->db->prepare($query);
165
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
166
                } catch(PDOException $e) {
167
                        echo "error : ".$e->getMessage();
168
                }
169
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
170
                if (empty($all)) {
171
			$filters = array('airlines' => array($stats_airline));
172
			if ($filter_name != '') {
173
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
174
			}
175
			$Spotter = new Spotter($this->db);
176
			$all = $Spotter->countAllDepartureCountries($filters);
177
                }
178
                return $all;
179
	}
180
181
	public function countAllAirlines($limit = true,$filter_name = '') {
182
		global $globalStatsFilters;
183
		if ($limit) $query = "SELECT DISTINCT stats_airline.airline_icao, stats_airline.cnt AS airline_count, stats_airline.airline_name, airlines.country as airline_country FROM stats_airline, airlines WHERE stats_airline.airline_name <> '' AND stats_airline.airline_icao <> '' AND airlines.icao = stats_airline.airline_icao AND filter_name = :filter_name ORDER BY airline_count DESC LIMIT 10 OFFSET 0";
184
		else $query = "SELECT DISTINCT stats_airline.airline_icao, stats_airline.cnt AS airline_count, stats_airline.airline_name, airlines.country as airline_country FROM stats_airline, airlines WHERE stats_airline.airline_name <> '' AND stats_airline.airline_icao <> '' AND airlines.icao = stats_airline.airline_icao AND filter_name = :filter_name ORDER BY airline_count DESC";
185
                 try {
186
                        $sth = $this->db->prepare($query);
187
                        $sth->execute(array(':filter_name' => $filter_name));
188
                } catch(PDOException $e) {
189
                        echo "error : ".$e->getMessage();
190
                }
191
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
192
                if (empty($all)) {
193
	                $Spotter = new Spotter($this->db);
194
            		$filters = array();
195
            		if ($filter_name != '') {
196
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
197
			}
198
199
    		        $all = $Spotter->countAllAirlines($limit,0,'',$filters);
200
                }
201
                return $all;
202
	}
203
	public function countAllAircraftRegistrations($limit = true,$stats_airline = '',$filter_name = '') {
204
		global $globalStatsFilters;
205
		if ($limit) $query = "SELECT s.aircraft_icao, s.cnt AS aircraft_registration_count, a.type AS aircraft_name, s.registration FROM stats_registration s, aircraft a WHERE s.registration <> '' AND a.icao = s.aircraft_icao AND s.stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY aircraft_registration_count DESC LIMIT 10 OFFSET 0";
206
		else $query = "SELECT s.aircraft_icao, s.cnt AS aircraft_registration_count, a.type AS aircraft_name FROM stats_registration s, aircraft a WHERE s.registration <> '' AND a.icao = s.aircraft_icao AND s.stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY aircraft_registration_count DESC";
207
                 try {
208
                        $sth = $this->db->prepare($query);
209
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
210
                } catch(PDOException $e) {
211
                        echo "error : ".$e->getMessage();
212
                }
213
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
214
                if (empty($all)) {
215
			$filters = array('airlines' => array($stats_airline));
216
			if ($filter_name != '') {
217
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
218
			}
219
	                $Spotter = new Spotter($this->db);
220
    		        $all = $Spotter->countAllAircraftRegistrations($limit,0,'',$filters);
221
                }
222
                return $all;
223
	}
224
	public function countAllCallsigns($limit = true,$stats_airline = '',$filter_name = '') {
225
		global $globalStatsFilters;
226
		if ($limit) $query = "SELECT s.callsign_icao, s.cnt AS callsign_icao_count, a.name AS airline_name, a.icao as airline_icao FROM stats_callsign s, airlines a WHERE s.callsign_icao <> '' AND a.icao = s.airline_icao AND s.airline_icao = :stats_airline AND filter_name = :filter_name ORDER BY callsign_icao_count DESC LIMIT 10 OFFSET 0";
227
		else $query = "SELECT s.callsign_icao, s.cnt AS callsign_icao_count, a.name AS airline_name, a.icao as airline_icao FROM stats_callsign s, airlines a WHERE s.callsign_icao <> '' AND a.icao = s.airline_icao AND s.airline_icao = :stats_airline AND filter_name = :filter_name ORDER BY callsign_icao_count DESC";
228
		 try {
229
			$sth = $this->db->prepare($query);
230
			$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
231
		} catch(PDOException $e) {
232
			echo "error : ".$e->getMessage();
233
		}
234
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
235
		if (empty($all)) {
236
			$filters = array('airlines' => array($stats_airline));
237
			if ($filter_name != '') {
238
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
239
			}
240
			$Spotter = new Spotter($this->db);
241
			$all = $Spotter->countAllCallsigns($limit,0,'',$filters);
242
		}
243
		return $all;
244
	}
245
	public function countAllFlightOverCountries($limit = true, $stats_airline = '',$filter_name = '') {
246
		$Connection = new Connection();
247
		if ($Connection->tableExists('countries')) {
248
			if ($limit) $query = "SELECT countries.iso3 as flight_country_iso3, countries.iso2 as flight_country_iso2, countries.name as flight_country, cnt as flight_count, lat as flight_country_latitude, lon as flight_country_longitude FROM stats_country, countries WHERE stats_country.iso2 = countries.iso2 AND stats_country.stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY flight_count DESC LIMIT 20 OFFSET 0";
249
			else $query = "SELECT countries.iso3 as flight_country_iso3, countries.iso2 as flight_country_iso2, countries.name as flight_country, cnt as flight_count, lat as flight_country_latitude, lon as flight_country_longitude FROM stats_country, countries WHERE stats_country.iso2 = countries.iso2 AND stats_country.stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY flight_count DESC";
250
			 try {
251
				$sth = $this->db->prepare($query);
252
				$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
253
			} catch(PDOException $e) {
254
				echo "error : ".$e->getMessage();
255
			}
256
			$all = $sth->fetchAll(PDO::FETCH_ASSOC);
257
                /*
258
                if (empty($all)) {
259
	                $Spotter = new Spotter($this->db);
260
    		        $all = $Spotter->countAllFlightOverCountries($limit);
261
                }
262
                */
263
			return $all;
264
		} else {
265
			return array();
266
		}
267
	}
268
	public function countAllPilots($limit = true,$stats_airline = '',$filter_name = '') {
269
		global $globalStatsFilters;
270
		if ($limit) $query = "SELECT pilot_id, cnt AS pilot_count, pilot_name FROM stats_pilot WHERE stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY pilot_count DESC LIMIT 10 OFFSET 0";
271
		else $query = "SELECT pilot_id, cnt AS pilot_count, pilot_name FROM stats_pilot WHERE stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY pilot_count DESC";
272
                 try {
273
                        $sth = $this->db->prepare($query);
274
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
275
                } catch(PDOException $e) {
276
                        echo "error : ".$e->getMessage();
277
                }
278
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
279
                if (empty($all)) {
280
			$filters = array('airlines' => array($stats_airline));
281
			if ($filter_name != '') {
282
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
283
			}
284
            		$Spotter = new Spotter($this->db);
285
            		$all = $Spotter->countAllPilots($limit,0,'',$filters);
286
                }
287
                return $all;
288
	}
289
	public function countAllOwners($limit = true,$stats_airline = '', $filter_name = '') {
290
		global $globalStatsFilters;
291
		if ($limit) $query = "SELECT owner_name, cnt AS owner_count FROM stats_owner WHERE stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY owner_count DESC LIMIT 10 OFFSET 0";
292
		else $query = "SELECT owner_name, cnt AS owner_count FROM stats_owner WHERE stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY owner_count DESC";
293
                 try {
294
                        $sth = $this->db->prepare($query);
295
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
296
                } catch(PDOException $e) {
297
                        echo "error : ".$e->getMessage();
298
                }
299
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
300
                if (empty($all)) {
301
			$filters = array('airlines' => array($stats_airline));
302
			if ($filter_name != '') {
303
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
304
			}
305
            		$Spotter = new Spotter($this->db);
306
            		$all = $Spotter->countAllOwners($limit,0,'',$filters);
307
                }
308
                return $all;
309
	}
310
	public function countAllDepartureAirports($limit = true,$stats_airline = '',$filter_name = '') {
311
		global $globalStatsFilters;
312
		if ($limit) $query = "SELECT DISTINCT airport_icao AS airport_departure_icao,airport_city AS airport_departure_city,airport_country AS airport_departure_country,departure AS airport_departure_icao_count FROM stats_airport WHERE stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY airport_departure_icao_count DESC LIMIT 10 OFFSET 0";
313
		else $query = "SELECT DISTINCT airport_icao AS airport_departure_icao,airport_city AS airport_departure_city,airport_country AS airport_departure_country,departure AS airport_departure_icao_count FROM stats_airport WHERE stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY airport_departure_icao_count DESC";
314
                 try {
315
                        $sth = $this->db->prepare($query);
316
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
317
                } catch(PDOException $e) {
318
                        echo "error : ".$e->getMessage();
319
                }
320
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
321
                if (empty($all)) {
322
			$filters = array('airlines' => array($stats_airline));
323
            		if ($filter_name != '') {
324
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
325
			}
326
            		$Spotter = new Spotter($this->db);
327
            		$pall = $Spotter->countAllDepartureAirports($limit,0,'',$filters);
328
        		$dall = $Spotter->countAllDetectedDepartureAirports($limit,0,'',$filters);
329
        		$all = array();
330
        		foreach ($pall as $value) {
331
        			$icao = $value['airport_departure_icao'];
332
        			$all[$icao] = $value;
333
        		}
334
        		
335
        		foreach ($dall as $value) {
336
        			$icao = $value['airport_departure_icao'];
337
        			if (isset($all[$icao])) {
338
        				$all[$icao]['airport_departure_icao_count'] = $all[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
339
        			} else $all[$icao] = $value;
340
        		}
341
        		$count = array();
342
        		foreach ($all as $key => $row) {
343
        			$count[$key] = $row['airport_departure_icao_count'];
344
        		}
345
        		array_multisort($count,SORT_DESC,$all);
346
                }
347
                return $all;
348
	}
349
	public function countAllArrivalAirports($limit = true,$stats_airline = '',$filter_name = '') {
350
		global $globalStatsFilters;
351
		if ($limit) $query = "SELECT DISTINCT airport_icao AS airport_arrival_icao,airport_city AS airport_arrival_city,airport_country AS airport_arrival_country,arrival AS airport_arrival_icao_count FROM stats_airport WHERE stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY airport_arrival_icao_count DESC LIMIT 10 OFFSET 0";
352
		else $query = "SELECT DISTINCT airport_icao AS airport_arrival_icao,airport_city AS airport_arrival_city,airport_country AS airport_arrival_country,arrival AS airport_arrival_icao_count FROM stats_airport WHERE stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY airport_arrival_icao_count DESC";
353
		try {
354
			$sth = $this->db->prepare($query);
355
			$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
356
		} catch(PDOException $e) {
357
			echo "error : ".$e->getMessage();
358
		}
359
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
360
		if (empty($all)) {
361
			$filters = array('airlines' => array($stats_airline));
362
			if ($filter_name != '') {
363
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
364
			}
365
			$Spotter = new Spotter($this->db);
366
			$pall = $Spotter->countAllArrivalAirports($limit,0,'',false,$filters);
367
			$dall = $Spotter->countAllDetectedArrivalAirports($limit,0,'',false,$filters);
368
        		$all = array();
369
        		foreach ($pall as $value) {
370
        			$icao = $value['airport_arrival_icao'];
371
        			$all[$icao] = $value;
372
        		}
373
        		
374
        		foreach ($dall as $value) {
375
        			$icao = $value['airport_arrival_icao'];
376
        			if (isset($all[$icao])) {
377
        				$all[$icao]['airport_arrival_icao_count'] = $all[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
378
        			} else $all[$icao] = $value;
379
        		}
380
        		$count = array();
381
        		foreach ($all as $key => $row) {
382
        			$count[$key] = $row['airport_arrival_icao_count'];
383
        		}
384
        		array_multisort($count,SORT_DESC,$all);
385
                }
386
 
387
                return $all;
388
	}
389
	public function countAllMonthsLastYear($limit = true,$stats_airline = '',$filter_name = '') {
390
		global $globalDBdriver, $globalStatsFilters;
391
		if ($globalDBdriver == 'mysql') {
392
			if ($limit) $query = "SELECT MONTH(stats_date) as month_name, YEAR(stats_date) as year_name, cnt as date_count FROM stats WHERE stats_type = 'flights_bymonth' AND stats_date >= DATE_SUB(UTC_TIMESTAMP(),INTERVAL 12 MONTH) AND stats_airline = :stats_airline AND filter_name = :filter_name";
393
			else $query = "SELECT MONTH(stats_date) as month_name, YEAR(stats_date) as year_name, cnt as date_count FROM stats WHERE stats_type = 'flights_bymonth' AND stats_airline = :stats_airline AND filter_name = :filter_name";
394
		} else {
395
			if ($limit) $query = "SELECT EXTRACT(MONTH FROM stats_date) as month_name, EXTRACT(YEAR FROM stats_date) as year_name, cnt as date_count FROM stats WHERE stats_type = 'flights_bymonth' AND stats_date >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '12 MONTHS' AND stats_airline = :stats_airline AND filter_name = :filter_name";
396
			else $query = "SELECT EXTRACT(MONTH FROM stats_date) as month_name, EXTRACT(YEAR FROM stats_date) as year_name, cnt as date_count FROM stats WHERE stats_type = 'flights_bymonth' AND stats_airline = :stats_airline AND filter_name = :filter_name";
397
		}
398
		$query_data = array(':stats_airline' => $stats_airline,':filter_name' => $filter_name);
399
                 try {
400
                        $sth = $this->db->prepare($query);
401
                        $sth->execute($query_data);
402
                } catch(PDOException $e) {
403
                        echo "error : ".$e->getMessage();
404
                }
405
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
406
                if (empty($all)) {
407
			$filters = array('airlines' => array($stats_airline));
408
			if ($filter_name != '') {
409
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
410
			}
411
            		$Spotter = new Spotter($this->db);
412
            		$all = $Spotter->countAllMonthsLastYear($filters);
413
                }
414
                
415
                return $all;
416
	}
417
	
418
	public function countAllDatesLastMonth($stats_airline = '',$filter_name = '') {
419
		global $globalStatsFilters;
420
		$query = "SELECT flight_date as date_name, cnt as date_count FROM stats_flight WHERE stats_type = 'month' AND stats_airline = :stats_airline AND filter_name = :filter_name";
421
		$query_data = array(':stats_airline' => $stats_airline,':filter_name' => $filter_name);
422
                 try {
423
                        $sth = $this->db->prepare($query);
424
                        $sth->execute($query_data);
425
                } catch(PDOException $e) {
426
                        echo "error : ".$e->getMessage();
427
                }
428
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
429
                if (empty($all)) {
430
			$filters = array('airlines' => array($stats_airline));
431
			if ($filter_name != '') {
432
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
433
			}
434
            		$Spotter = new Spotter($this->db);
435
            		$all = $Spotter->countAllDatesLastMonth($filters);
436
                }
437
                return $all;
438
	}
439
	public function countAllDatesLast7Days($stats_airline = '',$filter_name = '') {
440
		global $globalDBdriver, $globalStatsFilters;
441
		if ($globalDBdriver == 'mysql') {
442
			$query = "SELECT flight_date as date_name, cnt as date_count FROM stats_flight WHERE stats_type = 'month' AND flight_date >= DATE_SUB(UTC_TIMESTAMP(),INTERVAL 7 DAY) AND stats_airline = :stats_airline AND filter_name = :filter_name";
443
		} else {
444
			$query = "SELECT flight_date as date_name, cnt as date_count FROM stats_flight WHERE stats_type = 'month' AND flight_date::timestamp >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '7 DAYS' AND stats_airline = :stats_airline AND filter_name = :filter_name";
445
		}
446
		$query_data = array(':stats_airline' => $stats_airline,':filter_name' => $filter_name);
447
                 try {
448
                        $sth = $this->db->prepare($query);
449
                        $sth->execute($query_data);
450
                } catch(PDOException $e) {
451
                        echo "error : ".$e->getMessage();
452
                }
453
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
454
                if (empty($all)) {
455
			$filters = array('airlines' => array($stats_airline));
456
			if ($filter_name != '') {
457
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
458
			}
459
            		$Spotter = new Spotter($this->db);
460
            		$all = $Spotter->countAllDatesLast7Days($filters);
461
                }
462
                return $all;
463
	}
464
	public function countAllDates($stats_airline = '',$filter_name = '') {
465
		global $globalStatsFilters;
466
		$query = "SELECT flight_date as date_name, cnt as date_count FROM stats_flight WHERE stats_type = 'date' AND stats_airline = :stats_airline AND filter_name = :filter_name";
467
		$query_data = array(':stats_airline' => $stats_airline,':filter_name' => $filter_name);
468
                 try {
469
                        $sth = $this->db->prepare($query);
470
                        $sth->execute($query_data);
471
                } catch(PDOException $e) {
472
                        echo "error : ".$e->getMessage();
473
                }
474
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
475
                if (empty($all)) {
476
			$filters = array('airlines' => array($stats_airline));
477
			if ($filter_name != '') {
478
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
479
			}
480
            		$Spotter = new Spotter($this->db);
481
            		$all = $Spotter->countAllDates($filters);
482
                }
483
                return $all;
484
	}
485
	public function countAllDatesByAirlines($filter_name = '') {
486
		global $globalStatsFilters;
487
		$query = "SELECT stats_airline as airline_icao, flight_date as date_name, cnt as date_count FROM stats_flight WHERE stats_type = 'date' AND filter_name = :filter_name";
488
		$query_data = array('filter_name' => $filter_name);
489
                 try {
490
                        $sth = $this->db->prepare($query);
491
                        $sth->execute($query_data);
492
                } catch(PDOException $e) {
493
                        echo "error : ".$e->getMessage();
494
                }
495
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
496
                if (empty($all)) {
497
            		$filters = array();
498
            		if ($filter_name != '') {
499
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
500
			}
501
            		$Spotter = new Spotter($this->db);
502
            		$all = $Spotter->countAllDatesByAirlines($filters);
503
                }
504
                return $all;
505
	}
506
	public function countAllMonths($stats_airline = '',$filter_name = '') {
507
		global $globalStatsFilters;
508
	    	$query = "SELECT YEAR(stats_date) AS year_name,MONTH(stats_date) AS month_name, cnt as date_count FROM stats WHERE stats_type = 'flights_bymonth' AND stats_airline = :stats_airline AND filter_name = :filter_name";
509
                 try {
510
                        $sth = $this->db->prepare($query);
511
                        $sth->execute(array(':stats_airline' => $stats_airline, ':filter_name' => $filter_name));
512
                } catch(PDOException $e) {
513
                        echo "error : ".$e->getMessage();
514
                }
515
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
516
                if (empty($all)) {
517
			$filters = array('airlines' => array($stats_airline));
518
			if ($filter_name != '') {
519
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
520
			}
521
            		$Spotter = new Spotter($this->db);
522
            		$all = $Spotter->countAllMonths($filters);
523
                }
524
                return $all;
525
	}
526
	public function countAllMilitaryMonths($filter_name = '') {
527
		global $globalStatsFilters;
528
	    	$query = "SELECT YEAR(stats_date) AS year_name,MONTH(stats_date) AS month_name, cnt as date_count FROM stats WHERE stats_type = 'military_flights_bymonth' AND filter_name = :filter_name";
529
                 try {
530
                        $sth = $this->db->prepare($query);
531
                        $sth->execute(array(':filter_name' => $filter_name));
532
                } catch(PDOException $e) {
533
                        echo "error : ".$e->getMessage();
534
                }
535
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
536
                if (empty($all)) {
537
            		$filters = array();
538
            		if ($filter_name != '') {
539
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
540
			}
541
            		$Spotter = new Spotter($this->db);
542
            		$all = $Spotter->countAllMilitaryMonths($filters);
543
                }
544
                return $all;
545
	}
546
	public function countAllHours($orderby = 'hour',$limit = true,$stats_airline = '',$filter_name = '') {
547
		global $globalTimezone, $globalDBdriver, $globalStatsFilters;
548
549
		if ($limit) $query = "SELECT flight_date as hour_name, cnt as hour_count FROM stats_flight WHERE stats_type = 'hour' AND stats_airline = :stats_airline AND filter_name = :filter_name";
550
		else $query = "SELECT flight_date as hour_name, cnt as hour_count FROM stats_flight WHERE stats_type = 'hour' AND stats_airline = :stats_airline AND filter_name = :filter_name";
551
		if ($orderby == 'hour') {
552
			if ($globalDBdriver == 'mysql') {
553
				$query .= " ORDER BY flight_date ASC";
554
			} else {
555
				$query .= " ORDER BY CAST(flight_date AS integer) ASC";
556
			}
557
		}
558
		if ($orderby == 'count') $query .= " ORDER BY hour_count DESC";
559
                 try {
560
                        $sth = $this->db->prepare($query);
561
                        $sth->execute(array(':stats_airline' => $stats_airline, ':filter_name' => $filter_name));
562
                } catch(PDOException $e) {
563
                        echo "error : ".$e->getMessage();
564
                }
565
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
566
                if (empty($all)) {
567
			$filters = array('airlines' => array($stats_airline));
568
			if ($filter_name != '') {
569
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
570
			}
571
            		$Spotter = new Spotter($this->db);
572
            		$all = $Spotter->countAllHours($orderby,$filters);
573
                }
574
                return $all;
575
	}
576
	
577
	public function countOverallFlights($stats_airline = '', $filter_name = '') {
578
		global $globalStatsFilters;
579
		$all = $this->getSumStats('flights_bymonth',date('Y'),$stats_airline,$filter_name);
580
		if (empty($all)) {
581
			$filters = array('airlines' => array($stats_airline));
582
			if ($filter_name != '') {
583
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
584
			}
585
			$Spotter = new Spotter($this->db);
586
			$all = $Spotter->countOverallFlights($filters);
587
		}
588
		return $all;
589
	}
590
	public function countOverallMilitaryFlights($filter_name = '') {
591
		global $globalStatsFilters;
592
		$all = $this->getSumStats('military_flights_bymonth',date('Y'),'',$filter_name);
593
		if (empty($all)) {
594
		        $filters = array();
595
            		if ($filter_name != '') {
596
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
597
			}
598
			$Spotter = new Spotter($this->db);
599
			$all = $Spotter->countOverallMilitaryFlights($filters);
600
		}
601
		return $all;
602
	}
603
	public function countOverallArrival($stats_airline = '',$filter_name = '') {
604
		global $globalStatsFilters;
605
		$all = $this->getSumStats('realarrivals_bymonth',date('Y'),$stats_airline,$filter_name);
606
		if (empty($all)) {
607
			$filters = array('airlines' => array($stats_airline));
608
			if ($filter_name != '') {
609
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
610
			}
611
			$Spotter = new Spotter($this->db);
612
			$all = $Spotter->countOverallArrival($filters);
613
		}
614
		return $all;
615
	}
616
	public function countOverallAircrafts($stats_airline = '',$filter_name = '') {
617
		global $globalStatsFilters;
618
		$all = $this->getSumStats('aircrafts_bymonth',date('Y'),$stats_airline,$filter_name);
619
		if (empty($all)) {
620
			$filters = array('airlines' => array($stats_airline));
621
			if ($filter_name != '') {
622
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
623
			}
624
			$Spotter = new Spotter($this->db);
625
			$all = $Spotter->countOverallAircrafts($filters);
626
		}
627
		return $all;
628
	}
629
	public function countOverallAirlines($filter_name = '') {
630
		global $globalStatsFilters;
631
		$query = "SELECT COUNT(*) AS nb_airline FROM stats_airline WHERE filter_name = :filter_name";
632
                 try {
633
                        $sth = $this->db->prepare($query);
634
                        $sth->execute(array(':filter_name' => $filter_name));
635
                } catch(PDOException $e) {
636
                        echo "error : ".$e->getMessage();
637
                }
638
                $result = $sth->fetchAll(PDO::FETCH_ASSOC);
639
                $all = $result[0]['nb_airline'];
640
		//$all = $this->getSumStats('airlines_bymonth',date('Y'));
641
		if (empty($all)) {
642
            		$filters = array();
643
            		if ($filter_name != '') {
644
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
645
			}
646
			$Spotter = new Spotter($this->db);
647
			$all = $Spotter->countOverallAirlines($filters);
648
		}
649
		return $all;
650
	}
651
	public function countOverallOwners($stats_airline = '',$filter_name = '') {
652
		global $globalStatsFilters;
653
		/*
654
		$query = "SELECT COUNT(*) AS nb_owner FROM stats_owner";
655
                 try {
656
                        $sth = $this->db->prepare($query);
657
                        $sth->execute();
658
                } catch(PDOException $e) {
659
                        echo "error : ".$e->getMessage();
660
                }
661
                $result = $sth->fetchAll(PDO::FETCH_ASSOC);
662
                $all = $result[0]['nb_owner'];
663
                */
664
		$all = $this->getSumStats('owners_bymonth',date('Y'),$stats_airline,$filter_name);
665
		if (empty($all)) {
666
			$filters = array('airlines' => array($stats_airline));
667
			if ($filter_name != '') {
668
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
669
			}
670
			$Spotter = new Spotter($this->db);
671
			$all = $Spotter->countOverallOwners($filters);
672
		}
673
		return $all;
674
	}
675
	public function countOverallPilots($stats_airline = '',$filter_name = '') {
676
		global $globalStatsFilters;
677
		$all = $this->getSumStats('pilots_bymonth',date('Y'),$stats_airline,$filter_name);
678
		if (empty($all)) {
679
			$filters = array('airlines' => array($stats_airline));
680
			if ($filter_name != '') {
681
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
682
			}
683
			$Spotter = new Spotter($this->db);
684
			$all = $Spotter->countOverallPilots($filters);
685
		}
686
		return $all;
687
	}
688
689
	public function getLast7DaysAirports($airport_icao = '', $stats_airline = '',$filter_name = '') {
690
		$query = "SELECT * FROM stats_airport WHERE stats_type = 'daily' AND airport_icao = :airport_icao AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY date";
691
		$query_values = array(':airport_icao' => $airport_icao,':stats_airline' => $stats_airline, ':filter_name' => $filter_name);
692
                 try {
693
                        $sth = $this->db->prepare($query);
694
                        $sth->execute($query_values);
695
                } catch(PDOException $e) {
696
                        echo "error : ".$e->getMessage();
697
                }
698
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
699
                return $all;
700
	}
701
	public function getStats($type,$stats_airline = '', $filter_name = '') {
702
                $query = "SELECT * FROM stats WHERE stats_type = :type AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY stats_date";
703
                $query_values = array(':type' => $type,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
704
                 try {
705
                        $sth = $this->db->prepare($query);
706
                        $sth->execute($query_values);
707
                } catch(PDOException $e) {
708
                        echo "error : ".$e->getMessage();
709
                }
710
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
711
                return $all;
712
        }
713
	public function getSumStats($type,$year,$stats_airline = '',$filter_name = '') {
714
    		global $globalArchiveMonths, $globalDBdriver;
715
    		if ($globalDBdriver == 'mysql') {
716
	                $query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND YEAR(stats_date) = :year AND stats_airline = :stats_airline AND filter_name = :filter_name";
717
	        } else {
718
            		$query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND EXTRACT(YEAR FROM stats_date) = :year AND stats_airline = :stats_airline AND filter_name = :filter_name";
719
                }
720
                $query_values = array(':type' => $type, ':year' => $year, ':stats_airline' => $stats_airline,':filter_name' => $filter_name);
721
                 try {
722
                        $sth = $this->db->prepare($query);
723
                        $sth->execute($query_values);
724
                } catch(PDOException $e) {
725
                        echo "error : ".$e->getMessage();
726
                }
727
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
728
                return $all[0]['total'];
729
        }
730
	public function getStatsTotal($type, $stats_airline = '', $filter_name = '') {
731
    		global $globalArchiveMonths, $globalDBdriver;
732
    		if ($globalDBdriver == 'mysql') {
733
			$query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND stats_date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL ".$globalArchiveMonths." MONTH) AND stats_airline = :stats_airline AND filter_name = :filter_name";
734
		} else {
735
			$query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND stats_date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalArchiveMonths." MONTHS' AND stats_airline = :stats_airline AND filter_name = :filter_name";
736
                }
737
                $query_values = array(':type' => $type, ':stats_airline' => $stats_airline, ':filter_name' => $filter_name);
738
                 try {
739
                        $sth = $this->db->prepare($query);
740
                        $sth->execute($query_values);
741
                } catch(PDOException $e) {
742
                        echo "error : ".$e->getMessage();
743
                }
744
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
745
                return $all[0]['total'];
746
        }
747
	public function getStatsAircraftTotal($stats_airline = '', $filter_name = '') {
748
    		global $globalArchiveMonths, $globalDBdriver;
749
    		if ($globalDBdriver == 'mysql') {
750
			$query = "SELECT SUM(cnt) as total FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name";
751
                } else {
752
			$query = "SELECT SUM(cnt) as total FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name";
753
                }
754
                 try {
755
                        $sth = $this->db->prepare($query);
756
                        $sth->execute(array(':stats_airline' => $stats_airline, ':filter_name' => $filter_name));
757
                } catch(PDOException $e) {
758
                        echo "error : ".$e->getMessage();
759
                }
760
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
761
                return $all[0]['total'];
762
        }
763
	public function getStatsAirlineTotal($filter_name = '') {
764
    		global $globalArchiveMonths, $globalDBdriver;
765
    		if ($globalDBdriver == 'mysql') {
766
			$query = "SELECT SUM(cnt) as total FROM stats_airline WHERE filter_name = :filter_name";
767
                } else {
768
			$query = "SELECT SUM(cnt) as total FROM stats_airline WHERE filter_name = :filter_name";
769
                }
770
                 try {
771
                        $sth = $this->db->prepare($query);
772
                        $sth->execute(array(':filter_name' => $filter_name));
773
                } catch(PDOException $e) {
774
                        echo "error : ".$e->getMessage();
775
                }
776
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
777
                return $all[0]['total'];
778
        }
779
	public function getStatsOwnerTotal($filter_name = '') {
780
    		global $globalArchiveMonths, $globalDBdriver;
781
    		if ($globalDBdriver == 'mysql') {
782
			$query = "SELECT SUM(cnt) as total FROM stats_owner WHERE filter_name = :filter_name";
783
		} else {
784
			$query = "SELECT SUM(cnt) as total FROM stats_owner WHERE filter_name = :filter_name";
785
                }
786
                 try {
787
                        $sth = $this->db->prepare($query);
788
                        $sth->execute(array(':filter_name' => $filter_name));
789
                } catch(PDOException $e) {
790
                        echo "error : ".$e->getMessage();
791
                }
792
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
793
                return $all[0]['total'];
794
        }
795
	public function getStatsPilotTotal($filter_name = '') {
796
    		global $globalArchiveMonths, $globalDBdriver;
797
    		if ($globalDBdriver == 'mysql') {
798
            		$query = "SELECT SUM(cnt) as total FROM stats_pilot WHERE filter_name = :filter_name";
799
            	} else {
800
            		$query = "SELECT SUM(cnt) as total FROM stats_pilot WHERE filter_name = :filter_name";
801
            	}
802
                 try {
803
                        $sth = $this->db->prepare($query);
804
                        $sth->execute(array(':filter_name' => $filter_name));
805
                } catch(PDOException $e) {
806
                        echo "error : ".$e->getMessage();
807
                }
808
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
809
                return $all[0]['total'];
810
        }
811
812
	public function addStat($type,$cnt,$stats_date,$stats_airline = '',$filter_name = '') {
813
		global $globalDBdriver;
814
		if ($globalDBdriver == 'mysql') {
815
			$query = "INSERT INTO stats (stats_type,cnt,stats_date,stats_airline,filter_name) VALUES (:type,:cnt,:stats_date,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE cnt = :cnt";
816
                } else {
817
			$query = "UPDATE stats SET cnt = :cnt WHERE stats_type = :type AND stats_date = :stats_date AND stats_airline = :stats_airline AND filter_name = :filter_name; INSERT INTO stats (stats_type,cnt,stats_date,stats_airline,filter_name) SELECT :type,:cnt,:stats_date,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats WHERE  stats_type = :type AND stats_date = :stats_date AND stats_airline = :stats_airline AND filter_name = :filter_name);"; 
818
		}
819
                $query_values = array(':type' => $type,':cnt' => $cnt,':stats_date' => $stats_date, ':stats_airline' => $stats_airline,':filter_name' => $filter_name);
820
                 try {
821
                        $sth = $this->db->prepare($query);
822
                        $sth->execute($query_values);
823
                } catch(PDOException $e) {
824
                        return "error : ".$e->getMessage();
825
                }
826
        }
827
	public function updateStat($type,$cnt,$stats_date,$stats_airline = '',$filter_name = '') {
828
		global $globalDBdriver;
829
		if ($globalDBdriver == 'mysql') {
830
			$query = "INSERT INTO stats (stats_type,cnt,stats_date,stats_airline,filter_name) VALUES (:type,:cnt,:stats_date,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt, stats_date = :date";
831
		} else {
832
            		//$query = "INSERT INTO stats (stats_type,cnt,stats_date) VALUES (:type,:cnt,:stats_date) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt, stats_date = :date";
833
			$query = "UPDATE stats SET cnt = cnt+:cnt WHERE stats_type = :type AND stats_date = :stats_date AND stats_airline = :stats_airline AND filter_name = :filter_name; INSERT INTO stats (stats_type,cnt,stats_date,stats_airline,filter_name) SELECT :type,:cnt,:stats_date,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats WHERE  stats_type = :type AND stats_date = :stats_date AND stats_airline = :stats_airline AND filter_name = :filter_name);"; 
834
                }
835
                $query_values = array(':type' => $type,':cnt' => $cnt,':stats_date' => $stats_date,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
836
                 try {
837
                        $sth = $this->db->prepare($query);
838
                        $sth->execute($query_values);
839
                } catch(PDOException $e) {
840
                        return "error : ".$e->getMessage();
841
                }
842
        }
843
	public function getStatsSource($date,$stats_type = '') {
844
		if ($stats_type == '') {
845
			$query = "SELECT * FROM stats_source WHERE stats_date = :date ORDER BY source_name";
846
			$query_values = array(':date' => $date);
847
		} else {
848
			$query = "SELECT * FROM stats_source WHERE stats_date = :date AND stats_type = :stats_type ORDER BY source_name";
849
			$query_values = array(':date' => $date,':stats_type' => $stats_type);
850
		}
851
                 try {
852
                        $sth = $this->db->prepare($query);
853
                        $sth->execute($query_values);
854
                } catch(PDOException $e) {
855
                        echo "error : ".$e->getMessage();
856
                }
857
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
858
                return $all;
859
        }
860
861
	public function addStatSource($data,$source_name,$stats_type,$date) {
862
		global $globalDBdriver;
863
		if ($globalDBdriver == 'mysql') {
864
			$query = "INSERT INTO stats_source (source_data,source_name,stats_type,stats_date) VALUES (:data,:source_name,:stats_type,:stats_date) ON DUPLICATE KEY UPDATE source_data = :data";
865
		} else {
866
			$query = "UPDATE stats_source SET source_data = :data WHERE stats_date = :stats_date AND source_name = :source_name AND stats_type = :stats_type; INSERT INTO stats_source (source_data,source_name,stats_type,stats_date) SELECT :data,:source_name,:stats_type,:stats_date WHERE NOT EXISTS (SELECT 1 FROM stats_source WHERE stats_date = :stats_date AND source_name = :source_name AND stats_type = :stats_type);"; 
867
                }
868
                $query_values = array(':data' => $data,':stats_date' => $date,':source_name' => $source_name,':stats_type' => $stats_type);
869
                 try {
870
                        $sth = $this->db->prepare($query);
871
                        $sth->execute($query_values);
872
                } catch(PDOException $e) {
873
                        return "error : ".$e->getMessage();
874
                }
875
        }
876
	public function addStatFlight($type,$date_name,$cnt,$stats_airline = '',$filter_name = '') {
877
                $query = "INSERT INTO stats_flight (stats_type,flight_date,cnt,stats_airline,filter_name) VALUES (:type,:flight_date,:cnt,:stats_airline,:filter_name)";
878
                $query_values = array(':type' => $type,':flight_date' => $date_name,':cnt' => $cnt, ':stats_airline' => $stats_airline,':filter_name' => $filter_name);
879
                 try {
880
                        $sth = $this->db->prepare($query);
881
                        $sth->execute($query_values);
882
                } catch(PDOException $e) {
883
                        return "error : ".$e->getMessage();
884
                }
885
        }
886
	public function addStatAircraftRegistration($registration,$cnt,$aircraft_icao = '',$airline_icao = '',$filter_name = '') {
887
		global $globalDBdriver;
888
		if ($globalDBdriver == 'mysql') {
889
			$query = "INSERT INTO stats_registration (aircraft_icao,registration,cnt,stats_airline,filter_name) VALUES (:aircraft_icao,:registration,:cnt,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt";
890
		} else {
891
			$query = "UPDATE stats_registration SET cnt = cnt+:cnt WHERE registration = :registration AND stats_airline = :stats_airline AND filter_name = :filter_name; INSERT INTO stats_registration (aircraft_icao,registration,cnt,stats_airline,filter_name) SELECT :aircraft_icao,:registration,:cnt,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_registration WHERE registration = :registration AND stats_airline = :stats_airline AND filter_name = :filter_name);"; 
892
		}
893
                $query_values = array(':aircraft_icao' => $aircraft_icao,':registration' => $registration,':cnt' => $cnt,':stats_airline' => $airline_icao, ':filter_name' => $filter_name);
894
                 try {
895
                        $sth = $this->db->prepare($query);
896
                        $sth->execute($query_values);
897
                } catch(PDOException $e) {
898
                        return "error : ".$e->getMessage();
899
                }
900
        }
901
	public function addStatCallsign($callsign_icao,$cnt,$airline_icao = '', $filter_name = '') {
902
		global $globalDBdriver;
903
		if ($globalDBdriver == 'mysql') {
904
			$query = "INSERT INTO stats_callsign (callsign_icao,airline_icao,cnt,filter_name) VALUES (:callsign_icao,:airline_icao,:cnt,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt";
905
		} else {
906
			$query = "UPDATE stats_callsign SET cnt = cnt+:cnt WHERE callsign_icao = :callsign_icao AND filter_name = :filter_name; INSERT INTO stats_callsign (callsign_icao,airline_icao,cnt,filter_name) SELECT :callsign_icao,:airline_icao,:cnt,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_callsign WHERE callsign_icao = :callsign_icao AND filter_name = :filter_name);"; 
907
		}
908
                $query_values = array(':callsign_icao' => $callsign_icao,':airline_icao' => $airline_icao,':cnt' => $cnt, ':filter_name' => $filter_name);
909
                 try {
910
                        $sth = $this->db->prepare($query);
911
                        $sth->execute($query_values);
912
                } catch(PDOException $e) {
913
                        return "error : ".$e->getMessage();
914
                }
915
        }
916
	public function addStatCountry($iso2,$iso3,$name,$cnt,$filter_name = '') {
917
		global $globalDBdriver;
918
		if ($globalDBdriver == 'mysql') {
919
			$query = "INSERT INTO stats_country (iso2,iso3,name,cnt,filter_name) VALUES (:iso2,:iso3,:name,:cnt,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt";
920
		} else {
921
			$query = "UPDATE stats_country SET cnt = cnt+:cnt WHERE iso2 = :iso2 AND filter_name = :filter_name; INSERT INTO stats_country (iso2,iso3,name,cnt,filter_name) SELECT :iso2,:iso3,:name,:cnt,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_country WHERE iso2 = :iso2 AND filter_name = :filter_name);"; 
922
		}
923
                $query_values = array(':iso2' => $iso2,':iso3' => $iso3,':name' => $name,':cnt' => $cnt,':filter_name' => $filter_name);
924
                 try {
925
                        $sth = $this->db->prepare($query);
926
                        $sth->execute($query_values);
927
                } catch(PDOException $e) {
928
                        return "error : ".$e->getMessage();
929
                }
930
        }
931
	public function addStatAircraft($aircraft_icao,$cnt,$aircraft_name = '',$aircraft_manufacturer = '', $airline_icao = '', $filter_name = '') {
932
		global $globalDBdriver;
933
		if ($globalDBdriver == 'mysql') {
934
			$query = "INSERT INTO stats_aircraft (aircraft_icao,aircraft_name,aircraft_manufacturer,cnt,stats_airline, filter_name) VALUES (:aircraft_icao,:aircraft_name,:aircraft_manufacturer,:cnt,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt, aircraft_name = :aircraft_name, aircraft_manufacturer = :aircraft_manufacturer, stats_airline = :stats_airline";
935
		} else {
936
			$query = "UPDATE stats_aircraft SET cnt = cnt+:cnt, aircraft_name = :aircraft_name, aircraft_manufacturer = :aircraft_manufacturer, filter_name = :filter_name WHERE aircraft_icao = :aircraft_icao AND stats_airline = :stats_airline AND filter_name = :filter_name; INSERT INTO stats_aircraft (aircraft_icao,aircraft_name,aircraft_manufacturer,cnt,stats_airline,filter_name) SELECT :aircraft_icao,:aircraft_name,:aircraft_manufacturer,:cnt,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_aircraft WHERE aircraft_icao = :aircraft_icao AND stats_airline = :stats_airline AND filter_name = :filter_name);"; 
937
		}
938
                $query_values = array(':aircraft_icao' => $aircraft_icao,':aircraft_name' => $aircraft_name,':cnt' => $cnt, ':aircraft_manufacturer' => $aircraft_manufacturer,':stats_airline' => $airline_icao, ':filter_name' => $filter_name);
939
                 try {
940
                        $sth = $this->db->prepare($query);
941
                        $sth->execute($query_values);
942
                } catch(PDOException $e) {
943
                        return "error : ".$e->getMessage();
944
                }
945
        }
946
	public function addStatAirline($airline_icao,$cnt,$airline_name = '',$filter_name = '') {
947
		global $globalDBdriver;
948
		if ($globalDBdriver == 'mysql') {
949
			$query = "INSERT INTO stats_airline (airline_icao,airline_name,cnt,filter_name) VALUES (:airline_icao,:airline_name,:cnt,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt,airline_name = :airline_name";
950
		} else {
951
			$query = "UPDATE stats_airline SET cnt = cnt+:cnt WHERE airline_icao = :airline_icao AND filter_name = :filter_name; INSERT INTO stats_airline (airline_icao,airline_name,cnt,filter_name) SELECT :airline_icao,:airline_name,:cnt,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_airline WHERE airline_icao = :airline_icao AND filter_name = :filter_name);"; 
952
		}
953
                $query_values = array(':airline_icao' => $airline_icao,':airline_name' => $airline_name,':cnt' => $cnt,':filter_name' => $filter_name);
954
                 try {
955
                        $sth = $this->db->prepare($query);
956
                        $sth->execute($query_values);
957
                } catch(PDOException $e) {
958
                        return "error : ".$e->getMessage();
959
                }
960
        }
961
	public function addStatOwner($owner_name,$cnt,$stats_airline = '', $filter_name = '') {
962
		global $globalDBdriver;
963
		if ($globalDBdriver == 'mysql') {
964
			$query = "INSERT INTO stats_owner (owner_name,cnt,stats_airline,filter_name) VALUES (:owner_name,:cnt,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt";
965
		} else {
966
			$query = "UPDATE stats_owner SET cnt = cnt+:cnt WHERE owner_name = :owner_name AND stats_airline = :stats_airline AND filter_name = :filter_name; INSERT INTO stats_owner (owner_name,cnt,stats_airline,filter_name) SELECT :owner_name,:cnt,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_owner WHERE owner_name = :owner_name AND stats_airline = :stats_airline AND filter_name = :filter_name);"; 
967
		}
968
                $query_values = array(':owner_name' => $owner_name,':cnt' => $cnt,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
969
                 try {
970
                        $sth = $this->db->prepare($query);
971
                        $sth->execute($query_values);
972
                } catch(PDOException $e) {
973
                        return "error : ".$e->getMessage();
974
                }
975
        }
976
	public function addStatPilot($pilot_id,$cnt,$pilot_name,$stats_airline = '',$filter_name = '') {
977
		global $globalDBdriver;
978
		if ($globalDBdriver == 'mysql') {
979
			$query = "INSERT INTO stats_pilot (pilot_id,cnt,pilot_name,stats_airline,filter_name) VALUES (:pilot_id,:cnt,:pilot_name,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt, pilot_name = :pilot_name";
980
		} else {
981
			$query = "UPDATE stats_pilot SET cnt = cnt+:cnt, pilot_name = :pilot_name WHERE pilot_id = :pilot_id AND stats_airline = :stats_airline AND filter_name = :filter_name; INSERT INTO stats_pilot (pilot_id,cnt,pilot_name,stats_airline,filter_name) SELECT :pilot_id,:cnt,:pilot_name,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_pilot WHERE pilot_id = :pilot_id AND stats_airline = :stats_airline AND filter_name = :filter_name);"; 
982
		}
983
                $query_values = array(':pilot_id' => $pilot_id,':cnt' => $cnt,':pilot_name' => $pilot_name,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
984
                 try {
985
                        $sth = $this->db->prepare($query);
986
                        $sth->execute($query_values);
987
                } catch(PDOException $e) {
988
                        return "error : ".$e->getMessage();
989
                }
990
        }
991
	public function addStatDepartureAirports($airport_icao,$airport_name,$airport_city,$airport_country,$departure,$airline_icao = '',$filter_name = '') {
992
		global $globalDBdriver;
993
		if ($globalDBdriver == 'mysql') {
994
			$query = "INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,departure,stats_type,date,stats_airline,filter_name) VALUES (:airport_icao,:airport_name,:airport_city,:airport_country,:departure,'yearly',:date,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE departure = departure+:departure";
995
		} else {
996
			$query = "UPDATE stats_airport SET departure = departure+:departure WHERE airport_icao = :airport_icao AND stats_type = 'yearly' AND stats_airline = :stats_airline AND date = :date AND filter_name = :filter_name; INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,departure,stats_type,date,stats_airline,filter_name) SELECT :airport_icao,:airport_name,:airport_city,:airport_country,:departure,'yearly',:date,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_airport WHERE airport_icao = :airport_icao AND stats_type = 'yearly' AND stats_airline = :stats_airline AND date = :date AND filter_name = :filter_name);"; 
997
		}
998
                $query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':departure' => $departure,':date' => date('Y').'-01-01 00:00:00', ':stats_airline' => $airline_icao,':filter_name' => $filter_name);
999
                 try {
1000
                        $sth = $this->db->prepare($query);
1001
                        $sth->execute($query_values);
1002
                } catch(PDOException $e) {
1003
                        return "error : ".$e->getMessage();
1004
                }
1005
        }
1006
	public function addStatDepartureAirportsDaily($date,$airport_icao,$airport_name,$airport_city,$airport_country,$departure,$airline_icao = '',$filter_name = '') {
1007
		global $globalDBdriver;
1008
		if ($globalDBdriver == 'mysql') {
1009
			$query = "INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,departure,stats_type,date,stats_airline,filter_name) VALUES (:airport_icao,:airport_name,:airport_city,:airport_country,:departure,'daily',:date,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE departure = :departure";
1010
		} else {
1011
			$query = "UPDATE stats_airport SET departure = departure+:departure WHERE airport_icao = :airport_icao AND stats_type = 'daily' AND date = :date AND stats_airline = :stats_airline AND filter_name = :filter_name; INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,departure,stats_type,date,stats_airline,filter_name) SELECT :airport_icao,:airport_name,:airport_city,:airport_country,:departure,'daily',:date,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_airport WHERE airport_icao = :airport_icao AND stats_type = 'daily' AND date = :date AND stats_airline = :stats_airline AND filter_name = :filter_name);"; 
1012
		}
1013
                $query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':departure' => $departure,':date' => $date,':stats_airline' => $airline_icao,':filter_name' => $filter_name);
1014
                 try {
1015
                        $sth = $this->db->prepare($query);
1016
                        $sth->execute($query_values);
1017
                } catch(PDOException $e) {
1018
                        return "error : ".$e->getMessage();
1019
                }
1020
        }
1021
	public function addStatArrivalAirports($airport_icao,$airport_name,$airport_city,$airport_country,$arrival,$airline_icao = '',$filter_name = '') {
1022
		global $globalDBdriver;
1023
		if ($globalDBdriver == 'mysql') {
1024
			$query = "INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,arrival,stats_type,date,stats_airline,filter_name) VALUES (:airport_icao,:airport_name,:airport_city,:airport_country,:arrival,'yearly',:date,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE arrival = arrival+:arrival";
1025
		} else {
1026
			$query = "UPDATE stats_airport SET arrival = arrival+:arrival WHERE airport_icao = :airport_icao AND stats_type = 'yearly' AND stats_airline = :stats_airline AND date = :date AND filter_name = :filter_name; INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,arrival,stats_type,date,stats_airline,filter_name) SELECT :airport_icao,:airport_name,:airport_city,:airport_country,:arrival,'yearly',:date,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_airport WHERE airport_icao = :airport_icao AND stats_type = 'yearly' AND stats_airline = :stats_airline AND date = :date AND filter_name = :filter_name);"; 
1027
		}
1028
                $query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':arrival' => $arrival,':date' => date('Y').'-01-01 00:00:00',':stats_airline' => $airline_icao,':filter_name' => $filter_name);
1029
                 try {
1030
                        $sth = $this->db->prepare($query);
1031
                        $sth->execute($query_values);
1032
                } catch(PDOException $e) {
1033
                        return "error : ".$e->getMessage();
1034
                }
1035
        }
1036
	public function addStatArrivalAirportsDaily($date,$airport_icao,$airport_name,$airport_city,$airport_country,$arrival,$airline_icao = '',$filter_name = '') {
1037
		global $globalDBdriver;
1038
		if ($globalDBdriver == 'mysql') {
1039
			$query = "INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,arrival,stats_type,date,stats_airline,filter_name) VALUES (:airport_icao,:airport_name,:airport_city,:airport_country,:arrival,'daily',:date,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE arrival = :arrival";
1040
		} else {
1041
			$query = "UPDATE stats_airport SET arrival = arrival+:arrival WHERE airport_icao = :airport_icao AND stats_type = 'daily' AND date = :date AND stats_airline = :stats_airline AND filter_name = :filter_name; INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,arrival,stats_type,date,stats_airline,filter_name) SELECT :airport_icao,:airport_name,:airport_city,:airport_country,:arrival,'daily',:date,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_airport WHERE airport_icao = :airport_icao AND stats_type = 'daily' AND date = :date AND stats_airline = :stats_airline AND filter_name = :filter_name);"; 
1042
		}
1043
                $query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':arrival' => $arrival, ':date' => $date,':stats_airline' => $airline_icao,':filter_name' => $filter_name);
1044
                 try {
1045
                        $sth = $this->db->prepare($query);
1046
                        $sth->execute($query_values);
1047
                } catch(PDOException $e) {
1048
                        return "error : ".$e->getMessage();
1049
                }
1050
        }
1051
1052
	public function deleteStat($id) {
1053
                $query = "DELETE FROM stats WHERE stats_id = :id";
1054
                $query_values = array(':id' => $id);
1055
                 try {
1056
                        $sth = $this->db->prepare($query);
1057
                        $sth->execute($query_values);
1058
                } catch(PDOException $e) {
1059
                        return "error : ".$e->getMessage();
1060
                }
1061
        }
1062
	public function deleteStatFlight($type) {
1063
                $query = "DELETE FROM stats_flight WHERE stats_type = :type";
1064
                $query_values = array(':type' => $type);
1065
                 try {
1066
                        $sth = $this->db->prepare($query);
1067
                        $sth->execute($query_values);
1068
                } catch(PDOException $e) {
1069
                        return "error : ".$e->getMessage();
1070
                }
1071
        }
1072
	public function deleteStatAirport($type) {
1073
                $query = "DELETE FROM stats_airport WHERE stats_type = :type";
1074
                $query_values = array(':type' => $type);
1075
                 try {
1076
                        $sth = $this->db->prepare($query);
1077
                        $sth->execute($query_values);
1078
                } catch(PDOException $e) {
1079
                        return "error : ".$e->getMessage();
1080
                }
1081
        }
1082
        
1083
        public function addOldStats() {
1084
    		global $globalArchiveMonths, $globalArchive, $globalArchiveYear, $globalDBdriver, $globalStatsFilters;
1085
    		$Common = new Common();
1086
    		$Connection = new Connection();
1087
    		date_default_timezone_set('UTC');
1088
    		$last_update = $this->getLastStatsUpdate('last_update_stats');
1089
		//print_r($last_update);
1090
		/*
1091
		$flightsbymonth = $this->getStats('flights_by_month');
1092
    		if (empty($last_update) && empty($flightsbymonth)) {
1093
			// Initial update
1094
			$Spotter = new Spotter($this->db);
1095
			$alldata = $Spotter->countAllMonths();
1096
			$lastyear = false;
1097
			foreach ($alldata as $number) {
1098
				if ($number['year_name'] != date('Y')) $lastyear = true;
1099
				$this->addStat('flights_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1100
			}
1101
			$alldata = $Spotter->countAllMilitaryMonths();
1102
			//$lastyear = false;
1103
			foreach ($alldata as $number) {
1104
				if ($number['year_name'] != date('Y')) $lastyear = true;
1105
				$this->addStat('military_flights_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1106
			}
1107
			$alldata = $Spotter->countAllMonthsOwners();
1108
			foreach ($alldata as $number) {
1109
				$this->addStat('owners_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1110
			}
1111
			$alldata = $Spotter->countAllMonthsPilots();
1112
			foreach ($alldata as $number) {
1113
				$this->addStat('pilots_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1114
			}
1115
			$alldata = $Spotter->countAllMonthsAirlines();
1116
			foreach ($alldata as $number) {
1117
				$this->addStat('airlines_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1118
			}
1119
			$alldata = $Spotter->countAllMonthsAircrafts();
1120
			foreach ($alldata as $number) {
1121
				$this->addStat('aircrafts_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1122
			}
1123
			$alldata = $Spotter->countAllMonthsRealArrivals();
1124
			foreach ($alldata as $number) {
1125
				$this->addStat('realarrivals_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1126
			}
1127
			$this->deleteStatFlight('month');
1128
			$alldata = $Spotter->countAllDatesLastMonth();
1129
			foreach ($alldata as $number) {
1130
				$this->addStatFlight('month',$number['date_name'],$number['date_count']);
1131
			}
1132
			$previousdata = $this->countAllDates();
1133
			$this->deleteStatFlight('date');
1134
			$alldata = $Common->array_merge_noappend($previousdata,$Spotter->countAllDates());
1135
			$values = array();
1136
			foreach ($alldata as $cnt) {
1137
				$values[] = $cnt['date_count'];
1138
			}
1139
			array_multisort($values,SORT_DESC,$alldata);
1140
			array_splice($alldata,11);
1141
			foreach ($alldata as $number) {
1142
				$this->addStatFlight('date',$number['date_name'],$number['date_count']);
1143
			}
1144
			$this->deleteStatFlight('hour');
1145
			$alldata = $Spotter->countAllHours('hour');
1146
			foreach ($alldata as $number) {
1147
				$this->addStatFlight('hour',$number['hour_name'],$number['hour_count']);
1148
			}
1149
			if ($lastyear) {
1150
				$monthsSinceLastYear = date('n');
1151
				$alldata = $Spotter->countAllAircraftTypes(false,$monthsSinceLastYear);
1152
				foreach ($alldata as $number) {
1153
					$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer']);
1154
				}
1155
				$alldata = $Spotter->countAllAirlines(false,$monthsSinceLastYear);
1156
				foreach ($alldata as $number) {
1157
					$this->addStatAirline($number['airline_icao'],$number['airline_count'],$number['airline_name']);
1158
				}
1159
				if ($Connection->tableExists('countries')) {
1160
					$alldata = $Spotter->countAllFlightOverCountries(false,$monthsSinceLastYear);
1161
					foreach ($alldata as $number) {
1162
						$this->addStatCountry($number['flight_country_iso2'],$number['flight_country_iso3'],$number['flight_country'],$number['flight_count']);
1163
					}
1164
				}
1165
				$alldata = $Spotter->countAllOwners(false,$monthsSinceLastYear);
1166
				foreach ($alldata as $number) {
1167
					$this->addStatOwner($number['owner_name'],$number['owner_count']);
1168
				}
1169
				$alldata = $Spotter->countAllPilots(false,$monthsSinceLastYear);
1170
				foreach ($alldata as $number) {
1171
					$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name']);
1172
				}
1173
				$previous_year = date('Y');
1174
				$previous_year--;
1175
				$this->addStat('aircrafts_byyear',$this->getStatsAircraftTotal(),$previous_year.'-01-01 00:00:00');
1176
				$this->addStat('airlines_byyear',$this->getStatsAirlineTotal(),$previous_year.'-01-01 00:00:00');
1177
				$this->addStat('owner_byyear',$this->getStatsOwnerTotal(),$previous_year.'-01-01 00:00:00');
1178
				$this->addStat('pilot_byyear',$this->getStatsPilotTotal(),$previous_year.'-01-01 00:00:00');
1179
				
1180
				if (isset($globalArchiveYear) && $globalArchiveYear) {
1181
					if ($globalArchive) {
1182
						$query = "INSERT INTO spotter_archive_output SELECT * FROM spotter_output WHERE spotter_output.date < '".date('Y')."-01-01 00:00:00'";
1183
						//echo $query;
1184
						try {
1185
							$sth = $this->db->prepare($query);
1186
							$sth->execute();
1187
						} catch(PDOException $e) {
1188
							return "error : ".$e->getMessage().' - query : '.$query."\n";
1189
						}
1190
					}
1191
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < '".date('Y')."-01-01 00:00:00'";
1192
					try {
1193
						$sth = $this->db->prepare($query);
1194
						$sth->execute();
1195
					} catch(PDOException $e) {
1196
						return "error : ".$e->getMessage().' - query : '.$query."\n";
1197
					}
1198
				}
1199
			}
1200
			if (!isset($globalArchiveMonths) || $globalArchiveMonths == '') $globalArchiveMonths = 2;
1201
			if ($globalArchiveMonths > 0) {
1202
				$alldata = $Spotter->countAllAircraftTypes(false,$globalArchiveMonths);
1203
				foreach ($alldata as $number) {
1204
					$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer']);
1205
				}
1206
				$alldata = $Spotter->countAllAirlines(false,$globalArchiveMonths);
1207
				foreach ($alldata as $number) {
1208
					$this->addStatAirline($number['airline_icao'],$number['airline_count'],$number['airline_name']);
1209
				}
1210
				$alldata = $Spotter->countAllAircraftRegistrations(false,$globalArchiveMonths);
1211
				foreach ($alldata as $number) {
1212
					$this->addStatAircraftRegistration($number['registration'],$number['aircraft_registration_count'],$number['aircraft_icao']);
1213
				}
1214
				$alldata = $Spotter->countAllCallsigns(false,$globalArchiveMonths);
1215
				foreach ($alldata as $number) {
1216
					$this->addStatCallsign($number['callsign_icao'],$number['callsign_icao_count'],$number['airline_icao']);
1217
				}
1218
				$alldata = $Spotter->countAllOwners(false,$globalArchiveMonths);
1219
				foreach ($alldata as $number) {
1220
					$this->addStatOwner($number['owner_name'],$number['owner_count']);
1221
				}
1222
				if ($Connection->tableExists('countries')) {
1223
					$alldata = $Spotter->countAllFlightOverCountries(false,$globalArchiveMonths);
1224
					foreach ($alldata as $number) {
1225
						$this->addStatCountry($number['flight_country_iso2'],$number['flight_country_iso3'],$number['flight_country'],$number['flight_count']);
1226
					}
1227
				}
1228
				$alldata = $Spotter->countAllPilots(false,$globalArchiveMonths);
1229
				foreach ($alldata as $number) {
1230
					$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name']);
1231
				}
1232
				$pall = $Spotter->countAllDepartureAirports(false,$globalArchiveMonths);
1233
        			$dall = $Spotter->countAllDetectedDepartureAirports(false,$globalArchiveMonths);
1234
	        		$alldata = array();
1235
    				foreach ($pall as $value) {
1236
	        			$icao = $value['airport_departure_icao'];
1237
    					$alldata[$icao] = $value;
1238
	        		}
1239
	        		foreach ($dall as $value) {
1240
    					$icao = $value['airport_departure_icao'];
1241
        				if (isset($alldata[$icao])) {                                                           
1242
        					$alldata[$icao]['airport_departure_icao_count'] = $alldata[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
1243
	        			} else $alldata[$icao] = $value;
1244
    				}
1245
        			$count = array();
1246
        			foreach ($alldata as $key => $row) {
1247
        				$count[$key] = $row['airport_departure_icao_count'];
1248
	        		}
1249
    				array_multisort($count,SORT_DESC,$alldata);
1250
1251
				//print_r($alldate);
1252
				foreach ($alldata as $number) {
1253
					$this->addStatDepartureAirports($number['airport_departure_icao'],$number['airport_departure_name'],$number['airport_departure_city'],$number['airport_departure_country'],$number['airport_departure_icao_count']);
1254
				}
1255
				$pdata = $Spotter->countAllArrivalAirports(false,$globalArchiveMonths);
1256
        			$dall = $Spotter->countAllDetectedArrivalAirports(false,$globalArchiveMonths);
1257
	        		$alldata = array();
1258
    				foreach ($pdata as $value) {
1259
	        			$icao = $value['airport_arrival_icao'];
1260
    					$alldata[$icao] = $value;
1261
	        		}
1262
	        		foreach ($dall as $value) {
1263
    					$icao = $value['airport_arrival_icao'];
1264
        				if (isset($alldata[$icao])) {                                                           
1265
        					$alldata[$icao]['airport_arrival_icao_count'] = $alldata[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
1266
	        			} else $alldata[$icao] = $value;
1267
    				}
1268
        			$count = array();
1269
        			foreach ($alldata as $key => $row) {
1270
        				$count[$key] = $row['airport_arrival_icao_count'];
1271
	        		}
1272
    				array_multisort($count,SORT_DESC,$alldata);
1273
				foreach ($alldata as $number) {
1274
					$this->addStatArrivalAirports($number['airport_arrival_icao'],$number['airport_arrival_name'],$number['airport_arrival_city'],$number['airport_arrival_country'],$number['airport_arrival_icao_count']);
1275
				}
1276
				$this->addStat('aircrafts_byyear',$this->getStatsAircraftTotal(),date('Y').'-01-01 00:00:00');
1277
				$this->addStat('airlines_byyear',$this->getStatsAirlineTotal(),date('Y').'-01-01 00:00:00');
1278
				$this->addStat('owner_byyear',$this->getStatsOwnerTotal(),date('Y').'-01-01 00:00:00');
1279
				$this->addStat('pilot_byyear',$this->getStatsPilotTotal(),date('Y').'-01-01 00:00:00');
1280
			
1281
				if ($globalArchive) {
1282
					if ($globalDBdriver == 'mysql') {
1283
						$query = "INSERT INTO spotter_archive_output SELECT * FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
1284
					} else {
1285
						$query = "INSERT INTO spotter_archive_output SELECT * FROM spotter_output WHERE spotter_output.date < CAST(to_char(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalArchiveMonths." MONTHS', 'YYYY/mm/01') AS TIMESTAMP)";
1286
					}
1287
					try {
1288
						$sth = $this->db->prepare($query);
1289
						$sth->execute();
1290
					} catch(PDOException $e) {
1291
						return "error : ".$e->getMessage().' - query : '.$query."\n";
1292
					}
1293
				}
1294
	
1295
				//$query = 'DELETE FROM spotter_output WHERE spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$globalArchiveMonths.' MONTH)';
1296
				if ($globalDBdriver == 'mysql') {
1297
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
1298
				} else {
1299
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < CAST(to_char(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalArchiveMonths." MONTHS, 'YYYY/mm/01') AS TIMESTAMP)";
1300
				}
1301
				try {
1302
					$sth = $this->db->prepare($query);
1303
					$sth->execute();
1304
				} catch(PDOException $e) {
1305
					return "error : ".$e->getMessage().' - query : '.$query."\n";
1306
				}
1307
			}
1308
			$this->addLastStatsUpdate('last_update_stats',date('Y-m-d G:i:s'));
1309
		} else {
1310
		*/
1311
			echo 'Update stats !'."\n";
1312
			if (isset($last_update[0]['value'])) {
1313
				$last_update_day = $last_update[0]['value'];
1314
			} else $last_update_day = '2012-12-12 12:12:12';
1315
			$Spotter = new Spotter($this->db);
1316
			$alldata = $Spotter->countAllAircraftTypes(false,0,$last_update_day);
1317
			foreach ($alldata as $number) {
1318
				$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer']);
1319
			}
1320
			$alldata = $Spotter->countAllAirlines(false,0,$last_update_day);
1321
			foreach ($alldata as $number) {
1322
				$this->addStatAirline($number['airline_icao'],$number['airline_count'],$number['airline_name']);
1323
			}
1324
			$alldata = $Spotter->countAllAircraftRegistrations(false,0,$last_update_day);
1325
			foreach ($alldata as $number) {
1326
				$this->addStatAircraftRegistration($number['registration'],$number['aircraft_registration_count'],$number['aircraft_icao']);
1327
			}
1328
			$alldata = $Spotter->countAllCallsigns(false,0,$last_update_day);
1329
			foreach ($alldata as $number) {
1330
				$this->addStatCallsign($number['callsign_icao'],$number['callsign_icao_count'],$number['airline_icao']);
1331
			}
1332
			$alldata = $Spotter->countAllOwners(false,0,$last_update_day);
1333
			foreach ($alldata as $number) {
1334
				$this->addStatOwner($number['owner_name'],$number['owner_count']);
1335
			}
1336
			$alldata = $Spotter->countAllPilots(false,0,$last_update_day);
1337
			foreach ($alldata as $number) {
1338
				$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name']);
1339
			}
1340
			
1341
			$pall = $Spotter->countAllDepartureAirports(false,0,$last_update_day);
1342
        		$dall = $Spotter->countAllDetectedDepartureAirports(false,0,$last_update_day);
1343
	        	$alldata = array();
1344
	        	
1345
    			foreach ($pall as $value) {
1346
	        		$icao = $value['airport_departure_icao'];
1347
    				$alldata[$icao] = $value;
1348
	        	}
1349
	        	foreach ($dall as $value) {
1350
    				$icao = $value['airport_departure_icao'];
1351
        			if (isset($alldata[$icao])) {
1352
    					$alldata[$icao]['airport_departure_icao_count'] = $alldata[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
1353
        			} else $alldata[$icao] = $value;
1354
			}
1355
    			$count = array();
1356
    			foreach ($alldata as $key => $row) {
1357
    				$count[$key] = $row['airport_departure_icao_count'];
1358
        		}
1359
			array_multisort($count,SORT_DESC,$alldata);
1360
			foreach ($alldata as $number) {
1361
				echo $this->addStatDepartureAirports($number['airport_departure_icao'],$number['airport_departure_name'],$number['airport_departure_city'],$number['airport_departure_country'],$number['airport_departure_icao_count']);
1362
			}
1363
			$pall = $Spotter->countAllArrivalAirports(false,0,$last_update_day);
1364
        		$dall = $Spotter->countAllDetectedArrivalAirports(false,0,$last_update_day);
1365
	        	$alldata = array();
1366
    			foreach ($pall as $value) {
1367
	        		$icao = $value['airport_arrival_icao'];
1368
    				$alldata[$icao] = $value;
1369
	        	}
1370
	        	foreach ($dall as $value) {
1371
    				$icao = $value['airport_arrival_icao'];
1372
        			if (isset($alldata[$icao])) {
1373
        				$alldata[$icao]['airport_arrival_icao_count'] = $alldata[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
1374
	        		} else $alldata[$icao] = $value;
1375
    			}
1376
        		$count = array();
1377
        		foreach ($alldata as $key => $row) {
1378
        			$count[$key] = $row['airport_arrival_icao_count'];
1379
	        	}
1380
    			array_multisort($count,SORT_DESC,$alldata);
1381
                        foreach ($alldata as $number) {
1382
				echo $this->addStatArrivalAirports($number['airport_arrival_icao'],$number['airport_arrival_name'],$number['airport_arrival_city'],$number['airport_arrival_country'],$number['airport_arrival_icao_count']);
1383
			}
1384
			if ($Connection->tableExists('countries')) {
1385
				$SpotterArchive = new SpotterArchive();
1386
				$alldata = $SpotterArchive->countAllFlightOverCountries(false,0,$last_update_day);
1387
				foreach ($alldata as $number) {
1388
					$this->addStatCountry($number['flight_country_iso2'],$number['flight_country_iso3'],$number['flight_country'],$number['flight_count']);
1389
				}
1390
			}
1391
			
1392
1393
			// Add by month using getstat if month finish...
1394
1395
			//if (date('m',strtotime($last_update_day)) != date('m')) {
1396
			$Spotter = new Spotter($this->db);
1397
			$alldata = $Spotter->countAllMonths();
1398
			$lastyear = false;
0 ignored issues
show
Unused Code introduced by
$lastyear is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
1399
			foreach ($alldata as $number) {
1400
				if ($number['year_name'] != date('Y')) $lastyear = true;
0 ignored issues
show
Unused Code introduced by
$lastyear is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
1401
				$this->addStat('flights_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1402
			}
1403
			$alldata = $Spotter->countAllMilitaryMonths();
1404
			foreach ($alldata as $number) {
1405
				$this->addStat('military_flights_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1406
			}
1407
			$alldata = $Spotter->countAllMonthsOwners();
1408
			foreach ($alldata as $number) {
1409
				$this->addStat('owners_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1410
			}
1411
			$alldata = $Spotter->countAllMonthsPilots();
1412
			foreach ($alldata as $number) {
1413
				$this->addStat('pilots_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1414
			}
1415
			$alldata = $Spotter->countAllMonthsAirlines();
1416
			foreach ($alldata as $number) {
1417
				$this->addStat('airlines_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1418
			}
1419
			$alldata = $Spotter->countAllMonthsAircrafts();
1420
			foreach ($alldata as $number) {
1421
				$this->addStat('aircrafts_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1422
			}
1423
			$alldata = $Spotter->countAllMonthsRealArrivals();
1424
			foreach ($alldata as $number) {
1425
				$this->addStat('realarrivals_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1426
			}
1427
			echo 'Airports data...'."\n";
1428
			echo '...Departure'."\n";
1429
			$this->deleteStatAirport('daily');
1430
//			$pall = $Spotter->getLast7DaysAirportsDeparture();
1431
  //      		$dall = $Spotter->getLast7DaysDetectedAirportsDeparture();
1432
			$pall = $Spotter->getLast7DaysAirportsDeparture();
1433
        		$dall = $Spotter->getLast7DaysDetectedAirportsDeparture();
1434
        		/*
1435
	        	$alldata = array();
1436
    			foreach ($pall as $value) {
1437
	        		$icao = $value['departure_airport_icao'];
1438
    				$alldata[$icao] = $value;
1439
	        	}
1440
	        	foreach ($dall as $value) {
1441
    				$icao = $value['departure_airport_icao'];
1442
    				$ddate = $value['date'];
1443
        			if (isset($alldata[$icao])) {
1444
        				$alldata[$icao]['departure_airport_count'] = $alldata[$icao]['departure_airport_count'] + $value['departure_airport_count'];
1445
	        		} else $alldata[$icao] = $value;
1446
    			}
1447
        		$count = array();
1448
        		foreach ($alldata as $key => $row) {
1449
        			$count[$key] = $row['departure_airport_count'];
1450
	        	}
1451
    			array_multisort($count,SORT_DESC,$alldata);
1452
    			*/
1453
    			foreach ($dall as $value) {
1454
    				$icao = $value['departure_airport_icao'];
1455
    				$ddate = $value['date'];
1456
    				$find = false;
1457
    				foreach ($pall as $pvalue) {
1458
    					if ($pvalue['departure_airport_icao'] == $icao && $pvalue['date'] == $ddate) {
1459
    						$pvalue['departure_airport_count'] = $pvalue['departure_airport_count'] + $value['departure_airport_count'];
1460
    						$find = true;
1461
    						break;
1462
    					}
1463
    				}
1464
    				if ($find === false) {
1465
    					$pall[] = $value;
1466
    				}
1467
    			}
1468
    			$alldata = $pall;
1469
			foreach ($alldata as $number) {
1470
				$this->addStatDepartureAirportsDaily($number['date'],$number['departure_airport_icao'],$number['departure_airport_name'],$number['departure_airport_city'],$number['departure_airport_country'],$number['departure_airport_count']);
1471
			}
1472
			echo '...Arrival'."\n";
1473
			$pall = $Spotter->getLast7DaysAirportsArrival();
1474
        		$dall = $Spotter->getLast7DaysDetectedAirportsArrival();
1475
        		/*
1476
	        	$alldata = array();
1477
    			foreach ($pall as $value) {
1478
	        		$icao = $value['arrival_airport_icao'];
1479
    				$alldata[$icao] = $value;
1480
	        	}
1481
	        	foreach ($dall as $value) {
1482
    				$icao = $value['arrival_airport_icao'];
1483
        			if (isset($alldata[$icao])) {
1484
        				$alldata[$icao]['arrival_airport_icao_count'] = $alldata[$icao]['arrival_airport_count'] + $value['arrival_airport_count'];
1485
	        		} else $alldata[$icao] = $value;
1486
    			}
1487
        		$count = array();
1488
        		foreach ($alldata as $key => $row) {
1489
        			$count[$key] = $row['arrival_airport_count'];
1490
	        	}
1491
    			array_multisort($count,SORT_DESC,$alldata);
1492
    			*/
1493
1494
1495
    			foreach ($dall as $value) {
1496
    				$icao = $value['arrival_airport_icao'];
1497
    				$ddate = $value['date'];
1498
    				$find = false;
1499
    				foreach ($pall as $pvalue) {
1500
    					if ($pvalue['arrival_airport_icao'] == $icao && $pvalue['date'] == $ddate) {
1501
    						$pvalue['arrival_airport_count'] = $pvalue['arrival_airport_count'] + $value['arrival_airport_count'];
1502
    						$find = true;
1503
    						break;
1504
    					}
1505
    				}
1506
    				if ($find === false) {
1507
    					$pall[] = $value;
1508
    				}
1509
    			}
1510
    			$alldata = $pall;
1511
			foreach ($alldata as $number) {
1512
				$this->addStatArrivalAirportsDaily($number['date'],$number['arrival_airport_icao'],$number['arrival_airport_name'],$number['arrival_airport_city'],$number['arrival_airport_country'],$number['arrival_airport_count']);
1513
			}
1514
1515
			echo 'Flights data...'."\n";
1516
			$this->deleteStatFlight('month');
1517
			echo '-> countAllDatesLastMonth...'."\n";
1518
			$alldata = $Spotter->countAllDatesLastMonth();
1519
			foreach ($alldata as $number) {
1520
				$this->addStatFlight('month',$number['date_name'],$number['date_count']);
1521
			}
1522
			echo '-> countAllDates...'."\n";
1523
			$previousdata = $this->countAllDates();
1524
			$this->deleteStatFlight('date');
1525
			$alldata = $Common->array_merge_noappend($previousdata,$Spotter->countAllDates());
1526
			$values = array();
1527
			foreach ($alldata as $cnt) {
1528
				$values[] = $cnt['date_count'];
1529
			}
1530
			array_multisort($values,SORT_DESC,$alldata);
1531
			array_splice($alldata,11);
1532
			foreach ($alldata as $number) {
1533
				$this->addStatFlight('date',$number['date_name'],$number['date_count']);
1534
			}
1535
			
1536
			$this->deleteStatFlight('hour');
1537
			echo '-> countAllHours...'."\n";
1538
			$alldata = $Spotter->countAllHours('hour');
1539
			foreach ($alldata as $number) {
1540
				$this->addStatFlight('hour',$number['hour_name'],$number['hour_count']);
1541
			}
1542
1543
1544
1545
			// Count by airlines
1546
			echo '--- Stats by airlines ---'."\n";
1547
			$Spotter = new Spotter($this->db);
1548
			$alldata = $Spotter->countAllAircraftTypesByAirlines(false,0,$last_update_day);
1549
			foreach ($alldata as $number) {
1550
				$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer'],$number['airline_icao']);
1551
			}
1552
			$alldata = $Spotter->countAllAircraftRegistrationsByAirlines(false,0,$last_update_day);
1553
			foreach ($alldata as $number) {
1554
				$this->addStatAircraftRegistration($number['registration'],$number['aircraft_registration_count'],$number['aircraft_icao'],$number['airline_icao']);
1555
			}
1556
			$alldata = $Spotter->countAllCallsignsByAirlines(false,0,$last_update_day);
1557
			foreach ($alldata as $number) {
1558
				$this->addStatCallsign($number['callsign_icao'],$number['callsign_icao_count'],$number['airline_icao']);
1559
			}
1560
			$alldata = $Spotter->countAllOwnersByAirlines(false,0,$last_update_day);
1561
			foreach ($alldata as $number) {
1562
				$this->addStatOwner($number['owner_name'],$number['owner_count'],$number['airline_icao']);
1563
			}
1564
			$alldata = $Spotter->countAllPilotsByAirlines(false,0,$last_update_day);
1565
			foreach ($alldata as $number) {
1566
				$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name'],$number['airline_icao']);
1567
			}
1568
			
1569
			$pall = $Spotter->countAllDepartureAirportsByAirlines(false,0,$last_update_day);
1570
       			$dall = $Spotter->countAllDetectedDepartureAirportsByAirlines(false,0,$last_update_day);
1571
	        	//$alldata = array();
1572
    			foreach ($dall as $value) {
1573
    				$icao = $value['airport_departure_icao'];
1574
    				$dicao = $value['airline_icap'];
1575
    				$find = false;
1576
    				foreach ($pall as $pvalue) {
1577
    					if ($pvalue['airport_departure_icao'] == $icao && $pvalue['airline_icao'] = $dicao) {
1578
    						$pvalue['airport_departure_icao_count'] = $pvalue['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
1579
    						$find = true;
1580
    						break;
1581
    					}
1582
    				}
1583
    				if ($find === false) {
1584
    					$pall[] = $value;
1585
    				}
1586
    			}
1587
    			$alldata = $pall;
1588
			foreach ($alldata as $number) {
1589
				echo $this->addStatDepartureAirports($number['airport_departure_icao'],$number['airport_departure_name'],$number['airport_departure_city'],$number['airport_departure_country'],$number['airport_departure_icao_count'],$number['airline_icao']);
1590
			}
1591
			$pall = $Spotter->countAllArrivalAirportsByAirlines(false,0,$last_update_day);
1592
        		$dall = $Spotter->countAllDetectedArrivalAirportsByAirlines(false,0,$last_update_day);
1593
	        	//$alldata = array();
1594
    			foreach ($dall as $value) {
1595
    				$icao = $value['airport_arrival_icao'];
1596
    				$dicao = $value['airline_icao'];
1597
    				$find = false;
1598
    				foreach ($pall as $pvalue) {
1599
    					if ($pvalue['airport_arrival_icao'] == $icao && $pvalue['airline_icao'] = $dicao) {
1600
    						$pvalue['airport_arrival_icao_count'] = $pvalue['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
1601
    						$find = true;
1602
    						break;
1603
    					}
1604
    				}
1605
    				if ($find === false) {
1606
    					$pall[] = $value;
1607
    				}
1608
    			}
1609
    			$alldata = $pall;
1610
                        foreach ($alldata as $number) {
1611
				echo $this->addStatArrivalAirports($number['airport_arrival_icao'],$number['airport_arrival_name'],$number['airport_arrival_city'],$number['airport_arrival_country'],$number['airport_arrival_icao_count'],$number['airline_icao']);
1612
			}
1613
			$Spotter = new Spotter($this->db);
1614
			$alldata = $Spotter->countAllMonthsByAirlines();
1615
			$lastyear = false;
1616
			foreach ($alldata as $number) {
1617
				if ($number['year_name'] != date('Y')) $lastyear = true;
1618
				$this->addStat('flights_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])),$number['airline_icao']);
1619
			}
1620
			$alldata = $Spotter->countAllMonthsOwnersByAirlines();
1621
			foreach ($alldata as $number) {
1622
				$this->addStat('owners_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])),$number['airline_icao']);
1623
			}
1624
			$alldata = $Spotter->countAllMonthsPilotsByAirlines();
1625
			foreach ($alldata as $number) {
1626
				$this->addStat('pilots_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])),$number['airline_icao']);
1627
			}
1628
			$alldata = $Spotter->countAllMonthsAircraftsByAirlines();
1629
			foreach ($alldata as $number) {
1630
				$this->addStat('aircrafts_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])),$number['airline_icao']);
1631
			}
1632
			$alldata = $Spotter->countAllMonthsRealArrivalsByAirlines();
1633
			foreach ($alldata as $number) {
1634
				$this->addStat('realarrivals_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])),$number['airline_icao']);
1635
			}
1636
			echo '...Departure'."\n";
1637
			$pall = $Spotter->getLast7DaysAirportsDepartureByAirlines();
1638
        		$dall = $Spotter->getLast7DaysDetectedAirportsDepartureByAirlines();
1639
    			foreach ($dall as $value) {
1640
    				$icao = $value['departure_airport_icao'];
1641
    				$airline = $value['airline_icao'];
1642
    				$ddate = $value['date'];
1643
    				$find = false;
1644
    				foreach ($pall as $pvalue) {
1645
    					if ($pvalue['departure_airport_icao'] == $icao && $pvalue['date'] == $ddate && $pvalue['airline_icao'] = $airline) {
1646
    						$pvalue['departure_airport_count'] = $pvalue['departure_airport_count'] + $value['departure_airport_count'];
1647
    						$find = true;
1648
    						break;
1649
    					}
1650
    				}
1651
    				if ($find === false) {
1652
    					$pall[] = $value;
1653
    				}
1654
    			}
1655
    			$alldata = $pall;
1656
			foreach ($alldata as $number) {
1657
				$this->addStatDepartureAirportsDaily($number['date'],$number['departure_airport_icao'],$number['departure_airport_name'],$number['departure_airport_city'],$number['departure_airport_country'],$number['departure_airport_count'],$number['airline_icao']);
1658
			}
1659
			echo '...Arrival'."\n";
1660
			$pall = $Spotter->getLast7DaysAirportsArrivalByAirlines();
1661
        		$dall = $Spotter->getLast7DaysDetectedAirportsArrivalByAirlines();
1662
    			foreach ($dall as $value) {
1663
    				$icao = $value['arrival_airport_icao'];
1664
    				$airline = $value['airline_icao'];
1665
    				$ddate = $value['date'];
1666
    				$find = false;
1667
    				foreach ($pall as $pvalue) {
1668
    					if ($pvalue['arrival_airport_icao'] == $icao && $pvalue['date'] == $ddate && $pvalue['airline_icao'] == $airline) {
1669
    						$pvalue['arrival_airport_count'] = $pvalue['arrival_airport_count'] + $value['arrival_airport_count'];
1670
    						$find = true;
1671
    						break;
1672
    					}
1673
    				}
1674
    				if ($find === false) {
1675
    					$pall[] = $value;
1676
    				}
1677
    			}
1678
    			$alldata = $pall;
1679
			foreach ($alldata as $number) {
1680
				$this->addStatArrivalAirportsDaily($number['date'],$number['arrival_airport_icao'],$number['arrival_airport_name'],$number['arrival_airport_city'],$number['arrival_airport_country'],$number['arrival_airport_count'],$number['airline_icao']);
1681
			}
1682
1683
			echo 'Flights data...'."\n";
1684
			echo '-> countAllDatesLastMonth...'."\n";
1685
			$alldata = $Spotter->countAllDatesLastMonthByAirlines();
1686
			foreach ($alldata as $number) {
1687
				$this->addStatFlight('month',$number['date_name'],$number['date_count'], $number['airline_icao']);
1688
			}
1689
			echo '-> countAllDates...'."\n";
1690
			$previousdata = $this->countAllDatesByAirlines();
1691
			$alldata = $Common->array_merge_noappend($previousdata,$Spotter->countAllDatesByAirlines());
1692
			$values = array();
1693
			foreach ($alldata as $cnt) {
1694
				$values[] = $cnt['date_count'];
1695
			}
1696
			array_multisort($values,SORT_DESC,$alldata);
1697
			array_splice($alldata,11);
1698
			foreach ($alldata as $number) {
1699
				$this->addStatFlight('date',$number['date_name'],$number['date_count'],$number['airline_icao']);
1700
			}
1701
			
1702
			echo '-> countAllHours...'."\n";
1703
			$alldata = $Spotter->countAllHoursByAirlines('hour');
1704
			foreach ($alldata as $number) {
1705
				$this->addStatFlight('hour',$number['hour_name'],$number['hour_count'],$number['airline_icao']);
1706
			}
1707
			
1708
1709
			if (!isset($globalStatsFilters) || $globalStatsFilters == '') $globalStatsFilters = array();
1710
			foreach ($globalStatsFilters as $name => $filter) {
1711
				//$filter_name = $filter['name'];
1712
				$filter_name = $name;
1713
				// Count by filter
1714
				echo '--- Stats by airlines ---'."\n";
1715
				$Spotter = new Spotter($this->db);
1716
				$alldata = $Spotter->countAllAircraftTypes(false,0,$last_update_day,$filter);
1717
				foreach ($alldata as $number) {
1718
					$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer'],'',$filter_name);
1719
				}
1720
				$alldata = $Spotter->countAllAircraftRegistrations(false,0,$last_update_day,$filter);
1721
				foreach ($alldata as $number) {
1722
					$this->addStatAircraftRegistration($number['registration'],$number['aircraft_registration_count'],$number['aircraft_icao'],'',$filter_name);
1723
				}
1724
				$alldata = $Spotter->countAllCallsigns(false,0,$last_update_day,$filter);
1725
				foreach ($alldata as $number) {
1726
					$this->addStatCallsign($number['callsign_icao'],$number['callsign_icao_count'],'',$filter_name);
1727
				}
1728
				$alldata = $Spotter->countAllOwners(false,0,$last_update_day,$filter);
1729
				foreach ($alldata as $number) {
1730
					$this->addStatOwner($number['owner_name'],$number['owner_count'],'',$filter_name);
1731
				}
1732
				$alldata = $Spotter->countAllPilots(false,0,$last_update_day,$filter);
1733
				foreach ($alldata as $number) {
1734
					$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name'],'',$filter_name);
1735
				}
1736
    			
1737
				$pall = $Spotter->countAllDepartureAirports(false,0,$last_update_day,$filter);
1738
	       			$dall = $Spotter->countAllDetectedDepartureAirports(false,0,$last_update_day,$filter);
1739
		        	//$alldata = array();
1740
	    			foreach ($dall as $value) {
1741
	    				$icao = $value['airport_departure_icao'];
1742
	    				$dicao = $value['airline_icap'];
1743
	    				$find = false;
1744
        				foreach ($pall as $pvalue) {
1745
        					if ($pvalue['airport_departure_icao'] == $icao && $pvalue['airline_icao'] = $dicao) {
1746
        						$pvalue['airport_departure_icao_count'] = $pvalue['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
1747
        						$find = true;
1748
        						break;
1749
        					}
1750
        				}
1751
        				if ($find === false) {
1752
        					$pall[] = $value;
1753
        				}
1754
        			}
1755
        			$alldata = $pall;
1756
				foreach ($alldata as $number) {
1757
    					echo $this->addStatDepartureAirports($number['airport_departure_icao'],$number['airport_departure_name'],$number['airport_departure_city'],$number['airport_departure_country'],$number['airport_departure_icao_count'],'',$filter_name);
1758
				}
1759
				$pall = $Spotter->countAllArrivalAirports(false,0,$last_update_day,$filter);
1760
    				$dall = $Spotter->countAllDetectedArrivalAirports(false,0,$last_update_day,$filter);
1761
	    			//$alldata = array();
1762
				foreach ($dall as $value) {
1763
    					$icao = $value['airport_arrival_icao'];
1764
	    				$dicao = $value['airline_icao'];
1765
	    				$find = false;
1766
    					foreach ($pall as $pvalue) {
1767
    						if ($pvalue['airport_arrival_icao'] == $icao && $pvalue['airline_icao'] = $dicao) {
1768
							$pvalue['airport_arrival_icao_count'] = $pvalue['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
1769
							$find = true;
1770
							break;
1771
        					}
1772
					}
1773
					if ($find === false) {
1774
						$pall[] = $value;
1775
					}
1776
        			}
1777
				$alldata = $pall;
1778
				foreach ($alldata as $number) {
1779
					echo $this->addStatArrivalAirports($number['airport_arrival_icao'],$number['airport_arrival_name'],$number['airport_arrival_city'],$number['airport_arrival_country'],$number['airport_arrival_icao_count'],'',$filter_name);
1780
				}
1781
				$Spotter = new Spotter($this->db);
1782
				$alldata = $Spotter->countAllMonths($filter);
1783
				$lastyear = false;
1784
				foreach ($alldata as $number) {
1785
					if ($number['year_name'] != date('Y')) $lastyear = true;
1786
					$this->addStat('flights_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])),'',$filter_name);
1787
				}
1788
				$alldata = $Spotter->countAllMonthsOwners($filter);
1789
				foreach ($alldata as $number) {
1790
					$this->addStat('owners_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])),'',$filter_name);
1791
				}
1792
				$alldata = $Spotter->countAllMonthsPilots($filter);
1793
				foreach ($alldata as $number) {
1794
					$this->addStat('pilots_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])),'',$filter_name);
1795
				}
1796
				$alldata = $Spotter->countAllMonthsAircrafts($filter);
1797
				foreach ($alldata as $number) {
1798
					$this->addStat('aircrafts_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])),'',$filter_name);
1799
				}
1800
				$alldata = $Spotter->countAllMonthsRealArrivals($filter);
1801
				foreach ($alldata as $number) {
1802
					$this->addStat('realarrivals_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])),'',$filter_name);
1803
				}
1804
				echo '...Departure'."\n";
1805
				$pall = $Spotter->getLast7DaysAirportsDeparture($filter);
1806
        			$dall = $Spotter->getLast7DaysDetectedAirportsDeparture($filter);
1807
	    			foreach ($dall as $value) {
1808
    					$icao = $value['departure_airport_icao'];
1809
    					$airline = $value['airline_icao'];
1810
	    				$ddate = $value['date'];
1811
    					$find = false;
1812
    					foreach ($pall as $pvalue) {
1813
    						if ($pvalue['departure_airport_icao'] == $icao && $pvalue['date'] == $ddate && $pvalue['airline_icao'] = $airline) {
1814
	    						$pvalue['departure_airport_count'] = $pvalue['departure_airport_count'] + $value['departure_airport_count'];
1815
    							$find = true;
1816
    							break;
1817
    						}
1818
    					}
1819
					if ($find === false) {
1820
	    					$pall[] = $value;
1821
    					}
1822
    				}
1823
	    			$alldata = $pall;
1824
				foreach ($alldata as $number) {
1825
					$this->addStatDepartureAirportsDaily($number['date'],$number['departure_airport_icao'],$number['departure_airport_name'],$number['departure_airport_city'],$number['departure_airport_country'],$number['departure_airport_count'],'',$filter_name);
1826
				}
1827
				echo '...Arrival'."\n";
1828
				$pall = $Spotter->getLast7DaysAirportsArrival($filter);
1829
    				$dall = $Spotter->getLast7DaysDetectedAirportsArrival($filter);
1830
				foreach ($dall as $value) {
1831
					$icao = $value['arrival_airport_icao'];
1832
					$airline = $value['airline_icao'];
1833
					$ddate = $value['date'];
1834
    					$find = false;
1835
					foreach ($pall as $pvalue) {
1836
    						if ($pvalue['arrival_airport_icao'] == $icao && $pvalue['date'] == $ddate && $pvalue['airline_icao'] == $airline) {
1837
    							$pvalue['arrival_airport_count'] = $pvalue['arrival_airport_count'] + $value['arrival_airport_count'];
1838
    							$find = true;
1839
    							break;
1840
	    					}
1841
    					}
1842
    					if ($find === false) {
1843
    						$pall[] = $value;
1844
	    				}
1845
    				}
1846
    				$alldata = $pall;
1847
				foreach ($alldata as $number) {
1848
					$this->addStatArrivalAirportsDaily($number['date'],$number['arrival_airport_icao'],$number['arrival_airport_name'],$number['arrival_airport_city'],$number['arrival_airport_country'],$number['arrival_airport_count'],'',$filter_name);
1849
				}
1850
    
1851
				echo 'Flights data...'."\n";
1852
				echo '-> countAllDatesLastMonth...'."\n";
1853
				$alldata = $Spotter->countAllDatesLastMonth($filter);
1854
				foreach ($alldata as $number) {
1855
					$this->addStatFlight('month',$number['date_name'],$number['date_count'], '',$filter_name);
1856
				}
1857
				echo '-> countAllDates...'."\n";
1858
				$previousdata = $this->countAllDates($filter);
1859
				$alldata = $Common->array_merge_noappend($previousdata,$Spotter->countAllDates($filter));
1860
				$values = array();
1861
				foreach ($alldata as $cnt) {
1862
					$values[] = $cnt['date_count'];
1863
				}
1864
				array_multisort($values,SORT_DESC,$alldata);
1865
				array_splice($alldata,11);
1866
				foreach ($alldata as $number) {
1867
					$this->addStatFlight('date',$number['date_name'],$number['date_count'],'',$filter_name);
1868
				}
1869
				
1870
				echo '-> countAllHours...'."\n";
1871
				$alldata = $Spotter->countAllHours('hour',$filter);
1872
				foreach ($alldata as $number) {
1873
					$this->addStatFlight('hour',$number['hour_name'],$number['hour_count'],'',$filter_name);
1874
				}
1875
			}
1876
	
1877
1878
			// Last year stats
1879
			if ($lastyear) {
1880
				echo 'Data from last year...'."\n";
1881
				// SUM all previous month to put as year
1882
				$previous_year = date('Y');
1883
				$previous_year--;
1884
				$this->addStat('aircrafts_byyear',$this->getSumStats('aircrafts_bymonth',$previous_year),$previous_year.'-01-01 00:00:00');
1885
				$this->addStat('airlines_byyear',$this->getSumStats('airlines_bymonth',$previous_year),$previous_year.'-01-01 00:00:00');
1886
				$this->addStat('owner_byyear',$this->getSumStats('owner_bymonth',$previous_year),$previous_year.'-01-01 00:00:00');
1887
				$this->addStat('pilot_byyear',$this->getSumStats('pilot_bymonth',$previous_year),$previous_year.'-01-01 00:00:00');
1888
				$allairlines = $this->getAllAirlineNames();
1889
				foreach ($allairlines as $data) {
1890
					$this->addStat('aircrafts_byyear',$this->getSumStats('aircrafts_bymonth',$previous_year,$data['airline_icao']),$previous_year.'-01-01 00:00:00',$data['airline_icao']);
1891
					$this->addStat('airlines_byyear',$this->getSumStats('airlines_bymonth',$previous_year,$data['airline_icao']),$previous_year.'-01-01 00:00:00',$data['airline_icao']);
1892
					$this->addStat('owner_byyear',$this->getSumStats('owner_bymonth',$previous_year,$data['airline_icao']),$previous_year.'-01-01 00:00:00',$data['airline_icao']);
1893
					$this->addStat('pilot_byyear',$this->getSumStats('pilot_bymonth',$previous_year,$data['airline_icao']),$previous_year.'-01-01 00:00:00',$data['airline_icao']);
1894
				}
1895
				
1896
				if (isset($globalArchiveYear) && $globalArchiveYear) {
1897
					if ($globalArchive) {
1898
						$query = "INSERT INTO spotter_archive_output SELECT * FROM spotter_output WHERE spotter_output.date < '".date('Y')."-01-01 00:00:00'";
1899
						try {
1900
							$sth = $this->db->prepare($query);
1901
							$sth->execute();
1902
						} catch(PDOException $e) {
1903
							return "error : ".$e->getMessage().' - query : '.$query."\n";
1904
						}
1905
					}
1906
					echo 'Delete old data'."\n";
1907
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < '".date('Y')."-01-01 00:00:00'";
1908
					try {
1909
						$sth = $this->db->prepare($query);
1910
						$sth->execute();
1911
					} catch(PDOException $e) {
1912
						return "error : ".$e->getMessage().' - query : '.$query."\n";
1913
					}
1914
				}
1915
			}
1916
			if ($globalArchiveMonths > 0) {
1917
				if ($globalArchive) {
1918
					echo 'Archive old data...'."\n";
1919
					if ($globalDBdriver == 'mysql') {
1920
						//$query = "INSERT INTO spotter_archive_output SELECT * FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
1921
						$query = "INSERT INTO spotter_archive_output (spotter_id,flightaware_id,ident,registration,airline_name,airline_icao,airline_country,airline_type,aircraft_icao,aircraft_name,aircraft_manufacturer,departure_airport_icao,departure_airport_name,departure_airport_city,departure_airport_country,departure_airport_time,arrival_airport_icao,arrival_airport_name,arrival_airport_city,arrival_airport_country,arrival_airport_time,route_stop,date,latitude,longitude,waypoints,altitude,heading,ground_speed,highlight,squawk,ModeS,pilot_id,pilot_name,owner_name,verticalrate,format_source,source_name,ground,last_ground,last_seen,last_latitude,last_longitude,last_altitude,last_ground_speed,real_arrival_airport_icao,real_arrival_airport_time,real_departure_airport_icao,real_departure_airport_time)
1922
							    SELECT spotter_id,flightaware_id,ident,registration,airline_name,airline_icao,airline_country,airline_type,aircraft_icao,aircraft_name,aircraft_manufacturer,departure_airport_icao,departure_airport_name,departure_airport_city,departure_airport_country,departure_airport_time,arrival_airport_icao,arrival_airport_name,arrival_airport_city,arrival_airport_country,arrival_airport_time,route_stop,date,latitude,longitude,waypoints,altitude,heading,ground_speed,highlight,squawk,ModeS,pilot_id,pilot_name,owner_name,verticalrate,format_source,source_name,ground,last_ground,last_seen,last_latitude,last_longitude,last_altitude,last_ground_speed,real_arrival_airport_icao,real_arrival_airport_time,real_departure_airport_icao,real_departure_airport_time
1923
	    						     FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
1924
					} else {
1925
						$query = "INSERT INTO spotter_archive_output (spotter_id,flightaware_id,ident,registration,airline_name,airline_icao,airline_country,airline_type,aircraft_icao,aircraft_name,aircraft_manufacturer,departure_airport_icao,departure_airport_name,departure_airport_city,departure_airport_country,departure_airport_time,arrival_airport_icao,arrival_airport_name,arrival_airport_city,arrival_airport_country,arrival_airport_time,route_stop,date,latitude,longitude,waypoints,altitude,heading,ground_speed,highlight,squawk,ModeS,pilot_id,pilot_name,owner_name,verticalrate,format_source,source_name,ground,last_ground,last_seen,last_latitude,last_longitude,last_altitude,last_ground_speed,real_arrival_airport_icao,real_arrival_airport_time,real_departure_airport_icao,real_departure_airport_time)
1926
							     SELECT 
1927
								spotter_id,flightaware_id,ident,registration,airline_name,airline_icao,airline_country,airline_type,aircraft_icao,aircraft_name,aircraft_manufacturer,departure_airport_icao,departure_airport_name,departure_airport_city,departure_airport_country,departure_airport_time,arrival_airport_icao,arrival_airport_name,arrival_airport_city,arrival_airport_country,arrival_airport_time,route_stop,date,latitude,longitude,waypoints,altitude,heading,ground_speed,highlight,squawk,ModeS,pilot_id,pilot_name,owner_name,verticalrate,format_source,source_name,ground,last_ground,last_seen,last_latitude,last_longitude,last_altitude,last_ground_speed,real_arrival_airport_icao,real_arrival_airport_time,real_departure_airport_icao,real_departure_airport_time
1928
							    FROM spotter_output WHERE spotter_output.date < CAST(to_char(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalArchiveMonths." MONTHS', 'YYYY/mm/01') AS TIMESTAMP)";
1929
					}
1930
					try {
1931
						$sth = $this->db->prepare($query);
1932
						$sth->execute();
1933
					} catch(PDOException $e) {
1934
						return "error : ".$e->getMessage();
1935
					}
1936
				}
1937
				echo 'Deleting old data...'."\n";
1938
				//$query = 'DELETE FROM spotter_output WHERE spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$globalArchiveMonths.' MONTH)';
1939
				if ($globalDBdriver == 'mysql') {
1940
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
1941
				} else {
1942
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < CAST(to_char(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalArchiveMonths." MONTHS', 'YYYY/mm/01') AS TIMESTAMP)";
1943
				}
1944
				try {
1945
					$sth = $this->db->prepare($query);
1946
					$sth->execute();
1947
				} catch(PDOException $e) {
1948
					return "error : ".$e->getMessage();
1949
				}
1950
			}
1951
			echo 'Insert last stats update date...'."\n";
1952
			date_default_timezone_set('UTC');
1953
			$this->addLastStatsUpdate('last_update_stats',date('Y-m-d G:i:s'));
1954
		//}
1955
	}
1956
}
1957
1958
?>