Completed
Push — master ( 2fda11...9b9623 )
by Yannick
07:04
created

SpotterArchive::searchSpotterData()   F

Complexity

Conditions 54
Paths > 20000

Size

Total Lines 327
Code Lines 196

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 54
eloc 196
nc 179595903
nop 24
dl 0
loc 327
rs 2
c 0
b 0
f 0

How to fix   Long Method    Complexity    Many Parameters   

Long Method

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

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

Commonly applied refactorings include:

Many Parameters

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

There are several approaches to avoid long parameter lists:

1
<?php
2
class SpotterArchive {
3
	public $global_query = "SELECT spotter_archive.* FROM spotter_archive";
4
	public $db;
5
6
	public function __construct($dbc = null) {
7
		$Connection = new Connection($dbc);
8
		$this->db = $Connection->db;
9
	}
10
11
	// Spotter_archive
12
	public function addSpotterArchiveData($flightaware_id = '', $ident = '', $registration = '', $airline_name = '', $airline_icao = '', $airline_country = '', $airline_type = '', $aircraft_icao = '', $aircraft_shadow = '', $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 = '', $squawk = '', $ModeS = '', $pilot_id = '', $pilot_name = '',$verticalrate = '',$format_source = '', $source_name = '', $over_country = '') {
13
		require_once(dirname(__FILE__).'/class.Spotter.php');
14
		if ($over_country == '') {
15
			$Spotter = new Spotter($this->db);
16
			$data_country = $Spotter->getCountryFromLatitudeLongitude($latitude,$longitude);
17
			if (!empty($data_country)) $country = $data_country['iso2'];
18
			else $country = '';
19
		} else $country = $over_country;
20
		if ($airline_type === NULL) $airline_type ='';
21
	
22
		//if ($country == '') echo "\n".'************ UNKNOW COUNTRY ****************'."\n";
23
		//else echo "\n".'*/*/*/*/*/*/*/ Country : '.$country.' */*/*/*/*/*/*/*/*/'."\n";
24
25
		// Route is not added in spotter_archive
26
		$query  = "INSERT INTO spotter_archive (flightaware_id, ident, registration, airline_name, airline_icao, airline_country, airline_type, aircraft_icao, aircraft_shadow, 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, squawk, ModeS, pilot_id, pilot_name, verticalrate,format_source,over_country,source_name)
27
		        VALUES (:flightaware_id, :ident, :registration, :airline_name, :airline_icao, :airline_country, :airline_type, :aircraft_icao, :aircraft_shadow, :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, :squawk, :ModeS, :pilot_id, :pilot_name, :verticalrate, :format_source, :over_country, :source_name)";
28
29
		$query_values = array(':flightaware_id' => $flightaware_id, ':ident' => $ident, ':registration' => $registration, ':airline_name' => $airline_name, ':airline_icao' => $airline_icao, ':airline_country' => $airline_country, ':airline_type' => $airline_type, ':aircraft_icao' => $aircraft_icao, ':aircraft_shadow' => $aircraft_shadow, ':aircraft_name' => $aircraft_name, ':aircraft_manufacturer' => $aircraft_manufacturer, ':departure_airport_icao' => $departure_airport_icao, ':departure_airport_name' => $departure_airport_name, ':departure_airport_city' => $departure_airport_city, ':departure_airport_country' => $departure_airport_country, ':departure_airport_time' => $departure_airport_time,':arrival_airport_icao' => $arrival_airport_icao, ':arrival_airport_name' => $arrival_airport_name, ':arrival_airport_city' => $arrival_airport_city, ':arrival_airport_country' => $arrival_airport_country, ':arrival_airport_time' => $arrival_airport_time, ':route_stop' => $route_stop, ':date' => $date,':latitude' => $latitude, ':longitude' => $longitude, ':waypoints' => $waypoints, ':altitude' => $altitude, ':heading' => $heading, ':ground_speed' => $ground_speed, ':squawk' => $squawk, ':ModeS' => $ModeS, ':pilot_id' => $pilot_id, ':pilot_name' => $pilot_name, ':verticalrate' => $verticalrate, ':format_source' => $format_source, ':over_country' => $country, ':source_name' => $source_name);
30
		try {
31
			$sth = $this->db->prepare($query);
32
			$sth->execute($query_values);
33
		} catch(PDOException $e) {
34
			return "error : ".$e->getMessage();
35
		}
36
		return "success";
37
	}
38
39
40
        /**
41
        * Gets all the spotter information based on a particular callsign
42
        *
43
        * @return Array the spotter information
44
        *
45
        */
46
        public function getLastArchiveSpotterDataByIdent($ident)
47
        {
48
		$Spotter = new Spotter($this->db);
49
                date_default_timezone_set('UTC');
50
51
                $ident = filter_var($ident, FILTER_SANITIZE_STRING);
52
                //$query  = "SELECT spotter_archive.* FROM spotter_archive INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_archive l WHERE l.ident = :ident GROUP BY l.flightaware_id) s on spotter_archive.flightaware_id = s.flightaware_id AND spotter_archive.date = s.maxdate LIMIT 1";
53
                $query  = "SELECT spotter_archive.* FROM spotter_archive WHERE ident = :ident ORDER BY date DESC LIMIT 1";
54
55
                $spotter_array = $Spotter->getDataFromDB($query,array(':ident' => $ident));
56
57
                return $spotter_array;
58
        }
59
60
61
        /**
62
        * Gets last the spotter information based on a particular id
63
        *
64
        * @return Array the spotter information
65
        *
66
        */
67
        public function getLastArchiveSpotterDataById($id)
68
        {
69
    		$Spotter = new Spotter($this->db);
70
                date_default_timezone_set('UTC');
71
                $id = filter_var($id, FILTER_SANITIZE_STRING);
72
                //$query  = SpotterArchive->$global_query." WHERE spotter_archive.flightaware_id = :id";
73
                //$query  = "SELECT spotter_archive.* FROM spotter_archive INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_archive l WHERE l.flightaware_id = :id GROUP BY l.flightaware_id) s on spotter_archive.flightaware_id = s.flightaware_id AND spotter_archive.date = s.maxdate LIMIT 1";
74
                $query  = "SELECT * FROM spotter_archive WHERE flightaware_id = :id ORDER BY date DESC LIMIT 1";
75
76
//              $spotter_array = Spotter->getDataFromDB($query,array(':id' => $id));
77
                  /*
78
                try {
79
                        $Connection = new Connection();
80
                        $sth = Connection->$db->prepare($query);
81
                        $sth->execute(array(':id' => $id));
82
                } catch(PDOException $e) {
83
                        return "error";
84
                }
85
                $spotter_array = $sth->fetchAll(PDO->FETCH_ASSOC);
86
                */
87
                $spotter_array = $Spotter->getDataFromDB($query,array(':id' => $id));
88
89
                return $spotter_array;
90
        }
91
92
        /**
93
        * Gets all the spotter information based on a particular id
94
        *
95
        * @return Array the spotter information
96
        *
97
        */
98
        public function getAllArchiveSpotterDataById($id)
99
        {
100
                date_default_timezone_set('UTC');
101
                $id = filter_var($id, FILTER_SANITIZE_STRING);
102
                $query  = $this->global_query." WHERE spotter_archive.flightaware_id = :id";
103
104
//              $spotter_array = Spotter->getDataFromDB($query,array(':id' => $id));
105
106
                try {
107
                        $sth = $this->db->prepare($query);
108
                        $sth->execute(array(':id' => $id));
109
                } catch(PDOException $e) {
110
                        echo $e->getMessage();
111
                        die;
112
                }
113
                $spotter_array = $sth->fetchAll(PDO::FETCH_ASSOC);
114
115
                return $spotter_array;
116
        }
117
118
        /**
119
        * Gets coordinate & time spotter information based on a particular id
120
        *
121
        * @return Array the spotter information
122
        *
123
        */
124
        public function getCoordArchiveSpotterDataById($id)
125
        {
126
                date_default_timezone_set('UTC');
127
                $id = filter_var($id, FILTER_SANITIZE_STRING);
128
                $query  = "SELECT spotter_archive.latitude, spotter_archive.longitude, spotter_archive.date FROM spotter_archive WHERE spotter_archive.flightaware_id = :id";
129
130
//              $spotter_array = Spotter->getDataFromDB($query,array(':id' => $id));
131
132
                try {
133
                        $sth = $this->db->prepare($query);
134
                        $sth->execute(array(':id' => $id));
135
                } catch(PDOException $e) {
136
                        echo $e->getMessage();
137
                        die;
138
                }
139
                $spotter_array = $sth->fetchAll(PDO::FETCH_ASSOC);
140
141
                return $spotter_array;
142
        }
143
144
145
        /**
146
        * Gets altitude information based on a particular callsign
147
        *
148
        * @return Array the spotter information
149
        *
150
        */
151
        public function getAltitudeArchiveSpotterDataByIdent($ident)
152
        {
153
154
                date_default_timezone_set('UTC');
155
156
                $ident = filter_var($ident, FILTER_SANITIZE_STRING);
157
                $query  = "SELECT spotter_archive.altitude, spotter_archive.date FROM spotter_archive WHERE spotter_archive.ident = :ident";
158
159
                try {
160
                        $sth = $this->db->prepare($query);
161
                        $sth->execute(array(':ident' => $ident));
162
                } catch(PDOException $e) {
163
                        echo $e->getMessage();
164
                        die;
165
                }
166
                $spotter_array = $sth->fetchAll(PDO::FETCH_ASSOC);
167
168
                return $spotter_array;
169
        }
170
171
        /**
172
        * Gets altitude information based on a particular id
173
        *
174
        * @return Array the spotter information
175
        *
176
        */
177
        public function getAltitudeArchiveSpotterDataById($id)
178
        {
179
180
                date_default_timezone_set('UTC');
181
182
                $id = filter_var($id, FILTER_SANITIZE_STRING);
183
                $query  = "SELECT spotter_archive.altitude, spotter_archive.date FROM spotter_archive WHERE spotter_archive.flightaware_id = :id";
184
185
                try {
186
                        $sth = $this->db->prepare($query);
187
                        $sth->execute(array(':id' => $id));
188
                } catch(PDOException $e) {
189
                        echo $e->getMessage();
190
                        die;
191
                }
192
                $spotter_array = $sth->fetchAll(PDO::FETCH_ASSOC);
193
194
                return $spotter_array;
195
        }
196
197
        /**
198
        * Gets altitude & speed information based on a particular id
199
        *
200
        * @return Array the spotter information
201
        *
202
        */
203
        public function getAltitudeSpeedArchiveSpotterDataById($id)
204
        {
205
206
                date_default_timezone_set('UTC');
207
208
                $id = filter_var($id, FILTER_SANITIZE_STRING);
209
                $query  = "SELECT spotter_archive.altitude, spotter_archive.ground_speed, spotter_archive.date FROM spotter_archive WHERE spotter_archive.flightaware_id = :id";
210
211
                try {
212
                        $sth = $this->db->prepare($query);
213
                        $sth->execute(array(':id' => $id));
214
                } catch(PDOException $e) {
215
                        echo $e->getMessage();
216
                        die;
217
                }
218
                $spotter_array = $sth->fetchAll(PDO::FETCH_ASSOC);
219
220
                return $spotter_array;
221
        }
222
223
224
        /**
225
        * Gets altitude information based on a particular callsign
226
        *
227
        * @return Array the spotter information
228
        *
229
        */
230
        public function getLastAltitudeArchiveSpotterDataByIdent($ident)
231
        {
232
233
                date_default_timezone_set('UTC');
234
235
                $ident = filter_var($ident, FILTER_SANITIZE_STRING);
236
                $query  = "SELECT spotter_archive.altitude, spotter_archive.date FROM spotter_archive INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_archive l WHERE l.ident = :ident GROUP BY l.flightaware_id) s on spotter_archive.flightaware_id = s.flightaware_id AND spotter_archive.date = s.maxdate LIMIT 1";
237
//                $query  = "SELECT spotter_archive.altitude, spotter_archive.date FROM spotter_archive WHERE spotter_archive.ident = :ident";
238
239
                try {
240
                        $sth = $this->db->prepare($query);
241
                        $sth->execute(array(':ident' => $ident));
242
                } catch(PDOException $e) {
243
                        echo $e->getMessage();
244
                        die;
245
                }
246
                $spotter_array = $sth->fetchAll(PDO::FETCH_ASSOC);
247
248
                return $spotter_array;
249
        }
250
251
252
253
       /**
254
        * Gets all the archive spotter information
255
        *
256
        * @return Array the spotter information
257
        *
258
        */
259
        public function getSpotterArchiveData($ident,$flightaware_id,$date)
260
        {
261
    		$Spotter = new Spotter($this->db);
262
                $ident = filter_var($ident, FILTER_SANITIZE_STRING);
263
                $query  = "SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE l.ident = :ident AND l.flightaware_id = :flightaware_id AND l.date LIKE :date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate";
264
265
                $spotter_array = $Spotter->getDataFromDB($query,array(':ident' => $ident,':flightaware_id' => $flightaware_id,':date' => $date.'%'));
266
267
                return $spotter_array;
268
        }
269
        
270
        public function deleteSpotterArchiveTrackData()
271
        {
272
		global $globalArchiveKeepTrackMonths;
273
                date_default_timezone_set('UTC');
274
		$query = 'DELETE FROM spotter_archive WHERE spotter_archive.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$globalArchiveKeepTrackMonths.' MONTH)';
275
                try {
276
                        $sth = $this->db->prepare($query);
277
                        $sth->execute();
278
                } catch(PDOException $e) {
279
                        echo $e->getMessage();
280
                        die;
281
                }
282
	}
