Completed
Push — master ( 55595d...553331 )
by Yannick
07:24
created

Stats::countFatalitiesLast12Months()   A

Complexity

Conditions 4
Paths 12

Size

Total Lines 21
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 16
nc 12
nop 0
dl 0
loc 21
rs 9.0534
c 0
b 0
f 0
1
<?php
2
/*
3
* This class save stats older than a year and $globalArchiveMonths
4
*/
5
6
require_once(dirname(__FILE__).'/class.Spotter.php');
7
require_once(dirname(__FILE__).'/class.Accident.php');
8
require_once(dirname(__FILE__).'/class.SpotterArchive.php');
9
require_once(dirname(__FILE__).'/class.Common.php');
10
class Stats {
11
	public $db;
12
	public $filter_name = '';
13
	
14
	public function __construct($dbc = null) {
15
		global $globalFilterName;
16
		if (isset($globalFilterName)) $this->filter_name = $globalFilterName;
17
		$Connection = new Connection($dbc);
18
		$this->db = $Connection->db();
19
        }
20
              
21
	public function addLastStatsUpdate($type,$stats_date) {
22
                $query = "DELETE FROM config WHERE name = :type;
23
            		INSERT INTO config (name,value) VALUES (:type,:stats_date);";
24
                $query_values = array('type' => $type,':stats_date' => $stats_date);
25
                 try {
26
                        $sth = $this->db->prepare($query);
27
                        $sth->execute($query_values);
28
                } catch(PDOException $e) {
29
                        return "error : ".$e->getMessage();
30
                }
31
        }
32
33
	public function getLastStatsUpdate($type = 'last_update_stats') {
34
                $query = "SELECT value FROM config WHERE name = :type";
35
                 try {
36
                        $sth = $this->db->prepare($query);
37
                        $sth->execute(array(':type' => $type));
38
                } catch(PDOException $e) {
39
                        echo "error : ".$e->getMessage();
40
                }
41
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
42
                return $all;
43
        }
44
        public function deleteStats($filter_name = '') {
45
        	/*
46
        	$query = "DELETE FROM config WHERE name = 'last_update_stats'";
47
                 try {
48
                        $sth = $this->db->prepare($query);
49
                        $sth->execute();
50
                } catch(PDOException $e) {
51
                        return "error : ".$e->getMessage();
52
                }
53
                */
54
        	$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;";
55
                 try {
56
                        $sth = $this->db->prepare($query);
57
                        $sth->execute(array(':filter_name' => $filter_name));
58
                } catch(PDOException $e) {
59
                        return "error : ".$e->getMessage();
60
                }
61
        }
62
        public function deleteOldStats($filter_name = '') {
63
        	if ($filter_name == '') {
64
        		$query = "DELETE FROM config WHERE name = 'last_update_stats'";
65
        	} else {
66
        		$query = "DELETE FROM config WHERE name = 'last_update_stats_".$filter_name."'";
67
        	}
68
                 try {
69
                        $sth = $this->db->prepare($query);
70
                        $sth->execute();
71
                } catch(PDOException $e) {
72
                        return "error : ".$e->getMessage();
73
                }
74
                
75
        	$query = "DELETE FROM stats_aircraft WHERE filter_name = :filter_name;DELETE FROM stats_airline 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_owner WHERE filter_name = :filter_name;DELETE FROM stats_pilot WHERE filter_name = :filter_name;DELETE FROM stats_registration WHERE filter_name = :filter_name;";
76
                 try {
77
                        $sth = $this->db->prepare($query);
78
                        $sth->execute(array(':filter_name' => $filter_name));
79
                } catch(PDOException $e) {
80
                        return "error : ".$e->getMessage();
81
                }
82
        }
83
	public function getAllAirlineNames($filter_name = '') {
84
		if ($filter_name == '') $filter_name = $this->filter_name;
85
                $query = "SELECT * FROM stats_airline WHERE filter_name = :filter_name ORDER BY airline_name ASC";
86
                 try {
87
                        $sth = $this->db->prepare($query);
88
                        $sth->execute(array(':filter_name' => $filter_name));
89
                } catch(PDOException $e) {
90
                        echo "error : ".$e->getMessage();
91
                }
92
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
93
                return $all;
94
        }
95
	public function getAllAircraftTypes($stats_airline = '',$filter_name = '') {
96
		if ($filter_name == '') $filter_name = $this->filter_name;
97
                $query = "SELECT * FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY aircraft_manufacturer ASC";
98
                 try {
99
                        $sth = $this->db->prepare($query);
100
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
101
                } catch(PDOException $e) {
102
                        echo "error : ".$e->getMessage();
103
                }
104
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
105
                return $all;
106
        }
107
	public function getAllManufacturers($stats_airline = '',$filter_name = '') {
108
		if ($filter_name == '') $filter_name = $this->filter_name;
109
                $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";
110
                 try {
111
                        $sth = $this->db->prepare($query);
112
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
113
                } catch(PDOException $e) {
114
                        echo "error : ".$e->getMessage();
115
                }
116
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
117
                return $all;
118
        }
119
	public function getAllAirportNames($stats_airline = '',$filter_name = '') {
120
		if ($filter_name == '') $filter_name = $this->filter_name;
121
                $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";
122
                 try {
123
                        $sth = $this->db->prepare($query);
124
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
125
                } catch(PDOException $e) {
126
                        echo "error : ".$e->getMessage();
127
                }
128
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
129
                return $all;
130
        }
131
132
	public function getAllOwnerNames($stats_airline = '',$filter_name = '') {
133
		if ($filter_name == '') $filter_name = $this->filter_name;
134
                $query = "SELECT owner_name FROM stats_owner WHERE stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY owner_name ASC";
135
                 try {
136
                        $sth = $this->db->prepare($query);
137
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
138
                } catch(PDOException $e) {
139
                        echo "error : ".$e->getMessage();
140
                }
141
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
142
                return $all;
143
        }
144
145
	public function getAllPilotNames($stats_airline = '',$filter_name = '') {
146
		if ($filter_name == '') $filter_name = $this->filter_name;
147
                $query = "SELECT pilot_id,pilot_name FROM stats_pilot WHERE stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY pilot_name ASC";
148
                 try {
149
                        $sth = $this->db->prepare($query);
150
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
151
                } catch(PDOException $e) {
152
                        echo "error : ".$e->getMessage();
153
                }
154
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
155
                return $all;
156
        }
157
158
159
	public function countAllAircraftTypes($limit = true, $stats_airline = '', $filter_name = '',$year = '', $month = '') {
160
		global $globalStatsFilters;
161
		if ($filter_name == '') $filter_name = $this->filter_name;
162
		if ($year == '' && $month == '') {
163
			if ($limit) $query = "SELECT aircraft_icao, cnt AS aircraft_icao_count, aircraft_name, aircraft_manufacturer 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";
164
			else $query = "SELECT aircraft_icao, cnt AS aircraft_icao_count, aircraft_name, aircraft_manufacturer 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";
165
			try {
166
				$sth = $this->db->prepare($query);
167
				$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
168
			} catch(PDOException $e) {
169
				echo "error : ".$e->getMessage();
170
			}
171
			$all = $sth->fetchAll(PDO::FETCH_ASSOC);
172
		} else $all = array();
173
                if (empty($all)) {
174
            	    $filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
175
            	    if ($filter_name != '') {
176
            		    $filters = array_merge($filters,$globalStatsFilters[$filter_name]);
177
            	    }
178
            	    $Spotter = new Spotter($this->db);
179
            	    //$all = $Spotter->countAllAircraftTypes($limit,0,'',$filters,$year,$month);
180
            	    $all = $Spotter->countAllAircraftTypes($limit,0,'',$filters);
181
                }
182
                return $all;
183
	}
184
	public function countAllAirlineCountries($limit = true,$filter_name = '',$year = '',$month = '') {
185
		global $globalStatsFilters;
186
		if ($filter_name == '') $filter_name = $this->filter_name;
187
		if ($year == '' && $month == '') {
188
			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";
189
			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";
190
			try {
191
				$sth = $this->db->prepare($query);
192
				$sth->execute(array(':filter_name' => $filter_name));
193
			} catch(PDOException $e) {
194
				echo "error : ".$e->getMessage();
195
			}
196
			$all = $sth->fetchAll(PDO::FETCH_ASSOC);
197
		} else $all = array();
198
                if (empty($all)) {
199
            		$Spotter = new Spotter($this->db);
200
            		$filters = array();
0 ignored issues
show
Unused Code introduced by
$filters 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...
201
            		$filters = array('year' => $year,'month' => $month);
202
            		if ($filter_name != '') {
203
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
204
			}
205
            		//$all = $Spotter->countAllAirlineCountries($limit,$filters,$year,$month);
206
            		$all = $Spotter->countAllAirlineCountries($limit,$filters);
207
                }
208
                return $all;
209
	}
210
	public function countAllAircraftManufacturers($limit = true,$stats_airline = '', $filter_name = '',$year = '', $month = '') {
211
		global $globalStatsFilters;
212
		if ($filter_name == '') $filter_name = $this->filter_name;
213
		if ($year == '' && $month == '') {
214
			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";
215
			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";
216
			try {
217
				$sth = $this->db->prepare($query);
218
				$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
219
			} catch(PDOException $e) {
220
				echo "error : ".$e->getMessage();
221
			}
222
			$all = $sth->fetchAll(PDO::FETCH_ASSOC);
223
		} else $all = array();
224
		if (empty($all)) {
225
			$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
226
			if ($filter_name != '') {
227
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
228
			}
229
			$Spotter = new Spotter($this->db);
230
			//$all = $Spotter->countAllAircraftManufacturers($filters,$year,$month);
231
			$all = $Spotter->countAllAircraftManufacturers($filters);
232
		}
233
		return $all;
234
	}
235
236
	public function countAllArrivalCountries($limit = true, $stats_airline = '', $filter_name = '',$year = '', $month = '') {
237
		global $globalStatsFilters;
238
		if ($filter_name == '') $filter_name = $this->filter_name;
239
		if ($year == '' && $month == '') {
240
			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";
241
			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";
242
			try {
243
				$sth = $this->db->prepare($query);
244
				$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
245
			} catch(PDOException $e) {
246
				echo "error : ".$e->getMessage();
247
			}
248
			$all = $sth->fetchAll(PDO::FETCH_ASSOC);
249
		} else $all = array();
250
                if (empty($all)) {
251
			$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
252
			if ($filter_name != '') {
253
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
254
			}
255
			$Spotter = new Spotter($this->db);
256
			//$all = $Spotter->countAllArrivalCountries($limit,$filters,$year,$month);
257
			$all = $Spotter->countAllArrivalCountries($limit,$filters);
258
                }
259
                return $all;
260
	}
261
	public function countAllDepartureCountries($limit = true, $stats_airline = '', $filter_name = '', $year = '', $month = '') {
262
		global $globalStatsFilters;
263
		if ($filter_name == '') $filter_name = $this->filter_name;
264
		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";
265
		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";
266
                 try {
267
                        $sth = $this->db->prepare($query);
268
                        $sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
269
                } catch(PDOException $e) {
270
                        echo "error : ".$e->getMessage();
271
                }
272
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
273
                if (empty($all)) {
274
			$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
275
			if ($filter_name != '') {
276
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
277
			}
278
			$Spotter = new Spotter($this->db);
279
			//$all = $Spotter->countAllDepartureCountries($filters,$year,$month);
280
			$all = $Spotter->countAllDepartureCountries($filters);
281
                }
282
                return $all;
283
	}
284
285
	public function countAllAirlines($limit = true,$filter_name = '',$year = '',$month = '') {
286
		global $globalStatsFilters, $globalVATSIM, $globalIVAO;
287
		if ($filter_name == '') $filter_name = $this->filter_name;
288
		if ($year == '' && $month == '') {
289
			if ($globalVATSIM) $forsource = 'vatsim';
290
			if ($globalIVAO) $forsource = 'ivao';
291
			if (isset($forsource)) {
292
				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 AND airlines.forsource = :forsource ORDER BY airline_count DESC LIMIT 10 OFFSET 0";
293
				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 AND airlines.forsource = :forsource ORDER BY airline_count DESC";
294
				$query_values = array(':filter_name' => $filter_name,':forsource' => $forsource);
295
			} else {
296
				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 AND airlines.forsource IS NULL ORDER BY airline_count DESC LIMIT 10 OFFSET 0";
297
				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 AND airlines.forsource IS NULL ORDER BY airline_count DESC";
298
				$query_values = array(':filter_name' => $filter_name);
299
			}
300
			try {
301
				$sth = $this->db->prepare($query);
302
				$sth->execute($query_values);
303
			} catch(PDOException $e) {
304
				echo "error : ".$e->getMessage();
305
			}
306
			$all = $sth->fetchAll(PDO::FETCH_ASSOC);
307
		} else $all = array();
308
                if (empty($all)) {
309
	                $Spotter = new Spotter($this->db);
310
            		$filters = array();
0 ignored issues
show
Unused Code introduced by
$filters 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...
311
			$filters = array('year' => $year,'month' => $month);
312
            		if ($filter_name != '') {
313
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
314
			}
315
			//$all = $Spotter->countAllAirlines($limit,0,'',$filters,$year,$month);
316
    		        $all = $Spotter->countAllAirlines($limit,0,'',$filters);
317
                }
318
                return $all;
319
	}
320
	public function countAllAircraftRegistrations($limit = true,$stats_airline = '',$filter_name = '',$year = '',$month = '') {
321
		global $globalStatsFilters;
322
		if ($filter_name == '') $filter_name = $this->filter_name;
323
		if ($year == '' && $month == '') {
324
			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";
325
			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";
326
			try {
327
				$sth = $this->db->prepare($query);
328
				$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
329
			} catch(PDOException $e) {
330
				echo "error : ".$e->getMessage();
331
			}
332
			$all = $sth->fetchAll(PDO::FETCH_ASSOC);
333
		} else $all = array();
334
                if (empty($all)) {
335
			$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
336
			if ($filter_name != '') {
337
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
338
			}
339
	                $Spotter = new Spotter($this->db);
340
    		        //$all = $Spotter->countAllAircraftRegistrations($limit,0,'',$filters,$year,$month);
341
    		        $all = $Spotter->countAllAircraftRegistrations($limit,0,'',$filters);
342
                }
343
                return $all;
344
	}
345
	public function countAllCallsigns($limit = true,$stats_airline = '',$filter_name = '',$year = '',$month = '') {
346
		global $globalStatsFilters;
347
		if ($filter_name == '') $filter_name = $this->filter_name;
348
		if ($year == '' && $month == '') {
349
			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";
350
			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";
351
			 try {
352
				$sth = $this->db->prepare($query);
353
				$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
354
			} catch(PDOException $e) {
355
				echo "error : ".$e->getMessage();
356
			}
357
			$all = $sth->fetchAll(PDO::FETCH_ASSOC);
358
		} else $all = array();
359
		if (empty($all)) {
360
			$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
361
			if ($filter_name != '') {
362
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
363
			}
364
			$Spotter = new Spotter($this->db);
365
			//$all = $Spotter->countAllCallsigns($limit,0,'',$filters,$year,$month);
366
			$all = $Spotter->countAllCallsigns($limit,0,'',$filters);
367
		}
368
		return $all;
369
	}
370
	public function countAllFlightOverCountries($limit = true, $stats_airline = '',$filter_name = '',$year = '',$month = '') {
371
		$Connection = new Connection();
372
		if ($filter_name == '') $filter_name = $this->filter_name;
373
		if ($Connection->tableExists('countries')) {
374
			if ($year == '' && $month == '') {
375
				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";
376
				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";
377
				 try {
378
					$sth = $this->db->prepare($query);
379
					$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
380
				} catch(PDOException $e) {
381
					echo "error : ".$e->getMessage();
382
				}
383
				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
384
                /*
385
                if (empty($all)) {
386
	                $Spotter = new Spotter($this->db);
387
    		        $all = $Spotter->countAllFlightOverCountries($limit);
388
                }
389
                */
390
				return $all;
391
			} else return array();
392
		} else {
393
			return array();
394
		}
395
	}
396
	public function countAllPilots($limit = true,$stats_airline = '',$filter_name = '', $year = '',$month = '') {
397
		global $globalStatsFilters;
398
		if ($filter_name == '') $filter_name = $this->filter_name;
399
		if ($year == '' && $month == '') {
400
			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";
401
			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";
402
			try {
403
				$sth = $this->db->prepare($query);
404
				$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
405
			} catch(PDOException $e) {
406
				echo "error : ".$e->getMessage();
407
			}
408
			$all = $sth->fetchAll(PDO::FETCH_ASSOC);
409
		} else $all = array();
410
		if (empty($all)) {
411
			$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
412
			if ($filter_name != '') {
413
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
414
			}
415
			$Spotter = new Spotter($this->db);
416
			//$all = $Spotter->countAllPilots($limit,0,'',$filters,$year,$month);
417
			$all = $Spotter->countAllPilots($limit,0,'',$filters);
418
		}
419
		return $all;
420
	}
421
422
	public function countAllOwners($limit = true,$stats_airline = '', $filter_name = '',$year = '',$month = '') {
423
		global $globalStatsFilters;
424
		if ($filter_name == '') $filter_name = $this->filter_name;
425
		if ($year == '' && $month == '') {
426
			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";
427
			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";
428
			try {
429
				$sth = $this->db->prepare($query);
430
				$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
431
			} catch(PDOException $e) {
432
				echo "error : ".$e->getMessage();
433
			}
434
			$all = $sth->fetchAll(PDO::FETCH_ASSOC);
435
		} else $all = array();
436
                if (empty($all)) {
437
			$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
438
			if ($filter_name != '') {
439
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
440
			}
441
            		$Spotter = new Spotter($this->db);
442
            		//$all = $Spotter->countAllOwners($limit,0,'',$filters,$year,$month);
443
            		$all = $Spotter->countAllOwners($limit,0,'',$filters);
444
                }
445
                return $all;
446
	}
447
	public function countAllDepartureAirports($limit = true,$stats_airline = '',$filter_name = '',$year = '',$month = '') {
448
		global $globalStatsFilters;
449
		if ($filter_name == '') $filter_name = $this->filter_name;
450
		if ($year == '' && $month == '') {
451
			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";
452
			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";
453
			try {
454
				$sth = $this->db->prepare($query);
455
				$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
456
			} catch(PDOException $e) {
457
				echo "error : ".$e->getMessage();
458
			}
459
			$all = $sth->fetchAll(PDO::FETCH_ASSOC);
460
		} else $all = array();
461
                if (empty($all)) {
462
			$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
463
            		if ($filter_name != '') {
464
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
465
			}
466
            		$Spotter = new Spotter($this->db);
467
//            		$pall = $Spotter->countAllDepartureAirports($limit,0,'',$filters,$year,$month);
468
  //      		$dall = $Spotter->countAllDetectedDepartureAirports($limit,0,'',$filters,$year,$month);
469
            		$pall = $Spotter->countAllDepartureAirports($limit,0,'',$filters);
470
        		$dall = $Spotter->countAllDetectedDepartureAirports($limit,0,'',$filters);
471
        		$all = array();
472
        		foreach ($pall as $value) {
473
        			$icao = $value['airport_departure_icao'];
474
        			$all[$icao] = $value;
475
        		}
476
        		
477
        		foreach ($dall as $value) {
478
        			$icao = $value['airport_departure_icao'];
479
        			if (isset($all[$icao])) {
480
        				$all[$icao]['airport_departure_icao_count'] = $all[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
481
        			} else $all[$icao] = $value;
482
        		}
483
        		$count = array();
484
        		foreach ($all as $key => $row) {
485
        			$count[$key] = $row['airport_departure_icao_count'];
486
        		}
487
        		array_multisort($count,SORT_DESC,$all);
488
                }
489
                return $all;
490
	}
491
	public function countAllArrivalAirports($limit = true,$stats_airline = '',$filter_name = '',$year = '',$month = '') {
492
		global $globalStatsFilters;
493
		if ($filter_name == '') $filter_name = $this->filter_name;
494
		if ($year == '' && $month == '') {
495
			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";
496
			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";
497
			try {
498
				$sth = $this->db->prepare($query);
499
				$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
500
			} catch(PDOException $e) {
501
				echo "error : ".$e->getMessage();
502
			}
503
			$all = $sth->fetchAll(PDO::FETCH_ASSOC);
504
		} else $all = array();
505
		if (empty($all)) {
506
			$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
507
			if ($filter_name != '') {
508
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
509
			}
510
			$Spotter = new Spotter($this->db);
511
//			$pall = $Spotter->countAllArrivalAirports($limit,0,'',false,$filters,$year,$month);
512
//			$dall = $Spotter->countAllDetectedArrivalAirports($limit,0,'',false,$filters,$year,$month);
513
			$pall = $Spotter->countAllArrivalAirports($limit,0,'',false,$filters);
514
			$dall = $Spotter->countAllDetectedArrivalAirports($limit,0,'',false,$filters);
515
        		$all = array();
516
        		foreach ($pall as $value) {
517
        			$icao = $value['airport_arrival_icao'];
518
        			$all[$icao] = $value;
519
        		}
520
        		
521
        		foreach ($dall as $value) {
522
        			$icao = $value['airport_arrival_icao'];
523
        			if (isset($all[$icao])) {
524
        				$all[$icao]['airport_arrival_icao_count'] = $all[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
525
        			} else $all[$icao] = $value;
526
        		}
527
        		$count = array();
528
        		foreach ($all as $key => $row) {
529
        			$count[$key] = $row['airport_arrival_icao_count'];
530
        		}
531
        		array_multisort($count,SORT_DESC,$all);
532
                }
533
 
534
                return $all;
535
	}
536
	public function countAllMonthsLastYear($limit = true,$stats_airline = '',$filter_name = '') {
537
		global $globalDBdriver, $globalStatsFilters;
538
		if ($filter_name == '') $filter_name = $this->filter_name;
539
		if ($globalDBdriver == 'mysql') {
540
			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";
541
			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";
542
		} else {
543
			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";
544
			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";
545
		}
546
		$query_data = array(':stats_airline' => $stats_airline,':filter_name' => $filter_name);
547
                 try {
548
                        $sth = $this->db->prepare($query);
549
                        $sth->execute($query_data);
550
                } catch(PDOException $e) {
551
                        echo "error : ".$e->getMessage();
552
                }
553
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
554
                if (empty($all)) {
555
			$filters = array('airlines' => array($stats_airline));
556
			if ($filter_name != '') {
557
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
558
			}
559
            		$Spotter = new Spotter($this->db);
560
            		$all = $Spotter->countAllMonthsLastYear($filters);
561
                }
562
                
563
                return $all;
564
	}
565
	
566
	public function countAllDatesLastMonth($stats_airline = '',$filter_name = '') {
567
		global $globalStatsFilters;
568
		if ($filter_name == '') $filter_name = $this->filter_name;
569
		$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";
570
		$query_data = array(':stats_airline' => $stats_airline,':filter_name' => $filter_name);
571
                 try {
572
                        $sth = $this->db->prepare($query);
573
                        $sth->execute($query_data);
574
                } catch(PDOException $e) {
575
                        echo "error : ".$e->getMessage();
576
                }
577
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
578
                if (empty($all)) {
579
			$filters = array('airlines' => array($stats_airline));
580
			if ($filter_name != '') {
581
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
582
			}
583
            		$Spotter = new Spotter($this->db);
584
            		$all = $Spotter->countAllDatesLastMonth($filters);
585
                }
586
                return $all;
587
	}
588
	public function countAllDatesLast7Days($stats_airline = '',$filter_name = '') {
589
		global $globalDBdriver, $globalStatsFilters;
590
		if ($filter_name == '') $filter_name = $this->filter_name;
591
		if ($globalDBdriver == 'mysql') {
592
			$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";
593
		} else {
594
			$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";
595
		}
596
		$query_data = array(':stats_airline' => $stats_airline,':filter_name' => $filter_name);
597
                 try {
598
                        $sth = $this->db->prepare($query);
599
                        $sth->execute($query_data);
600
                } catch(PDOException $e) {
601
                        echo "error : ".$e->getMessage();
602
                }
603
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
604
                if (empty($all)) {
605
			$filters = array('airlines' => array($stats_airline));
606
			if ($filter_name != '') {
607
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
608
			}
609
            		$Spotter = new Spotter($this->db);
610
            		$all = $Spotter->countAllDatesLast7Days($filters);
611
                }
612
                return $all;
613
	}
614
	public function countAllDates($stats_airline = '',$filter_name = '') {
615
		global $globalStatsFilters;
616
		if ($filter_name == '') $filter_name = $this->filter_name;
617
		$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";
618
		$query_data = array(':stats_airline' => $stats_airline,':filter_name' => $filter_name);
619
                 try {
620
                        $sth = $this->db->prepare($query);
621
                        $sth->execute($query_data);
622
                } catch(PDOException $e) {
623
                        echo "error : ".$e->getMessage();
624
                }
625
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
626
                if (empty($all)) {
627
			$filters = array('airlines' => array($stats_airline));
628
			if ($filter_name != '') {
629
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
630
			}
631
            		$Spotter = new Spotter($this->db);
632
            		$all = $Spotter->countAllDates($filters);
633
                }
634
                return $all;
635
	}
636
	public function countAllDatesByAirlines($filter_name = '') {
637
		global $globalStatsFilters;
638
		if ($filter_name == '') $filter_name = $this->filter_name;
639
		$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";
640
		$query_data = array('filter_name' => $filter_name);
641
                 try {
642
                        $sth = $this->db->prepare($query);
643
                        $sth->execute($query_data);
644
                } catch(PDOException $e) {
645
                        echo "error : ".$e->getMessage();
646
                }
647
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
648
                if (empty($all)) {
649
            		$filters = array();
650
            		if ($filter_name != '') {
651
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
652
			}
653
            		$Spotter = new Spotter($this->db);
654
            		$all = $Spotter->countAllDatesByAirlines($filters);
655
                }
656
                return $all;
657
	}
658
	public function countAllMonths($stats_airline = '',$filter_name = '') {
659
		global $globalStatsFilters, $globalDBdriver;
660
		if ($filter_name == '') $filter_name = $this->filter_name;
661
		if ($globalDBdriver == 'mysql') {
662
			$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";
663
		} else {
664
			$query = "SELECT EXTRACT(YEAR FROM stats_date) AS year_name,EXTRACT(MONTH FROM 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";
665
		}
666
                 try {
667
                        $sth = $this->db->prepare($query);
668
                        $sth->execute(array(':stats_airline' => $stats_airline, ':filter_name' => $filter_name));
669
                } catch(PDOException $e) {
670
                        echo "error : ".$e->getMessage();
671
                }
672
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
673
                
674
                if (empty($all)) {
675
			$filters = array('airlines' => array($stats_airline));
676
			if ($filter_name != '') {
677
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
678
			}
679
            		$Spotter = new Spotter($this->db);
680
            		$all = $Spotter->countAllMonths($filters);
681
                }
682
                
683
                return $all;
684
	}
685
	public function countFatalitiesLast12Months() {
686
		global $globalStatsFilters, $globalDBdriver;
687
		if ($globalDBdriver == 'mysql') {
688
			$query = "SELECT YEAR(stats_date) AS year, MONTH(stats_date) as month,cnt as count FROM stats WHERE stats_type = 'fatalities_bymonth' ORDER BY stats_date";
689
		} else {
690
			$query = "SELECT EXTRACT(YEAR FROM stats_date) AS year, EXTRACT(MONTH FROM stats_date) as month,cnt as count FROM stats WHERE stats_type = 'fatalities_bymonth' ORDER BY stats_date";
691
		}
692
                 try {
693
                        $sth = $this->db->prepare($query);
694
                        $sth->execute();
695
                } catch(PDOException $e) {
696
                        echo "error : ".$e->getMessage();
697
                }
698
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
699
                
700
                if (empty($all)) {
701
            		$Accident = new Spotter($this->db);
702
            		$all = $Accident->countFatalitiesLast12Months();
0 ignored issues
show
Bug introduced by
The method countFatalitiesLast12Months() does not seem to exist on object<Spotter>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
703
                }
704
                return $all;
705
	}
706
	public function countFatalitiesByYear() {
707
		global $globalStatsFilters, $globalDBdriver;
708
		if ($globalDBdriver == 'mysql') {
709
			$query = "SELECT YEAR(stats_date) AS year, cnt as count FROM stats WHERE stats_type = 'fatalities_byyear' ORDER BY stats_date";
710
		} else {
711
			$query = "SELECT EXTRACT(YEAR FROM stats_date) AS year, cnt as count FROM stats WHERE stats_type = 'fatalities_byyear' ORDER BY stats_date";
712
		}
713
                 try {
714
                        $sth = $this->db->prepare($query);
715
                        $sth->execute();
716
                } catch(PDOException $e) {
717
                        echo "error : ".$e->getMessage();
718
                }
719
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
720
                
721
                if (empty($all)) {
722
            		$Accident = new Spotter($this->db);
723
            		$all = $Accident->countFatalitiesByYear();
0 ignored issues
show
Bug introduced by
The method countFatalitiesByYear() does not seem to exist on object<Spotter>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
724
                }
725
                return $all;
726
	}
727
	public function countAllMilitaryMonths($filter_name = '') {
728
		global $globalStatsFilters;
729
		if ($filter_name == '') $filter_name = $this->filter_name;
730
	    	$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";
731
                 try {
732
                        $sth = $this->db->prepare($query);
733
                        $sth->execute(array(':filter_name' => $filter_name));
734
                } catch(PDOException $e) {
735
                        echo "error : ".$e->getMessage();
736
                }
737
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
738
                if (empty($all)) {
739
            		$filters = array();
740
            		if ($filter_name != '') {
741
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
742
			}
743
            		$Spotter = new Spotter($this->db);
744
            		$all = $Spotter->countAllMilitaryMonths($filters);
745
                }
746
                return $all;
747
	}
748
	public function countAllHours($orderby = 'hour',$limit = true,$stats_airline = '',$filter_name = '') {
749
		global $globalTimezone, $globalDBdriver, $globalStatsFilters;
750
		if ($filter_name == '') $filter_name = $this->filter_name;
751
		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";
752
		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";
753
		if ($orderby == 'hour') {
754
			/*
755
			if ($globalDBdriver == 'mysql') {
756
				$query .= " ORDER BY flight_date ASC";
757
			} else {
758
			*/
759
			$query .= " ORDER BY CAST(flight_date AS integer) ASC";
760
		}
761
		if ($orderby == 'count') $query .= " ORDER BY hour_count DESC";
762
                 try {
763
                        $sth = $this->db->prepare($query);
764
                        $sth->execute(array(':stats_airline' => $stats_airline, ':filter_name' => $filter_name));
765
                } catch(PDOException $e) {
766
                        echo "error : ".$e->getMessage();
767
                }
768
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
769
                if (empty($all)) {
770
			$filters = array('airlines' => array($stats_airline));
771
			if ($filter_name != '') {
772
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
773
			}
774
            		$Spotter = new Spotter($this->db);
775
            		$all = $Spotter->countAllHours($orderby,$filters);
776
                }
777
                return $all;
778
	}
779
	
780
	public function countOverallFlights($stats_airline = '', $filter_name = '',$year = '',$month = '') {
781
		global $globalStatsFilters;
782
		if ($filter_name == '') $filter_name = $this->filter_name;
783
		if ($year == '') $year = date('Y');
784
		$all = $this->getSumStats('flights_bymonth',$year,$stats_airline,$filter_name,$month);
785
		if (empty($all)) {
786
			$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
787
			if ($filter_name != '') {
788
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
789
			}
790
			$Spotter = new Spotter($this->db);
791
			//$all = $Spotter->countOverallFlights($filters,$year,$month);
792
			$all = $Spotter->countOverallFlights($filters);
793
		}
794
		return $all;
795
	}
796
	public function countOverallMilitaryFlights($filter_name = '',$year = '', $month = '') {
797
		global $globalStatsFilters;
798
		if ($filter_name == '') $filter_name = $this->filter_name;
799
		if ($year == '') $year = date('Y');
800
		$all = $this->getSumStats('military_flights_bymonth',$year,'',$filter_name,$month);
801
		if (empty($all)) {
802
		        $filters = array();
0 ignored issues
show
Unused Code introduced by
$filters 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...
803
			$filters = array('year' => $year,'month' => $month);
804
            		if ($filter_name != '') {
805
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
806
			}
807
			$Spotter = new Spotter($this->db);
808
			//$all = $Spotter->countOverallMilitaryFlights($filters,$year,$month);
809
			$all = $Spotter->countOverallMilitaryFlights($filters);
810
		}
811
		return $all;
812
	}
813
	public function countOverallArrival($stats_airline = '',$filter_name = '', $year = '', $month = '') {
814
		global $globalStatsFilters;
815
		if ($filter_name == '') $filter_name = $this->filter_name;
816
		if ($year == '') $year = date('Y');
817
		$all = $this->getSumStats('realarrivals_bymonth',$year,$stats_airline,$filter_name,$month);
818
		if (empty($all)) {
819
			$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
820
			if ($filter_name != '') {
821
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
822
			}
823
			$Spotter = new Spotter($this->db);
824
			//$all = $Spotter->countOverallArrival($filters,$year,$month);
825
			$all = $Spotter->countOverallArrival($filters);
826
		}
827
		return $all;
828
	}
829
	public function countOverallAircrafts($stats_airline = '',$filter_name = '',$year = '', $month = '') {
830
		global $globalStatsFilters;
831
		if ($filter_name == '') $filter_name = $this->filter_name;
832
		if ($year == '' && $month == '') {
833
			$query = "SELECT COUNT(*) AS nb FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name";
834
			try {
835
				$sth = $this->db->prepare($query);
836
				$sth->execute(array(':filter_name' => $filter_name,':stats_airline' => $stats_airline));
837
			} catch(PDOException $e) {
838
				echo "error : ".$e->getMessage();
839
			}
840
			$result = $sth->fetchAll(PDO::FETCH_ASSOC);
841
			$all = $result[0]['nb'];
842
		} else $all = $this->getSumStats('aircrafts_bymonth',$year,$stats_airline,$filter_name,$month);
843
		if (empty($all)) {
844
			$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
845
			if ($filter_name != '') {
846
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
847
			}
848
			$Spotter = new Spotter($this->db);
849
			//$all = $Spotter->countOverallAircrafts($filters,$year,$month);
850
			$all = $Spotter->countOverallAircrafts($filters);
851
		}
852
		return $all;
853
	}
854
	public function countOverallAirlines($filter_name = '',$year = '',$month = '') {
855
		global $globalStatsFilters;
856
		if ($filter_name == '') $filter_name = $this->filter_name;
857
		if ($year == '' && $month == '') {
858
			$query = "SELECT COUNT(*) AS nb_airline FROM stats_airline WHERE filter_name = :filter_name";
859
			try {
860
				$sth = $this->db->prepare($query);
861
				$sth->execute(array(':filter_name' => $filter_name));
862
			} catch(PDOException $e) {
863
				echo "error : ".$e->getMessage();
864
			}
865
			$result = $sth->fetchAll(PDO::FETCH_ASSOC);
866
			$all = $result[0]['nb_airline'];
867
		} else $all = $this->getSumStats('airlines_bymonth',$year,'',$filter_name,$month);
868
		if (empty($all)) {
869
            		$filters = array();
0 ignored issues
show
Unused Code introduced by
$filters 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...
870
			$filters = array('year' => $year,'month' => $month);
871
            		if ($filter_name != '') {
872
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
873
			}
874
			$Spotter = new Spotter($this->db);
875
			//$all = $Spotter->countOverallAirlines($filters,$year,$month);
876
			$all = $Spotter->countOverallAirlines($filters);
877
		}
878
		return $all;
879
	}
880
	public function countOverallOwners($stats_airline = '',$filter_name = '',$year = '', $month = '') {
881
		global $globalStatsFilters;
882
		if ($filter_name == '') $filter_name = $this->filter_name;
883
		if ($year == '' && $month == '') {
884
			$query = "SELECT count(*) as nb FROM stats_owner WHERE stats_airline = :stats_airline AND filter_name = :filter_name";
885
			$query_values = array(':stats_airline' => $stats_airline, ':filter_name' => $filter_name);
886
			try {
887
				$sth = $this->db->prepare($query);
888
				$sth->execute($query_values);
889
			} catch(PDOException $e) {
890
				echo "error : ".$e->getMessage();
891
			}
892
			$result = $sth->fetchAll(PDO::FETCH_ASSOC);
893
			$all = $result[0]['nb'];
894
		} else {
895
			$all = $this->getSumStats('owners_bymonth',$year,$stats_airline,$filter_name,$month);
896
		}
897
		if (empty($all)) {
898
			$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
899
			if ($filter_name != '') {
900
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
901
			}
902
			$Spotter = new Spotter($this->db);
903
			//$all = $Spotter->countOverallOwners($filters,$year,$month);
904
			$all = $Spotter->countOverallOwners($filters);
905
		}
906
		return $all;
907
	}
908
	public function countOverallPilots($stats_airline = '',$filter_name = '',$year = '',$month = '') {
909
		global $globalStatsFilters;
910
		if ($filter_name == '') $filter_name = $this->filter_name;
911
		//if ($year == '') $year = date('Y');
912
		if ($year == '' && $month == '') {
913
			$query = "SELECT count(*) as nb FROM stats_pilot WHERE stats_airline = :stats_airline AND filter_name = :filter_name";
914
			$query_values = array(':stats_airline' => $stats_airline, ':filter_name' => $filter_name);
915
			try {
916
				$sth = $this->db->prepare($query);
917
				$sth->execute($query_values);
918
			} catch(PDOException $e) {
919
				echo "error : ".$e->getMessage();
920
			}
921
			$result = $sth->fetchAll(PDO::FETCH_ASSOC);
922
			$all = $result[0]['nb'];
923
		} else {
924
			$all = $this->getSumStats('pilots_bymonth',$year,$stats_airline,$filter_name,$month);
925
		}
926
		if (empty($all)) {
927
			$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
928
			if ($filter_name != '') {
929
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
930
			}
931
			$Spotter = new Spotter($this->db);
932
			//$all = $Spotter->countOverallPilots($filters,$year,$month);
933
			$all = $Spotter->countOverallPilots($filters);
934
		}
935
		return $all;
936
	}
937
938
	public function getLast7DaysAirports($airport_icao = '', $stats_airline = '',$filter_name = '') {
939
		if ($filter_name == '') $filter_name = $this->filter_name;
940
		$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";
941
		$query_values = array(':airport_icao' => $airport_icao,':stats_airline' => $stats_airline, ':filter_name' => $filter_name);
942
                 try {
943
                        $sth = $this->db->prepare($query);
944
                        $sth->execute($query_values);
945
                } catch(PDOException $e) {
946
                        echo "error : ".$e->getMessage();
947
                }
948
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
949
                return $all;
950
	}
951
	public function getStats($type,$stats_airline = '', $filter_name = '') {
952
		if ($filter_name == '') $filter_name = $this->filter_name;
953
                $query = "SELECT * FROM stats WHERE stats_type = :type AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY stats_date";
954
                $query_values = array(':type' => $type,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
955
                 try {
956
                        $sth = $this->db->prepare($query);
957
                        $sth->execute($query_values);
958
                } catch(PDOException $e) {
959
                        echo "error : ".$e->getMessage();
960
                }
961
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
962
                return $all;
963
        }
964
	public function deleteStatsByType($type,$stats_airline = '', $filter_name = '') {
965
		if ($filter_name == '') $filter_name = $this->filter_name;
966
                $query = "DELETE FROM stats WHERE stats_type = :type AND stats_airline = :stats_airline AND filter_name = :filter_name";
967
                $query_values = array(':type' => $type,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
968
                 try {
969
                        $sth = $this->db->prepare($query);
970
                        $sth->execute($query_values);
971
                } catch(PDOException $e) {
972
                        echo "error : ".$e->getMessage();
973
                }
974
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
975
                return $all;
976
        }
977
	public function getSumStats($type,$year,$stats_airline = '',$filter_name = '',$month = '') {
978
		if ($filter_name == '') $filter_name = $this->filter_name;
979
    		global $globalArchiveMonths, $globalDBdriver;
980
    		if ($globalDBdriver == 'mysql') {
981
    			if ($month == '') {
982
				$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";
983
				$query_values = array(':type' => $type, ':year' => $year, ':stats_airline' => $stats_airline,':filter_name' => $filter_name);
984
			} else {
985
				$query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND YEAR(stats_date) = :year AND MONTH(stats_date) = :month AND stats_airline = :stats_airline AND filter_name = :filter_name";
986
				$query_values = array(':type' => $type, ':year' => $year, ':stats_airline' => $stats_airline,':filter_name' => $filter_name,':month' => $month);
987
			}
988
		} else {
989
			if ($month == '') {
990
				$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";
991
				$query_values = array(':type' => $type, ':year' => $year, ':stats_airline' => $stats_airline,':filter_name' => $filter_name);
992
			} else {
993
				$query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND EXTRACT(YEAR FROM stats_date) = :year AND EXTRACT(MONTH FROM stats_date) = :month AND stats_airline = :stats_airline AND filter_name = :filter_name";
994
				$query_values = array(':type' => $type, ':year' => $year, ':stats_airline' => $stats_airline,':filter_name' => $filter_name,':month' => $month);
995
			}
996
                }
997
                 try {
998
                        $sth = $this->db->prepare($query);
999
                        $sth->execute($query_values);
1000
                } catch(PDOException $e) {
1001
                        echo "error : ".$e->getMessage();
1002
                }
1003
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
1004
                return $all[0]['total'];
1005
        }
1006
	public function getStatsTotal($type, $stats_airline = '', $filter_name = '') {
1007
    		global $globalArchiveMonths, $globalDBdriver;
1008
		if ($filter_name == '') $filter_name = $this->filter_name;
1009
    		if ($globalDBdriver == 'mysql') {
1010
			$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";
1011
		} else {
1012
			$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";
1013
                }
1014
                $query_values = array(':type' => $type, ':stats_airline' => $stats_airline, ':filter_name' => $filter_name);
1015
                 try {
1016
                        $sth = $this->db->prepare($query);
1017
                        $sth->execute($query_values);
1018
                } catch(PDOException $e) {
1019
                        echo "error : ".$e->getMessage();
1020
                }
1021
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
1022
                return $all[0]['total'];
1023
        }
1024
	public function getStatsAircraftTotal($stats_airline = '', $filter_name = '') {
1025
    		global $globalArchiveMonths, $globalDBdriver;
1026
		if ($filter_name == '') $filter_name = $this->filter_name;
1027
    		if ($globalDBdriver == 'mysql') {
1028
			$query = "SELECT SUM(cnt) as total FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name";
1029
                } else {
1030
			$query = "SELECT SUM(cnt) as total FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name";
1031
                }
1032
                 try {
1033
                        $sth = $this->db->prepare($query);
1034
                        $sth->execute(array(':stats_airline' => $stats_airline, ':filter_name' => $filter_name));
1035
                } catch(PDOException $e) {
1036
                        echo "error : ".$e->getMessage();
1037
                }
1038
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
1039
                return $all[0]['total'];
1040
        }
1041
	public function getStatsAirlineTotal($filter_name = '') {
1042
    		global $globalArchiveMonths, $globalDBdriver;
1043
		if ($filter_name == '') $filter_name = $this->filter_name;
1044
    		if ($globalDBdriver == 'mysql') {
1045
			$query = "SELECT SUM(cnt) as total FROM stats_airline WHERE filter_name = :filter_name";
1046
                } else {
1047
			$query = "SELECT SUM(cnt) as total FROM stats_airline WHERE filter_name = :filter_name";
1048
                }
1049
                 try {
1050
                        $sth = $this->db->prepare($query);
1051
                        $sth->execute(array(':filter_name' => $filter_name));
1052
                } catch(PDOException $e) {
1053
                        echo "error : ".$e->getMessage();
1054
                }
1055
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
1056
                return $all[0]['total'];
1057
        }
1058
	public function getStatsOwnerTotal($filter_name = '') {
1059
    		global $globalArchiveMonths, $globalDBdriver;
1060
		if ($filter_name == '') $filter_name = $this->filter_name;
1061
    		if ($globalDBdriver == 'mysql') {
1062
			$query = "SELECT SUM(cnt) as total FROM stats_owner WHERE filter_name = :filter_name";
1063
		} else {
1064
			$query = "SELECT SUM(cnt) as total FROM stats_owner WHERE filter_name = :filter_name";
1065
                }
1066
                 try {
1067
                        $sth = $this->db->prepare($query);
1068
                        $sth->execute(array(':filter_name' => $filter_name));
1069
                } catch(PDOException $e) {
1070
                        echo "error : ".$e->getMessage();
1071
                }
1072
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
1073
                return $all[0]['total'];
1074
        }
1075
	public function getStatsOwner($owner_name,$filter_name = '') {
1076
    		global $globalArchiveMonths, $globalDBdriver;
1077
		if ($filter_name == '') $filter_name = $this->filter_name;
1078
		$query = "SELECT cnt FROM stats_owner WHERE filter_name = :filter_name AND owner_name = :owner_name";
1079
                 try {
1080
                        $sth = $this->db->prepare($query);
1081
                        $sth->execute(array(':filter_name' => $filter_name,':owner_name' => $owner_name));
1082
                } catch(PDOException $e) {
1083
                        echo "error : ".$e->getMessage();
1084
                }
1085
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
1086
                if (isset($all[0]['cnt'])) return $all[0]['cnt'];
1087
                else return 0;
1088
        }
1089
	public function getStatsPilotTotal($filter_name = '') {
1090
    		global $globalArchiveMonths, $globalDBdriver;
1091
		if ($filter_name == '') $filter_name = $this->filter_name;
1092
    		if ($globalDBdriver == 'mysql') {
1093
            		$query = "SELECT SUM(cnt) as total FROM stats_pilot WHERE filter_name = :filter_name";
1094
            	} else {
1095
            		$query = "SELECT SUM(cnt) as total FROM stats_pilot WHERE filter_name = :filter_name";
1096
            	}
1097
                 try {
1098
                        $sth = $this->db->prepare($query);
1099
                        $sth->execute(array(':filter_name' => $filter_name));
1100
                } catch(PDOException $e) {
1101
                        echo "error : ".$e->getMessage();
1102
                }
1103
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
1104
                return $all[0]['total'];
1105
        }
1106
	public function getStatsPilot($pilot,$filter_name = '') {
1107
    		global $globalArchiveMonths, $globalDBdriver;
1108
		if ($filter_name == '') $filter_name = $this->filter_name;
1109
		$query = "SELECT cnt FROM stats_pilot WHERE filter_name = :filter_name AND (pilot_name = :pilot OR pilot_id = :pilot)";
1110
                 try {
1111
                        $sth = $this->db->prepare($query);
1112
                        $sth->execute(array(':filter_name' => $filter_name,':pilot' => $pilot));
1113
                } catch(PDOException $e) {
1114
                        echo "error : ".$e->getMessage();
1115
                }
1116
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
1117
                if (isset($all[0]['cnt'])) return $all[0]['cnt'];
1118
                else return 0;
1119
        }
1120
1121
	public function addStat($type,$cnt,$stats_date,$stats_airline = '',$filter_name = '') {
1122
		global $globalDBdriver;
1123
		if ($filter_name == '') $filter_name = $this->filter_name;
1124
		if ($globalDBdriver == 'mysql') {
1125
			$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";
1126
                } else {
1127
			$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);"; 
1128
		}
1129
                $query_values = array(':type' => $type,':cnt' => $cnt,':stats_date' => $stats_date, ':stats_airline' => $stats_airline,':filter_name' => $filter_name);
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 updateStat($type,$cnt,$stats_date,$stats_airline = '',$filter_name = '') {
1138
		global $globalDBdriver;
1139
		if ($filter_name == '') $filter_name = $this->filter_name;
1140
		if ($globalDBdriver == 'mysql') {
1141
			$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";
1142
		} else {
1143
            		//$query = "INSERT INTO stats (stats_type,cnt,stats_date) VALUES (:type,:cnt,:stats_date) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt, stats_date = :date";
1144
			$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);"; 
1145
                }
1146
                $query_values = array(':type' => $type,':cnt' => $cnt,':stats_date' => $stats_date,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
1147
                 try {
1148
                        $sth = $this->db->prepare($query);
1149
                        $sth->execute($query_values);
1150
                } catch(PDOException $e) {
1151
                        return "error : ".$e->getMessage();
1152
                }
1153
        }
1154
        /*
1155
	public function getStatsSource($date,$stats_type = '') {
1156
		if ($stats_type == '') {
1157
			$query = "SELECT * FROM stats_source WHERE stats_date = :date ORDER BY source_name";
1158
			$query_values = array(':date' => $date);
1159
		} else {
1160
			$query = "SELECT * FROM stats_source WHERE stats_date = :date AND stats_type = :stats_type ORDER BY source_name";
1161
			$query_values = array(':date' => $date,':stats_type' => $stats_type);
1162
		}
1163
                 try {
1164
                        $sth = $this->db->prepare($query);
1165
                        $sth->execute($query_values);
1166
                } catch(PDOException $e) {
1167
                        echo "error : ".$e->getMessage();
1168
                }
1169
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
1170
                return $all;
1171
        }
1172
        */
1173
1174
	public function getStatsSource($stats_type,$year = '',$month = '',$day = '') {
1175
		global $globalDBdriver;
1176
		$query = "SELECT * FROM stats_source WHERE stats_type = :stats_type";
1177
		$query_values = array();
1178
		if ($globalDBdriver == 'mysql') {
1179
			if ($year != '') {
1180
				$query .= ' AND YEAR(stats_date) = :year';
1181
				$query_values = array_merge($query_values,array(':year' => $year));
1182
			}
1183
			if ($month != '') {
1184
				$query .= ' AND MONTH(stats_date) = :month';
1185
				$query_values = array_merge($query_values,array(':month' => $month));
1186
			}
1187
			if ($day != '') {
1188
				$query .= ' AND DAY(stats_date) = :day';
1189
				$query_values = array_merge($query_values,array(':day' => $day));
1190
			}
1191
		} else {
1192
			if ($year != '') {
1193
				$query .= ' AND EXTRACT(YEAR FROM stats_date) = :year';
1194
				$query_values = array_merge($query_values,array(':year' => $year));
1195
			}
1196
			if ($month != '') {
1197
				$query .= ' AND EXTRACT(MONTH FROM stats_date) = :month';
1198
				$query_values = array_merge($query_values,array(':month' => $month));
1199
			}
1200
			if ($day != '') {
1201
				$query .= ' AND EXTRACT(DAY FROM stats_date) = :day';
1202
				$query_values = array_merge($query_values,array(':day' => $day));
1203
			}
1204
		}
1205
		$query .= " ORDER BY source_name";
1206
		$query_values = array_merge($query_values,array(':stats_type' => $stats_type));
1207
		try {
1208
			$sth = $this->db->prepare($query);
1209
			$sth->execute($query_values);
1210
		} catch(PDOException $e) {
1211
			echo "error : ".$e->getMessage();
1212
		}
1213
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1214
		return $all;
1215
	}
1216
1217
	public function addStatSource($data,$source_name,$stats_type,$date) {
1218
		global $globalDBdriver;
1219
		if ($globalDBdriver == 'mysql') {
1220
			$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";
1221
		} else {
1222
			$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);"; 
1223
                }
1224
                $query_values = array(':data' => $data,':stats_date' => $date,':source_name' => $source_name,':stats_type' => $stats_type);
1225
                 try {
1226
                        $sth = $this->db->prepare($query);
1227
                        $sth->execute($query_values);
1228
                } catch(PDOException $e) {
1229
                        return "error : ".$e->getMessage();
1230
                }
1231
        }
1232
	public function addStatFlight($type,$date_name,$cnt,$stats_airline = '',$filter_name = '') {
1233
                $query = "INSERT INTO stats_flight (stats_type,flight_date,cnt,stats_airline,filter_name) VALUES (:type,:flight_date,:cnt,:stats_airline,:filter_name)";
1234
                $query_values = array(':type' => $type,':flight_date' => $date_name,':cnt' => $cnt, ':stats_airline' => $stats_airline,':filter_name' => $filter_name);
1235
                 try {
1236
                        $sth = $this->db->prepare($query);
1237
                        $sth->execute($query_values);
1238
                } catch(PDOException $e) {
1239
                        return "error : ".$e->getMessage();
1240
                }
1241
        }
1242
	public function addStatAircraftRegistration($registration,$cnt,$aircraft_icao = '',$airline_icao = '',$filter_name = '',$reset = false) {
1243
		global $globalDBdriver;
1244
		if ($globalDBdriver == 'mysql') {
1245
			if ($reset) {
1246
				$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";
1247
			} else {
1248
				$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";
1249
			}
1250
		} else {
1251
			if ($reset) {
1252
				$query = "UPDATE stats_registration SET 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);"; 
1253
			} else {
1254
				$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);"; 
1255
			}
1256
		}
1257
                $query_values = array(':aircraft_icao' => $aircraft_icao,':registration' => $registration,':cnt' => $cnt,':stats_airline' => $airline_icao, ':filter_name' => $filter_name);
1258
                 try {
1259
                        $sth = $this->db->prepare($query);
1260
                        $sth->execute($query_values);
1261
                } catch(PDOException $e) {
1262
                        return "error : ".$e->getMessage();
1263
                }
1264
        }
1265
	public function addStatCallsign($callsign_icao,$cnt,$airline_icao = '', $filter_name = '', $reset = false) {
1266
		global $globalDBdriver;
1267
		if ($globalDBdriver == 'mysql') {
1268
			if ($reset) {
1269
				$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";
1270
			} else {
1271
				$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";
1272
			}
1273
		} else {
1274
			if ($reset) {
1275
				$query = "UPDATE stats_callsign SET 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);"; 
1276
			} else {
1277
				$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);"; 
1278
			}
1279
		}
1280
                $query_values = array(':callsign_icao' => $callsign_icao,':airline_icao' => $airline_icao,':cnt' => $cnt, ':filter_name' => $filter_name);
1281
                 try {
1282
                        $sth = $this->db->prepare($query);
1283
                        $sth->execute($query_values);
1284
                } catch(PDOException $e) {
1285
                        return "error : ".$e->getMessage();
1286
                }
1287
        }
1288
	public function addStatCountry($iso2,$iso3,$name,$cnt,$airline_icao = '',$filter_name = '',$reset = false) {
1289
		global $globalDBdriver;
1290
		if ($globalDBdriver == 'mysql') {
1291
			if ($reset) {
1292
				$query = "INSERT INTO stats_country (iso2,iso3,name,cnt,stats_airline,filter_name) VALUES (:iso2,:iso3,:name,:cnt,:airline,:filter_name) ON DUPLICATE KEY UPDATE cnt = :cnt";
1293
			} else {
1294
				$query = "INSERT INTO stats_country (iso2,iso3,name,cnt,stats_airline,filter_name) VALUES (:iso2,:iso3,:name,:cnt,:airline,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt";
1295
			}
1296
		} else {
1297
			if ($reset) {
1298
				$query = "UPDATE stats_country SET cnt = :cnt WHERE iso2 = :iso2 AND filter_name = :filter_name AND stats_airline = :airline; INSERT INTO stats_country (iso2,iso3,name,cnt,stats_airline,filter_name) SELECT :iso2,:iso3,:name,:cnt,:airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_country WHERE iso2 = :iso2 AND filter_name = :filter_name AND stats_airline = :airline);"; 
1299
			} else {
1300
				$query = "UPDATE stats_country SET cnt = cnt+:cnt WHERE iso2 = :iso2 AND filter_name = :filter_name AND stats_airline = :airline; INSERT INTO stats_country (iso2,iso3,name,cnt,stats_airline,filter_name) SELECT :iso2,:iso3,:name,:cnt,:airline,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_country WHERE iso2 = :iso2 AND filter_name = :filter_name AND stats_airline = :airline);"; 
1301
			}
1302
		}
1303
                $query_values = array(':iso2' => $iso2,':iso3' => $iso3,':name' => $name,':cnt' => $cnt,':filter_name' => $filter_name,':airline' => $airline_icao);
1304
                 try {
1305
                        $sth = $this->db->prepare($query);
1306
                        $sth->execute($query_values);
1307
                } catch(PDOException $e) {
1308
                        return "error : ".$e->getMessage();
1309
                }
1310
        }
1311
	public function addStatAircraft($aircraft_icao,$cnt,$aircraft_name = '',$aircraft_manufacturer = '', $airline_icao = '', $filter_name = '', $reset = false) {
1312
		global $globalDBdriver;
1313
		if ($globalDBdriver == 'mysql') {
1314
			if ($reset) {
1315
				$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, aircraft_name = :aircraft_name, aircraft_manufacturer = :aircraft_manufacturer, stats_airline = :stats_airline";
1316
			} else {
1317
				$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";
1318
			}
1319
		} else {
1320
			if ($reset) {
1321
				$query = "UPDATE stats_aircraft SET 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);"; 
1322
			} else {
1323
				$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);"; 
1324
			}
1325
		}
1326
                $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);
1327
                 try {
1328
                        $sth = $this->db->prepare($query);
1329
                        $sth->execute($query_values);
1330
                } catch(PDOException $e) {
1331
                        return "error : ".$e->getMessage();
1332
                }
1333
        }
