Completed
Push — master ( 177cfd...bce49d )
by Yannick
08:42
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
			/*
553
			if ($globalDBdriver == 'mysql') {
554
				$query .= " ORDER BY flight_date ASC";
555
			} else {
556
			*/
557
			$query .= " ORDER BY CAST(flight_date AS integer) ASC";
558
		}
559
		if ($orderby == 'count') $query .= " ORDER BY hour_count DESC";
560
                 try {
561
                        $sth = $this->db->prepare($query);
562
                        $sth->execute(array(':stats_airline' => $stats_airline, ':filter_name' => $filter_name));
563
                } catch(PDOException $e) {
564
                        echo "error : ".$e->getMessage();
565
                }
566
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
567
                if (empty($all)) {
568
			$filters = array('airlines' => array($stats_airline));
569
			if ($filter_name != '') {
570
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
571
			}
572
            		$Spotter = new Spotter($this->db);
573
            		$all = $Spotter->countAllHours($orderby,$filters);
574
                }
575
                return $all;
576
	}
577
	
578
	public function countOverallFlights($stats_airline = '', $filter_name = '') {
579
		global $globalStatsFilters;
580
		$all = $this->getSumStats('flights_bymonth',date('Y'),$stats_airline,$filter_name);
581
		if (empty($all)) {
582
			$filters = array('airlines' => array($stats_airline));
583
			if ($filter_name != '') {
584
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
585
			}
586
			$Spotter = new Spotter($this->db);
587
			$all = $Spotter->countOverallFlights($filters);
588
		}
589
		return $all;
590
	}
591
	public function countOverallMilitaryFlights($filter_name = '') {
592
		global $globalStatsFilters;
593
		$all = $this->getSumStats('military_flights_bymonth',date('Y'),'',$filter_name);
594
		if (empty($all)) {
595
		        $filters = array();
596
            		if ($filter_name != '') {
597
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
598
			}
599
			$Spotter = new Spotter($this->db);
600
			$all = $Spotter->countOverallMilitaryFlights($filters);
601
		}
602
		return $all;
603
	}
604
	public function countOverallArrival($stats_airline = '',$filter_name = '') {
605
		global $globalStatsFilters;
606
		$all = $this->getSumStats('realarrivals_bymonth',date('Y'),$stats_airline,$filter_name);
607
		if (empty($all)) {
608
			$filters = array('airlines' => array($stats_airline));
609
			if ($filter_name != '') {
610
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
611
			}
612
			$Spotter = new Spotter($this->db);
613
			$all = $Spotter->countOverallArrival($filters);
614
		}
615
		return $all;
616
	}
617
	public function countOverallAircrafts($stats_airline = '',$filter_name = '') {
618
		global $globalStatsFilters;
619
		$all = $this->getSumStats('aircrafts_bymonth',date('Y'),$stats_airline,$filter_name);
620
		if (empty($all)) {
621
			$filters = array('airlines' => array($stats_airline));
622
			if ($filter_name != '') {
623
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
624
			}
625
			$Spotter = new Spotter($this->db);
626
			$all = $Spotter->countOverallAircrafts($filters);
627
		}
628
		return $all;
629
	}
630
	public function countOverallAirlines($filter_name = '') {
631
		global $globalStatsFilters;
632
		$query = "SELECT COUNT(*) AS nb_airline FROM stats_airline WHERE filter_name = :filter_name";
633
                 try {
634
                        $sth = $this->db->prepare($query);
635
                        $sth->execute(array(':filter_name' => $filter_name));
636
                } catch(PDOException $e) {
637
                        echo "error : ".$e->getMessage();
638
                }
639
                $result = $sth->fetchAll(PDO::FETCH_ASSOC);
640
                $all = $result[0]['nb_airline'];
641
		//$all = $this->getSumStats('airlines_bymonth',date('Y'));
642
		if (empty($all)) {
643
            		$filters = array();
644
            		if ($filter_name != '') {
645
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
646
			}
647
			$Spotter = new Spotter($this->db);
648
			$all = $Spotter->countOverallAirlines($filters);
649
		}
650
		return $all;
651
	}
652
	public function countOverallOwners($stats_airline = '',$filter_name = '') {
653
		global $globalStatsFilters;
654
		/*
655
		$query = "SELECT COUNT(*) AS nb_owner FROM stats_owner";
656
                 try {
657
                        $sth = $this->db->prepare($query);
658
                        $sth->execute();
659
                } catch(PDOException $e) {
660
                        echo "error : ".$e->getMessage();
661
                }
662
                $result = $sth->fetchAll(PDO::FETCH_ASSOC);
663
                $all = $result[0]['nb_owner'];
664
                */
665
		$all = $this->getSumStats('owners_bymonth',date('Y'),$stats_airline,$filter_name);
666
		if (empty($all)) {
667
			$filters = array('airlines' => array($stats_airline));
668
			if ($filter_name != '') {
669
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
670
			}
671
			$Spotter = new Spotter($this->db);
672
			$all = $Spotter->countOverallOwners($filters);
673
		}
674
		return $all;
675
	}
676
	public function countOverallPilots($stats_airline = '',$filter_name = '') {
677
		global $globalStatsFilters;
678
		$all = $this->getSumStats('pilots_bymonth',date('Y'),$stats_airline,$filter_name);
679
		if (empty($all)) {
680
			$filters = array('airlines' => array($stats_airline));
681
			if ($filter_name != '') {
682
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
683
			}
684
			$Spotter = new Spotter($this->db);
685
			$all = $Spotter->countOverallPilots($filters);
686
		}
687
		return $all;
688
	}
689
690
	public function getLast7DaysAirports($airport_icao = '', $stats_airline = '',$filter_name = '') {
691
		$query = "SELECT * FROM stats_airport WHERE stats_type = 'daily' AND airport_icao = :airport_icao AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY date";
692
		$query_values = array(':airport_icao' => $airport_icao,':stats_airline' => $stats_airline, ':filter_name' => $filter_name);
693
                 try {
694
                        $sth = $this->db->prepare($query);
695
                        $sth->execute($query_values);
696
                } catch(PDOException $e) {
697
                        echo "error : ".$e->getMessage();
698
                }
699
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
700
                return $all;
701
	}