283
284
	/**
285
        * Gets Minimal Live Spotter data
286
        *
287
        * @return Array the spotter information
288
        *
289
        */
290
        public function getMinLiveSpotterData($begindate,$enddate,$filter = array())
0 ignored issues
show
Unused Code introduced by
The parameter $enddate is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
291
        {
292
                global $globalDBdriver, $globalLiveInterval;
293
                date_default_timezone_set('UTC');
294
295
                $filter_query = '';
296
                if (isset($filter['source']) && !empty($filter['source'])) {
297
                        $filter_query .= " AND format_source IN ('".implode("','",$filter['source'])."') ";
298
                }
299
                // Use spotter_output also ?
300
                if (isset($filter['airlines']) && !empty($filter['airlines'])) {
301
                        $filter_query .= " INNER JOIN (SELECT flightaware_id FROM spotter_archive_output WHERE spotter_archive_output.airline_icao IN ('".implode("','",$filter['airlines'])."')) so ON so.flightaware_id = spotter_archive.flightaware_id ";
302
                }
303
                if (isset($filter['airlinestype']) && !empty($filter['airlinestype'])) {
304
                        $filter_query .= " INNER JOIN (SELECT flightaware_id FROM spotter_archive_output WHERE spotter_archive_output.airline_type = '".$filter['airlinestype']."') sa ON sa.flightaware_id = spotter_archive.flightaware_id ";
305
                }
306
                if (isset($filter['source_aprs']) && !empty($filter['source_aprs'])) {
307
                        $filter_query = " AND format_source = 'aprs' AND source_name IN ('".implode("','",$filter['source_aprs'])."')";
308
                }
309
310
                //if (!isset($globalLiveInterval)) $globalLiveInterval = '200';
311
                if ($globalDBdriver == 'mysql') {
312
                        /*
313
                        $query  = 'SELECT a.aircraft_shadow, spotter_archive.ident, spotter_archive.flightaware_id, spotter_archive.aircraft_icao, spotter_archive.departure_airport_icao as departure_airport, spotter_archive.arrival_airport_icao as arrival_airport, spotter_archive.latitude, spotter_archive.longitude, spotter_archive.altitude, spotter_archive.heading, spotter_archive.ground_speed, spotter_archive.squawk 
314
                    		    FROM spotter_archive 
315
                    		    INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_archive l WHERE (l.date BETWEEN '."'".$begindate."'".' AND '."'".$enddate."'".') GROUP BY l.flightaware_id) s on spotter_archive.flightaware_id = s.flightaware_id AND spotter_archive.date = s.maxdate '.$filter_query.'LEFT JOIN (SELECT aircraft_shadow,icao FROM aircraft) a ON spotter_archive.aircraft_icao = a.icao';
316
			*/
317
			$query  = 'SELECT a.aircraft_shadow, spotter_archive.ident, spotter_archive.flightaware_id, spotter_archive.aircraft_icao, spotter_archive.departure_airport_icao as departure_airport, spotter_archive.arrival_airport_icao as arrival_airport, spotter_archive.latitude, spotter_archive.longitude, spotter_archive.altitude, spotter_archive.heading, spotter_archive.ground_speed, spotter_archive.squawk 
318
				    FROM spotter_archive 
319
				    INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate 
320
						FROM spotter_archive l 
321
						WHERE (l.date BETWEEN DATE_SUB('."'".$begindate."'".',INTERVAL '.$globalLiveInterval.' SECOND) AND '."'".$begindate."'".') 
322
						GROUP BY l.flightaware_id) s on spotter_archive.flightaware_id = s.flightaware_id 
323
				    AND spotter_archive.date = s.maxdate '.$filter_query.'LEFT JOIN (SELECT aircraft_shadow,icao FROM aircraft) a ON spotter_archive.aircraft_icao = a.icao';
324
                } else {
325
                        $query  = 'SELECT spotter_archive.ident, spotter_archive.flightaware_id, spotter_archive.aircraft_icao, spotter_archive.departure_airport_icao as departure_airport, spotter_archive.arrival_airport_icao as arrival_airport, spotter_archive.latitude, spotter_archive.longitude, spotter_archive.altitude, spotter_archive.heading, spotter_archive.ground_speed, spotter_archive.squawk, a.aircraft_shadow FROM spotter_archive INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_archive l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_archive.flightaware_id = s.flightaware_id AND spotter_archive.date = s.maxdate '.$filter_query.'INNER JOIN (SELECT * FROM aircraft) a on spotter_archive.aircraft_icao = a.icao';
326
                }