1334
	public function addStatAirline($airline_icao,$cnt,$airline_name = '',$filter_name = '', $reset = false) {
1335
		global $globalDBdriver;
1336
		if ($globalDBdriver == 'mysql') {
1337
			if ($reset) {
1338
				$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,airline_name = :airline_name";
1339
			} else {
1340
				$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";
1341
			}
1342
		} else {
1343
			if ($reset) {
1344
				$query = "UPDATE stats_airline SET 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);"; 
1345
			} else {
1346
				$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);"; 
1347
			}
1348
		}
1349
                $query_values = array(':airline_icao' => $airline_icao,':airline_name' => $airline_name,':cnt' => $cnt,':filter_name' => $filter_name);
1350
                 try {
1351
                        $sth = $this->db->prepare($query);
1352
                        $sth->execute($query_values);
1353
                } catch(PDOException $e) {
1354
                        return "error : ".$e->getMessage();
1355
                }
1356
        }
1357
	public function addStatOwner($owner_name,$cnt,$stats_airline = '', $filter_name = '', $reset = false) {
1358
		global $globalDBdriver;
1359
		if ($globalDBdriver == 'mysql') {
1360
			if ($reset) {
1361
				$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";
1362
			} else {
1363
				$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";
1364
			}
1365
		} else {
1366
			if ($reset) {
1367
				$query = "UPDATE stats_owner SET 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);"; 
1368
			} else {
1369
				$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);"; 
1370
			}
1371
		}