702
	public function getStats($type,$stats_airline = '', $filter_name = '') {
703
                $query = "SELECT * FROM stats WHERE stats_type = :type AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY stats_date";
704
                $query_values = array(':type' => $type,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
705
                 try {
706
                        $sth = $this->db->prepare($query);
707
                        $sth->execute($query_values);
708
                } catch(PDOException $e) {
709
                        echo "error : ".$e->getMessage();
710
                }
711
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
712
                return $all;
713
        }
714
	public function getSumStats($type,$year,$stats_airline = '',$filter_name = '') {
715
    		global $globalArchiveMonths, $globalDBdriver;
716
    		if ($globalDBdriver == 'mysql') {
717
	                $query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND YEAR(stats_date) = :year AND stats_airline = :stats_airline AND filter_name = :filter_name";
718
	        } else {
719
            		$query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND EXTRACT(YEAR FROM stats_date) = :year AND stats_airline = :stats_airline AND filter_name = :filter_name";
720
                }
721
                $query_values = array(':type' => $type, ':year' => $year, ':stats_airline' => $stats_airline,':filter_name' => $filter_name);
722
                 try {
723
                        $sth = $this->db->prepare($query);
724
                        $sth->execute($query_values);
725
                } catch(PDOException $e) {
726
                        echo "error : ".$e->getMessage();
727
                }
728
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
729
                return $all[0]['total'];
730
        }
731
	public function getStatsTotal($type, $stats_airline = '', $filter_name = '') {
732
    		global $globalArchiveMonths, $globalDBdriver;
733
    		if ($globalDBdriver == 'mysql') {
734
			$query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND stats_date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL ".$globalArchiveMonths." MONTH) AND stats_airline = :stats_airline AND filter_name = :filter_name";
735
		} else {
736
			$query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND stats_date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalArchiveMonths." MONTHS' AND stats_airline = :stats_airline AND filter_name = :filter_name";
737
                }
738
                $query_values = array(':type' => $type, ':stats_airline' => $stats_airline, ':filter_name' => $filter_name);
739
                 try {
740
                        $sth = $this->db->prepare($query);
741
                        $sth->execute($query_values);
742
                } catch(PDOException $e) {
743
                        echo "error : ".$e->getMessage();
744
                }
745
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
746
                return $all[0]['total'];
747
        }
748
	public function getStatsAircraftTotal($stats_airline = '', $filter_name = '') {
749
    		global $globalArchiveMonths, $globalDBdriver;
750
    		if ($globalDBdriver == 'mysql') {
751
			$query = "SELECT SUM(cnt) as total FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name";
752
                } else {
753
			$query = "SELECT SUM(cnt) as total FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name";
754
                }
755
                 try {
756
                        $sth = $this->db->prepare($query);
757
                        $sth->execute(array(':stats_airline' => $stats_airline, ':filter_name' => $filter_name));
758
                } catch(PDOException $e) {
759
                        echo "error : ".$e->getMessage();
760
                }
761
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
762
                return $all[0]['total'];
763
        }
764
	public function getStatsAirlineTotal($filter_name = '') {
765
    		global $globalArchiveMonths, $globalDBdriver;
766
    		if ($globalDBdriver == 'mysql') {
767
			$query = "SELECT SUM(cnt) as total FROM stats_airline WHERE filter_name = :filter_name";
768
                } else {
769
			$query = "SELECT SUM(cnt) as total FROM stats_airline WHERE filter_name = :filter_name";
770
                }
771
                 try {
772
                        $sth = $this->db->prepare($query);
773
                        $sth->execute(array(':filter_name' => $filter_name));
774
                } catch(PDOException $e) {
775
                        echo "error : ".$e->getMessage();
776
                }
777
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
778
                return $all[0]['total'];
779
        }
780
	public function getStatsOwnerTotal($filter_name = '') {
781
    		global $globalArchiveMonths, $globalDBdriver;
782
    		if ($globalDBdriver == 'mysql') {
783
			$query = "SELECT SUM(cnt) as total FROM stats_owner WHERE filter_name = :filter_name";
784
		} else {
785
			$query = "SELECT SUM(cnt) as total FROM stats_owner WHERE filter_name = :filter_name";
786
                }
787
                 try {
788
                        $sth = $this->db->prepare($query);
789
                        $sth->execute(array(':filter_name' => $filter_name));
790
                } catch(PDOException $e) {
791
                        echo "error : ".$e->getMessage();
792
                }
793
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
794
                return $all[0]['total'];
795
        }
796
	public function getStatsPilotTotal($filter_name = '') {
797
    		global $globalArchiveMonths, $globalDBdriver;
798
    		if ($globalDBdriver == 'mysql') {
799
            		$query = "SELECT SUM(cnt) as total FROM stats_pilot WHERE filter_name = :filter_name";
800
            	} else {
801
            		$query = "SELECT SUM(cnt) as total FROM stats_pilot WHERE filter_name = :filter_name";
802
            	}
803
                 try {
804
                        $sth = $this->db->prepare($query);
805
                        $sth->execute(array(':filter_name' => $filter_name));
806
                } catch(PDOException $e) {
807
                        echo "error : ".$e->getMessage();
808
                }
809
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
810
                return $all[0]['total'];
811
        }
812
813
	public function addStat($type,$cnt,$stats_date,$stats_airline = '',$filter_name = '') {
814
		global $globalDBdriver;
815
		if ($globalDBdriver == 'mysql') {
816
			$query = "INSERT INTO stats (stats_type,cnt,stats_date,stats_airline,filter_name) VALUES (:type,:cnt,:stats_date,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE cnt = :cnt";
817
                } else {
818
			$query = "UPDATE stats SET cnt = :cnt WHERE stats_type = :type AND stats_date = :stats_date AND stats_airline = :stats_airline AND filter_name = :filter_name; INSERT INTO stats (stats_type,cnt,stats_date,stats_airline,filter_name) SELECT :type,:cnt,:stats_date,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats WHERE  stats_type = :type AND stats_date = :stats_date AND stats_airline = :stats_airline AND filter_name = :filter_name);"; 
819
		}
820
                $query_values = array(':type' => $type,':cnt' => $cnt,':stats_date' => $stats_date, ':stats_airline' => $stats_airline,':filter_name' => $filter_name);
821
                 try {
822
                        $sth = $this->db->prepare($query);
823
                        $sth->execute($query_values);
824
                } catch(PDOException $e) {
825
                        return "error : ".$e->getMessage();
826
                }
827
        }