327
                //echo $query;
328
                try {
329
                        $sth = $this->db->prepare($query);
330
                        $sth->execute();
331
                } catch(PDOException $e) {
332
                        echo $e->getMessage();
333
                        die;
334
                }
335
                $spotter_array = $sth->fetchAll(PDO::FETCH_ASSOC);
336
337
                return $spotter_array;
338
        }
339
340
	/**
341
        * Gets Minimal Live Spotter data
342
        *
343
        * @return Array the spotter information
344
        *
345
        */
346
        public function getMinLiveSpotterDataPlayback($begindate,$enddate,$filter = array())
347
        {
348
                global $globalDBdriver, $globalLiveInterval;
349
                date_default_timezone_set('UTC');
350
351
                $filter_query = '';
352
                if (isset($filter['source']) && !empty($filter['source'])) {
353
                        $filter_query .= " AND format_source IN ('".implode("','",$filter['source'])."') ";
354
                }
355
                // Should use spotter_output also ?
356
                if (isset($filter['airlines']) && !empty($filter['airlines'])) {
357
                        $filter_query .= " INNER JOIN (SELECT flightaware_id FROM spotter_archive_output WHERE spotter_archive_output.airline_icao IN ('".implode("','",$filter['airlines'])."')) so ON so.flightaware_id = spotter_archive.flightaware_id ";
358
                }
359
                if (isset($filter['airlinestype']) && !empty($filter['airlinestype'])) {
360
                        $filter_query .= " INNER JOIN (SELECT flightaware_id FROM spotter_archive_output WHERE spotter_archive_output.airline_type = '".$filter['airlinestype']."') sa ON sa.flightaware_id = spotter_archive.flightaware_id ";
361
                }
362
                if (isset($filter['source_aprs']) && !empty($filter['source_aprs'])) {
363
                        $filter_query = " AND format_source = 'aprs' AND source_name IN ('".implode("','",$filter['source_aprs'])."')";
364
                }
365
366
                //if (!isset($globalLiveInterval)) $globalLiveInterval = '200';
367
                if ($globalDBdriver == 'mysql') {
368
                        /*
369
                        $query  = 'SELECT a.aircraft_shadow, spotter_archive.ident, spotter_archive.flightaware_id, spotter_archive.aircraft_icao, spotter_archive.departure_airport_icao as departure_airport, spotter_archive.arrival_airport_icao as arrival_airport, spotter_archive.latitude, spotter_archive.longitude, spotter_archive.altitude, spotter_archive.heading, spotter_archive.ground_speed, spotter_archive.squawk 
370
                    		    FROM spotter_archive 
371
                    		    INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_archive l WHERE (l.date BETWEEN '."'".$begindate."'".' AND '."'".$enddate."'".') GROUP BY l.flightaware_id) s on spotter_archive.flightaware_id = s.flightaware_id AND spotter_archive.date = s.maxdate '.$filter_query.'LEFT JOIN (SELECT aircraft_shadow,icao FROM aircraft) a ON spotter_archive.aircraft_icao = a.icao';
372
			*/
373
			$query  = 'SELECT a.aircraft_shadow, spotter_archive_output.ident, spotter_archive_output.flightaware_id, spotter_archive_output.aircraft_icao, spotter_archive_output.departure_airport_icao as departure_airport, spotter_archive_output.arrival_airport_icao as arrival_airport, spotter_archive_output.latitude, spotter_archive_output.longitude, spotter_archive_output.altitude, spotter_archive_output.heading, spotter_archive_output.ground_speed, spotter_archive_output.squawk 
374
				    FROM spotter_archive_output 
375
				    LEFT JOIN (SELECT aircraft_shadow,icao FROM aircraft) a ON spotter_archive_output.aircraft_icao = a.icao 
376
				    WHERE (spotter_archive_output.date BETWEEN '."'".$begindate."'".' AND '."'".$enddate."'".') 
377
                        	    '.$filter_query.' GROUP BY spotter_archive_output.flightaware_id, spotter_archive_output.ident, spotter_archive_output.aircraft_icao, spotter_archive_output.departure_airport_icao, spotter_archive_output.arrival_airport_icao, spotter_archive_output.latitude, spotter_archive_output.longitude, spotter_archive_output.altitude, spotter_archive_output.heading, spotter_archive_output.ground_speed, spotter_archive_output.squawk, a.aircraft_shadow';
378
379
                } else {
380
                        //$query  = 'SELECT spotter_archive_output.ident, spotter_archive_output.flightaware_id, spotter_archive_output.aircraft_icao, spotter_archive_output.departure_airport_icao as departure_airport, spotter_archive_output.arrival_airport_icao as arrival_airport, spotter_archive_output.latitude, spotter_archive_output.longitude, spotter_archive_output.altitude, spotter_archive_output.heading, spotter_archive_output.ground_speed, spotter_archive_output.squawk, a.aircraft_shadow FROM spotter_archive_output INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_archive_output l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_archive_output.flightaware_id = s.flightaware_id AND spotter_archive_output.date = s.maxdate '.$filter_query.'INNER JOIN (SELECT * FROM aircraft) a on spotter_archive_output.aircraft_icao = a.icao';
381
                       /*
382
                        $query  = 'SELECT spotter_archive_output.ident, spotter_archive_output.flightaware_id, spotter_archive_output.aircraft_icao, spotter_archive_output.departure_airport_icao as departure_airport, spotter_archive_output.arrival_airport_icao as arrival_airport, spotter_archive_output.latitude, spotter_archive_output.longitude, spotter_archive_output.altitude, spotter_archive_output.heading, spotter_archive_output.ground_speed, spotter_archive_output.squawk, a.aircraft_shadow
383
                        	    FROM spotter_archive_output 
384
                        	    INNER JOIN (SELECT * FROM aircraft) a on spotter_archive_output.aircraft_icao = a.icao
385
                        	    WHERE spotter_archive_output.date >= '."'".$begindate."'".' AND spotter_archive_output.date <= '."'".$enddate."'".'
386
                        	    '.$filter_query.' GROUP BY spotter_archive_output.flightaware_id, spotter_archive_output.ident, spotter_archive_output.aircraft_icao, spotter_archive_output.departure_airport_icao, spotter_archive_output.arrival_airport_icao, spotter_archive_output.latitude, spotter_archive_output.longitude, spotter_archive_output.altitude, spotter_archive_output.heading, spotter_archive_output.ground_speed, spotter_archive_output.squawk, a.aircraft_shadow';
387
                        */
388
                        $query  = 'SELECT DISTINCT spotter_output.flightaware_id, spotter_output.ident, spotter_output.aircraft_icao, spotter_output.departure_airport_icao as departure_airport, spotter_output.arrival_airport_icao as arrival_airport, spotter_output.latitude, spotter_output.longitude, spotter_output.altitude, spotter_output.heading, spotter_output.ground_speed, spotter_output.squawk, a.aircraft_shadow
389
                        	    FROM spotter_output 
390
                        	    INNER JOIN (SELECT * FROM aircraft) a on spotter_output.aircraft_icao = a.icao
391
                        	    WHERE spotter_output.date >= '."'".$begindate."'".' AND spotter_output.date <= '."'".$enddate."'".'
392
                        	    '.$filter_query.' LIMIT 200 OFFSET 0';
393
//                        	    .' GROUP BY spotter_output.flightaware_id, spotter_output.ident, spotter_output.aircraft_icao, spotter_output.departure_airport_icao, spotter_output.arrival_airport_icao, spotter_output.latitude, spotter_output.longitude, spotter_output.altitude, spotter_output.heading, spotter_output.ground_speed, spotter_output.squawk, a.aircraft_shadow';
394
                        	    
395
                }
396
                //echo $query;
397
                try {
398
                        $sth = $this->db->prepare($query);
399
                        $sth->execute();
400
                } catch(PDOException $e) {
401
                        echo $e->getMessage();
402
                        die;
403
                }
404
                $spotter_array = $sth->fetchAll(PDO::FETCH_ASSOC);
405
406
                return $spotter_array;
407
        }