1372
                $query_values = array(':owner_name' => $owner_name,':cnt' => $cnt,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
1373
                 try {
1374
                        $sth = $this->db->prepare($query);
1375
                        $sth->execute($query_values);
1376
                } catch(PDOException $e) {
1377
                        return "error : ".$e->getMessage();
1378
                }
1379
        }
1380
	public function addStatPilot($pilot_id,$cnt,$pilot_name,$stats_airline = '',$filter_name = '',$format_source = '',$reset = false) {
1381
		global $globalDBdriver;
1382
		if ($globalDBdriver == 'mysql') {
1383
			if ($reset) {
1384
				$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, pilot_name = :pilot_name";
1385
			} else {
1386
				$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";
1387
			}
1388
		} else {
1389
			if ($reset) {
1390
				$query = "UPDATE stats_pilot SET 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);"; 
1391
			} else {
1392
				$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);"; 
1393
			}
1394
		}
1395
                $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);
1396
                 try {
1397
                        $sth = $this->db->prepare($query);
1398
                        $sth->execute($query_values);
1399
                } catch(PDOException $e) {
1400
                        return "error : ".$e->getMessage();
1401
                }
1402
        }
1403
	public function addStatDepartureAirports($airport_icao,$airport_name,$airport_city,$airport_country,$departure,$airline_icao = '',$filter_name = '',$reset = false) {
1404
		global $globalDBdriver;
1405
		if ($airport_icao != '') {
1406
			if ($globalDBdriver == 'mysql') {
1407
				if ($reset) {
1408
					$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";
1409
				} else {
1410
					$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";
1411
				}
1412
			} else {
1413
				if ($reset) {
1414
					$query = "UPDATE stats_airport SET 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);"; 
1415
				} else {
1416
					$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);"; 
1417
				}
1418
			}
1419
			$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);