828
	public function updateStat($type,$cnt,$stats_date,$stats_airline = '',$filter_name = '') {
829
		global $globalDBdriver;
830
		if ($globalDBdriver == 'mysql') {
831
			$query = "INSERT INTO stats (stats_type,cnt,stats_date,stats_airline,filter_name) VALUES (:type,:cnt,:stats_date,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt, stats_date = :date";
832
		} else {
833
            		//$query = "INSERT INTO stats (stats_type,cnt,stats_date) VALUES (:type,:cnt,:stats_date) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt, stats_date = :date";
834
			$query = "UPDATE stats SET cnt = cnt+:cnt WHERE stats_type = :type AND stats_date = :stats_date AND stats_airline = :stats_airline AND filter_name = :filter_name; INSERT INTO stats (stats_type,cnt,stats_date,stats_airline,filter_name) SELECT :type,:cnt,:stats_date,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats WHERE  stats_type = :type AND stats_date = :stats_date AND stats_airline = :stats_airline AND filter_name = :filter_name);"; 
835
                }
836
                $query_values = array(':type' => $type,':cnt' => $cnt,':stats_date' => $stats_date,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
837
                 try {
838
                        $sth = $this->db->prepare($query);
839
                        $sth->execute($query_values);
840
                } catch(PDOException $e) {
841
                        return "error : ".$e->getMessage();
842
                }
843
        }
844
	public function getStatsSource($date,$stats_type = '') {
845
		if ($stats_type == '') {
846
			$query = "SELECT * FROM stats_source WHERE stats_date = :date ORDER BY source_name";
847
			$query_values = array(':date' => $date);
848
		} else {
849
			$query = "SELECT * FROM stats_source WHERE stats_date = :date AND stats_type = :stats_type ORDER BY source_name";
850
			$query_values = array(':date' => $date,':stats_type' => $stats_type);
851
		}
852
                 try {
853
                        $sth = $this->db->prepare($query);
854
                        $sth->execute($query_values);
855
                } catch(PDOException $e) {
856
                        echo "error : ".$e->getMessage();
857
                }
858
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
859
                return $all;
860
        }
861
862
	public function addStatSource($data,$source_name,$stats_type,$date) {
863
		global $globalDBdriver;
864
		if ($globalDBdriver == 'mysql') {
865
			$query = "INSERT INTO stats_source (source_data,source_name,stats_type,stats_date) VALUES (:data,:source_name,:stats_type,:stats_date) ON DUPLICATE KEY UPDATE source_data = :data";
866
		} else {
867
			$query = "UPDATE stats_source SET source_data = :data WHERE stats_date = :stats_date AND source_name = :source_name AND stats_type = :stats_type; INSERT INTO stats_source (source_data,source_name,stats_type,stats_date) SELECT :data,:source_name,:stats_type,:stats_date WHERE NOT EXISTS (SELECT 1 FROM stats_source WHERE stats_date = :stats_date AND source_name = :source_name AND stats_type = :stats_type);"; 
868
                }
869
                $query_values = array(':data' => $data,':stats_date' => $date,':source_name' => $source_name,':stats_type' => $stats_type);
870
                 try {
871
                        $sth = $this->db->prepare($query);
872
                        $sth->execute($query_values);
873
                } catch(PDOException $e) {
874
                        return "error : ".$e->getMessage();
875
                }
876
        }
877
	public function addStatFlight($type,$date_name,$cnt,$stats_airline = '',$filter_name = '') {
878
                $query = "INSERT INTO stats_flight (stats_type,flight_date,cnt,stats_airline,filter_name) VALUES (:type,:flight_date,:cnt,:stats_airline,:filter_name)";
879
                $query_values = array(':type' => $type,':flight_date' => $date_name,':cnt' => $cnt, ':stats_airline' => $stats_airline,':filter_name' => $filter_name);
880
                 try {
881
                        $sth = $this->db->prepare($query);
882
                        $sth->execute($query_values);
883
                } catch(PDOException $e) {
884
                        return "error : ".$e->getMessage();
885
                }
886
        }
887
	public function addStatAircraftRegistration($registration,$cnt,$aircraft_icao = '',$airline_icao = '',$filter_name = '') {
888
		global $globalDBdriver;
889
		if ($globalDBdriver == 'mysql') {
890
			$query = "INSERT INTO stats_registration (aircraft_icao,registration,cnt,stats_airline,filter_name) VALUES (:aircraft_icao,:registration,:cnt,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt";
891
		} else {
892
			$query = "UPDATE stats_registration SET cnt = cnt+:cnt WHERE registration = :registration AND stats_airline = :stats_airline AND filter_name = :filter_name; INSERT INTO stats_registration (aircraft_icao,registration,cnt,stats_airline,filter_name) SELECT :aircraft_icao,:registration,:cnt,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_registration WHERE registration = :registration AND stats_airline = :stats_airline AND filter_name = :filter_name);"; 
893
		}
894
                $query_values = array(':aircraft_icao' => $aircraft_icao,':registration' => $registration,':cnt' => $cnt,':stats_airline' => $airline_icao, ':filter_name' => $filter_name);
895
                 try {
896
                        $sth = $this->db->prepare($query);
897
                        $sth->execute($query_values);
898
                } catch(PDOException $e) {
899
                        return "error : ".$e->getMessage();
900
                }
901
        }
902
	public function addStatCallsign($callsign_icao,$cnt,$airline_icao = '', $filter_name = '') {
903
		global $globalDBdriver;
904
		if ($globalDBdriver == 'mysql') {
905
			$query = "INSERT INTO stats_callsign (callsign_icao,airline_icao,cnt,filter_name) VALUES (:callsign_icao,:airline_icao,:cnt,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt";
906
		} else {
907
			$query = "UPDATE stats_callsign SET cnt = cnt+:cnt WHERE callsign_icao = :callsign_icao AND filter_name = :filter_name; INSERT INTO stats_callsign (callsign_icao,airline_icao,cnt,filter_name) SELECT :callsign_icao,:airline_icao,:cnt,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_callsign WHERE callsign_icao = :callsign_icao AND filter_name = :filter_name);"; 
908
		}
909
                $query_values = array(':callsign_icao' => $callsign_icao,':airline_icao' => $airline_icao,':cnt' => $cnt, ':filter_name' => $filter_name);
910
                 try {
911
                        $sth = $this->db->prepare($query);
912
                        $sth->execute($query_values);
913
                } catch(PDOException $e) {
914
                        return "error : ".$e->getMessage();
915
                }
916
        }
917
	public function addStatCountry($iso2,$iso3,$name,$cnt,$filter_name = '') {
918
		global $globalDBdriver;
919
		if ($globalDBdriver == 'mysql') {
920
			$query = "INSERT INTO stats_country (iso2,iso3,name,cnt,filter_name) VALUES (:iso2,:iso3,:name,:cnt,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt";
921
		} else {
922
			$query = "UPDATE stats_country SET cnt = cnt+:cnt WHERE iso2 = :iso2 AND filter_name = :filter_name; INSERT INTO stats_country (iso2,iso3,name,cnt,filter_name) SELECT :iso2,:iso3,:name,:cnt,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_country WHERE iso2 = :iso2 AND filter_name = :filter_name);"; 
923
		}
924
                $query_values = array(':iso2' => $iso2,':iso3' => $iso3,':name' => $name,':cnt' => $cnt,':filter_name' => $filter_name);
925
                 try {
926
                        $sth = $this->db->prepare($query);
927
                        $sth->execute($query_values);
928
                } catch(PDOException $e) {
929
                        return "error : ".$e->getMessage();
930
                }
931
        }
932
	public function addStatAircraft($aircraft_icao,$cnt,$aircraft_name = '',$aircraft_manufacturer = '', $airline_icao = '', $filter_name = '') {
933
		global $globalDBdriver;
934
		if ($globalDBdriver == 'mysql') {
935
			$query = "INSERT INTO stats_aircraft (aircraft_icao,aircraft_name,aircraft_manufacturer,cnt,stats_airline, filter_name) VALUES (:aircraft_icao,:aircraft_name,:aircraft_manufacturer,:cnt,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt, aircraft_name = :aircraft_name, aircraft_manufacturer = :aircraft_manufacturer, stats_airline = :stats_airline";
936
		} else {
937
			$query = "UPDATE stats_aircraft SET cnt = cnt+:cnt, aircraft_name = :aircraft_name, aircraft_manufacturer = :aircraft_manufacturer, filter_name = :filter_name WHERE aircraft_icao = :aircraft_icao AND stats_airline = :stats_airline AND filter_name = :filter_name; INSERT INTO stats_aircraft (aircraft_icao,aircraft_name,aircraft_manufacturer,cnt,stats_airline,filter_name) SELECT :aircraft_icao,:aircraft_name,:aircraft_manufacturer,:cnt,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_aircraft WHERE aircraft_icao = :aircraft_icao AND stats_airline = :stats_airline AND filter_name = :filter_name);"; 
938
		}
939
                $query_values = array(':aircraft_icao' => $aircraft_icao,':aircraft_name' => $aircraft_name,':cnt' => $cnt, ':aircraft_manufacturer' => $aircraft_manufacturer,':stats_airline' => $airline_icao, ':filter_name' => $filter_name);
940
                 try {
941
                        $sth = $this->db->prepare($query);
942
                        $sth->execute($query_values);
943
                } catch(PDOException $e) {
944
                        return "error : ".$e->getMessage();
945
                }
946
        }
947
	public function addStatAirline($airline_icao,$cnt,$airline_name = '',$filter_name = '') {
948
		global $globalDBdriver;
949
		if ($globalDBdriver == 'mysql') {
950
			$query = "INSERT INTO stats_airline (airline_icao,airline_name,cnt,filter_name) VALUES (:airline_icao,:airline_name,:cnt,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt,airline_name = :airline_name";
951
		} else {
952
			$query = "UPDATE stats_airline SET cnt = cnt+:cnt WHERE airline_icao = :airline_icao AND filter_name = :filter_name; INSERT INTO stats_airline (airline_icao,airline_name,cnt,filter_name) SELECT :airline_icao,:airline_name,:cnt,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_airline WHERE airline_icao = :airline_icao AND filter_name = :filter_name);"; 
953
		}
954
                $query_values = array(':airline_icao' => $airline_icao,':airline_name' => $airline_name,':cnt' => $cnt,':filter_name' => $filter_name);
955
                 try {
956
                        $sth = $this->db->prepare($query);
957
                        $sth->execute($query_values);
958
                } catch(PDOException $e) {
959
                        return "error : ".$e->getMessage();
960
                }
961
        }
962
	public function addStatOwner($owner_name,$cnt,$stats_airline = '', $filter_name = '') {
963
		global $globalDBdriver;
964
		if ($globalDBdriver == 'mysql') {
965
			$query = "INSERT INTO stats_owner (owner_name,cnt,stats_airline,filter_name) VALUES (:owner_name,:cnt,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt";
966
		} else {
967
			$query = "UPDATE stats_owner SET cnt = cnt+:cnt WHERE owner_name = :owner_name AND stats_airline = :stats_airline AND filter_name = :filter_name; INSERT INTO stats_owner (owner_name,cnt,stats_airline,filter_name) SELECT :owner_name,:cnt,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_owner WHERE owner_name = :owner_name AND stats_airline = :stats_airline AND filter_name = :filter_name);"; 
968
		}
969
                $query_values = array(':owner_name' => $owner_name,':cnt' => $cnt,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
970
                 try {
971
                        $sth = $this->db->prepare($query);
972
                        $sth->execute($query_values);
973
                } catch(PDOException $e) {
974
                        return "error : ".$e->getMessage();
975
                }
976
        }
977
	public function addStatPilot($pilot_id,$cnt,$pilot_name,$stats_airline = '',$filter_name = '') {
978
		global $globalDBdriver;
979
		if ($globalDBdriver == 'mysql') {
980
			$query = "INSERT INTO stats_pilot (pilot_id,cnt,pilot_name,stats_airline,filter_name) VALUES (:pilot_id,:cnt,:pilot_name,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt, pilot_name = :pilot_name";
981
		} else {
982
			$query = "UPDATE stats_pilot SET cnt = cnt+:cnt, pilot_name = :pilot_name WHERE pilot_id = :pilot_id AND stats_airline = :stats_airline AND filter_name = :filter_name; INSERT INTO stats_pilot (pilot_id,cnt,pilot_name,stats_airline,filter_name) SELECT :pilot_id,:cnt,:pilot_name,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_pilot WHERE pilot_id = :pilot_id AND stats_airline = :stats_airline AND filter_name = :filter_name);"; 
983
		}
984
                $query_values = array(':pilot_id' => $pilot_id,':cnt' => $cnt,':pilot_name' => $pilot_name,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
985
                 try {
986
                        $sth = $this->db->prepare($query);
987
                        $sth->execute($query_values);
988
                } catch(PDOException $e) {
989
                        return "error : ".$e->getMessage();
990
                }
991
        }
992
	public function addStatDepartureAirports($airport_icao,$airport_name,$airport_city,$airport_country,$departure,$airline_icao = '',$filter_name = '') {
993
		global $globalDBdriver;
994
		if ($globalDBdriver == 'mysql') {
995
			$query = "INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,departure,stats_type,date,stats_airline,filter_name) VALUES (:airport_icao,:airport_name,:airport_city,:airport_country,:departure,'yearly',:date,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE departure = departure+:departure";
996
		} else {
997
			$query = "UPDATE stats_airport SET departure = departure+:departure WHERE airport_icao = :airport_icao AND stats_type = 'yearly' AND stats_airline = :stats_airline AND date = :date AND filter_name = :filter_name; INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,departure,stats_type,date,stats_airline,filter_name) SELECT :airport_icao,:airport_name,:airport_city,:airport_country,:departure,'yearly',:date,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_airport WHERE airport_icao = :airport_icao AND stats_type = 'yearly' AND stats_airline = :stats_airline AND date = :date AND filter_name = :filter_name);"; 
998
		}
999
                $query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':departure' => $departure,':date' => date('Y').'-01-01 00:00:00', ':stats_airline' => $airline_icao,':filter_name' => $filter_name);
1000
                 try {
1001
                        $sth = $this->db->prepare($query);
1002
                        $sth->execute($query_values);
1003
                } catch(PDOException $e) {
1004
                        return "error : ".$e->getMessage();
1005
                }
1006
        }
1007
	public function addStatDepartureAirportsDaily($date,$airport_icao,$airport_name,$airport_city,$airport_country,$departure,$airline_icao = '',$filter_name = '') {
1008
		global $globalDBdriver;
1009
		if ($globalDBdriver == 'mysql') {
1010
			$query = "INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,departure,stats_type,date,stats_airline,filter_name) VALUES (:airport_icao,:airport_name,:airport_city,:airport_country,:departure,'daily',:date,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE departure = :departure";
1011
		} else {
1012
			$query = "UPDATE stats_airport SET departure = departure+:departure WHERE airport_icao = :airport_icao AND stats_type = 'daily' AND date = :date AND stats_airline = :stats_airline AND filter_name = :filter_name; INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,departure,stats_type,date,stats_airline,filter_name) SELECT :airport_icao,:airport_name,:airport_city,:airport_country,:departure,'daily',:date,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_airport WHERE airport_icao = :airport_icao AND stats_type = 'daily' AND date = :date AND stats_airline = :stats_airline AND filter_name = :filter_name);"; 
1013
		}
1014
                $query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':departure' => $departure,':date' => $date,':stats_airline' => $airline_icao,':filter_name' => $filter_name);
1015
                 try {
1016
                        $sth = $this->db->prepare($query);
1017
                        $sth->execute($query_values);
1018
                } catch(PDOException $e) {
1019
                        return "error : ".$e->getMessage();
1020
                }
1021
        }
1022
	public function addStatArrivalAirports($airport_icao,$airport_name,$airport_city,$airport_country,$arrival,$airline_icao = '',$filter_name = '') {
1023
		global $globalDBdriver;
1024
		if ($globalDBdriver == 'mysql') {
1025
			$query = "INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,arrival,stats_type,date,stats_airline,filter_name) VALUES (:airport_icao,:airport_name,:airport_city,:airport_country,:arrival,'yearly',:date,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE arrival = arrival+:arrival";
1026
		} else {
1027
			$query = "UPDATE stats_airport SET arrival = arrival+:arrival WHERE airport_icao = :airport_icao AND stats_type = 'yearly' AND stats_airline = :stats_airline AND date = :date AND filter_name = :filter_name; INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,arrival,stats_type,date,stats_airline,filter_name) SELECT :airport_icao,:airport_name,:airport_city,:airport_country,:arrival,'yearly',:date,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_airport WHERE airport_icao = :airport_icao AND stats_type = 'yearly' AND stats_airline = :stats_airline AND date = :date AND filter_name = :filter_name);"; 
1028
		}
1029
                $query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':arrival' => $arrival,':date' => date('Y').'-01-01 00:00:00',':stats_airline' => $airline_icao,':filter_name' => $filter_name);
1030
                 try {
1031
                        $sth = $this->db->prepare($query);
1032
                        $sth->execute($query_values);
1033
                } catch(PDOException $e) {
1034
                        return "error : ".$e->getMessage();
1035
                }
1036
        }
