This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include
, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | //$global_query = "SELECT spotter_live.* FROM spotter_live"; |
||
3 | |||
4 | class SpotterLive { |
||
5 | public $db; |
||
6 | static $global_query = "SELECT spotter_live.* FROM spotter_live"; |
||
7 | |||
8 | public function __construct($dbc = null) { |
||
9 | $Connection = new Connection($dbc); |
||
10 | $this->db = $Connection->db(); |
||
11 | if ($this->db === null) die('Error: No DB connection. (SpotterLive)'); |
||
12 | } |
||
13 | |||
14 | |||
15 | /** |
||
16 | * Get SQL query part for filter used |
||
17 | * @param array $filter the filter |
||
18 | * @return string the SQL part |
||
19 | */ |
||
20 | public function getFilter($filter = array(),$where = false,$and = false) { |
||
21 | global $globalFilter, $globalStatsFilters, $globalFilterName, $globalDBdriver; |
||
22 | $filters = array(); |
||
23 | if (is_array($globalStatsFilters) && isset($globalStatsFilters[$globalFilterName])) { |
||
24 | if (isset($globalStatsFilters[$globalFilterName][0]['source'])) { |
||
25 | $filters = $globalStatsFilters[$globalFilterName]; |
||
26 | } else { |
||
27 | $filter = array_merge($filter,$globalStatsFilters[$globalFilterName]); |
||
28 | } |
||
29 | } |
||
30 | if (isset($filter[0]['source'])) { |
||
31 | $filters = array_merge($filters,$filter); |
||
32 | } |
||
33 | if (is_array($globalFilter)) $filter = array_merge($filter,$globalFilter); |
||
34 | $filter_query_join = ''; |
||
35 | $filter_query_where = ''; |
||
36 | foreach($filters as $flt) { |
||
37 | if (isset($flt['airlines']) && !empty($flt['airlines'])) { |
||
38 | if ($flt['airlines'][0] != '' && $flt['airlines'][0] != 'all') { |
||
39 | if (isset($flt['source'])) { |
||
40 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.airline_icao IN ('".implode("','",$flt['airlines'])."') AND spotter_output.format_source IN ('".implode("','",$flt['source'])."')) saf ON saf.flightaware_id = spotter_live.flightaware_id"; |
||
41 | } else { |
||
42 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.airline_icao IN ('".implode("','",$flt['airlines'])."')) saf ON saf.flightaware_id = spotter_live.flightaware_id"; |
||
43 | } |
||
44 | } |
||
45 | } |
||
46 | if (isset($flt['pilots_id']) && !empty($flt['pilots_id'])) { |
||
47 | if (isset($flt['source'])) { |
||
48 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.pilot_id IN ('".implode("','",$flt['pilots_id'])."') AND spotter_output.format_source IN ('".implode("','",$flt['source'])."')) spi ON spi.flightaware_id = spotter_live.flightaware_id"; |
||
49 | } else { |
||
50 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.pilot_id IN ('".implode("','",$flt['pilots_id'])."')) spi ON spi.flightaware_id = spotter_live.flightaware_id"; |
||
51 | } |
||
52 | } |
||
53 | if (isset($flt['idents']) && !empty($flt['idents'])) { |
||
54 | if (isset($flt['source'])) { |
||
55 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.ident IN ('".implode("','",$flt['idents'])."') AND spotter_output.format_source IN ('".implode("','",$flt['source'])."')) spid ON spid.flightaware_id = spotter_live.flightaware_id"; |
||
56 | } else { |
||
57 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.ident IN ('".implode("','",$flt['idents'])."')) spid ON spid.flightaware_id = spotter_live.flightaware_id"; |
||
58 | } |
||
59 | } |
||
60 | if (isset($flt['registrations']) && !empty($flt['registrations'])) { |
||
61 | if (isset($flt['source'])) { |
||
62 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.registration IN ('".implode("','",$flt['registrations'])."') AND spotter_output.format_source IN ('".implode("','",$flt['source'])."')) sre ON sre.flightaware_id = spotter_live.flightaware_id"; |
||
63 | } else { |
||
64 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.registration IN ('".implode("','",$flt['registrations'])."')) sre ON sre.flightaware_id = spotter_live.flightaware_id"; |
||
65 | } |
||
66 | } |
||
67 | if ((isset($flt['airlines']) && empty($flt['airlines']) && isset($flt['pilots_id']) && empty($flt['pilots_id']) && isset($flt['idents']) && empty($flt['idents'])) || (!isset($flt['airlines']) && !isset($flt['pilots_id']) && !isset($flt['idents']) && !isset($flt['registrations']))) { |
||
68 | if (isset($flt['source'])) { |
||
69 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.format_source IN ('".implode("','",$flt['source'])."')) ssf ON ssf.flightaware_id = spotter_live.flightaware_id"; |
||
70 | } |
||
71 | } |
||
72 | } |
||
73 | if (isset($filter['airlines']) && !empty($filter['airlines'])) { |
||
74 | if ($filter['airlines'][0] != '' && $filter['airlines'][0] != 'all') { |
||
75 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.airline_icao IN ('".implode("','",$filter['airlines'])."')) sai ON sai.flightaware_id = spotter_live.flightaware_id"; |
||
76 | } |
||
77 | } |
||
78 | if (isset($filter['alliance']) && !empty($filter['alliance'])) { |
||
79 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.airline_icao IN (SELECT icao FROM airlines WHERE alliance = '".$filter['alliance']."')) sal ON sal.flightaware_id = spotter_live.flightaware_id "; |
||
80 | } |
||
81 | if (isset($filter['airlinestype']) && !empty($filter['airlinestype'])) { |
||
82 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.airline_type = '".$filter['airlinestype']."') sa ON sa.flightaware_id = spotter_live.flightaware_id "; |
||
83 | } |
||
84 | if (isset($filter['pilots_id']) && !empty($filter['pilots_id'])) { |
||
85 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output WHERE spotter_output.pilot_id IN ('".implode("','",$filter['pilots_id'])."')) sp ON sp.flightaware_id = spotter_live.flightaware_id"; |
||
86 | } |
||
87 | if (isset($filter['blocked']) && $filter['blocked'] == true) { |
||
88 | $filter_query_join .= " INNER JOIN (SELECT callsign FROM aircraft_block) cblk ON cblk.callsign = spotter_live.ident"; |
||
89 | } |
||
90 | if (isset($filter['source']) && !empty($filter['source'])) { |
||
91 | if (count($filter['source']) == 1) { |
||
92 | $filter_query_where .= " AND format_source = '".$filter['source'][0]."'"; |
||
93 | } else { |
||
94 | $filter_query_where .= " AND format_source IN ('".implode("','",$filter['source'])."')"; |
||
95 | } |
||
96 | } |
||
97 | if (isset($filter['ident']) && !empty($filter['ident'])) { |
||
98 | $filter_query_where .= " AND ident = '".$filter['ident']."'"; |
||
99 | } |
||
100 | if (isset($filter['id']) && !empty($filter['id'])) { |
||
101 | $filter_query_where .= " AND flightaware_id = '".$filter['id']."'"; |
||
102 | } |
||
103 | if ((isset($filter['year']) && $filter['year'] != '') || (isset($filter['month']) && $filter['month'] != '') || (isset($filter['day']) && $filter['day'] != '')) { |
||
104 | $filter_query_date = ''; |
||
105 | |||
106 | if (isset($filter['year']) && $filter['year'] != '') { |
||
107 | if ($globalDBdriver == 'mysql') { |
||
108 | $filter_query_date .= " AND YEAR(spotter_output.date) = '".$filter['year']."'"; |
||
109 | } else { |
||
110 | $filter_query_date .= " AND EXTRACT(YEAR FROM spotter_output.date) = '".$filter['year']."'"; |
||
111 | } |
||
112 | } |
||
113 | if (isset($filter['month']) && $filter['month'] != '') { |
||
114 | if ($globalDBdriver == 'mysql') { |
||
115 | $filter_query_date .= " AND MONTH(spotter_output.date) = '".$filter['month']."'"; |
||
116 | } else { |
||
117 | $filter_query_date .= " AND EXTRACT(MONTH FROM spotter_output.date) = '".$filter['month']."'"; |
||
118 | } |
||
119 | } |
||
120 | if (isset($filter['day']) && $filter['day'] != '') { |
||
121 | if ($globalDBdriver == 'mysql') { |
||
122 | $filter_query_date .= " AND DAY(spotter_output.date) = '".$filter['day']."'"; |
||
123 | } else { |
||
124 | $filter_query_date .= " AND EXTRACT(DAY FROM spotter_output.date) = '".$filter['day']."'"; |
||
125 | } |
||
126 | } |
||
127 | $filter_query_join .= " INNER JOIN (SELECT flightaware_id FROM spotter_output".preg_replace('/^ AND/',' WHERE',$filter_query_date).") sd ON sd.flightaware_id = spotter_live.flightaware_id"; |
||
128 | } |
||
129 | if (isset($filter['source_aprs']) && !empty($filter['source_aprs'])) { |
||
130 | $filter_query_where .= " AND format_source = 'aprs' AND source_name IN ('".implode("','",$filter['source_aprs'])."')"; |
||
131 | } |
||
132 | if ($filter_query_where == '' && $where) $filter_query_where = ' WHERE'; |
||
133 | elseif ($filter_query_where != '' && $and) $filter_query_where .= ' AND'; |
||
134 | if ($filter_query_where != '') { |
||
135 | $filter_query_where = preg_replace('/^ AND/',' WHERE',$filter_query_where); |
||
136 | } |
||
137 | $filter_query = $filter_query_join.$filter_query_where; |
||
138 | return $filter_query; |
||
139 | } |
||
140 | |||
141 | /** |
||
142 | * Gets all the spotter information based on the latest data entry |
||
143 | * |
||
144 | * @param string $limit |
||
145 | * @param string $sort |
||
146 | * @param array $filter |
||
147 | * @return array the spotter information |
||
148 | */ |
||
149 | public function getLiveSpotterData($limit = '', $sort = '', $filter = array()) |
||
150 | { |
||
151 | global $globalDBdriver, $globalLiveInterval; |
||
152 | $Spotter = new Spotter($this->db); |
||
153 | date_default_timezone_set('UTC'); |
||
154 | |||
155 | $filter_query = $this->getFilter($filter); |
||
156 | $limit_query = ''; |
||
157 | if ($limit != '') |
||
158 | { |
||
159 | $limit_array = explode(',', $limit); |
||
160 | $limit_array[0] = filter_var($limit_array[0],FILTER_SANITIZE_NUMBER_INT); |
||
161 | $limit_array[1] = filter_var($limit_array[1],FILTER_SANITIZE_NUMBER_INT); |
||
162 | if ($limit_array[0] >= 0 && $limit_array[1] >= 0) |
||
163 | { |
||
164 | $limit_query = ' LIMIT '.$limit_array[1].' OFFSET '.$limit_array[0]; |
||
165 | } |
||
166 | } |
||
167 | $orderby_query = ''; |
||
168 | if ($sort != '') |
||
169 | { |
||
170 | $search_orderby_array = $this->getOrderBy(); |
||
171 | if (isset($search_orderby_array[$sort]['sql'])) |
||
172 | { |
||
173 | $orderby_query = ' '.$search_orderby_array[$sort]['sql']; |
||
174 | } |
||
175 | } |
||
176 | if ($orderby_query == '') $orderby_query = ' ORDER BY date DESC'; |
||
177 | |||
178 | if (!isset($globalLiveInterval)) $globalLiveInterval = '200'; |
||
179 | if ($globalDBdriver == 'mysql') { |
||
180 | //$query = "SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL 30 SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate"; |
||
181 | $query = 'SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate'.$filter_query.$orderby_query; |
||
182 | } else { |
||
183 | $query = "SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalLiveInterval." SECONDS' <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate".$filter_query.$orderby_query; |
||
184 | } |
||
185 | $spotter_array = $Spotter->getDataFromDB($query.$limit_query,array(),'',true); |
||
186 | |||
187 | return $spotter_array; |
||
188 | } |
||
189 | |||
190 | /** |
||
191 | * Gets Minimal Live Spotter data |
||
192 | * |
||
193 | * @param int $limit |
||
194 | * @param array $filter |
||
195 | * @return array the spotter information |
||
196 | */ |
||
197 | public function getMinLiveSpotterData($limit = 0,$filter = array()) |
||
198 | { |
||
199 | global $globalDBdriver, $globalLiveInterval, $globalArchive, $globalMap2DAircraftsLimit; |
||
200 | date_default_timezone_set('UTC'); |
||
201 | $filter_query = $this->getFilter($filter,true,true); |
||
202 | if (!isset($globalLiveInterval)) $globalLiveInterval = '200'; |
||
203 | if ($globalDBdriver == 'mysql') { |
||
204 | if (isset($globalArchive) && $globalArchive === TRUE) { |
||
205 | // $query = 'SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.real_altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, spotter_live.date, spotter_live.format_source, spotter_live.registration |
||
206 | // FROM spotter_live'.$filter_query.' DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= spotter_live.date AND'." spotter_live.latitude <> 0 AND spotter_live.longitude <> 0 ORDER BY date DESC"; |
||
207 | $query = 'SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.real_altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, spotter_live.date, spotter_live.format_source, spotter_live.registration |
||
208 | FROM spotter_live'.$filter_query.' DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= spotter_live.date AND'." spotter_live.latitude <> 0 AND spotter_live.longitude <> 0"; |
||
209 | } else { |
||
210 | // $query = 'SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.real_altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, spotter_live.date, spotter_live.format_source, spotter_live.registration |
||
211 | // FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate'.$filter_query." spotter_live.latitude <> 0 AND spotter_live.longitude <> 0 ORDER BY date DESC"; |
||
212 | $query = 'SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.real_altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, spotter_live.date, spotter_live.format_source, spotter_live.registration |
||
213 | FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate'.$filter_query." spotter_live.latitude <> 0 AND spotter_live.longitude <> 0"; |
||
214 | } |
||
215 | } else { |
||
216 | if (isset($globalArchive) && $globalArchive === TRUE) { |
||
217 | // $query = "SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.real_altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, spotter_live.date, spotter_live.format_source, spotter_live.registration |
||
218 | // FROM spotter_live".$filter_query." CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalLiveInterval." SECONDS' <= spotter_live.date AND spotter_live.latitude <> '0' AND spotter_live.longitude <> '0' ORDER BY date DESC"; |
||
219 | $query = "SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.real_altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, spotter_live.date, spotter_live.format_source, spotter_live.registration |
||
220 | FROM spotter_live".$filter_query." CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalLiveInterval." SECONDS' <= spotter_live.date AND spotter_live.latitude <> '0' AND spotter_live.longitude <> '0'"; |
||
221 | } else { |
||
222 | // $query = "SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.real_altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, spotter_live.date, spotter_live.format_source, spotter_live.registration |
||
223 | // FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalLiveInterval." SECONDS' <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate".$filter_query." spotter_live.latitude <> '0' AND spotter_live.longitude <> '0' ORDER BY date DESC"; |
||
224 | $query = "SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.real_altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, spotter_live.date, spotter_live.format_source, spotter_live.registration |
||
225 | FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalLiveInterval." SECONDS' <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate".$filter_query." spotter_live.latitude <> '0' AND spotter_live.longitude <> '0'"; |
||
226 | } |
||
227 | } |
||
228 | |||
229 | if ($limit == 0 && isset($globalMap2DAircraftsLimit) && $globalMap2DAircraftsLimit != '') { |
||
230 | $limit = $globalMap2DAircraftsLimit; |
||
231 | } |
||
232 | if ($limit != 0 && filter_var($limit,FILTER_VALIDATE_INT)) { |
||
233 | $query .= ' LIMIT '.$limit; |
||
234 | } |
||
235 | |||
236 | try { |
||
237 | $sth = $this->db->prepare($query); |
||
238 | $sth->execute(); |
||
239 | } catch(PDOException $e) { |
||
240 | echo $e->getMessage(); |
||
241 | die; |
||
242 | } |
||
243 | $spotter_array = $sth->fetchAll(PDO::FETCH_ASSOC); |
||
244 | return $spotter_array; |
||
245 | } |
||
246 | |||
247 | /** |
||
248 | * Gets Minimal Live Spotter data since xx seconds |
||
249 | * |
||
250 | * @param array $coord |
||
251 | * @param array $filter |
||
252 | * @param int $limit |
||
253 | * @param string $id |
||
254 | * @return array the spotter information |
||
255 | */ |
||
256 | public function getMinLastLiveSpotterData($coord = array(),$filter = array(), $limit = 0, $id = '') |
||
257 | { |
||
258 | global $globalDBdriver, $globalLiveInterval, $globalArchive, $globalMap3DAircraftsLimit; |
||
259 | date_default_timezone_set('UTC'); |
||
260 | $usecoord = false; |
||
261 | if (is_array($coord) && !empty($coord)) { |
||
262 | $minlong = filter_var($coord[0],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
263 | $minlat = filter_var($coord[1],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
264 | $maxlong = filter_var($coord[2],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
265 | $maxlat = filter_var($coord[3],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
266 | if ($minlong != '' && $minlat != '' && $maxlong != '' && $maxlat != '') $usecoord = true; |
||
267 | } |
||
268 | $id = filter_var($id,FILTER_SANITIZE_STRING); |
||
269 | $filter_query = $this->getFilter($filter,true,true); |
||
270 | |||
271 | if (!isset($globalLiveInterval) || $globalLiveInterval == '') $globalLiveInterval = '200'; |
||
272 | if (!isset($globalMap3DAircraftsLimit) || $globalMap3DAircraftsLimit == '') $globalMap3DAircraftsLimit = '300'; |
||
273 | if ($limit == 0 || $limit == '') $limit = $globalMap3DAircraftsLimit; |
||
274 | if ($globalDBdriver == 'mysql') { |
||
275 | if (isset($globalArchive) && $globalArchive === TRUE) { |
||
276 | /* |
||
277 | $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, spotter_archive.date, spotter_archive.format_source |
||
278 | FROM spotter_archive INNER JOIN (SELECT flightaware_id FROM spotter_live'.$filter_query.' DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval." SECOND) <= spotter_live.date) l ON l.flightaware_id = spotter_archive.flightaware_id |
||
279 | WHERE spotter_archive.latitude <> '0' AND spotter_archive.longitude <> '0' |
||
280 | ORDER BY spotter_archive.flightaware_id, spotter_archive.date"; |
||
281 | */ |
||
282 | $query = 'SELECT * FROM (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, spotter_archive.date, spotter_archive.format_source, spotter_archive.registration |
||
283 | FROM spotter_archive INNER JOIN (SELECT flightaware_id FROM spotter_live'.$filter_query.' DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval." SECOND) <= spotter_live.date"; |
||
284 | //if ($limit > 0) $query .= " LIMIT ".$limit; |
||
285 | $query .= ") l ON l.flightaware_id = spotter_archive.flightaware_id "; |
||
286 | if ($usecoord) $query .= "AND (spotter_archive.latitude BETWEEN ".$minlat." AND ".$maxlat." AND spotter_archive.longitude BETWEEN ".$minlong." AND ".$maxlong.") "; |
||
0 ignored issues
–
show
The variable
$maxlat does not seem to be defined for all execution paths leading up to this point.
If you define a variable conditionally, it can happen that it is not defined for all execution paths. Let’s take a look at an example: function myFunction($a) {
switch ($a) {
case 'foo':
$x = 1;
break;
case 'bar':
$x = 2;
break;
}
// $x is potentially undefined here.
echo $x;
}
In the above example, the variable $x is defined if you pass “foo” or “bar” as argument for $a. However, since the switch statement has no default case statement, if you pass any other value, the variable $x would be undefined. Available Fixes
![]() The variable
$minlong does not seem to be defined for all execution paths leading up to this point.
If you define a variable conditionally, it can happen that it is not defined for all execution paths. Let’s take a look at an example: function myFunction($a) {
switch ($a) {
case 'foo':
$x = 1;
break;
case 'bar':
$x = 2;
break;
}
// $x is potentially undefined here.
echo $x;
}
In the above example, the variable $x is defined if you pass “foo” or “bar” as argument for $a. However, since the switch statement has no default case statement, if you pass any other value, the variable $x would be undefined. Available Fixes
![]() The variable
$maxlong does not seem to be defined for all execution paths leading up to this point.
If you define a variable conditionally, it can happen that it is not defined for all execution paths. Let’s take a look at an example: function myFunction($a) {
switch ($a) {
case 'foo':
$x = 1;
break;
case 'bar':
$x = 2;
break;
}
// $x is potentially undefined here.
echo $x;
}
In the above example, the variable $x is defined if you pass “foo” or “bar” as argument for $a. However, since the switch statement has no default case statement, if you pass any other value, the variable $x would be undefined. Available Fixes
![]() |
|||
287 | if ($id != '') $query .= "OR spotter_archive.flightaware_id = :id "; |
||
288 | $query .= "UNION |
||
289 | SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, spotter_live.date, spotter_live.format_source, spotter_live.registration |
||
290 | FROM spotter_live".$filter_query.' DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval." SECOND) <= spotter_live.date"; |
||
291 | if ($usecoord) $query .= " AND (spotter_live.latitude BETWEEN ".$minlat." AND ".$maxlat." AND spotter_live.longitude BETWEEN ".$minlong." AND ".$maxlong.")"; |
||
292 | if ($id != '') $query .= " OR spotter_live.flightaware_id = :id"; |
||
293 | //if ($limit > 0) $query .= " LIMIT ".$limit; |
||
294 | $query .= ") AS spotter |
||
295 | WHERE latitude <> '0' AND longitude <> '0' |
||
296 | ORDER BY flightaware_id, date"; |
||
297 | if ($limit > 0) $query .= " LIMIT ".$limit; |
||
298 | } else { |
||
299 | $query = 'SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, spotter_live.date, spotter_live.format_source, spotter_live.registration |
||
300 | FROM spotter_live'.$filter_query.' DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval." SECOND) <= spotter_live.date "; |
||
301 | if ($usecoord) $query .= "AND (spotter_live.latitude BETWEEN ".$minlat." AND ".$maxlat." AND spotter_live.longitude BETWEEN ".$minlong." AND ".$maxlong.") "; |
||
302 | if ($id != '') $query .= "OR spotter_live.flightaware_id = :id "; |
||
303 | $query .= "AND spotter_live.latitude <> '0' AND spotter_live.longitude <> '0' |
||
304 | ORDER BY spotter_live.flightaware_id, spotter_live.date"; |
||
305 | if ($limit > 0) $query .= " LIMIT ".$limit; |
||
306 | } |
||
307 | } else { |
||
308 | if (isset($globalArchive) && $globalArchive === TRUE) { |
||
309 | /* |
||
310 | $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, spotter_archive.date, spotter_archive.format_source |
||
311 | FROM spotter_archive INNER JOIN (SELECT flightaware_id FROM spotter_live".$filter_query." CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalLiveInterval." SECONDS' <= spotter_live.date) l ON l.flightaware_id = spotter_archive.flightaware_id |
||
312 | WHERE spotter_archive.latitude <> '0' AND spotter_archive.longitude <> '0' |
||
313 | ORDER BY spotter_archive.flightaware_id, spotter_archive.date"; |
||
314 | */ |
||
315 | $query = "SELECT * FROM ( |
||
316 | 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, spotter_archive.date, spotter_archive.format_source, spotter_archive.registration |
||
317 | FROM spotter_archive |
||
318 | INNER JOIN ( |
||
319 | SELECT flightaware_id |
||
320 | FROM spotter_live".$filter_query." CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalLiveInterval." SECONDS' <= spotter_live.date"; |
||
321 | //if ($limit > 0) $query .= " ORDER BY spotter_live.date ASC LIMIT ".$limit; |
||
322 | $query .= ") l ON l.flightaware_id = spotter_archive.flightaware_id "; |
||
323 | if ($usecoord) $query .= "AND (spotter_archive.latitude BETWEEN ".$minlat." AND ".$maxlat." AND spotter_archive.longitude BETWEEN ".$minlong." AND ".$maxlong.") "; |
||
324 | if ($id != '') $query .= "OR spotter_archive.flightaware_id = :id "; |
||
325 | $query .= "UNION |
||
326 | SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, spotter_live.date, spotter_live.format_source, spotter_live.registration |
||
327 | FROM spotter_live".$filter_query." CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalLiveInterval." SECONDS' <= spotter_live.date"; |
||
328 | if ($usecoord) $query .= " AND (spotter_live.latitude BETWEEN ".$minlat." AND ".$maxlat." AND spotter_live.longitude BETWEEN ".$minlong." AND ".$maxlong.")"; |
||
329 | if ($id != '') $query .= " OR spotter_live.flightaware_id = :id"; |
||
330 | //if ($limit > 0) $query .= " ORDER BY date ASC LIMIT ".$limit; |
||
331 | $query .= ") AS spotter WHERE latitude <> '0' AND longitude <> '0' "; |
||
332 | $query .= "ORDER BY flightaware_id, date"; |
||
333 | if ($limit > 0) $query .= " LIMIT ".$limit; |
||
334 | } else { |
||
335 | $query = "SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, spotter_live.date, spotter_live.format_source, spotter_live.registration |
||
336 | FROM spotter_live".$filter_query." CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalLiveInterval." SECONDS' <= spotter_live.date "; |
||
337 | if ($usecoord) $query .= "AND (spotter_live.latitude BETWEEN ".$minlat." AND ".$maxlat." AND spotter_live.longitude BETWEEN ".$minlong." AND ".$maxlong.") "; |
||
338 | if ($id != '') $query .= "OR spotter_live.flightaware_id = :id "; |
||
339 | $query .= "AND spotter_live.latitude <> '0' AND spotter_live.longitude <> '0' |
||
340 | ORDER BY spotter_live.flightaware_id, spotter_live.date"; |
||
341 | if ($limit > 0) $query .= " LIMIT ".$limit; |
||
342 | } |
||
343 | } |
||
344 | $query_values = array(); |
||
345 | if ($id != '') $query_values = array(':id' => $id); |
||
346 | try { |
||
347 | $sth = $this->db->prepare($query); |
||
348 | $sth->execute($query_values); |
||
349 | } catch(PDOException $e) { |
||
350 | echo $e->getMessage(); |
||
351 | die; |
||
352 | } |
||
353 | $spotter_array = $sth->fetchAll(PDO::FETCH_ASSOC); |
||
354 | return $spotter_array; |
||
355 | } |
||
356 | |||
357 | /** |
||
358 | * Gets Minimal Live Spotter data since xx seconds |
||
359 | * |
||
360 | * @param string $id |
||
361 | * @param array $filter |
||
362 | * @param int $limit |
||
363 | * @return array the spotter information |
||
364 | */ |
||
365 | public function getMinLastLiveSpotterDataByID($id = '',$filter = array(), $limit = 0) |
||
366 | { |
||
367 | global $globalDBdriver, $globalLiveInterval, $globalArchive, $globalMap3DAircraftsLimit; |
||
368 | date_default_timezone_set('UTC'); |
||
369 | $id = filter_var($id,FILTER_SANITIZE_STRING); |
||
370 | $filter_query = $this->getFilter($filter,true,true); |
||
371 | |||
372 | if (!isset($globalLiveInterval) || $globalLiveInterval == '') $globalLiveInterval = '200'; |
||
373 | if (!isset($globalMap3DAircraftsLimit) || $globalMap3DAircraftsLimit == '') $globalMap3DAircraftsLimit = '300'; |
||
374 | if ($limit == 0 || $limit == '') $limit = $globalMap3DAircraftsLimit; |
||
375 | if ($globalDBdriver == 'mysql') { |
||
376 | if (isset($globalArchive) && $globalArchive === TRUE) { |
||
377 | $query = 'SELECT * FROM (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, spotter_archive.date, spotter_archive.format_source, spotter_archive.registration |
||
378 | FROM spotter_archive INNER JOIN (SELECT flightaware_id FROM spotter_live'.$filter_query.' spotter_live.flightaware_id = :id) l ON l.flightaware_id = spotter_archive.flightaware_id '; |
||
379 | $query .= "UNION |
||
380 | SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, spotter_live.date, spotter_live.format_source, spotter_live.registration |
||
381 | FROM spotter_live".$filter_query.' spotter_live.flightaware_id = :id'; |
||
382 | $query .= ") AS spotter |
||
383 | WHERE latitude <> '0' AND longitude <> '0' |
||
384 | ORDER BY flightaware_id, date"; |
||
385 | if ($limit > 0) $query .= " LIMIT ".$limit; |
||
386 | } else { |
||
387 | $query = 'SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, spotter_live.date, spotter_live.format_source, spotter_live.registration |
||
388 | FROM spotter_live'.$filter_query.' spotter_live.flightaware_id = :id '; |
||
389 | $query .= "AND spotter_live.latitude <> '0' AND spotter_live.longitude <> '0' |
||
390 | ORDER BY spotter_live.flightaware_id, spotter_live.date"; |
||
391 | if ($limit > 0) $query .= " LIMIT ".$limit; |
||
392 | } |
||
393 | } else { |
||
394 | if (isset($globalArchive) && $globalArchive === TRUE) { |
||
395 | $query = "SELECT * FROM ( |
||
396 | 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, spotter_archive.date, spotter_archive.format_source, spotter_archive.registration |
||
397 | FROM spotter_archive |
||
398 | INNER JOIN ( |
||
399 | SELECT flightaware_id |
||
400 | FROM spotter_live".$filter_query." spotter_live.flightaware_id = :id"; |
||
401 | $query.= ") l ON l.flightaware_id = spotter_archive.flightaware_id "; |
||
402 | $query .= "UNION |
||
403 | SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, spotter_live.date, spotter_live.format_source, spotter_live.registration |
||
404 | FROM spotter_live".$filter_query." spotter_live.flightaware_id = :id"; |
||
405 | $query .= ") AS spotter WHERE latitude <> '0' AND longitude <> '0' "; |
||
406 | $query .= "ORDER BY flightaware_id, date"; |
||
407 | if ($limit > 0) $query .= " LIMIT ".$limit; |
||
408 | } else { |
||
409 | $query = "SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, spotter_live.date, spotter_live.format_source, spotter_live.registration |
||
410 | FROM spotter_live".$filter_query." spotter_live.flightaware_id = :id "; |
||
411 | $query .= "AND spotter_live.latitude <> '0' AND spotter_live.longitude <> '0' |
||
412 | ORDER BY spotter_live.flightaware_id, spotter_live.date"; |
||
413 | if ($limit > 0) $query .= " LIMIT ".$limit; |
||
414 | } |
||
415 | } |
||
416 | $query_values = array(':id' => $id); |
||
417 | try { |
||
418 | $sth = $this->db->prepare($query); |
||
419 | $sth->execute($query_values); |
||
420 | } catch(PDOException $e) { |
||
421 | echo $e->getMessage(); |
||
422 | die; |
||
423 | } |
||
424 | $spotter_array = $sth->fetchAll(PDO::FETCH_ASSOC); |
||
425 | return $spotter_array; |
||
426 | } |
||
427 | |||
428 | /** |
||
429 | * Gets number of latest data entry |
||
430 | * |
||
431 | * @param array $filter |
||
432 | * @return String number of entry |
||
433 | */ |
||
434 | public function getLiveSpotterCount($filter = array()) |
||
435 | { |
||
436 | global $globalDBdriver, $globalLiveInterval; |
||
437 | $filter_query = $this->getFilter($filter,true,true); |
||
438 | |||
439 | if (!isset($globalLiveInterval)) $globalLiveInterval = '200'; |
||
440 | if ($globalDBdriver == 'mysql') { |
||
441 | //$query = 'SELECT COUNT(*) as nb FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate'.$filter_query; |
||
442 | $query = 'SELECT COUNT(DISTINCT spotter_live.flightaware_id) as nb FROM spotter_live'.$filter_query.' DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= date'; |
||
443 | } else { |
||
444 | //$query = "SELECT COUNT(*) as nb FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE NOW() AT TIME ZONE 'UTC' - '".$globalLiveInterval." SECONDS'->INTERVAL <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate".$filter_query; |
||
445 | $query = "SELECT COUNT(DISTINCT spotter_live.flightaware_id) as nb FROM spotter_live".$filter_query." CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalLiveInterval." SECONDS' <= date"; |
||
446 | } |
||
447 | try { |
||
448 | $sth = $this->db->prepare($query); |
||
449 | $sth->execute(); |
||
450 | } catch(PDOException $e) { |
||
451 | echo $e->getMessage(); |
||
452 | die; |
||
453 | } |
||
454 | $result = $sth->fetch(PDO::FETCH_ASSOC); |
||
455 | $sth->closeCursor(); |
||
456 | return $result['nb']; |
||
457 | } |
||
458 | |||
459 | /** |
||
460 | * Gets all the spotter information based on the latest data entry and coord |
||
461 | * |
||
462 | * @param $coord |
||
463 | * @param array $filter |
||
464 | * @return array the spotter information |
||
465 | */ |
||
466 | public function getLiveSpotterDatabyCoord($coord, $filter = array()) |
||
467 | { |
||
468 | global $globalDBdriver, $globalLiveInterval,$globalMap2DAircraftsLimit; |
||
469 | $Spotter = new Spotter($this->db); |
||
470 | if (!isset($globalLiveInterval)) $globalLiveInterval = '200'; |
||
471 | $filter_query = $this->getFilter($filter); |
||
472 | |||
473 | if (is_array($coord)) { |
||
474 | $minlong = filter_var($coord[0],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
475 | $minlat = filter_var($coord[1],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
476 | $maxlong = filter_var($coord[2],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
477 | $maxlat = filter_var($coord[3],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
478 | } else return array(); |
||
479 | if ($globalDBdriver == 'mysql') { |
||
480 | $query = 'SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate AND spotter_live.latitude BETWEEN '.$minlat.' AND '.$maxlat.' AND spotter_live.longitude BETWEEN '.$minlong.' AND '.$maxlong.' GROUP BY spotter_live.flightaware_id'.$filter_query; |
||
481 | } else { |
||
482 | $query = "SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE NOW() at time zone 'UTC' - INTERVAL '".$globalLiveInterval." SECONDS' <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate AND spotter_live.latitude BETWEEN ".$minlat." AND ".$maxlat." AND spotter_live.longitude BETWEEN ".$minlong." AND ".$maxlong." GROUP BY spotter_live.flightaware_id".$filter_query; |
||
483 | } |
||
484 | if (isset($globalMap2DAircraftsLimit) && $globalMap2DAircraftsLimit != '') { |
||
485 | $query .= ' LIMIT '.$globalMap2DAircraftsLimit; |
||
486 | } |
||
487 | |||
488 | $spotter_array = $Spotter->getDataFromDB($query); |
||
489 | return $spotter_array; |
||
490 | } |
||
491 | |||
492 | /** |
||
493 | * Gets all the spotter information based on the latest data entry and coord |
||
494 | * |
||
495 | * @param $coord |
||
496 | * @param int $limit |
||
497 | * @param array $filter |
||
498 | * @return array the spotter information |
||
499 | */ |
||
500 | public function getMinLiveSpotterDatabyCoord($coord,$limit = 0, $filter = array()) |
||
501 | { |
||
502 | global $globalDBdriver, $globalLiveInterval, $globalArchive,$globalMap2DAircraftsLimit; |
||
503 | if (!isset($globalLiveInterval)) $globalLiveInterval = '200'; |
||
504 | $filter_query = $this->getFilter($filter,true,true); |
||
505 | |||
506 | if (is_array($coord)) { |
||
507 | $minlong = filter_var($coord[0],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
508 | $minlat = filter_var($coord[1],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
509 | $maxlong = filter_var($coord[2],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
510 | $maxlat = filter_var($coord[3],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
511 | } else return array(); |
||
512 | if ($globalDBdriver == 'mysql') { |
||
513 | if (isset($globalArchive) && $globalArchive === TRUE) { |
||
514 | $query = 'SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.real_altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, spotter_live.date, spotter_live.format_source, spotter_live.registration |
||
515 | FROM spotter_live |
||
516 | '.$filter_query.' DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= spotter_live.date |
||
517 | AND spotter_live.latitude BETWEEN '.$minlat.' AND '.$maxlat.' AND spotter_live.longitude BETWEEN '.$minlong.' AND '.$maxlong.' |
||
518 | AND spotter_live.latitude <> 0 AND spotter_live.longitude <> 0 ORDER BY date DESC'; |
||
519 | } else { |
||
520 | $query = 'SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.real_altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, spotter_live.date, spotter_live.format_source, spotter_live.registration |
||
521 | FROM spotter_live |
||
522 | INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate |
||
523 | FROM spotter_live l |
||
524 | WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= l.date |
||
525 | AND l.latitude BETWEEN '.$minlat.' AND '.$maxlat.' AND l.longitude BETWEEN '.$minlong.' AND '.$maxlong.' |
||
526 | GROUP BY l.flightaware_id |
||
527 | ) s on spotter_live.flightaware_id = s.flightaware_id |
||
528 | AND spotter_live.date = s.maxdate'.$filter_query.' spotter_live.latitude <> 0 AND spotter_live.longitude <> 0 ORDER BY date DESC'; |
||
529 | } |
||
530 | } else { |
||
531 | if (isset($globalArchive) && $globalArchive === TRUE) { |
||
532 | /* |
||
533 | $query = "SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.real_altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, spotter_live.date, spotter_live.format_source, spotter_live.registration |
||
534 | FROM spotter_live |
||
535 | ".$filter_query." CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalLiveInterval." SECONDS' <= spotter_live.date |
||
536 | AND spotter_live.latitude BETWEEN ".$minlat." AND ".$maxlat." |
||
537 | AND spotter_live.longitude BETWEEN ".$minlong." AND ".$maxlong." |
||
538 | AND spotter_live.latitude <> '0' AND spotter_live.longitude <> '0' ORDER BY date DESC"; |
||
539 | */ |
||
540 | $query = "SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.real_altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, spotter_live.date, spotter_live.format_source, spotter_live.registration |
||
541 | FROM spotter_live |
||
542 | ".$filter_query." CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalLiveInterval." SECONDS' <= spotter_live.date |
||
543 | AND spotter_live.latitude BETWEEN ".$minlat." AND ".$maxlat." |
||
544 | AND spotter_live.longitude BETWEEN ".$minlong." AND ".$maxlong." |
||
545 | AND spotter_live.latitude <> '0' AND spotter_live.longitude <> '0'"; |
||
546 | } else { |
||
547 | /* |
||
548 | $query = "SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.real_altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, spotter_live.date, spotter_live.format_source, spotter_live.registration |
||
549 | FROM spotter_live |
||
550 | INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate |
||
551 | FROM spotter_live l |
||
552 | WHERE CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalLiveInterval." SECONDS' <= l.date |
||
553 | AND l.latitude BETWEEN ".$minlat." AND ".$maxlat." |
||
554 | AND l.longitude BETWEEN ".$minlong." AND ".$maxlong." |
||
555 | GROUP BY l.flightaware_id |
||
556 | ) s on spotter_live.flightaware_id = s.flightaware_id |
||
557 | AND spotter_live.date = s.maxdate".$filter_query." spotter_live.latitude <> '0' AND spotter_live.longitude <> '0' ORDER BY date DESC"; |
||
558 | */ |
||
559 | $query = "SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.real_altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, spotter_live.date, spotter_live.format_source, spotter_live.registration |
||
560 | FROM spotter_live |
||
561 | INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate |
||
562 | FROM spotter_live l |
||
563 | WHERE CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalLiveInterval." SECONDS' <= l.date |
||
564 | AND l.latitude BETWEEN ".$minlat." AND ".$maxlat." |
||
565 | AND l.longitude BETWEEN ".$minlong." AND ".$maxlong." |
||
566 | GROUP BY l.flightaware_id |
||
567 | ) s on spotter_live.flightaware_id = s.flightaware_id |
||
568 | AND spotter_live.date = s.maxdate".$filter_query." spotter_live.latitude <> '0' AND spotter_live.longitude <> '0'"; |
||
569 | } |
||
570 | } |
||
571 | if ($limit == 0 && isset($globalMap2DAircraftsLimit) && $globalMap2DAircraftsLimit != '') { |
||
572 | $limit = $globalMap2DAircraftsLimit; |
||
573 | } |
||
574 | if ($limit != 0 && filter_var($limit,FILTER_VALIDATE_INT)) { |
||
575 | $query .= ' LIMIT '.$limit; |
||
576 | } |
||
577 | try { |
||
578 | $sth = $this->db->prepare($query); |
||
579 | $sth->execute(); |
||
580 | } catch(PDOException $e) { |
||
581 | echo $e->getMessage(); |
||
582 | die; |
||
583 | } |
||
584 | $spotter_array = $sth->fetchAll(PDO::FETCH_ASSOC); |
||
585 | return $spotter_array; |
||
586 | } |
||
587 | |||
588 | /** |
||
589 | * Gets all the spotter information based on a user's latitude and longitude |
||
590 | * |
||
591 | * @param $lat |
||
592 | * @param $lng |
||
593 | * @param $radius |
||
594 | * @param $interval |
||
595 | * @return array the spotter information |
||
596 | */ |
||
597 | public function getLatestSpotterForLayar($lat, $lng, $radius, $interval) |
||
598 | { |
||
599 | $Spotter = new Spotter($this->db); |
||
600 | date_default_timezone_set('UTC'); |
||
601 | if ($lat != '') { |
||
602 | if (!is_numeric($lat)) { |
||
603 | return array(); |
||
604 | } |
||
605 | } |
||
606 | if ($lng != '') |
||
607 | { |
||
608 | if (!is_numeric($lng)) |
||
609 | { |
||
610 | return array(); |
||
611 | } |
||
612 | } |
||
613 | if ($radius != '') |
||
614 | { |
||
615 | if (!is_numeric($radius)) |
||
616 | { |
||
617 | return array(); |
||
618 | } |
||
619 | } |
||
620 | $additional_query = ''; |
||
621 | if ($interval != '') |
||
622 | { |
||
623 | if (!is_string($interval)) |
||
624 | { |
||
625 | return array(); |
||
626 | } else { |
||
627 | if ($interval == '1m') |
||
628 | { |
||
629 | $additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 MINUTE) <= spotter_live.date '; |
||
630 | } else if ($interval == '15m'){ |
||
631 | $additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 15 MINUTE) <= spotter_live.date '; |
||
632 | } |
||
633 | } |
||
634 | } else { |
||
635 | $additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 MINUTE) <= spotter_live.date '; |
||
636 | } |
||
637 | $query = "SELECT spotter_live.*, ( 6371 * acos( cos( radians(:lat) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(:lng) ) + sin( radians(:lat) ) * sin( radians( latitude ) ) ) ) AS distance FROM spotter_live |
||
638 | WHERE spotter_live.latitude <> '' |
||
639 | AND spotter_live.longitude <> '' |
||
640 | ".$additional_query." |
||
641 | HAVING distance < :radius |
||
642 | ORDER BY distance"; |
||
643 | |||
644 | $spotter_array = $Spotter->getDataFromDB($query, array(':lat' => $lat, ':lng' => $lng,':radius' => $radius)); |
||
645 | return $spotter_array; |
||
646 | } |
||
647 | |||
648 | |||
649 | /** |
||
650 | * Gets all the spotter information based on a particular callsign |
||
651 | * |
||
652 | * @param $ident |
||
653 | * @return array the spotter information |
||
654 | */ |
||
655 | public function getLastLiveSpotterDataByIdent($ident) |
||
656 | { |
||
657 | $Spotter = new Spotter($this->db); |
||
658 | date_default_timezone_set('UTC'); |
||
659 | |||
660 | $ident = filter_var($ident, FILTER_SANITIZE_STRING); |
||
661 | $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 GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate ORDER BY spotter_live.date DESC'; |
||
662 | |||
663 | $spotter_array = $Spotter->getDataFromDB($query,array(':ident' => $ident),'',true); |
||
664 | |||
665 | return $spotter_array; |
||
666 | } |
||
667 | |||
668 | /** |
||
669 | * Gets all the spotter information based on a particular callsign |
||
670 | * |
||
671 | * @param $ident |
||
672 | * @param $date |
||
673 | * @return array the spotter information |
||
674 | */ |
||
675 | public function getDateLiveSpotterDataByIdent($ident,$date) |
||
676 | { |
||
677 | $Spotter = new Spotter($this->db); |
||
678 | date_default_timezone_set('UTC'); |
||
679 | |||
680 | $ident = filter_var($ident, FILTER_SANITIZE_STRING); |
||
681 | $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.date <= :date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate ORDER BY spotter_live.date DESC'; |
||
682 | |||
683 | $date = date('c',$date); |
||
684 | $spotter_array = $Spotter->getDataFromDB($query,array(':ident' => $ident,':date' => $date)); |
||
685 | |||
686 | return $spotter_array; |
||
687 | } |
||
688 | |||
689 | /** |
||
690 | * Gets last spotter information based on a particular callsign |
||
691 | * |
||
692 | * @param $id |
||
693 | * @return array the spotter information |
||
694 | */ |
||
695 | public function getLastLiveSpotterDataById($id) |
||
696 | { |
||
697 | $Spotter = new Spotter($this->db); |
||
698 | date_default_timezone_set('UTC'); |
||
699 | $id = filter_var($id, FILTER_SANITIZE_STRING); |
||
700 | $query = 'SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE l.flightaware_id = :id GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate ORDER BY spotter_live.date DESC'; |
||
701 | $spotter_array = $Spotter->getDataFromDB($query,array(':id' => $id),'',true); |
||
702 | return $spotter_array; |
||
703 | } |
||
704 | |||
705 | /** |
||
706 | * Gets last spotter information based on a particular callsign |
||
707 | * |
||
708 | * @param $id |
||
709 | * @param $date |
||
710 | * @return array the spotter information |
||
711 | */ |
||
712 | public function getDateLiveSpotterDataById($id,$date) |
||
713 | { |
||
714 | $Spotter = new Spotter($this->db); |
||
715 | date_default_timezone_set('UTC'); |
||
716 | |||
717 | $id = filter_var($id, FILTER_SANITIZE_STRING); |
||
718 | $query = 'SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE l.flightaware_id = :id AND l.date <= :date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate ORDER BY spotter_live.date DESC'; |
||
719 | $date = date('c',$date); |
||
720 | $spotter_array = $Spotter->getDataFromDB($query,array(':id' => $id,':date' => $date),'',true); |
||
721 | return $spotter_array; |
||
722 | } |
||
723 | |||
724 | /** |
||
725 | * Gets altitude information based on a particular callsign |
||
726 | * |
||
727 | * @param $ident |
||
728 | * @return array the spotter information |
||
729 | */ |
||
730 | public function getAltitudeLiveSpotterDataByIdent($ident) |
||
731 | { |
||
732 | |||
733 | date_default_timezone_set('UTC'); |
||
734 | |||
735 | $ident = filter_var($ident, FILTER_SANITIZE_STRING); |
||
736 | $query = 'SELECT spotter_live.altitude, spotter_live.date FROM spotter_live WHERE spotter_live.ident = :ident'; |
||
737 | |||
738 | try { |
||
739 | |||
740 | $sth = $this->db->prepare($query); |
||
741 | $sth->execute(array(':ident' => $ident)); |
||
742 | } catch(PDOException $e) { |
||
743 | echo $e->getMessage(); |
||
744 | die; |
||
745 | } |
||
746 | $spotter_array = $sth->fetchAll(PDO::FETCH_ASSOC); |
||
747 | |||
748 | return $spotter_array; |
||
749 | } |
||
750 | |||
751 | /** |
||
752 | * Gets all the spotter information based on a particular id |
||
753 | * |
||
754 | * @param $id |
||
755 | * @param bool $liveinterval |
||
756 | * @return array the spotter information |
||
757 | */ |
||
758 | public function getAllLiveSpotterDataById($id,$liveinterval = false) |
||
759 | { |
||
760 | global $globalDBdriver, $globalLiveInterval; |
||
761 | date_default_timezone_set('UTC'); |
||
762 | $id = filter_var($id, FILTER_SANITIZE_STRING); |
||
763 | //$query = self::$global_query.' WHERE spotter_live.flightaware_id = :id ORDER BY date'; |
||
764 | if ($globalDBdriver == 'mysql') { |
||
765 | $query = 'SELECT spotter_live.* FROM spotter_live WHERE spotter_live.flightaware_id = :id'; |
||
766 | if ($liveinterval) $query .= ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= date'; |
||
767 | $query .= ' ORDER BY date'; |
||
768 | } else { |
||
769 | $query = 'SELECT spotter_live.* FROM spotter_live WHERE spotter_live.flightaware_id = :id'; |
||
770 | if ($liveinterval) $query .= " AND CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalLiveInterval." SECONDS' <= date"; |
||
771 | $query .= ' ORDER BY date'; |
||
772 | } |
||
773 | |||
774 | try { |
||
775 | $sth = $this->db->prepare($query); |
||
776 | $sth->execute(array(':id' => $id)); |
||
777 | } catch(PDOException $e) { |
||
778 | echo $e->getMessage(); |
||
779 | die; |
||
780 | } |
||
781 | $spotter_array = $sth->fetchAll(PDO::FETCH_ASSOC); |
||
782 | return $spotter_array; |
||
783 | } |
||
784 | |||
785 | /** |
||
786 | * Gets all the spotter information based on a particular ident |
||
787 | * |
||
788 | * @param $ident |
||
789 | * @return array the spotter information |
||
790 | */ |
||
791 | public function getAllLiveSpotterDataByIdent($ident) |
||
792 | { |
||
793 | date_default_timezone_set('UTC'); |
||
794 | $ident = filter_var($ident, FILTER_SANITIZE_STRING); |
||
795 | $query = self::$global_query.' WHERE spotter_live.ident = :ident'; |
||
796 | try { |
||
797 | |||
798 | $sth = $this->db->prepare($query); |
||
799 | $sth->execute(array(':ident' => $ident)); |
||
800 | } catch(PDOException $e) { |
||
801 | echo $e->getMessage(); |
||
802 | die; |
||
803 | } |
||
804 | $spotter_array = $sth->fetchAll(PDO::FETCH_ASSOC); |
||
805 | return $spotter_array; |
||
806 | } |
||
807 | |||
808 | |||
809 | /** |
||
810 | * Deletes all info in the table |
||
811 | * |
||
812 | * @return String success or false |
||
813 | * |
||
814 | */ |
||
815 | public function deleteLiveSpotterData() |
||
816 | { |
||
817 | global $globalDBdriver; |
||
818 | if ($globalDBdriver == 'mysql') { |
||
819 | //$query = "DELETE FROM spotter_live WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL 30 MINUTE) >= spotter_live.date"; |
||
820 | $query = 'DELETE FROM spotter_live WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL 9 HOUR) >= spotter_live.date'; |
||
821 | //$query = "DELETE FROM spotter_live WHERE spotter_live.id IN (SELECT spotter_live.id FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 HOUR) >= spotter_live.date)"; |
||
822 | } else { |
||
823 | $query = "DELETE FROM spotter_live WHERE NOW() AT TIME ZONE 'UTC' - INTERVAL '9 HOURS' >= spotter_live.date"; |
||
824 | } |
||
825 | |||
826 | try { |
||
827 | |||
828 | $sth = $this->db->prepare($query); |
||
829 | $sth->execute(); |
||
830 | } catch(PDOException $e) { |
||
831 | return "error"; |
||
832 | } |
||
833 | |||
834 | return "success"; |
||
835 | } |
||
836 | |||
837 | /** |
||
838 | * Deletes all info in the table for aircraft not seen since 2 HOUR |
||
839 | * |
||
840 | * @return String success or false |
||
841 | * |
||
842 | */ |
||
843 | public function deleteLiveSpotterDataNotUpdated() |
||
844 | { |
||
845 | global $globalDBdriver, $globalDebug; |
||
846 | if ($globalDBdriver == 'mysql') { |
||
847 | //$query = 'SELECT flightaware_id FROM spotter_live WHERE DATE_SUB(UTC_TIMESTAMP(), INTERVAL 1 HOUR) >= spotter_live.date AND spotter_live.flightaware_id NOT IN (SELECT flightaware_id FROM spotter_live WHERE DATE_SUB(UTC_TIMESTAMP(), INTERVAL 1 HOUR) < spotter_live.date) LIMIT 800 OFFSET 0'; |
||
848 | $query = "SELECT spotter_live.flightaware_id FROM spotter_live INNER JOIN (SELECT flightaware_id,MAX(date) as max_date FROM spotter_live GROUP BY flightaware_id) s ON s.flightaware_id = spotter_live.flightaware_id AND DATE_SUB(UTC_TIMESTAMP(), INTERVAL 2 HOUR) >= s.max_date LIMIT 2000 OFFSET 0"; |
||
849 | try { |
||
850 | |||
851 | $sth = $this->db->prepare($query); |
||
852 | $sth->execute(); |
||
853 | } catch(PDOException $e) { |
||
854 | return "error"; |
||
855 | } |
||
856 | $query_delete = 'DELETE FROM spotter_live WHERE flightaware_id IN ('; |
||
857 | $i = 0; |
||
858 | $j =0; |
||
859 | $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
||
860 | foreach($all as $row) |
||
861 | { |
||
862 | $i++; |
||
863 | $j++; |
||
864 | if ($j == 30) { |
||
865 | if ($globalDebug) echo "."; |
||
866 | try { |
||
867 | |||
868 | $sth = $this->db->prepare(substr($query_delete,0,-1).")"); |
||
869 | $sth->execute(); |
||
870 | } catch(PDOException $e) { |
||
871 | return "error"; |
||
872 | } |
||
873 | $query_delete = 'DELETE FROM spotter_live WHERE flightaware_id IN ('; |
||
874 | $j = 0; |
||
875 | } |
||
876 | $query_delete .= "'".$row['flightaware_id']."',"; |
||
877 | } |
||
878 | if ($i > 0) { |
||
879 | try { |
||
880 | |||
881 | $sth = $this->db->prepare(substr($query_delete,0,-1).")"); |
||
882 | $sth->execute(); |
||
883 | } catch(PDOException $e) { |
||
884 | return "error"; |
||
885 | } |
||
886 | } |
||
887 | return "success"; |
||
888 | } elseif ($globalDBdriver == 'pgsql') { |
||
889 | //$query = "SELECT flightaware_id FROM spotter_live WHERE NOW() AT TIME ZONE 'UTC' - INTERVAL '9 HOURS' >= spotter_live.date AND spotter_live.flightaware_id NOT IN (SELECT flightaware_id FROM spotter_live WHERE NOW() AT TIME ZONE 'UTC' - INTERVAL '9 HOURS' < spotter_live.date) LIMIT 800 OFFSET 0"; |
||
890 | //$query = "SELECT spotter_live.flightaware_id FROM spotter_live INNER JOIN (SELECT flightaware_id,MAX(date) as max_date FROM spotter_live GROUP BY flightaware_id) s ON s.flightaware_id = spotter_live.flightaware_id AND NOW() AT TIME ZONE 'UTC' - INTERVAL '2 HOURS' >= s.max_date LIMIT 800 OFFSET 0"; |
||
891 | $query = "DELETE FROM spotter_live WHERE flightaware_id IN (SELECT spotter_live.flightaware_id FROM spotter_live INNER JOIN (SELECT flightaware_id,MAX(date) as max_date FROM spotter_live GROUP BY flightaware_id) s ON s.flightaware_id = spotter_live.flightaware_id AND NOW() AT TIME ZONE 'UTC' - INTERVAL '2 HOURS' >= s.max_date LIMIT 2000 OFFSET 0)"; |
||
892 | try { |
||
893 | |||
894 | $sth = $this->db->prepare($query); |
||
895 | $sth->execute(); |
||
896 | } catch(PDOException $e) { |
||
897 | return "error"; |
||
898 | } |
||
899 | /* $query_delete = "DELETE FROM spotter_live WHERE flightaware_id IN ("; |
||
900 | $i = 0; |
||
901 | $j =0; |
||
902 | $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
||
903 | foreach($all as $row) |
||
904 | { |
||
905 | $i++; |
||
906 | $j++; |
||
907 | if ($j == 100) { |
||
908 | if ($globalDebug) echo "."; |
||
909 | try { |
||
910 | |||
911 | $sth = $this->db->query(substr($query_delete,0,-1).")"); |
||
912 | //$sth->execute(); |
||
913 | } catch(PDOException $e) { |
||
914 | return "error"; |
||
915 | } |
||
916 | $query_delete = "DELETE FROM spotter_live WHERE flightaware_id IN ("; |
||
917 | $j = 0; |
||
918 | } |
||
919 | $query_delete .= "'".$row['flightaware_id']."',"; |
||
920 | } |
||
921 | if ($i > 0) { |
||
922 | try { |
||
923 | |||
924 | $sth = $this->db->query(substr($query_delete,0,-1).")"); |
||
925 | //$sth->execute(); |
||
926 | } catch(PDOException $e) { |
||
927 | return "error"; |
||
928 | } |
||
929 | } |
||
930 | */ |
||
931 | return "success"; |
||
932 | } |
||
933 | } |
||
934 | |||
935 | /** |
||
936 | * Deletes all info in the table for an ident |
||
937 | * |
||
938 | * @param $ident |
||
939 | * @return String success or false |
||
940 | */ |
||
941 | public function deleteLiveSpotterDataByIdent($ident) |
||
942 | { |
||
943 | $ident = filter_var($ident, FILTER_SANITIZE_STRING); |
||
944 | $query = 'DELETE FROM spotter_live WHERE ident = :ident'; |
||
945 | |||
946 | try { |
||
947 | |||
948 | $sth = $this->db->prepare($query); |
||
949 | $sth->execute(array(':ident' => $ident)); |
||
950 | } catch(PDOException $e) { |
||
951 | return "error"; |
||
952 | } |
||
953 | |||
954 | return "success"; |
||
955 | } |
||
956 | |||
957 | /** |
||
958 | * Deletes all info in the table for an id |
||
959 | * |
||
960 | * @param $id |
||
961 | * @return String success or false |
||
962 | */ |
||
963 | public function deleteLiveSpotterDataById($id) |
||
964 | { |
||
965 | $id = filter_var($id, FILTER_SANITIZE_STRING); |
||
966 | $query = 'DELETE FROM spotter_live WHERE flightaware_id = :id'; |
||
967 | |||
968 | try { |
||
969 | |||
970 | $sth = $this->db->prepare($query); |
||
971 | $sth->execute(array(':id' => $id)); |
||
972 | } catch(PDOException $e) { |
||
973 | return "error"; |
||
974 | } |
||
975 | |||
976 | return "success"; |
||
977 | } |
||
978 | |||
979 | |||
980 | /** |
||
981 | * Gets the aircraft ident within the last hour |
||
982 | * |
||
983 | * @param $ident |
||
984 | * @return String the ident |
||
985 | */ |
||
986 | public function getIdentFromLastHour($ident) |
||
987 | { |
||
988 | global $globalDBdriver, $globalTimezone; |
||
989 | if ($globalDBdriver == 'mysql') { |
||
990 | $query = 'SELECT spotter_live.ident FROM spotter_live |
||
991 | WHERE spotter_live.ident = :ident |
||
992 | AND spotter_live.date >= DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 HOUR) |
||
993 | AND spotter_live.date < UTC_TIMESTAMP()'; |
||
994 | $query_data = array(':ident' => $ident); |
||
995 | } else { |
||
996 | $query = "SELECT spotter_live.ident FROM spotter_live |
||
997 | WHERE spotter_live.ident = :ident |
||
998 | AND spotter_live.date >= now() AT TIME ZONE 'UTC' - INTERVAL '1 HOURS' |
||
999 | AND spotter_live.date < now() AT TIME ZONE 'UTC'"; |
||
1000 | $query_data = array(':ident' => $ident); |
||
1001 | } |
||
1002 | |||
1003 | $sth = $this->db->prepare($query); |
||
1004 | $sth->execute($query_data); |
||
1005 | $ident_result=''; |
||
1006 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
1007 | { |
||
1008 | $ident_result = $row['ident']; |
||
1009 | } |
||
1010 | return $ident_result; |
||
1011 | } |
||
1012 | |||
1013 | /** |
||
1014 | * Check recent aircraft |
||
1015 | * |
||
1016 | * @param $ident |
||
1017 | * @return String the ident |
||
1018 | */ |
||
1019 | public function checkIdentRecent($ident) |
||
1020 | { |
||
1021 | global $globalDBdriver, $globalTimezone; |
||
1022 | if ($globalDBdriver == 'mysql') { |
||
1023 | $query = 'SELECT spotter_live.ident, spotter_live.flightaware_id FROM spotter_live |
||
1024 | WHERE spotter_live.ident = :ident |
||
1025 | AND spotter_live.date >= DATE_SUB(UTC_TIMESTAMP(),INTERVAL 20 MINUTE)'; |
||
1026 | // AND spotter_live.date < UTC_TIMESTAMP()"; |
||
1027 | $query_data = array(':ident' => $ident); |
||
1028 | } else { |
||
1029 | $query = "SELECT spotter_live.ident, spotter_live.flightaware_id FROM spotter_live |
||
1030 | WHERE spotter_live.ident = :ident |
||
1031 | AND spotter_live.date >= now() AT TIME ZONE 'UTC' - INTERVAL '20 MINUTES'"; |
||
1032 | // AND spotter_live.date < now() AT TIME ZONE 'UTC'"; |
||
1033 | $query_data = array(':ident' => $ident); |
||
1034 | } |
||
1035 | |||
1036 | $sth = $this->db->prepare($query); |
||
1037 | $sth->execute($query_data); |
||
1038 | $ident_result=''; |
||
1039 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
1040 | { |
||
1041 | $ident_result = $row['flightaware_id']; |
||
1042 | } |
||
1043 | return $ident_result; |
||
1044 | } |
||
1045 | |||
1046 | /** |
||
1047 | * Check recent aircraft by id |
||
1048 | * |
||
1049 | * @param $id |
||
1050 | * @return String the ident |
||
1051 | */ |
||
1052 | public function checkIdRecent($id) |
||
1053 | { |
||
1054 | global $globalDBdriver, $globalTimezone; |
||
1055 | if ($globalDBdriver == 'mysql') { |
||
1056 | $query = 'SELECT spotter_live.ident, spotter_live.flightaware_id FROM spotter_live |
||
1057 | WHERE spotter_live.flightaware_id = :id |
||
1058 | AND spotter_live.date >= DATE_SUB(UTC_TIMESTAMP(),INTERVAL 10 HOUR)'; |
||
1059 | // AND spotter_live.date < UTC_TIMESTAMP()"; |
||
1060 | $query_data = array(':id' => $id); |
||
1061 | } else { |
||
1062 | $query = "SELECT spotter_live.ident, spotter_live.flightaware_id FROM spotter_live |
||
1063 | WHERE spotter_live.flightaware_id = :id |
||
1064 | AND spotter_live.date >= now() AT TIME ZONE 'UTC' - INTERVAL '10 HOUR'"; |
||
1065 | // AND spotter_live.date < now() AT TIME ZONE 'UTC'"; |
||
1066 | $query_data = array(':id' => $id); |
||
1067 | } |
||
1068 | |||
1069 | $sth = $this->db->prepare($query); |
||
1070 | $sth->execute($query_data); |
||
1071 | $ident_result=''; |
||
1072 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
1073 | { |
||
1074 | $ident_result = $row['flightaware_id']; |
||
1075 | } |
||
1076 | return $ident_result; |
||
1077 | } |
||
1078 | |||
1079 | /** |
||
1080 | * Check recent aircraft by ModeS |
||
1081 | * |
||
1082 | * @param $modes |
||
1083 | * @return String the ModeS |
||
1084 | */ |
||
1085 | public function checkModeSRecent($modes) |
||
1086 | { |
||
1087 | global $globalDBdriver, $globalTimezone; |
||
1088 | if ($globalDBdriver == 'mysql') { |
||
1089 | $query = 'SELECT spotter_live.ModeS, spotter_live.flightaware_id FROM spotter_live |
||
1090 | WHERE spotter_live.ModeS = :modes |
||
1091 | AND spotter_live.date >= DATE_SUB(UTC_TIMESTAMP(),INTERVAL 20 MINUTE)'; |
||
1092 | // AND spotter_live.date < UTC_TIMESTAMP()"; |
||
1093 | $query_data = array(':modes' => $modes); |
||
1094 | } else { |
||
1095 | $query = "SELECT spotter_live.ModeS, spotter_live.flightaware_id FROM spotter_live |
||
1096 | WHERE spotter_live.ModeS = :modes |
||
1097 | AND spotter_live.date >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '20 MINUTE'"; |
||
1098 | // // AND spotter_live.date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC'"; |
||
1099 | $query_data = array(':modes' => $modes); |
||
1100 | } |
||
1101 | |||
1102 | $sth = $this->db->prepare($query); |
||
1103 | $sth->execute($query_data); |
||
1104 | $ident_result=''; |
||
1105 | while($row = $sth->fetch(PDO::FETCH_ASSOC)) |
||
1106 | { |
||
1107 | //$ident_result = $row['spotter_live_id']; |
||
1108 | $ident_result = $row['flightaware_id']; |
||
1109 | } |
||
1110 | return $ident_result; |
||
1111 | } |
||
1112 | |||
1113 | /** |
||
1114 | * Gets the aircraft data from the last 20 seconds |
||
1115 | * |
||
1116 | * @param string $q |
||
1117 | * @return array the spotter data |
||
1118 | */ |
||
1119 | public function getRealTimeData($q = '') |
||
1120 | { |
||
1121 | global $globalDBdriver; |
||
1122 | $additional_query = ''; |
||
1123 | if ($q != "") |
||
1124 | { |
||
1125 | if (!is_string($q)) |
||
1126 | { |
||
1127 | return array(); |
||
1128 | } else { |
||
1129 | $q_array = explode(" ", $q); |
||
1130 | foreach ($q_array as $q_item){ |
||
1131 | $q_item = filter_var($q_item,FILTER_SANITIZE_STRING); |
||
1132 | $additional_query .= " AND ("; |
||
1133 | $additional_query .= "(spotter_live.aircraft_icao like '%".$q_item."%') OR "; |
||
1134 | $additional_query .= "(spotter_live.aircraft_name like '%".$q_item."%') OR "; |
||
1135 | $additional_query .= "(spotter_live.aircraft_manufacturer like '%".$q_item."%') OR "; |
||
1136 | $additional_query .= "(spotter_live.airline_icao like '%".$q_item."%') OR "; |
||
1137 | $additional_query .= "(spotter_live.departure_airport_icao like '%".$q_item."%') OR "; |
||
1138 | $additional_query .= "(spotter_live.arrival_airport_icao like '%".$q_item."%') OR "; |
||
1139 | $additional_query .= "(spotter_live.registration like '%".$q_item."%') OR "; |
||
1140 | $additional_query .= "(spotter_live.ident like '%".$q_item."%')"; |
||
1141 | $additional_query .= ")"; |
||
1142 | } |
||
1143 | } |
||
1144 | } |
||
1145 | if ($globalDBdriver == 'mysql') { |
||
1146 | $query = "SELECT spotter_live.* FROM spotter_live |
||
1147 | WHERE spotter_live.date >= DATE_SUB(UTC_TIMESTAMP(),INTERVAL 20 SECOND) ".$additional_query." |
||
1148 | AND spotter_live.date < UTC_TIMESTAMP()"; |
||
1149 | } else { |
||
1150 | $query = "SELECT spotter_live.* FROM spotter_live |
||
1151 | WHERE spotter_live.date::timestamp >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '20 SECONDS' ".$additional_query." |
||
1152 | AND spotter_live.date::timestamp < CURRENT_TIMESTAMP AT TIME ZONE 'UTC'"; |
||
1153 | } |
||
1154 | $Spotter = new Spotter(); |
||
1155 | $spotter_array = $Spotter->getDataFromDB($query, array()); |
||
1156 | return $spotter_array; |
||
1157 | } |
||
1158 | |||
1159 | /** |
||
1160 | * Adds a new spotter data |
||
1161 | * |
||
1162 | * @param String $flightaware_id the ID from flightaware |
||
1163 | * @param String $ident the flight ident |
||
1164 | * @param String $aircraft_icao the aircraft type |
||
1165 | * @param String $departure_airport_icao the departure airport |
||
1166 | * @param String $arrival_airport_icao the arrival airport |
||
1167 | * @param string $latitude |
||
1168 | * @param string $longitude |
||
1169 | * @param string $waypoints |
||
1170 | * @param string $altitude |
||
1171 | * @param string $altitude_real |
||
1172 | * @param string $heading |
||
1173 | * @param string $groundspeed |
||
1174 | * @param string $date |
||
1175 | * @param string $departure_airport_time |
||
1176 | * @param string $arrival_airport_time |
||
1177 | * @param string $squawk |
||
1178 | * @param string $route_stop |
||
1179 | * @param string $ModeS |
||
1180 | * @param bool $putinarchive |
||
1181 | * @param string $registration |
||
1182 | * @param string $pilot_id |
||
1183 | * @param string $pilot_name |
||
1184 | * @param string $verticalrate |
||
1185 | * @param bool $noarchive |
||
1186 | * @param bool $ground |
||
1187 | * @param string $format_source |
||
1188 | * @param string $source_name |
||
1189 | * @param string $over_country |
||
1190 | * @return String success or false |
||
1191 | */ |
||
1192 | public function addLiveSpotterData($flightaware_id = '', $ident = '', $aircraft_icao = '', $departure_airport_icao = '', $arrival_airport_icao = '', $latitude = '', $longitude = '', $waypoints = '', $altitude = '', $altitude_real = '',$heading = '', $groundspeed = '', $date = '',$departure_airport_time = '', $arrival_airport_time = '', $squawk = '', $route_stop = '', $ModeS = '', $putinarchive = false,$registration = '',$pilot_id = '', $pilot_name = '', $verticalrate = '', $noarchive = false, $ground = false,$format_source = '', $source_name = '', $over_country = '') |
||
1193 | { |
||
1194 | global $globalURL, $globalArchive, $globalDebug; |
||
1195 | $Common = new Common(); |
||
1196 | date_default_timezone_set('UTC'); |
||
1197 | |||
1198 | //getting the airline information |
||
1199 | if ($ident != '') |
||
1200 | { |
||
1201 | if (!is_string($ident)) |
||
1202 | { |
||
1203 | return false; |
||
1204 | } |
||
1205 | } |
||
1206 | |||
1207 | //getting the aircraft information |
||
1208 | if ($aircraft_icao != '') |
||
1209 | { |
||
1210 | if (!is_string($aircraft_icao)) |
||
1211 | { |
||
1212 | return false; |
||
1213 | } |
||
1214 | } |
||
1215 | //getting the departure airport information |
||
1216 | if ($departure_airport_icao != '') |
||
1217 | { |
||
1218 | if (!is_string($departure_airport_icao)) |
||
1219 | { |
||
1220 | return false; |
||
1221 | } |
||
1222 | } |
||
1223 | |||
1224 | //getting the arrival airport information |
||
1225 | if ($arrival_airport_icao != '') |
||
1226 | { |
||
1227 | if (!is_string($arrival_airport_icao)) |
||
1228 | { |
||
1229 | return false; |
||
1230 | } |
||
1231 | } |
||
1232 | |||
1233 | |||
1234 | if ($latitude != '') |
||
1235 | { |
||
1236 | if (!is_numeric($latitude)) |
||
1237 | { |
||
1238 | return false; |
||
1239 | } |
||
1240 | } else return ''; |
||
1241 | |||
1242 | if ($longitude != '') |
||
1243 | { |
||
1244 | if (!is_numeric($longitude)) |
||
1245 | { |
||
1246 | return false; |
||
1247 | } |
||
1248 | } else return ''; |
||
1249 | |||
1250 | if ($waypoints != '') |
||
1251 | { |
||
1252 | if (!is_string($waypoints)) |
||
1253 | { |
||
1254 | return false; |
||
1255 | } |
||
1256 | } |
||
1257 | |||
1258 | if ($altitude != '') |
||
1259 | { |
||
1260 | if (!is_numeric($altitude)) |
||
1261 | { |
||
1262 | return false; |
||
1263 | } |
||
1264 | } else $altitude = 0; |
||
1265 | if ($altitude_real != '') |
||
1266 | { |
||
1267 | if (!is_numeric($altitude_real)) |
||
1268 | { |
||
1269 | return false; |
||
1270 | } |
||
1271 | } else $altitude_real = 0; |
||
1272 | |||
1273 | if ($heading != '') |
||
1274 | { |
||
1275 | if (!is_numeric($heading)) |
||
1276 | { |
||
1277 | return false; |
||
1278 | } |
||
1279 | } else $heading = 0; |
||
1280 | |||
1281 | if ($groundspeed != '') |
||
1282 | { |
||
1283 | if (!is_numeric($groundspeed)) |
||
1284 | { |
||
1285 | return false; |
||
1286 | } |
||
1287 | } else $groundspeed = 0; |
||
1288 | date_default_timezone_set('UTC'); |
||
1289 | if ($date == '') $date = date("Y-m-d H:i:s", time()); |
||
1290 | |||
1291 | |||
1292 | $flightaware_id = filter_var($flightaware_id,FILTER_SANITIZE_STRING); |
||
1293 | $ident = filter_var($ident,FILTER_SANITIZE_STRING); |
||
1294 | $aircraft_icao = filter_var($aircraft_icao,FILTER_SANITIZE_STRING); |
||
1295 | $departure_airport_icao = filter_var($departure_airport_icao,FILTER_SANITIZE_STRING); |
||
1296 | $arrival_airport_icao = filter_var($arrival_airport_icao,FILTER_SANITIZE_STRING); |
||
1297 | $latitude = filter_var($latitude,FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
1298 | $longitude = filter_var($longitude,FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
1299 | $waypoints = filter_var($waypoints,FILTER_SANITIZE_STRING); |
||
1300 | $altitude = filter_var($altitude,FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
1301 | $altitude_real = filter_var($altitude_real,FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
1302 | $heading = filter_var($heading,FILTER_SANITIZE_NUMBER_INT); |
||
1303 | $groundspeed = filter_var($groundspeed,FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
||
1304 | $squawk = filter_var($squawk,FILTER_SANITIZE_NUMBER_INT); |
||
1305 | $route_stop = filter_var($route_stop,FILTER_SANITIZE_STRING); |
||
1306 | $ModeS = filter_var($ModeS,FILTER_SANITIZE_STRING); |
||
1307 | $pilot_id = filter_var($pilot_id,FILTER_SANITIZE_STRING); |
||
1308 | $pilot_name = filter_var($pilot_name,FILTER_SANITIZE_STRING); |
||
1309 | $format_source = filter_var($format_source,FILTER_SANITIZE_STRING); |
||
1310 | $source_name = filter_var($source_name,FILTER_SANITIZE_STRING); |
||
1311 | $over_country = filter_var($over_country,FILTER_SANITIZE_STRING); |
||
1312 | $verticalrate = filter_var($verticalrate,FILTER_SANITIZE_NUMBER_INT); |
||
1313 | |||
1314 | $airline_name = ''; |
||
1315 | $airline_icao = ''; |
||
1316 | $airline_country = ''; |
||
1317 | $airline_type = ''; |
||
1318 | $aircraft_shadow = ''; |
||
1319 | $aircraft_type = ''; |
||
1320 | $aircraft_manufacturer = ''; |
||
1321 | |||
1322 | |||
1323 | |||
1324 | $aircraft_name = ''; |
||
1325 | $departure_airport_name = ''; |
||
1326 | $departure_airport_city = ''; |
||
1327 | $departure_airport_country = ''; |
||
1328 | |||
1329 | $arrival_airport_name = ''; |
||
1330 | $arrival_airport_city = ''; |
||
1331 | $arrival_airport_country = ''; |
||
1332 | |||
1333 | |||
1334 | if ($squawk == '' || $Common->isInteger($squawk) === false ) $squawk = NULL; |
||
1335 | if ($verticalrate == '' || $Common->isInteger($verticalrate) === false ) $verticalrate = NULL; |
||
1336 | if ($groundspeed == '' || $Common->isInteger($groundspeed) === false ) $groundspeed = 0; |
||
1337 | if ($heading == '' || $Common->isInteger($heading) === false ) $heading = 0; |
||
1338 | |||
1339 | $query = ''; |
||
1340 | if ($globalArchive) { |
||
1341 | if ($globalDebug) echo '-- Delete previous data -- '; |
||
1342 | $query .= 'DELETE FROM spotter_live WHERE flightaware_id = :flightaware_id;'; |
||
1343 | } |
||
1344 | |||
1345 | $query .= 'INSERT INTO spotter_live (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, arrival_airport_icao, arrival_airport_name, arrival_airport_city, arrival_airport_country, latitude, longitude, waypoints, altitude, heading, ground_speed, date, departure_airport_time, arrival_airport_time, squawk, route_stop, ModeS, pilot_id, pilot_name, verticalrate, ground, format_source, source_name, over_country, real_altitude) |
||
1346 | VALUES (:flightaware_id,:ident,:registration,:airline_name,:airline_icao,:airline_country,:airline_type,:aircraft_icao,:aircraft_shadow,:aircraft_type,:aircraft_manufacturer,:departure_airport_icao,:departure_airport_name, :departure_airport_city, :departure_airport_country, :arrival_airport_icao, :arrival_airport_name, :arrival_airport_city, :arrival_airport_country, :latitude,:longitude,:waypoints,:altitude,:heading,:groundspeed,:date,:departure_airport_time,:arrival_airport_time,:squawk,:route_stop,:ModeS, :pilot_id, :pilot_name, :verticalrate, :ground, :format_source, :source_name, :over_country, :real_altitude)'; |
||
1347 | |||
1348 | $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_type' => $aircraft_type,':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,':arrival_airport_icao' => $arrival_airport_icao,':arrival_airport_name' => $arrival_airport_name,':arrival_airport_city' => $arrival_airport_city,':arrival_airport_country' => $arrival_airport_country,':latitude' => $latitude,':longitude' => $longitude, ':waypoints' => $waypoints,':altitude' => $altitude,':heading' => $heading,':groundspeed' => $groundspeed,':date' => $date, ':departure_airport_time' => $departure_airport_time,':arrival_airport_time' => $arrival_airport_time, ':squawk' => $squawk,':route_stop' => $route_stop,':ModeS' => $ModeS, ':pilot_id' => $pilot_id, ':pilot_name' => $pilot_name, ':verticalrate' => $verticalrate, ':format_source' => $format_source,':ground' => $ground, ':source_name' => $source_name, ':over_country' => $over_country,':real_altitude' => $altitude_real); |
||
1349 | try { |
||
1350 | |||
1351 | $sth = $this->db->prepare($query); |
||
1352 | $sth->execute($query_values); |
||
1353 | $sth->closeCursor(); |
||
1354 | } catch(PDOException $e) { |
||
1355 | return "error : ".$e->getMessage(); |
||
1356 | } |
||
1357 | if (isset($globalArchive) && $globalArchive && $putinarchive && $noarchive !== true) { |
||
1358 | if ($globalDebug) echo '(Add to Spotter archive : '; |
||
1359 | $SpotterArchive = new SpotterArchive($this->db); |
||
1360 | $result = $SpotterArchive->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, $altitude_real,$heading, $groundspeed, $squawk, $ModeS, $pilot_id, $pilot_name,$verticalrate,$format_source,$source_name, $over_country); |
||
1361 | if ($globalDebug) echo $result.')'; |
||
1362 | } elseif ($globalDebug && $putinarchive !== true) { |
||
1363 | echo '(Not adding to archive)'; |
||
1364 | } elseif ($globalDebug && $noarchive === true) { |
||
1365 | echo '(No archive)'; |
||
1366 | } |
||
1367 | return "success"; |
||
1368 | |||
1369 | } |
||
1370 | |||
1371 | public function getOrderBy() |
||
1372 | { |
||
1373 | $orderby = array("aircraft_asc" => array("key" => "aircraft_asc", "value" => "Aircraft Type - ASC", "sql" => "ORDER BY spotter_live.aircraft_icao ASC"), "aircraft_desc" => array("key" => "aircraft_desc", "value" => "Aircraft Type - DESC", "sql" => "ORDER BY spotter_live.aircraft_icao DESC"),"manufacturer_asc" => array("key" => "manufacturer_asc", "value" => "Aircraft Manufacturer - ASC", "sql" => "ORDER BY spotter_live.aircraft_manufacturer ASC"), "manufacturer_desc" => array("key" => "manufacturer_desc", "value" => "Aircraft Manufacturer - DESC", "sql" => "ORDER BY spotter_live.aircraft_manufacturer DESC"),"airline_name_asc" => array("key" => "airline_name_asc", "value" => "Airline Name - ASC", "sql" => "ORDER BY spotter_live.airline_name ASC"), "airline_name_desc" => array("key" => "airline_name_desc", "value" => "Airline Name - DESC", "sql" => "ORDER BY spotter_live.airline_name DESC"), "ident_asc" => array("key" => "ident_asc", "value" => "Ident - ASC", "sql" => "ORDER BY spotter_live.ident ASC"), "ident_desc" => array("key" => "ident_desc", "value" => "Ident - DESC", "sql" => "ORDER BY spotter_live.ident DESC"), "airport_departure_asc" => array("key" => "airport_departure_asc", "value" => "Departure Airport - ASC", "sql" => "ORDER BY spotter_live.departure_airport_city ASC"), "airport_departure_desc" => array("key" => "airport_departure_desc", "value" => "Departure Airport - DESC", "sql" => "ORDER BY spotter_live.departure_airport_city DESC"), "airport_arrival_asc" => array("key" => "airport_arrival_asc", "value" => "Arrival Airport - ASC", "sql" => "ORDER BY spotter_live.arrival_airport_city ASC"), "airport_arrival_desc" => array("key" => "airport_arrival_desc", "value" => "Arrival Airport - DESC", "sql" => "ORDER BY spotter_live.arrival_airport_city DESC"), "date_asc" => array("key" => "date_asc", "value" => "Date - ASC", "sql" => "ORDER BY spotter_live.date ASC"), "date_desc" => array("key" => "date_desc", "value" => "Date - DESC", "sql" => "ORDER BY spotter_live.date DESC")); |
||
1374 | return $orderby; |
||
1375 | } |
||
1376 | |||
1377 | } |
||
1378 | |||
1379 | |||
1380 | ?> |
||
1381 |
If you define a variable conditionally, it can happen that it is not defined for all execution paths.
Let’s take a look at an example:
In the above example, the variable $x is defined if you pass “foo” or “bar” as argument for $a. However, since the switch statement has no default case statement, if you pass any other value, the variable $x would be undefined.
Available Fixes
Check for existence of the variable explicitly:
Define a default value for the variable:
Add a value for the missing path: