Completed
Push — master ( 708bc7...3d67e6 )
by Yannick
30:22
created

Stats::countAllTrackerMonthsLastYear()   C

Complexity

Conditions 8
Paths 72

Size

Total Lines 28
Code Lines 23

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 8
eloc 23
nc 72
nop 2
dl 0
loc 28
rs 5.3846
c 0
b 0
f 0
1
<?php
2
/*
3
* This class save stats older than a year and $globalArchiveMonths
4
*/
5
6
require_once(dirname(__FILE__).'/class.Spotter.php');
7
require_once(dirname(__FILE__).'/class.Marine.php');
8
require_once(dirname(__FILE__).'/class.Tracker.php');
9
require_once(dirname(__FILE__).'/class.Accident.php');
10
require_once(dirname(__FILE__).'/class.SpotterArchive.php');
11
require_once(dirname(__FILE__).'/class.Common.php');
12
class Stats {
13
	public $db;
14
	public $filter_name = '';
15
	
16
	public function __construct($dbc = null) {
17
		global $globalFilterName;
18
		if (isset($globalFilterName)) $this->filter_name = $globalFilterName;
19
		$Connection = new Connection($dbc);
20
		$this->db = $Connection->db();
21
		if ($this->db === null) die('Error: No DB connection. (Stats)');
22
	}
23
24
	public function addLastStatsUpdate($type,$stats_date) {
25
		$query = "DELETE FROM config WHERE name = :type;
26
			    INSERT INTO config (name,value) VALUES (:type,:stats_date);";
27
		$query_values = array('type' => $type,':stats_date' => $stats_date);
28
		try {
29
			$sth = $this->db->prepare($query);
30
			$sth->execute($query_values);
31
		} catch(PDOException $e) {
32
			return "error : ".$e->getMessage();
33
		}
34
	}
35
36
	public function getLastStatsUpdate($type = 'last_update_stats') {
37
		$query = "SELECT value FROM config WHERE name = :type";
38
		try {
39
			$sth = $this->db->prepare($query);
40
			$sth->execute(array(':type' => $type));
41
		} catch(PDOException $e) {
42
			echo "error : ".$e->getMessage();
43
		}
44
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
45
		return $all;
46
	}
47
48
	public function deleteStats($filter_name = '') {
49
		/*
50
		$query = "DELETE FROM config WHERE name = 'last_update_stats'";
51
		try {
52
		        $sth = $this->db->prepare($query);
53
		        $sth->execute();
54
		} catch(PDOException $e) {
55
		        return "error : ".$e->getMessage();
56
		}
57
		*/
58
		$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;";
59
		try {
60
			$sth = $this->db->prepare($query);
61
			$sth->execute(array(':filter_name' => $filter_name));
62
		} catch(PDOException $e) {
63
			return "error : ".$e->getMessage();
64
		}
65
	}
66
	public function deleteOldStats($filter_name = '') {
67
		if ($filter_name == '') {
68
			$query = "DELETE FROM config WHERE name = 'last_update_stats'";
69
		} else {
70
			$query = "DELETE FROM config WHERE name = 'last_update_stats_".$filter_name."'";
71
		}
72
		try {
73
			$sth = $this->db->prepare($query);
74
			$sth->execute();
75
		} catch(PDOException $e) {
76
			return "error : ".$e->getMessage();
77
		}
78
		$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;";
79
		try {
80
			$sth = $this->db->prepare($query);
81
			$sth->execute(array(':filter_name' => $filter_name));
82
		} catch(PDOException $e) {
83
			return "error : ".$e->getMessage();
84
		}
85
	}
86
87
	public function getAllAirlineNames($filter_name = '') {
88
		global $globalStatsFilters;
89
		if ($filter_name == '') $filter_name = $this->filter_name;
90
		$query = "SELECT * FROM stats_airline WHERE filter_name = :filter_name ORDER BY airline_name ASC";
91
		 try {
92
			$sth = $this->db->prepare($query);
93
			$sth->execute(array(':filter_name' => $filter_name));
94
		} catch(PDOException $e) {
95
			echo "error : ".$e->getMessage();
96
		}
97
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
98
		if (empty($all)) {
99
			$filters = array();
100
			if ($filter_name != '') {
101
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
102
			}
103
			$Spotter = new Spotter($this->db);
104
			$all = $Spotter->getAllAirlineNames('',NULL,$filters);
105
		}
106
		return $all;
107
	}
108
	public function getAllAircraftTypes($stats_airline = '',$filter_name = '') {
109
		if ($filter_name == '') $filter_name = $this->filter_name;
110
		$query = "SELECT * FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY aircraft_manufacturer ASC";
111
		try {
112
			$sth = $this->db->prepare($query);
113
			$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
114
		} catch(PDOException $e) {
115
			echo "error : ".$e->getMessage();
116
		}
117
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
118
		return $all;
119
	}
120
	public function getAllManufacturers($stats_airline = '',$filter_name = '') {
121
		if ($filter_name == '') $filter_name = $this->filter_name;
122
		$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";
123
		try {
124
			$sth = $this->db->prepare($query);
125
			$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
126
		} catch(PDOException $e) {
127
			echo "error : ".$e->getMessage();
128
		}
129
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
130
		return $all;
131
	}
132
	public function getAllAirportNames($stats_airline = '',$filter_name = '') {
133
		if ($filter_name == '') $filter_name = $this->filter_name;
134
		$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";
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 getAllOwnerNames($stats_airline = '',$filter_name = '') {
146
		if ($filter_name == '') $filter_name = $this->filter_name;
147
		$query = "SELECT owner_name FROM stats_owner WHERE stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY owner_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
	public function getAllPilotNames($stats_airline = '',$filter_name = '') {
159
		if ($filter_name == '') $filter_name = $this->filter_name;
160
		$query = "SELECT pilot_id,pilot_name FROM stats_pilot WHERE stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY pilot_name ASC";
161
		try {
162
			$sth = $this->db->prepare($query);
163
			$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
164
		} catch(PDOException $e) {
165
			echo "error : ".$e->getMessage();
166
		}
167
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
168
		return $all;
169
	}
170
171
172
	public function countAllAircraftTypes($limit = true, $stats_airline = '', $filter_name = '',$year = '', $month = '') {
173
		global $globalStatsFilters;
174
		if ($filter_name == '') $filter_name = $this->filter_name;
175
		if (strpos($stats_airline,'alliance_') !== FALSE) {
176
			$Spotter = new Spotter($this->db);
177
			$airlines = $Spotter->getAllAirlineNamesByAlliance(str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
178
			$alliance_airlines = array();
179
			foreach ($airlines as $airline) {
180
				$alliance_airlines = array_merge($alliance_airlines,array($airline['airline_icao']));
181
			}
182
			if ($year == '' && $month == '') {
183
				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 aircraft_icao <> 'NA' AND stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name ORDER BY aircraft_icao_count DESC LIMIT 10 OFFSET 0";
184
				else $query = "SELECT aircraft_icao, cnt AS aircraft_icao_count, aircraft_name, aircraft_manufacturer FROM stats_aircraft WHERE aircraft_name <> '' AND aircraft_icao <> ''  AND aircraft_icao <> 'NA' AND stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name ORDER BY aircraft_icao_count DESC";
185
				try {
186
					$sth = $this->db->prepare($query);
187
					$sth->execute(array(':filter_name' => $filter_name));
188
				} catch(PDOException $e) {
189
					echo "error : ".$e->getMessage();
190
				}
191
				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
192
			} else $all = array();
193
		} else {
194
			if ($year == '' && $month == '') {
195
				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 aircraft_icao <> 'NA' AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY aircraft_icao_count DESC LIMIT 10 OFFSET 0";
196
				else $query = "SELECT aircraft_icao, cnt AS aircraft_icao_count, aircraft_name, aircraft_manufacturer FROM stats_aircraft WHERE aircraft_name <> '' AND aircraft_icao <> '' AND aircraft_icao <> 'NA' AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY aircraft_icao_count DESC";
197
				try {
198
					$sth = $this->db->prepare($query);
199
					$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
200
				} catch(PDOException $e) {
201
					echo "error : ".$e->getMessage();
202
				}
203
				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
204
			} else $all = array();
205
		}
206
		if (empty($all)) {
207
			if (strpos($stats_airline,'alliance_') !== FALSE) {
208
				$filters = array('alliance' => str_replace('_',' ',str_replace('alliance_','',$stats_airline)),'year' => $year,'month' => $month);
209
			} else {
210
				$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
211
			}
212
			if ($filter_name != '') {
213
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
214
			}
215
			$Spotter = new Spotter($this->db);
216
			//$all = $Spotter->countAllAircraftTypes($limit,0,'',$filters,$year,$month);
217
			$all = $Spotter->countAllAircraftTypes($limit,0,'',$filters);
218
		}
219
		return $all;
220
	}
221
	public function countAllMarineTypes($limit = true, $filter_name = '',$year = '', $month = '') {
222
		global $globalStatsFilters;
223
		if ($filter_name == '') $filter_name = $this->filter_name;
224
		if ($year == '' && $month == '') {
225
			if ($limit) $query = "SELECT type AS marine_type, cnt AS marine_type_count, type_id AS marine_type_id FROM stats_marine_type WHERE filter_name = :filter_name ORDER BY marine_type_count DESC LIMIT 10 OFFSET 0";
226
			else $query = "SELECT type AS marine_type, cnt AS marine_type_count, type_id AS marine_type_id FROM stats_marine_type WHERE filter_name = :filter_name ORDER BY aircraft_icao_count DESC";
227
			try {
228
				$sth = $this->db->prepare($query);
229
				$sth->execute(array(':filter_name' => $filter_name));
230
			} catch(PDOException $e) {
231
				echo "error : ".$e->getMessage();
232
			}
233
			$all = $sth->fetchAll(PDO::FETCH_ASSOC);
234
		} else $all = array();
235
		if (empty($all)) {
236
			$filters = array('year' => $year,'month' => $month);
237
			if ($filter_name != '') {
238
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
239
			}
240
			$Marine = new Marine($this->db);
241
			//$all = $Spotter->countAllAircraftTypes($limit,0,'',$filters,$year,$month);
242
			$all = $Marine->countAllMarineTypes($limit,0,'',$filters);
243
		}
244
		return $all;
245
	}
246
	public function countAllAirlineCountries($limit = true,$filter_name = '',$year = '',$month = '') {
247
		global $globalStatsFilters;
248
		if ($filter_name == '') $filter_name = $this->filter_name;
249
		if ($year == '' && $month == '') {
250
			if ($limit) $query = "SELECT airlines.country AS airline_country, SUM(stats_airline.cnt) as airline_country_count, countries.iso3 AS airline_country_iso3 FROM stats_airline,airlines,countries WHERE countries.name = airlines.country AND stats_airline.airline_icao=airlines.icao AND filter_name = :filter_name GROUP BY airline_country, countries.iso3 ORDER BY airline_country_count DESC LIMIT 10 OFFSET 0";
251
			else $query = "SELECT airlines.country AS airline_country, SUM(stats_airline.cnt) as airline_country_count, countries.iso3 AS airline_country_iso3 FROM stats_airline,airlines,countries WHERE countries.name = airlines.country AND stats_airline.airline_icao=airlines.icao AND filter_name = :filter_name GROUP BY airline_country, countries.iso3 ORDER BY airline_country_count DESC";
252
			try {
253
				$sth = $this->db->prepare($query);
254
				$sth->execute(array(':filter_name' => $filter_name));
255
			} catch(PDOException $e) {
256
				echo "error : ".$e->getMessage();
257
			}
258
			$all = $sth->fetchAll(PDO::FETCH_ASSOC);
259
		} else $all = array();
260
		if (empty($all)) {
261
			$Spotter = new Spotter($this->db);
262
			$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...
263
			$filters = array('year' => $year,'month' => $month);
264
			if ($filter_name != '') {
265
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
266
			}
267
			//$all = $Spotter->countAllAirlineCountries($limit,$filters,$year,$month);
268
			$all = $Spotter->countAllAirlineCountries($limit,$filters);
269
		}
270
		return $all;
271
	}
272
	public function countAllAircraftManufacturers($limit = true,$stats_airline = '', $filter_name = '',$year = '', $month = '') {
273
		global $globalStatsFilters;
274
		if ($filter_name == '') $filter_name = $this->filter_name;
275
		if (strpos($stats_airline,'alliance_') !== FALSE) {
276
			$Spotter = new Spotter($this->db);
277
			$airlines = $Spotter->getAllAirlineNamesByAlliance(str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
278
			$alliance_airlines = array();
279
			foreach ($airlines as $airline) {
280
				$alliance_airlines = array_merge($alliance_airlines,array($airline['airline_icao']));
281
			}
282
			if ($year == '' && $month == '') {
283
				if ($limit) $query = "SELECT aircraft_manufacturer, SUM(stats_aircraft.cnt) as aircraft_manufacturer_count FROM stats_aircraft WHERE stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name GROUP BY aircraft_manufacturer ORDER BY aircraft_manufacturer_count DESC LIMIT 10 OFFSET 0";
284
				else $query = "SELECT aircraft_manufacturer, SUM(stats_aircraft.cnt) as aircraft_manufacturer_count FROM stats_aircraft WHERE stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name GROUP BY aircraft_manufacturer ORDER BY aircraft_manufacturer_count DESC";
285
				try {
286
					$sth = $this->db->prepare($query);
287
					$sth->execute(array(':filter_name' => $filter_name));
288
				} catch(PDOException $e) {
289
					echo "error : ".$e->getMessage();
290
				}
291
				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
292
			} else $all = array();
293
		} else {
294
			if ($year == '' && $month == '') {
295
				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";
296
				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";
297
				try {
298
					$sth = $this->db->prepare($query);
299
					$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
300
				} catch(PDOException $e) {
301
					echo "error : ".$e->getMessage();
302
				}
303
				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
304
			} else $all = array();
305
		}
306
		if (empty($all)) {
307
			if (strpos($stats_airline,'alliance_') !== FALSE) {
308
				$filters = array('alliance' => str_replace('_',' ',str_replace('alliance_','',$stats_airline)),'year' => $year,'month' => $month);
309
			} else {
310
				$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
311
			}
312
			if ($filter_name != '') {
313
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
314
			}
315
			$Spotter = new Spotter($this->db);
316
			//$all = $Spotter->countAllAircraftManufacturers($filters,$year,$month);
317
			$all = $Spotter->countAllAircraftManufacturers($filters);
318
		}
319
		return $all;
320
	}
321
322
	public function countAllArrivalCountries($limit = true, $stats_airline = '', $filter_name = '',$year = '', $month = '') {
323
		global $globalStatsFilters;
324
		if ($filter_name == '') $filter_name = $this->filter_name;
325
		if (strpos($stats_airline,'alliance_') !== FALSE) {
326
			$Spotter = new Spotter($this->db);
327
			$airlines = $Spotter->getAllAirlineNamesByAlliance(str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
328
			$alliance_airlines = array();
329
			foreach ($airlines as $airline) {
330
				$alliance_airlines = array_merge($alliance_airlines,array($airline['airline_icao']));
331
			}
332
			if ($year == '' && $month == '') {
333
				if ($limit) $query = "SELECT airport_country AS airport_arrival_country, SUM(arrival) as airport_arrival_country_count, countries.iso3 AS airport_arrival_country_iso3 FROM stats_airport, countries WHERE countries.name = stats_airport.airport_country AND stats_type = 'yearly' AND stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name GROUP BY airport_arrival_country, countries.iso3 ORDER BY airport_arrival_country_count DESC LIMIT 10 OFFSET 0";
334
				else $query = "SELECT airport_country AS airport_arrival_country, SUM(arrival) as airport_arrival_country_count, countries.iso3 AS airport_arrival_country_iso3 FROM stats_airport, countries WHERE countries.name = stats_aiport.airport_country AND stats_type = 'yearly' AND stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name GROUP BY airport_arrival_country, countries.iso3 ORDER BY airport_arrival_country_count DESC";
335
				try {
336
					$sth = $this->db->prepare($query);
337
					$sth->execute(array(':filter_name' => $filter_name));
338
				} catch(PDOException $e) {
339
					echo "error : ".$e->getMessage();
340
				}
341
				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
342
			} else $all = array();
343
		} else {
344
			if ($year == '' && $month == '') {
345
				if ($limit) $query = "SELECT airport_country AS airport_arrival_country, SUM(arrival) as airport_arrival_country_count, countries.iso3 AS airport_arrival_country_iso3 FROM stats_airport, countries WHERE countries.name = stats_airport.airport_country AND stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name GROUP BY airport_arrival_country, countries.iso3 ORDER BY airport_arrival_country_count DESC LIMIT 10 OFFSET 0";
346
				else $query = "SELECT airport_country AS airport_arrival_country, SUM(arrival) as airport_arrival_country_count, countries.iso3 AS airport_arrival_country_iso3 FROM stats_airport, countries WHERE countries.name = stats_aiport.airport_country AND stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name GROUP BY airport_arrival_country, countries.iso3 ORDER BY airport_arrival_country_count DESC";
347
				try {
348
					$sth = $this->db->prepare($query);
349
					$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
350
				} catch(PDOException $e) {
351
					echo "error : ".$e->getMessage();
352
				}
353
				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
354
			} else $all = array();
355
		}
356
		if (empty($all)) {
357
			if (strpos($stats_airline,'alliance_') !== FALSE) {
358
				$filters = array('alliance' => str_replace('_',' ',str_replace('alliance_','',$stats_airline)),'year' => $year,'month' => $month);
359
			} else {
360
				$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
361
			}
362
			if ($filter_name != '') {
363
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
364
			}
365
			$Spotter = new Spotter($this->db);
366
			//$all = $Spotter->countAllArrivalCountries($limit,$filters,$year,$month);
367
			$all = $Spotter->countAllArrivalCountries($limit,$filters);
368
		}
369
		return $all;
370
	}
371
	public function countAllDepartureCountries($limit = true, $stats_airline = '', $filter_name = '', $year = '', $month = '') {
372
		global $globalStatsFilters;
373
		if ($filter_name == '') $filter_name = $this->filter_name;
374
		if (strpos($stats_airline,'alliance_') !== FALSE) {
375
			$Spotter = new Spotter($this->db);
376
			$airlines = $Spotter->getAllAirlineNamesByAlliance(str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
377
			$alliance_airlines = array();
378
			foreach ($airlines as $airline) {
379
				$alliance_airlines = array_merge($alliance_airlines,array($airline['airline_icao']));
380
			}
381
			if ($limit) $query = "SELECT airport_country AS airport_departure_country, SUM(departure) as airport_departure_country_count, countries.iso3 as airport_departure_country_iso3 FROM stats_airport, countries WHERE countries.name = stats_airport.airport_country AND stats_type = 'yearly' AND stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name GROUP BY airport_departure_country, countries.iso3 ORDER BY airport_departure_country_count DESC LIMIT 10 OFFSET 0";
382
			else $query = "SELECT airport_country AS airport_departure_country, SUM(departure) as airport_departure_country_count, countries.iso3 as airport_departure_country_iso3 FROM stats_airport, countries WHERE countries.iso3 = stats_airport.airport_country AND stats_type = 'yearly' AND stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name GROUP BY airport_departure_country, countries.iso3 ORDER BY airport_departure_country_count DESC";
383
			$query_values = array(':filter_name' => $filter_name);
384
		} else {
385
			if ($limit) $query = "SELECT airport_country AS airport_departure_country, SUM(departure) as airport_departure_country_count, countries.iso3 as airport_departure_country_iso3 FROM stats_airport, countries WHERE countries.name = stats_airport.airport_country AND stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name GROUP BY airport_departure_country, countries.iso3 ORDER BY airport_departure_country_count DESC LIMIT 10 OFFSET 0";
386
			else $query = "SELECT airport_country AS airport_departure_country, SUM(departure) as airport_departure_country_count, countries.iso3 as airport_departure_country_iso3 FROM stats_airport, countries WHERE countries.iso3 = stats_airport.airport_country AND stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name GROUP BY airport_departure_country, countries.iso3 ORDER BY airport_departure_country_count DESC";
387
			$query_values = array(':stats_airline' => $stats_airline,':filter_name' => $filter_name);
388
		}
389
		try {
390
			$sth = $this->db->prepare($query);
391
			$sth->execute($query_values);
392
		} catch(PDOException $e) {
393
			echo "error : ".$e->getMessage();
394
		}
395
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
396
		if (empty($all)) {
397
			if (strpos($stats_airline,'alliance_') !== FALSE) {
398
				$filters = array('alliance' => str_replace('_',' ',str_replace('alliance_','',$stats_airline)),'year' => $year,'month' => $month);
399
			} else {
400
				$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
401
			}
402
			if ($filter_name != '') {
403
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
404
			}
405
			$Spotter = new Spotter($this->db);
406
			//$all = $Spotter->countAllDepartureCountries($filters,$year,$month);
407
			$all = $Spotter->countAllDepartureCountries($filters);
408
		}
409
		return $all;
410
	}
411
412
	public function countAllAirlines($limit = true,$filter_name = '',$year = '',$month = '') {
413
		global $globalStatsFilters, $globalVATSIM, $globalIVAO;
414
		if ($filter_name == '') $filter_name = $this->filter_name;
415
		if ($year == '' && $month == '') {
416
			if ($globalVATSIM) $forsource = 'vatsim';
417
			if ($globalIVAO) $forsource = 'ivao';
418
			if (isset($forsource)) {
419
				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";
420
				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";
421
				$query_values = array(':filter_name' => $filter_name,':forsource' => $forsource);
422
			} else {
423
				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";
424
				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";
425
				$query_values = array(':filter_name' => $filter_name);
426
			}
427
			try {
428
				$sth = $this->db->prepare($query);
429
				$sth->execute($query_values);
430
			} catch(PDOException $e) {
431
				echo "error : ".$e->getMessage();
432
			}
433
			$all = $sth->fetchAll(PDO::FETCH_ASSOC);
434
		} else $all = array();
435
                if (empty($all)) {
436
	                $Spotter = new Spotter($this->db);
437
            		$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...
438
			$filters = array('year' => $year,'month' => $month);
439
            		if ($filter_name != '') {
440
            			$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
441
			}
442
			//$all = $Spotter->countAllAirlines($limit,0,'',$filters,$year,$month);
443
    		        $all = $Spotter->countAllAirlines($limit,0,'',$filters);
444
                }
445
                return $all;
446
	}
447
	public function countAllAircraftRegistrations($limit = true,$stats_airline = '',$filter_name = '',$year = '',$month = '') {
448
		global $globalStatsFilters;
449
		if ($filter_name == '') $filter_name = $this->filter_name;
450
		if (strpos($stats_airline,'alliance_') !== FALSE) {
451
			$Spotter = new Spotter($this->db);
452
			$airlines = $Spotter->getAllAirlineNamesByAlliance(str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
453
			$alliance_airlines = array();
454
			foreach ($airlines as $airline) {
455
				$alliance_airlines = array_merge($alliance_airlines,array($airline['airline_icao']));
456
			}
457
			if ($year == '' && $month == '') {
458
				if ($limit) $query = "SELECT s.aircraft_icao, s.cnt AS 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 IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name ORDER BY registration_count DESC LIMIT 10 OFFSET 0";
459
				else $query = "SELECT s.aircraft_icao, s.cnt AS 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 IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name ORDER BY registration_count DESC";
460
				try {
461
					$sth = $this->db->prepare($query);
462
					$sth->execute(array(':filter_name' => $filter_name));
463
				} catch(PDOException $e) {
464
					echo "error : ".$e->getMessage();
465
				}
466
				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
467
			} else $all = array();
468
		} else {
469
			if ($year == '' && $month == '') {
470
				if ($limit) $query = "SELECT s.aircraft_icao, s.cnt AS 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 registration_count DESC LIMIT 10 OFFSET 0";
471
				else $query = "SELECT s.aircraft_icao, s.cnt AS 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 registration_count DESC";
472
				try {
473
					$sth = $this->db->prepare($query);
474
					$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
475
				} catch(PDOException $e) {
476
					echo "error : ".$e->getMessage();
477
				}
478
				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
479
			} else $all = array();
480
		}
481
		if (empty($all)) {
482
			if (strpos($stats_airline,'alliance_') !== FALSE) {
483
				$filters = array('alliance' => str_replace('_',' ',str_replace('alliance_','',$stats_airline)),'year' => $year,'month' => $month);
484
			} else {
485
				$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
486
			}
487
			if ($filter_name != '') {
488
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
489
			}
490
			$Spotter = new Spotter($this->db);
491
			//$all = $Spotter->countAllAircraftRegistrations($limit,0,'',$filters,$year,$month);
492
			$all = $Spotter->countAllAircraftRegistrations($limit,0,'',$filters);
493
		}
494
		return $all;
495
	}
496
	public function countAllCallsigns($limit = true,$stats_airline = '',$filter_name = '',$year = '',$month = '') {
497
		global $globalStatsFilters;
498
		if ($filter_name == '') $filter_name = $this->filter_name;
499
		if (strpos($stats_airline,'alliance_') !== FALSE) {
500
			$Spotter = new Spotter($this->db);
501
			$airlines = $Spotter->getAllAirlineNamesByAlliance(str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
502
			$alliance_airlines = array();
503
			foreach ($airlines as $airline) {
504
				$alliance_airlines = array_merge($alliance_airlines,array($airline['airline_icao']));
505
			}
506
			if ($year == '' && $month == '') {
507
				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 IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name ORDER BY callsign_icao_count DESC LIMIT 10 OFFSET 0";
508
				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 IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name ORDER BY callsign_icao_count DESC";
509
				 try {
510
					$sth = $this->db->prepare($query);
511
					$sth->execute(array(':filter_name' => $filter_name));
512
				} catch(PDOException $e) {
513
					echo "error : ".$e->getMessage();
514
				}
515
				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
516
			} else $all = array();
517
		} else {
518
			if ($year == '' && $month == '') {
519
				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";
520
				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";
521
				 try {
522
					$sth = $this->db->prepare($query);
523
					$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
524
				} catch(PDOException $e) {
525
					echo "error : ".$e->getMessage();
526
				}
527
				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
528
			} else $all = array();
529
		}
530
		if (empty($all)) {
531
			if (strpos($stats_airline,'alliance_') !== FALSE) {
532
				$filters = array('alliance' => str_replace('_',' ',str_replace('alliance_','',$stats_airline)),'year' => $year,'month' => $month);
533
			} else {
534
				$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
535
			}
536
			if ($filter_name != '') {
537
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
538
			}
539
			$Spotter = new Spotter($this->db);
540
			//$all = $Spotter->countAllCallsigns($limit,0,'',$filters,$year,$month);
541
			$all = $Spotter->countAllCallsigns($limit,0,'',$filters);
542
		}
543
		return $all;
544
	}
545
	public function countAllFlightOverCountries($limit = true, $stats_airline = '',$filter_name = '',$year = '',$month = '') {
546
		$Connection = new Connection($this->db);
547
		if ($filter_name == '') $filter_name = $this->filter_name;
548
		if ($Connection->tableExists('countries')) {
549
			if (strpos($stats_airline,'alliance_') !== FALSE) {
550
				$Spotter = new Spotter($this->db);
551
				$airlines = $Spotter->getAllAirlineNamesByAlliance(str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
552
				if ($year == '' && $month == '') {
553
					$alliance_airlines = array();
554
					foreach ($airlines as $airline) {
555
						$alliance_airlines = array_merge($alliance_airlines,array($airline['airline_icao']));
556
					}
557
					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 IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name ORDER BY flight_count DESC LIMIT 20 OFFSET 0";
558
					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 IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name ORDER BY flight_count DESC";
559
					 try {
560
						$sth = $this->db->prepare($query);
561
						$sth->execute(array(':filter_name' => $filter_name));
562
					} catch(PDOException $e) {
563
						echo "error : ".$e->getMessage();
564
					}
565
					$all = $sth->fetchAll(PDO::FETCH_ASSOC);
566
					return $all;
567
				} else return array();
568
			} else {
569
				if ($year == '' && $month == '') {
570
					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";
571
					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";
572
					 try {
573
						$sth = $this->db->prepare($query);
574
						$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
575
					} catch(PDOException $e) {
576
						echo "error : ".$e->getMessage();
577
					}
578
					$all = $sth->fetchAll(PDO::FETCH_ASSOC);
579
					return $all;
580
				} else return array();
581
			}
582
			$Spotter = new Spotter($this->db);
0 ignored issues
show
Unused Code introduced by
$Spotter = new \Spotter($this->db); does not seem to be reachable.

This check looks for unreachable code. It uses sophisticated control flow analysis techniques to find statements which will never be executed.

Unreachable code is most often the result of return, die or exit statements that have been added for debug purposes.

function fx() {
    try {
        doSomething();
        return true;
    }
    catch (\Exception $e) {
        return false;
    }

    return false;
}

In the above example, the last return false will never be executed, because a return statement has already been met in every possible execution path.

Loading history...
583
			return $Spotter->countAllFlightOverCountries($limit);
584
		} else return array();
585
	}
586
	public function countAllMarineOverCountries($limit = true, $filter_name = '',$year = '',$month = '') {
587
		$Connection = new Connection($this->db);
588
		if ($filter_name == '') $filter_name = $this->filter_name;
589
		if ($Connection->tableExists('countries')) {
590
			$all = array();
591
			if ($year == '' && $month == '') {
592
				if ($limit) $query = "SELECT countries.iso3 as marine_country_iso3, countries.iso2 as marine_country_iso2, countries.name as marine_country, cnt as marine_count, lat as marine_country_latitude, lon as marine_country_longitude FROM stats_marine_country, countries WHERE stats_marine_country.iso2 = countries.iso2 AND filter_name = :filter_name ORDER BY marine_count DESC LIMIT 20 OFFSET 0";
593
				else $query = "SELECT countries.iso3 as marine_country_iso3, countries.iso2 as marine_country_iso2, countries.name as marine_country, cnt as marine_count, lat as marine_country_latitude, lon as marine_country_longitude FROM stats_marine_country, countries WHERE stats_marine_country.iso2 = countries.iso2 AND filter_name = :filter_name ORDER BY marine_count DESC";
594
				 try {
595
					$sth = $this->db->prepare($query);
596
					$sth->execute(array(':filter_name' => $filter_name));
597
				} catch(PDOException $e) {
598
					echo "error : ".$e->getMessage();
599
				}
600
				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
601
			}
602
			if (empty($all)) {
603
				$filters = array();
604
				if ($filter_name != '') {
605
					$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
0 ignored issues
show
Bug introduced by
The variable $globalStatsFilters does not exist. Did you mean $filters?

This check looks for variables that are accessed but have not been defined. It raises an issue if it finds another variable that has a similar name.

The variable may have been renamed without also renaming all references.

Loading history...
606
				}
607
				$Marine = new Marine($this->db);
608
				$all = $Marine->countAllMarineOverCountries($limit,0,'',$filters);
609
			}
610
			return $all;
611
		} else return array();
612
	}
613
	public function countAllTrackerOverCountries($limit = true, $filter_name = '',$year = '',$month = '') {
614
		global $globalStatsFilters;
615
		$Connection = new Connection($this->db);
616
		if ($filter_name == '') $filter_name = $this->filter_name;
617
		if ($Connection->tableExists('countries')) {
618
			$all = array();
619
			if ($year == '' && $month == '') {
620
				if ($limit) $query = "SELECT countries.iso3 as tracker_country_iso3, countries.iso2 as tracker_country_iso2, countries.name as tracker_country, cnt as tracker_count, lat as tracker_country_latitude, lon as tracker_country_longitude FROM stats_tracker_country, countries WHERE stats_tracker_country.iso2 = countries.iso2 AND filter_name = :filter_name ORDER BY tracker_count DESC LIMIT 20 OFFSET 0";
621
				else $query = "SELECT countries.iso3 as tracker_country_iso3, countries.iso2 as tracker_country_iso2, countries.name as tracker_country, cnt as tracker_count, lat as tracker_country_latitude, lon as tracker_country_longitude FROM stats_tracker_country, countries WHERE stats_tracker_country.iso2 = countries.iso2 AND filter_name = :filter_name ORDER BY tracker_count DESC";
622
				 try {
623
					$sth = $this->db->prepare($query);
624
					$sth->execute(array(':filter_name' => $filter_name));
625
				} catch(PDOException $e) {
626
					echo "error : ".$e->getMessage();
627
				}
628
				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
629
				return $all;
630
			}
631
			if (empty($all)) {
632
				$filters = array();
633
				if ($filter_name != '') {
634
					$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
635
				}
636
				$Tracker = new Tracker($this->db);
637
				$all = $Tracker->countAllTrackerOverCountries($limit,0,'',$filters);
638
			}
639
			return $all;
640
		} else return array();
641
	}
642
	public function countAllPilots($limit = true,$stats_airline = '',$filter_name = '', $year = '',$month = '') {
643
		global $globalStatsFilters;
644
		if ($filter_name == '') $filter_name = $this->filter_name;
645
		if ($year == '' && $month == '') {
646
			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";
647
			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";
648
			try {
649
				$sth = $this->db->prepare($query);
650
				$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
651
			} catch(PDOException $e) {
652
				echo "error : ".$e->getMessage();
653
			}
654
			$all = $sth->fetchAll(PDO::FETCH_ASSOC);
655
		} else $all = array();
656
		if (empty($all)) {
657
			$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
658
			if ($filter_name != '') {
659
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
660
			}
661
			$Spotter = new Spotter($this->db);
662
			//$all = $Spotter->countAllPilots($limit,0,'',$filters,$year,$month);
663
			$all = $Spotter->countAllPilots($limit,0,'',$filters);
664
		}
665
		return $all;
666
	}
667
668
	public function countAllOwners($limit = true,$stats_airline = '', $filter_name = '',$year = '',$month = '') {
669
		global $globalStatsFilters;
670
		if ($filter_name == '') $filter_name = $this->filter_name;
671
		if (strpos($stats_airline,'alliance_') !== FALSE) {
672
			$Spotter = new Spotter($this->db);
673
			$airlines = $Spotter->getAllAirlineNamesByAlliance(str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
674
			if ($year == '' && $month == '') {
675
				$alliance_airlines = array();
676
				foreach ($airlines as $airline) {
677
					$alliance_airlines = array_merge($alliance_airlines,array($airline['airline_icao']));
678
				}
679
				if ($limit) $query = "SELECT owner_name, cnt AS owner_count FROM stats_owner WHERE stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name ORDER BY owner_count DESC LIMIT 10 OFFSET 0";
680
				else $query = "SELECT owner_name, cnt AS owner_count FROM stats_owner WHERE stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name ORDER BY owner_count DESC";
681
				try {
682
					$sth = $this->db->prepare($query);
683
					$sth->execute(array(':filter_name' => $filter_name));
684
				} catch(PDOException $e) {
685
					echo "error : ".$e->getMessage();
686
				}
687
				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
688
			} else $all = array();
689
		} else {
690
			if ($year == '' && $month == '') {
691
				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";
692
				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";
693
				try {
694
					$sth = $this->db->prepare($query);
695
					$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
696
				} catch(PDOException $e) {
697
					echo "error : ".$e->getMessage();
698
				}
699
				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
700
			} else $all = array();
701
		}
702
		if (empty($all)) {
703
			if (strpos($stats_airline,'alliance_') !== FALSE) {
704
				$filters = array('alliance' => str_replace('_',' ',str_replace('alliance_','',$stats_airline)),'year' => $year,'month' => $month);
705
			} else {
706
				$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
707
			}
708
			if ($filter_name != '') {
709
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
710
			}
711
			$Spotter = new Spotter($this->db);
712
			//$all = $Spotter->countAllOwners($limit,0,'',$filters,$year,$month);
713
			$all = $Spotter->countAllOwners($limit,0,'',$filters);
714
		}
715
		return $all;
716
	}
717
	public function countAllDepartureAirports($limit = true,$stats_airline = '',$filter_name = '',$year = '',$month = '') {
718
		global $globalStatsFilters;
719
		if ($filter_name == '') $filter_name = $this->filter_name;
720
		if (strpos($stats_airline,'alliance_') !== FALSE) {
721
			$Spotter = new Spotter($this->db);
722
			$airlines = $Spotter->getAllAirlineNamesByAlliance(str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
723
			if ($year == '' && $month == '') {
724
				$alliance_airlines = array();
725
				foreach ($airlines as $airline) {
726
					$alliance_airlines = array_merge($alliance_airlines,array($airline['airline_icao']));
727
				}
728
				if ($limit) $query = "SELECT DISTINCT airport_icao AS airport_departure_icao,airport.name AS airport_departure_name,airport_city AS airport_departure_city,airport_country AS airport_departure_country,departure AS airport_departure_icao_count, airport.latitude AS airport_departure_latitude, airport.longitude AS airport_departure_longitude FROM stats_airport,airport WHERE airport.icao = stats_airport.airport_icao AND departure > 0 AND stats_type = 'yearly' AND stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name ORDER BY airport_departure_icao_count DESC LIMIT 10 OFFSET 0";
729
				else $query = "SELECT DISTINCT airport_icao AS airport_departure_icao,airport.name AS airport_departure_name,airport_city AS airport_departure_city,airport_country AS airport_departure_country,departure AS airport_departure_icao_count, airport.latitude AS airport_departure_latitude, airport.longitude AS airport_departure_longitude FROM stats_airport,airport WHERE airport.icao = stats_airport.airport_icao AND departure > 0 AND stats_type = 'yearly' AND stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name ORDER BY airport_departure_icao_count DESC";
730
				try {
731
					$sth = $this->db->prepare($query);
732
					$sth->execute(array(':filter_name' => $filter_name));
733
				} catch(PDOException $e) {
734
					echo "error : ".$e->getMessage();
735
				}
736
				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
737
			} else $all = array();
738
		} else {
739
			if ($year == '' && $month == '') {
740
				if ($limit) $query = "SELECT DISTINCT airport_icao AS airport_departure_icao,airport.name AS airport_departure_name,airport_city AS airport_departure_city,airport_country AS airport_departure_country,departure AS airport_departure_icao_count, airport.latitude AS airport_departure_latitude, airport.longitude AS airport_departure_longitude FROM stats_airport,airport WHERE airport.icao = stats_airport.airport_icao AND 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";
741
				else $query = "SELECT DISTINCT airport_icao AS airport_departure_icao,airport.name AS airport_departure_name,airport_city AS airport_departure_city,airport_country AS airport_departure_country,departure AS airport_departure_icao_count, airport.latitude AS airport_departure_latitude, airport.longitude AS airport_departure_longitude FROM stats_airport,airport WHERE airport.icao = stats_airport.airport_icao AND departure > 0 AND stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY airport_departure_icao_count DESC";
742
				try {
743
					$sth = $this->db->prepare($query);
744
					$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
745
				} catch(PDOException $e) {
746
					echo "error : ".$e->getMessage();
747
				}
748
				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
749
			} else $all = array();
750
		}
751
		if (empty($all)) {
752
			if (strpos($stats_airline,'alliance_') !== FALSE) {
753
				$filters = array('alliance' => str_replace('_',' ',str_replace('alliance_','',$stats_airline)),'year' => $year,'month' => $month);
754
			} else {
755
				$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
756
			}
757
			if ($filter_name != '') {
758
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
759
			}
760
			$Spotter = new Spotter($this->db);
761
//            		$pall = $Spotter->countAllDepartureAirports($limit,0,'',$filters,$year,$month);
762
  //      		$dall = $Spotter->countAllDetectedDepartureAirports($limit,0,'',$filters,$year,$month);
763
			$pall = $Spotter->countAllDepartureAirports($limit,0,'',$filters);
764
			$dall = $Spotter->countAllDetectedDepartureAirports($limit,0,'',$filters);
765
			$all = array();
766
			foreach ($pall as $value) {
767
				$icao = $value['airport_departure_icao'];
768
				$all[$icao] = $value;
769
			}
770
			foreach ($dall as $value) {
771
				$icao = $value['airport_departure_icao'];
772
				if (isset($all[$icao])) {
773
					$all[$icao]['airport_departure_icao_count'] = $all[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
774
				} else $all[$icao] = $value;
775
			}
776
			$count = array();
777
			foreach ($all as $key => $row) {
778
				$count[$key] = $row['airport_departure_icao_count'];
779
			}
780
			array_multisort($count,SORT_DESC,$all);
781
		}
782
		return $all;
783
	}
784
	public function countAllArrivalAirports($limit = true,$stats_airline = '',$filter_name = '',$year = '',$month = '') {
785
		global $globalStatsFilters;
786
		if ($filter_name == '') $filter_name = $this->filter_name;
787
		if (strpos($stats_airline,'alliance_') !== FALSE) {
788
			$Spotter = new Spotter($this->db);
789
			$airlines = $Spotter->getAllAirlineNamesByAlliance(str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
790
			if ($year == '' && $month == '') {
791
				$alliance_airlines = array();
792
				foreach ($airlines as $airline) {
793
					$alliance_airlines = array_merge($alliance_airlines,array($airline['airline_icao']));
794
				}
795
				if ($limit) $query = "SELECT DISTINCT airport_icao AS airport_arrival_icao,airport.name AS airport_arrival_name, airport_city AS airport_arrival_city,airport_country AS airport_arrival_country,arrival AS airport_arrival_icao_count, airport.latitude AS airport_arrival_latitude, airport.longitude AS airport_arrival_longitude FROM stats_airport, airport WHERE airport.icao = stats_airport.airport_icao AND arrival > 0 AND stats_type = 'yearly' AND stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name ORDER BY airport_arrival_icao_count DESC LIMIT 10 OFFSET 0";
796
				else $query = "SELECT DISTINCT airport_icao AS airport_arrival_icao,airport.name AS airport_arrival_name, airport_city AS airport_arrival_city,airport_country AS airport_arrival_country,arrival AS airport_arrival_icao_count, airport.latitude AS airport_arrival_latitude, airport.longitude AS airport_arrival_longitude FROM stats_airport, airport WHERE airport.icao = stats_airport.airport_icao AND arrival > 0 AND stats_type = 'yearly' AND stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name ORDER BY airport_arrival_icao_count DESC";
797
				try {
798
					$sth = $this->db->prepare($query);
799
					$sth->execute(array(':filter_name' => $filter_name));
800
				} catch(PDOException $e) {
801
					echo "error : ".$e->getMessage();
802
				}
803
				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
804
			} else $all = array();
805
		} else {
806
			if ($year == '' && $month == '') {
807
				if ($limit) $query = "SELECT DISTINCT airport_icao AS airport_arrival_icao,airport.name AS airport_arrival_name, airport_city AS airport_arrival_city,airport_country AS airport_arrival_country,arrival AS airport_arrival_icao_count, airport.latitude AS airport_arrival_latitude, airport.longitude AS airport_arrival_longitude FROM stats_airport, airport WHERE airport.icao = stats_airport.airport_icao AND 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";
808
				else $query = "SELECT DISTINCT airport_icao AS airport_arrival_icao,airport.name AS airport_arrival_name, airport_city AS airport_arrival_city,airport_country AS airport_arrival_country,arrival AS airport_arrival_icao_count, airport.latitude AS airport_arrival_latitude, airport.longitude AS airport_arrival_longitude FROM stats_airport, airport WHERE airport.icao = stats_airport.airport_icao AND arrival > 0 AND stats_type = 'yearly' AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY airport_arrival_icao_count DESC";
809
				try {
810
					$sth = $this->db->prepare($query);
811
					$sth->execute(array(':stats_airline' => $stats_airline,':filter_name' => $filter_name));
812
				} catch(PDOException $e) {
813
					echo "error : ".$e->getMessage();
814
				}
815
				$all = $sth->fetchAll(PDO::FETCH_ASSOC);
816
			} else $all = array();
817
		}
818
		if (empty($all)) {
819
			if (strpos($stats_airline,'alliance_') !== FALSE) {
820
				$filters = array('alliance' => str_replace('_',' ',str_replace('alliance_','',$stats_airline)),'year' => $year,'month' => $month);
821
			} else {
822
				$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
823
			}
824
			if ($filter_name != '') {
825
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
826
			}
827
			$Spotter = new Spotter($this->db);
828
//			$pall = $Spotter->countAllArrivalAirports($limit,0,'',false,$filters,$year,$month);
829
//			$dall = $Spotter->countAllDetectedArrivalAirports($limit,0,'',false,$filters,$year,$month);
830
			$pall = $Spotter->countAllArrivalAirports($limit,0,'',false,$filters);
831
			$dall = $Spotter->countAllDetectedArrivalAirports($limit,0,'',false,$filters);
832
			$all = array();
833
			foreach ($pall as $value) {
834
				$icao = $value['airport_arrival_icao'];
835
				$all[$icao] = $value;
836
			}
837
			foreach ($dall as $value) {
838
				$icao = $value['airport_arrival_icao'];
839
				if (isset($all[$icao])) {
840
					$all[$icao]['airport_arrival_icao_count'] = $all[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
841
				} else $all[$icao] = $value;
842
			}
843
			$count = array();
844
			foreach ($all as $key => $row) {
845
				$count[$key] = $row['airport_arrival_icao_count'];
846
			}
847
			array_multisort($count,SORT_DESC,$all);
848
		}
849
		return $all;
850
	}
851
	public function countAllMonthsLastYear($limit = true,$stats_airline = '',$filter_name = '') {
852
		global $globalDBdriver, $globalStatsFilters;
853
		if ($filter_name == '') $filter_name = $this->filter_name;
854
		if (strpos($stats_airline,'alliance_') !== FALSE) {
855
			$Spotter = new Spotter($this->db);
856
			$airlines = $Spotter->getAllAirlineNamesByAlliance(str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
857
			$alliance_airlines = array();
858
			foreach ($airlines as $airline) {
859
				$alliance_airlines = array_merge($alliance_airlines,array($airline['airline_icao']));
860
			}
861
			if ($globalDBdriver == 'mysql') {
862
				if ($limit) $query = "SELECT MONTH(stats_date) as month_name, YEAR(stats_date) as year_name, SUM(cnt) as date_count FROM stats WHERE stats_type = 'flights_bymonth' AND stats_date >= DATE_SUB(UTC_TIMESTAMP(),INTERVAL 12 MONTH) AND stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name GROUP BY stats_date";
863
				else $query = "SELECT MONTH(stats_date) as month_name, YEAR(stats_date) as year_name, SUM(cnt) as date_count FROM stats WHERE stats_type = 'flights_bymonth' AND stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name GROUP BY stats_date";
864
			} else {
865
				if ($limit) $query = "SELECT EXTRACT(MONTH FROM stats_date) as month_name, EXTRACT(YEAR FROM stats_date) as year_name, SUM(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 IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name GROUP BY stats_date";
866
				else $query = "SELECT EXTRACT(MONTH FROM stats_date) as month_name, EXTRACT(YEAR FROM stats_date) as year_name, SUM(cnt) as date_count FROM stats WHERE stats_type = 'flights_bymonth' AND stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name GROUP BY stats_date";
867
			}
868
			$query_data = array(':filter_name' => $filter_name);
869
		} else {
870
			if ($globalDBdriver == 'mysql') {
871
				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";
872
				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";
873
			} else {
874
				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";
875
				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";
876
			}
877
			$query_data = array(':stats_airline' => $stats_airline,':filter_name' => $filter_name);
878
		}
879
		try {
880
			$sth = $this->db->prepare($query);
881
			$sth->execute($query_data);
882
		} catch(PDOException $e) {
883
			echo "error : ".$e->getMessage();
884
		}
885
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
886
		if (empty($all)) {
887
			if (strpos($stats_airline,'alliance_') !== FALSE) {
888
				$filters = array('alliance' => str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
889
			} else {
890
				$filters = array('airlines' => array($stats_airline));
891
			}
892
			if ($filter_name != '') {
893
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
894
			}
895
			$Spotter = new Spotter($this->db);
896
			$all = $Spotter->countAllMonthsLastYear($filters);
897
		}
898
		return $all;
899
	}
900
901
	public function countAllMarineMonthsLastYear($limit = true,$filter_name = '') {
902
		global $globalDBdriver, $globalStatsFilters;
903
		if ($filter_name == '') $filter_name = $this->filter_name;
904
		if ($globalDBdriver == 'mysql') {
905
			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 = 'marine_bymonth' AND stats_date >= DATE_SUB(UTC_TIMESTAMP(),INTERVAL 12 MONTH) AND filter_name = :filter_name";
906
			else $query = "SELECT MONTH(stats_date) as month_name, YEAR(stats_date) as year_name, cnt as date_count FROM stats WHERE stats_type = 'marine_bymonth' AND filter_name = :filter_name";
907
		} else {
908
			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 = 'marine_bymonth' AND stats_date >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '12 MONTHS' AND filter_name = :filter_name";
909
			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 = 'marine_bymonth' AND filter_name = :filter_name";
910
		}
911
		$query_data = array(':filter_name' => $filter_name);
912
		try {
913
			$sth = $this->db->prepare($query);
914
			$sth->execute($query_data);
915
		} catch(PDOException $e) {
916
			echo "error : ".$e->getMessage();
917
		}
918
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
919
		if (empty($all)) {
920
			$filters = array();
921
			if ($filter_name != '') {
922
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
923
			}
924
			$Marine = new Marine($this->db);
925
			$all = $Marine->countAllMonthsLastYear($filters);
926
		}
927
		return $all;
928
	}
929
930
	public function countAllTrackerMonthsLastYear($limit = true,$filter_name = '') {
931
		global $globalDBdriver, $globalStatsFilters;
932
		if ($filter_name == '') $filter_name = $this->filter_name;
933
		if ($globalDBdriver == 'mysql') {
934
			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 = 'tracker_bymonth' AND stats_date >= DATE_SUB(UTC_TIMESTAMP(),INTERVAL 12 MONTH) AND filter_name = :filter_name";
935
			else $query = "SELECT MONTH(stats_date) as month_name, YEAR(stats_date) as year_name, cnt as date_count FROM stats WHERE stats_type = 'tracker_bymonth' AND filter_name = :filter_name";
936
		} else {
937
			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 = 'tracker_bymonth' AND stats_date >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '12 MONTHS' AND filter_name = :filter_name";
938
			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 = 'tracker_bymonth' AND filter_name = :filter_name";
939
		}
940
		$query_data = array(':filter_name' => $filter_name);
941
		try {
942
			$sth = $this->db->prepare($query);
943
			$sth->execute($query_data);
944
		} catch(PDOException $e) {
945
			echo "error : ".$e->getMessage();
946
		}
947
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
948
		if (empty($all)) {
949
			$filters = array();
950
			if ($filter_name != '') {
951
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
952
			}
953
			$Tracker = new Tracker($this->db);
954
			$all = $Tracker->countAllMonthsLastYear($filters);
955
		}
956
		return $all;
957
	}
958
	
959
	public function countAllDatesLastMonth($stats_airline = '',$filter_name = '') {
960
		global $globalStatsFilters;
961
		if ($filter_name == '') $filter_name = $this->filter_name;
962
		if (strpos($stats_airline,'alliance_') !== FALSE) {
963
			$Spotter = new Spotter($this->db);
964
			$airlines = $Spotter->getAllAirlineNamesByAlliance(str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
965
			$alliance_airlines = array();
966
			foreach ($airlines as $airline) {
967
				$alliance_airlines = array_merge($alliance_airlines,array($airline['airline_icao']));
968
			}
969
			$query = "SELECT flight_date as date_name, SUM(cnt) as date_count FROM stats_flight WHERE stats_type = 'month' AND stats_airline  IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name GROUP BY flight_date";
970
			$query_data = array(':filter_name' => $filter_name);
971
		} else {
972
			$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";
973
			$query_data = array(':stats_airline' => $stats_airline,':filter_name' => $filter_name);
974
		}
975
		try {
976
			$sth = $this->db->prepare($query);
977
			$sth->execute($query_data);
978
		} catch(PDOException $e) {
979
			echo "error : ".$e->getMessage();
980
		}
981
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
982
		if (empty($all)) {
983
			if (strpos($stats_airline,'alliance_') !== FALSE) {
984
				$filters = array('alliance' => str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
985
			} else {
986
				$filters = array('airlines' => array($stats_airline));
987
			}
988
			if ($filter_name != '') {
989
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
990
			}
991
			$Spotter = new Spotter($this->db);
992
			$all = $Spotter->countAllDatesLastMonth($filters);
993
		}
994
		return $all;
995
	}
996
	public function countAllMarineDatesLastMonth($filter_name = '') {
997
		global $globalStatsFilters;
998
		if ($filter_name == '') $filter_name = $this->filter_name;
999
		$query = "SELECT marine_date as date_name, cnt as date_count FROM stats_marine WHERE stats_type = 'month' AND filter_name = :filter_name";
1000
		$query_data = array(':filter_name' => $filter_name);
1001
		try {
1002
			$sth = $this->db->prepare($query);
1003
			$sth->execute($query_data);
1004
		} catch(PDOException $e) {
1005
			echo "error : ".$e->getMessage();
1006
		}
1007
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1008
		if (empty($all)) {
1009
			$filters = array();
1010
			if ($filter_name != '') {
1011
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
1012
			}
1013
			$Marine = new Marine($this->db);
1014
			$all = $Marine->countAllDatesLastMonth($filters);
1015
		}
1016
		return $all;
1017
	}
1018
	public function countAllTrackerDatesLastMonth($filter_name = '') {
1019
		global $globalStatsFilters;
1020
		if ($filter_name == '') $filter_name = $this->filter_name;
1021
		$query = "SELECT tracker_date as date_name, cnt as date_count FROM stats_tracker WHERE stats_type = 'month' AND filter_name = :filter_name";
1022
		$query_data = array(':filter_name' => $filter_name);
1023
		try {
1024
			$sth = $this->db->prepare($query);
1025
			$sth->execute($query_data);
1026
		} catch(PDOException $e) {
1027
			echo "error : ".$e->getMessage();
1028
		}
1029
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1030
		if (empty($all)) {
1031
			$filters = array();
1032
			if ($filter_name != '') {
1033
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
1034
			}
1035
			$Tracker = new Tracker($this->db);
1036
			$all = $Tracker->countAllDatesLastMonth($filters);
1037
		}
1038
		return $all;
1039
	}
1040
	public function countAllDatesLast7Days($stats_airline = '',$filter_name = '') {
1041
		global $globalDBdriver, $globalStatsFilters;
1042
		if ($filter_name == '') $filter_name = $this->filter_name;
1043
		if (strpos($stats_airline,'alliance_') !== FALSE) {
1044
			$Spotter = new Spotter($this->db);
1045
			$airlines = $Spotter->getAllAirlineNamesByAlliance(str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
1046
			$alliance_airlines = array();
1047
			foreach ($airlines as $airline) {
1048
				$alliance_airlines = array_merge($alliance_airlines,array($airline['airline_icao']));
1049
			}
1050
			if ($globalDBdriver == 'mysql') {
1051
				$query = "SELECT flight_date as date_name, SUM(cnt) as date_count FROM stats_flight WHERE stats_type = 'month' AND flight_date >= DATE_SUB(UTC_TIMESTAMP(),INTERVAL 7 DAY) AND stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name GROUP BY flight_date";
1052
			} else {
1053
				$query = "SELECT flight_date as date_name, SUM(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 IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name GROUP BY flight_date";
1054
			}
1055
			$query_data = array(':filter_name' => $filter_name);
1056
		} else {
1057
			if ($globalDBdriver == 'mysql') {
1058
				$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";
1059
			} else {
1060
				$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";
1061
			}
1062
			$query_data = array(':stats_airline' => $stats_airline,':filter_name' => $filter_name);
1063
		}
1064
		try {
1065
			$sth = $this->db->prepare($query);
1066
			$sth->execute($query_data);
1067
		} catch(PDOException $e) {
1068
			echo "error : ".$e->getMessage();
1069
		}
1070
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1071
		if (empty($all)) {
1072
			if (strpos($stats_airline,'alliance_') !== FALSE) {
1073
				$filters = array('alliance' => str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
1074
			} else {
1075
				$filters = array('airlines' => array($stats_airline));
1076
			}
1077
			if ($filter_name != '') {
1078
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
1079
			}
1080
			$Spotter = new Spotter($this->db);
1081
			$all = $Spotter->countAllDatesLast7Days($filters);
1082
		}
1083
		return $all;
1084
	}
1085
	public function countAllMarineDatesLast7Days($filter_name = '') {
1086
		global $globalDBdriver, $globalStatsFilters;
1087
		if ($filter_name == '') $filter_name = $this->filter_name;
1088
		if ($globalDBdriver == 'mysql') {
1089
			$query = "SELECT marine_date as date_name, cnt as date_count FROM stats_marine WHERE stats_type = 'month' AND marine_date >= DATE_SUB(UTC_TIMESTAMP(),INTERVAL 7 DAY) AND filter_name = :filter_name";
1090
		} else {
1091
			$query = "SELECT marine_date as date_name, cnt as date_count FROM stats_marine WHERE stats_type = 'month' AND marine_date::timestamp >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '7 DAYS' AND filter_name = :filter_name";
1092
		}
1093
		$query_data = array(':filter_name' => $filter_name);
1094
		try {
1095
			$sth = $this->db->prepare($query);
1096
			$sth->execute($query_data);
1097
		} catch(PDOException $e) {
1098
			echo "error : ".$e->getMessage();
1099
		}
1100
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1101
		if (empty($all)) {
1102
			$filters = array();
1103
			if ($filter_name != '') {
1104
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
1105
			}
1106
			$Marine = new Marine($this->db);
1107
			$all = $Marine->countAllDatesLast7Days($filters);
1108
		}
1109
		return $all;
1110
	}
1111
	public function countAllTrackerDatesLast7Days($filter_name = '') {
1112
		global $globalDBdriver, $globalStatsFilters;
1113
		if ($filter_name == '') $filter_name = $this->filter_name;
1114
		if ($globalDBdriver == 'mysql') {
1115
			$query = "SELECT tracker_date as date_name, cnt as date_count FROM stats_tracker WHERE stats_type = 'month' AND tracker_date >= DATE_SUB(UTC_TIMESTAMP(),INTERVAL 7 DAY) AND filter_name = :filter_name";
1116
		} else {
1117
			$query = "SELECT tracker_date as date_name, cnt as date_count FROM stats_tracker WHERE stats_type = 'month' AND tracker_date::timestamp >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '7 DAYS' AND filter_name = :filter_name";
1118
		}
1119
		$query_data = array(':filter_name' => $filter_name);
1120
		try {
1121
			$sth = $this->db->prepare($query);
1122
			$sth->execute($query_data);
1123
		} catch(PDOException $e) {
1124
			echo "error : ".$e->getMessage();
1125
		}
1126
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1127
		if (empty($all)) {
1128
			$filters = array();
1129
			if ($filter_name != '') {
1130
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
1131
			}
1132
			$Tracker = new Tracker($this->db);
1133
			$all = $Tracker->countAllDatesLast7Days($filters);
1134
		}
1135
		return $all;
1136
	}
1137
	public function countAllDates($stats_airline = '',$filter_name = '') {
1138
		global $globalStatsFilters;
1139
		if ($filter_name == '') $filter_name = $this->filter_name;
1140
		if (strpos($stats_airline,'alliance_') !== FALSE) {
1141
			$Spotter = new Spotter($this->db);
1142
			$airlines = $Spotter->getAllAirlineNamesByAlliance(str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
1143
			$alliance_airlines = array();
1144
			foreach ($airlines as $airline) {
1145
				$alliance_airlines = array_merge($alliance_airlines,array($airline['airline_icao']));
1146
			}
1147
			$query = "SELECT flight_date as date_name, SUM(cnt) as date_count FROM stats_flight WHERE stats_type = 'date' AND stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name GROUP BY flight_date ORDER BY date_count DESC";
1148
			$query_data = array(':filter_name' => $filter_name);
1149
		} else {
1150
			$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 ORDER BY date_count DESC";
1151
			$query_data = array(':stats_airline' => $stats_airline,':filter_name' => $filter_name);
1152
		}
1153
		try {
1154
			$sth = $this->db->prepare($query);
1155
			$sth->execute($query_data);
1156
		} catch(PDOException $e) {
1157
			echo "error : ".$e->getMessage();
1158
		}
1159
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1160
		if (empty($all)) {
1161
			if (strpos($stats_airline,'alliance_') !== FALSE) {
1162
				$filters = array('alliance' => str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
1163
			} else {
1164
				$filters = array('airlines' => array($stats_airline));
1165
			}
1166
			if ($filter_name != '') {
1167
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
1168
			}
1169
			$Spotter = new Spotter($this->db);
1170
			$all = $Spotter->countAllDates($filters);
1171
		}
1172
		return $all;
1173
	}
1174
	public function countAllDatesMarine($filter_name = '') {
1175
		global $globalStatsFilters;
1176
		if ($filter_name == '') $filter_name = $this->filter_name;
1177
		$query = "SELECT marine_date as date_name, cnt as date_count FROM stats_marine WHERE stats_type = 'date' AND filter_name = :filter_name ORDER BY date_count DESC";
1178
		$query_data = array(':filter_name' => $filter_name);
1179
		try {
1180
			$sth = $this->db->prepare($query);
1181
			$sth->execute($query_data);
1182
		} catch(PDOException $e) {
1183
			echo "error : ".$e->getMessage();
1184
		}
1185
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1186
		if (empty($all)) {
1187
			$filters = array();
1188
			if ($filter_name != '') {
1189
				$filters = $globalStatsFilters[$filter_name];
1190
			}
1191
			$Marine = new Marine($this->db);
1192
			$all = $Marine->countAllDates($filters);
1193
		}
1194
		return $all;
1195
	}
1196
	public function countAllDatesTracker($filter_name = '') {
1197
		global $globalStatsFilters;
1198
		if ($filter_name == '') $filter_name = $this->filter_name;
1199
		$query = "SELECT tracker_date as date_name, cnt as date_count FROM stats_tracker WHERE stats_type = 'date' AND filter_name = :filter_name ORDER BY date_count DESC";
1200
		$query_data = array(':filter_name' => $filter_name);
1201
		try {
1202
			$sth = $this->db->prepare($query);
1203
			$sth->execute($query_data);
1204
		} catch(PDOException $e) {
1205
			echo "error : ".$e->getMessage();
1206
		}
1207
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1208
		if (empty($all)) {
1209
			$filters = array();
1210
			if ($filter_name != '') {
1211
				$filters = $globalStatsFilters[$filter_name];
1212
			}
1213
			$Tracker = new Tracker($this->db);
1214
			$all = $Tracker->countAllDates($filters);
1215
		}
1216
		return $all;
1217
	}
1218
	public function countAllDatesByAirlines($filter_name = '') {
1219
		global $globalStatsFilters;
1220
		if ($filter_name == '') $filter_name = $this->filter_name;
1221
		$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";
1222
		$query_data = array('filter_name' => $filter_name);
1223
		try {
1224
			$sth = $this->db->prepare($query);
1225
			$sth->execute($query_data);
1226
		} catch(PDOException $e) {
1227
			echo "error : ".$e->getMessage();
1228
		}
1229
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1230
		if (empty($all)) {
1231
			$filters = array();
1232
			if ($filter_name != '') {
1233
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
1234
			}
1235
			$Spotter = new Spotter($this->db);
1236
			$all = $Spotter->countAllDatesByAirlines($filters);
1237
		}
1238
		return $all;
1239
	}
1240
	public function countAllMonths($stats_airline = '',$filter_name = '') {
1241
		global $globalStatsFilters, $globalDBdriver;
1242
		if ($filter_name == '') $filter_name = $this->filter_name;
1243
		if (strpos($stats_airline,'alliance_') !== FALSE) {
1244
			$Spotter = new Spotter($this->db);
1245
			$airlines = $Spotter->getAllAirlineNamesByAlliance(str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
1246
			$alliance_airlines = array();
1247
			foreach ($airlines as $airline) {
1248
				$alliance_airlines = array_merge($alliance_airlines,array($airline['airline_icao']));
1249
			}
1250
			if ($globalDBdriver == 'mysql') {
1251
				$query = "SELECT YEAR(stats_date) AS year_name,MONTH(stats_date) AS month_name, SUM(cnt) as date_count FROM stats WHERE stats_type = 'flights_bymonth' AND stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name GROUP BY stats_date ORDER BY date_count DESC";
1252
			} else {
1253
				$query = "SELECT EXTRACT(YEAR FROM stats_date) AS year_name,EXTRACT(MONTH FROM stats_date) AS month_name, SUM(cnt) as date_count FROM stats WHERE stats_type = 'flights_bymonth' AND stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name GROUP BY stats_date ORDER BY date_count DESC";
1254
			}
1255
			$query_data = array(':filter_name' => $filter_name);
1256
		} else {
1257
			if ($globalDBdriver == 'mysql') {
1258
				$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 ORDER BY date_count DESC";
1259
			} else {
1260
				$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 ORDER BY date_count DESC";
1261
			}
1262
			$query_data = array(':stats_airline' => $stats_airline, ':filter_name' => $filter_name);
1263
		}
1264
		try {
1265
			$sth = $this->db->prepare($query);
1266
			$sth->execute($query_data);
1267
		} catch(PDOException $e) {
1268
			echo "error : ".$e->getMessage();
1269
		}
1270
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1271
		if (empty($all)) {
1272
			if (strpos($stats_airline,'alliance_') !== FALSE) {
1273
				$filters = array('alliance' => str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
1274
			} else {
1275
				$filters = array('airlines' => array($stats_airline));
1276
			}
1277
			if ($filter_name != '') {
1278
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
1279
			}
1280
			$Spotter = new Spotter($this->db);
1281
			$all = $Spotter->countAllMonths($filters);
1282
		}
1283
		return $all;
1284
	}
1285
	public function countFatalitiesLast12Months() {
1286
		global $globalStatsFilters, $globalDBdriver;
1287
		if ($globalDBdriver == 'mysql') {
1288
			$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";
1289
		} else {
1290
			$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";
1291
		}
1292
		try {
1293
			$sth = $this->db->prepare($query);
1294
			$sth->execute();
1295
		} catch(PDOException $e) {
1296
			echo "error : ".$e->getMessage();
1297
		}
1298
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1299
		if (empty($all)) {
1300
			$Accident = new Accident($this->db);
1301
			$all = $Accident->countFatalitiesLast12Months();
1302
		}
1303
		return $all;
1304
	}
1305
	public function countFatalitiesByYear() {
1306
		global $globalStatsFilters, $globalDBdriver;
1307
		if ($globalDBdriver == 'mysql') {
1308
			$query = "SELECT YEAR(stats_date) AS year, cnt as count FROM stats WHERE stats_type = 'fatalities_byyear' ORDER BY stats_date";
1309
		} else {
1310
			$query = "SELECT EXTRACT(YEAR FROM stats_date) AS year, cnt as count FROM stats WHERE stats_type = 'fatalities_byyear' ORDER BY stats_date";
1311
		}
1312
		try {
1313
			$sth = $this->db->prepare($query);
1314
			$sth->execute();
1315
		} catch(PDOException $e) {
1316
			echo "error : ".$e->getMessage();
1317
		}
1318
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1319
		if (empty($all)) {
1320
			$Accident = new Accident($this->db);
1321
			$all = $Accident->countFatalitiesByYear();
1322
		}
1323
		return $all;
1324
	}
1325
	public function countAllMilitaryMonths($filter_name = '') {
1326
		global $globalStatsFilters;
1327
		if ($filter_name == '') $filter_name = $this->filter_name;
1328
		$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";
1329
		try {
1330
			$sth = $this->db->prepare($query);
1331
			$sth->execute(array(':filter_name' => $filter_name));
1332
		} catch(PDOException $e) {
1333
			echo "error : ".$e->getMessage();
1334
		}
1335
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1336
		if (empty($all)) {
1337
			$filters = array();
1338
			if ($filter_name != '') {
1339
					$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
1340
			}
1341
			$Spotter = new Spotter($this->db);
1342
			$all = $Spotter->countAllMilitaryMonths($filters);
1343
		}
1344
		return $all;
1345
	}
1346
	public function countAllHours($orderby = 'hour',$limit = true,$stats_airline = '',$filter_name = '') {
1347
		global $globalTimezone, $globalDBdriver, $globalStatsFilters;
1348
		if ($filter_name == '') $filter_name = $this->filter_name;
1349
		if (strpos($stats_airline,'alliance_') !== FALSE) {
1350
			$Spotter = new Spotter($this->db);
1351
			$airlines = $Spotter->getAllAirlineNamesByAlliance(str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
1352
			$alliance_airlines = array();
1353
			foreach ($airlines as $airline) {
1354
				$alliance_airlines = array_merge($alliance_airlines,array($airline['airline_icao']));
1355
			}
1356
			if ($limit) $query = "SELECT flight_date as hour_name, SUM(cnt) as hour_count FROM stats_flight WHERE stats_type = 'hour' AND stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name GROUP BY flight_date";
1357
			else $query = "SELECT flight_date as hour_name, SUM(cnt) as hour_count FROM stats_flight WHERE stats_type = 'hour' AND stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name GROUP BY flight_date";
1358
			$query_data = array(':filter_name' => $filter_name);
1359
		} else {
1360
			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";
1361
			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";
1362
			$query_data = array(':stats_airline' => $stats_airline, ':filter_name' => $filter_name);
1363
		}
1364
		if ($orderby == 'hour') {
1365
			if ($globalDBdriver == 'mysql') {
1366
				$query .= " ORDER BY CAST(flight_date AS UNSIGNED) ASC";
1367
			} else {
1368
				$query .= " ORDER BY CAST(flight_date AS integer) ASC";
1369
			}
1370
		}
1371
		if ($orderby == 'count') $query .= " ORDER BY hour_count DESC";
1372
		try {
1373
			$sth = $this->db->prepare($query);
1374
			$sth->execute($query_data);
1375
		} catch(PDOException $e) {
1376
			echo "error : ".$e->getMessage();
1377
		}
1378
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1379
		if (empty($all)) {
1380
			if (strpos($stats_airline,'alliance_') !== FALSE) {
1381
				$filters = array('alliance' => str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
1382
			} else {
1383
				$filters = array('airlines' => array($stats_airline));
1384
			}
1385
			if ($filter_name != '') {
1386
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
1387
			}
1388
			$Spotter = new Spotter($this->db);
1389
			$all = $Spotter->countAllHours($orderby,$filters);
1390
		}
1391
		return $all;
1392
	}
1393
	public function countAllMarineHours($orderby = 'hour',$limit = true,$filter_name = '') {
1394
		global $globalTimezone, $globalDBdriver, $globalStatsFilters;
1395
		if ($filter_name == '') $filter_name = $this->filter_name;
1396
		if ($limit) $query = "SELECT marine_date as hour_name, cnt as hour_count FROM stats_marine WHERE stats_type = 'hour' AND filter_name = :filter_name";
1397
		else $query = "SELECT marine_date as hour_name, cnt as hour_count FROM stats_marine WHERE stats_type = 'hour' AND filter_name = :filter_name";
1398
		$query_data = array(':filter_name' => $filter_name);
1399
		if ($orderby == 'hour') {
1400
			if ($globalDBdriver == 'mysql') {
1401
				$query .= " ORDER BY CAST(marine_date AS UNSIGNED) ASC";
1402
			} else {
1403
				$query .= " ORDER BY CAST(marine_date AS integer) ASC";
1404
			}
1405
		}
1406
		if ($orderby == 'count') $query .= " ORDER BY hour_count DESC";
1407
		try {
1408
			$sth = $this->db->prepare($query);
1409
			$sth->execute($query_data);
1410
		} catch(PDOException $e) {
1411
			echo "error : ".$e->getMessage();
1412
		}
1413
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1414
		if (empty($all)) {
1415
			$filters = array();
1416
			if ($filter_name != '') {
1417
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
1418
			}
1419
			$Marine = new Marine($this->db);
1420
			$all = $Marine->countAllHours($orderby,$filters);
1421
		}
1422
		return $all;
1423
	}
1424
	public function countAllTrackerHours($orderby = 'hour',$limit = true,$filter_name = '') {
1425
		global $globalTimezone, $globalDBdriver, $globalStatsFilters;
1426
		if ($filter_name == '') $filter_name = $this->filter_name;
1427
		if ($limit) $query = "SELECT tracker_date as hour_name, cnt as hour_count FROM stats_tracker WHERE stats_type = 'hour' AND filter_name = :filter_name";
1428
		else $query = "SELECT tracker_date as hour_name, cnt as hour_count FROM stats_tracker WHERE stats_type = 'hour' AND filter_name = :filter_name";
1429
		$query_data = array(':filter_name' => $filter_name);
1430
		if ($orderby == 'hour') {
1431
			if ($globalDBdriver == 'mysql') {
1432
				$query .= " ORDER BY CAST(tracker_date AS UNSIGNED) ASC";
1433
			} else {
1434
				$query .= " ORDER BY CAST(tracker_date AS integer) ASC";
1435
			}
1436
		}
1437
		if ($orderby == 'count') $query .= " ORDER BY hour_count DESC";
1438
		try {
1439
			$sth = $this->db->prepare($query);
1440
			$sth->execute($query_data);
1441
		} catch(PDOException $e) {
1442
			echo "error : ".$e->getMessage();
1443
		}
1444
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1445
		if (empty($all)) {
1446
			$filters = array();
1447
			if ($filter_name != '') {
1448
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
1449
			}
1450
			$Tracker = new Tracker($this->db);
1451
			$all = $Tracker->countAllHours($orderby,$filters);
1452
		}
1453
		return $all;
1454
	}
1455
	public function countOverallFlights($stats_airline = '', $filter_name = '',$year = '',$month = '') {
1456
		global $globalStatsFilters;
1457
		if ($filter_name == '') $filter_name = $this->filter_name;
1458
		if ($year == '') $year = date('Y');
1459
		$all = $this->getSumStats('flights_bymonth',$year,$stats_airline,$filter_name,$month);
1460
		if (empty($all)) {
1461
			if (strpos($stats_airline,'alliance_') !== FALSE) {
1462
				$filters = array('alliance' => str_replace('_',' ',str_replace('alliance_','',$stats_airline)),'year' => $year,'month' => $month);
1463
			} else {
1464
				$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
1465
			}
1466
			if ($filter_name != '') {
1467
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
1468
			}
1469
			$Spotter = new Spotter($this->db);
1470
			//$all = $Spotter->countOverallFlights($filters,$year,$month);
1471
			$all = $Spotter->countOverallFlights($filters);
1472
		}
1473
		return $all;
1474
	}
1475
	public function countOverallMarine($filter_name = '',$year = '',$month = '') {
1476
		global $globalStatsFilters;
1477
		if ($filter_name == '') $filter_name = $this->filter_name;
1478
		if ($year == '') $year = date('Y');
1479
		$all = $this->getSumStats('marine_bymonth',$year,'',$filter_name,$month);
1480
		if (empty($all)) {
1481
			$filters = array('year' => $year,'month' => $month);
1482
			if ($filter_name != '') {
1483
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
1484
			}
1485
			$Marine = new Marine($this->db);
1486
			//$all = $Spotter->countOverallFlights($filters,$year,$month);
1487
			$all = $Marine->countOverallMarine($filters);
1488
		}
1489
		return $all;
1490
	}
1491
	public function countOverallTracker($filter_name = '',$year = '',$month = '') {
1492
		global $globalStatsFilters;
1493
		if ($filter_name == '') $filter_name = $this->filter_name;
1494
		if ($year == '') $year = date('Y');
1495
		$all = $this->getSumStats('tracker_bymonth',$year,'',$filter_name,$month);
1496
		if (empty($all)) {
1497
			$filters = array('year' => $year,'month' => $month);
1498
			if ($filter_name != '') {
1499
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
1500
			}
1501
			$Tracker = new Tracker($this->db);
1502
			//$all = $Spotter->countOverallFlights($filters,$year,$month);
1503
			$all = $Tracker->countOverallTracker($filters);
1504
		}
1505
		return $all;
1506
	}
1507
	public function countOverallMilitaryFlights($filter_name = '',$year = '', $month = '') {
1508
		global $globalStatsFilters;
1509
		if ($filter_name == '') $filter_name = $this->filter_name;
1510
		if ($year == '') $year = date('Y');
1511
		$all = $this->getSumStats('military_flights_bymonth',$year,'',$filter_name,$month);
1512
		if (empty($all)) {
1513
			$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...
1514
			$filters = array('year' => $year,'month' => $month);
1515
			if ($filter_name != '') {
1516
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
1517
			}
1518
			$Spotter = new Spotter($this->db);
1519
			//$all = $Spotter->countOverallMilitaryFlights($filters,$year,$month);
1520
			$all = $Spotter->countOverallMilitaryFlights($filters);
1521
		}
1522
		return $all;
1523
	}
1524
	public function countOverallArrival($stats_airline = '',$filter_name = '', $year = '', $month = '') {
1525
		global $globalStatsFilters;
1526
		if ($filter_name == '') $filter_name = $this->filter_name;
1527
		if ($year == '') $year = date('Y');
1528
		$all = $this->getSumStats('realarrivals_bymonth',$year,$stats_airline,$filter_name,$month);
1529
		if (empty($all)) {
1530
			if (strpos($stats_airline,'alliance_') !== FALSE) {
1531
				$filters = array('alliance' => str_replace('_',' ',str_replace('alliance_','',$stats_airline)),'year' => $year,'month' => $month);
1532
			} else {
1533
				$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
1534
			}
1535
			if ($filter_name != '') {
1536
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
1537
			}
1538
			$Spotter = new Spotter($this->db);
1539
			//$all = $Spotter->countOverallArrival($filters,$year,$month);
1540
			$all = $Spotter->countOverallArrival($filters);
1541
		}
1542
		return $all;
1543
	}
1544
	public function countOverallAircrafts($stats_airline = '',$filter_name = '',$year = '', $month = '') {
1545
		global $globalStatsFilters;
1546
		if ($filter_name == '') $filter_name = $this->filter_name;
1547
		if (strpos($stats_airline,'alliance_') !== FALSE) {
1548
			$Spotter = new Spotter($this->db);
1549
			$airlines = $Spotter->getAllAirlineNamesByAlliance(str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
1550
			if ($year == '' && $month == '') {
1551
				$alliance_airlines = array();
1552
				foreach ($airlines as $airline) {
1553
					$alliance_airlines = array_merge($alliance_airlines,array($airline['airline_icao']));
1554
				}
1555
				$query = "SELECT COUNT(*) AS nb FROM stats_aircraft WHERE stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name";
1556
				try {
1557
					$sth = $this->db->prepare($query);
1558
					$sth->execute(array(':filter_name' => $filter_name));
1559
				} catch(PDOException $e) {
1560
					echo "error : ".$e->getMessage();
1561
				}
1562
				$result = $sth->fetchAll(PDO::FETCH_ASSOC);
1563
				$all = $result[0]['nb'];
1564
			} else $all = $this->getSumStats('aircrafts_bymonth',$year,$stats_airline,$filter_name,$month);
1565
		} else {
1566
			if ($year == '' && $month == '') {
1567
				$query = "SELECT COUNT(*) AS nb FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name";
1568
				try {
1569
					$sth = $this->db->prepare($query);
1570
					$sth->execute(array(':filter_name' => $filter_name,':stats_airline' => $stats_airline));
1571
				} catch(PDOException $e) {
1572
					echo "error : ".$e->getMessage();
1573
				}
1574
				$result = $sth->fetchAll(PDO::FETCH_ASSOC);
1575
				$all = $result[0]['nb'];
1576
			} else $all = $this->getSumStats('aircrafts_bymonth',$year,$stats_airline,$filter_name,$month);
1577
		}
1578
		if (empty($all)) {
1579
			if (strpos($stats_airline,'alliance_') !== FALSE) {
1580
				$filters = array('alliance' => str_replace('_',' ',str_replace('alliance_','',$stats_airline)),'year' => $year,'month' => $month);
1581
			} else {
1582
				$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
1583
			}
1584
			if ($filter_name != '') {
1585
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
1586
			}
1587
			$Spotter = new Spotter($this->db);
1588
			//$all = $Spotter->countOverallAircrafts($filters,$year,$month);
1589
			$all = $Spotter->countOverallAircrafts($filters);
1590
		}
1591
		return $all;
1592
	}
1593
	public function countOverallAirlines($filter_name = '',$year = '',$month = '') {
1594
		global $globalStatsFilters;
1595
		if ($filter_name == '') $filter_name = $this->filter_name;
1596
		if ($year == '' && $month == '') {
1597
			$query = "SELECT COUNT(*) AS nb_airline FROM stats_airline WHERE filter_name = :filter_name";
1598
			try {
1599
				$sth = $this->db->prepare($query);
1600
				$sth->execute(array(':filter_name' => $filter_name));
1601
			} catch(PDOException $e) {
1602
				echo "error : ".$e->getMessage();
1603
			}
1604
			$result = $sth->fetchAll(PDO::FETCH_ASSOC);
1605
			$all = $result[0]['nb_airline'];
1606
		} else $all = $this->getSumStats('airlines_bymonth',$year,'',$filter_name,$month);
1607
		if (empty($all)) {
1608
			$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...
1609
			$filters = array('year' => $year,'month' => $month);
1610
			if ($filter_name != '') {
1611
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
1612
			}
1613
			$Spotter = new Spotter($this->db);
1614
			//$all = $Spotter->countOverallAirlines($filters,$year,$month);
1615
			$all = $Spotter->countOverallAirlines($filters);
1616
		}
1617
		return $all;
1618
	}
1619
	public function countOverallMarineTypes($filter_name = '',$year = '',$month = '') {
1620
		global $globalStatsFilters;
1621
		if ($filter_name == '') $filter_name = $this->filter_name;
1622
		$all = array();
1623
		if ($year == '' && $month == '') {
1624
			$query = "SELECT COUNT(*) AS nb_type FROM stats_marine_type WHERE filter_name = :filter_name";
1625
			try {
1626
				$sth = $this->db->prepare($query);
1627
				$sth->execute(array(':filter_name' => $filter_name));
1628
			} catch(PDOException $e) {
1629
				echo "error : ".$e->getMessage();
1630
			}
1631
			$result = $sth->fetchAll(PDO::FETCH_ASSOC);
1632
			$all = $result[0]['nb_type'];
1633
		}
1634
		if (empty($all)) {
1635
			$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...
1636
			$filters = array('year' => $year,'month' => $month);
1637
			if ($filter_name != '') {
1638
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
1639
			}
1640
			$Marine = new Marine($this->db);
1641
			//$all = $Spotter->countOverallAirlines($filters,$year,$month);
1642
			$all = $Marine->countOverallMarineTypes($filters);
1643
		}
1644
		return $all;
1645
	}
1646
	public function countOverallOwners($stats_airline = '',$filter_name = '',$year = '', $month = '') {
1647
		global $globalStatsFilters;
1648
		if ($filter_name == '') $filter_name = $this->filter_name;
1649
		if (strpos($stats_airline,'alliance_') !== FALSE) {
1650
			$Spotter = new Spotter($this->db);
1651
			$airlines = $Spotter->getAllAirlineNamesByAlliance(str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
1652
			if ($year == '' && $month == '') {
1653
				$alliance_airlines = array();
1654
				foreach ($airlines as $airline) {
1655
					$alliance_airlines = array_merge($alliance_airlines,array($airline['airline_icao']));
1656
				}
1657
				$query = "SELECT count(*) as nb FROM stats_owner WHERE stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name";
1658
				$query_values = array(':filter_name' => $filter_name);
1659
				try {
1660
					$sth = $this->db->prepare($query);
1661
					$sth->execute($query_values);
1662
				} catch(PDOException $e) {
1663
					echo "error : ".$e->getMessage();
1664
				}
1665
				$result = $sth->fetchAll(PDO::FETCH_ASSOC);
1666
				$all = $result[0]['nb'];
1667
			} else {
1668
				$all = $this->getSumStats('owners_bymonth',$year,$stats_airline,$filter_name,$month);
1669
			}
1670
		} else {
1671
			if ($year == '' && $month == '') {
1672
				$query = "SELECT count(*) as nb FROM stats_owner WHERE stats_airline = :stats_airline AND filter_name = :filter_name";
1673
				$query_values = array(':stats_airline' => $stats_airline, ':filter_name' => $filter_name);
1674
				try {
1675
					$sth = $this->db->prepare($query);
1676
					$sth->execute($query_values);
1677
				} catch(PDOException $e) {
1678
					echo "error : ".$e->getMessage();
1679
				}
1680
				$result = $sth->fetchAll(PDO::FETCH_ASSOC);
1681
				$all = $result[0]['nb'];
1682
			} else {
1683
				$all = $this->getSumStats('owners_bymonth',$year,$stats_airline,$filter_name,$month);
1684
			}
1685
		}
1686
		if (empty($all)) {
1687
			if (strpos($stats_airline,'alliance_') !== FALSE) {
1688
				$filters = array('alliance' => str_replace('_',' ',str_replace('alliance_','',$stats_airline)),'year' => $year,'month' => $month);
1689
			} else {
1690
				$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
1691
			}
1692
			if ($filter_name != '') {
1693
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
1694
			}
1695
			$Spotter = new Spotter($this->db);
1696
			//$all = $Spotter->countOverallOwners($filters,$year,$month);
1697
			$all = $Spotter->countOverallOwners($filters);
1698
		}
1699
		return $all;
1700
	}
1701
	public function countOverallPilots($stats_airline = '',$filter_name = '',$year = '',$month = '') {
1702
		global $globalStatsFilters;
1703
		if ($filter_name == '') $filter_name = $this->filter_name;
1704
		//if ($year == '') $year = date('Y');
1705
		if ($year == '' && $month == '') {
1706
			$query = "SELECT count(*) as nb FROM stats_pilot WHERE stats_airline = :stats_airline AND filter_name = :filter_name";
1707
			$query_values = array(':stats_airline' => $stats_airline, ':filter_name' => $filter_name);
1708
			try {
1709
				$sth = $this->db->prepare($query);
1710
				$sth->execute($query_values);
1711
			} catch(PDOException $e) {
1712
				echo "error : ".$e->getMessage();
1713
			}
1714
			$result = $sth->fetchAll(PDO::FETCH_ASSOC);
1715
			$all = $result[0]['nb'];
1716
		} else {
1717
			$all = $this->getSumStats('pilots_bymonth',$year,$stats_airline,$filter_name,$month);
1718
		}
1719
		if (empty($all)) {
1720
			$filters = array('airlines' => array($stats_airline),'year' => $year,'month' => $month);
1721
			if ($filter_name != '') {
1722
				$filters = array_merge($filters,$globalStatsFilters[$filter_name]);
1723
			}
1724
			$Spotter = new Spotter($this->db);
1725
			//$all = $Spotter->countOverallPilots($filters,$year,$month);
1726
			$all = $Spotter->countOverallPilots($filters);
1727
		}
1728
		return $all;
1729
	}
1730
1731
	public function getLast7DaysAirports($airport_icao = '', $stats_airline = '',$filter_name = '') {
1732
		if ($filter_name == '') $filter_name = $this->filter_name;
1733
		if (strpos($stats_airline,'alliance_') !== FALSE) {
1734
			$Spotter = new Spotter($this->db);
1735
			$airlines = $Spotter->getAllAirlineNamesByAlliance(str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
1736
			$alliance_airlines = array();
1737
			foreach ($airlines as $airline) {
1738
				$alliance_airlines = array_merge($alliance_airlines,array($airline['airline_icao']));
1739
			}
1740
			$query = "SELECT * FROM stats_airport WHERE stats_type = 'daily' AND airport_icao = :airport_icao AND stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name ORDER BY date";
1741
			$query_values = array(':airport_icao' => $airport_icao,':filter_name' => $filter_name);
1742
		} else {
1743
			$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";
1744
			$query_values = array(':airport_icao' => $airport_icao,':stats_airline' => $stats_airline, ':filter_name' => $filter_name);
1745
		}
1746
		try {
1747
			$sth = $this->db->prepare($query);
1748
			$sth->execute($query_values);
1749
		} catch(PDOException $e) {
1750
			echo "error : ".$e->getMessage();
1751
		}
1752
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1753
		return $all;
1754
	}
1755
	public function getStats($type,$stats_airline = '', $filter_name = '') {
1756
		if ($filter_name == '') $filter_name = $this->filter_name;
1757
		$query = "SELECT * FROM stats WHERE stats_type = :type AND stats_airline = :stats_airline AND filter_name = :filter_name ORDER BY stats_date";
1758
		$query_values = array(':type' => $type,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
1759
		try {
1760
			$sth = $this->db->prepare($query);
1761
			$sth->execute($query_values);
1762
		} catch(PDOException $e) {
1763
			echo "error : ".$e->getMessage();
1764
		}
1765
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1766
		return $all;
1767
	}
1768
	public function deleteStatsByType($type,$stats_airline = '', $filter_name = '') {
1769
		if ($filter_name == '') $filter_name = $this->filter_name;
1770
		$query = "DELETE FROM stats WHERE stats_type = :type AND stats_airline = :stats_airline AND filter_name = :filter_name";
1771
		$query_values = array(':type' => $type,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
1772
		try {
1773
			$sth = $this->db->prepare($query);
1774
			$sth->execute($query_values);
1775
		} catch(PDOException $e) {
1776
			echo "error : ".$e->getMessage();
1777
		}
1778
	}
1779
	public function getSumStats($type,$year,$stats_airline = '',$filter_name = '',$month = '') {
1780
		if ($filter_name == '') $filter_name = $this->filter_name;
1781
		global $globalArchiveMonths, $globalDBdriver;
1782
		if (strpos($stats_airline,'alliance_') !== FALSE) {
1783
			$Spotter = new Spotter($this->db);
1784
			$airlines = $Spotter->getAllAirlineNamesByAlliance(str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
1785
			$alliance_airlines = array();
1786
			foreach ($airlines as $airline) {
1787
				$alliance_airlines = array_merge($alliance_airlines,array($airline['airline_icao']));
1788
			}
1789
			if ($globalDBdriver == 'mysql') {
1790
				if ($month == '') {
1791
					$query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND YEAR(stats_date) = :year AND stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name";
1792
					$query_values = array(':type' => $type, ':year' => $year, ':filter_name' => $filter_name);
1793
				} else {
1794
					$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 IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name";
1795
					$query_values = array(':type' => $type, ':year' => $year, ':filter_name' => $filter_name,':month' => $month);
1796
				}
1797
			} else {
1798
				if ($month == '') {
1799
					$query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND EXTRACT(YEAR FROM stats_date) = :year AND stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name";
1800
					$query_values = array(':type' => $type, ':year' => $year, ':filter_name' => $filter_name);
1801
				} else {
1802
					$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 IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name";
1803
					$query_values = array(':type' => $type, ':year' => $year, ':filter_name' => $filter_name,':month' => $month);
1804
				}
1805
			}
1806
		} else {
1807
			if ($globalDBdriver == 'mysql') {
1808
				if ($month == '') {
1809
					$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";
1810
					$query_values = array(':type' => $type, ':year' => $year, ':stats_airline' => $stats_airline,':filter_name' => $filter_name);
1811
				} else {
1812
					$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";
1813
					$query_values = array(':type' => $type, ':year' => $year, ':stats_airline' => $stats_airline,':filter_name' => $filter_name,':month' => $month);
1814
				}
1815
			} else {
1816
				if ($month == '') {
1817
					$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";
1818
					$query_values = array(':type' => $type, ':year' => $year, ':stats_airline' => $stats_airline,':filter_name' => $filter_name);
1819
				} else {
1820
					$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";
1821
					$query_values = array(':type' => $type, ':year' => $year, ':stats_airline' => $stats_airline,':filter_name' => $filter_name,':month' => $month);
1822
				}
1823
			}
1824
		}
1825
		try {
1826
			$sth = $this->db->prepare($query);
1827
			$sth->execute($query_values);
1828
		} catch(PDOException $e) {
1829
			echo "error : ".$e->getMessage();
1830
		}
1831
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1832
		return $all[0]['total'];
1833
	}
1834
	public function getStatsTotal($type, $stats_airline = '', $filter_name = '') {
1835
		global $globalArchiveMonths, $globalDBdriver;
1836
		if ($filter_name == '') $filter_name = $this->filter_name;
1837
		if (strpos($stats_airline,'alliance_') !== FALSE) {
1838
			$Spotter = new Spotter($this->db);
1839
			$airlines = $Spotter->getAllAirlineNamesByAlliance(str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
1840
			$alliance_airlines = array();
1841
			foreach ($airlines as $airline) {
1842
				$alliance_airlines = array_merge($alliance_airlines,array($airline['airline_icao']));
1843
			}
1844
			if ($globalDBdriver == 'mysql') {
1845
				$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 IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name";
1846
			} else {
1847
				$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 IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name";
1848
			}
1849
			$query_values = array(':type' => $type, ':filter_name' => $filter_name);
1850
		} else {
1851
			if ($globalDBdriver == 'mysql') {
1852
				$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";
1853
			} else {
1854
				$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";
1855
			}
1856
			$query_values = array(':type' => $type, ':stats_airline' => $stats_airline, ':filter_name' => $filter_name);
1857
		}
1858
		try {
1859
			$sth = $this->db->prepare($query);
1860
			$sth->execute($query_values);
1861
		} catch(PDOException $e) {
1862
			echo "error : ".$e->getMessage();
1863
		}
1864
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1865
		return $all[0]['total'];
1866
	}
1867
	public function getStatsAircraftTotal($stats_airline = '', $filter_name = '') {
1868
		global $globalArchiveMonths, $globalDBdriver;
1869
		if ($filter_name == '') $filter_name = $this->filter_name;
1870
		if (strpos($stats_airline,'alliance_') !== FALSE) {
1871
			$Spotter = new Spotter($this->db);
1872
			$airlines = $Spotter->getAllAirlineNamesByAlliance(str_replace('_',' ',str_replace('alliance_','',$stats_airline)));
1873
			$alliance_airlines = array();
1874
			foreach ($airlines as $airline) {
1875
				$alliance_airlines = array_merge($alliance_airlines,array($airline['airline_icao']));
1876
			}
1877
			if ($globalDBdriver == 'mysql') {
1878
				$query = "SELECT SUM(cnt) as total FROM stats_aircraft WHERE stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name";
1879
			} else {
1880
				$query = "SELECT SUM(cnt) as total FROM stats_aircraft WHERE stats_airline IN ('".implode("','",$alliance_airlines)."') AND filter_name = :filter_name";
1881
			}
1882
		} else {
1883
			if ($globalDBdriver == 'mysql') {
1884
				$query = "SELECT SUM(cnt) as total FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name";
1885
			} else {
1886
				$query = "SELECT SUM(cnt) as total FROM stats_aircraft WHERE stats_airline = :stats_airline AND filter_name = :filter_name";
1887
			}
1888
		}
1889
		try {
1890
			$sth = $this->db->prepare($query);
1891
			$sth->execute(array(':stats_airline' => $stats_airline, ':filter_name' => $filter_name));
1892
		} catch(PDOException $e) {
1893
			echo "error : ".$e->getMessage();
1894
		}
1895
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1896
		return $all[0]['total'];
1897
	}
1898
	public function getStatsAirlineTotal($filter_name = '') {
1899
		global $globalArchiveMonths, $globalDBdriver;
1900
		if ($filter_name == '') $filter_name = $this->filter_name;
1901
		if ($globalDBdriver == 'mysql') {
1902
			$query = "SELECT SUM(cnt) as total FROM stats_airline WHERE filter_name = :filter_name";
1903
		} else {
1904
			$query = "SELECT SUM(cnt) as total FROM stats_airline WHERE filter_name = :filter_name";
1905
		}
1906
		try {
1907
			$sth = $this->db->prepare($query);
1908
			$sth->execute(array(':filter_name' => $filter_name));
1909
		} catch(PDOException $e) {
1910
			echo "error : ".$e->getMessage();
1911
		}
1912
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1913
		return $all[0]['total'];
1914
	}
1915
	public function getStatsOwnerTotal($filter_name = '') {
1916
		global $globalArchiveMonths, $globalDBdriver;
1917
		if ($filter_name == '') $filter_name = $this->filter_name;
1918
		if ($globalDBdriver == 'mysql') {
1919
			$query = "SELECT SUM(cnt) as total FROM stats_owner WHERE filter_name = :filter_name";
1920
		} else {
1921
			$query = "SELECT SUM(cnt) as total FROM stats_owner WHERE filter_name = :filter_name";
1922
		}
1923
		try {
1924
			$sth = $this->db->prepare($query);
1925
			$sth->execute(array(':filter_name' => $filter_name));
1926
		} catch(PDOException $e) {
1927
			echo "error : ".$e->getMessage();
1928
		}
1929
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1930
		return $all[0]['total'];
1931
	}
1932
	public function getStatsOwner($owner_name,$filter_name = '') {
1933
		global $globalArchiveMonths, $globalDBdriver;
1934
		if ($filter_name == '') $filter_name = $this->filter_name;
1935
		$query = "SELECT cnt FROM stats_owner WHERE filter_name = :filter_name AND owner_name = :owner_name";
1936
		try {
1937
			$sth = $this->db->prepare($query);
1938
			$sth->execute(array(':filter_name' => $filter_name,':owner_name' => $owner_name));
1939
		} catch(PDOException $e) {
1940
			echo "error : ".$e->getMessage();
1941
		}
1942
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1943
		if (isset($all[0]['cnt'])) return $all[0]['cnt'];
1944
		else return 0;
1945
	}
1946
	public function getStatsPilotTotal($filter_name = '') {
1947
		global $globalArchiveMonths, $globalDBdriver;
1948
		if ($filter_name == '') $filter_name = $this->filter_name;
1949
		if ($globalDBdriver == 'mysql') {
1950
			$query = "SELECT SUM(cnt) as total FROM stats_pilot WHERE filter_name = :filter_name";
1951
		} else {
1952
			$query = "SELECT SUM(cnt) as total FROM stats_pilot WHERE filter_name = :filter_name";
1953
		}
1954
		try {
1955
			$sth = $this->db->prepare($query);
1956
			$sth->execute(array(':filter_name' => $filter_name));
1957
		} catch(PDOException $e) {
1958
			echo "error : ".$e->getMessage();
1959
		}
1960
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1961
		return $all[0]['total'];
1962
	}
1963
	public function getStatsPilot($pilot,$filter_name = '') {
1964
		global $globalArchiveMonths, $globalDBdriver;
1965
		if ($filter_name == '') $filter_name = $this->filter_name;
1966
		$query = "SELECT cnt FROM stats_pilot WHERE filter_name = :filter_name AND (pilot_name = :pilot OR pilot_id = :pilot)";
1967
		try {
1968
			$sth = $this->db->prepare($query);
1969
			$sth->execute(array(':filter_name' => $filter_name,':pilot' => $pilot));
1970
		} catch(PDOException $e) {
1971
			echo "error : ".$e->getMessage();
1972
		}
1973
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
1974
		if (isset($all[0]['cnt'])) return $all[0]['cnt'];
1975
		else return 0;
1976
	}
1977
1978
	public function addStat($type,$cnt,$stats_date,$stats_airline = '',$filter_name = '') {
1979
		global $globalDBdriver;
1980
		if ($filter_name == '') $filter_name = $this->filter_name;
1981
		if ($globalDBdriver == 'mysql') {
1982
			$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";
1983
		} else {
1984
			$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);"; 
1985
		}
1986
		$query_values = array(':type' => $type,':cnt' => $cnt,':stats_date' => $stats_date, ':stats_airline' => $stats_airline,':filter_name' => $filter_name);
1987
		try {
1988
			$sth = $this->db->prepare($query);
1989
			$sth->execute($query_values);
1990
		} catch(PDOException $e) {
1991
			return "error : ".$e->getMessage();
1992
		}
1993
	}
1994
	public function updateStat($type,$cnt,$stats_date,$stats_airline = '',$filter_name = '') {
1995
		global $globalDBdriver;
1996
		if ($filter_name == '') $filter_name = $this->filter_name;
1997
		if ($globalDBdriver == 'mysql') {
1998
			$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";
1999
		} else {
2000
			//$query = "INSERT INTO stats (stats_type,cnt,stats_date) VALUES (:type,:cnt,:stats_date) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt, stats_date = :date";
2001
			$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);"; 
2002
		}
2003
		$query_values = array(':type' => $type,':cnt' => $cnt,':stats_date' => $stats_date,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
2004
		try {
2005
			$sth = $this->db->prepare($query);
2006
			$sth->execute($query_values);
2007
		} catch(PDOException $e) {
2008
			return "error : ".$e->getMessage();
2009
		}
2010
	}
2011
        /*
2012
	public function getStatsSource($date,$stats_type = '') {
2013
		if ($stats_type == '') {
2014
			$query = "SELECT * FROM stats_source WHERE stats_date = :date ORDER BY source_name";
2015
			$query_values = array(':date' => $date);
2016
		} else {
2017
			$query = "SELECT * FROM stats_source WHERE stats_date = :date AND stats_type = :stats_type ORDER BY source_name";
2018
			$query_values = array(':date' => $date,':stats_type' => $stats_type);
2019
		}
2020
                 try {
2021
                        $sth = $this->db->prepare($query);
2022
                        $sth->execute($query_values);
2023
                } catch(PDOException $e) {
2024
                        echo "error : ".$e->getMessage();
2025
                }
2026
                $all = $sth->fetchAll(PDO::FETCH_ASSOC);
2027
                return $all;
2028
        }
2029
        */
2030
2031
	public function getStatsSource($stats_type,$year = '',$month = '',$day = '') {
2032
		global $globalDBdriver;
2033
		$query = "SELECT * FROM stats_source WHERE stats_type = :stats_type";
2034
		$query_values = array();
2035
		if ($globalDBdriver == 'mysql') {
2036
			if ($year != '') {
2037
				$query .= ' AND YEAR(stats_date) = :year';
2038
				$query_values = array_merge($query_values,array(':year' => $year));
2039
			}
2040
			if ($month != '') {
2041
				$query .= ' AND MONTH(stats_date) = :month';
2042
				$query_values = array_merge($query_values,array(':month' => $month));
2043
			}
2044
			if ($day != '') {
2045
				$query .= ' AND DAY(stats_date) = :day';
2046
				$query_values = array_merge($query_values,array(':day' => $day));
2047
			}
2048
		} else {
2049
			if ($year != '') {
2050
				$query .= ' AND EXTRACT(YEAR FROM stats_date) = :year';
2051
				$query_values = array_merge($query_values,array(':year' => $year));
2052
			}
2053
			if ($month != '') {
2054
				$query .= ' AND EXTRACT(MONTH FROM stats_date) = :month';
2055
				$query_values = array_merge($query_values,array(':month' => $month));
2056
			}
2057
			if ($day != '') {
2058
				$query .= ' AND EXTRACT(DAY FROM stats_date) = :day';
2059
				$query_values = array_merge($query_values,array(':day' => $day));
2060
			}
2061
		}
2062
		$query .= " ORDER BY source_name";
2063
		$query_values = array_merge($query_values,array(':stats_type' => $stats_type));
2064
		try {
2065
			$sth = $this->db->prepare($query);
2066
			$sth->execute($query_values);
2067
		} catch(PDOException $e) {
2068
			echo "error : ".$e->getMessage();
2069
		}
2070
		$all = $sth->fetchAll(PDO::FETCH_ASSOC);
2071
		return $all;
2072
	}
2073
2074
	public function addStatSource($data,$source_name,$stats_type,$date) {
2075
		global $globalDBdriver;
2076
		if ($globalDBdriver == 'mysql') {
2077
			$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";
2078
		} else {
2079
			$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);"; 
2080
		}
2081
		$query_values = array(':data' => $data,':stats_date' => $date,':source_name' => $source_name,':stats_type' => $stats_type);
2082
		try {
2083
			$sth = $this->db->prepare($query);
2084
			$sth->execute($query_values);
2085
		} catch(PDOException $e) {
2086
			return "error : ".$e->getMessage();
2087
		}
2088
	}
2089
	public function addStatFlight($type,$date_name,$cnt,$stats_airline = '',$filter_name = '') {
2090
		$query = "INSERT INTO stats_flight (stats_type,flight_date,cnt,stats_airline,filter_name) VALUES (:type,:flight_date,:cnt,:stats_airline,:filter_name)";
2091
		$query_values = array(':type' => $type,':flight_date' => $date_name,':cnt' => $cnt, ':stats_airline' => $stats_airline,':filter_name' => $filter_name);
2092
		try {
2093
			$sth = $this->db->prepare($query);
2094
			$sth->execute($query_values);
2095
		} catch(PDOException $e) {
2096
			return "error : ".$e->getMessage();
2097
		}
2098
	}
2099
	public function addStatMarine($type,$date_name,$cnt,$filter_name = '') {
2100
		$query = "INSERT INTO stats_marine (stats_type,marine_date,cnt,filter_name) VALUES (:type,:flight_date,:cnt,:filter_name)";
2101
		$query_values = array(':type' => $type,':flight_date' => $date_name,':cnt' => $cnt,':filter_name' => $filter_name);
2102
		try {
2103
			$sth = $this->db->prepare($query);
2104
			$sth->execute($query_values);
2105
		} catch(PDOException $e) {
2106
			return "error : ".$e->getMessage();
2107
		}
2108
	}
2109
	public function addStatTracker($type,$date_name,$cnt,$filter_name = '') {
2110
		$query = "INSERT INTO stats_tracker (stats_type,tracker_date,cnt,filter_name) VALUES (:type,:flight_date,:cnt,:filter_name)";
2111
		$query_values = array(':type' => $type,':flight_date' => $date_name,':cnt' => $cnt,':filter_name' => $filter_name);
2112
		try {
2113
			$sth = $this->db->prepare($query);
2114
			$sth->execute($query_values);
2115
		} catch(PDOException $e) {
2116
			return "error : ".$e->getMessage();
2117
		}
2118
	}
2119
	public function addStatAircraftRegistration($registration,$cnt,$aircraft_icao = '',$airline_icao = '',$filter_name = '',$reset = false) {
2120
		global $globalDBdriver;
2121
		if ($globalDBdriver == 'mysql') {
2122
			if ($reset) {
2123
				$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";
2124
			} else {
2125
				$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";
2126
			}
2127
		} else {
2128
			if ($reset) {
2129
				$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);"; 
2130
			} else {
2131
				$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);"; 
2132
			}
2133
		}
2134
		$query_values = array(':aircraft_icao' => $aircraft_icao,':registration' => $registration,':cnt' => $cnt,':stats_airline' => $airline_icao, ':filter_name' => $filter_name);
2135
		try {
2136
			$sth = $this->db->prepare($query);
2137
			$sth->execute($query_values);
2138
		} catch(PDOException $e) {
2139
			return "error : ".$e->getMessage();
2140
		}
2141
	}
2142
	public function addStatCallsign($callsign_icao,$cnt,$airline_icao = '', $filter_name = '', $reset = false) {
2143
		global $globalDBdriver;
2144
		if ($globalDBdriver == 'mysql') {
2145
			if ($reset) {
2146
				$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";
2147
			} else {
2148
				$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";
2149
			}
2150
		} else {
2151
			if ($reset) {
2152
				$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);"; 
2153
			} else {
2154
				$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);"; 
2155
			}
2156
		}
2157
		$query_values = array(':callsign_icao' => $callsign_icao,':airline_icao' => $airline_icao,':cnt' => $cnt, ':filter_name' => $filter_name);
2158
		try {
2159
			$sth = $this->db->prepare($query);
2160
			$sth->execute($query_values);
2161
		} catch(PDOException $e) {
2162
			return "error : ".$e->getMessage();
2163
		}
2164
	}
2165
	public function addStatCountry($iso2,$iso3,$name,$cnt,$airline_icao = '',$filter_name = '',$reset = false) {
2166
		global $globalDBdriver;
2167
		if ($globalDBdriver == 'mysql') {
2168
			if ($reset) {
2169
				$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";
2170
			} else {
2171
				$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";
2172
			}
2173
		} else {
2174
			if ($reset) {
2175
				$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);"; 
2176
			} else {
2177
				$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);"; 
2178
			}
2179
		}
2180
		$query_values = array(':iso2' => $iso2,':iso3' => $iso3,':name' => $name,':cnt' => $cnt,':filter_name' => $filter_name,':airline' => $airline_icao);
2181
		try {
2182
			$sth = $this->db->prepare($query);
2183
			$sth->execute($query_values);
2184
		} catch(PDOException $e) {
2185
			return "error : ".$e->getMessage();
2186
		}
2187
	}
2188
	public function addStatCountryMarine($iso2,$iso3,$name,$cnt,$filter_name = '',$reset = false) {
2189
		global $globalDBdriver;
2190
		if ($globalDBdriver == 'mysql') {
2191
			if ($reset) {
2192
				$query = "INSERT INTO stats_marine_country (iso2,iso3,name,cnt,filter_name) VALUES (:iso2,:iso3,:name,:cnt,:filter_name) ON DUPLICATE KEY UPDATE cnt = :cnt";
2193
			} else {
2194
				$query = "INSERT INTO stats_marine_country (iso2,iso3,name,cnt,filter_name) VALUES (:iso2,:iso3,:name,:cnt,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt";
2195
			}
2196
		} else {
2197
			if ($reset) {
2198
				$query = "UPDATE stats_marine_country SET cnt = :cnt WHERE iso2 = :iso2 AND filter_name = :filter_name; INSERT INTO stats_marine_country (iso2,iso3,name,cnt,filter_name) SELECT :iso2,:iso3,:name,:cnt,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_marine_country WHERE iso2 = :iso2 AND filter_name = :filter_name);"; 
2199
			} else {
2200
				$query = "UPDATE stats_marine_country SET cnt = cnt+:cnt WHERE iso2 = :iso2 AND filter_name = :filter_name; INSERT INTO stats_marine_country (iso2,iso3,name,cnt,filter_name) SELECT :iso2,:iso3,:name,:cnt,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_marine_country WHERE iso2 = :iso2 AND filter_name = :filter_name);"; 
2201
			}
2202
		}
2203
		$query_values = array(':iso2' => $iso2,':iso3' => $iso3,':name' => $name,':cnt' => $cnt,':filter_name' => $filter_name);
2204
		try {
2205
			$sth = $this->db->prepare($query);
2206
			$sth->execute($query_values);
2207
		} catch(PDOException $e) {
2208
			return "error : ".$e->getMessage();
2209
		}
2210
	}
2211
	public function addStatCountryTracker($iso2,$iso3,$name,$cnt,$filter_name = '',$reset = false) {
2212
		global $globalDBdriver;
2213
		if ($globalDBdriver == 'mysql') {
2214
			if ($reset) {
2215
				$query = "INSERT INTO stats_tracker_country (iso2,iso3,name,cnt,filter_name) VALUES (:iso2,:iso3,:name,:cnt,:filter_name) ON DUPLICATE KEY UPDATE cnt = :cnt";
2216
			} else {
2217
				$query = "INSERT INTO stats_tracker_country (iso2,iso3,name,cnt,filter_name) VALUES (:iso2,:iso3,:name,:cnt,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt";
2218
			}
2219
		} else {
2220
			if ($reset) {
2221
				$query = "UPDATE stats_tracker_country SET cnt = :cnt WHERE iso2 = :iso2 AND filter_name = :filter_name; INSERT INTO stats_tracker_country (iso2,iso3,name,cnt,filter_name) SELECT :iso2,:iso3,:name,:cnt,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_tracker_country WHERE iso2 = :iso2 AND filter_name = :filter_name);"; 
2222
			} else {
2223
				$query = "UPDATE stats_tracker_country SET cnt = cnt+:cnt WHERE iso2 = :iso2 AND filter_name = :filter_name; INSERT INTO stats_tracker_country (iso2,iso3,name,cnt,filter_name) SELECT :iso2,:iso3,:name,:cnt,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_tracker_country WHERE iso2 = :iso2 AND filter_name = :filter_name);"; 
2224
			}
2225
		}
2226
		$query_values = array(':iso2' => $iso2,':iso3' => $iso3,':name' => $name,':cnt' => $cnt,':filter_name' => $filter_name);
2227
		try {
2228
			$sth = $this->db->prepare($query);
2229
			$sth->execute($query_values);
2230
		} catch(PDOException $e) {
2231
			return "error : ".$e->getMessage();
2232
		}
2233
	}
2234
	public function addStatAircraft($aircraft_icao,$cnt,$aircraft_name = '',$aircraft_manufacturer = '', $airline_icao = '', $filter_name = '', $reset = false) {
2235
		global $globalDBdriver;
2236
		if ($globalDBdriver == 'mysql') {
2237
			if ($reset) {
2238
				$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";
2239
			} else {
2240
				$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";
2241
			}
2242
		} else {
2243
			if ($reset) {
2244
				$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);"; 
2245
			} else {
2246
				$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);"; 
2247
			}
2248
		}
2249
		$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);
2250
		try {
2251
			$sth = $this->db->prepare($query);
2252
			$sth->execute($query_values);
2253
		} catch(PDOException $e) {
2254
			return "error : ".$e->getMessage();
2255
		}
2256
	}
2257
	public function addStatMarineType($type,$type_id,$cnt, $filter_name = '', $reset = false) {
2258
		global $globalDBdriver;
2259
		if ($globalDBdriver == 'mysql') {
2260
			if ($reset) {
2261
				$query = "INSERT INTO stats_marine_type (type,type_id,cnt, filter_name) VALUES (:type,:type_id,:cnt,:filter_name) ON DUPLICATE KEY UPDATE cnt = :cnt";
2262
			} else {
2263
				$query = "INSERT INTO stats_marine_type (type,type_id,cnt, filter_name) VALUES (:type,:type_id,:cnt,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt";
2264
			}
2265
		} else {
2266
			if ($reset) {
2267
				$query = "UPDATE stats_marine_type SET cnt = :cnt, type = :type, filter_name = :filter_name WHERE type_id = :type_id AND filter_name = :filter_name; INSERT INTO stats_marine_type (type, type_id,cnt,filter_name) SELECT :type,:type_id,:cnt,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_marine_type WHERE type_id = :type_id AND filter_name = :filter_name);"; 
2268
			} else {
2269
				$query = "UPDATE stats_marine_type SET cnt = cnt+:cnt, type = :type, filter_name = :filter_name WHERE type_id = :type_id AND filter_name = :filter_name; INSERT INTO stats_marine_type (type,type_id,cnt,filter_name) SELECT :type,:type_id,:cnt,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_marine_type WHERE type_id = :type_id AND filter_name = :filter_name);"; 
2270
			}
2271
		}
2272
		$query_values = array(':type' => $type,':type_id' => $type_id,':cnt' => $cnt, ':filter_name' => $filter_name);
2273
		try {
2274
			$sth = $this->db->prepare($query);
2275
			$sth->execute($query_values);
2276
		} catch(PDOException $e) {
2277
			return "error : ".$e->getMessage();
2278
		}
2279
	}
2280
	public function addStatTrackerType($type,$cnt, $filter_name = '', $reset = false) {
2281
		global $globalDBdriver;
2282
		if ($globalDBdriver == 'mysql') {
2283
			if ($reset) {
2284
				$query = "INSERT INTO stats_tracker_type (type,cnt, filter_name) VALUES (:type,:type_id,:cnt,:filter_name) ON DUPLICATE KEY UPDATE cnt = :cnt";
2285
			} else {
2286
				$query = "INSERT INTO stats_tracker_type (type,cnt, filter_name) VALUES (:type,:type_id,:cnt,:filter_name) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt";
2287
			}
2288
		} else {
2289
			if ($reset) {
2290
				$query = "UPDATE stats_tracker_type SET cnt = :cnt WHERE type = :type AND filter_name = :filter_name; INSERT INTO stats_tracker_type (type, cnt,filter_name) SELECT :type,:cnt,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_tracker_type WHERE type = :type AND filter_name = :filter_name);"; 
2291
			} else {
2292
				$query = "UPDATE stats_tracker_type SET cnt = cnt+:cnt WHERE type = :type AND filter_name = :filter_name; INSERT INTO stats_tracker_type (type,cnt,filter_name) SELECT :type,:cnt,:filter_name WHERE NOT EXISTS (SELECT 1 FROM stats_tracker_type WHERE type = :type AND filter_name = :filter_name);"; 
2293
			}
2294
		}
2295
		$query_values = array(':type' => $type,':cnt' => $cnt, ':filter_name' => $filter_name);
2296
		try {
2297
			$sth = $this->db->prepare($query);
2298
			$sth->execute($query_values);
2299
		} catch(PDOException $e) {
2300
			return "error : ".$e->getMessage();
2301
		}
2302
	}
2303
	public function addStatAirline($airline_icao,$cnt,$airline_name = '',$filter_name = '', $reset = false) {
2304
		global $globalDBdriver;
2305
		if ($globalDBdriver == 'mysql') {
2306
			if ($reset) {
2307
				$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";
2308
			} else {
2309
				$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";
2310
			}
2311
		} else {
2312
			if ($reset) {
2313
				$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);"; 
2314
			} else {
2315
				$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);"; 
2316
			}
2317
		}
2318
		$query_values = array(':airline_icao' => $airline_icao,':airline_name' => $airline_name,':cnt' => $cnt,':filter_name' => $filter_name);
2319
		try {
2320
			$sth = $this->db->prepare($query);
2321
			$sth->execute($query_values);
2322
		} catch(PDOException $e) {
2323
			return "error : ".$e->getMessage();
2324
		}
2325
	}
2326
	public function addStatOwner($owner_name,$cnt,$stats_airline = '', $filter_name = '', $reset = false) {
2327
		global $globalDBdriver;
2328
		if ($globalDBdriver == 'mysql') {
2329
			if ($reset) {
2330
				$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";
2331
			} else {
2332
				$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";
2333
			}
2334
		} else {
2335
			if ($reset) {
2336
				$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);"; 
2337
			} else {
2338
				$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);"; 
2339
			}
2340
		}
2341
		$query_values = array(':owner_name' => $owner_name,':cnt' => $cnt,':stats_airline' => $stats_airline,':filter_name' => $filter_name);
2342
		try {
2343
			$sth = $this->db->prepare($query);
2344
			$sth->execute($query_values);
2345
		} catch(PDOException $e) {
2346
			return "error : ".$e->getMessage();
2347
		}
2348
	}
2349
	public function addStatPilot($pilot_id,$cnt,$pilot_name,$stats_airline = '',$filter_name = '',$format_source = '',$reset = false) {
2350
		global $globalDBdriver;
2351
		if ($globalDBdriver == 'mysql') {
2352
			if ($reset) {
2353
				$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";
2354
			} else {
2355
				$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";
2356
			}
2357
		} else {
2358
			if ($reset) {
2359
				$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);"; 
2360
			} else {
2361
				$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);"; 
2362
			}
2363
		}
2364
		$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);
2365
		try {
2366
			$sth = $this->db->prepare($query);
2367
			$sth->execute($query_values);
2368
		} catch(PDOException $e) {
2369
			return "error : ".$e->getMessage();
2370
		}
2371
	}
2372
	public function addStatDepartureAirports($airport_icao,$airport_name,$airport_city,$airport_country,$departure,$airline_icao = '',$filter_name = '',$reset = false) {
2373
		global $globalDBdriver;
2374
		if ($airport_icao != '') {
2375
			if ($globalDBdriver == 'mysql') {
2376
				if ($reset) {
2377
					$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";
2378
				} else {
2379
					$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";
2380
				}
2381
			} else {
2382
				if ($reset) {
2383
					$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);"; 
2384
				} else {
2385
					$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);"; 
2386
				}
2387
			}
2388
			$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);
2389
			try {
2390
				$sth = $this->db->prepare($query);
2391
				$sth->execute($query_values);
2392
			} catch(PDOException $e) {
2393
				return "error : ".$e->getMessage();
2394
			}
2395
		}
2396
	}
2397
	public function addStatDepartureAirportsDaily($date,$airport_icao,$airport_name,$airport_city,$airport_country,$departure,$airline_icao = '',$filter_name = '') {
2398
		global $globalDBdriver;
2399
		if ($airport_icao != '') {
2400
			if ($globalDBdriver == 'mysql') {
2401
				$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";
2402
			} else {
2403
				$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);"; 
2404
			}
2405
			$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);
2406
			 try {
2407
				$sth = $this->db->prepare($query);
2408
				$sth->execute($query_values);
2409
			} catch(PDOException $e) {
2410
				return "error : ".$e->getMessage();
2411
			}
2412
		}
2413
	}
2414
	public function addStatArrivalAirports($airport_icao,$airport_name,$airport_city,$airport_country,$arrival,$airline_icao = '',$filter_name = '',$reset = false) {
2415
		global $globalDBdriver;
2416
		if ($airport_icao != '') {
2417
			if ($globalDBdriver == 'mysql') {
2418
				if ($reset) {
2419
					$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";
2420
				} else {
2421
					$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";
2422
				}
2423
			} else {
2424
				if ($reset) {
2425
					$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);"; 
2426
				} else {
2427
					$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);"; 
2428
				}
2429
			}
2430
			$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);
2431
			try {
2432
				$sth = $this->db->prepare($query);
2433
				$sth->execute($query_values);
2434
			} catch(PDOException $e) {
2435
				return "error : ".$e->getMessage();
2436
			}
2437
		}
2438
	}
2439
	public function addStatArrivalAirportsDaily($date,$airport_icao,$airport_name,$airport_city,$airport_country,$arrival,$airline_icao = '',$filter_name = '') {
2440
		global $globalDBdriver;
2441
		if ($airport_icao != '') {
2442
			if ($globalDBdriver == 'mysql') {
2443
				$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";
2444
			} else {
2445
				$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);"; 
2446
			}
2447
			$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);
2448
			try {
2449
				$sth = $this->db->prepare($query);
2450
				$sth->execute($query_values);
2451
			} catch(PDOException $e) {
2452
				return "error : ".$e->getMessage();
2453
			}
2454
		}
2455
	}
2456
2457
	public function deleteStat($id) {
2458
		$query = "DELETE FROM stats WHERE stats_id = :id";
2459
		$query_values = array(':id' => $id);
2460
		try {
2461
			$sth = $this->db->prepare($query);
2462
			$sth->execute($query_values);
2463
		} catch(PDOException $e) {
2464
			return "error : ".$e->getMessage();
2465
		}
2466
	}
2467
	public function deleteStatFlight($type) {
2468
		$query = "DELETE FROM stats_flight WHERE stats_type = :type";
2469
		$query_values = array(':type' => $type);
2470
		try {
2471
			$sth = $this->db->prepare($query);
2472
			$sth->execute($query_values);
2473
		} catch(PDOException $e) {
2474
			return "error : ".$e->getMessage();
2475
		}
2476
	}
2477
	public function deleteStatMarine($type) {
2478
		$query = "DELETE FROM stats_marine WHERE stats_type = :type";
2479
		$query_values = array(':type' => $type);
2480
		try {
2481
			$sth = $this->db->prepare($query);
2482
			$sth->execute($query_values);
2483
		} catch(PDOException $e) {
2484
			return "error : ".$e->getMessage();
2485
		}
2486
	}
2487
	public function deleteStatTracker($type) {
2488
		$query = "DELETE FROM stats_tracker WHERE stats_type = :type";
2489
		$query_values = array(':type' => $type);
2490
		try {
2491
			$sth = $this->db->prepare($query);
2492
			$sth->execute($query_values);
2493
		} catch(PDOException $e) {
2494
			return "error : ".$e->getMessage();
2495
		}
2496
	}
2497
	public function deleteStatAirport($type) {
2498
		$query = "DELETE FROM stats_airport WHERE stats_type = :type";
2499
		$query_values = array(':type' => $type);
2500
		try {
2501
			$sth = $this->db->prepare($query);
2502
			$sth->execute($query_values);
2503
		} catch(PDOException $e) {
2504
			return "error : ".$e->getMessage();
2505
		}
2506
	}
2507
2508
	public function addOldStats() {
2509
		global $globalMasterServer, $globalAircraft, $globalMarine, $globalTracker, $globalDebug, $globalArchiveMonths, $globalArchive, $globalArchiveYear, $globalDBdriver, $globalStatsFilters,$globalDeleteLastYearStats,$globalStatsReset,$globalStatsResetYear, $globalAccidents;
2510
		$Common = new Common();
2511
		$Connection = new Connection($this->db);
2512
		date_default_timezone_set('UTC');
2513
		if ((isset($globalMarine) && $globalMarine) || (isset($globalMasterServer) && $globalMasterServer)) {
2514
			$last_update = $this->getLastStatsUpdate('last_update_stats_marine');
2515
			if ($globalDebug) echo '!!! Update Marine stats !!!'."\n";
2516
			if (isset($last_update[0]['value'])) {
2517
				$last_update_day = $last_update[0]['value'];
2518
			} else $last_update_day = '2012-12-12 12:12:12';
2519
			$reset = false;
2520
			$Marine = new Marine($this->db);
2521
			$filtername = 'marine';
0 ignored issues
show
Unused Code introduced by
$filtername 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...
2522
			if ($Connection->tableExists('countries')) {
2523
				if ($globalDebug) echo 'Count all vessels by countries...'."\n";
2524
				$alldata = $Marine->countAllMarineOverCountries(false,0,$last_update_day);
2525
				foreach ($alldata as $number) {
2526
					echo $this->addStatCountryMarine($number['marine_country_iso2'],$number['marine_country_iso3'],$number['marine_country'],$number['marine_count'],'','',$reset);
0 ignored issues
show
Documentation introduced by
'' is of type string, but the function expects a boolean.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
Unused Code introduced by
The call to Stats::addStatCountryMarine() has too many arguments starting with $reset.

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress.

In this case you can add the @ignore PhpDoc annotation to the duplicate definition and it will be ignored.

Loading history...
2527
				}
2528
			}
2529
			if ($globalDebug) echo 'Count all vessels by months...'."\n";
2530
			$last_month = date('Y-m-01 00:00:00', strtotime('-1 month', strtotime($last_update_day)));
2531
			$filter_last_month = array('since_date' => $last_month);
2532
			$alldata = $Marine->countAllMonths($filter_last_month);
2533
			$lastyear = false;
2534
			foreach ($alldata as $number) {
2535
				if ($number['year_name'] != date('Y')) $lastyear = true;
2536
				$this->addStat('marine_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
2537
			}
2538
			echo 'Marine data...'."\n";
2539
			$this->deleteStatMarine('month');
2540
			echo '-> countAllDatesLastMonth...'."\n";
2541
			$alldata = $Marine->countAllDatesLastMonth($filter_last_month);
2542
			foreach ($alldata as $number) {
2543
				$this->addStatMarine('month',$number['date_name'],$number['date_count']);
2544
			}
2545
			echo '-> countAllDates...'."\n";
2546
			$previousdata = $this->countAllDatesMarine();
2547
			$this->deleteStatMarine('date');
2548
			$alldata = $Common->array_merge_noappend($previousdata,$Marine->countAllDates($filter_last_month));
2549
			$values = array();
2550
			foreach ($alldata as $cnt) {
2551
				$values[] = $cnt['date_count'];
2552
			}
2553
			array_multisort($values,SORT_DESC,$alldata);
2554
			array_splice($alldata,11);
2555
			foreach ($alldata as $number) {
2556
				$this->addStatMarine('date',$number['date_name'],$number['date_count']);
2557
			}
2558
			
2559
			$this->deleteStatMarine('hour');
2560
			echo '-> countAllHours...'."\n";
2561
			$alldata = $Marine->countAllHours('hour',$filter_last_month);
2562
			foreach ($alldata as $number) {
2563
				$this->addStatMarine('hour',$number['hour_name'],$number['hour_count']);
2564
			}
2565
			if ($globalDebug) echo 'Count all types...'."\n";
2566
			$alldata = $Marine->countAllMarineTypes(false,0,$last_update_day);
2567
			foreach ($alldata as $number) {
2568
				$this->addStatMarineType($number['marine_type'],$number['marine_type_id'],$number['marine_type_count'],'',$reset);
2569
			}
2570
2571
			echo 'Insert last stats update date...'."\n";
2572
			date_default_timezone_set('UTC');
2573
			$this->addLastStatsUpdate('last_update_stats_marine',date('Y-m-d G:i:s'));
2574
		}
2575
		if ((isset($globalTracker) && $globalTracker) || (isset($globalMasterServer) && $globalMasterServer)) {
2576
			$last_update = $this->getLastStatsUpdate('last_update_stats_tracker');
2577
			if ($globalDebug) echo '!!! Update tracker stats !!!'."\n";
2578
			if (isset($last_update[0]['value'])) {
2579
				$last_update_day = $last_update[0]['value'];
2580
			} else $last_update_day = '2012-12-12 12:12:12';
2581
			$reset = false;
2582
			$Tracker = new Tracker($this->db);
2583
			if ($Connection->tableExists('countries')) {
2584
				if ($globalDebug) echo 'Count all trackers by countries...'."\n";
2585
				$alldata = $Tracker->countAllTrackerOverCountries(false,0,$last_update_day);
2586
				foreach ($alldata as $number) {
2587
					$this->addStatCountryTracker($number['tracker_country_iso2'],$number['tracker_country_iso3'],$number['tracker_country'],$number['tracker_count'],'','',$reset);
0 ignored issues
show
Documentation introduced by
'' is of type string, but the function expects a boolean.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
Unused Code introduced by
The call to Stats::addStatCountryTracker() has too many arguments starting with $reset.

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress.

In this case you can add the @ignore PhpDoc annotation to the duplicate definition and it will be ignored.

Loading history...
2588
				}
2589
			}
2590
			if ($globalDebug) echo 'Count all vessels by months...'."\n";
2591
			$last_month = date('Y-m-01 00:00:00', strtotime('-1 month', strtotime($last_update_day)));
2592
			$filter_last_month = array('since_date' => $last_month);
2593
			$alldata = $Tracker->countAllMonths($filter_last_month);
2594
			$lastyear = false;
2595
			foreach ($alldata as $number) {
2596
				if ($number['year_name'] != date('Y')) $lastyear = true;
2597
				$this->addStat('tracker_bymonth',$number['date_count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month_name'],1,$number['year_name'])));
2598
			}
2599
			echo 'Tracker data...'."\n";
2600
			$this->deleteStatTracker('month');
2601
			echo '-> countAllDatesLastMonth...'."\n";
2602
			$alldata = $Tracker->countAllDatesLastMonth($filter_last_month);
2603
			foreach ($alldata as $number) {
2604
				$this->addStatTracker('month',$number['date_name'],$number['date_count']);
2605
			}
2606
			echo '-> countAllDates...'."\n";
2607
			$previousdata = $this->countAllDatesTracker();
2608
			$this->deleteStatTracker('date');
2609
			$alldata = $Common->array_merge_noappend($previousdata,$Tracker->countAllDates($filter_last_month));
2610
			$values = array();
2611
			foreach ($alldata as $cnt) {
2612
				$values[] = $cnt['date_count'];
2613
			}
2614
			array_multisort($values,SORT_DESC,$alldata);
2615
			array_splice($alldata,11);
2616
			foreach ($alldata as $number) {
2617
				$this->addStatTracker('date',$number['date_name'],$number['date_count']);
2618
			}
2619
			
2620
			$this->deleteStatTracker('hour');
2621
			echo '-> countAllHours...'."\n";
2622
			$alldata = $Tracker->countAllHours('hour',$filter_last_month);
2623
			foreach ($alldata as $number) {
2624
				$this->addStatTracker('hour',$number['hour_name'],$number['hour_count']);
2625
			}
2626
			if ($globalDebug) echo 'Count all types...'."\n";
2627
			$alldata = $Tracker->countAllTrackerTypes(false,0,$last_update_day);
2628
			foreach ($alldata as $number) {
2629
				$this->addStatTrackerType($number['tracker_type'],$number['tracker_type_count'],'',$reset);
2630
			}
2631
			echo 'Insert last stats update date...'."\n";
2632
			date_default_timezone_set('UTC');
2633
			$this->addLastStatsUpdate('last_update_stats_tracker',date('Y-m-d G:i:s'));
2634
		}
2635
2636
		if (!isset($globalAircraft) || (isset($globalAircraft) && $globalAircraft) || (isset($globalMasterServer) && $globalMasterServer)) {
2637
			$last_update = $this->getLastStatsUpdate('last_update_stats');
2638
			if ($globalDebug) echo '!!! Update aicraft stats !!!'."\n";
2639
			if (isset($last_update[0]['value'])) {
2640
				$last_update_day = $last_update[0]['value'];
2641
			} else $last_update_day = '2012-12-12 12:12:12';
2642
			$reset = false;
2643
			//if ($globalStatsResetYear && date('Y',strtotime($last_update_day)) != date('Y')) {
2644
			if ($globalStatsResetYear) {
2645
				$reset = true;
2646
				$last_update_day = date('Y').'-01-01 00:00:00';
2647
			}
2648
			$Spotter = new Spotter($this->db);
2649
2650
			if ($globalDebug) echo 'Count all aircraft types...'."\n";
2651
			$alldata = $Spotter->countAllAircraftTypes(false,0,$last_update_day);
2652
			foreach ($alldata as $number) {
2653
				$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer'],'','',$reset);
2654
			}
2655
			if ($globalDebug) echo 'Count all airlines...'."\n";
2656
			$alldata = $Spotter->countAllAirlines(false,0,$last_update_day);
2657
			foreach ($alldata as $number) {
2658
				$this->addStatAirline($number['airline_icao'],$number['airline_count'],$number['airline_name'],'',$reset);
2659
			}
2660
			if ($globalDebug) echo 'Count all registrations...'."\n";
2661
			$alldata = $Spotter->countAllAircraftRegistrations(false,0,$last_update_day);
2662
			foreach ($alldata as $number) {
2663
				$this->addStatAircraftRegistration($number['registration'],$number['aircraft_registration_count'],$number['aircraft_icao'],'','',$reset);
2664
			}
2665
			if ($globalDebug) echo 'Count all callsigns...'."\n";
2666
			$alldata = $Spotter->countAllCallsigns(false,0,$last_update_day);
2667
			foreach ($alldata as $number) {
2668
				$this->addStatCallsign($number['callsign_icao'],$number['callsign_icao_count'],$number['airline_icao'],'',$reset);
2669
			}
2670
			if ($globalDebug) echo 'Count all owners...'."\n";
2671
			$alldata = $Spotter->countAllOwners(false,0,$last_update_day);
2672
			foreach ($alldata as $number) {
2673
				$this->addStatOwner($number['owner_name'],$number['owner_count'],'','',$reset);
2674
			}
2675
			if ($globalDebug) echo 'Count all pilots...'."\n";
2676
			$alldata = $Spotter->countAllPilots(false,0,$last_update_day);
2677
			foreach ($alldata as $number) {
2678
				if ($number['pilot_id'] == 0 || $number['pilot_id'] == '') $number['pilot_id'] = $number['pilot_name'];
2679
				$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name'],'','',$number['format_source'],$reset);
2680
			}
2681
			
2682
			if ($globalDebug) echo 'Count all departure airports...'."\n";
2683
			$pall = $Spotter->countAllDepartureAirports(false,0,$last_update_day);
2684
			if ($globalDebug) echo 'Count all detected departure airports...'."\n";
2685
			$dall = $Spotter->countAllDetectedDepartureAirports(false,0,$last_update_day);
2686
			if ($globalDebug) echo 'Order departure airports...'."\n";
2687
			$alldata = array();
2688
			foreach ($pall as $value) {
2689
				$icao = $value['airport_departure_icao'];
2690
				$alldata[$icao] = $value;
2691
			}
2692
			foreach ($dall as $value) {
2693
				$icao = $value['airport_departure_icao'];
2694
				if (isset($alldata[$icao])) {
2695
					$alldata[$icao]['airport_departure_icao_count'] = $alldata[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
2696
				} else $alldata[$icao] = $value;
2697
			}
2698
			$count = array();
2699
			foreach ($alldata as $key => $row) {
2700
				$count[$key] = $row['airport_departure_icao_count'];
2701
			}
2702
			array_multisort($count,SORT_DESC,$alldata);
2703
			foreach ($alldata as $number) {
2704
				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);
2705
			}
2706
			if ($globalDebug) echo 'Count all arrival airports...'."\n";
2707
			$pall = $Spotter->countAllArrivalAirports(false,0,$last_update_day);
2708
			if ($globalDebug) echo 'Count all detected arrival airports...'."\n";
2709
			$dall = $Spotter->countAllDetectedArrivalAirports(false,0,$last_update_day);
2710
			if ($globalDebug) echo 'Order arrival airports...'."\n";
2711
			$alldata = array();
2712
			foreach ($pall as $value) {
2713
				$icao = $value['airport_arrival_icao'];
2714
				$alldata[$icao] = $value;
2715
			}
2716
			foreach ($dall as $value) {
2717
				$icao = $value['airport_arrival_icao'];
2718
				if (isset($alldata[$icao])) {
2719
					$alldata[$icao]['airport_arrival_icao_count'] = $alldata[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
2720
				} else $alldata[$icao] = $value;
2721
			}
2722
			$count = array();
2723
			foreach ($alldata as $key => $row) {
2724
				$count[$key] = $row['airport_arrival_icao_count'];
2725
			}
2726
			array_multisort($count,SORT_DESC,$alldata);
2727
			foreach ($alldata as $number) {
2728
				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);
2729
			}
2730
			if ($Connection->tableExists('countries')) {
2731
				if ($globalDebug) echo 'Count all flights by countries...'."\n";
2732
				//$SpotterArchive = new SpotterArchive();
2733
				//$alldata = $SpotterArchive->countAllFlightOverCountries(false,0,$last_update_day);
2734
				$Spotter = new Spotter($this->db);
2735
				$alldata = $Spotter->countAllFlightOverCountries(false,0,$last_update_day);
2736
				foreach ($alldata as $number) {
2737
					$this->addStatCountry($number['flight_country_iso2'],$number['flight_country_iso3'],$number['flight_country'],$number['flight_count'],'','',$reset);
2738
				}
2739
			}
2740
			
2741
			if (isset($globalAccidents) && $globalAccidents) {
2742
				if ($globalDebug) echo 'Count fatalities stats...'."\n";
2743
				$Accident = new Accident($this->db);
2744
				$this->deleteStatsByType('fatalities_byyear');
2745
				$alldata = $Accident->countFatalitiesByYear();
2746
				foreach ($alldata as $number) {
2747
					$this->addStat('fatalities_byyear',$number['count'],date('Y-m-d H:i:s',mktime(0,0,0,1,1,$number['year'])));
2748
				}
2749
				$this->deleteStatsByType('fatalities_bymonth');
2750
				$alldata = $Accident->countFatalitiesLast12Months();
2751
				foreach ($alldata as $number) {
2752
					$this->addStat('fatalities_bymonth',$number['count'],date('Y-m-d H:i:s',mktime(0,0,0,$number['month'],1,$number['year'])));
2753
				}
2754
			}
2755
2756
			// Add by month using getstat if month finish...
2757
			//if (date('m',strtotime($last_update_day)) != date('m')) {
2758
			if ($globalDebug) echo 'Count all flights by months...'."\n";
2759
			$last_month = date('Y-m-01 00:00:00', strtotime('-1 month', strtotime($last_update_day)));
2760
			$filter_last_month = array('since_date' => $last_month);
2761
			$Spotter = new Spotter($this->db);
2762
			$alldata = $Spotter->countAllMonths($filter_last_month);
2763
			$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...
2764
			foreach ($alldata as $number) {
2765
				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...
2766
				$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'])));
2767
			}
2768
			if ($globalDebug) echo 'Count all military flights by months...'."\n";
2769
			$alldata = $Spotter->countAllMilitaryMonths($filter_last_month);
2770
			foreach ($alldata as $number) {
2771
				$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'])));
2772
			}
2773
			if ($globalDebug) echo 'Count all owners by months...'."\n";
2774
			$alldata = $Spotter->countAllMonthsOwners($filter_last_month);
2775
			foreach ($alldata as $number) {
2776
				$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'])));
2777
			}
2778
			if ($globalDebug) echo 'Count all pilots by months...'."\n";
2779
			$alldata = $Spotter->countAllMonthsPilots($filter_last_month);
2780
			foreach ($alldata as $number) {
2781
				$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'])));
2782
			}
2783
			if ($globalDebug) echo 'Count all airlines by months...'."\n";
2784
			$alldata = $Spotter->countAllMonthsAirlines($filter_last_month);
2785
			foreach ($alldata as $number) {
2786
				$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'])));
2787
			}
2788
			if ($globalDebug) echo 'Count all aircrafts by months...'."\n";
2789
			$alldata = $Spotter->countAllMonthsAircrafts($filter_last_month);
2790
			foreach ($alldata as $number) {
2791
				$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'])));
2792
			}
2793
			if ($globalDebug) echo 'Count all real arrivals by months...'."\n";
2794
			$alldata = $Spotter->countAllMonthsRealArrivals($filter_last_month);
2795
			foreach ($alldata as $number) {
2796
				$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'])));
2797
			}
2798
			if ($globalDebug) echo 'Airports data...'."\n";
2799
			if ($globalDebug) echo '...Departure'."\n";
2800
			$this->deleteStatAirport('daily');
2801
//			$pall = $Spotter->getLast7DaysAirportsDeparture();
2802
  //      		$dall = $Spotter->getLast7DaysDetectedAirportsDeparture();
2803
			$pall = $Spotter->getLast7DaysAirportsDeparture();
2804
			$dall = $Spotter->getLast7DaysDetectedAirportsDeparture();
2805
			/*
2806
			$alldata = array();
2807
			foreach ($pall as $value) {
2808
				$icao = $value['departure_airport_icao'];
2809
				$alldata[$icao] = $value;
2810
			}
2811
			foreach ($dall as $value) {
2812
				$icao = $value['departure_airport_icao'];
2813
				$ddate = $value['date'];
2814
				if (isset($alldata[$icao])) {
2815
					$alldata[$icao]['departure_airport_count'] = $alldata[$icao]['departure_airport_count'] + $value['departure_airport_count'];
2816
				} else $alldata[$icao] = $value;
2817
			}
2818
			$count = array();
2819
			foreach ($alldata as $key => $row) {
2820
				$count[$key] = $row['departure_airport_count'];
2821
			}
2822
			array_multisort($count,SORT_DESC,$alldata);
2823
			*/
2824
			foreach ($dall as $value) {
2825
				$icao = $value['departure_airport_icao'];
2826
				$ddate = $value['date'];
2827
				$find = false;
2828
				foreach ($pall as $pvalue) {
2829
					if ($pvalue['departure_airport_icao'] == $icao && $pvalue['date'] == $ddate) {
2830
						$pvalue['departure_airport_count'] = $pvalue['departure_airport_count'] + $value['departure_airport_count'];
2831
						$find = true;
2832
						break;
2833
					}
2834
				}
2835
				if ($find === false) {
2836
					$pall[] = $value;
2837
				}
2838
			}
2839
			$alldata = $pall;
2840
			foreach ($alldata as $number) {
2841
				$this->addStatDepartureAirportsDaily($number['date'],$number['departure_airport_icao'],$number['departure_airport_name'],$number['departure_airport_city'],$number['departure_airport_country'],$number['departure_airport_count']);
2842
			}
2843
			echo '...Arrival'."\n";
2844
			$pall = $Spotter->getLast7DaysAirportsArrival();
2845
			$dall = $Spotter->getLast7DaysDetectedAirportsArrival();
2846
			/*
2847
			$alldata = array();
2848
			foreach ($pall as $value) {
2849
				$icao = $value['arrival_airport_icao'];
2850
				$alldata[$icao] = $value;
2851
			}
2852
			foreach ($dall as $value) {
2853
				$icao = $value['arrival_airport_icao'];
2854
				if (isset($alldata[$icao])) {
2855
					$alldata[$icao]['arrival_airport_icao_count'] = $alldata[$icao]['arrival_airport_count'] + $value['arrival_airport_count'];
2856
				} else $alldata[$icao] = $value;
2857
			}
2858
			$count = array();
2859
			foreach ($alldata as $key => $row) {
2860
				$count[$key] = $row['arrival_airport_count'];
2861
			}
2862
			array_multisort($count,SORT_DESC,$alldata);
2863
			*/
2864
2865
			foreach ($dall as $value) {
2866
				$icao = $value['arrival_airport_icao'];
2867
				$ddate = $value['date'];
2868
				$find = false;
2869
				foreach ($pall as $pvalue) {
2870
					if ($pvalue['arrival_airport_icao'] == $icao && $pvalue['date'] == $ddate) {
2871
						$pvalue['arrival_airport_count'] = $pvalue['arrival_airport_count'] + $value['arrival_airport_count'];
2872
						$find = true;
2873
						break;
2874
					}
2875
				}
2876
				if ($find === false) {
2877
						$pall[] = $value;
2878
				}
2879
			}
2880
			$alldata = $pall;
2881
			foreach ($alldata as $number) {
2882
				$this->addStatArrivalAirportsDaily($number['date'],$number['arrival_airport_icao'],$number['arrival_airport_name'],$number['arrival_airport_city'],$number['arrival_airport_country'],$number['arrival_airport_count']);
2883
			}
2884
2885
			echo 'Flights data...'."\n";
2886
			$this->deleteStatFlight('month');
2887
			echo '-> countAllDatesLastMonth...'."\n";
2888
			$alldata = $Spotter->countAllDatesLastMonth($filter_last_month);
2889
			foreach ($alldata as $number) {
2890
				$this->addStatFlight('month',$number['date_name'],$number['date_count']);
2891
			}
2892
			echo '-> countAllDates...'."\n";
2893
			$previousdata = $this->countAllDates();
2894
			$previousdatabyairlines = $this->countAllDatesByAirlines();
2895
			$this->deleteStatFlight('date');
2896
			$alldata = $Common->array_merge_noappend($previousdata,$Spotter->countAllDates($filter_last_month));
2897
			$values = array();
2898
			foreach ($alldata as $cnt) {
2899
				$values[] = $cnt['date_count'];
2900
			}
2901
			array_multisort($values,SORT_DESC,$alldata);
2902
			array_splice($alldata,11);
2903
			foreach ($alldata as $number) {
2904
				$this->addStatFlight('date',$number['date_name'],$number['date_count']);
2905
			}
2906
			
2907
			$this->deleteStatFlight('hour');
2908
			echo '-> countAllHours...'."\n";
2909
			$alldata = $Spotter->countAllHours('hour',$filter_last_month);
2910
			foreach ($alldata as $number) {
2911
				$this->addStatFlight('hour',$number['hour_name'],$number['hour_count']);
2912
			}
2913
2914
			// Count by airlines
2915
			echo '--- Stats by airlines ---'."\n";
2916
			if ($Connection->tableExists('countries')) {
2917
				if ($globalDebug) echo 'Count all flights by countries by airlines...'."\n";
2918
				$SpotterArchive = new SpotterArchive($this->db);
2919
				//$Spotter = new Spotter($this->db);
2920
				$alldata = $SpotterArchive->countAllFlightOverCountriesByAirlines(false,0,$last_update_day);
2921
				//$alldata = $Spotter->countAllFlightOverCountriesByAirlines(false,0,$last_update_day);
2922
				foreach ($alldata as $number) {
2923
					$this->addStatCountry($number['flight_country_iso2'],$number['flight_country_iso3'],$number['flight_country'],$number['flight_count'],$number['airline_icao'],'',$reset);
2924
				}
2925
			}
2926
			if ($globalDebug) echo 'Count all aircraft types by airlines...'."\n";
2927
			$Spotter = new Spotter($this->db);
2928
			$alldata = $Spotter->countAllAircraftTypesByAirlines(false,0,$last_update_day);
2929
			foreach ($alldata as $number) {
2930
				$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer'],$number['airline_icao'],'',$reset);
2931
			}
2932
			if ($globalDebug) echo 'Count all aircraft registrations by airlines...'."\n";
2933
			$alldata = $Spotter->countAllAircraftRegistrationsByAirlines(false,0,$last_update_day);
2934
			foreach ($alldata as $number) {
2935
				$this->addStatAircraftRegistration($number['registration'],$number['aircraft_registration_count'],$number['aircraft_icao'],$number['airline_icao'],'',$reset);
2936
			}
2937
			if ($globalDebug) echo 'Count all callsigns by airlines...'."\n";
2938
			$alldata = $Spotter->countAllCallsignsByAirlines(false,0,$last_update_day);
2939
			foreach ($alldata as $number) {
2940
				$this->addStatCallsign($number['callsign_icao'],$number['callsign_icao_count'],$number['airline_icao'],'',$reset);
2941
			}
2942
			if ($globalDebug) echo 'Count all owners by airlines...'."\n";
2943
			$alldata = $Spotter->countAllOwnersByAirlines(false,0,$last_update_day);
2944
			foreach ($alldata as $number) {
2945
				$this->addStatOwner($number['owner_name'],$number['owner_count'],$number['airline_icao'],'',$reset);
2946
			}
2947
			if ($globalDebug) echo 'Count all pilots by airlines...'."\n";
2948
			$alldata = $Spotter->countAllPilotsByAirlines(false,0,$last_update_day);
2949
			foreach ($alldata as $number) {
2950
				$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name'],$number['airline_icao'],'',$number['format_source'],$reset);
2951
			}
2952
			if ($globalDebug) echo 'Count all departure airports by airlines...'."\n";
2953
			$pall = $Spotter->countAllDepartureAirportsByAirlines(false,0,$last_update_day);
2954
			if ($globalDebug) echo 'Count all detected departure airports by airlines...'."\n";
2955
			$dall = $Spotter->countAllDetectedDepartureAirportsByAirlines(false,0,$last_update_day);
2956
			if ($globalDebug) echo 'Order detected departure airports by airlines...'."\n";
2957
			//$alldata = array();
2958
			foreach ($dall as $value) {
2959
				$icao = $value['airport_departure_icao'];
2960
				$dicao = $value['airline_icao'];
2961
				$find = false;
2962
				foreach ($pall as $pvalue) {
2963
					if ($pvalue['airport_departure_icao'] == $icao && $pvalue['airline_icao'] = $dicao) {
2964
						$pvalue['airport_departure_icao_count'] = $pvalue['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
2965
						$find = true;
2966
						break;
2967
					}
2968
				}
2969
				if ($find === false) {
2970
					$pall[] = $value;
2971
				}
2972
			}
2973
			$alldata = $pall;
2974
			foreach ($alldata as $number) {
2975
				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);
2976
			}
2977
			if ($globalDebug) echo 'Count all arrival airports by airlines...'."\n";
2978
			$pall = $Spotter->countAllArrivalAirportsByAirlines(false,0,$last_update_day);
2979
			if ($globalDebug) echo 'Count all detected arrival airports by airlines...'."\n";
2980
			$dall = $Spotter->countAllDetectedArrivalAirportsByAirlines(false,0,$last_update_day);
2981
			if ($globalDebug) echo 'Order arrival airports by airlines...'."\n";
2982
			//$alldata = array();
2983
			foreach ($dall as $value) {
2984
				$icao = $value['airport_arrival_icao'];
2985
				$dicao = $value['airline_icao'];
2986
				$find = false;
2987
				foreach ($pall as $pvalue) {
2988
					if ($pvalue['airport_arrival_icao'] == $icao && $pvalue['airline_icao'] = $dicao) {
2989
						$pvalue['airport_arrival_icao_count'] = $pvalue['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
2990
						$find = true;
2991
						break;
2992
					}
2993
				}
2994
				if ($find === false) {
2995
					$pall[] = $value;
2996
				}
2997
			}
2998
			$alldata = $pall;
2999
			foreach ($alldata as $number) {
3000
				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);
3001
			}
3002
			if ($globalDebug) echo 'Count all flights by months by airlines...'."\n";
3003
			$Spotter = new Spotter($this->db);
3004
			$alldata = $Spotter->countAllMonthsByAirlines($filter_last_month);
3005
			$lastyear = false;
3006
			foreach ($alldata as $number) {
3007
				if ($number['year_name'] != date('Y')) $lastyear = true;
3008
				$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']);
3009
			}
3010
			if ($globalDebug) echo 'Count all owners by months by airlines...'."\n";
3011
			$alldata = $Spotter->countAllMonthsOwnersByAirlines($filter_last_month);
3012
			foreach ($alldata as $number) {
3013
				$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']);
3014
			}
3015
			if ($globalDebug) echo 'Count all pilots by months by airlines...'."\n";
3016
			$alldata = $Spotter->countAllMonthsPilotsByAirlines($filter_last_month);
3017
			foreach ($alldata as $number) {
3018
				$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']);
3019
			}
3020
			if ($globalDebug) echo 'Count all aircrafts by months by airlines...'."\n";
3021
			$alldata = $Spotter->countAllMonthsAircraftsByAirlines($filter_last_month);
3022
			foreach ($alldata as $number) {
3023
				$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']);
3024
			}
3025
			if ($globalDebug) echo 'Count all real arrivals by months by airlines...'."\n";
3026
			$alldata = $Spotter->countAllMonthsRealArrivalsByAirlines($filter_last_month);
3027
			foreach ($alldata as $number) {
3028
				$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']);
3029
			}
3030
			if ($globalDebug) echo '...Departure'."\n";
3031
			$pall = $Spotter->getLast7DaysAirportsDepartureByAirlines();
3032
			$dall = $Spotter->getLast7DaysDetectedAirportsDepartureByAirlines();
3033
			foreach ($dall as $value) {
3034
				$icao = $value['departure_airport_icao'];
3035
				$airline = $value['airline_icao'];
3036
				$ddate = $value['date'];
3037
				$find = false;
3038
				foreach ($pall as $pvalue) {
3039
					if ($pvalue['departure_airport_icao'] == $icao && $pvalue['date'] == $ddate && $pvalue['airline_icao'] = $airline) {
3040
						$pvalue['departure_airport_count'] = $pvalue['departure_airport_count'] + $value['departure_airport_count'];
3041
						$find = true;
3042
						break;
3043
					}
3044
				}
3045
				if ($find === false) {
3046
					$pall[] = $value;
3047
				}
3048
			}
3049
			$alldata = $pall;
3050
			foreach ($alldata as $number) {
3051
				$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']);
3052
			}
3053
			if ($globalDebug) echo '...Arrival'."\n";
3054
			$pall = $Spotter->getLast7DaysAirportsArrivalByAirlines();
3055
			$dall = $Spotter->getLast7DaysDetectedAirportsArrivalByAirlines();
3056
			foreach ($dall as $value) {
3057
				$icao = $value['arrival_airport_icao'];
3058
				$airline = $value['airline_icao'];
3059
				$ddate = $value['date'];
3060
				$find = false;
3061
				foreach ($pall as $pvalue) {
3062
					if ($pvalue['arrival_airport_icao'] == $icao && $pvalue['date'] == $ddate && $pvalue['airline_icao'] == $airline) {
3063
						$pvalue['arrival_airport_count'] = $pvalue['arrival_airport_count'] + $value['arrival_airport_count'];
3064
						$find = true;
3065
						break;
3066
					}
3067
				}
3068
				if ($find === false) {
3069
					$pall[] = $value;
3070
				}
3071
			}
3072
			$alldata = $pall;
3073
			foreach ($alldata as $number) {
3074
				$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']);
3075
			}
3076
3077
			if ($globalDebug) echo 'Flights data...'."\n";
3078
			if ($globalDebug) echo '-> countAllDatesLastMonth...'."\n";
3079
			$alldata = $Spotter->countAllDatesLastMonthByAirlines($filter_last_month);
3080
			foreach ($alldata as $number) {
3081
				$this->addStatFlight('month',$number['date_name'],$number['date_count'], $number['airline_icao']);
3082
			}
3083
			if ($globalDebug) echo '-> countAllDates...'."\n";
3084
			//$previousdata = $this->countAllDatesByAirlines();
3085
			$alldata = $Common->array_merge_noappend($previousdatabyairlines,$Spotter->countAllDatesByAirlines($filter_last_month));
3086
			$values = array();
3087
			foreach ($alldata as $cnt) {
3088
				$values[] = $cnt['date_count'];
3089
			}
3090
			array_multisort($values,SORT_DESC,$alldata);
3091
			array_splice($alldata,11);
3092
			foreach ($alldata as $number) {
3093
				$this->addStatFlight('date',$number['date_name'],$number['date_count'],$number['airline_icao']);
3094
			}
3095
			
3096
			if ($globalDebug) echo '-> countAllHours...'."\n";
3097
			$alldata = $Spotter->countAllHoursByAirlines('hour',$filter_last_month);
3098
			foreach ($alldata as $number) {
3099
				$this->addStatFlight('hour',$number['hour_name'],$number['hour_count'],$number['airline_icao']);
3100
			}
3101
3102
			// Stats by filters
3103
			if (!isset($globalStatsFilters) || $globalStatsFilters == '') $globalStatsFilters = array();
3104
			foreach ($globalStatsFilters as $name => $filter) {
3105
				if (!empty($filter)) {
3106
					//$filter_name = $filter['name'];
3107
					$filter_name = $name;
3108
					$reset = false;
3109
					$last_update = $this->getLastStatsUpdate('last_update_stats_'.$filter_name);
3110
					if (isset($filter['resetall']) && isset($last_update[0]['value']) && strtotime($filter['resetall']) > strtotime($last_update[0]['value'])) {
3111
						if ($globalDebug) echo '!!! Delete stats for filter '.$filter_name.' !!!'."\n";
3112
						$this->deleteOldStats($filter_name);
3113
						unset($last_update);
3114
					}
3115
					if (isset($last_update[0]['value'])) {
3116
						$last_update_day = $last_update[0]['value'];
3117
					} else {
3118
						$last_update_day = '2012-12-12 12:12:12';
3119
						if (isset($filter['DeleteLastYearStats'])) {
3120
							$last_update_day = date('Y').'-01-01 00:00:00';
3121
						}
3122
					}
3123
					if (isset($filter['DeleteLastYearStats']) && date('Y',strtotime($last_update_day)) != date('Y')) {
3124
						$last_update_day = date('Y').'-01-01 00:00:00';
3125
						$reset = true;
3126
					}
3127
					// Count by filter
3128
					if ($globalDebug) echo '--- Stats for filter '.$filter_name.' ---'."\n";
3129
					$Spotter = new Spotter($this->db);
3130
					if ($globalDebug) echo 'Count all aircraft types...'."\n";
3131
					$alldata = $Spotter->countAllAircraftTypes(false,0,$last_update_day,$filter);
3132
					foreach ($alldata as $number) {
3133
						$this->addStatAircraft($number['aircraft_icao'],$number['aircraft_icao_count'],$number['aircraft_name'],$number['aircraft_manufacturer'],'',$filter_name,$reset);
3134
					}
3135
					if ($globalDebug) echo 'Count all airlines...'."\n";
3136
					$alldata = $Spotter->countAllAirlines(false,0,$last_update_day,$filter);
3137
					foreach ($alldata as $number) {
3138
						$this->addStatAirline($number['airline_icao'],$number['airline_count'],$number['airline_name'],$filter_name,$reset);
3139
					}
3140
					if ($globalDebug) echo 'Count all aircraft registrations...'."\n";
3141
					$alldata = $Spotter->countAllAircraftRegistrations(false,0,$last_update_day,$filter);
3142
					foreach ($alldata as $number) {
3143
						$this->addStatAircraftRegistration($number['registration'],$number['aircraft_registration_count'],$number['aircraft_icao'],'',$filter_name,$reset);
3144
					}
3145
					if ($globalDebug) echo 'Count all callsigns...'."\n";
3146
					$alldata = $Spotter->countAllCallsigns(false,0,$last_update_day,$filter);
3147
					foreach ($alldata as $number) {
3148
						$this->addStatCallsign($number['callsign_icao'],$number['callsign_icao_count'],'',$filter_name,$reset);
3149
					}
3150
					if ($globalDebug) echo 'Count all owners...'."\n";
3151
					$alldata = $Spotter->countAllOwners(false,0,$last_update_day,$filter);
3152
					foreach ($alldata as $number) {
3153
						$this->addStatOwner($number['owner_name'],$number['owner_count'],'',$filter_name,$reset);
3154
					}
3155
					if ($globalDebug) echo 'Count all pilots...'."\n";
3156
					$alldata = $Spotter->countAllPilots(false,0,$last_update_day,$filter);
3157
					foreach ($alldata as $number) {
3158
						$this->addStatPilot($number['pilot_id'],$number['pilot_count'],$number['pilot_name'],'',$filter_name,$number['format_source'],$reset);
3159
					}
3160
					if ($globalDebug) echo 'Count departure airports...'."\n";
3161
					$pall = $Spotter->countAllDepartureAirports(false,0,$last_update_day,$filter);
3162
					$dall = $Spotter->countAllDetectedDepartureAirports(false,0,$last_update_day,$filter);
3163
					$alldata = array();
3164
					foreach ($pall as $value) {
3165
						$icao = $value['airport_departure_icao'];
3166
						$alldata[$icao] = $value;
3167
					}
3168
					foreach ($dall as $value) {
3169
						$icao = $value['airport_departure_icao'];
3170
						if (isset($alldata[$icao])) {
3171
							$alldata[$icao]['airport_departure_icao_count'] = $alldata[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count'];
3172
						} else $alldata[$icao] = $value;
3173
					}
3174
					$count = array();
3175
					foreach ($alldata as $key => $row) {
3176
						$count[$key] = $row['airport_departure_icao_count'];
3177
					}
3178
					array_multisort($count,SORT_DESC,$alldata);
3179
					foreach ($alldata as $number) {
3180
						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);
3181
					}
3182
					if ($globalDebug) echo 'Count all arrival airports...'."\n";
3183
					$pall = $Spotter->countAllArrivalAirports(false,0,$last_update_day,false,$filter);
3184
					$dall = $Spotter->countAllDetectedArrivalAirports(false,0,$last_update_day,false,$filter);
3185
					$alldata = array();
3186
					foreach ($pall as $value) {
3187
						$icao = $value['airport_arrival_icao'];
3188
						$alldata[$icao] = $value;
3189
					}
3190
					foreach ($dall as $value) {
3191
						$icao = $value['airport_arrival_icao'];
3192
						if (isset($alldata[$icao])) {
3193
							$alldata[$icao]['airport_arrival_icao_count'] = $alldata[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count'];
3194
						} else $alldata[$icao] = $value;
3195
					}
3196
					$count = array();
3197
					foreach ($alldata as $key => $row) {
3198
						$count[$key] = $row['airport_arrival_icao_count'];
3199
					}
3200
					array_multisort($count,SORT_DESC,$alldata);
3201
					foreach ($alldata as $number) {
3202
						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);
3203
					}
3204
					if ($globalDebug) echo 'Count all months...'."\n";
3205
					$Spotter = new Spotter($this->db);
3206
					$alldata = $Spotter->countAllMonths($filter);
3207
					$lastyear = false;
3208
					foreach ($alldata as $number) {
3209
						if ($number['year_name'] != date('Y')) $lastyear = true;
3210
						$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);
3211
					}
3212
					if ($globalDebug) echo 'Count all owners by months...'."\n";
3213
					$alldata = $Spotter->countAllMonthsOwners($filter);
3214
					foreach ($alldata as $number) {
3215
						$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);
3216
					}
3217
					if ($globalDebug) echo 'Count all pilots by months...'."\n";
3218
					$alldata = $Spotter->countAllMonthsPilots($filter);
3219
					foreach ($alldata as $number) {
3220
						$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);
3221
					}
3222
					if ($globalDebug) echo 'Count all military by months...'."\n";
3223
					$alldata = $Spotter->countAllMilitaryMonths($filter);
3224
					foreach ($alldata as $number) {
3225
						$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);
3226
					}
3227
					if ($globalDebug) echo 'Count all aircrafts by months...'."\n";
3228
					$alldata = $Spotter->countAllMonthsAircrafts($filter);
3229
				    	foreach ($alldata as $number) {
3230
			    			$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);
3231
					}
3232
					if ($globalDebug) echo 'Count all real arrivals by months...'."\n";
3233
					$alldata = $Spotter->countAllMonthsRealArrivals($filter);
3234
					foreach ($alldata as $number) {
3235
						$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);
3236
					}
3237
					echo '...Departure'."\n";
3238
					$pall = $Spotter->getLast7DaysAirportsDeparture('',$filter);
3239
					$dall = $Spotter->getLast7DaysDetectedAirportsDeparture('',$filter);
3240
					foreach ($dall as $value) {
3241
						$icao = $value['departure_airport_icao'];
3242
						$ddate = $value['date'];
3243
						$find = false;
3244
						foreach ($pall as $pvalue) {
3245
							if ($pvalue['departure_airport_icao'] == $icao && $pvalue['date'] == $ddate) {
3246
								$pvalue['departure_airport_count'] = $pvalue['departure_airport_count'] + $value['departure_airport_count'];
3247
								$find = true;
3248
								break;
3249
							}
3250
						}
3251
						if ($find === false) {
3252
							$pall[] = $value;
3253
						}
3254
					}
3255
					$alldata = $pall;
3256
					foreach ($alldata as $number) {
3257
						$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);
3258
					}
3259
					echo '...Arrival'."\n";
3260
					$pall = $Spotter->getLast7DaysAirportsArrival('',$filter);
3261
					$dall = $Spotter->getLast7DaysDetectedAirportsArrival('',$filter);
3262
					foreach ($dall as $value) {
3263
						$icao = $value['arrival_airport_icao'];
3264
						$ddate = $value['date'];
3265
						$find = false;
3266
						foreach ($pall as $pvalue) {
3267
							if ($pvalue['arrival_airport_icao'] == $icao && $pvalue['date'] == $ddate) {
3268
								$pvalue['arrival_airport_count'] = $pvalue['arrival_airport_count'] + $value['arrival_airport_count'];
3269
								$find = true;
3270
								break;
3271
							}
3272
						}
3273
						if ($find === false) {
3274
							$pall[] = $value;
3275
						}
3276
					}
3277
					$alldata = $pall;
3278
					foreach ($alldata as $number) {
3279
						$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);
3280
					}
3281
					echo 'Flights data...'."\n";
3282
					echo '-> countAllDatesLastMonth...'."\n";
3283
					$alldata = $Spotter->countAllDatesLastMonth($filter);
3284
					foreach ($alldata as $number) {
3285
						$this->addStatFlight('month',$number['date_name'],$number['date_count'], '',$filter_name);
3286
					}
3287
					echo '-> countAllDates...'."\n";
3288
					$previousdata = $this->countAllDates('',$filter_name);
3289
					$alldata = $Common->array_merge_noappend($previousdata,$Spotter->countAllDates($filter));
3290
					$values = array();
3291
					foreach ($alldata as $cnt) {
3292
						$values[] = $cnt['date_count'];
3293
					}
3294
					array_multisort($values,SORT_DESC,$alldata);
3295
					array_splice($alldata,11);
3296
					foreach ($alldata as $number) {
3297
						$this->addStatFlight('date',$number['date_name'],$number['date_count'],'',$filter_name);
3298
					}
3299
				
3300
					echo '-> countAllHours...'."\n";
3301
					$alldata = $Spotter->countAllHours('hour',$filter);
3302
					foreach ($alldata as $number) {
3303
						$this->addStatFlight('hour',$number['hour_name'],$number['hour_count'],'',$filter_name);
3304
					}
3305
					echo 'Insert last stats update date...'."\n";
3306
					date_default_timezone_set('UTC');
3307
					$this->addLastStatsUpdate('last_update_stats_'.$filter_name,date('Y-m-d G:i:s'));
3308
					if (isset($filter['DeleteLastYearStats']) && $filter['DeleteLastYearStats'] == true) {
3309
						if (date('Y',strtotime($last_update_day)) != date('Y')) {
3310
							$this->deleteOldStats($filter_name);
3311
							$this->addLastStatsUpdate('last_update_stats_'.$filter_name,date('Y').'-01-01 00:00:00');
3312
						}
3313
					}
3314
				}