1037
	public function addStatArrivalAirportsDaily($date,$airport_icao,$airport_name,$airport_city,$airport_country,$arrival,$airline_icao = '',$filter_name = '') {
1038
		global $globalDBdriver;
1039
		if ($globalDBdriver == 'mysql') {
1040
			$query = "INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,arrival,stats_type,date,stats_airline,filter_name) VALUES (:airport_icao,:airport_name,:airport_city,:airport_country,:arrival,'daily',:date,:stats_airline,:filter_name) ON DUPLICATE KEY UPDATE arrival = :arrival";
1041
		} else {
1042
			$query = "UPDATE stats_airport SET arrival = arrival+:arrival WHERE airport_icao = :airport_icao AND stats_type = 'daily' AND date = :date AND stats_airline = :stats_airline AND filter_name = :filter_name; INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,arrival,stats_type,date,stats_airline,filter_name) SELECT :airport_icao,:airport_name,:airport_city,:airport_country,:arrival,'daily',:date,:stats_airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_airport WHERE airport_icao = :airport_icao AND stats_type = 'daily' AND date = :date AND stats_airline = :stats_airline AND filter_name = :filter_name);"; 
1043
		}
1044
                $query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':arrival' => $arrival, ':date' => $date,':stats_airline' => $airline_icao,':filter_name' => $filter_name);
