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

Stats::addStatArrivalAirports()   B

Complexity

Conditions 6
Paths 13

Size

Total Lines 25
Code Lines 19

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 6
eloc 19
nc 13
nop 8
dl 0
loc 25
rs 8.439
c 0
b 0
f 0

How to fix   Many Parameters   

Many Parameters

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

There are several approaches to avoid long parameter lists:

1
<?php
2
/*
3
* This class save stats older than a year and $globalArchiveMonths
4
*/
5
6
require_once(dirname(__FILE__).'/class.Spotter.php');
7
require_once(dirname(__FILE__).'/class.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
?>