1420
			try {
1421
				$sth = $this->db->prepare($query);
1422
				$sth->execute($query_values);
1423
			} catch(PDOException $e) {
1424
				return "error : ".$e->getMessage();
1425
			}
1426
                }
1427
        }
1428
	public function addStatDepartureAirportsDaily($date,$airport_icao,$airport_name,$airport_city,$airport_country,$departure,$airline_icao = '',$filter_name = '') {
1429
		global $globalDBdriver;
1430
		if ($airport_icao != '') {
1431
			if ($globalDBdriver == 'mysql') {
1432
				$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";
1433
			} else {
1434
				$query = "UPDATE stats_airport SET 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);"; 
1435
			}
1436
			$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);
1437
			 try {
1438
				$sth = $this->db->prepare($query);
1439
				$sth->execute($query_values);
1440
			} catch(PDOException $e) {
1441
				return "error : ".$e->getMessage();
1442
			}
1443
                }
1444
        }
1445
	public function addStatArrivalAirports($airport_icao,$airport_name,$airport_city,$airport_country,$arrival,$airline_icao = '',$filter_name = '',$reset = false) {
1446
		global $globalDBdriver;
1447
		if ($airport_icao != '') {
1448
			if ($globalDBdriver == 'mysql') {
1449
				if ($reset) {
1450
					$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";
1451
				} else {
1452
					$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";
1453
				}
1454
			} else {
1455
				if ($reset) {
1456
					$query = "UPDATE stats_airport SET 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);"; 
1457
				} else {
1458
					$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);"; 
1459
				}
1460
			}
1461
	                $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);