1045
                 try {
1046
                        $sth = $this->db->prepare($query);
1047
                        $sth->execute($query_values);
1048
                } catch(PDOException $e) {
1049
                        return "error : ".$e->getMessage();
1050
                }
1051
        }
1052
1053
	public function deleteStat($id) {
1054
                $query = "DELETE FROM stats WHERE stats_id = :id";
1055
                $query_values = array(':id' => $id);
1056
                 try {
1057
                        $sth = $this->db->prepare($query);
1058
                        $sth->execute($query_values);
1059
                } catch(PDOException $e) {
1060
                        return "error : ".$e->getMessage();
1061
                }
1062
        }
1063
	public function deleteStatFlight($type) {
1064
                $query = "DELETE FROM stats_flight WHERE stats_type = :type";
1065
                $query_values = array(':type' => $type);
1066
                 try {
1067
                        $sth = $this->db->prepare($query);
1068
                        $sth->execute($query_values);
1069
                } catch(PDOException $e) {
1070
                        return "error : ".$e->getMessage();
1071
                }
1072
        }
1073
	public function deleteStatAirport($type) {
1074
                $query = "DELETE FROM stats_airport WHERE stats_type = :type";
1075
                $query_values = array(':type' => $type);
1076
                 try {
1077
                        $sth = $this->db->prepare($query);
1078
                        $sth->execute($query_values);
1079
                } catch(PDOException $e) {
1080
                        return "error : ".$e->getMessage();
1081
                }
1082
        }