408
409
	 /**
410
        * Gets count Live Spotter data
411
        *
412
        * @return Array the spotter information
413
        *
414
        */
415
        public function getLiveSpotterCount($begindate,$enddate,$filter = array())
416
        {
417
                global $globalDBdriver, $globalLiveInterval;
418
                date_default_timezone_set('UTC');
419
420
                $filter_query = '';
421
                if (isset($filter['source']) && !empty($filter['source'])) {
422
                        $filter_query .= " AND format_source IN ('".implode("','",$filter['source'])."') ";
423
                }
424
                if (isset($filter['airlines']) && !empty($filter['airlines'])) {
425
                        $filter_query .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.airline_icao IN ('".implode("','",$filter['airlines'])."')) so ON so.flightaware_id = spotter_archive.flightaware_id ";
426
                }
427
                if (isset($filter['airlinestype']) && !empty($filter['airlinestype'])) {
428
                        $filter_query .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.airline_type = '".$filter['airlinestype']."') sa ON sa.flightaware_id = spotter_archive.flightaware_id ";
429
                }
430
                if (isset($filter['source_aprs']) && !empty($filter['source_aprs'])) {
431
                        $filter_query = " AND format_source = 'aprs' AND source_name IN ('".implode("','",$filter['source_aprs'])."')";
432
                }
