Completed
Push — master ( 9321a3...c66f20 )
by Yannick
05:39
created

Stats::addOldStats()   F

Complexity

Conditions 186
Paths 0

Size

Total Lines 918
Code Lines 499

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 186
eloc 499
nc 0
nop 0
dl 0
loc 918
rs 2
c 0
b 0
f 0

How to fix   Long Method    Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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