1083
        
1084
        public function addOldStats() {
1085
    		global $globalArchiveMonths, $globalArchive, $globalArchiveYear, $globalDBdriver, $globalStatsFilters;
1086
    		$Common = new Common();
1087
    		$Connection = new Connection();
1088
    		date_default_timezone_set('UTC');
1089
    		$last_update = $this->getLastStatsUpdate('last_update_stats');
1090
		//print_r($last_update);
1091
		/*
1092
		$flightsbymonth = $this->getStats('flights_by_month');
1093
    		if (empty($last_update) && empty($flightsbymonth)) {
1094
			// Initial update
1095
			$Spotter = new Spotter($this->db);
1096
			$alldata = $Spotter->countAllMonths();
1097
			$lastyear = false;
1098
			foreach ($alldata as $number) {
1099
				if ($number['year_name'] != date('Y')) $lastyear = true;
1100
				$this->addStat('flights_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1101
			}
1102
			$alldata = $Spotter->countAllMilitaryMonths();
1103
			//$lastyear = false;
1104
			foreach ($alldata as $number) {
1105
				if ($number['year_name'] != date('Y')) $lastyear = true;
1106
				$this->addStat('military_flights_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1107
			}
1108
			$alldata = $Spotter->countAllMonthsOwners();
1109
			foreach ($alldata as $number) {
1110
				$this->addStat('owners_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1111
			}
1112
			$alldata = $Spotter->countAllMonthsPilots();
1113
			foreach ($alldata as $number) {
1114
				$this->addStat('pilots_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1115
			}
1116
			$alldata = $Spotter->countAllMonthsAirlines();
1117
			foreach ($alldata as $number) {
1118
				$this->addStat('airlines_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1119
			}
1120
			$alldata = $Spotter->countAllMonthsAircrafts();
1121
			foreach ($alldata as $number) {
1122
				$this->addStat('aircrafts_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1123
			}
1124
			$alldata = $Spotter->countAllMonthsRealArrivals();
1125
			foreach ($alldata as $number) {
1126
				$this->addStat('realarrivals_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
1127
			}
1128
			$this->deleteStatFlight('month');
1129
			$alldata = $Spotter->countAllDatesLastMonth();
1130
			foreach ($alldata as $number) {
1131
				$this->addStatFlight('month',$number['date_name'],$number['date_count']);
1132
			}
1133
			$previousdata = $this->countAllDates();
1134
			$this->deleteStatFlight('date');
1135
			$alldata = $Common->array_merge_noappend($previousdata,$Spotter->countAllDates());
1136
			$values = array();
1137
			foreach ($alldata as $cnt) {
1138
				$values[] = $cnt['date_count'];
1139
			}
1140
			array_multisort($values,SORT_DESC,$alldata);
1141
			array_splice($alldata,11);
1142
			foreach ($alldata as $number) {
1143
				$this->addStatFlight('date',$number['date_name'],$number['date_count']);
1144
			}
1145
			$this->deleteStatFlight('hour');
1146
			$alldata = $Spotter->countAllHours('hour');
1147
			foreach ($alldata as $number) {
1148
				$this->addStatFlight('hour',$number['hour_name'],$number['hour_count']);
1149
			}
1150
			if ($lastyear) {
1151
				$monthsSinceLastYear = date('n');
1152
				$alldata = $Spotter->countAllAircraftTypes(false,$monthsSinceLastYear);
1153
				foreach ($alldata as $number) {
1154
					$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer']);
1155
				}
1156
				$alldata = $Spotter->countAllAirlines(false,$monthsSinceLastYear);
1157
				foreach ($alldata as $number) {
1158
					$this->addStatAirline($number['airline_icao'],$number['airline_count'],$number['airline_name']);
1159
				}
1160
				if ($Connection->tableExists('countries')) {
1161
					$alldata = $Spotter->countAllFlightOverCountries(false,$monthsSinceLastYear);
1162
					foreach ($alldata as $number) {
1163
						$this->addStatCountry($number['flight_country_iso2'],$number['flight_country_iso3'],$number['flight_country'],$number['flight_count']);
1164
					}
1165
				}
1166
				$alldata = $Spotter->countAllOwners(false,$monthsSinceLastYear);
1167
				foreach ($alldata as $number) {
1168
					$this->addStatOwner($number['owner_name'],$number['owner_count']);
1169
				}
1170
				$alldata = $Spotter->countAllPilots(false,$monthsSinceLastYear);
1171
				foreach ($alldata as $number) {
1172
					$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name']);
1173
				}
1174
				$previous_year = date('Y');
1175
				$previous_year--;
1176
				$this->addStat('aircrafts_byyear',$this->getStatsAircraftTotal(),$previous_year.'-01-01 00:00:00');
1177
				$this->addStat('airlines_byyear',$this->getStatsAirlineTotal(),$previous_year.'-01-01 00:00:00');
1178
				$this->addStat('owner_byyear',$this->getStatsOwnerTotal(),$previous_year.'-01-01 00:00:00');
1179
				$this->addStat('pilot_byyear',$this->getStatsPilotTotal(),$previous_year.'-01-01 00:00:00');
1180
				
1181
				if (isset($globalArchiveYear) && $globalArchiveYear) {
1182
					if ($globalArchive) {
1183
						$query = "INSERT INTO spotter_archive_output SELECT * FROM spotter_output WHERE spotter_output.date < '".date('Y')."-01-01 00:00:00'";
1184
						//echo $query;
1185
						try {
1186
							$sth = $this->db->prepare($query);
1187
							$sth->execute();
1188
						} catch(PDOException $e) {
1189
							return "error : ".$e->getMessage().' - query : '.$query."\n";
1190
						}
1191
					}
1192
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < '".date('Y')."-01-01 00:00:00'";
1193
					try {
1194
						$sth = $this->db->prepare($query);
1195
						$sth->execute();
1196
					} catch(PDOException $e) {
1197
						return "error : ".$e->getMessage().' - query : '.$query."\n";
1198
					}
1199
				}
1200
			}
1201
			if (!isset($globalArchiveMonths) || $globalArchiveMonths == '') $globalArchiveMonths = 2;
1202
			if ($globalArchiveMonths > 0) {
1203
				$alldata = $Spotter->countAllAircraftTypes(false,$globalArchiveMonths);
1204
				foreach ($alldata as $number) {
1205
					$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer']);
1206
				}
1207
				$alldata = $Spotter->countAllAirlines(false,$globalArchiveMonths);
1208
				foreach ($alldata as $number) {
1209
					$this->addStatAirline($number['airline_icao'],$number['airline_count'],$number['airline_name']);
1210
				}
1211
				$alldata = $Spotter->countAllAircraftRegistrations(false,$globalArchiveMonths);
1212
				foreach ($alldata as $number) {
1213
					$this->addStatAircraftRegistration($number['registration'],$number['aircraft_registration_count'],$number['aircraft_icao']);
1214
				}
1215
				$alldata = $Spotter->countAllCallsigns(false,$globalArchiveMonths);
1216
				foreach ($alldata as $number) {
1217
					$this->addStatCallsign($number['callsign_icao'],$number['callsign_icao_count'],$number['airline_icao']);
1218
				}
1219
				$alldata = $Spotter->countAllOwners(false,$globalArchiveMonths);
1220
				foreach ($alldata as $number) {
1221
					$this->addStatOwner($number['owner_name'],$number['owner_count']);
1222
				}
1223
				if ($Connection->tableExists('countries')) {
1224
					$alldata = $Spotter->countAllFlightOverCountries(false,$globalArchiveMonths);
1225
					foreach ($alldata as $number) {
1226
						$this->addStatCountry($number['flight_country_iso2'],$number['flight_country_iso3'],$number['flight_country'],$number['flight_count']);
1227
					}
1228
				}
1229
				$alldata = $Spotter->countAllPilots(false,$globalArchiveMonths);
1230
				foreach ($alldata as $number) {
1231
					$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name']);
1232
				}
1233
				$pall = $Spotter->countAllDepartureAirports(false,$globalArchiveMonths);
1234
        			$dall = $Spotter->countAllDetectedDepartureAirports(false,$globalArchiveMonths);
1235
	        		$alldata = array();
1236
    				foreach ($pall as $value) {
1237
	        			$icao = $value['airport_departure_icao'];
1238
    					$alldata[$icao] = $value;
1239
	        		}
1240
	        		foreach ($dall as $value) {
1241
    					$icao = $value['airport_departure_icao'];
1242
        				if (isset($alldata[$icao])) {                                                           
1243
        					$alldata[$icao]['airport_departure_icao_count'] = $alldata[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
1244
	        			} else $alldata[$icao] = $value;
1245
    				}
1246
        			$count = array();
1247
        			foreach ($alldata as $key => $row) {
1248
        				$count[$key] = $row['airport_departure_icao_count'];
1249
	        		}
1250
    				array_multisort($count,SORT_DESC,$alldata);
1251
1252
				//print_r($alldate);
1253
				foreach ($alldata as $number) {
1254
					$this->addStatDepartureAirports($number['airport_departure_icao'],$number['airport_departure_name'],$number['airport_departure_city'],$number['airport_departure_country'],$number['airport_departure_icao_count']);
1255
				}
1256
				$pdata = $Spotter->countAllArrivalAirports(false,$globalArchiveMonths);
1257
        			$dall = $Spotter->countAllDetectedArrivalAirports(false,$globalArchiveMonths);
1258
	        		$alldata = array();
1259
    				foreach ($pdata as $value) {
1260
	        			$icao = $value['airport_arrival_icao'];
1261
    					$alldata[$icao] = $value;
1262
	        		}
1263
	        		foreach ($dall as $value) {
1264
    					$icao = $value['airport_arrival_icao'];
1265
        				if (isset($alldata[$icao])) {                                                           
1266
        					$alldata[$icao]['airport_arrival_icao_count'] = $alldata[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
1267
	        			} else $alldata[$icao] = $value;
1268
    				}
1269
        			$count = array();
1270
        			foreach ($alldata as $key => $row) {
1271
        				$count[$key] = $row['airport_arrival_icao_count'];
1272
	        		}
1273
    				array_multisort($count,SORT_DESC,$alldata);
1274
				foreach ($alldata as $number) {
1275
					$this->addStatArrivalAirports($number['airport_arrival_icao'],$number['airport_arrival_name'],$number['airport_arrival_city'],$number['airport_arrival_country'],$number['airport_arrival_icao_count']);
1276
				}
1277
				$this->addStat('aircrafts_byyear',$this->getStatsAircraftTotal(),date('Y').'-01-01 00:00:00');
1278
				$this->addStat('airlines_byyear',$this->getStatsAirlineTotal(),date('Y').'-01-01 00:00:00');
1279
				$this->addStat('owner_byyear',$this->getStatsOwnerTotal(),date('Y').'-01-01 00:00:00');
1280
				$this->addStat('pilot_byyear',$this->getStatsPilotTotal(),date('Y').'-01-01 00:00:00');
1281
			
1282
				if ($globalArchive) {
1283
					if ($globalDBdriver == 'mysql') {
1284
						$query = "INSERT INTO spotter_archive_output SELECT * FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
1285
					} else {
1286
						$query = "INSERT INTO spotter_archive_output SELECT * FROM spotter_output WHERE spotter_output.date < CAST(to_char(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalArchiveMonths." MONTHS', 'YYYY/mm/01') AS TIMESTAMP)";
1287
					}
1288
					try {
1289
						$sth = $this->db->prepare($query);
1290
						$sth->execute();
1291
					} catch(PDOException $e) {
1292
						return "error : ".$e->getMessage().' - query : '.$query."\n";
1293
					}
1294
				}
1295
	
1296
				//$query = 'DELETE FROM spotter_output WHERE spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$globalArchiveMonths.' MONTH)';
1297
				if ($globalDBdriver == 'mysql') {
1298
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
1299
				} else {
1300
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < CAST(to_char(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalArchiveMonths." MONTHS, 'YYYY/mm/01') AS TIMESTAMP)";
1301
				}
1302
				try {
1303
					$sth = $this->db->prepare($query);
1304
					$sth->execute();
1305
				} catch(PDOException $e) {
1306
					return "error : ".$e->getMessage().' - query : '.$query."\n";
1307
				}
1308
			}
1309
			$this->addLastStatsUpdate('last_update_stats',date('Y-m-d G:i:s'));
1310
		} else {
1311
		*/
1312
			echo 'Update stats !'."\n";
1313
			if (isset($last_update[0]['value'])) {
1314
				$last_update_day = $last_update[0]['value'];
1315
			} else $last_update_day = '2012-12-12 12:12:12';
1316
			$Spotter = new Spotter($this->db);
1317
			$alldata = $Spotter->countAllAircraftTypes(false,0,$last_update_day);
1318
			foreach ($alldata as $number) {
1319
				$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer']);
1320
			}
1321
			$alldata = $Spotter->countAllAirlines(false,0,$last_update_day);
1322
			foreach ($alldata as $number) {
1323
				$this->addStatAirline($number['airline_icao'],$number['airline_count'],$number['airline_name']);
1324
			}
1325
			$alldata = $Spotter->countAllAircraftRegistrations(false,0,$last_update_day);
1326
			foreach ($alldata as $number) {
1327
				$this->addStatAircraftRegistration($number['registration'],$number['aircraft_registration_count'],$number['aircraft_icao']);
1328
			}
1329
			$alldata = $Spotter->countAllCallsigns(false,0,$last_update_day);
1330
			foreach ($alldata as $number) {
1331
				$this->addStatCallsign($number['callsign_icao'],$number['callsign_icao_count'],$number['airline_icao']);
1332
			}
1333
			$alldata = $Spotter->countAllOwners(false,0,$last_update_day);
1334
			foreach ($alldata as $number) {
1335
				$this->addStatOwner($number['owner_name'],$number['owner_count']);
1336
			}
1337
			$alldata = $Spotter->countAllPilots(false,0,$last_update_day);
1338
			foreach ($alldata as $number) {
1339
				$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name']);
1340
			}
1341
			
1342
			$pall = $Spotter->countAllDepartureAirports(false,0,$last_update_day);
1343
        		$dall = $Spotter->countAllDetectedDepartureAirports(false,0,$last_update_day);
1344
	        	$alldata = array();
1345
	        	
1346
    			foreach ($pall as $value) {
1347
	        		$icao = $value['airport_departure_icao'];
1348
    				$alldata[$icao] = $value;
1349
	        	}
1350
	        	foreach ($dall as $value) {
1351
    				$icao = $value['airport_departure_icao'];
1352
        			if (isset($alldata[$icao])) {
1353
    					$alldata[$icao]['airport_departure_icao_count'] = $alldata[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
1354
        			} else $alldata[$icao] = $value;
1355
			}
1356
    			$count = array();
1357
    			foreach ($alldata as $key => $row) {
1358
    				$count[$key] = $row['airport_departure_icao_count'];
1359
        		}
1360
			array_multisort($count,SORT_DESC,$alldata);
1361
			foreach ($alldata as $number) {
1362
				echo $this->addStatDepartureAirports($number['airport_departure_icao'],$number['airport_departure_name'],$number['airport_departure_city'],$number['airport_departure_country'],$number['airport_departure_icao_count']);
1363
			}
1364
			$pall = $Spotter->countAllArrivalAirports(false,0,$last_update_day);
1365
        		$dall = $Spotter->countAllDetectedArrivalAirports(false,0,$last_update_day);
1366
	        	$alldata = array();
1367
    			foreach ($pall as $value) {
1368
	        		$icao = $value['airport_arrival_icao'];
1369
    				$alldata[$icao] = $value;
1370
	        	}
1371
	        	foreach ($dall as $value) {
1372
    				$icao = $value['airport_arrival_icao'];
1373
        			if (isset($alldata[$icao])) {
1374
        				$alldata[$icao]['airport_arrival_icao_count'] = $alldata[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
1375
	        		} else $alldata[$icao] = $value;
1376
    			}
1377
        		$count = array();
1378
        		foreach ($alldata as $key => $row) {
1379
        			$count[$key] = $row['airport_arrival_icao_count'];
1380
	        	}
1381
    			array_multisort($count,SORT_DESC,$alldata);
1382
                        foreach ($alldata as $number) {
1383
				echo $this->addStatArrivalAirports($number['airport_arrival_icao'],$number['airport_arrival_name'],$number['airport_arrival_city'],$number['airport_arrival_country'],$number['airport_arrival_icao_count']);
1384
			}
1385
			if ($Connection->tableExists('countries')) {
1386
				$SpotterArchive = new SpotterArchive();
1387
				$alldata = $SpotterArchive->countAllFlightOverCountries(false,0,$last_update_day);
1388
				foreach ($alldata as $number) {
1389
					$this->addStatCountry($number['flight_country_iso2'],$number['flight_country_iso3'],$number['flight_country'],$number['flight_count']);
1390
				}
1391
			}
1392
			
1393
1394
			// Add by month using getstat if month finish...
1395
1396
			//if (date('m',strtotime($last_update_day)) != date('m')) {
1397
			$Spotter = new Spotter($this->db);
1398
			$alldata = $Spotter->countAllMonths();
1399
			$lastyear = false;
0 ignored issues
show
Unused Code introduced by
$lastyear is not used, you could remove the assignment.

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

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

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

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

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

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

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

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

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

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