1462
			 try {
1463
                    		$sth = $this->db->prepare($query);
1464
	                        $sth->execute($query_values);
1465
    		        } catch(PDOException $e) {
1466
            		        return "error : ".$e->getMessage();
1467
	                }
1468
	        }
1469
        }
1470
	public function addStatArrivalAirportsDaily($date,$airport_icao,$airport_name,$airport_city,$airport_country,$arrival,$airline_icao = '',$filter_name = '') {
1471
		global $globalDBdriver;
1472
		if ($airport_icao != '') {
1473
			if ($globalDBdriver == 'mysql') {
1474
				$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";
1475
			} else {
1476
				$query = "UPDATE stats_airport SET 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);"; 
1477
			}
1478
			$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);
1479
			try {
1480
				$sth = $this->db->prepare($query);
1481
				$sth->execute($query_values);
1482
			} catch(PDOException $e) {
1483
				return "error : ".$e->getMessage();
1484
			}
1485
                }
1486
        }
1487
1488
	public function deleteStat($id) {
1489
                $query = "DELETE FROM stats WHERE stats_id = :id";
1490
                $query_values = array(':id' => $id);
1491
                 try {
1492
                        $sth = $this->db->prepare($query);
1493
                        $sth->execute($query_values);
1494
                } catch(PDOException $e) {
1495
                        return "error : ".$e->getMessage();
1496
                }
1497
        }
1498
	public function deleteStatFlight($type) {
1499
                $query = "DELETE FROM stats_flight WHERE stats_type = :type";
1500
                $query_values = array(':type' => $type);
1501
                 try {
1502
                        $sth = $this->db->prepare($query);
1503
                        $sth->execute($query_values);
1504
                } catch(PDOException $e) {
1505
                        return "error : ".$e->getMessage();
1506
                }
1507
        }
1508
	public function deleteStatAirport($type) {
1509
                $query = "DELETE FROM stats_airport WHERE stats_type = :type";
1510
                $query_values = array(':type' => $type);
1511
                 try {
1512
                        $sth = $this->db->prepare($query);
1513
                        $sth->execute($query_values);
1514
                } catch(PDOException $e) {
1515
                        return "error : ".$e->getMessage();
1516
                }
1517
        }
1518
        