433
434
                //if (!isset($globalLiveInterval)) $globalLiveInterval = '200';
435
                if ($globalDBdriver == 'mysql') {
436
			$query = 'SELECT COUNT(DISTINCT flightaware_id) as nb 
437
			FROM spotter_archive l 
438
			WHERE (l.date BETWEEN DATE_SUB('."'".$begindate."'".',INTERVAL '.$globalLiveInterval.' SECOND) AND '."'".$begindate."'".')'.$filter_query;
439
                } else {
440
			$query = 'SELECT COUNT(DISTINCT flightaware_id) as nb FROM spotter_archive l WHERE (l.date BETWEEN '."'".$begindate."' - INTERVAL '".$globalLiveInterval." SECONDS' AND "."'".$enddate."'".')'.$filter_query;
441
                }
442
                //echo $query;
443
                try {
444
                        $sth = $this->db->prepare($query);
445
                        $sth->execute();
446
                } catch(PDOException $e) {
447
                        echo $e->getMessage();
448
                        die;
449
                }
450
		$result = $sth->fetch(PDO::FETCH_ASSOC);
451
                return $result['nb'];
452
453
        }
454
455
456
457
	// Spotter_Archive_output
458
	
459
    /**
460
    * Gets all the spotter information
461
    *
462
    * @return Array the spotter information
463
    *
464
    */
465
    public function searchSpotterData($q = '', $registration = '', $aircraft_icao = '', $aircraft_manufacturer = '', $highlights = '', $airline_icao = '', $airline_country = '', $airline_type = '', $airport = '', $airport_country = '', $callsign = '', $departure_airport_route = '', $arrival_airport_route = '', $owner = '',$pilot_id = '',$pilot_name = '',$altitude = '', $date_posted = '', $limit = '', $sort = '', $includegeodata = '',$origLat = '',$origLon = '',$dist = '')
