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

Stats::addStatArrivalAirportsDaily()   A

Complexity

Conditions 3
Paths 6

Size

Total Lines 15
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

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

How to fix   Many Parameters   

Many Parameters

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

There are several approaches to avoid long parameter lists:

1
<?php
2
/*
3
* This class save stats older than a year and $globalArchiveMonths
4
*/
5
6
require_once(dirname(__FILE__).'/class.Spotter.php');
7
require_once(dirname(__FILE__).'/class.SpotterArchive.php');
8
require_once(dirname(__FILE__).'/class.Common.php');
9
class Stats {
10
	public $db;
11
	public $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
?>