1519
        public function addOldStats() {
1520
    		global $globalDebug, $globalArchiveMonths, $globalArchive, $globalArchiveYear, $globalDBdriver, $globalStatsFilters,$globalDeleteLastYearStats,$globalStatsReset,$globalStatsResetYear;
1521
    		$Common = new Common();
1522
    		$Connection = new Connection();
1523
    		date_default_timezone_set('UTC');
1524
    		$last_update = $this->getLastStatsUpdate('last_update_stats');
1525
			if ($globalDebug) echo 'Update stats !'."\n";
1526
			if (isset($last_update[0]['value'])) {
1527
				$last_update_day = $last_update[0]['value'];
1528
			} else $last_update_day = '2012-12-12 12:12:12';
1529
			$reset = false;
1530
			//if ($globalStatsResetYear && date('Y',strtotime($last_update_day)) != date('Y')) {
1531
			if ($globalStatsResetYear) {
1532
				$reset = true;
1533
				$last_update_day = date('Y').'-01-01 00:00:00';
1534
			}
1535
			$Spotter = new Spotter($this->db);
1536
1537
			if ($globalDebug) echo 'Count all aircraft types...'."\n";
1538
			$alldata = $Spotter->countAllAircraftTypes(false,0,$last_update_day);
1539
			foreach ($alldata as $number) {
1540
				$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer'],'','',$reset);
1541
			}
1542
			if ($globalDebug) echo 'Count all airlines...'."\n";
1543
			$alldata = $Spotter->countAllAirlines(false,0,$last_update_day);
1544
			foreach ($alldata as $number) {
1545
				$this->addStatAirline($number['airline_icao'],$number['airline_count'],$number['airline_name'],'',$reset);
1546
			}
1547
			if ($globalDebug) echo 'Count all registrations...'."\n";
1548
			$alldata = $Spotter->countAllAircraftRegistrations(false,0,$last_update_day);
1549
			foreach ($alldata as $number) {
1550
				$this->addStatAircraftRegistration($number['registration'],$number['aircraft_registration_count'],$number['aircraft_icao'],'','',$reset);
1551
			}
1552
			if ($globalDebug) echo 'Count all callsigns...'."\n";
1553
			$alldata = $Spotter->countAllCallsigns(false,0,$last_update_day);
1554
			foreach ($alldata as $number) {
1555
				$this->addStatCallsign($number['callsign_icao'],$number['callsign_icao_count'],$number['airline_icao'],'',$reset);
1556
			}
1557
			if ($globalDebug) echo 'Count all owners...'."\n";
1558
			$alldata = $Spotter->countAllOwners(false,0,$last_update_day);
1559
			foreach ($alldata as $number) {
1560
				$this->addStatOwner($number['owner_name'],$number['owner_count'],'','',$reset);
1561
			}
1562
			if ($globalDebug) echo 'Count all pilots...'."\n";
1563
			$alldata = $Spotter->countAllPilots(false,0,$last_update_day);
1564
			foreach ($alldata as $number) {
1565
				$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name'],'','',$number['format_source'],$reset);
1566
			}
1567
			
1568
			if ($globalDebug) echo 'Count all departure airports...'."\n";
1569
			$pall = $Spotter->countAllDepartureAirports(false,0,$last_update_day);
1570
			if ($globalDebug) echo 'Count all detected departure airports...'."\n";
1571
        		$dall = $Spotter->countAllDetectedDepartureAirports(false,0,$last_update_day);
1572
			if ($globalDebug) echo 'Order departure airports...'."\n";
1573
	        	$alldata = array();
1574
	        	
1575
    			foreach ($pall as $value) {
1576
	        		$icao = $value['airport_departure_icao'];
1577
    				$alldata[$icao] = $value;
1578
	        	}
1579
	        	foreach ($dall as $value) {
1580
    				$icao = $value['airport_departure_icao'];
1581
        			if (isset($alldata[$icao])) {
1582
    					$alldata[$icao]['airport_departure_icao_count'] = $alldata[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
1583
        			} else $alldata[$icao] = $value;
1584
			}
1585
    			$count = array();
1586
    			foreach ($alldata as $key => $row) {
1587
    				$count[$key] = $row['airport_departure_icao_count'];
1588
        		}
1589
			array_multisort($count,SORT_DESC,$alldata);
1590
			foreach ($alldata as $number) {
1591
				echo $this->addStatDepartureAirports($number['airport_departure_icao'],$number['airport_departure_name'],$number['airport_departure_city'],$number['airport_departure_country'],$number['airport_departure_icao_count'],'','',$reset);
1592
			}
1593
			if ($globalDebug) echo 'Count all arrival airports...'."\n";
1594
			$pall = $Spotter->countAllArrivalAirports(false,0,$last_update_day);
1595
			if ($globalDebug) echo 'Count all detected arrival airports...'."\n";
1596
        		$dall = $Spotter->countAllDetectedArrivalAirports(false,0,$last_update_day);
1597
			if ($globalDebug) echo 'Order arrival airports...'."\n";
1598
	        	$alldata = array();
1599
    			foreach ($pall as $value) {
1600
	        		$icao = $value['airport_arrival_icao'];
1601
    				$alldata[$icao] = $value;
1602
	        	}
1603
	        	foreach ($dall as $value) {
1604
    				$icao = $value['airport_arrival_icao'];
1605
        			if (isset($alldata[$icao])) {
1606
        				$alldata[$icao]['airport_arrival_icao_count'] = $alldata[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
1607
	        		} else $alldata[$icao] = $value;
1608
    			}
1609
        		$count = array();
1610
        		foreach ($alldata as $key => $row) {
1611
        			$count[$key] = $row['airport_arrival_icao_count'];
1612
	        	}
1613
    			array_multisort($count,SORT_DESC,$alldata);
1614
                        foreach ($alldata as $number) {
1615
				echo $this->addStatArrivalAirports($number['airport_arrival_icao'],$number['airport_arrival_name'],$number['airport_arrival_city'],$number['airport_arrival_country'],$number['airport_arrival_icao_count'],'','',$reset);
1616
			}
1617
			if ($Connection->tableExists('countries')) {
1618
				if ($globalDebug) echo 'Count all flights by countries...'."\n";
1619
				$SpotterArchive = new SpotterArchive();
1620
				$alldata = $SpotterArchive->countAllFlightOverCountries(false,0,$last_update_day);
1621
				foreach ($alldata as $number) {
1622
					$this->addStatCountry($number['flight_country_iso2'],$number['flight_country_iso3'],$number['flight_country'],$number['flight_count'],'','',$reset);
1623
				}
1624
			}
1625
			
1626
			if ($globalDebug) echo 'Count fatalities stats...'."\n";
1627
			$Accident = new Accident();
1628
			$this->deleteStatsByType('fatalities_byyear');
1629
			$alldata = $Accident->countFatalitiesByYear();
1630
			foreach ($alldata as $number) {
1631
				$this->addStat('fatalities_byyear',$number['count'],date('Y-m-d H:i:s',mktime(0,0,0,1,1,$number['year'])));
1632
			}
1633
			$this->deleteStatsByType('fatalities_bymonth');
1634
			$alldata = $Accident->countFatalitiesLast12Months();
1635
			foreach ($alldata as $number) {
1636
				$this->addStat('fatalities_bymonth',$number['count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month'],1,$number['year'])));
1637
			}
1638
1639
1640
			// Add by month using getstat if month finish...
1641
1642
			//if (date('m',strtotime($last_update_day)) != date('m')) {
1643
			if ($globalDebug) echo 'Count all flights by months...'."\n";
1644
			$Spotter = new Spotter($this->db);
1645
			$alldata = $Spotter->countAllMonths();
1646
			$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...
1647
			foreach ($alldata as $number) {
1648
				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...
1649
				$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'])));
1650
			}
1651
			if ($globalDebug) echo 'Count all military flights by months...'."\n";
1652
			$alldata = $Spotter->countAllMilitaryMonths();
1653
			foreach ($alldata as $number) {
1654
				$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'])));
1655
			}
1656
			if ($globalDebug) echo 'Count all owners by months...'."\n";
1657
			$alldata = $Spotter->countAllMonthsOwners();
1658
			foreach ($alldata as $number) {
1659
				$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'])));
1660
			}
1661
			if ($globalDebug) echo 'Count all pilots by months...'."\n";
1662
			$alldata = $Spotter->countAllMonthsPilots();
1663
			foreach ($alldata as $number) {
1664
				$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'])));
1665
			}
1666
			if ($globalDebug) echo 'Count all airlines by months...'."\n";
1667
			$alldata = $Spotter->countAllMonthsAirlines();
1668
			foreach ($alldata as $number) {
1669
				$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'])));
1670
			}
1671
			if ($globalDebug) echo 'Count all aircrafts by months...'."\n";
1672
			$alldata = $Spotter->countAllMonthsAircrafts();
1673
			foreach ($alldata as $number) {
1674
				$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'])));
1675
			}
1676
			if ($globalDebug) echo 'Count all real arrivals by months...'."\n";
1677
			$alldata = $Spotter->countAllMonthsRealArrivals();
1678
			foreach ($alldata as $number) {
1679
				$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'])));
1680
			}
1681
			if ($globalDebug) echo 'Airports data...'."\n";
1682
			if ($globalDebug) echo '...Departure'."\n";
1683
			$this->deleteStatAirport('daily');
1684
//			$pall = $Spotter->getLast7DaysAirportsDeparture();
1685
  //      		$dall = $Spotter->getLast7DaysDetectedAirportsDeparture();
1686
			$pall = $Spotter->getLast7DaysAirportsDeparture();
1687
        		$dall = $Spotter->getLast7DaysDetectedAirportsDeparture();
1688
        		/*
1689
	        	$alldata = array();
1690
    			foreach ($pall as $value) {
1691
	        		$icao = $value['departure_airport_icao'];
1692
    				$alldata[$icao] = $value;
1693
	        	}
1694
	        	foreach ($dall as $value) {
1695
    				$icao = $value['departure_airport_icao'];
1696
    				$ddate = $value['date'];
1697
        			if (isset($alldata[$icao])) {
1698
        				$alldata[$icao]['departure_airport_count'] = $alldata[$icao]['departure_airport_count'] + $value['departure_airport_count'];
1699
	        		} else $alldata[$icao] = $value;
1700
    			}
1701
        		$count = array();
1702
        		foreach ($alldata as $key => $row) {
1703
        			$count[$key] = $row['departure_airport_count'];
1704
	        	}
1705
    			array_multisort($count,SORT_DESC,$alldata);
1706
    			*/
1707
    			foreach ($dall as $value) {
1708
    				$icao = $value['departure_airport_icao'];
1709
    				$ddate = $value['date'];
1710
    				$find = false;
1711
    				foreach ($pall as $pvalue) {
1712
    					if ($pvalue['departure_airport_icao'] == $icao && $pvalue['date'] == $ddate) {
1713
    						$pvalue['departure_airport_count'] = $pvalue['departure_airport_count'] + $value['departure_airport_count'];
1714
    						$find = true;
1715
    						break;
1716
    					}
1717
    				}
1718
    				if ($find === false) {
1719
    					$pall[] = $value;
1720
    				}
1721
    			}
1722
    			$alldata = $pall;
1723
			foreach ($alldata as $number) {
1724
				$this->addStatDepartureAirportsDaily($number['date'],$number['departure_airport_icao'],$number['departure_airport_name'],$number['departure_airport_city'],$number['departure_airport_country'],$number['departure_airport_count']);
1725
			}
1726
			echo '...Arrival'."\n";
1727
			$pall = $Spotter->getLast7DaysAirportsArrival();
1728
        		$dall = $Spotter->getLast7DaysDetectedAirportsArrival();
1729
        		/*
1730
	        	$alldata = array();
1731
    			foreach ($pall as $value) {
1732
	        		$icao = $value['arrival_airport_icao'];
1733
    				$alldata[$icao] = $value;
1734
	        	}
1735
	        	foreach ($dall as $value) {
1736
    				$icao = $value['arrival_airport_icao'];
1737
        			if (isset($alldata[$icao])) {
1738
        				$alldata[$icao]['arrival_airport_icao_count'] = $alldata[$icao]['arrival_airport_count'] + $value['arrival_airport_count'];
1739
	        		} else $alldata[$icao] = $value;
1740
    			}
1741
        		$count = array();
1742
        		foreach ($alldata as $key => $row) {
1743
        			$count[$key] = $row['arrival_airport_count'];
1744
	        	}
1745
    			array_multisort($count,SORT_DESC,$alldata);
1746
    			*/
1747
1748
1749
    			foreach ($dall as $value) {
1750
    				$icao = $value['arrival_airport_icao'];
1751
    				$ddate = $value['date'];
1752
    				$find = false;
1753
    				foreach ($pall as $pvalue) {
1754
    					if ($pvalue['arrival_airport_icao'] == $icao && $pvalue['date'] == $ddate) {
1755
    						$pvalue['arrival_airport_count'] = $pvalue['arrival_airport_count'] + $value['arrival_airport_count'];
1756
    						$find = true;
1757
    						break;
1758
    					}
1759
    				}
1760
    				if ($find === false) {
1761
    					$pall[] = $value;
1762
    				}
1763
    			}
1764
    			$alldata = $pall;
1765
			foreach ($alldata as $number) {
1766
				$this->addStatArrivalAirportsDaily($number['date'],$number['arrival_airport_icao'],$number['arrival_airport_name'],$number['arrival_airport_city'],$number['arrival_airport_country'],$number['arrival_airport_count']);
1767
			}
1768
1769
			echo 'Flights data...'."\n";
1770
			$this->deleteStatFlight('month');
1771
			echo '-> countAllDatesLastMonth...'."\n";
1772
			$alldata = $Spotter->countAllDatesLastMonth();
1773
			foreach ($alldata as $number) {
1774
				$this->addStatFlight('month',$number['date_name'],$number['date_count']);
1775
			}
1776
			echo '-> countAllDates...'."\n";
1777
			$previousdata = $this->countAllDates();
1778
			$previousdatabyairlines = $this->countAllDatesByAirlines();
1779
			$this->deleteStatFlight('date');
1780
			$alldata = $Common->array_merge_noappend($previousdata,$Spotter->countAllDates());
1781
			$values = array();
1782
			foreach ($alldata as $cnt) {
1783
				$values[] = $cnt['date_count'];
1784
			}
1785
			array_multisort($values,SORT_DESC,$alldata);
1786
			array_splice($alldata,11);
1787
			foreach ($alldata as $number) {
1788
				$this->addStatFlight('date',$number['date_name'],$number['date_count']);
1789
			}
1790
			
1791
			$this->deleteStatFlight('hour');
1792
			echo '-> countAllHours...'."\n";
1793
			$alldata = $Spotter->countAllHours('hour');
1794
			foreach ($alldata as $number) {
1795
				$this->addStatFlight('hour',$number['hour_name'],$number['hour_count']);
1796
			}
1797
1798
1799
1800
			// Count by airlines
1801
			echo '--- Stats by airlines ---'."\n";
1802
			if ($Connection->tableExists('countries')) {
1803
				if ($globalDebug) echo 'Count all flights by countries by airlines...'."\n";
1804
				$SpotterArchive = new SpotterArchive();
1805
				$alldata = $SpotterArchive->countAllFlightOverCountriesByAirlines(false,0,$last_update_day);
1806
				foreach ($alldata as $number) {
1807
					$this->addStatCountry($number['flight_country_iso2'],$number['flight_country_iso3'],$number['flight_country'],$number['flight_count'],$number['airline_icao'],'',$reset);
1808
				}
1809
			}
1810
			if ($globalDebug) echo 'Count all aircraft types by airlines...'."\n";
1811
			$Spotter = new Spotter($this->db);
1812
			$alldata = $Spotter->countAllAircraftTypesByAirlines(false,0,$last_update_day);
1813
			foreach ($alldata as $number) {
1814
				$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer'],$number['airline_icao'],'',$reset);
1815
			}
1816
			if ($globalDebug) echo 'Count all aircraft registrations by airlines...'."\n";
1817
			$alldata = $Spotter->countAllAircraftRegistrationsByAirlines(false,0,$last_update_day);
1818
			foreach ($alldata as $number) {
1819
				$this->addStatAircraftRegistration($number['registration'],$number['aircraft_registration_count'],$number['aircraft_icao'],$number['airline_icao'],'',$reset);
1820
			}
1821
			if ($globalDebug) echo 'Count all callsigns by airlines...'."\n";
1822
			$alldata = $Spotter->countAllCallsignsByAirlines(false,0,$last_update_day);
1823
			foreach ($alldata as $number) {
1824
				$this->addStatCallsign($number['callsign_icao'],$number['callsign_icao_count'],$number['airline_icao'],'',$reset);
1825
			}
1826
			if ($globalDebug) echo 'Count all owners by airlines...'."\n";
1827
			$alldata = $Spotter->countAllOwnersByAirlines(false,0,$last_update_day);
1828
			foreach ($alldata as $number) {
1829
				$this->addStatOwner($number['owner_name'],$number['owner_count'],$number['airline_icao'],'',$reset);
1830
			}
1831
			if ($globalDebug) echo 'Count all pilots by airlines...'."\n";
1832
			$alldata = $Spotter->countAllPilotsByAirlines(false,0,$last_update_day);
1833
			foreach ($alldata as $number) {
1834
				$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name'],$number['airline_icao'],'',$number['format_source'],$reset);
1835
			}
1836
			if ($globalDebug) echo 'Count all departure airports by airlines...'."\n";
1837
			$pall = $Spotter->countAllDepartureAirportsByAirlines(false,0,$last_update_day);
1838
			if ($globalDebug) echo 'Count all detected departure airports by airlines...'."\n";
1839
       			$dall = $Spotter->countAllDetectedDepartureAirportsByAirlines(false,0,$last_update_day);
1840
			if ($globalDebug) echo 'Order detected departure airports by airlines...'."\n";
1841
	        	//$alldata = array();
1842
    			foreach ($dall as $value) {
1843
    				$icao = $value['airport_departure_icao'];
1844
    				$dicao = $value['airline_icao'];
1845
    				$find = false;
1846
    				foreach ($pall as $pvalue) {
1847
    					if ($pvalue['airport_departure_icao'] == $icao && $pvalue['airline_icao'] = $dicao) {
1848
    						$pvalue['airport_departure_icao_count'] = $pvalue['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
1849
    						$find = true;
1850
    						break;
1851
    					}
1852
    				}
1853
    				if ($find === false) {
1854
    					$pall[] = $value;
1855
    				}
1856
    			}
1857
    			$alldata = $pall;
1858
			foreach ($alldata as $number) {
1859
				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'],'',$reset);
1860
			}
1861
			if ($globalDebug) echo 'Count all arrival airports by airlines...'."\n";
1862
			$pall = $Spotter->countAllArrivalAirportsByAirlines(false,0,$last_update_day);
1863
			if ($globalDebug) echo 'Count all detected arrival airports by airlines...'."\n";
1864
        		$dall = $Spotter->countAllDetectedArrivalAirportsByAirlines(false,0,$last_update_day);
1865
			if ($globalDebug) echo 'Order arrival airports by airlines...'."\n";
1866
	        	//$alldata = array();
1867
    			foreach ($dall as $value) {
1868
    				$icao = $value['airport_arrival_icao'];
1869
    				$dicao = $value['airline_icao'];
1870
    				$find = false;
1871
    				foreach ($pall as $pvalue) {
1872
    					if ($pvalue['airport_arrival_icao'] == $icao && $pvalue['airline_icao'] = $dicao) {
1873
    						$pvalue['airport_arrival_icao_count'] = $pvalue['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
1874
    						$find = true;
1875
    						break;
1876
    					}
1877
    				}
1878
    				if ($find === false) {
1879
    					$pall[] = $value;
1880
    				}
1881
    			}
1882
    			$alldata = $pall;
1883
                        foreach ($alldata as $number) {
1884
				if ($number['airline_icao'] != '') 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'],'',$reset);
1885
			}
1886
			if ($globalDebug) echo 'Count all flights by months by airlines...'."\n";
1887
			$Spotter = new Spotter($this->db);
1888
			$alldata = $Spotter->countAllMonthsByAirlines();
1889
			$lastyear = false;
1890
			foreach ($alldata as $number) {
1891
				if ($number['year_name'] != date('Y')) $lastyear = true;
1892
				$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']);
1893
			}
1894
			if ($globalDebug) echo 'Count all owners by months by airlines...'."\n";
1895
			$alldata = $Spotter->countAllMonthsOwnersByAirlines();
1896
			foreach ($alldata as $number) {
1897
				$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']);
1898
			}
1899
			if ($globalDebug) echo 'Count all pilots by months by airlines...'."\n";
1900
			$alldata = $Spotter->countAllMonthsPilotsByAirlines();
1901
			foreach ($alldata as $number) {
1902
				$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']);
1903
			}
1904
			if ($globalDebug) echo 'Count all aircrafts by months by airlines...'."\n";
1905
			$alldata = $Spotter->countAllMonthsAircraftsByAirlines();
1906
			foreach ($alldata as $number) {
1907
				$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']);
1908
			}
1909
			if ($globalDebug) echo 'Count all real arrivals by months by airlines...'."\n";
1910
			$alldata = $Spotter->countAllMonthsRealArrivalsByAirlines();
1911
			foreach ($alldata as $number) {
1912
				$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']);
1913
			}
1914
			if ($globalDebug) echo '...Departure'."\n";
1915
			$pall = $Spotter->getLast7DaysAirportsDepartureByAirlines();
1916
        		$dall = $Spotter->getLast7DaysDetectedAirportsDepartureByAirlines();
1917
    			foreach ($dall as $value) {
1918
    				$icao = $value['departure_airport_icao'];
1919
    				$airline = $value['airline_icao'];
1920
    				$ddate = $value['date'];
1921
    				$find = false;
1922
    				foreach ($pall as $pvalue) {
1923
    					if ($pvalue['departure_airport_icao'] == $icao && $pvalue['date'] == $ddate && $pvalue['airline_icao'] = $airline) {
1924
    						$pvalue['departure_airport_count'] = $pvalue['departure_airport_count'] + $value['departure_airport_count'];
1925
    						$find = true;
1926
    						break;
1927
    					}
1928
    				}
1929
    				if ($find === false) {
1930
    					$pall[] = $value;
1931
    				}
1932
    			}
1933
    			$alldata = $pall;
1934
			foreach ($alldata as $number) {
1935
				$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']);
1936
			}
1937
			if ($globalDebug) echo '...Arrival'."\n";
1938
			$pall = $Spotter->getLast7DaysAirportsArrivalByAirlines();
1939
        		$dall = $Spotter->getLast7DaysDetectedAirportsArrivalByAirlines();
1940
    			foreach ($dall as $value) {
1941
    				$icao = $value['arrival_airport_icao'];
1942
    				$airline = $value['airline_icao'];
1943
    				$ddate = $value['date'];
1944
    				$find = false;
1945
    				foreach ($pall as $pvalue) {
1946
    					if ($pvalue['arrival_airport_icao'] == $icao && $pvalue['date'] == $ddate && $pvalue['airline_icao'] == $airline) {
1947
    						$pvalue['arrival_airport_count'] = $pvalue['arrival_airport_count'] + $value['arrival_airport_count'];
1948
    						$find = true;
1949
    						break;
1950
    					}
1951
    				}
1952
    				if ($find === false) {
1953
    					$pall[] = $value;
1954
    				}
1955
    			}
1956
    			$alldata = $pall;
1957
			foreach ($alldata as $number) {
1958
				$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']);
1959
			}
1960
1961
			if ($globalDebug) echo 'Flights data...'."\n";
1962
			if ($globalDebug) echo '-> countAllDatesLastMonth...'."\n";
1963
			$alldata = $Spotter->countAllDatesLastMonthByAirlines();
1964
			foreach ($alldata as $number) {
1965
				$this->addStatFlight('month',$number['date_name'],$number['date_count'], $number['airline_icao']);
1966
			}
1967
			if ($globalDebug) echo '-> countAllDates...'."\n";
1968
			//$previousdata = $this->countAllDatesByAirlines();
1969
			$alldata = $Common->array_merge_noappend($previousdatabyairlines,$Spotter->countAllDatesByAirlines());
1970
			$values = array();
1971
			foreach ($alldata as $cnt) {
1972
				$values[] = $cnt['date_count'];
1973
			}
1974
			array_multisort($values,SORT_DESC,$alldata);
1975
			array_splice($alldata,11);
1976
			foreach ($alldata as $number) {
1977
				$this->addStatFlight('date',$number['date_name'],$number['date_count'],$number['airline_icao']);
1978
			}
1979
			
1980
			if ($globalDebug) echo '-> countAllHours...'."\n";
1981
			$alldata = $Spotter->countAllHoursByAirlines('hour');
1982
			foreach ($alldata as $number) {
1983
				$this->addStatFlight('hour',$number['hour_name'],$number['hour_count'],$number['airline_icao']);
1984
			}
1985
			
1986
1987
			// Stats by filters
1988
			if (!isset($globalStatsFilters) || $globalStatsFilters == '') $globalStatsFilters = array();
1989
			foreach ($globalStatsFilters as $name => $filter) {
1990
				//$filter_name = $filter['name'];
1991
				$filter_name = $name;
1992
				$reset = false;
1993
				$last_update = $this->getLastStatsUpdate('last_update_stats_'.$filter_name);
1994
				if (isset($filter['resetall']) && isset($last_update[0]['value']) && strtotime($filter['resetall']) > strtotime($last_update[0]['value'])) {
1995
					if ($globalDebug) echo '!!! Delete stats for filter '.$filter_name.' !!!'."\n";
1996
					$this->deleteOldStats($filter_name);
1997
					unset($last_update);
1998
				}
1999
				if (isset($last_update[0]['value'])) {
2000
					$last_update_day = $last_update[0]['value'];
2001
				} else {
2002
					$last_update_day = '2012-12-12 12:12:12';
2003
					if (isset($filter['DeleteLastYearStats'])) {
2004
						$last_update_day = date('Y').'-01-01 00:00:00';
2005
					}
2006
				}
2007
				if (isset($filter['DeleteLastYearStats']) && date('Y',strtotime($last_update_day)) != date('Y')) {
2008
					$last_update_day = date('Y').'-01-01 00:00:00';
2009
					$reset = true;
2010
				}
2011
				
2012
2013
				// Count by filter
2014
				if ($globalDebug) echo '--- Stats for filter '.$filter_name.' ---'."\n";
2015
				$Spotter = new Spotter($this->db);
2016
				$alldata = $Spotter->countAllAircraftTypes(false,0,$last_update_day,$filter);
2017
				foreach ($alldata as $number) {
2018
					$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer'],'',$filter_name,$reset);
2019
				}
2020
				$alldata = $Spotter->countAllAirlines(false,0,$last_update_day,$filter);
2021
				foreach ($alldata as $number) {
2022
					$this->addStatAirline($number['airline_icao'],$number['airline_count'],$number['airline_name'],$filter_name,$reset);
2023
				}
2024
				$alldata = $Spotter->countAllAircraftRegistrations(false,0,$last_update_day,$filter);
2025
				foreach ($alldata as $number) {
2026
					$this->addStatAircraftRegistration($number['registration'],$number['aircraft_registration_count'],$number['aircraft_icao'],'',$filter_name,$reset);
2027
				}
2028
				$alldata = $Spotter->countAllCallsigns(false,0,$last_update_day,$filter);
2029
				foreach ($alldata as $number) {
2030
					$this->addStatCallsign($number['callsign_icao'],$number['callsign_icao_count'],'',$filter_name,$reset);
2031
				}
2032
				$alldata = $Spotter->countAllOwners(false,0,$last_update_day,$filter);
2033
				foreach ($alldata as $number) {
2034
					$this->addStatOwner($number['owner_name'],$number['owner_count'],'',$filter_name,$reset);
2035
				}
2036
				$alldata = $Spotter->countAllPilots(false,0,$last_update_day,$filter);
2037
				foreach ($alldata as $number) {
2038
					$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name'],'',$filter_name,$number['format_source'],$reset);
2039
				}
2040
				$pall = $Spotter->countAllDepartureAirports(false,0,$last_update_day,$filter);
2041
	       			$dall = $Spotter->countAllDetectedDepartureAirports(false,0,$last_update_day,$filter);
2042
		        	$alldata = array();
2043
	    			foreach ($pall as $value) {
2044
		        		$icao = $value['airport_departure_icao'];
2045
    					$alldata[$icao] = $value;
2046
	    			}
2047
		        	foreach ($dall as $value) {
2048
	    				$icao = $value['airport_departure_icao'];
2049
        				if (isset($alldata[$icao])) {
2050
    						$alldata[$icao]['airport_departure_icao_count'] = $alldata[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
2051
        				} else $alldata[$icao] = $value;
2052
				}
2053
	    			$count = array();
2054
    				foreach ($alldata as $key => $row) {
2055
    					$count[$key] = $row['airport_departure_icao_count'];
2056
    				}
2057
				array_multisort($count,SORT_DESC,$alldata);
2058
				foreach ($alldata as $number) {
2059
    					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,$reset);
2060
				}
2061
				$pall = $Spotter->countAllArrivalAirports(false,0,$last_update_day,false,$filter);
2062
    				$dall = $Spotter->countAllDetectedArrivalAirports(false,0,$last_update_day,false,$filter);
2063
				$alldata = array();
2064
    				foreach ($pall as $value) {
2065
		        		$icao = $value['airport_arrival_icao'];
2066
    					$alldata[$icao] = $value;
2067
	    			}
2068
		        	foreach ($dall as $value) {
2069
	    				$icao = $value['airport_arrival_icao'];
2070
        				if (isset($alldata[$icao])) {
2071
        					$alldata[$icao]['airport_arrival_icao_count'] = $alldata[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
2072
		        		} else $alldata[$icao] = $value;
2073
	    			}
2074
        			$count = array();
2075
        			foreach ($alldata as $key => $row) {
2076
    					$count[$key] = $row['airport_arrival_icao_count'];
2077
		        	}
2078
        			array_multisort($count,SORT_DESC,$alldata);
2079
				foreach ($alldata as $number) {
2080
					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,$reset);
2081
				}
2082
				$Spotter = new Spotter($this->db);
2083
				$alldata = $Spotter->countAllMonths($filter);
2084
				$lastyear = false;
2085
				foreach ($alldata as $number) {
2086
					if ($number['year_name'] != date('Y')) $lastyear = true;
2087
					$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);
2088
				}
2089
				$alldata = $Spotter->countAllMonthsOwners($filter);
2090
				foreach ($alldata as $number) {
2091
					$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);
2092
				}
2093
				$alldata = $Spotter->countAllMonthsPilots($filter);
2094
				foreach ($alldata as $number) {
2095
					$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);
2096
				}
2097
				$alldata = $Spotter->countAllMilitaryMonths($filter);
2098
				foreach ($alldata as $number) {
2099
					$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'])),'',$filter_name);
2100
				}
2101
				$alldata = $Spotter->countAllMonthsAircrafts($filter);
2102
				foreach ($alldata as $number) {
2103
					$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);
2104
				}