466
    {
467
	global $globalTimezone, $globalDBdriver;
468
	require_once(dirname(__FILE__).'/class.Translation.php');
469
	$Translation = new Translation();
470
	$Spotter = new Spotter($this->db);
471
472
	date_default_timezone_set('UTC');
473
	
474
	$query_values = array();
475
	$additional_query = '';
476
	$limit_query = '';
477
	if ($q != "")
478
	{
479
	    if (!is_string($q))
480
	    {
481
		return false;
482
	    } else {
483
	        
484
		$q_array = explode(" ", $q);
485
		
486
		foreach ($q_array as $q_item){
487
		    $additional_query .= " AND (";
488
		    $additional_query .= "(spotter_archive_output.spotter_id like '%".$q_item."%') OR ";
489
		    $additional_query .= "(spotter_archive_output.aircraft_icao like '%".$q_item."%') OR ";
490
		    $additional_query .= "(spotter_archive_output.aircraft_name like '%".$q_item."%') OR ";
491
		    $additional_query .= "(spotter_archive_output.aircraft_manufacturer like '%".$q_item."%') OR ";
492
		    $additional_query .= "(spotter_archive_output.airline_icao like '%".$q_item."%') OR ";
493
		    $additional_query .= "(spotter_archive_output.airline_name like '%".$q_item."%') OR ";
494
		    $additional_query .= "(spotter_archive_output.airline_country like '%".$q_item."%') OR ";
495
		    $additional_query .= "(spotter_archive_output.departure_airport_icao like '%".$q_item."%') OR ";
496
		    $additional_query .= "(spotter_archive_output.departure_airport_name like '%".$q_item."%') OR ";
497
		    $additional_query .= "(spotter_archive_output.departure_airport_city like '%".$q_item."%') OR ";
498
		    $additional_query .= "(spotter_archive_output.departure_airport_country like '%".$q_item."%') OR ";
499
		    $additional_query .= "(spotter_archive_output.arrival_airport_icao like '%".$q_item."%') OR ";
500
		    $additional_query .= "(spotter_archive_output.arrival_airport_name like '%".$q_item."%') OR ";
501
		    $additional_query .= "(spotter_archive_output.arrival_airport_city like '%".$q_item."%') OR ";
502
		    $additional_query .= "(spotter_archive_output.arrival_airport_country like '%".$q_item."%') OR ";
503
		    $additional_query .= "(spotter_archive_output.registration like '%".$q_item."%') OR ";
504
		    $additional_query .= "(spotter_archive_output.owner_name like '%".$q_item."%') OR ";
505
		    $additional_query .= "(spotter_archive_output.pilot_id like '%".$q_item."%') OR ";
506
		    $additional_query .= "(spotter_archive_output.pilot_name like '%".$q_item."%') OR ";
507
		    $additional_query .= "(spotter_archive_output.ident like '%".$q_item."%') OR ";
508
		    $translate = $Translation->ident2icao($q_item);
509
		    if ($translate != $q_item) $additional_query .= "(spotter_archive_output.ident like '%".$translate."%') OR ";
510
		    $additional_query .= "(spotter_archive_output.highlight like '%".$q_item."%')";
511
		    $additional_query .= ")";
512
		}
513
	    }
514
	}
515
	
516
	if ($registration != "")
517
	{
518
	    $registration = filter_var($registration,FILTER_SANITIZE_STRING);
519
	    if (!is_string($registration))
520
	    {
521
		return false;
522
	    } else {
523
		$additional_query .= " AND (spotter_archive_output.registration = '".$registration."')";
524
	    }
525
	}
526
	
527
	if ($aircraft_icao != "")
528
	{
529
	    $aircraft_icao = filter_var($aircraft_icao,FILTER_SANITIZE_STRING);
530
	    if (!is_string($aircraft_icao))
531
	    {
532
		return false;
533
	    } else {
534
		$additional_query .= " AND (spotter_archive_output.aircraft_icao = '".$aircraft_icao."')";
535
	    }
536
	}
537
	
538
	if ($aircraft_manufacturer != "")
539
	{
540
	    $aircraft_manufacturer = filter_var($aircraft_manufacturer,FILTER_SANITIZE_STRING);
541
	    if (!is_string($aircraft_manufacturer))
542
	    {
543
		return false;
544
	    } else {
545
		$additional_query .= " AND (spotter_archive_output.aircraft_manufacturer = '".$aircraft_manufacturer."')";
546
	    }
547
	}
548
	
549
	if ($highlights == "true")
550
	{
551
	    if (!is_string($highlights))
552
	    {
553
		return false;
554
	    } else {
555
		$additional_query .= " AND (spotter_archive_output.highlight <> '')";
556
	    }
557
	}
558
	
559
	if ($airline_icao != "")
560
	{
561
	    $airline_icao = filter_var($airline_icao,FILTER_SANITIZE_STRING);
562
	    if (!is_string($airline_icao))
563
	    {
564
		return false;
565
	    } else {
566
		$additional_query .= " AND (spotter_archive_output.airline_icao = '".$airline_icao."')";
567
	    }
568
	}
569
	
570
	if ($airline_country != "")
571
	{
572
	    $airline_country = filter_var($airline_country,FILTER_SANITIZE_STRING);
573
	    if (!is_string($airline_country))
574
	    {
575
		return false;
576
	    } else {
577
		$additional_query .= " AND (spotter_archive_output.airline_country = '".$airline_country."')";
578
	    }
579
	}
580
	
581
	if ($airline_type != "")
582
	{
583
	    $airline_type = filter_var($airline_type,FILTER_SANITIZE_STRING);
584
	    if (!is_string($airline_type))
585
	    {
586
		return false;
587
	    } else {
588
		if ($airline_type == "passenger")
589
		{
590
		    $additional_query .= " AND (spotter_archive_output.airline_type = 'passenger')";
591
		}
592
		if ($airline_type == "cargo")
593
		{
594
		    $additional_query .= " AND (spotter_archive_output.airline_type = 'cargo')";
595
		}
596
		if ($airline_type == "military")
597
		{
598
		    $additional_query .= " AND (spotter_archive_output.airline_type = 'military')";
599
		}
600
	    }
601
	}
602
	
603
	if ($airport != "")
604
	{
605
	    $airport = filter_var($airport,FILTER_SANITIZE_STRING);
606
	    if (!is_string($airport))
607
	    {
608
		return false;
609
	    } else {
610
		$additional_query .= " AND ((spotter_archive_output.departure_airport_icao = '".$airport."') OR (spotter_archive_output.arrival_airport_icao = '".$airport."'))";
611
	    }
612
	}
613
	
614
	if ($airport_country != "")
615
	{
616
	    $airport_country = filter_var($airport_country,FILTER_SANITIZE_STRING);
617
	    if (!is_string($airport_country))
618
	    {
619
		return false;
620
	    } else {
621
		$additional_query .= " AND ((spotter_archive_output.departure_airport_country = '".$airport_country."') OR (spotter_archive_output.arrival_airport_country = '".$airport_country."'))";
622
	    }
623
	}
624
    
625
	if ($callsign != "")
626
	{
627
	    $callsign = filter_var($callsign,FILTER_SANITIZE_STRING);
628
	    if (!is_string($callsign))
629
	    {
630
		return false;
631
	    } else {
632
		$translate = $Translation->ident2icao($callsign);
633
		if ($translate != $callsign) {
634
			$additional_query .= " AND (spotter_archive_output.ident = :callsign OR spotter_archive_output.ident = :translate)";
635
			$query_values = array_merge($query_values,array(':callsign' => $callsign,':translate' => $translate));
636
		} else {
637
			$additional_query .= " AND (spotter_archive_output.ident = '".$callsign."')";
638
		}
639
	    }
640
	}
641
642
	if ($owner != "")
643
	{
644
	    $owner = filter_var($owner,FILTER_SANITIZE_STRING);
645
	    if (!is_string($owner))
646
	    {
647
		return false;
648
	    } else {
649
		$additional_query .= " AND (spotter_archive_output.owner_name = '".$owner."')";
650
	    }
651
	}
652
653
	if ($pilot_name != "")
654
	{
655
	    $pilot_name = filter_var($pilot_name,FILTER_SANITIZE_STRING);
656
	    if (!is_string($pilot_name))
657
	    {
658
		return false;
659
	    } else {
660
		$additional_query .= " AND (spotter_archive_output.pilot_name = '".$pilot_name."')";
661
	    }
662
	}
663
	
664
	if ($pilot_id != "")
665
	{
666
	    $pilot_id = filter_var($pilot_id,FILTER_SANITIZE_NUMBER_INT);
667
	    if (!is_string($pilot_id))
668
	    {
669
		return false;
670
	    } else {
671
		$additional_query .= " AND (spotter_archive_output.pilot_id = '".$pilot_id."')";
672
	    }
673
	}
674
	
675
	if ($departure_airport_route != "")
676
	{
677
	    $departure_airport_route = filter_var($departure_airport_route,FILTER_SANITIZE_STRING);
678
	    if (!is_string($departure_airport_route))
679
	    {
680
		return false;
681
	    } else {
682
		$additional_query .= " AND (spotter_archive_output.departure_airport_icao = '".$departure_airport_route."')";
683
	    }
684
	}
685
	
686
	if ($arrival_airport_route != "")
687
	{
688
	    $arrival_airport_route = filter_var($arrival_airport_route,FILTER_SANITIZE_STRING);
689
	    if (!is_string($arrival_airport_route))
690
	    {
691
		return false;
692
	    } else {
693
		$additional_query .= " AND (spotter_archive_output.arrival_airport_icao = '".$arrival_airport_route."')";
694
	    }
695
	}
696
	
697
	if ($altitude != "")
698
	{
699
	    $altitude_array = explode(",", $altitude);
700
	    
701
	    $altitude_array[0] = filter_var($altitude_array[0],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION);
702
	    $altitude_array[1] = filter_var($altitude_array[1],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION);
703
	    
704
705
	    if ($altitude_array[1] != "")
706
	    {                
707
		$altitude_array[0] = substr($altitude_array[0], 0, -2);
708
		$altitude_array[1] = substr($altitude_array[1], 0, -2);
709
		$additional_query .= " AND altitude BETWEEN '".$altitude_array[0]."' AND '".$altitude_array[1]."' ";
710
	    } else {
711
		$altitude_array[0] = substr($altitude_array[0], 0, -2);
712
		$additional_query .= " AND altitude <= '".$altitude_array[0]."' ";
713
	    }
714
	}
715
	
716
	if ($date_posted != "")
717
	{
718
	    $date_array = explode(",", $date_posted);
719
	    
720
	    $date_array[0] = filter_var($date_array[0],FILTER_SANITIZE_STRING);
721
	    $date_array[1] = filter_var($date_array[1],FILTER_SANITIZE_STRING);
722
	    
723
	    if ($globalTimezone != '') {
724
		date_default_timezone_set($globalTimezone);
725
		$datetime = new DateTime();
726
		$offset = $datetime->format('P');
727
	    } else $offset = '+00:00';
728
729
730
	    if ($date_array[1] != "")
731
	    {                
732
		$date_array[0] = date("Y-m-d H:i:s", strtotime($date_array[0]));
733
		$date_array[1] = date("Y-m-d H:i:s", strtotime($date_array[1]));
734
		if ($globalDBdriver == 'mysql') {
735
			$additional_query .= " AND TIMESTAMP(CONVERT_TZ(spotter_archive_output.date,'+00:00', '".$offset."')) >= '".$date_array[0]."' AND TIMESTAMP(CONVERT_TZ(spotter_archive_output.date,'+00:00', '".$offset."')) <= '".$date_array[1]."' ";
736
		} else {
737
			$additional_query .= " AND spotter_archive_output.date::timestamp AT TIME ZONE INTERVAL ".$offset." >= CAST('".$date_array[0]."' AS TIMESTAMP) AND spotter_archive_output.date::timestamp AT TIME ZONE INTERVAL ".$offset." <= CAST('".$date_array[1]."' AS TIMESTAMP) ";
738
		}
739
	    } else {
740
		$date_array[0] = date("Y-m-d H:i:s", strtotime($date_array[0]));
741
                if ($globalDBdriver == 'mysql') {
742
			$additional_query .= " AND TIMESTAMP(CONVERT_TZ(spotter_archive_output.date,'+00:00', '".$offset."')) >= '".$date_array[0]."' ";
743
		} else {
744
			$additional_query .= " AND spotter_archive_output.date::timestamp AT TIME ZONE INTERVAL ".$offset." >= CAST('".$date_array[0]."' AS TIMESTAMP) ";
745
		}
746
	    }
747
	}
748
	
749
	if ($limit != "")
750
	{
751
	    $limit_array = explode(",", $limit);
752
	    
753
	    $limit_array[0] = filter_var($limit_array[0],FILTER_SANITIZE_NUMBER_INT);
754
	    $limit_array[1] = filter_var($limit_array[1],FILTER_SANITIZE_NUMBER_INT);
755
	    
756
	    if ($limit_array[0] >= 0 && $limit_array[1] >= 0)
757
	    {
758
		//$limit_query = " LIMIT ".$limit_array[0].",".$limit_array[1];
759
		$limit_query = " LIMIT ".$limit_array[1]." OFFSET ".$limit_array[0];
760
	    }
761
	}
762
	
763
764
	if ($origLat != "" && $origLon != "" && $dist != "") {
765
		$dist = number_format($dist*0.621371,2,'.','');
766
		$query="SELECT spotter_output.*, 3956 * 2 * ASIN(SQRT( POWER(SIN(($origLat - ABS(CAST(spotter_archive.latitude as double precision)))*pi()/180/2),2)+COS( $origLat *pi()/180)*COS(ABS(CAST(spotter_archive.latitude as double precision))*pi()/180)*POWER(SIN(($origLon-CAST(spotter_archive.longitude as double precision))*pi()/180/2),2))) as distance 
767
                          FROM spotter_output_archive, spotter_archive WHERE spotter_output_archive.flightaware_id = spotter_archive.flightaware_id AND spotter_output.ident <> '' ".$additional_query."AND CAST(spotter_archive.longitude as double precision) between ($origLon-$dist/ABS(cos(radians($origLat))*69)) and ($origLon+$dist/ABS(cos(radians($origLat))*69)) and CAST(spotter_archive.latitude as double precision) between ($origLat-($dist/69)) and ($origLat+($dist/69)) 
768
                          AND (3956 * 2 * ASIN(SQRT( POWER(SIN(($origLat - ABS(CAST(spotter_archive.latitude as double precision)))*pi()/180/2),2)+COS( $origLat *pi()/180)*COS(ABS(CAST(spotter_archive.latitude as double precision))*pi()/180)*POWER(SIN(($origLon-CAST(spotter_archive.longitude as double precision))*pi()/180/2),2)))) < $dist ORDER BY distance";
769
	} else {
770
		if ($sort != "")
771
		{
772
			$search_orderby_array = $Spotter->getOrderBy();
773
			$orderby_query = $search_orderby_array[$sort]['sql'];
774
		} else {
775
			$orderby_query = " ORDER BY spotter_archive_output.date DESC";
776
		}
777
	
778
		if ($includegeodata == "true")
779
		{
780
			$additional_query .= " AND (spotter_archive_output.waypoints <> '')";
781
		}
782
783
		$query  = "SELECT spotter_archive_output.* FROM spotter_archive_output 
784
		    WHERE spotter_archive_output.ident <> '' 
785
		    ".$additional_query."
786
		    ".$orderby_query;
787
	}
788
	$spotter_array = $Spotter->getDataFromDB($query, $query_values,$limit_query);
789
790
	return $spotter_array;
791
    }