3315
			}
3316
		}
3317
3318
			// Last year stats
3319
			if (isset($lastyear) && $lastyear) {
3320
				echo 'Data from last year...'."\n";
3321
				// SUM all previous month to put as year
3322
				$previous_year = date('Y');
3323
				$previous_year--;
3324
				$this->addStat('aircrafts_byyear',$this->getSumStats('aircrafts_bymonth',$previous_year),$previous_year.'-01-01 00:00:00');
3325
				$this->addStat('airlines_byyear',$this->getSumStats('airlines_bymonth',$previous_year),$previous_year.'-01-01 00:00:00');
3326
				$this->addStat('owner_byyear',$this->getSumStats('owner_bymonth',$previous_year),$previous_year.'-01-01 00:00:00');
3327
				$this->addStat('pilot_byyear',$this->getSumStats('pilot_bymonth',$previous_year),$previous_year.'-01-01 00:00:00');
3328
				$allairlines = $this->getAllAirlineNames();
3329
				foreach ($allairlines as $data) {
3330
					$this->addStat('aircrafts_byyear',$this->getSumStats('aircrafts_bymonth',$previous_year,$data['airline_icao']),$previous_year.'-01-01 00:00:00',$data['airline_icao']);
3331
					$this->addStat('airlines_byyear',$this->getSumStats('airlines_bymonth',$previous_year,$data['airline_icao']),$previous_year.'-01-01 00:00:00',$data['airline_icao']);
3332
					$this->addStat('owner_byyear',$this->getSumStats('owner_bymonth',$previous_year,$data['airline_icao']),$previous_year.'-01-01 00:00:00',$data['airline_icao']);
3333
					$this->addStat('pilot_byyear',$this->getSumStats('pilot_bymonth',$previous_year,$data['airline_icao']),$previous_year.'-01-01 00:00:00',$data['airline_icao']);
3334
				}
3335
				
3336
				if (isset($globalArchiveYear) && $globalArchiveYear) {
3337
					if ($globalArchive) {
3338
						$query = "INSERT INTO spotter_archive_output SELECT * FROM spotter_output WHERE spotter_output.date < '".date('Y')."-01-01 00:00:00'";
3339
						try {
3340
							$sth = $this->db->prepare($query);
3341
							$sth->execute();
3342
						} catch(PDOException $e) {
3343
							return "error : ".$e->getMessage().' - query : '.$query."\n";
3344
						}
3345
						$query = "INSERT INTO tracker_archive_output SELECT * FROM tracker_output WHERE tracker_output.date < '".date('Y')."-01-01 00:00:00'";
3346
						try {
3347
							$sth = $this->db->prepare($query);
3348
							$sth->execute();
3349
						} catch(PDOException $e) {
3350
							return "error : ".$e->getMessage().' - query : '.$query."\n";
3351
						}
3352
						$query = "INSERT INTO marine_archive_output SELECT * FROM marine_output WHERE marine_output.date < '".date('Y')."-01-01 00:00:00'";
3353
						try {
3354
							$sth = $this->db->prepare($query);
3355
							$sth->execute();
3356
						} catch(PDOException $e) {
3357
							return "error : ".$e->getMessage().' - query : '.$query."\n";
3358
						}
3359
					}
3360
					echo 'Delete old data'."\n";
3361
					if ($globalDBdriver == 'mysql') {
3362
						$query = "DELETE FROM spotter_output WHERE spotter_output.date < '".date('Y')."-01-01 00:00:00' LIMIT 10000";
3363
					} else {
3364
						$query = "DELETE FROM spotter_output WHERE spotter_id IN (SELECT spotter_id FROM spotter_output WHERE spotter_output.date < '".date('Y')."-01-01 00:00:00' LIMIT 10000)";
3365
					}
3366
					try {
3367
						$sth = $this->db->prepare($query);
3368
						$sth->execute();
3369
					} catch(PDOException $e) {
3370
						return "error : ".$e->getMessage().' - query : '.$query."\n";
3371
					}
3372
					if ($globalDBdriver == 'mysql') {
3373
						$query = "DELETE FROM tracker_output WHERE tracker_output.date < '".date('Y')."-01-01 00:00:00' LIMIT 10000";
3374
					} else {
3375
						$query = "DELETE FROM tracker_output WHERE tracker_id IN (SELECT tracker_id FROM tracker_output WHERE tracker_output.date < '".date('Y')."-01-01 00:00:00' LIMIT 10000)";
3376
					}
3377
					try {
3378
						$sth = $this->db->prepare($query);
3379
						$sth->execute();
3380
					} catch(PDOException $e) {
3381
						return "error : ".$e->getMessage().' - query : '.$query."\n";
3382
					}
3383
					if ($globalDBdriver == 'mysql') {
3384
						$query = "DELETE FROM marine_output WHERE marine_output.date < '".date('Y')."-01-01 00:00:00' LIMIT 10000";
3385
					} else {
3386
						$query = "DELETE FROM marine_output WHERE marine_id IN (SELECT marine_id FROM marine_output WHERE marine_output.date < '".date('Y')."-01-01 00:00:00' LIMIT 10000)";
3387
					}
3388
					try {
3389
						$sth = $this->db->prepare($query);
3390
						$sth->execute();
3391
					} catch(PDOException $e) {
3392
						return "error : ".$e->getMessage().' - query : '.$query."\n";
3393
					}
3394
				}
3395
				if (isset($globalDeleteLastYearStats) && $globalDeleteLastYearStats) {
3396
					$last_update = $this->getLastStatsUpdate('last_update_stats');
3397
					if (date('Y',strtotime($last_update[0]['value'])) != date('Y')) {
3398
						$this->deleteOldStats();
3399
						$this->addLastStatsUpdate('last_update_stats',date('Y').'-01-01 00:00:00');
3400
						$lastyearupdate = true;
3401
					}
3402
				}
3403
			}