2105
				$alldata = $Spotter->countAllMonthsRealArrivals($filter);
2106
				foreach ($alldata as $number) {
2107
					$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);
2108
				}
2109
				echo '...Departure'."\n";
2110
				$pall = $Spotter->getLast7DaysAirportsDeparture('',$filter);
2111
        			$dall = $Spotter->getLast7DaysDetectedAirportsDeparture('',$filter);
2112
				foreach ($dall as $value) {
2113
    					$icao = $value['departure_airport_icao'];
2114
    					$ddate = $value['date'];
2115
    					$find = false;
2116
    					foreach ($pall as $pvalue) {
2117
    						if ($pvalue['departure_airport_icao'] == $icao && $pvalue['date'] == $ddate) {
2118
    							$pvalue['departure_airport_count'] = $pvalue['departure_airport_count'] + $value['departure_airport_count'];
2119
	    						$find = true;
2120
    							break;
2121
    						}
2122
    					}
2123
    					if ($find === false) {
2124
    						$pall[] = $value;
2125
	    				}
2126
    				}
2127
	    			$alldata = $pall;
2128
				foreach ($alldata as $number) {
2129
					$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);
2130
				}
2131
				echo '...Arrival'."\n";
2132
				$pall = $Spotter->getLast7DaysAirportsArrival('',$filter);