792
793
    public function deleteSpotterArchiveData()
794
    {
795
		global $globalArchiveKeepMonths, $globalDBdriver;
796
                date_default_timezone_set('UTC');
797
                if ($globalDBdriver == 'mysql') {
798
			$query = 'DELETE FROM spotter_archive_output WHERE spotter_archive_output.date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL '.$globalArchiveKeepMonths.' MONTH)';
799
		} else {
800
			$query = "DELETE FROM spotter_archive_output WHERE spotter_archive_output.date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalArchiveKeepMonths." MONTH'";
801
		}
802
                try {
803
                        $sth = $this->db->prepare($query);
804
                        $sth->execute();
805
                } catch(PDOException $e) {
806
                        return "error";
807
                }
808
	}
809
810
    /**
811
    * Gets all the spotter information based on the callsign
812
    *
813
    * @return Array the spotter information
814
    *
815
    */
816
    public function getSpotterDataByIdent($ident = '', $limit = '', $sort = '')
817
    {
818
	$global_query = "SELECT spotter_archive_output.* FROM spotter_archive_output";
819
	
820
	date_default_timezone_set('UTC');
821
	$Spotter = new Spotter($this->db);
822
	
823
	$query_values = array();
824
	$limit_query = '';
825
	$additional_query = '';
826
	
827
	if ($ident != "")
828
	{
829
	    if (!is_string($ident))
830
	    {
831
		return false;
832
	    } else {
833
		$additional_query = " AND (spotter_archive_output.ident = :ident)";
834
		$query_values = array(':ident' => $ident);
835
	    }
836
	}
837
	
838
	if ($limit != "")
839
	{
840
	    $limit_array = explode(",", $limit);
841
	    
842
	    $limit_array[0] = filter_var($limit_array[0],FILTER_SANITIZE_NUMBER_INT);
843
	    $limit_array[1] = filter_var($limit_array[1],FILTER_SANITIZE_NUMBER_INT);
844
	    
845
	    if ($limit_array[0] >= 0 && $limit_array[1] >= 0)
846
	    {
847
		//$limit_query = " LIMIT ".$limit_array[0].",".$limit_array[1];
848
		$limit_query = " LIMIT ".$limit_array[1]." OFFSET ".$limit_array[0];
849
	    }
850
	}
851
852
	if ($sort != "")
853
	{
854
	    $search_orderby_array = $Spotter->getOrderBy();
855
	    $orderby_query = $search_orderby_array[$sort]['sql'];
856
	} else {
857
	    $orderby_query = " ORDER BY spotter_archive_output.date DESC";
858
	}
859
860
	$query = $global_query." WHERE spotter_archive_output.ident <> '' ".$additional_query." ".$orderby_query;
861
862
	$spotter_array = $Spotter->getDataFromDB($query, $query_values, $limit_query);
863
864
	return $spotter_array;
865
    }
