@@ -8,199 +8,199 @@ discard block |
||
8 | 8 | require_once(dirname(__FILE__).'/class.Common.php'); |
9 | 9 | class Stats { |
10 | 10 | public $db; |
11 | - function __construct($dbc = null) { |
|
11 | + function __construct($dbc = null) { |
|
12 | 12 | $Connection = new Connection($dbc); |
13 | 13 | $this->db = $Connection->db; |
14 | - } |
|
14 | + } |
|
15 | 15 | |
16 | 16 | public function addLastStatsUpdate($type,$stats_date) { |
17 | - $query = "DELETE FROM config WHERE name = :type; |
|
17 | + $query = "DELETE FROM config WHERE name = :type; |
|
18 | 18 | INSERT INTO config (name,value) VALUES (:type,:stats_date);"; |
19 | - $query_values = array('type' => $type,':stats_date' => $stats_date); |
|
20 | - try { |
|
21 | - $sth = $this->db->prepare($query); |
|
22 | - $sth->execute($query_values); |
|
23 | - } catch(PDOException $e) { |
|
24 | - return "error : ".$e->getMessage(); |
|
25 | - } |
|
26 | - } |
|
19 | + $query_values = array('type' => $type,':stats_date' => $stats_date); |
|
20 | + try { |
|
21 | + $sth = $this->db->prepare($query); |
|
22 | + $sth->execute($query_values); |
|
23 | + } catch(PDOException $e) { |
|
24 | + return "error : ".$e->getMessage(); |
|
25 | + } |
|
26 | + } |
|
27 | 27 | |
28 | 28 | public function getLastStatsUpdate($type = 'last_update_stats') { |
29 | - $query = "SELECT value FROM config WHERE name = :type"; |
|
30 | - try { |
|
31 | - $sth = $this->db->prepare($query); |
|
32 | - $sth->execute(array(':type' => $type)); |
|
33 | - } catch(PDOException $e) { |
|
34 | - echo "error : ".$e->getMessage(); |
|
35 | - } |
|
36 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
37 | - return $all; |
|
38 | - } |
|
29 | + $query = "SELECT value FROM config WHERE name = :type"; |
|
30 | + try { |
|
31 | + $sth = $this->db->prepare($query); |
|
32 | + $sth->execute(array(':type' => $type)); |
|
33 | + } catch(PDOException $e) { |
|
34 | + echo "error : ".$e->getMessage(); |
|
35 | + } |
|
36 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
37 | + return $all; |
|
38 | + } |
|
39 | 39 | public function getAllAirlineNames($airline_type = '') { |
40 | - $query = "SELECT * FROM stats_airline ORDER BY airline_name ASC"; |
|
41 | - try { |
|
42 | - $sth = $this->db->prepare($query); |
|
43 | - $sth->execute(); |
|
44 | - } catch(PDOException $e) { |
|
45 | - echo "error : ".$e->getMessage(); |
|
46 | - } |
|
47 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
48 | - return $all; |
|
49 | - } |
|
40 | + $query = "SELECT * FROM stats_airline ORDER BY airline_name ASC"; |
|
41 | + try { |
|
42 | + $sth = $this->db->prepare($query); |
|
43 | + $sth->execute(); |
|
44 | + } catch(PDOException $e) { |
|
45 | + echo "error : ".$e->getMessage(); |
|
46 | + } |
|
47 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
48 | + return $all; |
|
49 | + } |
|
50 | 50 | public function getAllAircraftTypes() { |
51 | - $query = "SELECT * FROM stats_aircraft ORDER BY aircraft_name ASC"; |
|
52 | - try { |
|
53 | - $sth = $this->db->prepare($query); |
|
54 | - $sth->execute(); |
|
55 | - } catch(PDOException $e) { |
|
56 | - echo "error : ".$e->getMessage(); |
|
57 | - } |
|
58 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
59 | - return $all; |
|
60 | - } |
|
51 | + $query = "SELECT * FROM stats_aircraft ORDER BY aircraft_name ASC"; |
|
52 | + try { |
|
53 | + $sth = $this->db->prepare($query); |
|
54 | + $sth->execute(); |
|
55 | + } catch(PDOException $e) { |
|
56 | + echo "error : ".$e->getMessage(); |
|
57 | + } |
|
58 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
59 | + return $all; |
|
60 | + } |
|
61 | 61 | public function getAllAirportNames() { |
62 | - $query = "SELECT airport_icao, airport_name,airport_city,airport_country FROM stats_airport GROUP BY airport_icao,airport_name,airport_city,airport_country ORDER BY airport_city ASC"; |
|
63 | - try { |
|
64 | - $sth = $this->db->prepare($query); |
|
65 | - $sth->execute(); |
|
66 | - } catch(PDOException $e) { |
|
67 | - echo "error : ".$e->getMessage(); |
|
68 | - } |
|
69 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
70 | - return $all; |
|
71 | - } |
|
62 | + $query = "SELECT airport_icao, airport_name,airport_city,airport_country FROM stats_airport GROUP BY airport_icao,airport_name,airport_city,airport_country ORDER BY airport_city ASC"; |
|
63 | + try { |
|
64 | + $sth = $this->db->prepare($query); |
|
65 | + $sth->execute(); |
|
66 | + } catch(PDOException $e) { |
|
67 | + echo "error : ".$e->getMessage(); |
|
68 | + } |
|
69 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
70 | + return $all; |
|
71 | + } |
|
72 | 72 | |
73 | 73 | |
74 | 74 | public function countAllAircraftTypes($limit = true) { |
75 | 75 | if ($limit) $query = "SELECT aircraft_icao, cnt AS aircraft_icao_count, aircraft_name FROM stats_aircraft WHERE aircraft_name <> '' AND aircraft_icao <> '' ORDER BY aircraft_icao_count DESC LIMIT 10 OFFSET 0"; |
76 | 76 | else $query = "SELECT aircraft_icao, cnt AS aircraft_icao_count, aircraft_name FROM stats_aircraft WHERE aircraft_name <> '' AND aircraft_icao <> '' ORDER BY aircraft_icao_count DESC"; |
77 | - try { |
|
78 | - $sth = $this->db->prepare($query); |
|
79 | - $sth->execute(); |
|
80 | - } catch(PDOException $e) { |
|
81 | - echo "error : ".$e->getMessage(); |
|
82 | - } |
|
83 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
84 | - if (empty($all)) { |
|
85 | - $Spotter = new Spotter($this->db); |
|
86 | - $all = $Spotter->countAllAircraftTypes($limit); |
|
87 | - } |
|
88 | - return $all; |
|
77 | + try { |
|
78 | + $sth = $this->db->prepare($query); |
|
79 | + $sth->execute(); |
|
80 | + } catch(PDOException $e) { |
|
81 | + echo "error : ".$e->getMessage(); |
|
82 | + } |
|
83 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
84 | + if (empty($all)) { |
|
85 | + $Spotter = new Spotter($this->db); |
|
86 | + $all = $Spotter->countAllAircraftTypes($limit); |
|
87 | + } |
|
88 | + return $all; |
|
89 | 89 | } |
90 | 90 | public function countAllAirlineCountries($limit = true) { |
91 | 91 | if ($limit) $query = "SELECT airlines.country AS airline_country, SUM(stats_airline.cnt) as airline_country_count FROM stats_airline,airlines WHERE stats_airline.airline_icao=airlines.icao GROUP BY airline_country ORDER BY airline_country_count DESC LIMIT 10 OFFSET 0"; |
92 | 92 | else $query = "SELECT airlines.country AS airline_country, SUM(stats_airline.cnt) as airline_country_count FROM stats_airline,airlines WHERE stats_airline.airline_icao=airlines.icao GROUP BY airline_country ORDER BY airline_country_count DESC"; |
93 | - try { |
|
94 | - $sth = $this->db->prepare($query); |
|
95 | - $sth->execute(); |
|
96 | - } catch(PDOException $e) { |
|
97 | - echo "error : ".$e->getMessage(); |
|
98 | - } |
|
99 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
100 | - if (empty($all)) { |
|
101 | - $Spotter = new Spotter($this->db); |
|
102 | - $all = $Spotter->countAllAirlineCountries($limit); |
|
93 | + try { |
|
94 | + $sth = $this->db->prepare($query); |
|
95 | + $sth->execute(); |
|
96 | + } catch(PDOException $e) { |
|
97 | + echo "error : ".$e->getMessage(); |
|
98 | + } |
|
99 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
100 | + if (empty($all)) { |
|
101 | + $Spotter = new Spotter($this->db); |
|
102 | + $all = $Spotter->countAllAirlineCountries($limit); |
|
103 | 103 | |
104 | - } |
|
105 | - return $all; |
|
104 | + } |
|
105 | + return $all; |
|
106 | 106 | } |
107 | 107 | public function countAllAircraftManufacturers($limit = true) { |
108 | 108 | if ($limit) $query = "SELECT aircraft.manufacturer AS aircraft_manufacturer, SUM(stats_aircraft.cnt) as aircraft_manufacturer_count FROM stats_aircraft,aircraft WHERE stats_aircraft.aircraft_icao=aircraft.icao GROUP BY aircraft.manufacturer ORDER BY aircraft_manufacturer_count DESC LIMIT 10 OFFSET 0"; |
109 | 109 | else $query = "SELECT aircraft.manufacturer AS aircraft_manufacturer, SUM(stats_aircraft.cnt) as aircraft_manufacturer_count FROM stats_aircraft,aircraft WHERE stats_aircraft.aircraft_icao=aircraft.icao GROUP BY aircraft.manufacturer ORDER BY aircraft_manufacturer_count DESC"; |
110 | - try { |
|
111 | - $sth = $this->db->prepare($query); |
|
112 | - $sth->execute(); |
|
113 | - } catch(PDOException $e) { |
|
114 | - echo "error : ".$e->getMessage(); |
|
115 | - } |
|
116 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
117 | - if (empty($all)) { |
|
118 | - $Spotter = new Spotter($this->db); |
|
110 | + try { |
|
111 | + $sth = $this->db->prepare($query); |
|
112 | + $sth->execute(); |
|
113 | + } catch(PDOException $e) { |
|
114 | + echo "error : ".$e->getMessage(); |
|
115 | + } |
|
116 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
117 | + if (empty($all)) { |
|
118 | + $Spotter = new Spotter($this->db); |
|
119 | 119 | $all = $Spotter->countAllAircraftManufacturers($limit); |
120 | - } |
|
121 | - return $all; |
|
120 | + } |
|
121 | + return $all; |
|
122 | 122 | } |
123 | 123 | |
124 | 124 | public function countAllArrivalCountries($limit = true) { |
125 | 125 | if ($limit) $query = "SELECT airport_country AS arrival_airport_country, arrival as airport_arrival_country_count FROM stats_airport WHERE stats_type = 'yearly' LIMIT 10 OFFSET 0"; |
126 | 126 | else $query = "SELECT airport_country AS arrival_airport_country, arrival as airport_arrival_country_count FROM stats_airport WHERE stats_type = 'yearly'"; |
127 | - try { |
|
128 | - $sth = $this->db->prepare($query); |
|
129 | - $sth->execute(); |
|
130 | - } catch(PDOException $e) { |
|
131 | - echo "error : ".$e->getMessage(); |
|
132 | - } |
|
133 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
134 | - if (empty($all)) { |
|
135 | - $Spotter = new Spotter($this->db); |
|
136 | - $all = $Spotter->countAllArrivalCountries($limit); |
|
137 | - } |
|
138 | - return $all; |
|
127 | + try { |
|
128 | + $sth = $this->db->prepare($query); |
|
129 | + $sth->execute(); |
|
130 | + } catch(PDOException $e) { |
|
131 | + echo "error : ".$e->getMessage(); |
|
132 | + } |
|
133 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
134 | + if (empty($all)) { |
|
135 | + $Spotter = new Spotter($this->db); |
|
136 | + $all = $Spotter->countAllArrivalCountries($limit); |
|
137 | + } |
|
138 | + return $all; |
|
139 | 139 | } |
140 | 140 | public function countAllDepartureCountries($limit = true) { |
141 | 141 | if ($limit) $query = "SELECT airport_country AS departure_airport_country, departure as airport_departure_country_count FROM stats_airport WHERE stats_type = 'yearly' LIMIT 10 OFFSET 0"; |
142 | 142 | else $query = "SELECT airport_country AS departure_airport_country, departure as airport_departure_country_count FROM stats_airport WHERE stats_type = 'yearly'"; |
143 | - try { |
|
144 | - $sth = $this->db->prepare($query); |
|
145 | - $sth->execute(); |
|
146 | - } catch(PDOException $e) { |
|
147 | - echo "error : ".$e->getMessage(); |
|
148 | - } |
|
149 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
150 | - if (empty($all)) { |
|
151 | - $Spotter = new Spotter($this->db); |
|
152 | - $all = $Spotter->countAllDepartureCountries($limit); |
|
153 | - } |
|
154 | - return $all; |
|
143 | + try { |
|
144 | + $sth = $this->db->prepare($query); |
|
145 | + $sth->execute(); |
|
146 | + } catch(PDOException $e) { |
|
147 | + echo "error : ".$e->getMessage(); |
|
148 | + } |
|
149 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
150 | + if (empty($all)) { |
|
151 | + $Spotter = new Spotter($this->db); |
|
152 | + $all = $Spotter->countAllDepartureCountries($limit); |
|
153 | + } |
|
154 | + return $all; |
|
155 | 155 | } |
156 | 156 | |
157 | 157 | public function countAllAirlines($limit = true) { |
158 | 158 | if ($limit) $query = "SELECT stats_airline.airline_icao, stats_airline.cnt AS airline_count, stats_airline.airline_name, airlines.country as airline_country FROM stats_airline, airlines WHERE stats_airline.airline_name <> '' AND stats_airline.airline_icao <> '' AND airlines.icao = airline_icao ORDER BY airline_count DESC LIMIT 10 OFFSET 0"; |
159 | 159 | else $query = "SELECT stats_airline.airline_icao, stats_airline.cnt AS airline_count, stats_airline.airline_name, airlines.country as airline_country FROM stats_airline, airlines WHERE stats_airline.airline_name <> '' AND stats_airline.airline_icao <> '' AND airlines.icao = airline_icao ORDER BY airline_count DESC"; |
160 | - try { |
|
161 | - $sth = $this->db->prepare($query); |
|
162 | - $sth->execute(); |
|
163 | - } catch(PDOException $e) { |
|
164 | - echo "error : ".$e->getMessage(); |
|
165 | - } |
|
166 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
167 | - if (empty($all)) { |
|
168 | - $Spotter = new Spotter($this->db); |
|
169 | - $all = $Spotter->countAllAirlines($limit); |
|
170 | - } |
|
171 | - return $all; |
|
160 | + try { |
|
161 | + $sth = $this->db->prepare($query); |
|
162 | + $sth->execute(); |
|
163 | + } catch(PDOException $e) { |
|
164 | + echo "error : ".$e->getMessage(); |
|
165 | + } |
|
166 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
167 | + if (empty($all)) { |
|
168 | + $Spotter = new Spotter($this->db); |
|
169 | + $all = $Spotter->countAllAirlines($limit); |
|
170 | + } |
|
171 | + return $all; |
|
172 | 172 | } |
173 | 173 | public function countAllAircraftRegistrations($limit = true) { |
174 | 174 | if ($limit) $query = "SELECT s.aircraft_icao, s.cnt AS aircraft_registration_count, a.type AS aircraft_name, s.registration FROM stats_registration s, aircraft a WHERE s.registration <> '' AND a.icao = s.aircraft_icao ORDER BY aircraft_registration_count DESC LIMIT 10 OFFSET 0"; |
175 | 175 | else $query = "SELECT s.aircraft_icao, s.cnt AS aircraft_registration_count, a.type AS aircraft_name FROM stats_registration s, aircraft a WHERE s.registration <> '' AND a.icao = s.aircraft_icao ORDER BY aircraft_registration_count DESC"; |
176 | - try { |
|
177 | - $sth = $this->db->prepare($query); |
|
178 | - $sth->execute(); |
|
179 | - } catch(PDOException $e) { |
|
180 | - echo "error : ".$e->getMessage(); |
|
181 | - } |
|
182 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
183 | - if (empty($all)) { |
|
184 | - $Spotter = new Spotter($this->db); |
|
185 | - $all = $Spotter->countAllAircraftRegistrations($limit); |
|
186 | - } |
|
187 | - return $all; |
|
176 | + try { |
|
177 | + $sth = $this->db->prepare($query); |
|
178 | + $sth->execute(); |
|
179 | + } catch(PDOException $e) { |
|
180 | + echo "error : ".$e->getMessage(); |
|
181 | + } |
|
182 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
183 | + if (empty($all)) { |
|
184 | + $Spotter = new Spotter($this->db); |
|
185 | + $all = $Spotter->countAllAircraftRegistrations($limit); |
|
186 | + } |
|
187 | + return $all; |
|
188 | 188 | } |
189 | 189 | public function countAllCallsigns($limit = true) { |
190 | 190 | if ($limit) $query = "SELECT s.callsign_icao, s.cnt AS callsign_icao_count, a.name AS airline_name, a.icao as airline_icao FROM stats_callsign s, airlines a WHERE s.callsign_icao <> '' AND a.icao = s.airline_icao ORDER BY callsign_icao_count DESC LIMIT 10 OFFSET 0"; |
191 | 191 | else $query = "SELECT s.callsign_icao, s.cnt AS callsign_icao_count, a.name AS airline_name, a.icao as airline_icao FROM stats_callsign s, airlines a WHERE s.callsign_icao <> '' AND a.icao = s.airline_icao ORDER BY callsign_icao_count DESC"; |
192 | - try { |
|
193 | - $sth = $this->db->prepare($query); |
|
194 | - $sth->execute(); |
|
195 | - } catch(PDOException $e) { |
|
196 | - echo "error : ".$e->getMessage(); |
|
197 | - } |
|
198 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
199 | - if (empty($all)) { |
|
200 | - $Spotter = new Spotter($this->db); |
|
201 | - $all = $Spotter->countAllCallsigns($limit); |
|
202 | - } |
|
203 | - return $all; |
|
192 | + try { |
|
193 | + $sth = $this->db->prepare($query); |
|
194 | + $sth->execute(); |
|
195 | + } catch(PDOException $e) { |
|
196 | + echo "error : ".$e->getMessage(); |
|
197 | + } |
|
198 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
199 | + if (empty($all)) { |
|
200 | + $Spotter = new Spotter($this->db); |
|
201 | + $all = $Spotter->countAllCallsigns($limit); |
|
202 | + } |
|
203 | + return $all; |
|
204 | 204 | } |
205 | 205 | public function countAllFlightOverCountries($limit = true) { |
206 | 206 | $Connection = new Connection(); |
@@ -214,7 +214,7 @@ discard block |
||
214 | 214 | echo "error : ".$e->getMessage(); |
215 | 215 | } |
216 | 216 | $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
217 | - /* |
|
217 | + /* |
|
218 | 218 | if (empty($all)) { |
219 | 219 | $Spotter = new Spotter($this->db); |
220 | 220 | $all = $Spotter->countAllFlightOverCountries($limit); |
@@ -228,102 +228,102 @@ discard block |
||
228 | 228 | public function countAllPilots($limit = true) { |
229 | 229 | if ($limit) $query = "SELECT pilot_id, cnt AS pilot_count, pilot_name FROM stats_pilot ORDER BY pilot_count DESC LIMIT 10 OFFSET 0"; |
230 | 230 | else $query = "SELECT pilot_id, cnt AS pilot_count, pilot_name FROM stats_pilot ORDER BY pilot_count DESC"; |
231 | - try { |
|
232 | - $sth = $this->db->prepare($query); |
|
233 | - $sth->execute(); |
|
234 | - } catch(PDOException $e) { |
|
235 | - echo "error : ".$e->getMessage(); |
|
236 | - } |
|
237 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
238 | - if (empty($all)) { |
|
239 | - $Spotter = new Spotter($this->db); |
|
240 | - $all = $Spotter->countAllPilots($limit); |
|
241 | - } |
|
242 | - return $all; |
|
231 | + try { |
|
232 | + $sth = $this->db->prepare($query); |
|
233 | + $sth->execute(); |
|
234 | + } catch(PDOException $e) { |
|
235 | + echo "error : ".$e->getMessage(); |
|
236 | + } |
|
237 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
238 | + if (empty($all)) { |
|
239 | + $Spotter = new Spotter($this->db); |
|
240 | + $all = $Spotter->countAllPilots($limit); |
|
241 | + } |
|
242 | + return $all; |
|
243 | 243 | } |
244 | 244 | public function countAllOwners($limit = true) { |
245 | 245 | if ($limit) $query = "SELECT owner_name, cnt AS owner_count FROM stats_owner ORDER BY owner_count DESC LIMIT 10 OFFSET 0"; |
246 | 246 | else $query = "SELECT owner_name, cnt AS owner_count FROM stats_owner ORDER BY owner_count DESC"; |
247 | - try { |
|
248 | - $sth = $this->db->prepare($query); |
|
249 | - $sth->execute(); |
|
250 | - } catch(PDOException $e) { |
|
251 | - echo "error : ".$e->getMessage(); |
|
252 | - } |
|
253 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
254 | - if (empty($all)) { |
|
255 | - $Spotter = new Spotter($this->db); |
|
256 | - $all = $Spotter->countAllOwners($limit); |
|
257 | - } |
|
258 | - return $all; |
|
247 | + try { |
|
248 | + $sth = $this->db->prepare($query); |
|
249 | + $sth->execute(); |
|
250 | + } catch(PDOException $e) { |
|
251 | + echo "error : ".$e->getMessage(); |
|
252 | + } |
|
253 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
254 | + if (empty($all)) { |
|
255 | + $Spotter = new Spotter($this->db); |
|
256 | + $all = $Spotter->countAllOwners($limit); |
|
257 | + } |
|
258 | + return $all; |
|
259 | 259 | } |
260 | 260 | public function countAllDepartureAirports($limit = true) { |
261 | 261 | if ($limit) $query = "SELECT airport_icao AS airport_departure_icao,airport_city AS airport_departure_city,airport_country AS airport_departure_country,departure AS airport_departure_icao_count FROM stats_airport WHERE stats_type = 'yearly' LIMIT 10 OFFSET 0"; |
262 | 262 | else $query = "SELECT airport_icao AS airport_departure_icao,airport_city AS airport_departure_city,airport_country AS airport_departure_country,departure AS airport_departure_icao_count FROM stats_airport WHERE stats_type = 'yearly'"; |
263 | - try { |
|
264 | - $sth = $this->db->prepare($query); |
|
265 | - $sth->execute(); |
|
266 | - } catch(PDOException $e) { |
|
267 | - echo "error : ".$e->getMessage(); |
|
268 | - } |
|
269 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
270 | - if (empty($all)) { |
|
271 | - $Spotter = new Spotter($this->db); |
|
272 | - $pall = $Spotter->countAllDepartureAirports($limit); |
|
273 | - $dall = $Spotter->countAllDetectedDepartureAirports($limit); |
|
274 | - $all = array(); |
|
275 | - foreach ($pall as $value) { |
|
276 | - $icao = $value['airport_departure_icao']; |
|
277 | - $all[$icao] = $value; |
|
278 | - } |
|
263 | + try { |
|
264 | + $sth = $this->db->prepare($query); |
|
265 | + $sth->execute(); |
|
266 | + } catch(PDOException $e) { |
|
267 | + echo "error : ".$e->getMessage(); |
|
268 | + } |
|
269 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
270 | + if (empty($all)) { |
|
271 | + $Spotter = new Spotter($this->db); |
|
272 | + $pall = $Spotter->countAllDepartureAirports($limit); |
|
273 | + $dall = $Spotter->countAllDetectedDepartureAirports($limit); |
|
274 | + $all = array(); |
|
275 | + foreach ($pall as $value) { |
|
276 | + $icao = $value['airport_departure_icao']; |
|
277 | + $all[$icao] = $value; |
|
278 | + } |
|
279 | 279 | |
280 | - foreach ($dall as $value) { |
|
281 | - $icao = $value['airport_departure_icao']; |
|
282 | - if (isset($all[$icao])) { |
|
283 | - $all[$icao]['airport_departure_icao_count'] = $all[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count']; |
|
284 | - } else $all[$icao] = $value; |
|
285 | - } |
|
286 | - $count = array(); |
|
287 | - foreach ($all as $key => $row) { |
|
288 | - $count[$key] = $row['airport_departure_icao_count']; |
|
289 | - } |
|
290 | - array_multisort($count,SORT_DESC,$all); |
|
291 | - } |
|
292 | - return $all; |
|
280 | + foreach ($dall as $value) { |
|
281 | + $icao = $value['airport_departure_icao']; |
|
282 | + if (isset($all[$icao])) { |
|
283 | + $all[$icao]['airport_departure_icao_count'] = $all[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count']; |
|
284 | + } else $all[$icao] = $value; |
|
285 | + } |
|
286 | + $count = array(); |
|
287 | + foreach ($all as $key => $row) { |
|
288 | + $count[$key] = $row['airport_departure_icao_count']; |
|
289 | + } |
|
290 | + array_multisort($count,SORT_DESC,$all); |
|
291 | + } |
|
292 | + return $all; |
|
293 | 293 | } |
294 | 294 | public function countAllArrivalAirports($limit = true) { |
295 | 295 | if ($limit) $query = "SELECT airport_icao AS airport_arrival_icao,airport_city AS airport_arrival_city,airport_country AS airport_arrival_country,arrival AS airport_arrival_icao_count FROM stats_airport WHERE stats_type = 'yearly' LIMIT 10 OFFSET 0"; |
296 | 296 | else $query = "SELECT airport_icao AS airport_arrival_icao,airport_city AS airport_arrival_city,airport_country AS airport_arrival_country,arrival AS airport_arrival_icao_count FROM stats_airport WHERE stats_type = 'yearly'"; |
297 | - try { |
|
298 | - $sth = $this->db->prepare($query); |
|
299 | - $sth->execute(); |
|
300 | - } catch(PDOException $e) { |
|
301 | - echo "error : ".$e->getMessage(); |
|
302 | - } |
|
303 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
304 | - if (empty($all)) { |
|
305 | - $Spotter = new Spotter($this->db); |
|
306 | - $pall = $Spotter->countAllArrivalAirports($limit); |
|
307 | - $dall = $Spotter->countAllDetectedArrivalAirports($limit); |
|
308 | - $all = array(); |
|
309 | - foreach ($pall as $value) { |
|
310 | - $icao = $value['airport_arrival_icao']; |
|
311 | - $all[$icao] = $value; |
|
312 | - } |
|
297 | + try { |
|
298 | + $sth = $this->db->prepare($query); |
|
299 | + $sth->execute(); |
|
300 | + } catch(PDOException $e) { |
|
301 | + echo "error : ".$e->getMessage(); |
|
302 | + } |
|
303 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
304 | + if (empty($all)) { |
|
305 | + $Spotter = new Spotter($this->db); |
|
306 | + $pall = $Spotter->countAllArrivalAirports($limit); |
|
307 | + $dall = $Spotter->countAllDetectedArrivalAirports($limit); |
|
308 | + $all = array(); |
|
309 | + foreach ($pall as $value) { |
|
310 | + $icao = $value['airport_arrival_icao']; |
|
311 | + $all[$icao] = $value; |
|
312 | + } |
|
313 | 313 | |
314 | - foreach ($dall as $value) { |
|
315 | - $icao = $value['airport_arrival_icao']; |
|
316 | - if (isset($all[$icao])) { |
|
317 | - $all[$icao]['airport_arrival_icao_count'] = $all[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count']; |
|
318 | - } else $all[$icao] = $value; |
|
319 | - } |
|
320 | - $count = array(); |
|
321 | - foreach ($all as $key => $row) { |
|
322 | - $count[$key] = $row['airport_arrival_icao_count']; |
|
323 | - } |
|
324 | - array_multisort($count,SORT_DESC,$all); |
|
325 | - } |
|
326 | - return $all; |
|
314 | + foreach ($dall as $value) { |
|
315 | + $icao = $value['airport_arrival_icao']; |
|
316 | + if (isset($all[$icao])) { |
|
317 | + $all[$icao]['airport_arrival_icao_count'] = $all[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count']; |
|
318 | + } else $all[$icao] = $value; |
|
319 | + } |
|
320 | + $count = array(); |
|
321 | + foreach ($all as $key => $row) { |
|
322 | + $count[$key] = $row['airport_arrival_icao_count']; |
|
323 | + } |
|
324 | + array_multisort($count,SORT_DESC,$all); |
|
325 | + } |
|
326 | + return $all; |
|
327 | 327 | } |
328 | 328 | public function countAllMonthsLastYear($limit = true) { |
329 | 329 | global $globalDBdriver; |
@@ -335,35 +335,35 @@ discard block |
||
335 | 335 | else $query = "SELECT EXTRACT(MONTH FROM stats_date) as month_name, EXTRACT(YEAR FROM stats_date) as year_name, cnt as date_count FROM stats WHERE stats_type = 'flights_bymonth'"; |
336 | 336 | } |
337 | 337 | $query_data = array(); |
338 | - try { |
|
339 | - $sth = $this->db->prepare($query); |
|
340 | - $sth->execute($query_data); |
|
341 | - } catch(PDOException $e) { |
|
342 | - echo "error : ".$e->getMessage(); |
|
343 | - } |
|
344 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
345 | - if (empty($all)) { |
|
346 | - $Spotter = new Spotter($this->db); |
|
347 | - $all = $Spotter->countAllMonthsLastYear($limit); |
|
348 | - } |
|
349 | - return $all; |
|
338 | + try { |
|
339 | + $sth = $this->db->prepare($query); |
|
340 | + $sth->execute($query_data); |
|
341 | + } catch(PDOException $e) { |
|
342 | + echo "error : ".$e->getMessage(); |
|
343 | + } |
|
344 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
345 | + if (empty($all)) { |
|
346 | + $Spotter = new Spotter($this->db); |
|
347 | + $all = $Spotter->countAllMonthsLastYear($limit); |
|
348 | + } |
|
349 | + return $all; |
|
350 | 350 | } |
351 | 351 | |
352 | 352 | public function countAllDatesLastMonth() { |
353 | 353 | $query = "SELECT flight_date as date_name, cnt as date_count FROM stats_flight WHERE stats_type = 'month'"; |
354 | 354 | $query_data = array(); |
355 | - try { |
|
356 | - $sth = $this->db->prepare($query); |
|
357 | - $sth->execute($query_data); |
|
358 | - } catch(PDOException $e) { |
|
359 | - echo "error : ".$e->getMessage(); |
|
360 | - } |
|
361 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
362 | - if (empty($all)) { |
|
363 | - $Spotter = new Spotter($this->db); |
|
364 | - $all = $Spotter->countAllDatesLastMonth(); |
|
365 | - } |
|
366 | - return $all; |
|
355 | + try { |
|
356 | + $sth = $this->db->prepare($query); |
|
357 | + $sth->execute($query_data); |
|
358 | + } catch(PDOException $e) { |
|
359 | + echo "error : ".$e->getMessage(); |
|
360 | + } |
|
361 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
362 | + if (empty($all)) { |
|
363 | + $Spotter = new Spotter($this->db); |
|
364 | + $all = $Spotter->countAllDatesLastMonth(); |
|
365 | + } |
|
366 | + return $all; |
|
367 | 367 | } |
368 | 368 | public function countAllDatesLast7Days() { |
369 | 369 | global $globalDBdriver; |
@@ -373,64 +373,64 @@ discard block |
||
373 | 373 | $query = "SELECT flight_date as date_name, cnt as date_count FROM stats_flight WHERE stats_type = 'month' AND flight_date::timestamp >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '7 DAYS'"; |
374 | 374 | } |
375 | 375 | $query_data = array(); |
376 | - try { |
|
377 | - $sth = $this->db->prepare($query); |
|
378 | - $sth->execute($query_data); |
|
379 | - } catch(PDOException $e) { |
|
380 | - echo "error : ".$e->getMessage(); |
|
381 | - } |
|
382 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
383 | - if (empty($all)) { |
|
384 | - $Spotter = new Spotter($this->db); |
|
385 | - $all = $Spotter->countAllDatesLast7Days(); |
|
386 | - } |
|
387 | - return $all; |
|
376 | + try { |
|
377 | + $sth = $this->db->prepare($query); |
|
378 | + $sth->execute($query_data); |
|
379 | + } catch(PDOException $e) { |
|
380 | + echo "error : ".$e->getMessage(); |
|
381 | + } |
|
382 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
383 | + if (empty($all)) { |
|
384 | + $Spotter = new Spotter($this->db); |
|
385 | + $all = $Spotter->countAllDatesLast7Days(); |
|
386 | + } |
|
387 | + return $all; |
|
388 | 388 | } |
389 | 389 | public function countAllDates() { |
390 | 390 | $query = "SELECT flight_date as date_name, cnt as date_count FROM stats_flight WHERE stats_type = 'date'"; |
391 | 391 | $query_data = array(); |
392 | - try { |
|
393 | - $sth = $this->db->prepare($query); |
|
394 | - $sth->execute($query_data); |
|
395 | - } catch(PDOException $e) { |
|
396 | - echo "error : ".$e->getMessage(); |
|
397 | - } |
|
398 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
399 | - if (empty($all)) { |
|
400 | - $Spotter = new Spotter($this->db); |
|
401 | - $all = $Spotter->countAllDates(); |
|
402 | - } |
|
403 | - return $all; |
|
392 | + try { |
|
393 | + $sth = $this->db->prepare($query); |
|
394 | + $sth->execute($query_data); |
|
395 | + } catch(PDOException $e) { |
|
396 | + echo "error : ".$e->getMessage(); |
|
397 | + } |
|
398 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
399 | + if (empty($all)) { |
|
400 | + $Spotter = new Spotter($this->db); |
|
401 | + $all = $Spotter->countAllDates(); |
|
402 | + } |
|
403 | + return $all; |
|
404 | 404 | } |
405 | 405 | public function countAllMonths() { |
406 | - $query = "SELECT YEAR(stats_date) AS year_name,MONTH(stats_date) AS month_name, cnt as date_count FROM stats WHERE stats_type = 'flights_bymonth'"; |
|
407 | - try { |
|
408 | - $sth = $this->db->prepare($query); |
|
409 | - $sth->execute(); |
|
410 | - } catch(PDOException $e) { |
|
411 | - echo "error : ".$e->getMessage(); |
|
412 | - } |
|
413 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
414 | - if (empty($all)) { |
|
415 | - $Spotter = new Spotter($this->db); |
|
416 | - $all = $Spotter->countAllMonths(); |
|
417 | - } |
|
418 | - return $all; |
|
406 | + $query = "SELECT YEAR(stats_date) AS year_name,MONTH(stats_date) AS month_name, cnt as date_count FROM stats WHERE stats_type = 'flights_bymonth'"; |
|
407 | + try { |
|
408 | + $sth = $this->db->prepare($query); |
|
409 | + $sth->execute(); |
|
410 | + } catch(PDOException $e) { |
|
411 | + echo "error : ".$e->getMessage(); |
|
412 | + } |
|
413 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
414 | + if (empty($all)) { |
|
415 | + $Spotter = new Spotter($this->db); |
|
416 | + $all = $Spotter->countAllMonths(); |
|
417 | + } |
|
418 | + return $all; |
|
419 | 419 | } |
420 | 420 | public function countAllMilitaryMonths() { |
421 | - $query = "SELECT YEAR(stats_date) AS year_name,MONTH(stats_date) AS month_name, cnt as date_count FROM stats WHERE stats_type = 'military_flights_bymonth'"; |
|
422 | - try { |
|
423 | - $sth = $this->db->prepare($query); |
|
424 | - $sth->execute(); |
|
425 | - } catch(PDOException $e) { |
|
426 | - echo "error : ".$e->getMessage(); |
|
427 | - } |
|
428 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
429 | - if (empty($all)) { |
|
430 | - $Spotter = new Spotter($this->db); |
|
431 | - $all = $Spotter->countAllMilitaryMonths(); |
|
432 | - } |
|
433 | - return $all; |
|
421 | + $query = "SELECT YEAR(stats_date) AS year_name,MONTH(stats_date) AS month_name, cnt as date_count FROM stats WHERE stats_type = 'military_flights_bymonth'"; |
|
422 | + try { |
|
423 | + $sth = $this->db->prepare($query); |
|
424 | + $sth->execute(); |
|
425 | + } catch(PDOException $e) { |
|
426 | + echo "error : ".$e->getMessage(); |
|
427 | + } |
|
428 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
429 | + if (empty($all)) { |
|
430 | + $Spotter = new Spotter($this->db); |
|
431 | + $all = $Spotter->countAllMilitaryMonths(); |
|
432 | + } |
|
433 | + return $all; |
|
434 | 434 | } |
435 | 435 | public function countAllHours($orderby = 'hour',$limit = true) { |
436 | 436 | global $globalTimezone; |
@@ -438,18 +438,18 @@ discard block |
||
438 | 438 | else $query = "SELECT flight_date as hour_name, cnt as hour_count FROM stats_flight WHERE stats_type = 'hour'"; |
439 | 439 | if ($orderby == 'hour') $query .= " ORDER BY CAST(flight_date AS integer) ASC"; |
440 | 440 | if ($orderby == 'count') $query .= " ORDER BY hour_count DESC"; |
441 | - try { |
|
442 | - $sth = $this->db->prepare($query); |
|
443 | - $sth->execute(); |
|
444 | - } catch(PDOException $e) { |
|
445 | - echo "error : ".$e->getMessage(); |
|
446 | - } |
|
447 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
448 | - if (empty($all)) { |
|
449 | - $Spotter = new Spotter($this->db); |
|
450 | - $all = $Spotter->countAllHours($orderby,$limit); |
|
451 | - } |
|
452 | - return $all; |
|
441 | + try { |
|
442 | + $sth = $this->db->prepare($query); |
|
443 | + $sth->execute(); |
|
444 | + } catch(PDOException $e) { |
|
445 | + echo "error : ".$e->getMessage(); |
|
446 | + } |
|
447 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
448 | + if (empty($all)) { |
|
449 | + $Spotter = new Spotter($this->db); |
|
450 | + $all = $Spotter->countAllHours($orderby,$limit); |
|
451 | + } |
|
452 | + return $all; |
|
453 | 453 | } |
454 | 454 | |
455 | 455 | public function countOverallFlights() { |
@@ -512,157 +512,157 @@ discard block |
||
512 | 512 | public function getLast7DaysAirports($airport_icao = '') { |
513 | 513 | $query = "SELECT * FROM stats_airport WHERE stats_type = 'daily' AND airport_icao = :airport_icao ORDER BY date"; |
514 | 514 | $query_values = array(':airport_icao' => $airport_icao); |
515 | - try { |
|
516 | - $sth = $this->db->prepare($query); |
|
517 | - $sth->execute($query_values); |
|
518 | - } catch(PDOException $e) { |
|
519 | - echo "error : ".$e->getMessage(); |
|
520 | - } |
|
521 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
522 | - return $all; |
|
515 | + try { |
|
516 | + $sth = $this->db->prepare($query); |
|
517 | + $sth->execute($query_values); |
|
518 | + } catch(PDOException $e) { |
|
519 | + echo "error : ".$e->getMessage(); |
|
520 | + } |
|
521 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
522 | + return $all; |
|
523 | 523 | } |
524 | 524 | public function getStats($type) { |
525 | - $query = "SELECT * FROM stats WHERE stats_type = :type ORDER BY stats_date"; |
|
526 | - $query_values = array(':type' => $type); |
|
527 | - try { |
|
528 | - $sth = $this->db->prepare($query); |
|
529 | - $sth->execute($query_values); |
|
530 | - } catch(PDOException $e) { |
|
531 | - echo "error : ".$e->getMessage(); |
|
532 | - } |
|
533 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
534 | - return $all; |
|
535 | - } |
|
525 | + $query = "SELECT * FROM stats WHERE stats_type = :type ORDER BY stats_date"; |
|
526 | + $query_values = array(':type' => $type); |
|
527 | + try { |
|
528 | + $sth = $this->db->prepare($query); |
|
529 | + $sth->execute($query_values); |
|
530 | + } catch(PDOException $e) { |
|
531 | + echo "error : ".$e->getMessage(); |
|
532 | + } |
|
533 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
534 | + return $all; |
|
535 | + } |
|
536 | 536 | public function getSumStats($type,$year) { |
537 | - global $globalArchiveMonths, $globalDBdriver; |
|
538 | - if ($globalDBdriver == 'mysql') { |
|
539 | - $query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND YEAR(stats_date) = :year"; |
|
540 | - } else { |
|
541 | - $query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND EXTRACT(YEAR FROM stats_date) = :year"; |
|
542 | - } |
|
543 | - $query_values = array(':type' => $type, ':year' => $year); |
|
544 | - try { |
|
545 | - $sth = $this->db->prepare($query); |
|
546 | - $sth->execute($query_values); |
|
547 | - } catch(PDOException $e) { |
|
548 | - echo "error : ".$e->getMessage(); |
|
549 | - } |
|
550 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
551 | - return $all[0]['total']; |
|
552 | - } |
|
537 | + global $globalArchiveMonths, $globalDBdriver; |
|
538 | + if ($globalDBdriver == 'mysql') { |
|
539 | + $query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND YEAR(stats_date) = :year"; |
|
540 | + } else { |
|
541 | + $query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND EXTRACT(YEAR FROM stats_date) = :year"; |
|
542 | + } |
|
543 | + $query_values = array(':type' => $type, ':year' => $year); |
|
544 | + try { |
|
545 | + $sth = $this->db->prepare($query); |
|
546 | + $sth->execute($query_values); |
|
547 | + } catch(PDOException $e) { |
|
548 | + echo "error : ".$e->getMessage(); |
|
549 | + } |
|
550 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
551 | + return $all[0]['total']; |
|
552 | + } |
|
553 | 553 | public function getStatsTotal($type) { |
554 | - global $globalArchiveMonths, $globalDBdriver; |
|
555 | - if ($globalDBdriver == 'mysql') { |
|
554 | + global $globalArchiveMonths, $globalDBdriver; |
|
555 | + if ($globalDBdriver == 'mysql') { |
|
556 | 556 | $query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND stats_date < DATE_SUB(UTC_TIMESTAMP(), INTERVAL ".$globalArchiveMonths." MONTH)"; |
557 | 557 | } else { |
558 | 558 | $query = "SELECT SUM(cnt) as total FROM stats WHERE stats_type = :type AND stats_date < CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalArchiveMonths." MONTHS'"; |
559 | - } |
|
560 | - $query_values = array(':type' => $type); |
|
561 | - try { |
|
562 | - $sth = $this->db->prepare($query); |
|
563 | - $sth->execute($query_values); |
|
564 | - } catch(PDOException $e) { |
|
565 | - echo "error : ".$e->getMessage(); |
|
566 | - } |
|
567 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
568 | - return $all[0]['total']; |
|
569 | - } |
|
559 | + } |
|
560 | + $query_values = array(':type' => $type); |
|
561 | + try { |
|
562 | + $sth = $this->db->prepare($query); |
|
563 | + $sth->execute($query_values); |
|
564 | + } catch(PDOException $e) { |
|
565 | + echo "error : ".$e->getMessage(); |
|
566 | + } |
|
567 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
568 | + return $all[0]['total']; |
|
569 | + } |
|
570 | 570 | public function getStatsAircraftTotal() { |
571 | - global $globalArchiveMonths, $globalDBdriver; |
|
572 | - if ($globalDBdriver == 'mysql') { |
|
571 | + global $globalArchiveMonths, $globalDBdriver; |
|
572 | + if ($globalDBdriver == 'mysql') { |
|
573 | 573 | $query = "SELECT SUM(cnt) as total FROM stats_aircraft"; |
574 | - } else { |
|
574 | + } else { |
|
575 | 575 | $query = "SELECT SUM(cnt) as total FROM stats_aircraft"; |
576 | - } |
|
577 | - try { |
|
578 | - $sth = $this->db->prepare($query); |
|
579 | - $sth->execute(); |
|
580 | - } catch(PDOException $e) { |
|
581 | - echo "error : ".$e->getMessage(); |
|
582 | - } |
|
583 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
584 | - return $all[0]['total']; |
|
585 | - } |
|
576 | + } |
|
577 | + try { |
|
578 | + $sth = $this->db->prepare($query); |
|
579 | + $sth->execute(); |
|
580 | + } catch(PDOException $e) { |
|
581 | + echo "error : ".$e->getMessage(); |
|
582 | + } |
|
583 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
584 | + return $all[0]['total']; |
|
585 | + } |
|
586 | 586 | public function getStatsAirlineTotal() { |
587 | - global $globalArchiveMonths, $globalDBdriver; |
|
588 | - if ($globalDBdriver == 'mysql') { |
|
587 | + global $globalArchiveMonths, $globalDBdriver; |
|
588 | + if ($globalDBdriver == 'mysql') { |
|
589 | 589 | $query = "SELECT SUM(cnt) as total FROM stats_airline"; |
590 | - } else { |
|
590 | + } else { |
|
591 | 591 | $query = "SELECT SUM(cnt) as total FROM stats_airline"; |
592 | - } |
|
593 | - try { |
|
594 | - $sth = $this->db->prepare($query); |
|
595 | - $sth->execute(); |
|
596 | - } catch(PDOException $e) { |
|
597 | - echo "error : ".$e->getMessage(); |
|
598 | - } |
|
599 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
600 | - return $all[0]['total']; |
|
601 | - } |
|
592 | + } |
|
593 | + try { |
|
594 | + $sth = $this->db->prepare($query); |
|
595 | + $sth->execute(); |
|
596 | + } catch(PDOException $e) { |
|
597 | + echo "error : ".$e->getMessage(); |
|
598 | + } |
|
599 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
600 | + return $all[0]['total']; |
|
601 | + } |
|
602 | 602 | public function getStatsOwnerTotal() { |
603 | - global $globalArchiveMonths, $globalDBdriver; |
|
604 | - if ($globalDBdriver == 'mysql') { |
|
603 | + global $globalArchiveMonths, $globalDBdriver; |
|
604 | + if ($globalDBdriver == 'mysql') { |
|
605 | 605 | $query = "SELECT SUM(cnt) as total FROM stats_owner"; |
606 | 606 | } else { |
607 | 607 | $query = "SELECT SUM(cnt) as total FROM stats_owner"; |
608 | - } |
|
609 | - try { |
|
610 | - $sth = $this->db->prepare($query); |
|
611 | - $sth->execute(); |
|
612 | - } catch(PDOException $e) { |
|
613 | - echo "error : ".$e->getMessage(); |
|
614 | - } |
|
615 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
616 | - return $all[0]['total']; |
|
617 | - } |
|
608 | + } |
|
609 | + try { |
|
610 | + $sth = $this->db->prepare($query); |
|
611 | + $sth->execute(); |
|
612 | + } catch(PDOException $e) { |
|
613 | + echo "error : ".$e->getMessage(); |
|
614 | + } |
|
615 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
616 | + return $all[0]['total']; |
|
617 | + } |
|
618 | 618 | public function getStatsPilotTotal() { |
619 | - global $globalArchiveMonths, $globalDBdriver; |
|
620 | - if ($globalDBdriver == 'mysql') { |
|
621 | - $query = "SELECT SUM(cnt) as total FROM stats_pilot"; |
|
622 | - } else { |
|
623 | - $query = "SELECT SUM(cnt) as total FROM stats_pilot"; |
|
624 | - } |
|
625 | - try { |
|
626 | - $sth = $this->db->prepare($query); |
|
627 | - $sth->execute(); |
|
628 | - } catch(PDOException $e) { |
|
629 | - echo "error : ".$e->getMessage(); |
|
630 | - } |
|
631 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
632 | - return $all[0]['total']; |
|
633 | - } |
|
619 | + global $globalArchiveMonths, $globalDBdriver; |
|
620 | + if ($globalDBdriver == 'mysql') { |
|
621 | + $query = "SELECT SUM(cnt) as total FROM stats_pilot"; |
|
622 | + } else { |
|
623 | + $query = "SELECT SUM(cnt) as total FROM stats_pilot"; |
|
624 | + } |
|
625 | + try { |
|
626 | + $sth = $this->db->prepare($query); |
|
627 | + $sth->execute(); |
|
628 | + } catch(PDOException $e) { |
|
629 | + echo "error : ".$e->getMessage(); |
|
630 | + } |
|
631 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
632 | + return $all[0]['total']; |
|
633 | + } |
|
634 | 634 | |
635 | 635 | public function addStat($type,$cnt,$stats_date) { |
636 | 636 | global $globalDBdriver; |
637 | 637 | if ($globalDBdriver == 'mysql') { |
638 | 638 | $query = "INSERT INTO stats (stats_type,cnt,stats_date) VALUES (:type,:cnt,:stats_date) ON DUPLICATE KEY UPDATE cnt = :cnt"; |
639 | - } else { |
|
639 | + } else { |
|
640 | 640 | $query = "UPDATE stats SET cnt = :cnt WHERE stats_type = :type AND stats_date = :stats_date; INSERT INTO stats (stats_type,cnt,stats_date) SELECT :type,:cnt,:stats_date WHERE NOT EXISTS (SELECT 1 FROM stats WHERE stats_type = :type AND stats_date = :stats_date);"; |
641 | 641 | } |
642 | - $query_values = array(':type' => $type,':cnt' => $cnt,':stats_date' => $stats_date); |
|
643 | - try { |
|
644 | - $sth = $this->db->prepare($query); |
|
645 | - $sth->execute($query_values); |
|
646 | - } catch(PDOException $e) { |
|
647 | - return "error : ".$e->getMessage(); |
|
648 | - } |
|
649 | - } |
|
642 | + $query_values = array(':type' => $type,':cnt' => $cnt,':stats_date' => $stats_date); |
|
643 | + try { |
|
644 | + $sth = $this->db->prepare($query); |
|
645 | + $sth->execute($query_values); |
|
646 | + } catch(PDOException $e) { |
|
647 | + return "error : ".$e->getMessage(); |
|
648 | + } |
|
649 | + } |
|
650 | 650 | public function updateStat($type,$cnt,$stats_date) { |
651 | 651 | global $globalDBdriver; |
652 | 652 | if ($globalDBdriver == 'mysql') { |
653 | 653 | $query = "INSERT INTO stats (stats_type,cnt,stats_date) VALUES (:type,:cnt,:stats_date) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt, stats_date = :date"; |
654 | 654 | } else { |
655 | - //$query = "INSERT INTO stats (stats_type,cnt,stats_date) VALUES (:type,:cnt,:stats_date) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt, stats_date = :date"; |
|
655 | + //$query = "INSERT INTO stats (stats_type,cnt,stats_date) VALUES (:type,:cnt,:stats_date) ON DUPLICATE KEY UPDATE cnt = cnt+:cnt, stats_date = :date"; |
|
656 | 656 | $query = "UPDATE stats SET cnt = cnt+:cnt WHERE stats_type = :type AND stats_date = :stats_date; INSERT INTO stats (stats_type,cnt,stats_date) SELECT :type,:cnt,:stats_date WHERE NOT EXISTS (SELECT 1 FROM stats WHERE stats_type = :type AND stats_date = :stats_date);"; |
657 | - } |
|
658 | - $query_values = array(':type' => $type,':cnt' => $cnt,':stats_date' => $stats_date); |
|
659 | - try { |
|
660 | - $sth = $this->db->prepare($query); |
|
661 | - $sth->execute($query_values); |
|
662 | - } catch(PDOException $e) { |
|
663 | - return "error : ".$e->getMessage(); |
|
664 | - } |
|
665 | - } |
|
657 | + } |
|
658 | + $query_values = array(':type' => $type,':cnt' => $cnt,':stats_date' => $stats_date); |
|
659 | + try { |
|
660 | + $sth = $this->db->prepare($query); |
|
661 | + $sth->execute($query_values); |
|
662 | + } catch(PDOException $e) { |
|
663 | + return "error : ".$e->getMessage(); |
|
664 | + } |
|
665 | + } |
|
666 | 666 | public function getStatsSource($date,$stats_type = '') { |
667 | 667 | if ($stats_type == '') { |
668 | 668 | $query = "SELECT * FROM stats_source WHERE stats_date = :date ORDER BY source_name"; |
@@ -671,15 +671,15 @@ discard block |
||
671 | 671 | $query = "SELECT * FROM stats_source WHERE stats_date = :date AND stats_type = :stats_type ORDER BY source_name"; |
672 | 672 | $query_values = array(':date' => $date,':stats_type' => $stats_type); |
673 | 673 | } |
674 | - try { |
|
675 | - $sth = $this->db->prepare($query); |
|
676 | - $sth->execute($query_values); |
|
677 | - } catch(PDOException $e) { |
|
678 | - echo "error : ".$e->getMessage(); |
|
679 | - } |
|
680 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
681 | - return $all; |
|
682 | - } |
|
674 | + try { |
|
675 | + $sth = $this->db->prepare($query); |
|
676 | + $sth->execute($query_values); |
|
677 | + } catch(PDOException $e) { |
|
678 | + echo "error : ".$e->getMessage(); |
|
679 | + } |
|
680 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
681 | + return $all; |
|
682 | + } |
|
683 | 683 | |
684 | 684 | public function addStatSource($data,$source_name,$stats_type,$date) { |
685 | 685 | global $globalDBdriver; |
@@ -687,25 +687,25 @@ discard block |
||
687 | 687 | $query = "INSERT INTO stats_source (source_data,source_name,stats_type,stats_date) VALUES (:data,:source_name,:stats_type,:stats_date) ON DUPLICATE KEY UPDATE source_data = :data"; |
688 | 688 | } else { |
689 | 689 | $query = "UPDATE stats_source SET source_data = :data WHERE stats_date = :stats_date AND source_name = :source_name AND stats_type = :stats_type; INSERT INTO stats_source (source_data,source_name,stats_type,stats_date) SELECT :data,:source_name,:stats_type,:stats_date WHERE NOT EXISTS (SELECT 1 FROM stats_source WHERE stats_date = :stats_date AND source_name = :source_name AND stats_type = :stats_type);"; |
690 | - } |
|
691 | - $query_values = array(':data' => $data,':stats_date' => $date,':source_name' => $source_name,':stats_type' => $stats_type); |
|
692 | - try { |
|
693 | - $sth = $this->db->prepare($query); |
|
694 | - $sth->execute($query_values); |
|
695 | - } catch(PDOException $e) { |
|
696 | - return "error : ".$e->getMessage(); |
|
697 | - } |
|
698 | - } |
|
690 | + } |
|
691 | + $query_values = array(':data' => $data,':stats_date' => $date,':source_name' => $source_name,':stats_type' => $stats_type); |
|
692 | + try { |
|
693 | + $sth = $this->db->prepare($query); |
|
694 | + $sth->execute($query_values); |
|
695 | + } catch(PDOException $e) { |
|
696 | + return "error : ".$e->getMessage(); |
|
697 | + } |
|
698 | + } |
|
699 | 699 | public function addStatFlight($type,$date_name,$cnt) { |
700 | - $query = "INSERT INTO stats_flight (stats_type,flight_date,cnt) VALUES (:type,:flight_date,:cnt)"; |
|
701 | - $query_values = array(':type' => $type,':flight_date' => $date_name,':cnt' => $cnt); |
|
702 | - try { |
|
703 | - $sth = $this->db->prepare($query); |
|
704 | - $sth->execute($query_values); |
|
705 | - } catch(PDOException $e) { |
|
706 | - return "error : ".$e->getMessage(); |
|
707 | - } |
|
708 | - } |
|
700 | + $query = "INSERT INTO stats_flight (stats_type,flight_date,cnt) VALUES (:type,:flight_date,:cnt)"; |
|
701 | + $query_values = array(':type' => $type,':flight_date' => $date_name,':cnt' => $cnt); |
|
702 | + try { |
|
703 | + $sth = $this->db->prepare($query); |
|
704 | + $sth->execute($query_values); |
|
705 | + } catch(PDOException $e) { |
|
706 | + return "error : ".$e->getMessage(); |
|
707 | + } |
|
708 | + } |
|
709 | 709 | public function addStatAircraftRegistration($registration,$cnt,$aircraft_icao = '') { |
710 | 710 | global $globalDBdriver; |
711 | 711 | if ($globalDBdriver == 'mysql') { |
@@ -713,14 +713,14 @@ discard block |
||
713 | 713 | } else { |
714 | 714 | $query = "UPDATE stats_registration SET cnt = cnt+:cnt WHERE registration = :registration; INSERT INTO stats_registration (aircraft_icao,registration,cnt) SELECT :aircraft_icao,:registration,:cnt WHERE NOT EXISTS (SELECT 1 FROM stats_registration WHERE registration = :registration);"; |
715 | 715 | } |
716 | - $query_values = array(':aircraft_icao' => $aircraft_icao,':registration' => $registration,':cnt' => $cnt); |
|
717 | - try { |
|
718 | - $sth = $this->db->prepare($query); |
|
719 | - $sth->execute($query_values); |
|
720 | - } catch(PDOException $e) { |
|
721 | - return "error : ".$e->getMessage(); |
|
722 | - } |
|
723 | - } |
|
716 | + $query_values = array(':aircraft_icao' => $aircraft_icao,':registration' => $registration,':cnt' => $cnt); |
|
717 | + try { |
|
718 | + $sth = $this->db->prepare($query); |
|
719 | + $sth->execute($query_values); |
|
720 | + } catch(PDOException $e) { |
|
721 | + return "error : ".$e->getMessage(); |
|
722 | + } |
|
723 | + } |
|
724 | 724 | public function addStatCallsign($callsign_icao,$cnt,$airline_icao = '') { |
725 | 725 | global $globalDBdriver; |
726 | 726 | if ($globalDBdriver == 'mysql') { |
@@ -728,14 +728,14 @@ discard block |
||
728 | 728 | } else { |
729 | 729 | $query = "UPDATE stats_callsign SET cnt = cnt+:cnt WHERE callsign_icao = :callsign_icao; INSERT INTO stats_callsign (callsign_icao,airline_icao,cnt) SELECT :callsign_icao,:airline_icao,:cnt WHERE NOT EXISTS (SELECT 1 FROM stats_callsign WHERE callsign_icao = :callsign_icao);"; |
730 | 730 | } |
731 | - $query_values = array(':callsign_icao' => $callsign_icao,':airline_icao' => $airline_icao,':cnt' => $cnt); |
|
732 | - try { |
|
733 | - $sth = $this->db->prepare($query); |
|
734 | - $sth->execute($query_values); |
|
735 | - } catch(PDOException $e) { |
|
736 | - return "error : ".$e->getMessage(); |
|
737 | - } |
|
738 | - } |
|
731 | + $query_values = array(':callsign_icao' => $callsign_icao,':airline_icao' => $airline_icao,':cnt' => $cnt); |
|
732 | + try { |
|
733 | + $sth = $this->db->prepare($query); |
|
734 | + $sth->execute($query_values); |
|
735 | + } catch(PDOException $e) { |
|
736 | + return "error : ".$e->getMessage(); |
|
737 | + } |
|
738 | + } |
|
739 | 739 | public function addStatCountry($iso2,$iso3,$name,$cnt) { |
740 | 740 | global $globalDBdriver; |
741 | 741 | if ($globalDBdriver == 'mysql') { |
@@ -743,14 +743,14 @@ discard block |
||
743 | 743 | } else { |
744 | 744 | $query = "UPDATE stats_country SET cnt = cnt+:cnt WHERE iso2 = :iso2; INSERT INTO stats_country (iso2,iso3,name,cnt) SELECT :iso2,:iso3,:name,:cnt WHERE NOT EXISTS (SELECT 1 FROM stats_country WHERE iso2 = :iso2);"; |
745 | 745 | } |
746 | - $query_values = array(':iso2' => $iso2,':iso3' => $iso3,':name' => $name,':cnt' => $cnt); |
|
747 | - try { |
|
748 | - $sth = $this->db->prepare($query); |
|
749 | - $sth->execute($query_values); |
|
750 | - } catch(PDOException $e) { |
|
751 | - return "error : ".$e->getMessage(); |
|
752 | - } |
|
753 | - } |
|
746 | + $query_values = array(':iso2' => $iso2,':iso3' => $iso3,':name' => $name,':cnt' => $cnt); |
|
747 | + try { |
|
748 | + $sth = $this->db->prepare($query); |
|
749 | + $sth->execute($query_values); |
|
750 | + } catch(PDOException $e) { |
|
751 | + return "error : ".$e->getMessage(); |
|
752 | + } |
|
753 | + } |
|
754 | 754 | public function addStatAircraft($aircraft_icao,$cnt,$aircraft_name = '') { |
755 | 755 | global $globalDBdriver; |
756 | 756 | if ($globalDBdriver == 'mysql') { |
@@ -758,14 +758,14 @@ discard block |
||
758 | 758 | } else { |
759 | 759 | $query = "UPDATE stats_aircraft SET cnt = cnt+:cnt WHERE aircraft_icao = :aircraft_icao; INSERT INTO stats_aircraft (aircraft_icao,aircraft_name,cnt) SELECT :aircraft_icao,:aircraft_name,:cnt WHERE NOT EXISTS (SELECT 1 FROM stats_aircraft WHERE aircraft_icao = :aircraft_icao);"; |
760 | 760 | } |
761 | - $query_values = array(':aircraft_icao' => $aircraft_icao,':aircraft_name' => $aircraft_name,':cnt' => $cnt); |
|
762 | - try { |
|
763 | - $sth = $this->db->prepare($query); |
|
764 | - $sth->execute($query_values); |
|
765 | - } catch(PDOException $e) { |
|
766 | - return "error : ".$e->getMessage(); |
|
767 | - } |
|
768 | - } |
|
761 | + $query_values = array(':aircraft_icao' => $aircraft_icao,':aircraft_name' => $aircraft_name,':cnt' => $cnt); |
|
762 | + try { |
|
763 | + $sth = $this->db->prepare($query); |
|
764 | + $sth->execute($query_values); |
|
765 | + } catch(PDOException $e) { |
|
766 | + return "error : ".$e->getMessage(); |
|
767 | + } |
|
768 | + } |
|
769 | 769 | public function addStatAirline($airline_icao,$cnt,$airline_name = '') { |
770 | 770 | global $globalDBdriver; |
771 | 771 | if ($globalDBdriver == 'mysql') { |
@@ -773,14 +773,14 @@ discard block |
||
773 | 773 | } else { |
774 | 774 | $query = "UPDATE stats_airline SET cnt = cnt+:cnt WHERE airline_icao = :airline_icao; INSERT INTO stats_airline (airline_icao,airline_name,cnt) SELECT :airline_icao,:airline_name,:cnt WHERE NOT EXISTS (SELECT 1 FROM stats_airline WHERE airline_icao = :airline_icao);"; |
775 | 775 | } |
776 | - $query_values = array(':airline_icao' => $airline_icao,':airline_name' => $airline_name,':cnt' => $cnt); |
|
777 | - try { |
|
778 | - $sth = $this->db->prepare($query); |
|
779 | - $sth->execute($query_values); |
|
780 | - } catch(PDOException $e) { |
|
781 | - return "error : ".$e->getMessage(); |
|
782 | - } |
|
783 | - } |
|
776 | + $query_values = array(':airline_icao' => $airline_icao,':airline_name' => $airline_name,':cnt' => $cnt); |
|
777 | + try { |
|
778 | + $sth = $this->db->prepare($query); |
|
779 | + $sth->execute($query_values); |
|
780 | + } catch(PDOException $e) { |
|
781 | + return "error : ".$e->getMessage(); |
|
782 | + } |
|
783 | + } |
|
784 | 784 | public function addStatOwner($owner_name,$cnt) { |
785 | 785 | global $globalDBdriver; |
786 | 786 | if ($globalDBdriver == 'mysql') { |
@@ -788,14 +788,14 @@ discard block |
||
788 | 788 | } else { |
789 | 789 | $query = "UPDATE stats_owner SET cnt = cnt+:cnt WHERE owner_name = :owner_name; INSERT INTO stats_owner (owner_name,cnt) SELECT :owner_name,:cnt WHERE NOT EXISTS (SELECT 1 FROM stats_owner WHERE owner_name = :owner_name);"; |
790 | 790 | } |
791 | - $query_values = array(':owner_name' => $owner_name,':cnt' => $cnt); |
|
792 | - try { |
|
793 | - $sth = $this->db->prepare($query); |
|
794 | - $sth->execute($query_values); |
|
795 | - } catch(PDOException $e) { |
|
796 | - return "error : ".$e->getMessage(); |
|
797 | - } |
|
798 | - } |
|
791 | + $query_values = array(':owner_name' => $owner_name,':cnt' => $cnt); |
|
792 | + try { |
|
793 | + $sth = $this->db->prepare($query); |
|
794 | + $sth->execute($query_values); |
|
795 | + } catch(PDOException $e) { |
|
796 | + return "error : ".$e->getMessage(); |
|
797 | + } |
|
798 | + } |
|
799 | 799 | public function addStatPilot($pilot_id,$cnt) { |
800 | 800 | global $globalDBdriver; |
801 | 801 | if ($globalDBdriver == 'mysql') { |
@@ -803,14 +803,14 @@ discard block |
||
803 | 803 | } else { |
804 | 804 | $query = "UPDATE stats_pilot SET cnt = cnt+:cnt WHERE pilot_id = :pilot_id; INSERT INTO stats_pilot (pilot_id,cnt) SELECT :pilot_id,:cnt WHERE NOT EXISTS (SELECT 1 FROM stats_pilot WHERE pilot_id = :pilot_id);"; |
805 | 805 | } |
806 | - $query_values = array(':pilot_id' => $pilot_id,':cnt' => $cnt); |
|
807 | - try { |
|
808 | - $sth = $this->db->prepare($query); |
|
809 | - $sth->execute($query_values); |
|
810 | - } catch(PDOException $e) { |
|
811 | - return "error : ".$e->getMessage(); |
|
812 | - } |
|
813 | - } |
|
806 | + $query_values = array(':pilot_id' => $pilot_id,':cnt' => $cnt); |
|
807 | + try { |
|
808 | + $sth = $this->db->prepare($query); |
|
809 | + $sth->execute($query_values); |
|
810 | + } catch(PDOException $e) { |
|
811 | + return "error : ".$e->getMessage(); |
|
812 | + } |
|
813 | + } |
|
814 | 814 | public function addStatDepartureAirports($airport_icao,$airport_name,$airport_city,$airport_country,$departure) { |
815 | 815 | global $globalDBdriver; |
816 | 816 | if ($globalDBdriver == 'mysql') { |
@@ -818,14 +818,14 @@ discard block |
||
818 | 818 | } else { |
819 | 819 | $query = "UPDATE stats_airport SET departure = departure+:departure WHERE airport_icao = :airport_icao AND stats_type = 'yearly'; INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,departure,stats_type,date) SELECT :airport_icao,:airport_name,:airport_city,:airport_country,:departure,'yearly',:date WHERE NOT EXISTS (SELECT 1 FROM stats_airline WHERE airport_icao = :airport_icao AND stats_type = 'yearly');"; |
820 | 820 | } |
821 | - $query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':departure' => $departure,':date' => date('Y').'-01-01 00:00:00'); |
|
822 | - try { |
|
823 | - $sth = $this->db->prepare($query); |
|
824 | - $sth->execute($query_values); |
|
825 | - } catch(PDOException $e) { |
|
826 | - return "error : ".$e->getMessage(); |
|
827 | - } |
|
828 | - } |
|
821 | + $query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':departure' => $departure,':date' => date('Y').'-01-01 00:00:00'); |
|
822 | + try { |
|
823 | + $sth = $this->db->prepare($query); |
|
824 | + $sth->execute($query_values); |
|
825 | + } catch(PDOException $e) { |
|
826 | + return "error : ".$e->getMessage(); |
|
827 | + } |
|
828 | + } |
|
829 | 829 | public function addStatDepartureAirportsDaily($date,$airport_icao,$airport_name,$airport_city,$airport_country,$departure) { |
830 | 830 | global $globalDBdriver; |
831 | 831 | if ($globalDBdriver == 'mysql') { |
@@ -833,14 +833,14 @@ discard block |
||
833 | 833 | } else { |
834 | 834 | $query = "UPDATE stats_airport SET departure = departure+:departure WHERE airport_icao = :airport_icao AND stats_type = 'daily'; INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,departure,stats_type,date) SELECT :airport_icao,:airport_name,:airport_city,:airport_country,:departure,'daily',:date WHERE NOT EXISTS (SELECT 1 FROM stats_airline WHERE airport_icao = :airport_icao AND stats_type = 'daily');"; |
835 | 835 | } |
836 | - $query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':departure' => $departure,':date' => $date); |
|
837 | - try { |
|
838 | - $sth = $this->db->prepare($query); |
|
839 | - $sth->execute($query_values); |
|
840 | - } catch(PDOException $e) { |
|
841 | - return "error : ".$e->getMessage(); |
|
842 | - } |
|
843 | - } |
|
836 | + $query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':departure' => $departure,':date' => $date); |
|
837 | + try { |
|
838 | + $sth = $this->db->prepare($query); |
|
839 | + $sth->execute($query_values); |
|
840 | + } catch(PDOException $e) { |
|
841 | + return "error : ".$e->getMessage(); |
|
842 | + } |
|
843 | + } |
|
844 | 844 | public function addStatArrivalAirports($airport_icao,$airport_name,$airport_city,$airport_country,$arrival) { |
845 | 845 | global $globalDBdriver; |
846 | 846 | if ($globalDBdriver == 'mysql') { |
@@ -848,14 +848,14 @@ discard block |
||
848 | 848 | } else { |
849 | 849 | $query = "UPDATE stats_airport SET arrival = arrival+:arrival WHERE airport_icao = :airport_icao AND stats_type = 'yearly'; INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,arrival,stats_type,date) SELECT :airport_icao,:airport_name,:airport_city,:airport_country,:arrival,'yearly',:date WHERE NOT EXISTS (SELECT 1 FROM stats_airline WHERE airport_icao = :airport_icao AND stats_type = 'yearly');"; |
850 | 850 | } |
851 | - $query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':arrival' => $arrival,':date' => date('Y').'-01-01 00:00:00'); |
|
852 | - try { |
|
853 | - $sth = $this->db->prepare($query); |
|
854 | - $sth->execute($query_values); |
|
855 | - } catch(PDOException $e) { |
|
856 | - return "error : ".$e->getMessage(); |
|
857 | - } |
|
858 | - } |
|
851 | + $query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':arrival' => $arrival,':date' => date('Y').'-01-01 00:00:00'); |
|
852 | + try { |
|
853 | + $sth = $this->db->prepare($query); |
|
854 | + $sth->execute($query_values); |
|
855 | + } catch(PDOException $e) { |
|
856 | + return "error : ".$e->getMessage(); |
|
857 | + } |
|
858 | + } |
|
859 | 859 | public function addStatArrivalAirportsDaily($date,$airport_icao,$airport_name,$airport_city,$airport_country,$arrival) { |
860 | 860 | global $globalDBdriver; |
861 | 861 | if ($globalDBdriver == 'mysql') { |
@@ -863,55 +863,55 @@ discard block |
||
863 | 863 | } else { |
864 | 864 | $query = "UPDATE stats_airport SET arrival = arrival+:arrival WHERE airport_icao = :airport_icao AND stats_type = 'daily'; INSERT INTO stats_airport (airport_icao,airport_name,airport_city,airport_country,arrival,stats_type,date) SELECT :airport_icao,:airport_name,:airport_city,:airport_country,:arrival,'yearly',:date WHERE NOT EXISTS (SELECT 1 FROM stats_airline WHERE airport_icao = :airport_icao AND stats_type = 'daily');"; |
865 | 865 | } |
866 | - $query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':arrival' => $arrival, ':date' => $date); |
|
867 | - try { |
|
868 | - $sth = $this->db->prepare($query); |
|
869 | - $sth->execute($query_values); |
|
870 | - } catch(PDOException $e) { |
|
871 | - return "error : ".$e->getMessage(); |
|
872 | - } |
|
873 | - } |
|
866 | + $query_values = array(':airport_icao' => $airport_icao,':airport_name' => $airport_name,':airport_city' => $airport_city,':airport_country' => $airport_country,':arrival' => $arrival, ':date' => $date); |
|
867 | + try { |
|
868 | + $sth = $this->db->prepare($query); |
|
869 | + $sth->execute($query_values); |
|
870 | + } catch(PDOException $e) { |
|
871 | + return "error : ".$e->getMessage(); |
|
872 | + } |
|
873 | + } |
|
874 | 874 | |
875 | 875 | public function deleteStat($id) { |
876 | - $query = "DELETE FROM stats WHERE stats_id = :id"; |
|
877 | - $query_values = array(':id' => $id); |
|
878 | - try { |
|
879 | - $sth = $this->db->prepare($query); |
|
880 | - $sth->execute($query_values); |
|
881 | - } catch(PDOException $e) { |
|
882 | - return "error : ".$e->getMessage(); |
|
883 | - } |
|
884 | - } |
|
876 | + $query = "DELETE FROM stats WHERE stats_id = :id"; |
|
877 | + $query_values = array(':id' => $id); |
|
878 | + try { |
|
879 | + $sth = $this->db->prepare($query); |
|
880 | + $sth->execute($query_values); |
|
881 | + } catch(PDOException $e) { |
|
882 | + return "error : ".$e->getMessage(); |
|
883 | + } |
|
884 | + } |
|
885 | 885 | public function deleteStatFlight($type) { |
886 | - $query = "DELETE FROM stats_flight WHERE stats_type = :type"; |
|
887 | - $query_values = array(':type' => $type); |
|
888 | - try { |
|
889 | - $sth = $this->db->prepare($query); |
|
890 | - $sth->execute($query_values); |
|
891 | - } catch(PDOException $e) { |
|
892 | - return "error : ".$e->getMessage(); |
|
893 | - } |
|
894 | - } |
|
886 | + $query = "DELETE FROM stats_flight WHERE stats_type = :type"; |
|
887 | + $query_values = array(':type' => $type); |
|
888 | + try { |
|
889 | + $sth = $this->db->prepare($query); |
|
890 | + $sth->execute($query_values); |
|
891 | + } catch(PDOException $e) { |
|
892 | + return "error : ".$e->getMessage(); |
|
893 | + } |
|
894 | + } |
|
895 | 895 | public function deleteStatAirport($type) { |
896 | - $query = "DELETE FROM stats_airport WHERE stats_type = :type"; |
|
897 | - $query_values = array(':type' => $type); |
|
898 | - try { |
|
899 | - $sth = $this->db->prepare($query); |
|
900 | - $sth->execute($query_values); |
|
901 | - } catch(PDOException $e) { |
|
902 | - return "error : ".$e->getMessage(); |
|
903 | - } |
|
904 | - } |
|
896 | + $query = "DELETE FROM stats_airport WHERE stats_type = :type"; |
|
897 | + $query_values = array(':type' => $type); |
|
898 | + try { |
|
899 | + $sth = $this->db->prepare($query); |
|
900 | + $sth->execute($query_values); |
|
901 | + } catch(PDOException $e) { |
|
902 | + return "error : ".$e->getMessage(); |
|
903 | + } |
|
904 | + } |
|
905 | 905 | |
906 | - public function addOldStats() { |
|
907 | - global $globalArchiveMonths, $globalArchive, $globalArchiveYear, $globalDBdriver; |
|
908 | - $Common = new Common(); |
|
909 | - $Connection = new Connection(); |
|
910 | - date_default_timezone_set('UTC'); |
|
911 | - $last_update = $this->getLastStatsUpdate('last_update_stats'); |
|
906 | + public function addOldStats() { |
|
907 | + global $globalArchiveMonths, $globalArchive, $globalArchiveYear, $globalDBdriver; |
|
908 | + $Common = new Common(); |
|
909 | + $Connection = new Connection(); |
|
910 | + date_default_timezone_set('UTC'); |
|
911 | + $last_update = $this->getLastStatsUpdate('last_update_stats'); |
|
912 | 912 | //print_r($last_update); |
913 | 913 | $flightsbymonth = $this->getStats('flights_by_month'); |
914 | - if (empty($last_update) && empty($flightsbymonth)) { |
|
914 | + if (empty($last_update) && empty($flightsbymonth)) { |
|
915 | 915 | // Initial update |
916 | 916 | $Spotter = new Spotter($this->db); |
917 | 917 | $alldata = $Spotter->countAllMonths(); |
@@ -1052,46 +1052,46 @@ discard block |
||
1052 | 1052 | $this->addStatPilot($number['pilot_id'],$number['pilot_count']); |
1053 | 1053 | } |
1054 | 1054 | $pall = $Spotter->countAllDepartureAirports(false,$globalArchiveMonths); |
1055 | - $dall = $Spotter->countAllDetectedDepartureAirports(false,$globalArchiveMonths); |
|
1056 | - $alldata = array(); |
|
1057 | - foreach ($pall as $value) { |
|
1058 | - $icao = $value['airport_departure_icao']; |
|
1059 | - $alldata[$icao] = $value; |
|
1060 | - } |
|
1061 | - foreach ($dall as $value) { |
|
1062 | - $icao = $value['airport_departure_icao']; |
|
1063 | - if (isset($alldata[$icao])) { |
|
1064 | - $alldata[$icao]['airport_departure_icao_count'] = $alldata[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count']; |
|
1065 | - } else $alldata[$icao] = $value; |
|
1066 | - } |
|
1067 | - $count = array(); |
|
1068 | - foreach ($alldata as $key => $row) { |
|
1069 | - $count[$key] = $row['airport_departure_icao_count']; |
|
1070 | - } |
|
1071 | - array_multisort($count,SORT_DESC,$alldata); |
|
1055 | + $dall = $Spotter->countAllDetectedDepartureAirports(false,$globalArchiveMonths); |
|
1056 | + $alldata = array(); |
|
1057 | + foreach ($pall as $value) { |
|
1058 | + $icao = $value['airport_departure_icao']; |
|
1059 | + $alldata[$icao] = $value; |
|
1060 | + } |
|
1061 | + foreach ($dall as $value) { |
|
1062 | + $icao = $value['airport_departure_icao']; |
|
1063 | + if (isset($alldata[$icao])) { |
|
1064 | + $alldata[$icao]['airport_departure_icao_count'] = $alldata[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count']; |
|
1065 | + } else $alldata[$icao] = $value; |
|
1066 | + } |
|
1067 | + $count = array(); |
|
1068 | + foreach ($alldata as $key => $row) { |
|
1069 | + $count[$key] = $row['airport_departure_icao_count']; |
|
1070 | + } |
|
1071 | + array_multisort($count,SORT_DESC,$alldata); |
|
1072 | 1072 | |
1073 | 1073 | //print_r($alldate); |
1074 | 1074 | foreach ($alldata as $number) { |
1075 | 1075 | $this->addStatDepartureAirports($number['airport_departure_icao'],$number['airport_departure_name'],$number['airport_departure_city'],$number['airport_departure_country'],$number['airport_departure_icao_count']); |
1076 | 1076 | } |
1077 | 1077 | $pdata = $Spotter->countAllArrivalAirports(false,$globalArchiveMonths); |
1078 | - $dall = $Spotter->countAllDetectedArrivalAirports(false,$globalArchiveMonths); |
|
1079 | - $alldata = array(); |
|
1080 | - foreach ($pdata as $value) { |
|
1081 | - $icao = $value['airport_arrival_icao']; |
|
1082 | - $alldata[$icao] = $value; |
|
1083 | - } |
|
1084 | - foreach ($dall as $value) { |
|
1085 | - $icao = $value['airport_arrival_icao']; |
|
1086 | - if (isset($alldata[$icao])) { |
|
1087 | - $alldata[$icao]['airport_arrival_icao_count'] = $alldata[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count']; |
|
1088 | - } else $alldata[$icao] = $value; |
|
1089 | - } |
|
1090 | - $count = array(); |
|
1091 | - foreach ($alldata as $key => $row) { |
|
1092 | - $count[$key] = $row['airport_arrival_icao_count']; |
|
1093 | - } |
|
1094 | - array_multisort($count,SORT_DESC,$alldata); |
|
1078 | + $dall = $Spotter->countAllDetectedArrivalAirports(false,$globalArchiveMonths); |
|
1079 | + $alldata = array(); |
|
1080 | + foreach ($pdata as $value) { |
|
1081 | + $icao = $value['airport_arrival_icao']; |
|
1082 | + $alldata[$icao] = $value; |
|
1083 | + } |
|
1084 | + foreach ($dall as $value) { |
|
1085 | + $icao = $value['airport_arrival_icao']; |
|
1086 | + if (isset($alldata[$icao])) { |
|
1087 | + $alldata[$icao]['airport_arrival_icao_count'] = $alldata[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count']; |
|
1088 | + } else $alldata[$icao] = $value; |
|
1089 | + } |
|
1090 | + $count = array(); |
|
1091 | + foreach ($alldata as $key => $row) { |
|
1092 | + $count[$key] = $row['airport_arrival_icao_count']; |
|
1093 | + } |
|
1094 | + array_multisort($count,SORT_DESC,$alldata); |
|
1095 | 1095 | foreach ($alldata as $number) { |
1096 | 1096 | $this->addStatArrivalAirports($number['airport_arrival_icao'],$number['airport_arrival_name'],$number['airport_arrival_city'],$number['airport_arrival_country'],$number['airport_arrival_icao_count']); |
1097 | 1097 | } |
@@ -1159,46 +1159,46 @@ discard block |
||
1159 | 1159 | $this->addStatPilot($number['pilot_id'],$number['pilot_count']); |
1160 | 1160 | } |
1161 | 1161 | $pall = $Spotter->countAllDepartureAirports(false,0,$last_update_day); |
1162 | - $dall = $Spotter->countAllDetectedDepartureAirports(false,0,$last_update_day); |
|
1163 | - $alldata = array(); |
|
1164 | - foreach ($pall as $value) { |
|
1165 | - $icao = $value['airport_departure_icao']; |
|
1166 | - $alldata[$icao] = $value; |
|
1167 | - } |
|
1168 | - foreach ($dall as $value) { |
|
1169 | - $icao = $value['airport_departure_icao']; |
|
1170 | - if (isset($alldata[$icao])) { |
|
1171 | - $alldata[$icao]['airport_departure_icao_count'] = $alldata[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count']; |
|
1172 | - } else $alldata[$icao] = $value; |
|
1162 | + $dall = $Spotter->countAllDetectedDepartureAirports(false,0,$last_update_day); |
|
1163 | + $alldata = array(); |
|
1164 | + foreach ($pall as $value) { |
|
1165 | + $icao = $value['airport_departure_icao']; |
|
1166 | + $alldata[$icao] = $value; |
|
1167 | + } |
|
1168 | + foreach ($dall as $value) { |
|
1169 | + $icao = $value['airport_departure_icao']; |
|
1170 | + if (isset($alldata[$icao])) { |
|
1171 | + $alldata[$icao]['airport_departure_icao_count'] = $alldata[$icao]['airport_departure_icao_count'] + $value['airport_departure_icao_count']; |
|
1172 | + } else $alldata[$icao] = $value; |
|
1173 | 1173 | } |
1174 | - $count = array(); |
|
1175 | - foreach ($alldata as $key => $row) { |
|
1176 | - $count[$key] = $row['airport_departure_icao_count']; |
|
1177 | - } |
|
1174 | + $count = array(); |
|
1175 | + foreach ($alldata as $key => $row) { |
|
1176 | + $count[$key] = $row['airport_departure_icao_count']; |
|
1177 | + } |
|
1178 | 1178 | array_multisort($count,SORT_DESC,$alldata); |
1179 | 1179 | |
1180 | 1180 | foreach ($alldata as $number) { |
1181 | 1181 | $this->addStatDepartureAirports($number['airport_departure_icao'],$number['airport_departure_name'],$number['airport_departure_city'],$number['airport_departure_country'],$number['airport_departure_icao_count']); |
1182 | 1182 | } |
1183 | 1183 | $pall = $Spotter->countAllArrivalAirports(false,0,$last_update_day); |
1184 | - $dall = $Spotter->countAllDetectedArrivalAirports(false,0,$last_update_day); |
|
1185 | - $alldata = array(); |
|
1186 | - foreach ($pall as $value) { |
|
1187 | - $icao = $value['airport_arrival_icao']; |
|
1188 | - $alldata[$icao] = $value; |
|
1189 | - } |
|
1190 | - foreach ($dall as $value) { |
|
1191 | - $icao = $value['airport_arrival_icao']; |
|
1192 | - if (isset($alldata[$icao])) { |
|
1193 | - $alldata[$icao]['airport_arrival_icao_count'] = $alldata[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count']; |
|
1194 | - } else $alldata[$icao] = $value; |
|
1195 | - } |
|
1196 | - $count = array(); |
|
1197 | - foreach ($alldata as $key => $row) { |
|
1198 | - $count[$key] = $row['airport_arrival_icao_count']; |
|
1199 | - } |
|
1200 | - array_multisort($count,SORT_DESC,$alldata); |
|
1201 | - foreach ($alldata as $number) { |
|
1184 | + $dall = $Spotter->countAllDetectedArrivalAirports(false,0,$last_update_day); |
|
1185 | + $alldata = array(); |
|
1186 | + foreach ($pall as $value) { |
|
1187 | + $icao = $value['airport_arrival_icao']; |
|
1188 | + $alldata[$icao] = $value; |
|
1189 | + } |
|
1190 | + foreach ($dall as $value) { |
|
1191 | + $icao = $value['airport_arrival_icao']; |
|
1192 | + if (isset($alldata[$icao])) { |
|
1193 | + $alldata[$icao]['airport_arrival_icao_count'] = $alldata[$icao]['airport_arrival_icao_count'] + $value['airport_arrival_icao_count']; |
|
1194 | + } else $alldata[$icao] = $value; |
|
1195 | + } |
|
1196 | + $count = array(); |
|
1197 | + foreach ($alldata as $key => $row) { |
|
1198 | + $count[$key] = $row['airport_arrival_icao_count']; |
|
1199 | + } |
|
1200 | + array_multisort($count,SORT_DESC,$alldata); |
|
1201 | + foreach ($alldata as $number) { |
|
1202 | 1202 | $this->addStatArrivalAirports($number['airport_arrival_icao'],$number['airport_arrival_name'],$number['airport_arrival_city'],$number['airport_arrival_country'],$number['airport_arrival_icao_count']); |
1203 | 1203 | } |
1204 | 1204 | if ($Connection->tableExists('countries')) { |
@@ -1248,45 +1248,45 @@ discard block |
||
1248 | 1248 | echo '...Departure'."\n"; |
1249 | 1249 | $this->deleteStatAirport('daily'); |
1250 | 1250 | $pall = $Spotter->getLast7DaysAirportsDeparture(); |
1251 | - $dall = $Spotter->getLast7DaysDetectedAirportsDeparture(); |
|
1252 | - $alldata = array(); |
|
1253 | - foreach ($pall as $value) { |
|
1254 | - $icao = $value['departure_airport_icao']; |
|
1255 | - $alldata[$icao] = $value; |
|
1256 | - } |
|
1257 | - foreach ($dall as $value) { |
|
1258 | - $icao = $value['departure_airport_icao']; |
|
1259 | - if (isset($alldata[$icao])) { |
|
1260 | - $alldata[$icao]['departure_airport_count'] = $alldata[$icao]['departure_airport_count'] + $value['departure_airport_count']; |
|
1261 | - } else $alldata[$icao] = $value; |
|
1262 | - } |
|
1263 | - $count = array(); |
|
1264 | - foreach ($alldata as $key => $row) { |
|
1265 | - $count[$key] = $row['departure_airport_count']; |
|
1266 | - } |
|
1267 | - array_multisort($count,SORT_DESC,$alldata); |
|
1251 | + $dall = $Spotter->getLast7DaysDetectedAirportsDeparture(); |
|
1252 | + $alldata = array(); |
|
1253 | + foreach ($pall as $value) { |
|
1254 | + $icao = $value['departure_airport_icao']; |
|
1255 | + $alldata[$icao] = $value; |
|
1256 | + } |
|
1257 | + foreach ($dall as $value) { |
|
1258 | + $icao = $value['departure_airport_icao']; |
|
1259 | + if (isset($alldata[$icao])) { |
|
1260 | + $alldata[$icao]['departure_airport_count'] = $alldata[$icao]['departure_airport_count'] + $value['departure_airport_count']; |
|
1261 | + } else $alldata[$icao] = $value; |
|
1262 | + } |
|
1263 | + $count = array(); |
|
1264 | + foreach ($alldata as $key => $row) { |
|
1265 | + $count[$key] = $row['departure_airport_count']; |
|
1266 | + } |
|
1267 | + array_multisort($count,SORT_DESC,$alldata); |
|
1268 | 1268 | foreach ($alldata as $number) { |
1269 | 1269 | $this->addStatDepartureAirportsDaily($number['date'],$number['departure_airport_icao'],$number['departure_airport_name'],$number['departure_airport_city'],$number['departure_airport_country'],$number['departure_airport_count']); |
1270 | 1270 | } |
1271 | 1271 | echo '...Arrival'."\n"; |
1272 | 1272 | $pall = $Spotter->getLast7DaysAirportsArrival(); |
1273 | - $dall = $Spotter->getLast7DaysDetectedAirportsArrival(); |
|
1274 | - $alldata = array(); |
|
1275 | - foreach ($pall as $value) { |
|
1276 | - $icao = $value['arrival_airport_icao']; |
|
1277 | - $alldata[$icao] = $value; |
|
1278 | - } |
|
1279 | - foreach ($dall as $value) { |
|
1280 | - $icao = $value['arrival_airport_icao']; |
|
1281 | - if (isset($alldata[$icao])) { |
|
1282 | - $alldata[$icao]['arrival_airport_icao_count'] = $alldata[$icao]['arrival_airport_count'] + $value['arrival_airport_count']; |
|
1283 | - } else $alldata[$icao] = $value; |
|
1284 | - } |
|
1285 | - $count = array(); |
|
1286 | - foreach ($alldata as $key => $row) { |
|
1287 | - $count[$key] = $row['arrival_airport_count']; |
|
1288 | - } |
|
1289 | - array_multisort($count,SORT_DESC,$alldata); |
|
1273 | + $dall = $Spotter->getLast7DaysDetectedAirportsArrival(); |
|
1274 | + $alldata = array(); |
|
1275 | + foreach ($pall as $value) { |
|
1276 | + $icao = $value['arrival_airport_icao']; |
|
1277 | + $alldata[$icao] = $value; |
|
1278 | + } |
|
1279 | + foreach ($dall as $value) { |
|
1280 | + $icao = $value['arrival_airport_icao']; |
|
1281 | + if (isset($alldata[$icao])) { |
|
1282 | + $alldata[$icao]['arrival_airport_icao_count'] = $alldata[$icao]['arrival_airport_count'] + $value['arrival_airport_count']; |
|
1283 | + } else $alldata[$icao] = $value; |
|
1284 | + } |
|
1285 | + $count = array(); |
|
1286 | + foreach ($alldata as $key => $row) { |
|
1287 | + $count[$key] = $row['arrival_airport_count']; |
|
1288 | + } |
|
1289 | + array_multisort($count,SORT_DESC,$alldata); |
|
1290 | 1290 | |
1291 | 1291 | foreach ($alldata as $number) { |
1292 | 1292 | $this->addStatArrivalAirportsDaily($number['date'],$number['arrival_airport_icao'],$number['arrival_airport_name'],$number['arrival_airport_city'],$number['arrival_airport_country'],$number['arrival_airport_count']); |
@@ -7,107 +7,107 @@ discard block |
||
7 | 7 | public $db; |
8 | 8 | |
9 | 9 | protected $texts = Array( |
10 | - 'MI' => 'Shallow', |
|
11 | - 'PR' => 'Partial', |
|
12 | - 'BC' => 'Low drifting', |
|
13 | - 'BL' => 'Blowing', |
|
14 | - 'SH' => 'Showers', |
|
15 | - 'TS' => 'Thunderstorm', |
|
16 | - 'FZ' => 'Freezing', |
|
17 | - 'DZ' => 'Drizzle', |
|
18 | - 'RA' => 'Rain', |
|
19 | - 'SN' => 'Snow', |
|
20 | - 'SG' => 'Snow Grains', |
|
21 | - 'IC' => 'Ice crystals', |
|
22 | - 'PL' => 'Ice pellets', |
|
23 | - 'GR' => 'Hail', |
|
24 | - 'GS' => 'Small hail', |
|
25 | - 'UP' => 'Unknown', |
|
26 | - 'BR' => 'Mist', |
|
27 | - 'FG' => 'Fog', |
|
28 | - 'FU' => 'Smoke', |
|
29 | - 'VA' => 'Volcanic ash', |
|
30 | - 'DU' => 'Widespread dust', |
|
31 | - 'SA' => 'Sand', |
|
32 | - 'HZ' => 'Haze', |
|
33 | - 'PY' => 'Spray', |
|
34 | - 'PO' => 'Well developed dust / sand whirls', |
|
35 | - 'SQ' => 'Squalls', |
|
36 | - 'FC' => 'Funnel clouds inc tornadoes or waterspouts', |
|
37 | - 'SS' => 'Sandstorm', |
|
38 | - 'DS' => 'Duststorm' |
|
10 | + 'MI' => 'Shallow', |
|
11 | + 'PR' => 'Partial', |
|
12 | + 'BC' => 'Low drifting', |
|
13 | + 'BL' => 'Blowing', |
|
14 | + 'SH' => 'Showers', |
|
15 | + 'TS' => 'Thunderstorm', |
|
16 | + 'FZ' => 'Freezing', |
|
17 | + 'DZ' => 'Drizzle', |
|
18 | + 'RA' => 'Rain', |
|
19 | + 'SN' => 'Snow', |
|
20 | + 'SG' => 'Snow Grains', |
|
21 | + 'IC' => 'Ice crystals', |
|
22 | + 'PL' => 'Ice pellets', |
|
23 | + 'GR' => 'Hail', |
|
24 | + 'GS' => 'Small hail', |
|
25 | + 'UP' => 'Unknown', |
|
26 | + 'BR' => 'Mist', |
|
27 | + 'FG' => 'Fog', |
|
28 | + 'FU' => 'Smoke', |
|
29 | + 'VA' => 'Volcanic ash', |
|
30 | + 'DU' => 'Widespread dust', |
|
31 | + 'SA' => 'Sand', |
|
32 | + 'HZ' => 'Haze', |
|
33 | + 'PY' => 'Spray', |
|
34 | + 'PO' => 'Well developed dust / sand whirls', |
|
35 | + 'SQ' => 'Squalls', |
|
36 | + 'FC' => 'Funnel clouds inc tornadoes or waterspouts', |
|
37 | + 'SS' => 'Sandstorm', |
|
38 | + 'DS' => 'Duststorm' |
|
39 | 39 | ); |
40 | 40 | |
41 | 41 | function __construct($dbc = null) { |
42 | - $Connection = new Connection($dbc); |
|
43 | - $this->db = $Connection->db; |
|
44 | - } |
|
42 | + $Connection = new Connection($dbc); |
|
43 | + $this->db = $Connection->db; |
|
44 | + } |
|
45 | 45 | |
46 | - public static function check_last_update() { |
|
47 | - global $globalDBdriver; |
|
48 | - if ($globalDBdriver == 'mysql') { |
|
46 | + public static function check_last_update() { |
|
47 | + global $globalDBdriver; |
|
48 | + if ($globalDBdriver == 'mysql') { |
|
49 | 49 | $query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_metar' AND value > DATE_SUB(DATE(NOW()), INTERVAL 1 HOUR)"; |
50 | 50 | } else { |
51 | 51 | $query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_metar' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '1 HOURS'"; |
52 | 52 | } |
53 | - try { |
|
54 | - $Connection = new Connection(); |
|
55 | - $sth = $Connection->db->prepare($query); |
|
56 | - $sth->execute(); |
|
57 | - } catch(PDOException $e) { |
|
58 | - return "error : ".$e->getMessage(); |
|
59 | - } |
|
60 | - $row = $sth->fetch(PDO::FETCH_ASSOC); |
|
61 | - if ($row['nb'] > 0) return false; |
|
62 | - else return true; |
|
63 | - } |
|
53 | + try { |
|
54 | + $Connection = new Connection(); |
|
55 | + $sth = $Connection->db->prepare($query); |
|
56 | + $sth->execute(); |
|
57 | + } catch(PDOException $e) { |
|
58 | + return "error : ".$e->getMessage(); |
|
59 | + } |
|
60 | + $row = $sth->fetch(PDO::FETCH_ASSOC); |
|
61 | + if ($row['nb'] > 0) return false; |
|
62 | + else return true; |
|
63 | + } |
|
64 | 64 | |
65 | - public static function insert_last_update() { |
|
66 | - $query = "DELETE FROM config WHERE name = 'last_update_metar'; |
|
65 | + public static function insert_last_update() { |
|
66 | + $query = "DELETE FROM config WHERE name = 'last_update_metar'; |
|
67 | 67 | INSERT INTO config (name,value) VALUES ('last_update_metar',NOW());"; |
68 | - try { |
|
69 | - $Connection = new Connection(); |
|
70 | - $sth = $Connection->db->prepare($query); |
|
71 | - $sth->execute(); |
|
72 | - } catch(PDOException $e) { |
|
73 | - return "error : ".$e->getMessage(); |
|
74 | - } |
|
75 | - } |
|
68 | + try { |
|
69 | + $Connection = new Connection(); |
|
70 | + $sth = $Connection->db->prepare($query); |
|
71 | + $sth->execute(); |
|
72 | + } catch(PDOException $e) { |
|
73 | + return "error : ".$e->getMessage(); |
|
74 | + } |
|
75 | + } |
|
76 | 76 | |
77 | 77 | |
78 | 78 | |
79 | - public function parse($data) { |
|
80 | - //$data = str_replace(array('\n','\r','\r','\n'),'',$data); |
|
81 | - $codes = implode('|', array_keys($this->texts)); |
|
82 | - $regWeather = '#^(\+|\-|VC)?(' . $codes . ')(' . $codes . ')?$#'; |
|
83 | - //$pieces = explode(' ',$data); |
|
84 | - $pieces = preg_split('/\s/',$data); |
|
85 | - $pos = 0; |
|
86 | - if ($pieces[0] == 'METAR') $pos++; |
|
87 | - elseif ($pieces[0] == 'SPECI') $pos++; |
|
88 | - if (strlen($pieces[$pos]) != 4) $pos++; |
|
89 | - $result['location'] = $pieces[$pos]; |
|
90 | - $pos++; |
|
91 | - $result['dayofmonth'] = substr($pieces[$pos],0,2); |
|
92 | - $result['time'] = substr($pieces[$pos],2,4); |
|
93 | - $c = count($pieces); |
|
94 | - for($pos++; $pos < $c; $pos++) { |
|
95 | - $piece = $pieces[$pos]; |
|
96 | - if ($piece == 'RMK') break; |
|
97 | - if ($piece == 'AUTO') $result['auto'] = true; |
|
98 | - if ($piece == 'COR') $result['correction'] = true; |
|
99 | - // Wind Speed |
|
100 | - if (preg_match('#(VRB|\d\d\d)(\d\d)(?:G(\d\d))?(KT|MPS|KPH)(?: (\d{1,3})V(\d{1,3}))?$#', $piece, $matches)) { |
|
101 | - $result['wind']['direction'] = (float)$matches[1]; |
|
79 | + public function parse($data) { |
|
80 | + //$data = str_replace(array('\n','\r','\r','\n'),'',$data); |
|
81 | + $codes = implode('|', array_keys($this->texts)); |
|
82 | + $regWeather = '#^(\+|\-|VC)?(' . $codes . ')(' . $codes . ')?$#'; |
|
83 | + //$pieces = explode(' ',$data); |
|
84 | + $pieces = preg_split('/\s/',$data); |
|
85 | + $pos = 0; |
|
86 | + if ($pieces[0] == 'METAR') $pos++; |
|
87 | + elseif ($pieces[0] == 'SPECI') $pos++; |
|
88 | + if (strlen($pieces[$pos]) != 4) $pos++; |
|
89 | + $result['location'] = $pieces[$pos]; |
|
90 | + $pos++; |
|
91 | + $result['dayofmonth'] = substr($pieces[$pos],0,2); |
|
92 | + $result['time'] = substr($pieces[$pos],2,4); |
|
93 | + $c = count($pieces); |
|
94 | + for($pos++; $pos < $c; $pos++) { |
|
95 | + $piece = $pieces[$pos]; |
|
96 | + if ($piece == 'RMK') break; |
|
97 | + if ($piece == 'AUTO') $result['auto'] = true; |
|
98 | + if ($piece == 'COR') $result['correction'] = true; |
|
99 | + // Wind Speed |
|
100 | + if (preg_match('#(VRB|\d\d\d)(\d\d)(?:G(\d\d))?(KT|MPS|KPH)(?: (\d{1,3})V(\d{1,3}))?$#', $piece, $matches)) { |
|
101 | + $result['wind']['direction'] = (float)$matches[1]; |
|
102 | 102 | $result['wind']['unit'] = $matches[4]; |
103 | - if ($result['wind']['unit'] == 'KT') $result['wind']['speed'] = round(((float)$matches[2])*0.51444444444,2); |
|
104 | - elseif ($result['wind']['unit'] == 'KPH') $result['wind']['speed'] = round(((float)$matches[2])*1000,2); |
|
105 | - elseif ($result['wind']['unit'] == 'MPS') $result['wind']['speed'] = round(((float)$matches[2]),2); |
|
103 | + if ($result['wind']['unit'] == 'KT') $result['wind']['speed'] = round(((float)$matches[2])*0.51444444444,2); |
|
104 | + elseif ($result['wind']['unit'] == 'KPH') $result['wind']['speed'] = round(((float)$matches[2])*1000,2); |
|
105 | + elseif ($result['wind']['unit'] == 'MPS') $result['wind']['speed'] = round(((float)$matches[2]),2); |
|
106 | 106 | $result['wind']['gust'] = (float)$matches[3]; |
107 | 107 | $result['wind']['unit'] = $matches[4]; |
108 | 108 | $result['wind']['min_variation'] = array_key_exists(5,$matches) ? $matches[5] : 0; |
109 | 109 | $result['wind']['max_variation'] = array_key_exists(6,$matches) ? $matches[6] : 0; |
110 | - } |
|
110 | + } |
|
111 | 111 | |
112 | 112 | /* if (preg_match('#^([0-9]{3})([0-9]{2})(G([0-9]{2}))?(KT|MPS)$#', $piece, $matches)) { |
113 | 113 | $result['wind_direction'] = (float)$matches[1]; |
@@ -124,35 +124,35 @@ discard block |
||
124 | 124 | } |
125 | 125 | } |
126 | 126 | */ |
127 | - // Temperature |
|
128 | - if (preg_match('#^(M?[0-9]{2,})/(M?[0-9]{2,})$#', $piece, $matches)) { |
|
129 | - $temp = (float)$matches[1]; |
|
127 | + // Temperature |
|
128 | + if (preg_match('#^(M?[0-9]{2,})/(M?[0-9]{2,})$#', $piece, $matches)) { |
|
129 | + $temp = (float)$matches[1]; |
|
130 | 130 | if ($matches[1]{0} == 'M') { |
131 | 131 | $temp = ((float)substr($matches[1], 1)) * -1; |
132 | 132 | } |
133 | - $result['temperature'] = $temp; |
|
134 | - $dew = (float)$matches[2]; |
|
133 | + $result['temperature'] = $temp; |
|
134 | + $dew = (float)$matches[2]; |
|
135 | 135 | if ($matches[2]{0} == 'M') { |
136 | 136 | $dew = ((float)substr($matches[2], 1)) * -1; |
137 | 137 | } |
138 | 138 | $result['dew'] = $dew; |
139 | - } |
|
140 | - // QNH |
|
141 | - if (preg_match('#^(A|Q)([0-9]{4})$#', $piece, $matches)) { |
|
142 | - // #^(Q|A)(////|[0-9]{4})( )# |
|
143 | - if ($matches[1] == 'Q') { |
|
144 | - // hPa |
|
145 | - $result['QNH'] = $matches[2]; |
|
146 | - } else { |
|
147 | - // inHg |
|
148 | - $result['QNH'] = round(($matches[2] / 100)*33.86389,2); |
|
149 | 139 | } |
150 | - /* |
|
140 | + // QNH |
|
141 | + if (preg_match('#^(A|Q)([0-9]{4})$#', $piece, $matches)) { |
|
142 | + // #^(Q|A)(////|[0-9]{4})( )# |
|
143 | + if ($matches[1] == 'Q') { |
|
144 | + // hPa |
|
145 | + $result['QNH'] = $matches[2]; |
|
146 | + } else { |
|
147 | + // inHg |
|
148 | + $result['QNH'] = round(($matches[2] / 100)*33.86389,2); |
|
149 | + } |
|
150 | + /* |
|
151 | 151 | $result['QNH'] = $matches[1] == 'Q' ? $matches[2] : ($matches[2] / 100); |
152 | 152 | $result['QNH_format'] = $matches[1] == 'Q' ? 'hPa' : 'inHg'; |
153 | 153 | */ |
154 | - } |
|
155 | - /* |
|
154 | + } |
|
155 | + /* |
|
156 | 156 | // Wind Direction |
157 | 157 | if (preg_match('#^([0-9]{3})V([0-9]{3})$#', $piece, $matches)) { |
158 | 158 | $result['wind_direction'] = $matches[1]; |
@@ -163,9 +163,9 @@ discard block |
||
163 | 163 | $result['speed_variable'] = $matches[1]; |
164 | 164 | } |
165 | 165 | */ |
166 | - // Visibility |
|
167 | - if (preg_match('#^([0-9]{4})|(([0-9]{1,4})SM)$#', $piece, $matches)) { |
|
168 | - if (isset($matches[3]) && strlen($matches[3]) > 0) { |
|
166 | + // Visibility |
|
167 | + if (preg_match('#^([0-9]{4})|(([0-9]{1,4})SM)$#', $piece, $matches)) { |
|
168 | + if (isset($matches[3]) && strlen($matches[3]) > 0) { |
|
169 | 169 | $result['visibility'] = (float)$matches[3] * 1609.34; |
170 | 170 | } else { |
171 | 171 | if ($matches[1] == '9999') { |
@@ -178,26 +178,26 @@ discard block |
||
178 | 178 | $result['visibility'] = '> 10000'; |
179 | 179 | $result['weather'] = "CAVOK"; |
180 | 180 | } |
181 | - } |
|
182 | - // Cloud Coverage |
|
183 | - if (preg_match('#^(SKC|CLR|FEW|SCT|BKN|OVC|VV)([0-9]{3})(CB|TCU|CU|CI)?$#', $piece, $matches)) { |
|
184 | - //$this->addCloudCover($matches[1], ((float)$matches[2]) * 100, isset($matches[3]) ? $matches[3] : ''); |
|
185 | - $type = $matches[1]; |
|
186 | - if ($type == 'SKC') $cloud['type'] = 'No cloud/Sky clear'; |
|
187 | - elseif ($type == 'CLR') $cloud['type'] = 'No cloud below 12,000ft (3700m)'; |
|
188 | - elseif ($type == 'NSC') $cloud['type'] = 'No significant cloud'; |
|
189 | - elseif ($type == 'FEW') $cloud['type'] = 'Few'; |
|
190 | - elseif ($type == 'SCT') $cloud['type'] = 'Scattered'; |
|
191 | - elseif ($type == 'BKN') $cloud['type'] = 'Broken'; |
|
192 | - elseif ($type == 'OVC') $cloud['type'] = 'Overcast/Full cloud coverage'; |
|
193 | - elseif ($type == 'VV') $cloud['type'] = 'Vertical visibility'; |
|
194 | - $cloud['type_code'] = $type; |
|
195 | - $cloud['level'] = round(((float)$matches[2]) * 100 * 0.3048); |
|
196 | - $cloud['significant'] = isset($matches[3]) ? $matches[3] : ''; |
|
197 | - $result['cloud'][] = $cloud; |
|
198 | - } |
|
199 | - // RVR |
|
200 | - if (preg_match('#^(R.+)/([M|P])?(\d{4})(?:V(\d+)|[UDN])?(FT)?$#', $piece, $matches)) { |
|
181 | + } |
|
182 | + // Cloud Coverage |
|
183 | + if (preg_match('#^(SKC|CLR|FEW|SCT|BKN|OVC|VV)([0-9]{3})(CB|TCU|CU|CI)?$#', $piece, $matches)) { |
|
184 | + //$this->addCloudCover($matches[1], ((float)$matches[2]) * 100, isset($matches[3]) ? $matches[3] : ''); |
|
185 | + $type = $matches[1]; |
|
186 | + if ($type == 'SKC') $cloud['type'] = 'No cloud/Sky clear'; |
|
187 | + elseif ($type == 'CLR') $cloud['type'] = 'No cloud below 12,000ft (3700m)'; |
|
188 | + elseif ($type == 'NSC') $cloud['type'] = 'No significant cloud'; |
|
189 | + elseif ($type == 'FEW') $cloud['type'] = 'Few'; |
|
190 | + elseif ($type == 'SCT') $cloud['type'] = 'Scattered'; |
|
191 | + elseif ($type == 'BKN') $cloud['type'] = 'Broken'; |
|
192 | + elseif ($type == 'OVC') $cloud['type'] = 'Overcast/Full cloud coverage'; |
|
193 | + elseif ($type == 'VV') $cloud['type'] = 'Vertical visibility'; |
|
194 | + $cloud['type_code'] = $type; |
|
195 | + $cloud['level'] = round(((float)$matches[2]) * 100 * 0.3048); |
|
196 | + $cloud['significant'] = isset($matches[3]) ? $matches[3] : ''; |
|
197 | + $result['cloud'][] = $cloud; |
|
198 | + } |
|
199 | + // RVR |
|
200 | + if (preg_match('#^(R.+)/([M|P])?(\d{4})(?:V(\d+)|[UDN])?(FT)?$#', $piece, $matches)) { |
|
201 | 201 | $rvr['runway'] = $matches[1]; |
202 | 202 | $rvr['assessment'] = $matches[2]; |
203 | 203 | $rvr['rvr'] = $matches[3]; |
@@ -206,33 +206,33 @@ discard block |
||
206 | 206 | $result['RVR'] = $rvr; |
207 | 207 | } |
208 | 208 | |
209 | - //if (preg_match('#^(R[A-Z0-9]{2,3})/([0-9]{4})(V([0-9]{4}))?(FT)?$#', $piece, $matches)) { |
|
210 | - if (preg_match('#^R(\d{2}[LRC]?)/([\d/])([\d/])([\d/]{2})([\d/]{2})$#', $piece, $matches)) { |
|
211 | - //print_r($matches); |
|
212 | - // https://github.com/davidmegginson/metar-taf/blob/master/Metar.php |
|
213 | - $result['RVR']['runway'] = $matches[1]; |
|
214 | - $result['RVR']['deposits'] = $matches[2]; |
|
215 | - $result['RVR']['extent'] = $matches[3]; |
|
216 | - $result['RVR']['depth'] = $matches[4]; |
|
217 | - $result['RVR']['friction'] = $matches[5]; |
|
218 | - } |
|
219 | - if (preg_match('#^(R[A-Z0-9]{2,3})/([0-9]{4})(V([0-9]{4}))?(FT)?$#', $piece, $matches)) { |
|
220 | - //echo $piece; |
|
221 | - //print_r($matches); |
|
222 | - if (isset($matches[5])) $range = array('exact' => (float)$matches[2], 'unit' => $matches[5] ? 'FT' : 'M'); |
|
223 | - else $range = array('exact' => (float)$matches[2], 'unit' => 'M'); |
|
209 | + //if (preg_match('#^(R[A-Z0-9]{2,3})/([0-9]{4})(V([0-9]{4}))?(FT)?$#', $piece, $matches)) { |
|
210 | + if (preg_match('#^R(\d{2}[LRC]?)/([\d/])([\d/])([\d/]{2})([\d/]{2})$#', $piece, $matches)) { |
|
211 | + //print_r($matches); |
|
212 | + // https://github.com/davidmegginson/metar-taf/blob/master/Metar.php |
|
213 | + $result['RVR']['runway'] = $matches[1]; |
|
214 | + $result['RVR']['deposits'] = $matches[2]; |
|
215 | + $result['RVR']['extent'] = $matches[3]; |
|
216 | + $result['RVR']['depth'] = $matches[4]; |
|
217 | + $result['RVR']['friction'] = $matches[5]; |
|
218 | + } |
|
219 | + if (preg_match('#^(R[A-Z0-9]{2,3})/([0-9]{4})(V([0-9]{4}))?(FT)?$#', $piece, $matches)) { |
|
220 | + //echo $piece; |
|
221 | + //print_r($matches); |
|
222 | + if (isset($matches[5])) $range = array('exact' => (float)$matches[2], 'unit' => $matches[5] ? 'FT' : 'M'); |
|
223 | + else $range = array('exact' => (float)$matches[2], 'unit' => 'M'); |
|
224 | 224 | if (isset($matches[3])) { |
225 | 225 | $range = Array( |
226 | - 'from' => (float)$matches[2], |
|
227 | - 'to' => (float)$matches[4], |
|
228 | - 'unit' => $matches[5] ? 'FT' : 'M' |
|
226 | + 'from' => (float)$matches[2], |
|
227 | + 'to' => (float)$matches[4], |
|
228 | + 'unit' => $matches[5] ? 'FT' : 'M' |
|
229 | 229 | ); |
230 | 230 | } |
231 | 231 | $result['RVR'] = $matches[1]; |
232 | 232 | $result['RVR_range'] = $range; |
233 | - } |
|
234 | - // Weather |
|
235 | - if (preg_match($regWeather, $piece, $matches)) { |
|
233 | + } |
|
234 | + // Weather |
|
235 | + if (preg_match($regWeather, $piece, $matches)) { |
|
236 | 236 | $text = Array(); |
237 | 237 | switch ($matches[1]) { |
238 | 238 | case '+': |
@@ -255,35 +255,35 @@ discard block |
||
255 | 255 | } |
256 | 256 | if (!isset($result['weather'])) $result['weather'] = implode(' ', $text); |
257 | 257 | else $result['weather'] = $result['weather'].' / '.implode(' ', $text); |
258 | - } |
|
259 | - } |
|
260 | - return $result; |
|
258 | + } |
|
259 | + } |
|
260 | + return $result; |
|
261 | 261 | |
262 | - } |
|
262 | + } |
|
263 | 263 | |
264 | 264 | public function getMETAR($icao) { |
265 | - global $globalMETARcycle, $globalDBdriver; |
|
266 | - if (isset($globalMETARcycle) && $globalMETARcycle) { |
|
267 | - $query = "SELECT * FROM metar WHERE metar_location = :icao"; |
|
268 | - } else { |
|
269 | - if ($globalDBdriver == 'mysql') $query = "SELECT * FROM metar WHERE metar_location = :icao AND metar_date >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 10 HOUR) LIMIT 1"; |
|
270 | - elseif ($globalDBdriver == 'pgsql') $query = "SELECT * FROM metar WHERE metar_location = :icao AND metar_date >= now() AT TIMEZONE 'UTC' - '10 HOUR'->INTERVAL LIMIT 0,1"; |
|
271 | - } |
|
272 | - $query_values = array(':icao' => $icao); |
|
273 | - try { |
|
274 | - $sth = $this->db->prepare($query); |
|
275 | - $sth->execute($query_values); |
|
276 | - } catch(PDOException $e) { |
|
277 | - return "error : ".$e->getMessage(); |
|
278 | - } |
|
279 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
280 | - if ((!isset($globalMETARcyle) || $globalMETARcycle === false) && count($all) == 0) { |
|
281 | - $all = $this->downloadMETAR($icao); |
|
282 | - } |
|
283 | - return $all; |
|
284 | - } |
|
265 | + global $globalMETARcycle, $globalDBdriver; |
|
266 | + if (isset($globalMETARcycle) && $globalMETARcycle) { |
|
267 | + $query = "SELECT * FROM metar WHERE metar_location = :icao"; |
|
268 | + } else { |
|
269 | + if ($globalDBdriver == 'mysql') $query = "SELECT * FROM metar WHERE metar_location = :icao AND metar_date >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 10 HOUR) LIMIT 1"; |
|
270 | + elseif ($globalDBdriver == 'pgsql') $query = "SELECT * FROM metar WHERE metar_location = :icao AND metar_date >= now() AT TIMEZONE 'UTC' - '10 HOUR'->INTERVAL LIMIT 0,1"; |
|
271 | + } |
|
272 | + $query_values = array(':icao' => $icao); |
|
273 | + try { |
|
274 | + $sth = $this->db->prepare($query); |
|
275 | + $sth->execute($query_values); |
|
276 | + } catch(PDOException $e) { |
|
277 | + return "error : ".$e->getMessage(); |
|
278 | + } |
|
279 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
280 | + if ((!isset($globalMETARcyle) || $globalMETARcycle === false) && count($all) == 0) { |
|
281 | + $all = $this->downloadMETAR($icao); |
|
282 | + } |
|
283 | + return $all; |
|
284 | + } |
|
285 | 285 | |
286 | - public function addMETAR($location,$metar,$date) { |
|
286 | + public function addMETAR($location,$metar,$date) { |
|
287 | 287 | global $globalDBdriver; |
288 | 288 | $date = date('Y-m-d H:i:s',strtotime($date)); |
289 | 289 | if ($globalDBdriver == 'mysql') { |
@@ -291,98 +291,98 @@ discard block |
||
291 | 291 | } else { |
292 | 292 | $query = "UPDATE metar SET metar_date = :date, metar = metar WHERE metar_location = :location;INSERT INTO metar (metar_location,metar_date,metar) SELECT :location,:date,:metar WHERE NOT EXISTS (SELECT 1 FROM metar WHERE metar_location = :location);"; |
293 | 293 | } |
294 | - $query_values = array(':location' => $location,':date' => $date,':metar' => $metar); |
|
295 | - try { |
|
296 | - $sth = $this->db->prepare($query); |
|
297 | - $sth->execute($query_values); |
|
298 | - } catch(PDOException $e) { |
|
299 | - return "error : ".$e->getMessage(); |
|
300 | - } |
|
301 | - } |
|
294 | + $query_values = array(':location' => $location,':date' => $date,':metar' => $metar); |
|
295 | + try { |
|
296 | + $sth = $this->db->prepare($query); |
|
297 | + $sth->execute($query_values); |
|
298 | + } catch(PDOException $e) { |
|
299 | + return "error : ".$e->getMessage(); |
|
300 | + } |
|
301 | + } |
|
302 | 302 | |
303 | - public function deleteMETAR($id) { |
|
304 | - $query = "DELETE FROM metar WHERE id = :id"; |
|
305 | - $query_values = array(':id' => $id); |
|
306 | - try { |
|
307 | - $sth = $this->db->prepare($query); |
|
308 | - $sth->execute($query_values); |
|
309 | - } catch(PDOException $e) { |
|
310 | - return "error : ".$e->getMessage(); |
|
311 | - } |
|
312 | - } |
|
313 | - public function deleteAllMETARLocation() { |
|
314 | - $query = "DELETE FROM metar"; |
|
315 | - try { |
|
316 | - $sth = $this->db->prepare($query); |
|
317 | - $sth->execute(); |
|
318 | - } catch(PDOException $e) { |
|
319 | - return "error : ".$e->getMessage(); |
|
320 | - } |
|
321 | - } |
|
303 | + public function deleteMETAR($id) { |
|
304 | + $query = "DELETE FROM metar WHERE id = :id"; |
|
305 | + $query_values = array(':id' => $id); |
|
306 | + try { |
|
307 | + $sth = $this->db->prepare($query); |
|
308 | + $sth->execute($query_values); |
|
309 | + } catch(PDOException $e) { |
|
310 | + return "error : ".$e->getMessage(); |
|
311 | + } |
|
312 | + } |
|
313 | + public function deleteAllMETARLocation() { |
|
314 | + $query = "DELETE FROM metar"; |
|
315 | + try { |
|
316 | + $sth = $this->db->prepare($query); |
|
317 | + $sth->execute(); |
|
318 | + } catch(PDOException $e) { |
|
319 | + return "error : ".$e->getMessage(); |
|
320 | + } |
|
321 | + } |
|
322 | 322 | |
323 | - public function addMETARCycle() { |
|
324 | - global $globalDebug, $globalIVAO; |
|
325 | - if (isset($globalDebug) && $globalDebug) echo "Downloading METAR cycle..."; |
|
326 | - date_default_timezone_set("UTC"); |
|
327 | - $Common = new Common(); |
|
328 | - if (isset($globalIVAO) && $globalIVAO) { |
|
329 | - $cycle = $Common->getData('http://wx.ivao.aero/metar.php'); |
|
330 | - } else { |
|
323 | + public function addMETARCycle() { |
|
324 | + global $globalDebug, $globalIVAO; |
|
325 | + if (isset($globalDebug) && $globalDebug) echo "Downloading METAR cycle..."; |
|
326 | + date_default_timezone_set("UTC"); |
|
327 | + $Common = new Common(); |
|
328 | + if (isset($globalIVAO) && $globalIVAO) { |
|
329 | + $cycle = $Common->getData('http://wx.ivao.aero/metar.php'); |
|
330 | + } else { |
|
331 | 331 | $cycle = $Common->getData('http://weather.noaa.gov/pub/data/observations/metar/cycles/'.date('H').'Z.TXT'); |
332 | - } |
|
333 | - if (isset($globalDebug) && $globalDebug) echo "Done - Updating DB..."; |
|
334 | - $date = ''; |
|
335 | - foreach(explode("\n",$cycle) as $line) { |
|
336 | - if (preg_match('#^([0-9]{4})/([0-9]{2})/([0-9]{2}) ([0-9]{2}):([0-9]{2})$#',$line)) { |
|
337 | - //echo "date : ".$line."\n"; |
|
338 | - $date = $line; |
|
339 | - } elseif ($line != '') { |
|
340 | - //$this->parse($line); |
|
341 | - //echo $line; |
|
342 | - if ($date == '') $date = date('Y/m/d H:m'); |
|
343 | - $pos = 0; |
|
344 | - $pieces = preg_split('/\s/',$line); |
|
345 | - if ($pieces[0] == 'METAR') $pos++; |
|
346 | - if (strlen($pieces[$pos]) != 4) $pos++; |
|
347 | - $location = $pieces[$pos]; |
|
348 | - echo $this->addMETAR($location,$line,$date); |
|
349 | - } |
|
350 | - //echo $line."\n"; |
|
351 | - } |
|
352 | - if (isset($globalDebug) && $globalDebug) echo "Done\n"; |
|
332 | + } |
|
333 | + if (isset($globalDebug) && $globalDebug) echo "Done - Updating DB..."; |
|
334 | + $date = ''; |
|
335 | + foreach(explode("\n",$cycle) as $line) { |
|
336 | + if (preg_match('#^([0-9]{4})/([0-9]{2})/([0-9]{2}) ([0-9]{2}):([0-9]{2})$#',$line)) { |
|
337 | + //echo "date : ".$line."\n"; |
|
338 | + $date = $line; |
|
339 | + } elseif ($line != '') { |
|
340 | + //$this->parse($line); |
|
341 | + //echo $line; |
|
342 | + if ($date == '') $date = date('Y/m/d H:m'); |
|
343 | + $pos = 0; |
|
344 | + $pieces = preg_split('/\s/',$line); |
|
345 | + if ($pieces[0] == 'METAR') $pos++; |
|
346 | + if (strlen($pieces[$pos]) != 4) $pos++; |
|
347 | + $location = $pieces[$pos]; |
|
348 | + echo $this->addMETAR($location,$line,$date); |
|
349 | + } |
|
350 | + //echo $line."\n"; |
|
351 | + } |
|
352 | + if (isset($globalDebug) && $globalDebug) echo "Done\n"; |
|
353 | 353 | |
354 | - } |
|
355 | - public function downloadMETAR($icao) { |
|
356 | - global $globalMETARurl; |
|
357 | - if ($globalMETARurl == '') return array(); |
|
358 | - date_default_timezone_set("UTC"); |
|
359 | - $Common = new Common(); |
|
360 | - $url = str_replace('{icao}',$icao,$globalMETARurl); |
|
361 | - $cycle = $Common->getData($url); |
|
362 | - $date = ''; |
|
363 | - foreach(explode("\n",$cycle) as $line) { |
|
364 | - if (preg_match('#^([0-9]{4})/([0-9]{2})/([0-9]{2}) ([0-9]{2}):([0-9]{2})$#',$line)) { |
|
365 | - echo "date : ".$line."\n"; |
|
366 | - $date = $line; |
|
367 | - } elseif ($line != '') { |
|
368 | - //$this->parse($line); |
|
369 | - //echo $line; |
|
370 | - if ($date == '') $date = date('Y/m/d H:m'); |
|
371 | - $pos = 0; |
|
372 | - $pieces = preg_split('/\s/',$line); |
|
373 | - if ($pieces[0] == 'METAR') $pos++; |
|
374 | - if (strlen($pieces[$pos]) != 4) $pos++; |
|
375 | - $location = $pieces[$pos]; |
|
376 | - if (strlen($location == 4)) { |
|
377 | - $this->addMETAR($location,$line,$date); |
|
378 | - return array('0' => array('metar_date' => $date, 'metar_location' => $location, 'metar' => $line)); |
|
379 | - } else return array(); |
|
380 | - } |
|
381 | - //echo $line."\n"; |
|
382 | - } |
|
383 | - return array(); |
|
354 | + } |
|
355 | + public function downloadMETAR($icao) { |
|
356 | + global $globalMETARurl; |
|
357 | + if ($globalMETARurl == '') return array(); |
|
358 | + date_default_timezone_set("UTC"); |
|
359 | + $Common = new Common(); |
|
360 | + $url = str_replace('{icao}',$icao,$globalMETARurl); |
|
361 | + $cycle = $Common->getData($url); |
|
362 | + $date = ''; |
|
363 | + foreach(explode("\n",$cycle) as $line) { |
|
364 | + if (preg_match('#^([0-9]{4})/([0-9]{2})/([0-9]{2}) ([0-9]{2}):([0-9]{2})$#',$line)) { |
|
365 | + echo "date : ".$line."\n"; |
|
366 | + $date = $line; |
|
367 | + } elseif ($line != '') { |
|
368 | + //$this->parse($line); |
|
369 | + //echo $line; |
|
370 | + if ($date == '') $date = date('Y/m/d H:m'); |
|
371 | + $pos = 0; |
|
372 | + $pieces = preg_split('/\s/',$line); |
|
373 | + if ($pieces[0] == 'METAR') $pos++; |
|
374 | + if (strlen($pieces[$pos]) != 4) $pos++; |
|
375 | + $location = $pieces[$pos]; |
|
376 | + if (strlen($location == 4)) { |
|
377 | + $this->addMETAR($location,$line,$date); |
|
378 | + return array('0' => array('metar_date' => $date, 'metar_location' => $location, 'metar' => $line)); |
|
379 | + } else return array(); |
|
380 | + } |
|
381 | + //echo $line."\n"; |
|
382 | + } |
|
383 | + return array(); |
|
384 | 384 | |
385 | - } |
|
385 | + } |
|
386 | 386 | } |
387 | 387 | /* |
388 | 388 | $METAR = new METAR(); |
@@ -1,12 +1,12 @@ discard block |
||
1 | 1 | <?php |
2 | 2 | class aprs { |
3 | - private function urshift($n, $s) { |
|
3 | + private function urshift($n, $s) { |
|
4 | 4 | return ($n >= 0) ? ($n >> $s) : |
5 | - (($n & 0x7fffffff) >> $s) | |
|
6 | - (0x40000000 >> ($s - 1)); |
|
7 | - } |
|
5 | + (($n & 0x7fffffff) >> $s) | |
|
6 | + (0x40000000 >> ($s - 1)); |
|
7 | + } |
|
8 | 8 | |
9 | - public function parse($input) { |
|
9 | + public function parse($input) { |
|
10 | 10 | $debug = false; |
11 | 11 | $result = array(); |
12 | 12 | $input_len = strlen($input); |
@@ -17,8 +17,8 @@ discard block |
||
17 | 17 | |
18 | 18 | /* Check that end was found and body has at least one byte. */ |
19 | 19 | if ($splitpos == 0 || $splitpos + 1 == $input_len || $splitpos === FALSE) { |
20 | - echo 'invalid'; |
|
21 | - return false; |
|
20 | + echo 'invalid'; |
|
21 | + return false; |
|
22 | 22 | } |
23 | 23 | |
24 | 24 | /* Save header and body. */ |
@@ -31,44 +31,44 @@ discard block |
||
31 | 31 | /* Parse source, target and path. */ |
32 | 32 | //FLRDF0A52>APRS,qAS,LSTB |
33 | 33 | if (preg_match('/^([A-Z0-9\\-]{1,9})>(.*)$/',$header,$matches)) { |
34 | - $ident = $matches[1]; |
|
35 | - $all_elements = $matches[2]; |
|
36 | - if ($debug) echo 'ident : '.$ident."\n"; |
|
37 | - $result['ident'] = $ident; |
|
34 | + $ident = $matches[1]; |
|
35 | + $all_elements = $matches[2]; |
|
36 | + if ($debug) echo 'ident : '.$ident."\n"; |
|
37 | + $result['ident'] = $ident; |
|
38 | 38 | } else return false; |
39 | 39 | $elements = explode(',',$all_elements); |
40 | 40 | $source = end($elements); |
41 | 41 | $result['source'] = $source; |
42 | 42 | foreach ($elements as $element) { |
43 | - if (preg_match('/^([a-zA-Z0-9-]{1,9})([*]?)$/',$element)) { |
|
44 | - //echo "ok"; |
|
45 | - if ($element == 'TCPIP*') return false; |
|
46 | - } elseif (preg_match('/^([0-9A-F]{32})$/',$element)) { |
|
43 | + if (preg_match('/^([a-zA-Z0-9-]{1,9})([*]?)$/',$element)) { |
|
44 | + //echo "ok"; |
|
45 | + if ($element == 'TCPIP*') return false; |
|
46 | + } elseif (preg_match('/^([0-9A-F]{32})$/',$element)) { |
|
47 | 47 | //echo "ok"; |
48 | - } else { |
|
49 | - return false; |
|
50 | - } |
|
48 | + } else { |
|
49 | + return false; |
|
50 | + } |
|
51 | 51 | } |
52 | 52 | // Check for Timestamp |
53 | 53 | $body_parse = substr($body,1); |
54 | 54 | if (preg_match('/^([0-9]{2})([0-9]{2})([0-9]{2})([zh\\/])/',$body_parse,$matches)) { |
55 | - $timestamp = $matches[0]; |
|
56 | - if ($matches[4] == 'h') { |
|
55 | + $timestamp = $matches[0]; |
|
56 | + if ($matches[4] == 'h') { |
|
57 | 57 | $timestamp = strtotime($matches[1].':'.$matches[2].':'.$matches[3]); |
58 | 58 | //echo 'timestamp : '.$timestamp.' - now : '.time()."\n"; |
59 | 59 | /* |
60 | 60 | if (time() + 3900 < $timestamp) $timestamp -= 86400; |
61 | 61 | elseif (time() - 82500 > $timestamp) $timestamp += 86400; |
62 | 62 | */ |
63 | - } elseif ($matches[4] == 'z' || $matches[4] == '/') { |
|
63 | + } elseif ($matches[4] == 'z' || $matches[4] == '/') { |
|
64 | 64 | // FIXME : fix this... |
65 | 65 | $timestamp = strtotime($matches[1].' '.$matches[2].':'.$matches[3]); |
66 | - } |
|
67 | - $body_parse = substr($body_parse,7); |
|
68 | - $result['timestamp'] = $timestamp; |
|
66 | + } |
|
67 | + $body_parse = substr($body_parse,7); |
|
68 | + $result['timestamp'] = $timestamp; |
|
69 | 69 | } |
70 | 70 | if (strlen($body_parse) > 19) { |
71 | - if (preg_match('/^([0-9]{2})([0-7 ][0-9 ]\\.[0-9 ]{2})([NnSs])(.)([0-9]{3})([0-7 ][0-9 ]\\.[0-9 ]{2})([EeWw])(.)/',$body_parse,$matches)) { |
|
71 | + if (preg_match('/^([0-9]{2})([0-7 ][0-9 ]\\.[0-9 ]{2})([NnSs])(.)([0-9]{3})([0-7 ][0-9 ]\\.[0-9 ]{2})([EeWw])(.)/',$body_parse,$matches)) { |
|
72 | 72 | // 4658.70N/00707.78Ez |
73 | 73 | //print_r(str_split($body_parse)); |
74 | 74 | $latlon = $matches[0]; |
@@ -84,7 +84,7 @@ discard block |
||
84 | 84 | $lon = intval($lon_deg); |
85 | 85 | if ($lat > 89 || $lon > 179) return false; |
86 | 86 | |
87 | - /* |
|
87 | + /* |
|
88 | 88 | $tmp_5b = str_replace('.','',$lat_min); |
89 | 89 | if (preg_match('/^([0-9]{0,4})( {0,4})$/',$tmp_5b,$matches)) { |
90 | 90 | print_r($matches); |
@@ -96,58 +96,58 @@ discard block |
||
96 | 96 | if ($wind == 'W') $longitude = 0-$longitude; |
97 | 97 | $result['latitude'] = $latitude; |
98 | 98 | $result['longitude'] = $longitude; |
99 | - } |
|
100 | - if ($body_len > 19) { |
|
99 | + } |
|
100 | + if ($body_len > 19) { |
|
101 | 101 | $body_split = str_split($body_parse); |
102 | 102 | $symbol_code = $body_split[18]; |
103 | 103 | if ($symbol_code != '_') { |
104 | - $body_parse = substr($body_parse,19); |
|
105 | - $body_parse_len = strlen($body_parse); |
|
106 | - if ($body_parse_len >= 7) { |
|
104 | + $body_parse = substr($body_parse,19); |
|
105 | + $body_parse_len = strlen($body_parse); |
|
106 | + if ($body_parse_len >= 7) { |
|
107 | 107 | |
108 | - if (preg_match('/^([0-9\\. ]{3})\\/([0-9\\. ]{3})/',$body_parse)) { |
|
109 | - $course = substr($body_parse,0,3); |
|
110 | - $tmp_s = intval($course); |
|
111 | - if ($tmp_s >= 1 && $tmp_s <= 360) $result['course'] = intval($course); |
|
112 | - $speed = substr($body_parse,4,3); |
|
113 | - $result['speed'] = round($speed*1.852); |
|
114 | - $body_parse = substr($body_parse,7); |
|
115 | - } |
|
116 | - // Check PHGR, PHG, RNG |
|
117 | - } else if ($body_parse_len > 0) { |
|
108 | + if (preg_match('/^([0-9\\. ]{3})\\/([0-9\\. ]{3})/',$body_parse)) { |
|
109 | + $course = substr($body_parse,0,3); |
|
110 | + $tmp_s = intval($course); |
|
111 | + if ($tmp_s >= 1 && $tmp_s <= 360) $result['course'] = intval($course); |
|
112 | + $speed = substr($body_parse,4,3); |
|
113 | + $result['speed'] = round($speed*1.852); |
|
114 | + $body_parse = substr($body_parse,7); |
|
115 | + } |
|
116 | + // Check PHGR, PHG, RNG |
|
117 | + } else if ($body_parse_len > 0) { |
|
118 | 118 | $rest = $body_parse; |
119 | - } |
|
120 | - if (strlen($body_parse) > 0) { |
|
121 | - if (preg_match('/\\/A=(-[0-9]{5}|[0-9]{6})/',$body_parse,$matches)) { |
|
122 | - $altitude = intval($matches[1]); |
|
123 | - $result['altitude'] = round($altitude*0.3048); |
|
124 | - $body_parse = substr($body_parse,strlen($matches[0])+1); |
|
125 | - } |
|
126 | - } |
|
119 | + } |
|
120 | + if (strlen($body_parse) > 0) { |
|
121 | + if (preg_match('/\\/A=(-[0-9]{5}|[0-9]{6})/',$body_parse,$matches)) { |
|
122 | + $altitude = intval($matches[1]); |
|
123 | + $result['altitude'] = round($altitude*0.3048); |
|
124 | + $body_parse = substr($body_parse,strlen($matches[0])+1); |
|
125 | + } |
|
126 | + } |
|
127 | 127 | |
128 | - // Telemetry |
|
129 | - if (preg_match('/^([0-9]+),(-?)([0-9]{1,6}|[0-9]+\\.[0-9]+|\\.[0-9]+)?,(-?)([0-9]{1,6}|[0-9]+\\.[0-9]+|\\.[0-9]+)?,(-?)([0-9]{1,6}|[0-9]+\\.[0-9]+|\\.[0-9]+)?,(-?)([0-9]{1,6}|[0-9]+\\.[0-9]+|\\.[0-9]+)?,(-?)([0-9]{1,6}|[0-9]+\\.[0-9]+|\\.[0-9]+)?,([01]{0,8})/',$body_parse,$matches)) { |
|
130 | - // Nothing yet... |
|
131 | - } |
|
132 | - // DAO |
|
133 | - if (preg_match('/^!([0-9A-Z]{3})/',$body_parse,$matches)) { |
|
134 | - $dao = $matches[1]; |
|
135 | - $dao_split = str_split($dao); |
|
136 | - if (preg_match('/^([A-Z])([0-9]{2})/',$dao)) { |
|
137 | - $lat_off = (($dao[1])-48.0)*0.001/60.0; |
|
138 | - $lon_off = (($dao[2])-48.0)*0.001/60.0; |
|
128 | + // Telemetry |
|
129 | + if (preg_match('/^([0-9]+),(-?)([0-9]{1,6}|[0-9]+\\.[0-9]+|\\.[0-9]+)?,(-?)([0-9]{1,6}|[0-9]+\\.[0-9]+|\\.[0-9]+)?,(-?)([0-9]{1,6}|[0-9]+\\.[0-9]+|\\.[0-9]+)?,(-?)([0-9]{1,6}|[0-9]+\\.[0-9]+|\\.[0-9]+)?,(-?)([0-9]{1,6}|[0-9]+\\.[0-9]+|\\.[0-9]+)?,([01]{0,8})/',$body_parse,$matches)) { |
|
130 | + // Nothing yet... |
|
131 | + } |
|
132 | + // DAO |
|
133 | + if (preg_match('/^!([0-9A-Z]{3})/',$body_parse,$matches)) { |
|
134 | + $dao = $matches[1]; |
|
135 | + $dao_split = str_split($dao); |
|
136 | + if (preg_match('/^([A-Z])([0-9]{2})/',$dao)) { |
|
137 | + $lat_off = (($dao[1])-48.0)*0.001/60.0; |
|
138 | + $lon_off = (($dao[2])-48.0)*0.001/60.0; |
|
139 | 139 | |
140 | - } |
|
141 | - if ($result['latitude'] < 0) $result['latitude'] -= $lat_off; |
|
142 | - else $result['latitude'] += $lat_off; |
|
143 | - if ($result['longitude'] < 0) $result['longitude'] -= $lon_off; |
|
144 | - else $result['longitude'] += $lon_off; |
|
145 | - $body_parse = substr($body_parse,6); |
|
146 | - } |
|
140 | + } |
|
141 | + if ($result['latitude'] < 0) $result['latitude'] -= $lat_off; |
|
142 | + else $result['latitude'] += $lat_off; |
|
143 | + if ($result['longitude'] < 0) $result['longitude'] -= $lon_off; |
|
144 | + else $result['longitude'] += $lon_off; |
|
145 | + $body_parse = substr($body_parse,6); |
|
146 | + } |
|
147 | 147 | |
148 | - // OGN comment |
|
148 | + // OGN comment |
|
149 | 149 | // echo "Before OGN : ".$body_parse."\n"; |
150 | - if (preg_match('/^id([0-9A-F]{8}) ([+-])([0-9]{3,4})fpm ([+-])([0-9.]{3,4})rot (.*)$/',$body_parse,$matches)) { |
|
150 | + if (preg_match('/^id([0-9A-F]{8}) ([+-])([0-9]{3,4})fpm ([+-])([0-9.]{3,4})rot (.*)$/',$body_parse,$matches)) { |
|
151 | 151 | $id = $matches[1]; |
152 | 152 | $mode = substr($id,0,2); |
153 | 153 | $address = substr($id,2); |
@@ -177,49 +177,49 @@ discard block |
||
177 | 177 | $stealth = (intval(substr($id,0,2), 16) & 0b10000000) != 0; |
178 | 178 | $result['stealth'] = $stealth; |
179 | 179 | $result['address'] = $address; |
180 | - } |
|
180 | + } |
|
181 | 181 | |
182 | - //Comment |
|
183 | - $result['comment'] = $body_parse; |
|
182 | + //Comment |
|
183 | + $result['comment'] = $body_parse; |
|
184 | 184 | } else { |
185 | - // parse weather |
|
186 | - $body_parse = substr($body_parse,19); |
|
187 | - $body_parse_len = strlen($body_parse); |
|
185 | + // parse weather |
|
186 | + $body_parse = substr($body_parse,19); |
|
187 | + $body_parse_len = strlen($body_parse); |
|
188 | 188 | |
189 | - if (preg_match('/^_{0,1}([0-9 \\.\\-]{3})\\/([0-9 \\.]{3})g([0-9 \\.]+)t(-{0,1}[0-9 \\.]+)/',$body_parse,$matches)) { |
|
189 | + if (preg_match('/^_{0,1}([0-9 \\.\\-]{3})\\/([0-9 \\.]{3})g([0-9 \\.]+)t(-{0,1}[0-9 \\.]+)/',$body_parse,$matches)) { |
|
190 | 190 | $result['wind_dir'] = $matches[1]; |
191 | 191 | $result['wind_speed'] = round($matches[2]*1.60934,1); |
192 | 192 | $result['wind_gust'] = round($matches[3]*1.60934,1); |
193 | 193 | $result['temp'] = round(5/9*(($matches[4])-32),1); |
194 | - $body_parse = substr($body_parse,strlen($matches[0])+1); |
|
195 | - } elseif (preg_match('/^_{0,1}c([0-9 \\.\\-]{3})s([0-9 \\.]{3})g([0-9 \\.]+)t(-{0,1}[0-9 \\.]+)/',$body_parse,$matches)) { |
|
194 | + $body_parse = substr($body_parse,strlen($matches[0])+1); |
|
195 | + } elseif (preg_match('/^_{0,1}c([0-9 \\.\\-]{3})s([0-9 \\.]{3})g([0-9 \\.]+)t(-{0,1}[0-9 \\.]+)/',$body_parse,$matches)) { |
|
196 | 196 | $result['wind_dir'] = $matches[1]; |
197 | 197 | $result['wind_speed'] = round($matches[2]*1.60934,1); |
198 | 198 | $result['wind_gust'] = round($matches[3]*1.60934,1); |
199 | 199 | $result['temp'] = round(5/9*(($matches[4])-32),1); |
200 | - $body_parse = substr($body_parse,strlen($matches[0])+1); |
|
201 | - } elseif (preg_match('/^_{0,1}([0-9 \\.\\-]{3})\\/([0-9 \\.]{3})t(-{0,1}[0-9 \\.]+)/',$body_parse,$matches)) { |
|
200 | + $body_parse = substr($body_parse,strlen($matches[0])+1); |
|
201 | + } elseif (preg_match('/^_{0,1}([0-9 \\.\\-]{3})\\/([0-9 \\.]{3})t(-{0,1}[0-9 \\.]+)/',$body_parse,$matches)) { |
|
202 | 202 | $result['wind_dir'] = $matches[1]; |
203 | 203 | $result['wind_speed'] = round($matches[2]*1.60934,1); |
204 | 204 | $result['wind_gust'] = round($matches[3]*1.60934,1); |
205 | - $body_parse = substr($body_parse,strlen($matches[0])+1); |
|
206 | - } elseif (preg_match('/^_{0,1}([0-9 \\.\\-]{3})\\/([0-9 \\.]{3})g([0-9 \\.]+)/',$body_parse,$matches)) { |
|
205 | + $body_parse = substr($body_parse,strlen($matches[0])+1); |
|
206 | + } elseif (preg_match('/^_{0,1}([0-9 \\.\\-]{3})\\/([0-9 \\.]{3})g([0-9 \\.]+)/',$body_parse,$matches)) { |
|
207 | 207 | $result['wind_dir'] = $matches[1]; |
208 | 208 | $result['wind_speed'] = round($matches[2]*1.60934,1); |
209 | 209 | $result['wind_gust'] = round($matches[3]*1.60934,1); |
210 | - $body_parse = substr($body_parse,strlen($matches[0])+1); |
|
211 | - } |
|
212 | - if (!isset($result['temp']) && strlen($body_parse) > 0 && preg_match('/^g([0-9]+)t(-?[0-9 \\.]{1,3})/',$body_parse,$matches)) { |
|
210 | + $body_parse = substr($body_parse,strlen($matches[0])+1); |
|
211 | + } |
|
212 | + if (!isset($result['temp']) && strlen($body_parse) > 0 && preg_match('/^g([0-9]+)t(-?[0-9 \\.]{1,3})/',$body_parse,$matches)) { |
|
213 | 213 | $result['temp'] = round(5/9*(($matches[1])-32),1); |
214 | - } |
|
214 | + } |
|
215 | + } |
|
215 | 216 | } |
216 | - } |
|
217 | 217 | } |
218 | 218 | if (isset($result['latitude'])) $result['latitude'] = round($result['latitude'],4); |
219 | 219 | if (isset($result['longitude'])) $result['longitude'] = round($result['longitude'],4); |
220 | 220 | //print_r($result); |
221 | 221 | return $result; |
222 | - } |
|
222 | + } |
|
223 | 223 | } |
224 | 224 | /* |
225 | 225 | $aprs = new aprs(); |
@@ -1,9 +1,9 @@ discard block |
||
1 | 1 | <?php |
2 | 2 | |
3 | 3 | if (!function_exists("gettext")) { |
4 | - function _($text) { |
|
5 | - return $text; |
|
6 | - } |
|
4 | + function _($text) { |
|
5 | + return $text; |
|
6 | + } |
|
7 | 7 | } else { |
8 | 8 | if (isset($_COOKIE['language']) && $_COOKIE['language'] != 'en_GB' && (isset($globalTranslate) && $globalTranslate)) { |
9 | 9 | $Language = new Language(); |
@@ -75,9 +75,9 @@ discard block |
||
75 | 75 | ); |
76 | 76 | |
77 | 77 | /** |
78 | - * Returns list of available locales |
|
79 | - * |
|
80 | - * @return array |
|
78 | + * Returns list of available locales |
|
79 | + * |
|
80 | + * @return array |
|
81 | 81 | */ |
82 | 82 | public function listLocaleDir() |
83 | 83 | { |
@@ -103,9 +103,9 @@ discard block |
||
103 | 103 | } |
104 | 104 | |
105 | 105 | /** |
106 | - * Returns list of available languages |
|
107 | - * |
|
108 | - * @return array |
|
106 | + * Returns list of available languages |
|
107 | + * |
|
108 | + * @return array |
|
109 | 109 | */ |
110 | 110 | public function getLanguages() |
111 | 111 | { |
@@ -7,73 +7,73 @@ |
||
7 | 7 | function __construct($dbc = null) { |
8 | 8 | $Connection = new Connection($dbc); |
9 | 9 | $this->db = $Connection->db; |
10 | - } |
|
11 | - public function getAllLocationInfo() { |
|
12 | - $query = "SELECT * FROM source_location"; |
|
13 | - $query_values = array(); |
|
14 | - try { |
|
15 | - $sth = $this->db->prepare($query); |
|
16 | - $sth->execute($query_values); |
|
17 | - } catch(PDOException $e) { |
|
18 | - return "error : ".$e->getMessage(); |
|
19 | - } |
|
20 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
21 | - return $all; |
|
22 | - } |
|
23 | - public function getLocationInfobyName($name) { |
|
24 | - $query = "SELECT * FROM source_location WHERE name = :name"; |
|
25 | - $query_values = array(':name' => $name); |
|
26 | - try { |
|
27 | - $sth = $this->db->prepare($query); |
|
28 | - $sth->execute($query_values); |
|
29 | - } catch(PDOException $e) { |
|
30 | - return "error : ".$e->getMessage(); |
|
31 | - } |
|
32 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
33 | - return $all; |
|
34 | - } |
|
35 | - public function getLocationInfobySourceName($name) { |
|
36 | - $query = "SELECT * FROM source_location WHERE source = :name"; |
|
37 | - $query_values = array(':name' => $name); |
|
38 | - try { |
|
39 | - $sth = $this->db->prepare($query); |
|
40 | - $sth->execute($query_values); |
|
41 | - } catch(PDOException $e) { |
|
42 | - return "error : ".$e->getMessage(); |
|
43 | - } |
|
44 | - $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
45 | - return $all; |
|
46 | - } |
|
10 | + } |
|
11 | + public function getAllLocationInfo() { |
|
12 | + $query = "SELECT * FROM source_location"; |
|
13 | + $query_values = array(); |
|
14 | + try { |
|
15 | + $sth = $this->db->prepare($query); |
|
16 | + $sth->execute($query_values); |
|
17 | + } catch(PDOException $e) { |
|
18 | + return "error : ".$e->getMessage(); |
|
19 | + } |
|
20 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
21 | + return $all; |
|
22 | + } |
|
23 | + public function getLocationInfobyName($name) { |
|
24 | + $query = "SELECT * FROM source_location WHERE name = :name"; |
|
25 | + $query_values = array(':name' => $name); |
|
26 | + try { |
|
27 | + $sth = $this->db->prepare($query); |
|
28 | + $sth->execute($query_values); |
|
29 | + } catch(PDOException $e) { |
|
30 | + return "error : ".$e->getMessage(); |
|
31 | + } |
|
32 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
33 | + return $all; |
|
34 | + } |
|
35 | + public function getLocationInfobySourceName($name) { |
|
36 | + $query = "SELECT * FROM source_location WHERE source = :name"; |
|
37 | + $query_values = array(':name' => $name); |
|
38 | + try { |
|
39 | + $sth = $this->db->prepare($query); |
|
40 | + $sth->execute($query_values); |
|
41 | + } catch(PDOException $e) { |
|
42 | + return "error : ".$e->getMessage(); |
|
43 | + } |
|
44 | + $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
|
45 | + return $all; |
|
46 | + } |
|
47 | 47 | |
48 | - public function addLocation($name,$latitude,$longitude,$altitude,$city,$country,$source,$logo = 'antenna.png') { |
|
49 | - $query = "INSERT INTO source_location (name,latitude,longitude,altitude,country,city,logo,source) VALUES (:name,:latitude,:longitude,:altitude,:country,:city,:logo,:source)"; |
|
50 | - $query_values = array(':name' => $name,':latitude' => $latitude, ':longitude' => $longitude,':altitude' => $altitude,':city' => $city,':country' => $country,':logo' => $logo,':source' => $source); |
|
51 | - try { |
|
52 | - $sth = $this->db->prepare($query); |
|
53 | - $sth->execute($query_values); |
|
54 | - } catch(PDOException $e) { |
|
55 | - return "error : ".$e->getMessage(); |
|
56 | - } |
|
57 | - } |
|
48 | + public function addLocation($name,$latitude,$longitude,$altitude,$city,$country,$source,$logo = 'antenna.png') { |
|
49 | + $query = "INSERT INTO source_location (name,latitude,longitude,altitude,country,city,logo,source) VALUES (:name,:latitude,:longitude,:altitude,:country,:city,:logo,:source)"; |
|
50 | + $query_values = array(':name' => $name,':latitude' => $latitude, ':longitude' => $longitude,':altitude' => $altitude,':city' => $city,':country' => $country,':logo' => $logo,':source' => $source); |
|
51 | + try { |
|
52 | + $sth = $this->db->prepare($query); |
|
53 | + $sth->execute($query_values); |
|
54 | + } catch(PDOException $e) { |
|
55 | + return "error : ".$e->getMessage(); |
|
56 | + } |
|
57 | + } |
|
58 | 58 | |
59 | - public function deleteLocation($id) { |
|
60 | - $query = "DELETE FROM source_location WHERE id = :id"; |
|
61 | - $query_values = array(':id' => $id); |
|
62 | - try { |
|
63 | - $sth = $this->db->prepare($query); |
|
64 | - $sth->execute($query_values); |
|
65 | - } catch(PDOException $e) { |
|
66 | - return "error : ".$e->getMessage(); |
|
67 | - } |
|
68 | - } |
|
69 | - public function deleteAllLocation() { |
|
70 | - $query = "DELETE FROM source_location"; |
|
71 | - try { |
|
72 | - $sth = $this->db->prepare($query); |
|
73 | - $sth->execute(); |
|
74 | - } catch(PDOException $e) { |
|
75 | - return "error : ".$e->getMessage(); |
|
76 | - } |
|
77 | - } |
|
59 | + public function deleteLocation($id) { |
|
60 | + $query = "DELETE FROM source_location WHERE id = :id"; |
|
61 | + $query_values = array(':id' => $id); |
|
62 | + try { |
|
63 | + $sth = $this->db->prepare($query); |
|
64 | + $sth->execute($query_values); |
|
65 | + } catch(PDOException $e) { |
|
66 | + return "error : ".$e->getMessage(); |
|
67 | + } |
|
68 | + } |
|
69 | + public function deleteAllLocation() { |
|
70 | + $query = "DELETE FROM source_location"; |
|
71 | + try { |
|
72 | + $sth = $this->db->prepare($query); |
|
73 | + $sth->execute(); |
|
74 | + } catch(PDOException $e) { |
|
75 | + return "error : ".$e->getMessage(); |
|
76 | + } |
|
77 | + } |
|
78 | 78 | } |
79 | 79 | ?> |
80 | 80 | \ No newline at end of file |
@@ -824,11 +824,11 @@ |
||
824 | 824 | } |
825 | 825 | |
826 | 826 | /** |
827 | - * Returns true if $string is valid UTF-8 and false otherwise. |
|
828 | - * |
|
829 | - * @param mixed $str String to be tested |
|
830 | - * @return boolean |
|
831 | - */ |
|
827 | + * Returns true if $string is valid UTF-8 and false otherwise. |
|
828 | + * |
|
829 | + * @param mixed $str String to be tested |
|
830 | + * @return boolean |
|
831 | + */ |
|
832 | 832 | static function is_utf8($str) |
833 | 833 | { |
834 | 834 | $c=0; $b=0; |
@@ -8,347 +8,347 @@ |
||
8 | 8 | |
9 | 9 | class UAgent |
10 | 10 | { |
11 | - // General token that says the browser is Mozilla compatible, |
|
12 | - // and is common to almost every browser today. |
|
13 | - const MOZILLA = 'Mozilla/5.0 '; |
|
14 | - |
|
15 | - /** |
|
16 | - * Processors by Arch. |
|
17 | - */ |
|
18 | - public static $processors = array( |
|
19 | - 'lin' => array( 'i686', 'x86_64' ), |
|
20 | - 'mac' => array( 'Intel', 'PPC', 'U; Intel', 'U; PPC' ), |
|
21 | - 'win' => array( 'foo' ) |
|
22 | - ); |
|
23 | - |
|
24 | - /** |
|
25 | - * Browsers |
|
26 | - * |
|
27 | - * Weighting is based on market share to determine frequency. |
|
28 | - */ |
|
29 | - public static $browsers = array( |
|
30 | - 34 => array( |
|
31 | - 89 => array( 'chrome', 'win' ), |
|
32 | - 9 => array( 'chrome', 'mac' ), |
|
33 | - 2 => array( 'chrome', 'lin' ) |
|
34 | - ), |
|
35 | - 32 => array( |
|
36 | - 100 => array( 'iexplorer', 'win' ) |
|
37 | - ), |
|
38 | - 25 => array( |
|
39 | - 83 => array( 'firefox', 'win' ), |
|
40 | - 16 => array( 'firefox', 'mac' ), |
|
41 | - 1 => array( 'firefox', 'lin' ) |
|
42 | - ), |
|
43 | - 7 => array( |
|
44 | - 95 => array( 'safari', 'mac' ), |
|
45 | - 4 => array( 'safari', 'win' ), |
|
46 | - 1 => array( 'safari', 'lin' ) |
|
47 | - ), |
|
48 | - 2 => array( |
|
49 | - 91 => array( 'opera', 'win' ), |
|
50 | - 6 => array( 'opera', 'lin' ), |
|
51 | - 3 => array( 'opera', 'mac' ) |
|
52 | - ) |
|
53 | - ); |
|
54 | - |
|
55 | - /** |
|
56 | - * List of Lanuge Culture Codes (ISO 639-1) |
|
57 | - * |
|
58 | - * @see: http://msdn.microsoft.com/en-gb/library/ee825488(v=cs.20).aspx |
|
59 | - */ |
|
60 | - public static $languages = array( |
|
61 | - 'af-ZA', 'ar-AE', 'ar-BH', 'ar-DZ', 'ar-EG', 'ar-IQ', 'ar-JO', 'ar-KW', 'ar-LB', |
|
62 | - 'ar-LY', 'ar-MA', 'ar-OM', 'ar-QA', 'ar-SA', 'ar-SY', 'ar-TN', 'ar-YE', 'be-BY', |
|
63 | - 'bg-BG', 'ca-ES', 'cs-CZ', 'Cy-az-AZ', 'Cy-sr-SP', 'Cy-uz-UZ', 'da-DK', 'de-AT', |
|
64 | - 'de-CH', 'de-DE', 'de-LI', 'de-LU', 'div-MV', 'el-GR', 'en-AU', 'en-BZ', 'en-CA', |
|
65 | - 'en-CB', 'en-GB', 'en-IE', 'en-JM', 'en-NZ', 'en-PH', 'en-TT', 'en-US', 'en-ZA', |
|
66 | - 'en-ZW', 'es-AR', 'es-BO', 'es-CL', 'es-CO', 'es-CR', 'es-DO', 'es-EC', 'es-ES', |
|
67 | - 'es-GT', 'es-HN', 'es-MX', 'es-NI', 'es-PA', 'es-PE', 'es-PR', 'es-PY', 'es-SV', |
|
68 | - 'es-UY', 'es-VE', 'et-EE', 'eu-ES', 'fa-IR', 'fi-FI', 'fo-FO', 'fr-BE', 'fr-CA', |
|
69 | - 'fr-CH', 'fr-FR', 'fr-LU', 'fr-MC', 'gl-ES', 'gu-IN', 'he-IL', 'hi-IN', 'hr-HR', |
|
70 | - 'hu-HU', 'hy-AM', 'id-ID', 'is-IS', 'it-CH', 'it-IT', 'ja-JP', 'ka-GE', 'kk-KZ', |
|
71 | - 'kn-IN', 'kok-IN', 'ko-KR', 'ky-KZ', 'Lt-az-AZ', 'lt-LT', 'Lt-sr-SP', 'Lt-uz-UZ', |
|
72 | - 'lv-LV', 'mk-MK', 'mn-MN', 'mr-IN', 'ms-BN', 'ms-MY', 'nb-NO', 'nl-BE', 'nl-NL', |
|
73 | - 'nn-NO', 'pa-IN', 'pl-PL', 'pt-BR', 'pt-PT', 'ro-RO', 'ru-RU', 'sa-IN', 'sk-SK', |
|
74 | - 'sl-SI', 'sq-AL', 'sv-FI', 'sv-SE', 'sw-KE', 'syr-SY', 'ta-IN', 'te-IN', 'th-TH', |
|
75 | - 'tr-TR', 'tt-RU', 'uk-UA', 'ur-PK', 'vi-VN', 'zh-CHS', 'zh-CHT', 'zh-CN', 'zh-HK', |
|
76 | - 'zh-MO', 'zh-SG', 'zh-TW', |
|
77 | - ); |
|
78 | - |
|
79 | - /** |
|
80 | - * Generate Device Platform |
|
81 | - * |
|
82 | - * Uses a random result with a weighting related to frequencies. |
|
83 | - */ |
|
84 | - public static function generate_platform() |
|
85 | - { |
|
86 | - $rand = mt_rand( 1, 100 ); |
|
87 | - $sum = 0; |
|
88 | - |
|
89 | - foreach ( self::$browsers as $share => $freq_os ) |
|
90 | - { |
|
91 | - $sum += $share; |
|
92 | - |
|
93 | - if ( $rand <= $sum ) |
|
94 | - { |
|
95 | - $rand = mt_rand( 1, 100 ); |
|
96 | - $sum = 0; |
|
97 | - |
|
98 | - foreach ( $freq_os as $share => $choice ) |
|
99 | - { |
|
100 | - $sum += $share; |
|
101 | - |
|
102 | - if ( $rand <= $sum ) |
|
103 | - { |
|
104 | - return $choice; |
|
105 | - } |
|
106 | - } |
|
107 | - } |
|
108 | - } |
|
109 | - |
|
110 | - throw new Exception( 'Sum of $browsers frequency is not 100.' ); |
|
111 | - } |
|
112 | - |
|
113 | - private static function array_random( $array ) |
|
114 | - { |
|
115 | - $i = array_rand( $array, 1 ); |
|
116 | - |
|
117 | - return $array[$i]; |
|
118 | - } |
|
119 | - |
|
120 | - private static function get_language( $lang = array() ) |
|
121 | - { |
|
122 | - return self::array_random( empty( $lang ) ? self::$languages : $lang ); |
|
123 | - } |
|
124 | - |
|
125 | - private static function get_processor( $os ) |
|
126 | - { |
|
127 | - return self::array_random( self::$processors[$os] ); |
|
128 | - } |
|
129 | - |
|
130 | - private static function get_version_nt() |
|
131 | - { |
|
132 | - // Win2k (5.0) to Win 7 (6.1). |
|
133 | - return mt_rand( 5, 6 ) . '.' . mt_rand( 0, 1 ); |
|
134 | - } |
|
135 | - |
|
136 | - private static function get_version_osx() |
|
137 | - { |
|
138 | - return '10_' . mt_rand( 5, 7 ) . '_' . mt_rand( 0, 9 ); |
|
139 | - } |
|
140 | - |
|
141 | - private static function get_version_webkit() |
|
142 | - { |
|
143 | - return mt_rand( 531, 536 ) . mt_rand( 0, 2 ); |
|
144 | - } |
|
145 | - |
|
146 | - private static function get_verison_chrome() |
|
147 | - { |
|
148 | - return mt_rand( 13, 15 ) . '.0.' . mt_rand( 800, 899 ) . '.0'; |
|
149 | - } |
|
150 | - |
|
151 | - private static function get_version_gecko() |
|
152 | - { |
|
153 | - return mt_rand( 17, 31 ) . '.0'; |
|
154 | - } |
|
155 | - |
|
156 | - private static function get_version_ie() |
|
157 | - { |
|
158 | - return mt_rand( 7, 9 ) . '.0'; |
|
159 | - } |
|
160 | - |
|
161 | - private static function get_version_trident() |
|
162 | - { |
|
163 | - // IE8 (4.0) to IE11 (7.0). |
|
164 | - return mt_rand( 4, 7 ) . '.0'; |
|
165 | - } |
|
166 | - |
|
167 | - private static function get_version_net() |
|
168 | - { |
|
169 | - // generic .NET Framework common language run time (CLR) version numbers. |
|
170 | - $frameworks = array( |
|
171 | - '2.0.50727', |
|
172 | - '3.0.4506', |
|
173 | - '3.5.30729', |
|
174 | - ); |
|
175 | - |
|
176 | - $rev = '.' . mt_rand( 26, 648 ); |
|
177 | - |
|
178 | - return self::array_random( $frameworks ) . $rev; |
|
179 | - } |
|
180 | - |
|
181 | - private static function get_version_safari() |
|
182 | - { |
|
183 | - if ( mt_rand( 0, 1 ) == 0 ) |
|
184 | - { |
|
185 | - $ver = mt_rand( 4, 5 ) . '.' . mt_rand( 0, 1 ); |
|
186 | - } |
|
187 | - else |
|
188 | - { |
|
189 | - $ver = mt_rand( 4, 5 ) . '.0.' . mt_rand( 1, 5 ); |
|
190 | - } |
|
191 | - |
|
192 | - return $ver; |
|
193 | - } |
|
194 | - |
|
195 | - private static function get_version_opera() |
|
196 | - { |
|
197 | - return mt_rand( 15, 19 ) . '.0.' . mt_rand( 1147, 1284 ) . mt_rand( 49, 100 ); |
|
198 | - } |
|
199 | - |
|
200 | - /** |
|
201 | - * Opera |
|
202 | - * |
|
203 | - * @see: http://dev.opera.com/blog/opera-user-agent-strings-opera-15-and-beyond/ |
|
204 | - */ |
|
205 | - public static function opera( $arch ) |
|
206 | - { |
|
207 | - $opera = ' OPR/' . self::get_version_opera(); |
|
208 | - |
|
209 | - // WebKit Rendering Engine (WebKit = Backend, Safari = Frontend). |
|
210 | - $engine = self::get_version_webkit(); |
|
211 | - $webkit = ' AppleWebKit/' . $engine . ' (KHTML, like Gecko)'; |
|
212 | - $chrome = ' Chrome/' . self::get_verison_chrome(); |
|
213 | - $safari = ' Safari/' . $engine; |
|
214 | - |
|
215 | - switch ( $arch ) |
|
216 | - { |
|
217 | - case 'lin': |
|
218 | - return '(X11; Linux {proc}) ' . $webkit . $chrome . $safari . $opera; |
|
219 | - case 'mac': |
|
220 | - $osx = self::get_version_osx(); |
|
221 | - return '(Macintosh; U; {proc} Mac OS X ' . $osx . ')' . $webkit . $chrome . $safari . $opera; |
|
222 | - case 'win': |
|
223 | - // fall through. |
|
224 | - default: |
|
225 | - $nt = self::get_version_nt(); |
|
226 | - return '(Windows NT ' . $nt . '; WOW64) ' . $webkit . $chrome . $safari . $opera; |
|
227 | - } |
|
228 | - } |
|
229 | - |
|
230 | - /** |
|
231 | - * Safari |
|
232 | - * |
|
233 | - */ |
|
234 | - public static function safari( $arch ) |
|
235 | - { |
|
236 | - $version = ' Version/' . self::get_version_safari(); |
|
237 | - |
|
238 | - // WebKit Rendering Engine (WebKit = Backend, Safari = Frontend). |
|
239 | - $engine = self::get_version_webkit(); |
|
240 | - $webkit = ' AppleWebKit/' . $engine . ' (KHTML, like Gecko)'; |
|
241 | - $safari = ' Safari/' . $engine; |
|
242 | - |
|
243 | - switch ( $arch ) |
|
244 | - { |
|
245 | - case 'mac': |
|
246 | - $osx = self::get_version_osx(); |
|
247 | - return '(Macintosh; U; {proc} Mac OS X ' . $osx . '; {lang})' . $webkit . $version . $safari; |
|
248 | - case 'win': |
|
249 | - // fall through. |
|
250 | - default: |
|
251 | - $nt = self::get_version_nt(); |
|
252 | - return '(Windows; U; Windows NT ' . $nt . ')' . $webkit . $version . $safari; |
|
253 | - } |
|
254 | - |
|
255 | - } |
|
256 | - |
|
257 | - /** |
|
258 | - * Internet Explorer |
|
259 | - * |
|
260 | - * @see: http://msdn.microsoft.com/en-gb/library/ms537503(v=vs.85).aspx |
|
261 | - */ |
|
262 | - public static function iexplorer( $arch ) |
|
263 | - { |
|
264 | - $nt = self::get_version_nt(); |
|
265 | - $ie = self::get_version_ie(); |
|
266 | - $trident = self::get_version_trident(); |
|
267 | - $net = self::get_version_net(); |
|
268 | - |
|
269 | - return '(compatible' |
|
270 | - . '; MSIE ' . $ie |
|
271 | - . '; Windows NT ' . $nt |
|
272 | - . '; WOW64' // A 32-bit version of Internet Explorer is running on a 64-bit processor. |
|
273 | - . '; Trident/' . $trident |
|
274 | - . '; .NET CLR ' . $net |
|
275 | - . ')'; |
|
276 | - } |
|
277 | - |
|
278 | - /** |
|
279 | - * Firefox User-Agent |
|
280 | - * |
|
281 | - * @see: https://developer.mozilla.org/en-US/docs/Web/HTTP/Gecko_user_agent_string_reference |
|
282 | - */ |
|
283 | - public static function firefox( $arch ) |
|
284 | - { |
|
285 | - // The release version of Gecko. |
|
286 | - $gecko = self::get_version_gecko(); |
|
287 | - |
|
288 | - // On desktop, the gecko trail is fixed. |
|
289 | - $trail = '20100101'; |
|
290 | - |
|
291 | - $release = 'rv:' . $gecko; |
|
292 | - $version = 'Gecko/' . $trail . ' Firefox/' . $gecko; |
|
293 | - |
|
294 | - switch ( $arch ) |
|
295 | - { |
|
296 | - case 'lin': |
|
297 | - return '(X11; Linux {proc}; ' . $release . ') ' . $version; |
|
298 | - case 'mac': |
|
299 | - $osx = self::get_version_osx(); |
|
300 | - return '(Macintosh; {proc} Mac OS X ' . $osx . '; ' . $release . ') ' . $version; |
|
301 | - case 'win': |
|
302 | - // fall through. |
|
303 | - default: |
|
304 | - $nt = self::get_version_nt(); |
|
305 | - return '(Windows NT ' . $nt . '; {lang}; ' . $release . ') ' . $version; |
|
306 | - } |
|
307 | - } |
|
308 | - |
|
309 | - public static function chrome( $arch ) |
|
310 | - { |
|
311 | - $chrome = ' Chrome/' . self::get_verison_chrome(); |
|
312 | - |
|
313 | - // WebKit Rendering Engine (WebKit = Backend, Safari = Frontend). |
|
314 | - $engine = self::get_version_webkit(); |
|
315 | - $webkit = ' AppleWebKit/' . $engine . ' (KHTML, like Gecko)'; |
|
316 | - $safari = ' Safari/' . $engine; |
|
317 | - |
|
318 | - switch ( $arch ) |
|
319 | - { |
|
320 | - case 'lin': |
|
321 | - return '(X11; Linux {proc}) ' . $webkit . $chrome . $safari; |
|
322 | - case 'mac': |
|
323 | - $osx = self::get_version_osx(); |
|
324 | - return '(Macintosh; U; {proc} Mac OS X ' . $osx . ')' . $webkit . $chrome . $safari; |
|
325 | - case 'win': |
|
326 | - // fall through. |
|
327 | - default: |
|
328 | - $nt = self::get_version_nt(); |
|
329 | - return '(Windows NT ' . $nt . ') ' . $webkit . $chrome . $safari; |
|
330 | - } |
|
331 | - } |
|
332 | - |
|
333 | - public static function random( $lang = array( 'en-US' ) ) |
|
334 | - { |
|
335 | - list( $browser, $os ) = self::generate_platform(); |
|
336 | - |
|
337 | - return self::generate( $browser, $os, $lang ); |
|
338 | - } |
|
339 | - |
|
340 | - public static function generate( $browser = 'chrome', $os = 'win', $lang = array( 'en-US' ) ) |
|
341 | - { |
|
342 | - $ua = self::MOZILLA . call_user_func( 'UAgent::' . $browser, $os ); |
|
343 | - |
|
344 | - $tags = array( |
|
345 | - '{proc}' => self::get_processor( $os ), |
|
346 | - '{lang}' => self::get_language( $lang ), |
|
347 | - ); |
|
348 | - |
|
349 | - $ua = str_replace( array_keys( $tags ), array_values( $tags ), $ua ); |
|
350 | - |
|
351 | - return $ua; |
|
352 | - } |
|
11 | + // General token that says the browser is Mozilla compatible, |
|
12 | + // and is common to almost every browser today. |
|
13 | + const MOZILLA = 'Mozilla/5.0 '; |
|
14 | + |
|
15 | + /** |
|
16 | + * Processors by Arch. |
|
17 | + */ |
|
18 | + public static $processors = array( |
|
19 | + 'lin' => array( 'i686', 'x86_64' ), |
|
20 | + 'mac' => array( 'Intel', 'PPC', 'U; Intel', 'U; PPC' ), |
|
21 | + 'win' => array( 'foo' ) |
|
22 | + ); |
|
23 | + |
|
24 | + /** |
|
25 | + * Browsers |
|
26 | + * |
|
27 | + * Weighting is based on market share to determine frequency. |
|
28 | + */ |
|
29 | + public static $browsers = array( |
|
30 | + 34 => array( |
|
31 | + 89 => array( 'chrome', 'win' ), |
|
32 | + 9 => array( 'chrome', 'mac' ), |
|
33 | + 2 => array( 'chrome', 'lin' ) |
|
34 | + ), |
|
35 | + 32 => array( |
|
36 | + 100 => array( 'iexplorer', 'win' ) |
|
37 | + ), |
|
38 | + 25 => array( |
|
39 | + 83 => array( 'firefox', 'win' ), |
|
40 | + 16 => array( 'firefox', 'mac' ), |
|
41 | + 1 => array( 'firefox', 'lin' ) |
|
42 | + ), |
|
43 | + 7 => array( |
|
44 | + 95 => array( 'safari', 'mac' ), |
|
45 | + 4 => array( 'safari', 'win' ), |
|
46 | + 1 => array( 'safari', 'lin' ) |
|
47 | + ), |
|
48 | + 2 => array( |
|
49 | + 91 => array( 'opera', 'win' ), |
|
50 | + 6 => array( 'opera', 'lin' ), |
|
51 | + 3 => array( 'opera', 'mac' ) |
|
52 | + ) |
|
53 | + ); |
|
54 | + |
|
55 | + /** |
|
56 | + * List of Lanuge Culture Codes (ISO 639-1) |
|
57 | + * |
|
58 | + * @see: http://msdn.microsoft.com/en-gb/library/ee825488(v=cs.20).aspx |
|
59 | + */ |
|
60 | + public static $languages = array( |
|
61 | + 'af-ZA', 'ar-AE', 'ar-BH', 'ar-DZ', 'ar-EG', 'ar-IQ', 'ar-JO', 'ar-KW', 'ar-LB', |
|
62 | + 'ar-LY', 'ar-MA', 'ar-OM', 'ar-QA', 'ar-SA', 'ar-SY', 'ar-TN', 'ar-YE', 'be-BY', |
|
63 | + 'bg-BG', 'ca-ES', 'cs-CZ', 'Cy-az-AZ', 'Cy-sr-SP', 'Cy-uz-UZ', 'da-DK', 'de-AT', |
|
64 | + 'de-CH', 'de-DE', 'de-LI', 'de-LU', 'div-MV', 'el-GR', 'en-AU', 'en-BZ', 'en-CA', |
|
65 | + 'en-CB', 'en-GB', 'en-IE', 'en-JM', 'en-NZ', 'en-PH', 'en-TT', 'en-US', 'en-ZA', |
|
66 | + 'en-ZW', 'es-AR', 'es-BO', 'es-CL', 'es-CO', 'es-CR', 'es-DO', 'es-EC', 'es-ES', |
|
67 | + 'es-GT', 'es-HN', 'es-MX', 'es-NI', 'es-PA', 'es-PE', 'es-PR', 'es-PY', 'es-SV', |
|
68 | + 'es-UY', 'es-VE', 'et-EE', 'eu-ES', 'fa-IR', 'fi-FI', 'fo-FO', 'fr-BE', 'fr-CA', |
|
69 | + 'fr-CH', 'fr-FR', 'fr-LU', 'fr-MC', 'gl-ES', 'gu-IN', 'he-IL', 'hi-IN', 'hr-HR', |
|
70 | + 'hu-HU', 'hy-AM', 'id-ID', 'is-IS', 'it-CH', 'it-IT', 'ja-JP', 'ka-GE', 'kk-KZ', |
|
71 | + 'kn-IN', 'kok-IN', 'ko-KR', 'ky-KZ', 'Lt-az-AZ', 'lt-LT', 'Lt-sr-SP', 'Lt-uz-UZ', |
|
72 | + 'lv-LV', 'mk-MK', 'mn-MN', 'mr-IN', 'ms-BN', 'ms-MY', 'nb-NO', 'nl-BE', 'nl-NL', |
|
73 | + 'nn-NO', 'pa-IN', 'pl-PL', 'pt-BR', 'pt-PT', 'ro-RO', 'ru-RU', 'sa-IN', 'sk-SK', |
|
74 | + 'sl-SI', 'sq-AL', 'sv-FI', 'sv-SE', 'sw-KE', 'syr-SY', 'ta-IN', 'te-IN', 'th-TH', |
|
75 | + 'tr-TR', 'tt-RU', 'uk-UA', 'ur-PK', 'vi-VN', 'zh-CHS', 'zh-CHT', 'zh-CN', 'zh-HK', |
|
76 | + 'zh-MO', 'zh-SG', 'zh-TW', |
|
77 | + ); |
|
78 | + |
|
79 | + /** |
|
80 | + * Generate Device Platform |
|
81 | + * |
|
82 | + * Uses a random result with a weighting related to frequencies. |
|
83 | + */ |
|
84 | + public static function generate_platform() |
|
85 | + { |
|
86 | + $rand = mt_rand( 1, 100 ); |
|
87 | + $sum = 0; |
|
88 | + |
|
89 | + foreach ( self::$browsers as $share => $freq_os ) |
|
90 | + { |
|
91 | + $sum += $share; |
|
92 | + |
|
93 | + if ( $rand <= $sum ) |
|
94 | + { |
|
95 | + $rand = mt_rand( 1, 100 ); |
|
96 | + $sum = 0; |
|
97 | + |
|
98 | + foreach ( $freq_os as $share => $choice ) |
|
99 | + { |
|
100 | + $sum += $share; |
|
101 | + |
|
102 | + if ( $rand <= $sum ) |
|
103 | + { |
|
104 | + return $choice; |
|
105 | + } |
|
106 | + } |
|
107 | + } |
|
108 | + } |
|
109 | + |
|
110 | + throw new Exception( 'Sum of $browsers frequency is not 100.' ); |
|
111 | + } |
|
112 | + |
|
113 | + private static function array_random( $array ) |
|
114 | + { |
|
115 | + $i = array_rand( $array, 1 ); |
|
116 | + |
|
117 | + return $array[$i]; |
|
118 | + } |
|
119 | + |
|
120 | + private static function get_language( $lang = array() ) |
|
121 | + { |
|
122 | + return self::array_random( empty( $lang ) ? self::$languages : $lang ); |
|
123 | + } |
|
124 | + |
|
125 | + private static function get_processor( $os ) |
|
126 | + { |
|
127 | + return self::array_random( self::$processors[$os] ); |
|
128 | + } |
|
129 | + |
|
130 | + private static function get_version_nt() |
|
131 | + { |
|
132 | + // Win2k (5.0) to Win 7 (6.1). |
|
133 | + return mt_rand( 5, 6 ) . '.' . mt_rand( 0, 1 ); |
|
134 | + } |
|
135 | + |
|
136 | + private static function get_version_osx() |
|
137 | + { |
|
138 | + return '10_' . mt_rand( 5, 7 ) . '_' . mt_rand( 0, 9 ); |
|
139 | + } |
|
140 | + |
|
141 | + private static function get_version_webkit() |
|
142 | + { |
|
143 | + return mt_rand( 531, 536 ) . mt_rand( 0, 2 ); |
|
144 | + } |
|
145 | + |
|
146 | + private static function get_verison_chrome() |
|
147 | + { |
|
148 | + return mt_rand( 13, 15 ) . '.0.' . mt_rand( 800, 899 ) . '.0'; |
|
149 | + } |
|
150 | + |
|
151 | + private static function get_version_gecko() |
|
152 | + { |
|
153 | + return mt_rand( 17, 31 ) . '.0'; |
|
154 | + } |
|
155 | + |
|
156 | + private static function get_version_ie() |
|
157 | + { |
|
158 | + return mt_rand( 7, 9 ) . '.0'; |
|
159 | + } |
|
160 | + |
|
161 | + private static function get_version_trident() |
|
162 | + { |
|
163 | + // IE8 (4.0) to IE11 (7.0). |
|
164 | + return mt_rand( 4, 7 ) . '.0'; |
|
165 | + } |
|
166 | + |
|
167 | + private static function get_version_net() |
|
168 | + { |
|
169 | + // generic .NET Framework common language run time (CLR) version numbers. |
|
170 | + $frameworks = array( |
|
171 | + '2.0.50727', |
|
172 | + '3.0.4506', |
|
173 | + '3.5.30729', |
|
174 | + ); |
|
175 | + |
|
176 | + $rev = '.' . mt_rand( 26, 648 ); |
|
177 | + |
|
178 | + return self::array_random( $frameworks ) . $rev; |
|
179 | + } |
|
180 | + |
|
181 | + private static function get_version_safari() |
|
182 | + { |
|
183 | + if ( mt_rand( 0, 1 ) == 0 ) |
|
184 | + { |
|
185 | + $ver = mt_rand( 4, 5 ) . '.' . mt_rand( 0, 1 ); |
|
186 | + } |
|
187 | + else |
|
188 | + { |
|
189 | + $ver = mt_rand( 4, 5 ) . '.0.' . mt_rand( 1, 5 ); |
|
190 | + } |
|
191 | + |
|
192 | + return $ver; |
|
193 | + } |
|
194 | + |
|
195 | + private static function get_version_opera() |
|
196 | + { |
|
197 | + return mt_rand( 15, 19 ) . '.0.' . mt_rand( 1147, 1284 ) . mt_rand( 49, 100 ); |
|
198 | + } |
|
199 | + |
|
200 | + /** |
|
201 | + * Opera |
|
202 | + * |
|
203 | + * @see: http://dev.opera.com/blog/opera-user-agent-strings-opera-15-and-beyond/ |
|
204 | + */ |
|
205 | + public static function opera( $arch ) |
|
206 | + { |
|
207 | + $opera = ' OPR/' . self::get_version_opera(); |
|
208 | + |
|
209 | + // WebKit Rendering Engine (WebKit = Backend, Safari = Frontend). |
|
210 | + $engine = self::get_version_webkit(); |
|
211 | + $webkit = ' AppleWebKit/' . $engine . ' (KHTML, like Gecko)'; |
|
212 | + $chrome = ' Chrome/' . self::get_verison_chrome(); |
|
213 | + $safari = ' Safari/' . $engine; |
|
214 | + |
|
215 | + switch ( $arch ) |
|
216 | + { |
|
217 | + case 'lin': |
|
218 | + return '(X11; Linux {proc}) ' . $webkit . $chrome . $safari . $opera; |
|
219 | + case 'mac': |
|
220 | + $osx = self::get_version_osx(); |
|
221 | + return '(Macintosh; U; {proc} Mac OS X ' . $osx . ')' . $webkit . $chrome . $safari . $opera; |
|
222 | + case 'win': |
|
223 | + // fall through. |
|
224 | + default: |
|
225 | + $nt = self::get_version_nt(); |
|
226 | + return '(Windows NT ' . $nt . '; WOW64) ' . $webkit . $chrome . $safari . $opera; |
|
227 | + } |
|
228 | + } |
|
229 | + |
|
230 | + /** |
|
231 | + * Safari |
|
232 | + * |
|
233 | + */ |
|
234 | + public static function safari( $arch ) |
|
235 | + { |
|
236 | + $version = ' Version/' . self::get_version_safari(); |
|
237 | + |
|
238 | + // WebKit Rendering Engine (WebKit = Backend, Safari = Frontend). |
|
239 | + $engine = self::get_version_webkit(); |
|
240 | + $webkit = ' AppleWebKit/' . $engine . ' (KHTML, like Gecko)'; |
|
241 | + $safari = ' Safari/' . $engine; |
|
242 | + |
|
243 | + switch ( $arch ) |
|
244 | + { |
|
245 | + case 'mac': |
|
246 | + $osx = self::get_version_osx(); |
|
247 | + return '(Macintosh; U; {proc} Mac OS X ' . $osx . '; {lang})' . $webkit . $version . $safari; |
|
248 | + case 'win': |
|
249 | + // fall through. |
|
250 | + default: |
|
251 | + $nt = self::get_version_nt(); |
|
252 | + return '(Windows; U; Windows NT ' . $nt . ')' . $webkit . $version . $safari; |
|
253 | + } |
|
254 | + |
|
255 | + } |
|
256 | + |
|
257 | + /** |
|
258 | + * Internet Explorer |
|
259 | + * |
|
260 | + * @see: http://msdn.microsoft.com/en-gb/library/ms537503(v=vs.85).aspx |
|
261 | + */ |
|
262 | + public static function iexplorer( $arch ) |
|
263 | + { |
|
264 | + $nt = self::get_version_nt(); |
|
265 | + $ie = self::get_version_ie(); |
|
266 | + $trident = self::get_version_trident(); |
|
267 | + $net = self::get_version_net(); |
|
268 | + |
|
269 | + return '(compatible' |
|
270 | + . '; MSIE ' . $ie |
|
271 | + . '; Windows NT ' . $nt |
|
272 | + . '; WOW64' // A 32-bit version of Internet Explorer is running on a 64-bit processor. |
|
273 | + . '; Trident/' . $trident |
|
274 | + . '; .NET CLR ' . $net |
|
275 | + . ')'; |
|
276 | + } |
|
277 | + |
|
278 | + /** |
|
279 | + * Firefox User-Agent |
|
280 | + * |
|
281 | + * @see: https://developer.mozilla.org/en-US/docs/Web/HTTP/Gecko_user_agent_string_reference |
|
282 | + */ |
|
283 | + public static function firefox( $arch ) |
|
284 | + { |
|
285 | + // The release version of Gecko. |
|
286 | + $gecko = self::get_version_gecko(); |
|
287 | + |
|
288 | + // On desktop, the gecko trail is fixed. |
|
289 | + $trail = '20100101'; |
|
290 | + |
|
291 | + $release = 'rv:' . $gecko; |
|
292 | + $version = 'Gecko/' . $trail . ' Firefox/' . $gecko; |
|
293 | + |
|
294 | + switch ( $arch ) |
|
295 | + { |
|
296 | + case 'lin': |
|
297 | + return '(X11; Linux {proc}; ' . $release . ') ' . $version; |
|
298 | + case 'mac': |
|
299 | + $osx = self::get_version_osx(); |
|
300 | + return '(Macintosh; {proc} Mac OS X ' . $osx . '; ' . $release . ') ' . $version; |
|
301 | + case 'win': |
|
302 | + // fall through. |
|
303 | + default: |
|
304 | + $nt = self::get_version_nt(); |
|
305 | + return '(Windows NT ' . $nt . '; {lang}; ' . $release . ') ' . $version; |
|
306 | + } |
|
307 | + } |
|
308 | + |
|
309 | + public static function chrome( $arch ) |
|
310 | + { |
|
311 | + $chrome = ' Chrome/' . self::get_verison_chrome(); |
|
312 | + |
|
313 | + // WebKit Rendering Engine (WebKit = Backend, Safari = Frontend). |
|
314 | + $engine = self::get_version_webkit(); |
|
315 | + $webkit = ' AppleWebKit/' . $engine . ' (KHTML, like Gecko)'; |
|
316 | + $safari = ' Safari/' . $engine; |
|
317 | + |
|
318 | + switch ( $arch ) |
|
319 | + { |
|
320 | + case 'lin': |
|
321 | + return '(X11; Linux {proc}) ' . $webkit . $chrome . $safari; |
|
322 | + case 'mac': |
|
323 | + $osx = self::get_version_osx(); |
|
324 | + return '(Macintosh; U; {proc} Mac OS X ' . $osx . ')' . $webkit . $chrome . $safari; |
|
325 | + case 'win': |
|
326 | + // fall through. |
|
327 | + default: |
|
328 | + $nt = self::get_version_nt(); |
|
329 | + return '(Windows NT ' . $nt . ') ' . $webkit . $chrome . $safari; |
|
330 | + } |
|
331 | + } |
|
332 | + |
|
333 | + public static function random( $lang = array( 'en-US' ) ) |
|
334 | + { |
|
335 | + list( $browser, $os ) = self::generate_platform(); |
|
336 | + |
|
337 | + return self::generate( $browser, $os, $lang ); |
|
338 | + } |
|
339 | + |
|
340 | + public static function generate( $browser = 'chrome', $os = 'win', $lang = array( 'en-US' ) ) |
|
341 | + { |
|
342 | + $ua = self::MOZILLA . call_user_func( 'UAgent::' . $browser, $os ); |
|
343 | + |
|
344 | + $tags = array( |
|
345 | + '{proc}' => self::get_processor( $os ), |
|
346 | + '{lang}' => self::get_language( $lang ), |
|
347 | + ); |
|
348 | + |
|
349 | + $ua = str_replace( array_keys( $tags ), array_values( $tags ), $ua ); |
|
350 | + |
|
351 | + return $ua; |
|
352 | + } |
|
353 | 353 | } |
354 | 354 | ?> |
@@ -9,357 +9,357 @@ |
||
9 | 9 | } |
10 | 10 | |
11 | 11 | function testMethods() { |
12 | - foreach (scandir('./input') as $file) { |
|
13 | - $parts = explode('.',$file); |
|
14 | - if ($parts[0]) { |
|
15 | - $format = $parts[1]; |
|
16 | - $value = file_get_contents('./input/'.$file); |
|
17 | - $geometry = geoPHP::load($value, $format); |
|
12 | + foreach (scandir('./input') as $file) { |
|
13 | + $parts = explode('.',$file); |
|
14 | + if ($parts[0]) { |
|
15 | + $format = $parts[1]; |
|
16 | + $value = file_get_contents('./input/'.$file); |
|
17 | + $geometry = geoPHP::load($value, $format); |
|
18 | 18 | |
19 | - $methods = array( |
|
20 | - array('name' => 'area'), |
|
21 | - array('name' => 'boundary'), |
|
22 | - array('name' => 'getBBox'), |
|
23 | - array('name' => 'centroid'), |
|
24 | - array('name' => 'length'), |
|
25 | - array('name' => 'greatCircleLength'), |
|
26 | - array('name' => 'haversineLength'), |
|
27 | - array('name' => 'y'), |
|
28 | - array('name' => 'x'), |
|
29 | - array('name' => 'numGeometries'), |
|
30 | - array('name' => 'geometryN', 'argument' => '1'), |
|
31 | - array('name' => 'startPoint'), |
|
32 | - array('name' => 'endPoint'), |
|
33 | - array('name' => 'isRing'), |
|
34 | - array('name' => 'isClosed'), |
|
35 | - array('name' => 'numPoints'), |
|
36 | - array('name' => 'pointN', 'argument' => '1'), |
|
37 | - array('name' => 'exteriorRing'), |
|
38 | - array('name' => 'numInteriorRings'), |
|
39 | - array('name' => 'interiorRingN', 'argument' => '1'), |
|
40 | - array('name' => 'dimension'), |
|
41 | - array('name' => 'geometryType'), |
|
42 | - array('name' => 'SRID'), |
|
43 | - array('name' => 'setSRID', 'argument' => '4326'), |
|
44 | - ); |
|
19 | + $methods = array( |
|
20 | + array('name' => 'area'), |
|
21 | + array('name' => 'boundary'), |
|
22 | + array('name' => 'getBBox'), |
|
23 | + array('name' => 'centroid'), |
|
24 | + array('name' => 'length'), |
|
25 | + array('name' => 'greatCircleLength'), |
|
26 | + array('name' => 'haversineLength'), |
|
27 | + array('name' => 'y'), |
|
28 | + array('name' => 'x'), |
|
29 | + array('name' => 'numGeometries'), |
|
30 | + array('name' => 'geometryN', 'argument' => '1'), |
|
31 | + array('name' => 'startPoint'), |
|
32 | + array('name' => 'endPoint'), |
|
33 | + array('name' => 'isRing'), |
|
34 | + array('name' => 'isClosed'), |
|
35 | + array('name' => 'numPoints'), |
|
36 | + array('name' => 'pointN', 'argument' => '1'), |
|
37 | + array('name' => 'exteriorRing'), |
|
38 | + array('name' => 'numInteriorRings'), |
|
39 | + array('name' => 'interiorRingN', 'argument' => '1'), |
|
40 | + array('name' => 'dimension'), |
|
41 | + array('name' => 'geometryType'), |
|
42 | + array('name' => 'SRID'), |
|
43 | + array('name' => 'setSRID', 'argument' => '4326'), |
|
44 | + ); |
|
45 | 45 | |
46 | - foreach($methods as $method) { |
|
47 | - $argument = NULL; |
|
48 | - $method_name = $method['name']; |
|
49 | - if (isset($method['argument'])) { |
|
50 | - $argument = $method['argument']; |
|
51 | - } |
|
46 | + foreach($methods as $method) { |
|
47 | + $argument = NULL; |
|
48 | + $method_name = $method['name']; |
|
49 | + if (isset($method['argument'])) { |
|
50 | + $argument = $method['argument']; |
|
51 | + } |
|
52 | 52 | |
53 | - $this->_methods_tester($geometry, $method_name, $argument); |
|
54 | - } |
|
53 | + $this->_methods_tester($geometry, $method_name, $argument); |
|
54 | + } |
|
55 | 55 | |
56 | - $this->_methods_tester_with_geos($geometry); |
|
57 | - } |
|
58 | - } |
|
56 | + $this->_methods_tester_with_geos($geometry); |
|
57 | + } |
|
58 | + } |
|
59 | 59 | } |
60 | 60 | |
61 | 61 | function _methods_tester($geometry, $method_name, $argument) { |
62 | 62 | |
63 | - if (!method_exists($geometry, $method_name)) { |
|
64 | - $this->fail("Method ".$method_name.'() doesn\'t exists.'); |
|
65 | - return; |
|
66 | - } |
|
63 | + if (!method_exists($geometry, $method_name)) { |
|
64 | + $this->fail("Method ".$method_name.'() doesn\'t exists.'); |
|
65 | + return; |
|
66 | + } |
|
67 | 67 | |
68 | - switch ($method_name) { |
|
69 | - case 'y': |
|
70 | - case 'x': |
|
71 | - if ($geometry->geometryType() == 'Point') { |
|
72 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
73 | - } |
|
74 | - if ($geometry->geometryType() == 'LineString') { |
|
75 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
76 | - } |
|
77 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
78 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
79 | - } |
|
80 | - break; |
|
81 | - case 'geometryN': |
|
82 | - if ($geometry->geometryType() == 'Point') { |
|
83 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
84 | - } |
|
85 | - if ($geometry->geometryType() == 'LineString') { |
|
86 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
87 | - } |
|
88 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
89 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
90 | - } |
|
91 | - break; |
|
92 | - case 'startPoint': |
|
93 | - if ($geometry->geometryType() == 'Point') { |
|
94 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
95 | - } |
|
96 | - if ($geometry->geometryType() == 'LineString') { |
|
97 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
98 | - } |
|
99 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
100 | - //TODO: Add a method startPoint() to MultiLineString. |
|
101 | - //$this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
102 | - } |
|
103 | - break; |
|
104 | - case 'endPoint': |
|
105 | - if ($geometry->geometryType() == 'Point') { |
|
106 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
107 | - } |
|
108 | - if ($geometry->geometryType() == 'LineString') { |
|
109 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
110 | - } |
|
111 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
112 | - //TODO: Add a method endPoint() to MultiLineString. |
|
113 | - //$this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
114 | - } |
|
115 | - break; |
|
116 | - case 'isRing': |
|
117 | - if ($geometry->geometryType() == 'Point') { |
|
118 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
119 | - } |
|
120 | - if ($geometry->geometryType() == 'LineString') { |
|
121 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
122 | - } |
|
123 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
124 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
125 | - } |
|
126 | - break; |
|
127 | - case 'isClosed': |
|
128 | - if ($geometry->geometryType() == 'Point') { |
|
129 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
130 | - } |
|
131 | - if ($geometry->geometryType() == 'LineString') { |
|
132 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
133 | - } |
|
134 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
135 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
136 | - } |
|
137 | - break; |
|
138 | - case 'pointN': |
|
139 | - if ($geometry->geometryType() == 'Point') { |
|
140 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
141 | - } |
|
142 | - if ($geometry->geometryType() == 'LineString') { |
|
143 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
144 | - } |
|
145 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
146 | - //TODO: Add a method pointN() to MultiLineString. |
|
147 | - //$this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
148 | - } |
|
149 | - break; |
|
150 | - case 'exteriorRing': |
|
151 | - if ($geometry->geometryType() == 'Point') { |
|
152 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
153 | - } |
|
154 | - if ($geometry->geometryType() == 'LineString') { |
|
155 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
156 | - } |
|
157 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
158 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
159 | - } |
|
160 | - break; |
|
161 | - case 'numInteriorRings': |
|
162 | - if ($geometry->geometryType() == 'Point') { |
|
163 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
164 | - } |
|
165 | - if ($geometry->geometryType() == 'LineString') { |
|
166 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
167 | - } |
|
168 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
169 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
170 | - } |
|
171 | - break; |
|
172 | - case 'interiorRingN': |
|
173 | - if ($geometry->geometryType() == 'Point') { |
|
174 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
175 | - } |
|
176 | - if ($geometry->geometryType() == 'LineString') { |
|
177 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
178 | - } |
|
179 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
180 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
181 | - } |
|
182 | - break; |
|
183 | - case 'SRID': |
|
184 | - if ($geometry->geometryType() == 'Point') { |
|
185 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
186 | - } |
|
187 | - if ($geometry->geometryType() == 'LineString') { |
|
188 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
189 | - } |
|
190 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
191 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
192 | - } |
|
193 | - break; |
|
194 | - case 'getBBox': |
|
195 | - if ($geometry->geometryType() == 'Point') { |
|
196 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
197 | - } |
|
198 | - if ($geometry->geometryType() == 'LineString') { |
|
199 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
200 | - } |
|
201 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
202 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
203 | - } |
|
204 | - break; |
|
205 | - case 'centroid': |
|
206 | - if ($geometry->geometryType() == 'Point') { |
|
207 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
208 | - } |
|
209 | - if ($geometry->geometryType() == 'LineString') { |
|
210 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
211 | - } |
|
212 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
213 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
214 | - } |
|
215 | - break; |
|
216 | - case 'length': |
|
217 | - if ($geometry->geometryType() == 'Point') { |
|
218 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
219 | - } |
|
220 | - if ($geometry->geometryType() == 'LineString') { |
|
221 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
222 | - } |
|
223 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
224 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
225 | - } |
|
226 | - break; |
|
227 | - case 'numGeometries': |
|
228 | - if ($geometry->geometryType() == 'Point') { |
|
229 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
230 | - } |
|
231 | - if ($geometry->geometryType() == 'LineString') { |
|
232 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
233 | - } |
|
234 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
235 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
236 | - } |
|
237 | - break; |
|
238 | - case 'numPoints': |
|
239 | - if ($geometry->geometryType() == 'Point') { |
|
240 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
241 | - } |
|
242 | - if ($geometry->geometryType() == 'LineString') { |
|
243 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
244 | - } |
|
245 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
246 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
247 | - } |
|
248 | - break; |
|
249 | - case 'dimension': |
|
250 | - if ($geometry->geometryType() == 'Point') { |
|
251 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
252 | - } |
|
253 | - if ($geometry->geometryType() == 'LineString') { |
|
254 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
255 | - } |
|
256 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
257 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
258 | - } |
|
259 | - break; |
|
260 | - case 'boundary': |
|
261 | - if ($geometry->geometryType() == 'Point') { |
|
262 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
263 | - } |
|
264 | - if ($geometry->geometryType() == 'LineString') { |
|
265 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
266 | - } |
|
267 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
268 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
269 | - } |
|
270 | - break; |
|
271 | - case 'haversineLength': |
|
272 | - //TODO: Check if output is a float >= 0. |
|
273 | - //TODO: Sometimes haversineLength() returns NAN, needs to check why. |
|
274 | - break; |
|
275 | - case 'greatCircleLength': |
|
276 | - case 'area': |
|
277 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
278 | - break; |
|
279 | - case 'geometryType': |
|
280 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
281 | - break; |
|
282 | - case 'setSRID': |
|
283 | - //TODO: The method setSRID() should return TRUE. |
|
284 | - break; |
|
285 | - default: |
|
286 | - $this->assertTrue($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
287 | - } |
|
68 | + switch ($method_name) { |
|
69 | + case 'y': |
|
70 | + case 'x': |
|
71 | + if ($geometry->geometryType() == 'Point') { |
|
72 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
73 | + } |
|
74 | + if ($geometry->geometryType() == 'LineString') { |
|
75 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
76 | + } |
|
77 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
78 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
79 | + } |
|
80 | + break; |
|
81 | + case 'geometryN': |
|
82 | + if ($geometry->geometryType() == 'Point') { |
|
83 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
84 | + } |
|
85 | + if ($geometry->geometryType() == 'LineString') { |
|
86 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
87 | + } |
|
88 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
89 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
90 | + } |
|
91 | + break; |
|
92 | + case 'startPoint': |
|
93 | + if ($geometry->geometryType() == 'Point') { |
|
94 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
95 | + } |
|
96 | + if ($geometry->geometryType() == 'LineString') { |
|
97 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
98 | + } |
|
99 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
100 | + //TODO: Add a method startPoint() to MultiLineString. |
|
101 | + //$this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
102 | + } |
|
103 | + break; |
|
104 | + case 'endPoint': |
|
105 | + if ($geometry->geometryType() == 'Point') { |
|
106 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
107 | + } |
|
108 | + if ($geometry->geometryType() == 'LineString') { |
|
109 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
110 | + } |
|
111 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
112 | + //TODO: Add a method endPoint() to MultiLineString. |
|
113 | + //$this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
114 | + } |
|
115 | + break; |
|
116 | + case 'isRing': |
|
117 | + if ($geometry->geometryType() == 'Point') { |
|
118 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
119 | + } |
|
120 | + if ($geometry->geometryType() == 'LineString') { |
|
121 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
122 | + } |
|
123 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
124 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
125 | + } |
|
126 | + break; |
|
127 | + case 'isClosed': |
|
128 | + if ($geometry->geometryType() == 'Point') { |
|
129 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
130 | + } |
|
131 | + if ($geometry->geometryType() == 'LineString') { |
|
132 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
133 | + } |
|
134 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
135 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
136 | + } |
|
137 | + break; |
|
138 | + case 'pointN': |
|
139 | + if ($geometry->geometryType() == 'Point') { |
|
140 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
141 | + } |
|
142 | + if ($geometry->geometryType() == 'LineString') { |
|
143 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
144 | + } |
|
145 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
146 | + //TODO: Add a method pointN() to MultiLineString. |
|
147 | + //$this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
148 | + } |
|
149 | + break; |
|
150 | + case 'exteriorRing': |
|
151 | + if ($geometry->geometryType() == 'Point') { |
|
152 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
153 | + } |
|
154 | + if ($geometry->geometryType() == 'LineString') { |
|
155 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
156 | + } |
|
157 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
158 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
159 | + } |
|
160 | + break; |
|
161 | + case 'numInteriorRings': |
|
162 | + if ($geometry->geometryType() == 'Point') { |
|
163 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
164 | + } |
|
165 | + if ($geometry->geometryType() == 'LineString') { |
|
166 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
167 | + } |
|
168 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
169 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
170 | + } |
|
171 | + break; |
|
172 | + case 'interiorRingN': |
|
173 | + if ($geometry->geometryType() == 'Point') { |
|
174 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
175 | + } |
|
176 | + if ($geometry->geometryType() == 'LineString') { |
|
177 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
178 | + } |
|
179 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
180 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
181 | + } |
|
182 | + break; |
|
183 | + case 'SRID': |
|
184 | + if ($geometry->geometryType() == 'Point') { |
|
185 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
186 | + } |
|
187 | + if ($geometry->geometryType() == 'LineString') { |
|
188 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
189 | + } |
|
190 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
191 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
192 | + } |
|
193 | + break; |
|
194 | + case 'getBBox': |
|
195 | + if ($geometry->geometryType() == 'Point') { |
|
196 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
197 | + } |
|
198 | + if ($geometry->geometryType() == 'LineString') { |
|
199 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
200 | + } |
|
201 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
202 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
203 | + } |
|
204 | + break; |
|
205 | + case 'centroid': |
|
206 | + if ($geometry->geometryType() == 'Point') { |
|
207 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
208 | + } |
|
209 | + if ($geometry->geometryType() == 'LineString') { |
|
210 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
211 | + } |
|
212 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
213 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
214 | + } |
|
215 | + break; |
|
216 | + case 'length': |
|
217 | + if ($geometry->geometryType() == 'Point') { |
|
218 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
219 | + } |
|
220 | + if ($geometry->geometryType() == 'LineString') { |
|
221 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
222 | + } |
|
223 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
224 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
225 | + } |
|
226 | + break; |
|
227 | + case 'numGeometries': |
|
228 | + if ($geometry->geometryType() == 'Point') { |
|
229 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
230 | + } |
|
231 | + if ($geometry->geometryType() == 'LineString') { |
|
232 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
233 | + } |
|
234 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
235 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
236 | + } |
|
237 | + break; |
|
238 | + case 'numPoints': |
|
239 | + if ($geometry->geometryType() == 'Point') { |
|
240 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
241 | + } |
|
242 | + if ($geometry->geometryType() == 'LineString') { |
|
243 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
244 | + } |
|
245 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
246 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
247 | + } |
|
248 | + break; |
|
249 | + case 'dimension': |
|
250 | + if ($geometry->geometryType() == 'Point') { |
|
251 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
252 | + } |
|
253 | + if ($geometry->geometryType() == 'LineString') { |
|
254 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
255 | + } |
|
256 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
257 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
258 | + } |
|
259 | + break; |
|
260 | + case 'boundary': |
|
261 | + if ($geometry->geometryType() == 'Point') { |
|
262 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
263 | + } |
|
264 | + if ($geometry->geometryType() == 'LineString') { |
|
265 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
266 | + } |
|
267 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
268 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
269 | + } |
|
270 | + break; |
|
271 | + case 'haversineLength': |
|
272 | + //TODO: Check if output is a float >= 0. |
|
273 | + //TODO: Sometimes haversineLength() returns NAN, needs to check why. |
|
274 | + break; |
|
275 | + case 'greatCircleLength': |
|
276 | + case 'area': |
|
277 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
278 | + break; |
|
279 | + case 'geometryType': |
|
280 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
281 | + break; |
|
282 | + case 'setSRID': |
|
283 | + //TODO: The method setSRID() should return TRUE. |
|
284 | + break; |
|
285 | + default: |
|
286 | + $this->assertTrue($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
287 | + } |
|
288 | 288 | |
289 | 289 | } |
290 | 290 | |
291 | 291 | function _methods_tester_with_geos($geometry) { |
292 | - // Cannot test methods if GEOS is not intstalled |
|
293 | - if (!geoPHP::geosInstalled()) return; |
|
292 | + // Cannot test methods if GEOS is not intstalled |
|
293 | + if (!geoPHP::geosInstalled()) return; |
|
294 | 294 | |
295 | - $methods = array( |
|
296 | - //'boundary', //@@TODO: Uncomment this and fix errors |
|
297 | - 'envelope', //@@TODO: Testing reveales errors in this method -- POINT vs. POLYGON |
|
298 | - 'getBBox', |
|
299 | - 'x', |
|
300 | - 'y', |
|
301 | - 'startPoint', |
|
302 | - 'endPoint', |
|
303 | - 'isRing', |
|
304 | - 'isClosed', |
|
305 | - 'numPoints', |
|
306 | - ); |
|
295 | + $methods = array( |
|
296 | + //'boundary', //@@TODO: Uncomment this and fix errors |
|
297 | + 'envelope', //@@TODO: Testing reveales errors in this method -- POINT vs. POLYGON |
|
298 | + 'getBBox', |
|
299 | + 'x', |
|
300 | + 'y', |
|
301 | + 'startPoint', |
|
302 | + 'endPoint', |
|
303 | + 'isRing', |
|
304 | + 'isClosed', |
|
305 | + 'numPoints', |
|
306 | + ); |
|
307 | 307 | |
308 | - foreach ($methods as $method) { |
|
309 | - // Turn GEOS on |
|
310 | - geoPHP::geosInstalled(TRUE); |
|
311 | - $geos_result = $geometry->$method(); |
|
308 | + foreach ($methods as $method) { |
|
309 | + // Turn GEOS on |
|
310 | + geoPHP::geosInstalled(TRUE); |
|
311 | + $geos_result = $geometry->$method(); |
|
312 | 312 | |
313 | - // Turn GEOS off |
|
314 | - geoPHP::geosInstalled(FALSE); |
|
315 | - $norm_result = $geometry->$method(); |
|
313 | + // Turn GEOS off |
|
314 | + geoPHP::geosInstalled(FALSE); |
|
315 | + $norm_result = $geometry->$method(); |
|
316 | 316 | |
317 | - // Turn GEOS back On |
|
318 | - geoPHP::geosInstalled(TRUE); |
|
317 | + // Turn GEOS back On |
|
318 | + geoPHP::geosInstalled(TRUE); |
|
319 | 319 | |
320 | - $geos_type = gettype($geos_result); |
|
321 | - $norm_type = gettype($norm_result); |
|
320 | + $geos_type = gettype($geos_result); |
|
321 | + $norm_type = gettype($norm_result); |
|
322 | 322 | |
323 | - if ($geos_type != $norm_type) { |
|
324 | - $this->fail('Type mismatch on '.$method); |
|
325 | - $this->dump($geos_type); |
|
326 | - $this->dump($norm_type); |
|
327 | - continue; |
|
328 | - } |
|
323 | + if ($geos_type != $norm_type) { |
|
324 | + $this->fail('Type mismatch on '.$method); |
|
325 | + $this->dump($geos_type); |
|
326 | + $this->dump($norm_type); |
|
327 | + continue; |
|
328 | + } |
|
329 | 329 | |
330 | - // Now check base on type |
|
331 | - if ($geos_type == 'object') { |
|
332 | - $haus_dist = $geos_result->hausdorffDistance(geoPHP::load($norm_result->out('wkt'),'wkt')); |
|
330 | + // Now check base on type |
|
331 | + if ($geos_type == 'object') { |
|
332 | + $haus_dist = $geos_result->hausdorffDistance(geoPHP::load($norm_result->out('wkt'),'wkt')); |
|
333 | 333 | |
334 | - // Get the length of the diagonal of the bbox - this is used to scale the haustorff distance |
|
335 | - // Using Pythagorean theorem |
|
336 | - $bb = $geos_result->getBBox(); |
|
337 | - $scale = sqrt((($bb['maxy'] - $bb['miny'])^2) + (($bb['maxx'] - $bb['minx'])^2)); |
|
334 | + // Get the length of the diagonal of the bbox - this is used to scale the haustorff distance |
|
335 | + // Using Pythagorean theorem |
|
336 | + $bb = $geos_result->getBBox(); |
|
337 | + $scale = sqrt((($bb['maxy'] - $bb['miny'])^2) + (($bb['maxx'] - $bb['minx'])^2)); |
|
338 | 338 | |
339 | - // The difference in the output of GEOS and native-PHP methods should be less than 0.5 scaled haustorff units |
|
340 | - if ($haus_dist / $scale > 0.5) { |
|
341 | - $this->fail('Output mismatch on '.$method); |
|
342 | - $this->dump('GEOS : '); |
|
343 | - $this->dump($geos_result->out('wkt')); |
|
344 | - $this->dump('NORM : '); |
|
345 | - $this->dump($norm_result->out('wkt')); |
|
346 | - continue; |
|
347 | - } |
|
348 | - } |
|
339 | + // The difference in the output of GEOS and native-PHP methods should be less than 0.5 scaled haustorff units |
|
340 | + if ($haus_dist / $scale > 0.5) { |
|
341 | + $this->fail('Output mismatch on '.$method); |
|
342 | + $this->dump('GEOS : '); |
|
343 | + $this->dump($geos_result->out('wkt')); |
|
344 | + $this->dump('NORM : '); |
|
345 | + $this->dump($norm_result->out('wkt')); |
|
346 | + continue; |
|
347 | + } |
|
348 | + } |
|
349 | 349 | |
350 | - if ($geos_type == 'boolean' || $geos_type == 'string') { |
|
351 | - if ($geos_result !== $norm_result) { |
|
352 | - $this->fail('Output mismatch on '.$method); |
|
353 | - $this->dump('GEOS : '); |
|
354 | - $this->dump((string) $geos_result); |
|
355 | - $this->dump('NORM : '); |
|
356 | - $this->dump((string) $norm_result); |
|
357 | - continue; |
|
358 | - } |
|
359 | - } |
|
350 | + if ($geos_type == 'boolean' || $geos_type == 'string') { |
|
351 | + if ($geos_result !== $norm_result) { |
|
352 | + $this->fail('Output mismatch on '.$method); |
|
353 | + $this->dump('GEOS : '); |
|
354 | + $this->dump((string) $geos_result); |
|
355 | + $this->dump('NORM : '); |
|
356 | + $this->dump((string) $norm_result); |
|
357 | + continue; |
|
358 | + } |
|
359 | + } |
|
360 | 360 | |
361 | - //@@TODO: Run tests for output of types arrays and float |
|
362 | - //@@TODO: centroid function is non-compliant for collections and strings |
|
363 | - } |
|
361 | + //@@TODO: Run tests for output of types arrays and float |
|
362 | + //@@TODO: centroid function is non-compliant for collections and strings |
|
363 | + } |
|
364 | 364 | } |
365 | 365 | } |
@@ -9,281 +9,281 @@ |
||
9 | 9 | } |
10 | 10 | |
11 | 11 | function testMethods() { |
12 | - $format = 'gpx'; |
|
13 | - $value = file_get_contents('./input/20120702.gpx'); |
|
14 | - $geometry = geoPHP::load($value, $format); |
|
12 | + $format = 'gpx'; |
|
13 | + $value = file_get_contents('./input/20120702.gpx'); |
|
14 | + $geometry = geoPHP::load($value, $format); |
|
15 | 15 | |
16 | - $methods = array( |
|
17 | - array('name' => 'area'), |
|
18 | - array('name' => 'boundary'), |
|
19 | - array('name' => 'getBBox'), |
|
20 | - array('name' => 'centroid'), |
|
21 | - array('name' => 'length'), |
|
22 | - array('name' => 'greatCircleLength', 'argument' => 6378137), |
|
23 | - array('name' => 'haversineLength'), |
|
24 | - array('name' => 'y'), |
|
25 | - array('name' => 'x'), |
|
26 | - array('name' => 'numGeometries'), |
|
27 | - array('name' => 'geometryN', 'argument' => '1'), |
|
28 | - array('name' => 'startPoint'), |
|
29 | - array('name' => 'endPoint'), |
|
30 | - array('name' => 'isRing'), |
|
31 | - array('name' => 'isClosed'), |
|
32 | - array('name' => 'numPoints'), |
|
33 | - array('name' => 'pointN', 'argument' => '1'), |
|
34 | - array('name' => 'exteriorRing'), |
|
35 | - array('name' => 'numInteriorRings'), |
|
36 | - array('name' => 'interiorRingN', 'argument' => '1'), |
|
37 | - array('name' => 'dimension'), |
|
38 | - array('name' => 'geometryType'), |
|
39 | - array('name' => 'SRID'), |
|
40 | - array('name' => 'setSRID', 'argument' => '4326'), |
|
41 | - ); |
|
16 | + $methods = array( |
|
17 | + array('name' => 'area'), |
|
18 | + array('name' => 'boundary'), |
|
19 | + array('name' => 'getBBox'), |
|
20 | + array('name' => 'centroid'), |
|
21 | + array('name' => 'length'), |
|
22 | + array('name' => 'greatCircleLength', 'argument' => 6378137), |
|
23 | + array('name' => 'haversineLength'), |
|
24 | + array('name' => 'y'), |
|
25 | + array('name' => 'x'), |
|
26 | + array('name' => 'numGeometries'), |
|
27 | + array('name' => 'geometryN', 'argument' => '1'), |
|
28 | + array('name' => 'startPoint'), |
|
29 | + array('name' => 'endPoint'), |
|
30 | + array('name' => 'isRing'), |
|
31 | + array('name' => 'isClosed'), |
|
32 | + array('name' => 'numPoints'), |
|
33 | + array('name' => 'pointN', 'argument' => '1'), |
|
34 | + array('name' => 'exteriorRing'), |
|
35 | + array('name' => 'numInteriorRings'), |
|
36 | + array('name' => 'interiorRingN', 'argument' => '1'), |
|
37 | + array('name' => 'dimension'), |
|
38 | + array('name' => 'geometryType'), |
|
39 | + array('name' => 'SRID'), |
|
40 | + array('name' => 'setSRID', 'argument' => '4326'), |
|
41 | + ); |
|
42 | 42 | |
43 | - foreach($methods as $method) { |
|
44 | - $argument = NULL; |
|
45 | - $method_name = $method['name']; |
|
46 | - if (isset($method['argument'])) { |
|
47 | - $argument = $method['argument']; |
|
48 | - } |
|
49 | - $this->_methods_tester($geometry, $method_name, $argument); |
|
50 | - } |
|
43 | + foreach($methods as $method) { |
|
44 | + $argument = NULL; |
|
45 | + $method_name = $method['name']; |
|
46 | + if (isset($method['argument'])) { |
|
47 | + $argument = $method['argument']; |
|
48 | + } |
|
49 | + $this->_methods_tester($geometry, $method_name, $argument); |
|
50 | + } |
|
51 | 51 | } |
52 | 52 | |
53 | 53 | function _methods_tester($geometry, $method_name, $argument) { |
54 | 54 | |
55 | - if (!method_exists($geometry, $method_name)) { |
|
56 | - $this->fail("Method ".$method_name.'() doesn\'t exists.'); |
|
57 | - return; |
|
58 | - } |
|
55 | + if (!method_exists($geometry, $method_name)) { |
|
56 | + $this->fail("Method ".$method_name.'() doesn\'t exists.'); |
|
57 | + return; |
|
58 | + } |
|
59 | 59 | |
60 | - switch ($method_name) { |
|
61 | - case 'y': |
|
62 | - case 'x': |
|
63 | - if ($geometry->geometryType() == 'Point') { |
|
64 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
65 | - } |
|
66 | - if ($geometry->geometryType() == 'LineString') { |
|
67 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
68 | - } |
|
69 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
70 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
71 | - } |
|
72 | - break; |
|
73 | - case 'geometryN': |
|
74 | - if ($geometry->geometryType() == 'Point') { |
|
75 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
76 | - } |
|
77 | - if ($geometry->geometryType() == 'LineString') { |
|
78 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
79 | - } |
|
80 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
81 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
82 | - } |
|
83 | - break; |
|
84 | - case 'startPoint': |
|
85 | - if ($geometry->geometryType() == 'Point') { |
|
86 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
87 | - } |
|
88 | - if ($geometry->geometryType() == 'LineString') { |
|
89 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
90 | - } |
|
91 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
92 | - //TODO: Add a method startPoint() to MultiLineString. |
|
93 | - //$this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
94 | - } |
|
95 | - break; |
|
96 | - case 'endPoint': |
|
97 | - if ($geometry->geometryType() == 'Point') { |
|
98 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
99 | - } |
|
100 | - if ($geometry->geometryType() == 'LineString') { |
|
101 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
102 | - } |
|
103 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
104 | - //TODO: Add a method endPoint() to MultiLineString. |
|
105 | - //$this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
106 | - } |
|
107 | - break; |
|
108 | - case 'isRing': |
|
109 | - if ($geometry->geometryType() == 'Point') { |
|
110 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
111 | - } |
|
112 | - if ($geometry->geometryType() == 'LineString') { |
|
113 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
114 | - } |
|
115 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
116 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
117 | - } |
|
118 | - break; |
|
119 | - case 'isClosed': |
|
120 | - if ($geometry->geometryType() == 'Point') { |
|
121 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
122 | - } |
|
123 | - if ($geometry->geometryType() == 'LineString') { |
|
124 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
125 | - } |
|
126 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
127 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
128 | - } |
|
129 | - break; |
|
130 | - case 'pointN': |
|
131 | - if ($geometry->geometryType() == 'Point') { |
|
132 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
133 | - } |
|
134 | - if ($geometry->geometryType() == 'LineString') { |
|
135 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
136 | - } |
|
137 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
138 | - //TODO: Add a method pointN() to MultiLineString. |
|
139 | - //$this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
140 | - } |
|
141 | - break; |
|
142 | - case 'exteriorRing': |
|
143 | - if ($geometry->geometryType() == 'Point') { |
|
144 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
145 | - } |
|
146 | - if ($geometry->geometryType() == 'LineString') { |
|
147 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
148 | - } |
|
149 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
150 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
151 | - } |
|
152 | - break; |
|
153 | - case 'numInteriorRings': |
|
154 | - if ($geometry->geometryType() == 'Point') { |
|
155 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
156 | - } |
|
157 | - if ($geometry->geometryType() == 'LineString') { |
|
158 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
159 | - } |
|
160 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
161 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
162 | - } |
|
163 | - break; |
|
164 | - case 'interiorRingN': |
|
165 | - if ($geometry->geometryType() == 'Point') { |
|
166 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
167 | - } |
|
168 | - if ($geometry->geometryType() == 'LineString') { |
|
169 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
170 | - } |
|
171 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
172 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
173 | - } |
|
174 | - break; |
|
175 | - case 'setSRID': |
|
176 | - //TODO: The method setSRID() should return TRUE. |
|
177 | - break; |
|
178 | - case 'SRID': |
|
179 | - if ($geometry->geometryType() == 'Point') { |
|
180 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
181 | - } |
|
182 | - if ($geometry->geometryType() == 'LineString') { |
|
183 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
184 | - } |
|
185 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
186 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
187 | - } |
|
188 | - break; |
|
189 | - case 'getBBox': |
|
190 | - if ($geometry->geometryType() == 'Point') { |
|
191 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
192 | - } |
|
193 | - if ($geometry->geometryType() == 'LineString') { |
|
194 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
195 | - } |
|
196 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
197 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
198 | - } |
|
199 | - break; |
|
200 | - case 'centroid': |
|
201 | - if ($geometry->geometryType() == 'Point') { |
|
202 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
203 | - } |
|
204 | - if ($geometry->geometryType() == 'LineString') { |
|
205 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
206 | - } |
|
207 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
208 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
209 | - } |
|
210 | - break; |
|
211 | - case 'length': |
|
212 | - if ($geometry->geometryType() == 'Point') { |
|
213 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
214 | - } |
|
215 | - if ($geometry->geometryType() == 'LineString') { |
|
216 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
217 | - } |
|
218 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
219 | - $this->assertEquals($geometry->$method_name($argument), (float) '0.11624637315233', 'Failed on ' . $method_name); |
|
220 | - } |
|
221 | - break; |
|
222 | - case 'numGeometries': |
|
223 | - if ($geometry->geometryType() == 'Point') { |
|
224 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
225 | - } |
|
226 | - if ($geometry->geometryType() == 'LineString') { |
|
227 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
228 | - } |
|
229 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
230 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
231 | - } |
|
232 | - break; |
|
233 | - case 'numPoints': |
|
234 | - if ($geometry->geometryType() == 'Point') { |
|
235 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
236 | - } |
|
237 | - if ($geometry->geometryType() == 'LineString') { |
|
238 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
239 | - } |
|
240 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
241 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
242 | - } |
|
243 | - break; |
|
244 | - case 'dimension': |
|
245 | - if ($geometry->geometryType() == 'Point') { |
|
246 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
247 | - } |
|
248 | - if ($geometry->geometryType() == 'LineString') { |
|
249 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
250 | - } |
|
251 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
252 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
253 | - } |
|
254 | - break; |
|
255 | - case 'boundary': |
|
256 | - if ($geometry->geometryType() == 'Point') { |
|
257 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
258 | - } |
|
259 | - if ($geometry->geometryType() == 'LineString') { |
|
260 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
261 | - } |
|
262 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
263 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
264 | - } |
|
265 | - break; |
|
266 | - case 'greatCircleLength': |
|
267 | - if ($geometry->geometryType() == 'Point') { |
|
268 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
269 | - } |
|
270 | - if ($geometry->geometryType() == 'LineString') { |
|
271 | - $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
272 | - } |
|
273 | - if ($geometry->geometryType() == 'MultiLineString') { |
|
274 | - $this->assertNotEquals($geometry->$method_name($argument), '9500.9359867418', 'Failed on ' . $method_name); |
|
275 | - } |
|
276 | - break; |
|
277 | - case 'haversineLength': |
|
278 | - case 'area': |
|
279 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
280 | - break; |
|
281 | - case 'geometryType': |
|
282 | - $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
283 | - break; |
|
284 | - default: |
|
285 | - $this->assertTrue($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
286 | - } |
|
60 | + switch ($method_name) { |
|
61 | + case 'y': |
|
62 | + case 'x': |
|
63 | + if ($geometry->geometryType() == 'Point') { |
|
64 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
65 | + } |
|
66 | + if ($geometry->geometryType() == 'LineString') { |
|
67 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
68 | + } |
|
69 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
70 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
71 | + } |
|
72 | + break; |
|
73 | + case 'geometryN': |
|
74 | + if ($geometry->geometryType() == 'Point') { |
|
75 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
76 | + } |
|
77 | + if ($geometry->geometryType() == 'LineString') { |
|
78 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
79 | + } |
|
80 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
81 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
82 | + } |
|
83 | + break; |
|
84 | + case 'startPoint': |
|
85 | + if ($geometry->geometryType() == 'Point') { |
|
86 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
87 | + } |
|
88 | + if ($geometry->geometryType() == 'LineString') { |
|
89 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
90 | + } |
|
91 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
92 | + //TODO: Add a method startPoint() to MultiLineString. |
|
93 | + //$this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
94 | + } |
|
95 | + break; |
|
96 | + case 'endPoint': |
|
97 | + if ($geometry->geometryType() == 'Point') { |
|
98 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
99 | + } |
|
100 | + if ($geometry->geometryType() == 'LineString') { |
|
101 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
102 | + } |
|
103 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
104 | + //TODO: Add a method endPoint() to MultiLineString. |
|
105 | + //$this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
106 | + } |
|
107 | + break; |
|
108 | + case 'isRing': |
|
109 | + if ($geometry->geometryType() == 'Point') { |
|
110 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
111 | + } |
|
112 | + if ($geometry->geometryType() == 'LineString') { |
|
113 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
114 | + } |
|
115 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
116 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
117 | + } |
|
118 | + break; |
|
119 | + case 'isClosed': |
|
120 | + if ($geometry->geometryType() == 'Point') { |
|
121 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
122 | + } |
|
123 | + if ($geometry->geometryType() == 'LineString') { |
|
124 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
125 | + } |
|
126 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
127 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
128 | + } |
|
129 | + break; |
|
130 | + case 'pointN': |
|
131 | + if ($geometry->geometryType() == 'Point') { |
|
132 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
133 | + } |
|
134 | + if ($geometry->geometryType() == 'LineString') { |
|
135 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
136 | + } |
|
137 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
138 | + //TODO: Add a method pointN() to MultiLineString. |
|
139 | + //$this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
140 | + } |
|
141 | + break; |
|
142 | + case 'exteriorRing': |
|
143 | + if ($geometry->geometryType() == 'Point') { |
|
144 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
145 | + } |
|
146 | + if ($geometry->geometryType() == 'LineString') { |
|
147 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
148 | + } |
|
149 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
150 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
151 | + } |
|
152 | + break; |
|
153 | + case 'numInteriorRings': |
|
154 | + if ($geometry->geometryType() == 'Point') { |
|
155 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
156 | + } |
|
157 | + if ($geometry->geometryType() == 'LineString') { |
|
158 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
159 | + } |
|
160 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
161 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
162 | + } |
|
163 | + break; |
|
164 | + case 'interiorRingN': |
|
165 | + if ($geometry->geometryType() == 'Point') { |
|
166 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
167 | + } |
|
168 | + if ($geometry->geometryType() == 'LineString') { |
|
169 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
170 | + } |
|
171 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
172 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
173 | + } |
|
174 | + break; |
|
175 | + case 'setSRID': |
|
176 | + //TODO: The method setSRID() should return TRUE. |
|
177 | + break; |
|
178 | + case 'SRID': |
|
179 | + if ($geometry->geometryType() == 'Point') { |
|
180 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
181 | + } |
|
182 | + if ($geometry->geometryType() == 'LineString') { |
|
183 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
184 | + } |
|
185 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
186 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
187 | + } |
|
188 | + break; |
|
189 | + case 'getBBox': |
|
190 | + if ($geometry->geometryType() == 'Point') { |
|
191 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
192 | + } |
|
193 | + if ($geometry->geometryType() == 'LineString') { |
|
194 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
195 | + } |
|
196 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
197 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
198 | + } |
|
199 | + break; |
|
200 | + case 'centroid': |
|
201 | + if ($geometry->geometryType() == 'Point') { |
|
202 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
203 | + } |
|
204 | + if ($geometry->geometryType() == 'LineString') { |
|
205 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
206 | + } |
|
207 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
208 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
209 | + } |
|
210 | + break; |
|
211 | + case 'length': |
|
212 | + if ($geometry->geometryType() == 'Point') { |
|
213 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
214 | + } |
|
215 | + if ($geometry->geometryType() == 'LineString') { |
|
216 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
217 | + } |
|
218 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
219 | + $this->assertEquals($geometry->$method_name($argument), (float) '0.11624637315233', 'Failed on ' . $method_name); |
|
220 | + } |
|
221 | + break; |
|
222 | + case 'numGeometries': |
|
223 | + if ($geometry->geometryType() == 'Point') { |
|
224 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
225 | + } |
|
226 | + if ($geometry->geometryType() == 'LineString') { |
|
227 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
228 | + } |
|
229 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
230 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
231 | + } |
|
232 | + break; |
|
233 | + case 'numPoints': |
|
234 | + if ($geometry->geometryType() == 'Point') { |
|
235 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
236 | + } |
|
237 | + if ($geometry->geometryType() == 'LineString') { |
|
238 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
239 | + } |
|
240 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
241 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
242 | + } |
|
243 | + break; |
|
244 | + case 'dimension': |
|
245 | + if ($geometry->geometryType() == 'Point') { |
|
246 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
247 | + } |
|
248 | + if ($geometry->geometryType() == 'LineString') { |
|
249 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
250 | + } |
|
251 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
252 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
253 | + } |
|
254 | + break; |
|
255 | + case 'boundary': |
|
256 | + if ($geometry->geometryType() == 'Point') { |
|
257 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
258 | + } |
|
259 | + if ($geometry->geometryType() == 'LineString') { |
|
260 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
261 | + } |
|
262 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
263 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
264 | + } |
|
265 | + break; |
|
266 | + case 'greatCircleLength': |
|
267 | + if ($geometry->geometryType() == 'Point') { |
|
268 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
269 | + } |
|
270 | + if ($geometry->geometryType() == 'LineString') { |
|
271 | + $this->assertNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
272 | + } |
|
273 | + if ($geometry->geometryType() == 'MultiLineString') { |
|
274 | + $this->assertNotEquals($geometry->$method_name($argument), '9500.9359867418', 'Failed on ' . $method_name); |
|
275 | + } |
|
276 | + break; |
|
277 | + case 'haversineLength': |
|
278 | + case 'area': |
|
279 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
280 | + break; |
|
281 | + case 'geometryType': |
|
282 | + $this->assertNotNull($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
283 | + break; |
|
284 | + default: |
|
285 | + $this->assertTrue($geometry->$method_name($argument), 'Failed on ' . $method_name); |
|
286 | + } |
|
287 | 287 | } |
288 | 288 | } |
289 | 289 |