2133
    				$dall = $Spotter->getLast7DaysDetectedAirportsArrival('',$filter);
2134
				foreach ($dall as $value) {
2135
					$icao = $value['arrival_airport_icao'];
2136
					$ddate = $value['date'];
2137
    					$find = false;
2138
					foreach ($pall as $pvalue) {
2139
    						if ($pvalue['arrival_airport_icao'] == $icao && $pvalue['date'] == $ddate) {
2140
    							$pvalue['arrival_airport_count'] = $pvalue['arrival_airport_count'] + $value['arrival_airport_count'];
2141
    							$find = true;
2142
    							break;
2143
	    					}
2144
    					}
2145
    					if ($find === false) {
2146
    						$pall[] = $value;
2147
	    				}
2148
    				}
2149
    				$alldata = $pall;
2150
				foreach ($alldata as $number) {
2151
					$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);
2152
				}
2153
    
2154
				echo 'Flights data...'."\n";
2155
				echo '-> countAllDatesLastMonth...'."\n";
2156
				$alldata = $Spotter->countAllDatesLastMonth($filter);
2157
				foreach ($alldata as $number) {
2158
					$this->addStatFlight('month',$number['date_name'],$number['date_count'], '',$filter_name);
2159
				}
2160
				echo '-> countAllDates...'."\n";
2161
				$previousdata = $this->countAllDates('',$filter_name);
2162
				$alldata = $Common->array_merge_noappend($previousdata,$Spotter->countAllDates($filter));
2163
				$values = array();
2164
				foreach ($alldata as $cnt) {
2165
					$values[] = $cnt['date_count'];
2166
				}
2167
				array_multisort($values,SORT_DESC,$alldata);
2168
				array_splice($alldata,11);
2169
				foreach ($alldata as $number) {
2170
					$this->addStatFlight('date',$number['date_name'],$number['date_count'],'',$filter_name);
2171
				}
2172
				
2173
				echo '-> countAllHours...'."\n";
2174
				$alldata = $Spotter->countAllHours('hour',$filter);
2175
				foreach ($alldata as $number) {
2176
					$this->addStatFlight('hour',$number['hour_name'],$number['hour_count'],'',$filter_name);
2177
				}
2178
				echo 'Insert last stats update date...'."\n";
2179
				date_default_timezone_set('UTC');
2180
				$this->addLastStatsUpdate('last_update_stats_'.$filter_name,date('Y-m-d G:i:s'));
2181
				if (isset($filter['DeleteLastYearStats']) && $filter['DeleteLastYearStats'] == true) {
2182
					if (date('Y',strtotime($last_update_day)) != date('Y')) {
2183
						$this->deleteOldStats($filter_name);
2184
						$this->addLastStatsUpdate('last_update_stats_'.$filter_name,date('Y').'-01-01 00:00:00');
2185
					}
2186
				}
2187
2188
			}
2189
	
2190
2191
			// Last year stats
2192
			if ($lastyear) {
2193
				echo 'Data from last year...'."\n";
2194
				// SUM all previous month to put as year
2195
				$previous_year = date('Y');
2196
				$previous_year--;
2197
				$this->addStat('aircrafts_byyear',$this->getSumStats('aircrafts_bymonth',$previous_year),$previous_year.'-01-01 00:00:00');
2198
				$this->addStat('airlines_byyear',$this->getSumStats('airlines_bymonth',$previous_year),$previous_year.'-01-01 00:00:00');
2199
				$this->addStat('owner_byyear',$this->getSumStats('owner_bymonth',$previous_year),$previous_year.'-01-01 00:00:00');
2200
				$this->addStat('pilot_byyear',$this->getSumStats('pilot_bymonth',$previous_year),$previous_year.'-01-01 00:00:00');
2201
				$allairlines = $this->getAllAirlineNames();
2202
				foreach ($allairlines as $data) {
2203
					$this->addStat('aircrafts_byyear',$this->getSumStats('aircrafts_bymonth',$previous_year,$data['airline_icao']),$previous_year.'-01-01 00:00:00',$data['airline_icao']);
2204
					$this->addStat('airlines_byyear',$this->getSumStats('airlines_bymonth',$previous_year,$data['airline_icao']),$previous_year.'-01-01 00:00:00',$data['airline_icao']);
2205
					$this->addStat('owner_byyear',$this->getSumStats('owner_bymonth',$previous_year,$data['airline_icao']),$previous_year.'-01-01 00:00:00',$data['airline_icao']);
2206
					$this->addStat('pilot_byyear',$this->getSumStats('pilot_bymonth',$previous_year,$data['airline_icao']),$previous_year.'-01-01 00:00:00',$data['airline_icao']);
2207
				}
2208
				
2209
				if (isset($globalArchiveYear) && $globalArchiveYear) {
2210
					if ($globalArchive) {
2211
						$query = "INSERT INTO spotter_archive_output SELECT * FROM spotter_output WHERE spotter_output.date < '".date('Y')."-01-01 00:00:00'";
2212
						try {
2213
							$sth = $this->db->prepare($query);
2214
							$sth->execute();
2215
						} catch(PDOException $e) {
2216
							return "error : ".$e->getMessage().' - query : '.$query."\n";
2217
						}
2218
					}
2219
					echo 'Delete old data'."\n";
2220
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < '".date('Y')."-01-01 00:00:00'";
2221
					try {
2222
						$sth = $this->db->prepare($query);
2223
						$sth->execute();
2224
					} catch(PDOException $e) {
2225
						return "error : ".$e->getMessage().' - query : '.$query."\n";
2226
					}
2227
				}
2228
				if (isset($globalDeleteLastYearStats) && $globalDeleteLastYearStats) {
2229
					$last_update = $this->getLastStatsUpdate('last_update_stats');
2230
					if (date('Y',strtotime($last_update[0]['value'])) != date('Y')) {
2231
						$this->deleteOldStats();
2232
						$this->addLastStatsUpdate('last_update_stats',date('Y').'-01-01 00:00:00');
2233
						$lastyearupdate = true;
2234
					}
2235
				}
2236
			}
2237
			if ($globalArchiveMonths > 0) {
2238
				if ($globalArchive) {
2239
					echo 'Archive old data...'."\n";
2240
					if ($globalDBdriver == 'mysql') {
2241
						//$query = "INSERT INTO spotter_archive_output SELECT * FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
2242
						$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)
2243
							    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
2244
	    						     FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
2245
					} else {
2246
						$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)
2247
							     SELECT 
2248
								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
2249
							    FROM spotter_output WHERE spotter_output.date < CAST(to_char(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalArchiveMonths." MONTHS', 'YYYY/mm/01') AS TIMESTAMP)";
2250
					}
2251
					try {
2252
						$sth = $this->db->prepare($query);
2253
						$sth->execute();
2254
					} catch(PDOException $e) {
2255
						return "error : ".$e->getMessage();
2256
					}
2257
				}
2258
				echo 'Deleting old data...'."\n";
2259
				//$query = 'DELETE FROM spotter_output WHERE spotter_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$globalArchiveMonths.' MONTH)';
2260
				if ($globalDBdriver == 'mysql') {
2261
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
2262
				} else {
2263
					$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)";
2264
				}
2265
				try {
2266
					$sth = $this->db->prepare($query);
2267
					$sth->execute();
2268
				} catch(PDOException $e) {
2269
					return "error : ".$e->getMessage();
2270
				}
2271
			}
2272
			if (!isset($lastyearupdate)) {
2273
				echo 'Insert last stats update date...'."\n";
2274
				date_default_timezone_set('UTC');
2275
				$this->addLastStatsUpdate('last_update_stats',date('Y-m-d G:i:s'));
2276
			}
2277
			if ($globalStatsResetYear) {
2278
				require_once(dirname(__FILE__).'/../install/class.settings.php');
2279
				settings::modify_settings(array('globalStatsResetYear' => 'FALSE'));
2280
			}
2281
2282
		//}
2283
	}
2284
}
2285
2286
?>