3404
			if ($globalArchiveMonths > 0) {
3405
				if ($globalArchive) {
3406
					echo 'Archive old data...'."\n";
3407
					if ($globalDBdriver == 'mysql') {
3408
						//$query = "INSERT INTO spotter_archive_output SELECT * FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
3409
						$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)
3410
							    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
3411
							     FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
3412
					} else {
3413
						$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)
3414
							     SELECT 
3415
								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
3416
							    FROM spotter_output WHERE spotter_output.date < CAST(to_char(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalArchiveMonths." MONTHS', 'YYYY/mm/01') AS TIMESTAMP)";
3417
					}
3418
					try {
3419
						$sth = $this->db->prepare($query);
3420
						$sth->execute();
3421
					} catch(PDOException $e) {
3422
						return "error : ".$e->getMessage();
3423
					}
3424
					echo 'Archive old tracker data...'."\n";
3425
					if ($globalDBdriver == 'mysql') {
3426
						$query = "INSERT INTO tracker_archive_output (tracker_archive_output_id,famtrackid, ident, latitude, longitude, altitude, heading, ground_speed, date, format_source, source_name, comment, type) 
3427
							    SELECT tracker_id,famtrackid, ident, latitude, longitude, altitude, heading, ground_speed, date, format_source, source_name, comment, type
3428
							     FROM tracker_output WHERE tracker_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
3429
					} else {
3430
						$query = "INSERT INTO tracker_archive_output (tracker_archive_output_id,famtrackid, ident, latitude, longitude, altitude, heading, ground_speed, date, format_source, source_name, comment, type) 
3431
							     SELECT tracker_id,famtrackid, ident, latitude, longitude, altitude, heading, ground_speed, date, format_source, source_name, comment, type
3432
							    FROM tracker_output WHERE tracker_output.date < CAST(to_char(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalArchiveMonths." MONTHS', 'YYYY/mm/01') AS TIMESTAMP)";
3433
					}
3434
					try {
3435
						$sth = $this->db->prepare($query);
3436
						$sth->execute();
3437
					} catch(PDOException $e) {
3438
						return "error : ".$e->getMessage();
3439
					}
3440
					echo 'Archive old marine data...'."\n";
3441
					if ($globalDBdriver == 'mysql') {
3442
						$query = "INSERT INTO marine_archive_output (marine_archive_output_id,fammarine_id, ident, latitude, longitude, heading, ground_speed, date, format_source, source_name, mmsi, type, status,imo,arrival_port_name,arrival_port_date) 
3443
							    SELECT marine_id,fammarine_id, ident, latitude, longitude, heading, ground_speed, date, format_source, source_name, mmsi, type, status,imo,arrival_port_name,arrival_port_date 
3444
							     FROM marine_output WHERE marine_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
3445
					} else {
3446
						$query = "INSERT INTO marine_archive_output (marine_archive_output_id,fammarine_id, ident, latitude, longitude, heading, ground_speed, date, format_source, source_name, mmsi, type, status,imo,arrival_port_name,arrival_port_date) 
3447
							     SELECT marine_id,fammarine_id, ident, latitude, longitude, heading, ground_speed, date, format_source, source_name, mmsi, type, status,imo,arrival_port_name,arrival_port_date 
3448
							    FROM marine_output WHERE marine_output.date < CAST(to_char(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalArchiveMonths." MONTHS', 'YYYY/mm/01') AS TIMESTAMP)";
3449
					}
3450
					try {
3451
						$sth = $this->db->prepare($query);
3452
						$sth->execute();
3453
					} catch(PDOException $e) {
3454
						return "error : ".$e->getMessage();
3455
					}
3456
				}
3457
				echo 'Deleting old data...'."\n";
3458
				if ($globalDBdriver == 'mysql') {
3459
					$query = "DELETE FROM spotter_output WHERE spotter_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
3460
				} else {
3461
					$query = "DELETE FROM spotter_output WHERE spotter_id IN ( SELECT spotter_id FROM spotter_output WHERE spotter_output.date < CAST(to_char(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalArchiveMonths." MONTHS', 'YYYY/mm/01') AS TIMESTAMP))";
3462
				}
3463
				try {
3464
					$sth = $this->db->prepare($query);
3465
					$sth->execute();
3466
				} catch(PDOException $e) {
3467
					return "error : ".$e->getMessage();
3468
				}
3469
				echo 'Deleting old tracker data...'."\n";
3470
				if ($globalDBdriver == 'mysql') {
3471
					$query = "DELETE FROM tracker_output WHERE tracker_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
3472
				} else {
3473
					$query = "DELETE FROM tracker_output WHERE tracker_id IN ( SELECT tracker_id FROM tracker_output WHERE tracker_output.date < CAST(to_char(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalArchiveMonths." MONTHS', 'YYYY/mm/01') AS TIMESTAMP))";
3474
				}
3475
				try {
3476
					$sth = $this->db->prepare($query);
3477
					$sth->execute();
3478
				} catch(PDOException $e) {
3479
					return "error : ".$e->getMessage();
3480
				}
3481
				echo 'Deleting old marine data...'."\n";
3482
				if ($globalDBdriver == 'mysql') {
3483
					$query = "DELETE FROM marine_output WHERE marine_output.date < DATE_FORMAT(UTC_TIMESTAMP() - INTERVAL ".$globalArchiveMonths." MONTH, '%Y/%m/01')";
3484
				} else {
3485
					$query = "DELETE FROM marine_output WHERE marine_id IN ( SELECT marine_id FROM marine_output WHERE marine_output.date < CAST(to_char(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalArchiveMonths." MONTHS', 'YYYY/mm/01') AS TIMESTAMP))";
3486
				}
3487
				try {
3488
					$sth = $this->db->prepare($query);
3489
					$sth->execute();
3490
				} catch(PDOException $e) {
3491
					return "error : ".$e->getMessage();
3492
				}
3493
			}
3494
			if (!isset($lastyearupdate)) {
3495
				echo 'Insert last stats update date...'."\n";
3496
				date_default_timezone_set('UTC');
3497
				$this->addLastStatsUpdate('last_update_stats',date('Y-m-d G:i:s'));
3498
			}
3499
			if ($globalStatsResetYear) {
3500
				require_once(dirname(__FILE__).'/../install/class.settings.php');
3501
				settings::modify_settings(array('globalStatsResetYear' => 'FALSE'));
3502
			}
3503
		
3504
	}
3505
}
3506
3507
?>