866
867
    /**
868
    * Gets all number of flight over countries
869
    *
870
    * @return Array the airline country list
871
    *
872
    */
873
    public function countAllFlightOverCountries($limit = true,$olderthanmonths = 0,$sincedate = '')
874
    {
875
	global $globalDBdriver;
876
	/*
877
	$query = "SELECT c.name, c.iso3, c.iso2, count(c.name) as nb 
878
		    FROM countries c, spotter_archive s
879
		    WHERE Within(GeomFromText(CONCAT('POINT(',s.longitude,' ',s.latitude,')')), ogc_geom) ";
880
	*/
881
	$query = "SELECT c.name, c.iso3, c.iso2, count(c.name) as nb
882
		    FROM countries c, spotter_archive s
883
		    WHERE c.iso2 = s.over_country ";
884
                if ($olderthanmonths > 0) {
885
            		if ($globalDBdriver == 'mysql') {
886
				$query .= 'AND date < DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$olderthanmonths.' MONTH) ';
887
			} else {
888
				$query .= "AND date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$olderthanmonths." MONTHS'";
889
			}
890
		}
891
                if ($sincedate != '') $query .= "AND date > '".$sincedate."' ";
892
	$query .= "GROUP BY c.name, c.iso3, c.iso2 ORDER BY nb DESC";
893
	if ($limit) $query .= " LIMIT 0,10";
894
      
895
	
896
	$sth = $this->db->prepare($query);
897
	$sth->execute();
898
 
899
	$flight_array = array();
900
	$temp_array = array();
901
        
902
	while($row = $sth->fetch(PDO::FETCH_ASSOC))
903
	{
904
	    $temp_array['flight_count'] = $row['nb'];
905
	    $temp_array['flight_country'] = $row['name'];
906
	    $temp_array['flight_country_iso3'] = $row['iso3'];
907
	    $temp_array['flight_country_iso2'] = $row['iso2'];
908
	    $flight_array[] = $temp_array;
909
	}
910
	return $flight_array;
911
    }
912
913
}
914
?>
1 ignored issue
show
Best Practice introduced by
It is not recommended to use PHP's closing tag ?> in files other than templates.

Using a closing tag in PHP files that only contain PHP code is not recommended as you might accidentally add whitespace after the closing tag which would then be output by PHP. This can cause severe problems, for example headers cannot be sent anymore.

A simple precaution is to leave off the closing tag as it is not required, and it also has no negative effects whatsoever.

Loading history...