@@ -4,55 +4,55 @@ |
||
| 4 | 4 | require_once('require/class.Language.php'); |
| 5 | 5 | $Spotter = new Spotter(); |
| 6 | 6 | if (isset($_GET['start_date'])) { |
| 7 | - //for the date manipulation into the query |
|
| 8 | - if($_GET['start_date'] != "" && $_GET['end_date'] != ""){ |
|
| 9 | - $start_date = $_GET['start_date'].":00"; |
|
| 10 | - $end_date = $_GET['end_date'].":00"; |
|
| 11 | - $sql_date = $start_date.",".$end_date; |
|
| 12 | - } else if($_GET['start_date'] != ""){ |
|
| 13 | - $start_date = $_GET['start_date'].":00"; |
|
| 14 | - $sql_date = $start_date; |
|
| 15 | - } else if($_GET['start_date'] == "" && $_GET['end_date'] != ""){ |
|
| 16 | - $end_date = date("Y-m-d H:i:s", strtotime("2014-04-12")).",".$_GET['end_date'].":00"; |
|
| 17 | - $sql_date = $end_date; |
|
| 18 | - } else $sql_date = ''; |
|
| 7 | + //for the date manipulation into the query |
|
| 8 | + if($_GET['start_date'] != "" && $_GET['end_date'] != ""){ |
|
| 9 | + $start_date = $_GET['start_date'].":00"; |
|
| 10 | + $end_date = $_GET['end_date'].":00"; |
|
| 11 | + $sql_date = $start_date.",".$end_date; |
|
| 12 | + } else if($_GET['start_date'] != ""){ |
|
| 13 | + $start_date = $_GET['start_date'].":00"; |
|
| 14 | + $sql_date = $start_date; |
|
| 15 | + } else if($_GET['start_date'] == "" && $_GET['end_date'] != ""){ |
|
| 16 | + $end_date = date("Y-m-d H:i:s", strtotime("2014-04-12")).",".$_GET['end_date'].":00"; |
|
| 17 | + $sql_date = $end_date; |
|
| 18 | + } else $sql_date = ''; |
|
| 19 | 19 | } else $sql_date = ''; |
| 20 | 20 | |
| 21 | 21 | if (isset($_GET['highest_altitude'])) { |
| 22 | - //for altitude manipulation |
|
| 23 | - if($_GET['highest_altitude'] != "" && $_GET['lowest_altitude'] != ""){ |
|
| 24 | - $end_altitude = $_GET['highest_altitude']; |
|
| 25 | - $start_altitude = $_GET['lowest_altitude']; |
|
| 26 | - $sql_altitude = $start_altitude.",".$end_altitude; |
|
| 27 | - } else if($_GET['highest_altitude'] != ""){ |
|
| 28 | - $end_altitude = $_GET['highest_altitude']; |
|
| 29 | - $sql_altitude = $end_altitude; |
|
| 30 | - } else if($_GET['highest_altitude'] == "" && $_GET['lowest_altitude'] != ""){ |
|
| 31 | - $start_altitude = $_GET['lowest_altitude'].",60000"; |
|
| 32 | - $sql_altitude = $start_altitude; |
|
| 33 | - } else $sql_altitude = ''; |
|
| 22 | + //for altitude manipulation |
|
| 23 | + if($_GET['highest_altitude'] != "" && $_GET['lowest_altitude'] != ""){ |
|
| 24 | + $end_altitude = $_GET['highest_altitude']; |
|
| 25 | + $start_altitude = $_GET['lowest_altitude']; |
|
| 26 | + $sql_altitude = $start_altitude.",".$end_altitude; |
|
| 27 | + } else if($_GET['highest_altitude'] != ""){ |
|
| 28 | + $end_altitude = $_GET['highest_altitude']; |
|
| 29 | + $sql_altitude = $end_altitude; |
|
| 30 | + } else if($_GET['highest_altitude'] == "" && $_GET['lowest_altitude'] != ""){ |
|
| 31 | + $start_altitude = $_GET['lowest_altitude'].",60000"; |
|
| 32 | + $sql_altitude = $start_altitude; |
|
| 33 | + } else $sql_altitude = ''; |
|
| 34 | 34 | } else $sql_altitude = ''; |
| 35 | 35 | |
| 36 | 36 | //calculuation for the pagination |
| 37 | 37 | if(!isset($_GET['limit'])) |
| 38 | 38 | { |
| 39 | - if (!isset($_GET['number_results'])) |
|
| 40 | - { |
|
| 41 | - $limit_start = 0; |
|
| 42 | - $limit_end = 25; |
|
| 43 | - $absolute_difference = 25; |
|
| 44 | - } else { |
|
| 45 | - if ($_GET['number_results'] > 1000){ |
|
| 46 | - $_GET['number_results'] = 1000; |
|
| 47 | - } |
|
| 48 | - $limit_start = 0; |
|
| 49 | - $limit_end = $_GET['number_results']; |
|
| 50 | - $absolute_difference = $_GET['number_results']; |
|
| 51 | - } |
|
| 39 | + if (!isset($_GET['number_results'])) |
|
| 40 | + { |
|
| 41 | + $limit_start = 0; |
|
| 42 | + $limit_end = 25; |
|
| 43 | + $absolute_difference = 25; |
|
| 44 | + } else { |
|
| 45 | + if ($_GET['number_results'] > 1000){ |
|
| 46 | + $_GET['number_results'] = 1000; |
|
| 47 | + } |
|
| 48 | + $limit_start = 0; |
|
| 49 | + $limit_end = $_GET['number_results']; |
|
| 50 | + $absolute_difference = $_GET['number_results']; |
|
| 51 | + } |
|
| 52 | 52 | } else { |
| 53 | - $limit_explode = explode(",", $_GET['limit']); |
|
| 54 | - $limit_start = $limit_explode[0]; |
|
| 55 | - $limit_end = $limit_explode[1]; |
|
| 53 | + $limit_explode = explode(",", $_GET['limit']); |
|
| 54 | + $limit_start = $limit_explode[0]; |
|
| 55 | + $limit_end = $limit_explode[1]; |
|
| 56 | 56 | } |
| 57 | 57 | |
| 58 | 58 | $absolute_difference = abs($limit_start - $limit_end); |
@@ -6,706 +6,706 @@ |
||
| 6 | 6 | class NOTAM { |
| 7 | 7 | public $db; |
| 8 | 8 | private $abbr = array( |
| 9 | - 'A/A' => 'Air-to-air', |
|
| 10 | - 'A/G' => 'Air-to-ground', |
|
| 11 | - 'AAL' => 'Above Aerodrome Level', |
|
| 12 | - 'ABM' => 'Abeam', |
|
| 13 | - 'ABN' => 'Aerodrome Beacon', |
|
| 14 | - 'ABT' => 'About', |
|
| 15 | - 'ABV' => 'Above', |
|
| 16 | - 'ACC' => 'Area Control', |
|
| 17 | - 'ACFT' => 'Aircraft', |
|
| 18 | - 'ACK' => 'Acknowledge', |
|
| 19 | - 'ACL' => 'Altimeter Check Location', |
|
| 20 | - 'ACN' => 'Aircraft Classification Number', |
|
| 21 | - 'ACPT' => 'Accepted', |
|
| 22 | - 'ACT' => 'Active', |
|
| 23 | - 'AD' => 'Aerodrome', |
|
| 24 | - 'ADA' => 'Advisory Area', |
|
| 25 | - 'ADC' => 'Aerodrome Chart', |
|
| 26 | - 'ADDN' => 'Additional', |
|
| 27 | - 'ADJ' => 'Adjacent', |
|
| 28 | - 'ADR' => 'Advisory Route', |
|
| 29 | - 'ADS' => 'Automatic Dependent Surveillance', |
|
| 30 | - 'ADVS' => 'Advisory Service', |
|
| 31 | - 'ADZ' => 'Advised', |
|
| 32 | - 'AFIL' => 'Flight Plan Filed In The Air', |
|
| 33 | - 'AFM' => 'Affirm', |
|
| 34 | - 'AFT' => 'After', |
|
| 35 | - 'AGA' => 'Aerodromes, Air Routes and Ground Aids', |
|
| 36 | - 'AGN' => 'Again', |
|
| 37 | - 'ALERFA' => 'Alert Phase', |
|
| 38 | - 'ALRS' => 'Alerting Service', |
|
| 39 | - 'ALS' => 'Approach Lighting System', |
|
| 40 | - 'ALT' => 'Altitude', |
|
| 41 | - 'ALTN' => 'Alternate', |
|
| 42 | - 'AMA' => 'Area Minimum Altitude', |
|
| 43 | - 'ANC' => 'Aeronautical Chart', |
|
| 44 | - 'ANCS' => 'Aeronautical Navigation Chart', |
|
| 45 | - 'ANS' => 'Answer', |
|
| 46 | - 'AOC' => 'Aerodrome Obstacle Chart', |
|
| 47 | - 'AP' => 'Airport', |
|
| 48 | - 'APCH' => 'Approach', |
|
| 49 | - 'APDC' => 'Aircraft Parking/docking Chart', |
|
| 50 | - 'APN' => 'Apron', |
|
| 51 | - 'APNS' => 'Aprons', |
|
| 52 | - 'APP' => 'Approach Control', |
|
| 53 | - 'APR' => 'April', |
|
| 54 | - 'APRX' => 'Approximately', |
|
| 55 | - 'APSG' => 'After Passing', |
|
| 56 | - 'APV' => 'Approved', |
|
| 57 | - 'ARC' => 'Area Chart', |
|
| 58 | - 'ARNG' => 'Arrange', |
|
| 59 | - 'ARO' => 'Air Traffic Services Reporting Office', |
|
| 60 | - 'ARP' => 'Aerodrome Reference Point', |
|
| 61 | - 'ARR' => 'Arriving', |
|
| 62 | - 'ARST' => 'Arresting', |
|
| 63 | - 'ASC' => 'Ascend To', |
|
| 64 | - 'ASDA' => 'Accelerate-Stop Distance Available', |
|
| 65 | - 'ASPEEDG' => 'Airspeed Gain', |
|
| 66 | - 'ASPEEDL' => 'Airspeed Loss', |
|
| 67 | - 'ASPH' => 'Asphalt', |
|
| 68 | - 'ATA' => 'Actual Time of Arrival', |
|
| 69 | - 'ATD' => 'Actual Time of Departure', |
|
| 70 | - 'ATFM' => 'Air Traffic Flow Management', |
|
| 71 | - 'ATM' => 'Air Traffic Management', |
|
| 72 | - 'ATP' => 'At', |
|
| 73 | - 'ATTN' => 'Attention', |
|
| 74 | - 'ATZ' => 'Aerodrome Traffic Zone', |
|
| 75 | - 'AUG' => 'August', |
|
| 76 | - 'AUTH' => 'Authorization', |
|
| 77 | - 'AUW' => 'All Up Weight', |
|
| 78 | - 'AUX' => 'Auxiliary', |
|
| 79 | - 'AVBL' => 'Available', |
|
| 80 | - 'AVG' => 'Average', |
|
| 81 | - 'AVGAS' => 'Aviation Gasoline', |
|
| 82 | - 'AWTA' => 'Advise At What Time Able', |
|
| 83 | - 'AWY' => 'Airway', |
|
| 84 | - 'AWYS' => 'Airways', |
|
| 85 | - 'AZM' => 'Azimuth', |
|
| 86 | - 'BA' => 'Braking Action', |
|
| 87 | - 'BCN' => 'Beacon', |
|
| 88 | - 'BCST' => 'Broadcast', |
|
| 89 | - 'BDRY' => 'Boundary', |
|
| 90 | - 'BFR' => 'Before', |
|
| 91 | - 'BLDG' => 'Building', |
|
| 92 | - 'BLO' => 'Below Clouds', |
|
| 93 | - 'BLW' => 'Below', |
|
| 94 | - 'BRF' => 'Short', |
|
| 95 | - 'BRG' => 'Bearing', |
|
| 96 | - 'BRKG' => 'Breaking', |
|
| 97 | - 'BTL' => 'Between Layers', |
|
| 98 | - 'BTN' => 'Between', |
|
| 99 | - 'CD' => 'Candela', |
|
| 100 | - 'CDN' => 'Coordination', |
|
| 101 | - 'CF' => 'Change Frequency To', |
|
| 102 | - 'CFM' => 'Confirm', |
|
| 103 | - 'CGL' => 'Circling Guidance Light(s)', |
|
| 104 | - 'CH' => 'Channel', |
|
| 105 | - 'CHG' => 'Changed', |
|
| 106 | - 'CIT' => 'Near or Over Large Towns', |
|
| 107 | - 'CIV' => 'Civil', |
|
| 108 | - 'CK' => 'Check', |
|
| 109 | - 'CL' => 'Centre Line', |
|
| 110 | - 'CLBR' => 'Calibration', |
|
| 111 | - 'CLD' => 'Cloud', |
|
| 112 | - 'CLG' => 'Calling', |
|
| 113 | - 'CLIMB-OUT' => 'Climb-out Area', |
|
| 114 | - 'CLR' => 'Clearance', |
|
| 115 | - 'CLRD' => 'Cleared', |
|
| 116 | - 'CLSD' => 'Closed', |
|
| 117 | - 'CMB' => 'Climb', |
|
| 118 | - 'CMPL' => 'Complete', |
|
| 119 | - 'CNL' => 'Cancel', |
|
| 120 | - 'CNS' => 'Communications, Navigation And Surveillance', |
|
| 121 | - 'COM' => 'Communications', |
|
| 122 | - 'CONC' => 'Concrete', |
|
| 123 | - 'COND' => 'Condition', |
|
| 124 | - 'CONS' => 'Continuous', |
|
| 125 | - 'CONST' => 'Construction', |
|
| 126 | - 'CONT' => 'Continued', |
|
| 127 | - 'COOR' => 'Coordination', |
|
| 128 | - 'COORD' => 'Coordinates', |
|
| 129 | - 'COP' => 'Change-over Point', |
|
| 130 | - 'COR' => 'Correction', |
|
| 131 | - 'COT' => 'At The Coast', |
|
| 132 | - 'COV' => 'Covered', |
|
| 133 | - 'CPDLC' => 'Controller-pilot Data Link Communications', |
|
| 134 | - 'CPL' => 'Current Flight Plan', |
|
| 135 | - 'CRC' => 'Cyclic Redundancy Check', |
|
| 136 | - 'CRZ' => 'Cruise', |
|
| 137 | - 'CTAM' => 'Climb To And Maintain', |
|
| 138 | - 'CTC' => 'Contact', |
|
| 139 | - 'CTL' => 'Control', |
|
| 140 | - 'CTN' => 'Caution', |
|
| 141 | - 'CTR' => 'Control Zone', |
|
| 142 | - 'CVR' => 'Cockpit Voice Recorder', |
|
| 143 | - 'CW' => 'Continuous Wave', |
|
| 144 | - 'CWY' => 'Clearway', |
|
| 145 | - 'DA' => 'Decision Altitude', |
|
| 146 | - 'DCKG' => 'Docking', |
|
| 147 | - 'DCP' => 'Datum Crossing Point', |
|
| 148 | - 'DCPC' => 'Direct Controller-pilot Communications', |
|
| 149 | - 'DCT' => 'Direct', |
|
| 150 | - 'DEC' => 'December', |
|
| 151 | - 'DEG' => 'Degrees', |
|
| 152 | - 'DEP' => 'Departing', |
|
| 153 | - 'DES' => 'Descend', |
|
| 154 | - 'DEST' => 'Destination', |
|
| 155 | - 'DETRESFA' => 'Distress Phase', |
|
| 156 | - 'DEV' => 'Deviating', |
|
| 157 | - 'DFDR' => 'Digital Flight Data Recorder', |
|
| 158 | - 'DFTI' => 'Distance From Touchdown Indicator', |
|
| 159 | - 'DH' => 'Decision Height', |
|
| 160 | - 'DIP' => 'Diffuse', |
|
| 161 | - 'DIST' => 'Distance', |
|
| 162 | - 'DIV' => 'Divert', |
|
| 163 | - 'DLA' => 'Delay', |
|
| 164 | - 'DLY' => 'Daily', |
|
| 165 | - 'DNG' => 'Dangerous', |
|
| 166 | - 'DOM' => 'Domestic', |
|
| 167 | - 'DPT' => 'Depth', |
|
| 168 | - 'DR' => 'Dead Reckoning', |
|
| 169 | - 'DRG' => 'During', |
|
| 170 | - 'DTAM' => 'Descend To And Maintain', |
|
| 171 | - 'DTG' => 'Date-time Group', |
|
| 172 | - 'DTHR' => 'Displaced Runway Threshold', |
|
| 173 | - 'DTRT' => 'Deteriorating', |
|
| 174 | - 'DTW' => 'Dual Tandem Wheels', |
|
| 175 | - 'DUPE' => 'This Is A Duplicate Message', |
|
| 176 | - 'DUR' => 'Duration', |
|
| 177 | - 'DVOR' => 'Doppler VOR', |
|
| 178 | - 'DW' => 'Dual Wheels', |
|
| 179 | - 'EAT' => 'Expected Approach Time', |
|
| 180 | - 'EB' => 'Eastbound', |
|
| 181 | - 'EDA' => 'Elevation Differential Area', |
|
| 182 | - 'EET' => 'Estimated Elapsed Time', |
|
| 183 | - 'EFC' => 'Expect Further Clearance', |
|
| 184 | - 'ELBA' => 'Emergency Location Beacon', |
|
| 185 | - 'ELEV' => 'Elevation', |
|
| 186 | - 'ELR' => 'Extra Long Range', |
|
| 187 | - 'EM' => 'Emission', |
|
| 188 | - 'EMERG' => 'Emergency', |
|
| 189 | - 'END' => 'Stop-end', |
|
| 190 | - 'ENE' => 'East-north-east', |
|
| 191 | - 'ENG' => 'Engine', |
|
| 192 | - 'ENR' => 'En-route', |
|
| 193 | - 'ENRC' => 'En-route Chart', |
|
| 194 | - 'EOBT' => 'Estimated Off-block Time', |
|
| 195 | - 'EQPT' => 'Equipment', |
|
| 196 | - 'ER' => 'Here', |
|
| 197 | - 'ESE' => 'East-south-east', |
|
| 198 | - 'EST' => 'Estimate', |
|
| 199 | - 'ETA' => 'Estimated Time Of Arrival', |
|
| 200 | - 'ETD' => 'Estimated Time Of Departure', |
|
| 201 | - 'ETO' => 'Estimated Time Over Significant Point', |
|
| 202 | - 'EV' => 'Every', |
|
| 203 | - 'EXC' => 'Except', |
|
| 204 | - 'EXER' => 'Exercise', |
|
| 205 | - 'EXP' => 'Expect', |
|
| 206 | - 'EXTD' => 'Extend', |
|
| 207 | - 'FAC' => 'Facilities', |
|
| 208 | - 'FAF' => 'Final Approach Fix', |
|
| 209 | - 'FAL' => 'Facilitation of International Airtransport', |
|
| 210 | - 'FAP' => 'Final Approach Point', |
|
| 211 | - 'FATO' => 'Final Approach And Take-off Area', |
|
| 212 | - 'FAX' => 'Fax', |
|
| 213 | - 'FBL' => 'Light', |
|
| 214 | - 'FCST' => 'Forecast', |
|
| 215 | - 'FCT' => 'Friction Coefficient', |
|
| 216 | - 'FDPS' => 'Flight Data Processing System', |
|
| 217 | - 'FEB' => 'February', |
|
| 218 | - 'FLD' => 'Field', |
|
| 219 | - 'FLG' => 'Flashing', |
|
| 220 | - 'FLR' => 'Flares', |
|
| 221 | - 'FLT' => 'Flight', |
|
| 222 | - 'FLTS' => 'Flights', |
|
| 223 | - 'FLTCK' => 'Flight Check', |
|
| 224 | - 'FLUC' => 'Fluctuating', |
|
| 225 | - 'FLW' => 'Follow(s)', |
|
| 226 | - 'FLY' => 'Fly', |
|
| 227 | - 'FM' => 'From', |
|
| 228 | - 'FMS' => 'Flight Management System', |
|
| 229 | - 'FMU' => 'Flow Management Unit', |
|
| 230 | - 'FNA' => 'Final Approach', |
|
| 231 | - 'FPAP' => 'Flight Path Alignment Point', |
|
| 232 | - 'FPL' => 'Flight Plan', |
|
| 233 | - 'FPLS' => 'Flight Plans', |
|
| 234 | - 'FPM' => 'Feet Per Minute', |
|
| 235 | - 'FPR' => 'Flight Plan Route', |
|
| 236 | - 'FR' => 'Fuel Remaining', |
|
| 237 | - 'FREQ' => 'Frequency', |
|
| 238 | - 'FRI' => 'Friday', |
|
| 239 | - 'FRNG' => 'Firing', |
|
| 240 | - 'FRONT' => 'Front', |
|
| 241 | - 'FRQ' => 'Frequent', |
|
| 242 | - 'FSL' => 'Full Stop Landing', |
|
| 243 | - 'FSS' => 'Flight Service Station', |
|
| 244 | - 'FST' => 'First', |
|
| 245 | - 'FTP' => 'Fictitious Threshold Point', |
|
| 246 | - 'G/A' => 'Ground-to-air', |
|
| 247 | - 'G/A/G' => 'Ground-to-air and Air-to-ground', |
|
| 248 | - 'GARP' => 'GBAS Azimuth Reference Point', |
|
| 249 | - 'GBAS' => 'Ground-based Augmentation System', |
|
| 250 | - 'GCAJ' => 'Ground Controlled Approach', |
|
| 251 | - 'GEN' => 'General', |
|
| 252 | - 'GEO' => 'Geographic or True', |
|
| 253 | - 'GES' => 'Ground Earth Station', |
|
| 254 | - 'GLD' => 'Glider', |
|
| 255 | - 'GMC' => 'Ground Movement Chart', |
|
| 256 | - 'GND' => 'Ground', |
|
| 257 | - 'GNDCK' => 'Ground Check', |
|
| 258 | - 'GP' => 'Glide Path', |
|
| 259 | - 'GRASS' => 'Grass landing area', |
|
| 260 | - 'GRVL' => 'Gravel', |
|
| 261 | - 'GUND' => 'Geoid Undulation', |
|
| 262 | - 'H24' => '24 Hours', |
|
| 263 | - 'HAPI' => 'Helicopter Approach Path Indicator', |
|
| 264 | - 'HBN' => 'Hazard Beacon', |
|
| 265 | - 'HDG' => 'Heading', |
|
| 266 | - 'HEL' => 'Helicopter', |
|
| 267 | - 'HGT' => 'Height', |
|
| 268 | - 'HJ' => 'Sunrise to Sunset', |
|
| 269 | - 'HLDG' => 'Holding', |
|
| 270 | - 'HN' => 'Sunset to Sunrise', |
|
| 271 | - 'HO' => 'Service Available To Meet Operational Requirements', |
|
| 272 | - 'HOL' => 'Holiday', |
|
| 273 | - 'HOSP' => 'Hospital Aircraft', |
|
| 274 | - 'HOT' => 'Height', |
|
| 275 | - 'HPA' => 'Hectopascal', |
|
| 276 | - 'HR' => 'Hours', |
|
| 277 | - 'HRS' => 'Hours', |
|
| 278 | - 'HS' => 'Service Available During Hours Of Scheduled Operations', |
|
| 279 | - 'HURCN' => 'Hurricane', |
|
| 280 | - 'HVY' => 'Heavy', |
|
| 281 | - 'HX' => 'No Specific Working Hours', |
|
| 282 | - 'HYR' => 'Higher', |
|
| 283 | - 'IAC' => 'Instrument Approach Chart', |
|
| 284 | - 'IAF' => 'Initial Approach Fix', |
|
| 285 | - 'IAO' => 'In And Out Of Clouds', |
|
| 286 | - 'IAP' => 'Instrument Approach Procedure', |
|
| 287 | - 'IAR' => 'Intersection Of Air Routes', |
|
| 288 | - 'IBN' => 'Identification Beacon', |
|
| 289 | - 'ID' => 'Identifier', |
|
| 290 | - 'IDENT' => 'Identification', |
|
| 291 | - 'IFF' => 'Identification Friend/Foe', |
|
| 292 | - 'IGA' => 'International General Aviation', |
|
| 293 | - 'IM' => 'Inner Marker', |
|
| 294 | - 'IMPR' => 'Improving', |
|
| 295 | - 'IMT' => 'Immediately', |
|
| 296 | - 'INA' => 'Initial Approach', |
|
| 297 | - 'INBD' => 'Inbound', |
|
| 298 | - 'INCERFA' => 'Uncertainty Phase', |
|
| 299 | - 'INFO' => 'Information', |
|
| 300 | - 'INOP' => 'Inoperative', |
|
| 301 | - 'INP' => 'If Not Possible', |
|
| 302 | - 'INPR' => 'In Progress', |
|
| 303 | - 'INSTL' => 'Installation', |
|
| 304 | - 'INSTR' => 'Instrument', |
|
| 305 | - 'INT' => 'Intersection', |
|
| 306 | - 'INTS' => 'Intersections', |
|
| 307 | - 'INTL' => 'International', |
|
| 308 | - 'INTRG' => 'Interrogator', |
|
| 309 | - 'INTRP' => 'Interruption', |
|
| 310 | - 'INTSF' => 'Intensifying', |
|
| 311 | - 'INTST' => 'Intensity', |
|
| 312 | - 'ISA' => 'International Standard Atmosphere', |
|
| 313 | - 'JAN' => 'January', |
|
| 314 | - 'JTST' => 'Jet stream', |
|
| 315 | - 'JUL' => 'July', |
|
| 316 | - 'JUN' => 'June', |
|
| 317 | - 'KMH' => 'Kilometres Per Hour', |
|
| 318 | - 'KPA' => 'Kilopascal', |
|
| 319 | - 'KT' => 'Knots', |
|
| 320 | - 'KW' => 'Kilowatts', |
|
| 321 | - 'LAN' => 'Inland', |
|
| 322 | - 'LAT' => 'Latitude', |
|
| 323 | - 'LDA' => 'Landing Distance Available', |
|
| 324 | - 'LDAH' => 'Landing Distance Available, Helicopter', |
|
| 325 | - 'LDG' => 'Landing', |
|
| 326 | - 'LDI' => 'Landing Direction Indicator', |
|
| 327 | - 'LEN' => 'Length', |
|
| 328 | - 'LGT' => 'Lighting', |
|
| 329 | - 'LGTD' => 'Lighted', |
|
| 330 | - 'LIH' => 'Light Intensity High', |
|
| 331 | - 'LIL' => 'Light Intensity Low', |
|
| 332 | - 'LIM' => 'Light Intensity Medium', |
|
| 333 | - 'LLZ' => 'Localizer', |
|
| 334 | - 'LM' => 'Locator, Middle', |
|
| 335 | - 'LMT' => 'Local Mean Time', |
|
| 336 | - 'LNG' => 'Long', |
|
| 337 | - 'LO' => 'Locator, Outer', |
|
| 338 | - 'LOG' => 'Located', |
|
| 339 | - 'LONG' => 'Longitude', |
|
| 340 | - 'LRG' => 'Long Range', |
|
| 341 | - 'LTD' => 'Limited', |
|
| 342 | - 'LTP' => 'Landing Threshold Point', |
|
| 343 | - 'LVE' => 'Leaving', |
|
| 344 | - 'LVL' => 'Level', |
|
| 345 | - 'LYR' => 'Layer', |
|
| 346 | - 'MAA' => 'Maximum Authorized Altitude', |
|
| 347 | - 'MAG' => 'Magnetic', |
|
| 348 | - 'MAINT' => 'Maintenance', |
|
| 349 | - 'MAP' => 'Aeronautical Maps and Charts', |
|
| 350 | - 'MAPT' => 'Missed Approach Point', |
|
| 351 | - 'MAR' => 'March', |
|
| 352 | - 'MAX' => 'Maximum', |
|
| 353 | - 'MAY' => 'May', |
|
| 354 | - 'MBST' => 'Microburst', |
|
| 355 | - 'MCA' => 'Minimum Crossing Altitude', |
|
| 356 | - 'MCW' => 'Modulated Continuous Wave', |
|
| 357 | - 'MDA' => 'Minimum Descent Altitude', |
|
| 358 | - 'MDH' => 'Minimum Descent Height', |
|
| 359 | - 'MEA' => 'Minimum En-route Altitude', |
|
| 360 | - 'MEHT' => 'Minimum Eye Height Over Threshold', |
|
| 361 | - 'MET' => 'Meteorological', |
|
| 362 | - 'MID' => 'Mid-point', |
|
| 363 | - 'MIL' => 'Military', |
|
| 364 | - 'MIN' => 'Minutes', |
|
| 365 | - 'MKR' => 'Marker Radio Beacon', |
|
| 366 | - 'MLS' => 'Microwave Landing System', |
|
| 367 | - 'MM' => 'Middle Marker', |
|
| 368 | - 'MNM' => 'Minimum', |
|
| 369 | - 'MNPS' => 'Minimum Navigation Performance Specifications', |
|
| 370 | - 'MNT' => 'Monitor', |
|
| 371 | - 'MNTN' => 'Maintain', |
|
| 372 | - 'MOA' => 'Military Operating Area', |
|
| 373 | - 'MOC' => 'Minimum Obstacle Clearance', |
|
| 374 | - 'MOD' => 'Moderate', |
|
| 375 | - 'MON' => 'Monday', |
|
| 376 | - 'MOPS' => 'Minimum Operational Performance Standards', |
|
| 377 | - 'MOV' => 'Movement', |
|
| 378 | - 'MRA' => 'Minimum Reception Altitude', |
|
| 379 | - 'MRG' => 'Medium Range', |
|
| 380 | - 'MRP' => 'ATS/MET Reporting Point', |
|
| 381 | - 'MS' => 'Minus', |
|
| 382 | - 'MSA' => 'Minimum Sector Altitude', |
|
| 383 | - 'MSAW' => 'Minimum Safe Altitude Warning', |
|
| 384 | - 'MSG' => 'Message', |
|
| 385 | - 'MSSR' => 'Monopulse Secondary Surveillance Radar', |
|
| 386 | - 'MT' => 'Mountain', |
|
| 387 | - 'MTU' => 'Metric Units', |
|
| 388 | - 'MTW' => 'Mountain Waves', |
|
| 389 | - 'NASC' => 'National AIS System Centre', |
|
| 390 | - 'NAT' => 'North Atlantic', |
|
| 391 | - 'NAV' => 'Navigation', |
|
| 392 | - 'NB' => 'Northbound', |
|
| 393 | - 'NBFR' => 'Not Before', |
|
| 394 | - 'NE' => 'North-east', |
|
| 395 | - 'NEB' => 'North-eastbound', |
|
| 396 | - 'NEG' => 'Negative', |
|
| 397 | - 'NGT' => 'Night', |
|
| 398 | - 'NIL' => 'None', |
|
| 399 | - 'NML' => 'Normal', |
|
| 400 | - 'NNE' => 'North-north-east', |
|
| 401 | - 'NNW' => 'North-north-west', |
|
| 402 | - 'NOF' => 'International NOTAM Office', |
|
| 403 | - 'NOV' => 'November', |
|
| 404 | - 'NOZ' => 'Normal Operating Zone', |
|
| 405 | - 'NR' => 'Number', |
|
| 406 | - 'NRH' => 'No Reply Heard', |
|
| 407 | - 'NTL' => 'National', |
|
| 408 | - 'NTZ' => 'No Transgression Zone', |
|
| 409 | - 'NW' => 'North-west', |
|
| 410 | - 'NWB' => 'North-westbound', |
|
| 411 | - 'NXT' => 'Next', |
|
| 412 | - 'O/R' => 'On Request', |
|
| 413 | - 'OAC' => 'Oceanic Area Control Centre', |
|
| 414 | - 'OAS' => 'Obstacle Assessment Surface', |
|
| 415 | - 'OBS' => 'Observe', |
|
| 416 | - 'OBST' => 'Obstacle', |
|
| 417 | - 'OBSTS' => 'Obstacles', |
|
| 418 | - 'OCA' => 'Oceanic Control Area', |
|
| 419 | - 'OCH' => 'Obstacle Clearance Height', |
|
| 420 | - 'OCS' => 'Obstacle Clearance Surface', |
|
| 421 | - 'OCT' => 'October', |
|
| 422 | - 'OFZ' => 'Obstacle Free Zone', |
|
| 423 | - 'OGN' => 'Originate', |
|
| 424 | - 'OHD' => 'Overhead', |
|
| 425 | - 'OM' => 'Outer Marker', |
|
| 426 | - 'OPC' => 'Control Indicated Is Operational Control', |
|
| 427 | - 'OPMET' => 'Operational Meteorological', |
|
| 428 | - 'OPN' => 'Open', |
|
| 429 | - 'OPR' => 'Operate', |
|
| 430 | - 'OPS' => 'Operations', |
|
| 431 | - 'ORD' => 'Order', |
|
| 432 | - 'OSV' => 'Ocean Station Vessel', |
|
| 433 | - 'OTLK' => 'Outlook', |
|
| 434 | - 'OTP' => 'On Top', |
|
| 435 | - 'OTS' => 'Organized Track System', |
|
| 436 | - 'OUBD' => 'Outbound', |
|
| 437 | - 'PA' => 'Precision Approach', |
|
| 438 | - 'PALS' => 'Precision Approach Lighting System', |
|
| 439 | - 'PANS' => 'Procedures for Air Navigation Services', |
|
| 440 | - 'PAR' => 'Precision Approach Radar', |
|
| 441 | - 'PARL' => 'Parallel', |
|
| 442 | - 'PATC' => 'Precision Approach Terrain Chart', |
|
| 443 | - 'PAX' => 'Passenger(s)', |
|
| 444 | - 'PCD' => 'Proceed', |
|
| 445 | - 'PCL' => 'Pilot-controlled Lighting', |
|
| 446 | - 'PCN' => 'Pavement Classification Number', |
|
| 447 | - 'PDC' => 'Pre-departure Clearance', |
|
| 448 | - 'PDG' => 'Procedure Design Gradient', |
|
| 449 | - 'PER' => 'Performance', |
|
| 450 | - 'PERM' => 'Permanent', |
|
| 451 | - 'PIB' => 'Pre-flight Information Bulletin', |
|
| 452 | - 'PJE' => 'Parachute Jumping Exercise', |
|
| 453 | - 'PLA' => 'Practice Low Approach', |
|
| 454 | - 'PLN' => 'Flight Plan', |
|
| 455 | - 'PLVL' => 'Present Level', |
|
| 456 | - 'PN' => 'Prior Notice Required', |
|
| 457 | - 'PNR' => 'Point Of No Return', |
|
| 458 | - 'POB' => 'Persons On Board', |
|
| 459 | - 'POSS' => 'Possible', |
|
| 460 | - 'PPI' => 'Plan Position Indicator', |
|
| 461 | - 'PPR' => 'Prior Permission Required', |
|
| 462 | - 'PPSN' => 'Present Position', |
|
| 463 | - 'PRI' => 'Primary', |
|
| 464 | - 'PRKG' => 'Parking', |
|
| 465 | - 'PROB' => 'Probability', |
|
| 466 | - 'PROC' => 'Procedure', |
|
| 467 | - 'PROV' => 'Provisional', |
|
| 468 | - 'PS' => 'Plus', |
|
| 469 | - 'PSG' => 'Passing', |
|
| 470 | - 'PSN' => 'Position', |
|
| 471 | - 'PSNS' => 'Positions', |
|
| 472 | - 'PSR' => 'Primary Surveillance Radar', |
|
| 473 | - 'PSYS' => 'Pressure System(s)', |
|
| 474 | - 'PTN' => 'Procedure Turn', |
|
| 475 | - 'PTS' => 'Polar Track Structure', |
|
| 476 | - 'PWR' => 'Power', |
|
| 477 | - 'QUAD' => 'Quadrant', |
|
| 478 | - 'RAC' => 'Rules of The Air and Air Traffic Services', |
|
| 479 | - 'RAG' => 'Runway Arresting Gear', |
|
| 480 | - 'RAI' => 'Runway Alignment Indicator', |
|
| 481 | - 'RASC' => 'Regional AIS System Centre', |
|
| 482 | - 'RASS' => 'Remote Altimeter Setting Source', |
|
| 483 | - 'RB' => 'Rescue Boat', |
|
| 484 | - 'RCA' => 'Reach Cruising Altitude', |
|
| 485 | - 'RCC' => 'Rescue Coordination Centre', |
|
| 486 | - 'RCF' => 'Radiocommunication Failure', |
|
| 487 | - 'RCH' => 'Reaching', |
|
| 488 | - 'RCL' => 'Runway Centre Line', |
|
| 489 | - 'RCLL' => 'Runway Centre Line Light(s)', |
|
| 490 | - 'RCLR' => 'Recleared', |
|
| 491 | - 'RDH' => 'Reference Datum Height', |
|
| 492 | - 'RDL' => 'Radial', |
|
| 493 | - 'RDO' => 'Radio', |
|
| 494 | - 'RE' => 'Recent', |
|
| 495 | - 'REC' => 'Receiver', |
|
| 496 | - 'REDL' => 'Runway Edge Light(s)', |
|
| 497 | - 'REF' => 'Refer To', |
|
| 498 | - 'REG' => 'Registration', |
|
| 499 | - 'RENL' => 'Runway End Light(s)', |
|
| 500 | - 'REP' => 'Report', |
|
| 501 | - 'REQ' => 'Requested', |
|
| 502 | - 'RERTE' => 'Re-route', |
|
| 503 | - 'RESA' => 'Runway End Safety Area', |
|
| 504 | - 'RG' => 'Range (lights)', |
|
| 505 | - 'RHC' => 'Right-hand Circuit', |
|
| 506 | - 'RIF' => 'Reclearance In Flight', |
|
| 507 | - 'RITE' => 'Right', |
|
| 508 | - 'RL' => 'Report Leaving', |
|
| 509 | - 'RLA' => 'Relay To', |
|
| 510 | - 'RLCE' => 'Request Level Change En Route', |
|
| 511 | - 'RLLS' => 'Runway Lead-in Lighting System', |
|
| 512 | - 'RLNA' => 'Request Level Not Available', |
|
| 513 | - 'RMAC' => 'Radar Minimum Altitude Chart', |
|
| 514 | - 'RMK' => 'Remark', |
|
| 515 | - 'RNG' => 'Radio Range', |
|
| 516 | - 'RNP' => 'Required Navigation Performance', |
|
| 517 | - 'ROC' => 'Rate Of Climb', |
|
| 518 | - 'ROD' => 'Rate Of Descent', |
|
| 519 | - 'ROFOR' => 'Route Forecast', |
|
| 520 | - 'RON' => 'Receiving Only', |
|
| 521 | - 'RPI' => 'Radar Position Indicator', |
|
| 522 | - 'RPL' => 'Repetitive Flight Plan', |
|
| 523 | - 'RPLC' => 'Replaced', |
|
| 524 | - 'RPS' => 'Radar Position Symbol', |
|
| 525 | - 'RQMNTS' => 'Requirements', |
|
| 526 | - 'RQP' => 'Request Flight Plan', |
|
| 527 | - 'RQS' => 'Request Supplementary Flight Plan', |
|
| 528 | - 'RR' => 'Report Reaching', |
|
| 529 | - 'RSC' => 'Rescue Sub-centre', |
|
| 530 | - 'RSCD' => 'Runway Surface Condition', |
|
| 531 | - 'RSP' => 'Responder Beacon', |
|
| 532 | - 'RSR' => 'En-route Surveillance Radar', |
|
| 533 | - 'RTE' => 'Route', |
|
| 534 | - 'RTES' => 'Routes', |
|
| 535 | - 'RTF' => 'Radiotelephone', |
|
| 536 | - 'RTG' => 'Radiotelegraph', |
|
| 537 | - 'RTHL' => 'Runway Threshold Light(s)', |
|
| 538 | - 'RTN' => 'Return', |
|
| 539 | - 'RTODAH' => 'Rejected Take-off Distance Available, Helicopter', |
|
| 540 | - 'RTS' => 'Return To Service', |
|
| 541 | - 'RTT' => 'Radioteletypewriter', |
|
| 542 | - 'RTZL' => 'Runway Touchdown Zone Light(s)', |
|
| 543 | - 'RUT' => 'Standard Regional Route Transmitting Frequencies', |
|
| 544 | - 'RV' => 'Rescue Vessel', |
|
| 545 | - 'RVSM' => 'Reduced Vertical Separation Minimum', |
|
| 546 | - 'RWY' => 'Runway', |
|
| 547 | - 'RWYS' => 'Runways', |
|
| 548 | - 'SALS' => 'Simple Approach Lighting System', |
|
| 549 | - 'SAN' => 'Sanitary', |
|
| 550 | - 'SAP' => 'As Soon As Possible', |
|
| 551 | - 'SAR' => 'Search and Rescue', |
|
| 552 | - 'SARPS' => 'Standards and Recommended Practices', |
|
| 553 | - 'SAT' => 'Saturday', |
|
| 554 | - 'SATCOM' => 'Satellite Communication', |
|
| 555 | - 'SB' => 'Southbound', |
|
| 556 | - 'SBAS' => 'Satellite-based Augmentation System', |
|
| 557 | - 'SDBY' => 'Stand by', |
|
| 558 | - 'SE' => 'South-east', |
|
| 559 | - 'SEA' => 'Sea', |
|
| 560 | - 'SEB' => 'South-eastbound', |
|
| 561 | - 'SEC' => 'Seconds', |
|
| 562 | - 'SECN' => 'Section', |
|
| 563 | - 'SECT' => 'Sector', |
|
| 564 | - 'SEP' => 'September', |
|
| 565 | - 'SER' => 'Service', |
|
| 566 | - 'SEV' => 'Severe', |
|
| 567 | - 'SFC' => 'Surface', |
|
| 568 | - 'SGL' => 'Signal', |
|
| 569 | - 'SID' => 'Standard Instrument Departure', |
|
| 570 | - 'SIF' => 'Selective Identification Feature', |
|
| 571 | - 'SIG' => 'Significant', |
|
| 572 | - 'SIMUL' => 'Simultaneous', |
|
| 573 | - 'SKED' => 'Schedule', |
|
| 574 | - 'SLP' => 'Speed Limiting Point', |
|
| 575 | - 'SLW' => 'Slow', |
|
| 576 | - 'SMC' => 'Surface Movement Control', |
|
| 577 | - 'SMR' => 'Surface Movement Radar', |
|
| 578 | - 'SPL' => 'Supplementary Flight Plan', |
|
| 579 | - 'SPOC' => 'SAR Point Of Contact', |
|
| 580 | - 'SPOT' => 'Spot Wind', |
|
| 581 | - 'SR' => 'Sunrise', |
|
| 582 | - 'SRA' => 'Surveillance Radar Approach', |
|
| 583 | - 'SRE' => 'Surveillance Radar Element Of Precision Approach Radar System', |
|
| 584 | - 'SRG' => 'Short Range', |
|
| 585 | - 'SRR' => 'Search and Rescue Region', |
|
| 586 | - 'SRY' => 'Secondary', |
|
| 587 | - 'SS' => 'Sunset', |
|
| 588 | - 'SSE' => 'South-south-east', |
|
| 589 | - 'SSR' => 'Secondary Surveillance Radar', |
|
| 590 | - 'SST' => 'Supersonic Transport', |
|
| 591 | - 'SSW' => 'South-south-west', |
|
| 592 | - 'STA' => 'Straight-in Approach', |
|
| 593 | - 'STAR' => 'Standard Instrument Arrival', |
|
| 594 | - 'STD' => 'Standard', |
|
| 595 | - 'STN' => 'Station', |
|
| 596 | - 'STNR' => 'Stationary', |
|
| 597 | - 'STOL' => 'Short Take-off and Landing', |
|
| 598 | - 'STS' => 'Status', |
|
| 599 | - 'STWL' => 'Stopway Light(s)', |
|
| 600 | - 'SUBJ' => 'Subject To', |
|
| 601 | - 'SUN' => 'Sunday', |
|
| 602 | - 'SUP' => 'Supplement', |
|
| 603 | - 'SUPPS' => 'Regional Supplementary Procedures Service Message', |
|
| 604 | - 'SVCBL' => 'Serviceable', |
|
| 605 | - 'SW' => 'South-west', |
|
| 606 | - 'SWB' => 'South-westbound', |
|
| 607 | - 'SWY' => 'Stopway', |
|
| 608 | - 'TA' => 'Transition Altitude', |
|
| 609 | - 'TAA' => 'Terminal Arrival Altitude', |
|
| 610 | - 'TAF' => 'Aerodrome Forecast', |
|
| 611 | - 'TAIL' => 'Tail Wind', |
|
| 612 | - 'TAR' => 'Terminal Area Surveillance Radar', |
|
| 613 | - 'TAX' => 'Taxi', |
|
| 614 | - 'TCAC' => 'Tropical Cyclone Advisory Centre', |
|
| 615 | - 'TDO' => 'Tornado', |
|
| 616 | - 'TDZ' => 'Touchdown Zone', |
|
| 617 | - 'TECR' => 'Technical Reason', |
|
| 618 | - 'TEMPO' => 'Temporarily', |
|
| 619 | - 'TFC' => 'Traffic', |
|
| 620 | - 'TGL' => 'Touch-and-go', |
|
| 621 | - 'TGS' => 'Taxiing Guidance System', |
|
| 622 | - 'THR' => 'Threshold', |
|
| 623 | - 'THRU' => 'Through', |
|
| 624 | - 'THU' => 'Thursday', |
|
| 625 | - 'TIBA' => 'Traffic Information Broadcast By Aircraft', |
|
| 626 | - 'TIL' => 'Until', |
|
| 627 | - 'TIP' => 'Until Past', |
|
| 628 | - 'TKOF' => 'Take-off', |
|
| 629 | - 'TL' => 'Till', |
|
| 630 | - 'TLOF' => 'Touchdown And Lift-off Area', |
|
| 631 | - 'TMA' => 'Terminal Control Area', |
|
| 632 | - 'TNA' => 'Turn Altitude', |
|
| 633 | - 'TNH' => 'Turn Height', |
|
| 634 | - 'TOC' => 'Top of Climb', |
|
| 635 | - 'TODA' => 'Take-off Distance Available', |
|
| 636 | - 'TODAH' => 'Take-off Distance Available, Helicopter', |
|
| 637 | - 'TORA' => 'Take-off Run Available', |
|
| 638 | - 'TP' => 'Turning Point', |
|
| 639 | - 'TR' => 'Track', |
|
| 640 | - 'TRA' => 'Temporary Reserved Airspace', |
|
| 641 | - 'TRANS' => 'Transmitter', |
|
| 642 | - 'TRL' => 'Transition Level', |
|
| 643 | - 'TUE' => 'Tuesday', |
|
| 644 | - 'TURB' => 'Turbulence', |
|
| 645 | - 'TVOR' => 'Terminal VOR', |
|
| 646 | - 'TWR' => 'Tower', |
|
| 647 | - 'TWY' => 'Taxiway', |
|
| 648 | - 'TWYL' => 'Taxiway-link', |
|
| 649 | - 'TXT' => 'Text', |
|
| 650 | - 'TYP' => 'Type of Aircraft', |
|
| 651 | - 'U/S' => 'Unserviceable', |
|
| 652 | - 'UAB' => 'Until Advised By', |
|
| 653 | - 'UAC' => 'Upper Area Control Centre', |
|
| 654 | - 'UAR' => 'Upper Air Route', |
|
| 655 | - 'UFN' => 'Until Further Notice', |
|
| 656 | - 'UHDT' => 'Unable Higher Due Traffic', |
|
| 657 | - 'UIC' => 'Upper Information Centre', |
|
| 658 | - 'UIR' => 'Upper Flight Information Region', |
|
| 659 | - 'ULR' => 'Ultra Long Range', |
|
| 660 | - 'UNA' => 'Unable', |
|
| 661 | - 'UNAP' => 'Unable To Approve', |
|
| 662 | - 'UNL' => 'Unlimited', |
|
| 663 | - 'UNREL' => 'Unreliable', |
|
| 664 | - 'UTA' => 'Upper Control Area', |
|
| 665 | - 'VAAC' => 'Volcanic Ash Advisory Centre', |
|
| 666 | - 'VAC' => 'Visual Approach Chart', |
|
| 667 | - 'VAL' => 'In Valleys', |
|
| 668 | - 'VAN' => 'Runway Control Van', |
|
| 669 | - 'VAR' => 'Visual-aural Radio Range', |
|
| 670 | - 'VC' => 'Vicinity', |
|
| 671 | - 'VCY' => 'Vicinity', |
|
| 672 | - 'VER' => 'Vertical', |
|
| 673 | - 'VIS' => 'Visibility', |
|
| 674 | - 'VLR' => 'Very Long Range', |
|
| 675 | - 'VPA' => 'Vertical Path Angle', |
|
| 676 | - 'VRB' => 'Variable', |
|
| 677 | - 'VSA' => 'By Visual Reference To The Ground', |
|
| 678 | - 'VSP' => 'Vertical Speed', |
|
| 679 | - 'VTOL' => 'Vertical Take-off And Landing', |
|
| 680 | - 'WAC' => 'World Aeronautical Chart', |
|
| 681 | - 'WAFC' => 'World Area Forecast Centre', |
|
| 682 | - 'WB' => 'Westbound', |
|
| 683 | - 'WBAR' => 'Wing Bar Lights', |
|
| 684 | - 'WDI' => 'Wind Direction Indicator', |
|
| 685 | - 'WDSPR' => 'Widespread', |
|
| 686 | - 'WED' => 'Wednesday', |
|
| 687 | - 'WEF' => 'Effective From', |
|
| 688 | - 'WI' => 'Within', |
|
| 689 | - 'WID' => 'Width', |
|
| 690 | - 'WIE' => 'Effective Immediately', |
|
| 691 | - 'WILCO' => 'Will Comply', |
|
| 692 | - 'WIND' => 'Wind', |
|
| 693 | - 'WINTEM' => 'Forecast Upper Wind And Temperature For Aviation', |
|
| 694 | - 'WIP' => 'Work In Progress', |
|
| 695 | - 'WKN' => 'Weaken', |
|
| 696 | - 'WNW' => 'West-north-west', |
|
| 697 | - 'WO' => 'Without', |
|
| 698 | - 'WPT' => 'Way-point', |
|
| 699 | - 'WRNG' => 'Warning', |
|
| 700 | - 'WSW' => 'West-south-west', |
|
| 701 | - 'WT' => 'Weight', |
|
| 702 | - 'WWW' => 'Worldwide Web', |
|
| 703 | - 'WX' => 'Weather', |
|
| 704 | - 'XBAR' => 'Crossbar', |
|
| 705 | - 'XNG' => 'Crossing', |
|
| 706 | - 'XS' => 'Atmospherics', |
|
| 707 | - 'YCZ' => 'Yellow Caution Zone', |
|
| 708 | - 'YR' => 'Your'); |
|
| 9 | + 'A/A' => 'Air-to-air', |
|
| 10 | + 'A/G' => 'Air-to-ground', |
|
| 11 | + 'AAL' => 'Above Aerodrome Level', |
|
| 12 | + 'ABM' => 'Abeam', |
|
| 13 | + 'ABN' => 'Aerodrome Beacon', |
|
| 14 | + 'ABT' => 'About', |
|
| 15 | + 'ABV' => 'Above', |
|
| 16 | + 'ACC' => 'Area Control', |
|
| 17 | + 'ACFT' => 'Aircraft', |
|
| 18 | + 'ACK' => 'Acknowledge', |
|
| 19 | + 'ACL' => 'Altimeter Check Location', |
|
| 20 | + 'ACN' => 'Aircraft Classification Number', |
|
| 21 | + 'ACPT' => 'Accepted', |
|
| 22 | + 'ACT' => 'Active', |
|
| 23 | + 'AD' => 'Aerodrome', |
|
| 24 | + 'ADA' => 'Advisory Area', |
|
| 25 | + 'ADC' => 'Aerodrome Chart', |
|
| 26 | + 'ADDN' => 'Additional', |
|
| 27 | + 'ADJ' => 'Adjacent', |
|
| 28 | + 'ADR' => 'Advisory Route', |
|
| 29 | + 'ADS' => 'Automatic Dependent Surveillance', |
|
| 30 | + 'ADVS' => 'Advisory Service', |
|
| 31 | + 'ADZ' => 'Advised', |
|
| 32 | + 'AFIL' => 'Flight Plan Filed In The Air', |
|
| 33 | + 'AFM' => 'Affirm', |
|
| 34 | + 'AFT' => 'After', |
|
| 35 | + 'AGA' => 'Aerodromes, Air Routes and Ground Aids', |
|
| 36 | + 'AGN' => 'Again', |
|
| 37 | + 'ALERFA' => 'Alert Phase', |
|
| 38 | + 'ALRS' => 'Alerting Service', |
|
| 39 | + 'ALS' => 'Approach Lighting System', |
|
| 40 | + 'ALT' => 'Altitude', |
|
| 41 | + 'ALTN' => 'Alternate', |
|
| 42 | + 'AMA' => 'Area Minimum Altitude', |
|
| 43 | + 'ANC' => 'Aeronautical Chart', |
|
| 44 | + 'ANCS' => 'Aeronautical Navigation Chart', |
|
| 45 | + 'ANS' => 'Answer', |
|
| 46 | + 'AOC' => 'Aerodrome Obstacle Chart', |
|
| 47 | + 'AP' => 'Airport', |
|
| 48 | + 'APCH' => 'Approach', |
|
| 49 | + 'APDC' => 'Aircraft Parking/docking Chart', |
|
| 50 | + 'APN' => 'Apron', |
|
| 51 | + 'APNS' => 'Aprons', |
|
| 52 | + 'APP' => 'Approach Control', |
|
| 53 | + 'APR' => 'April', |
|
| 54 | + 'APRX' => 'Approximately', |
|
| 55 | + 'APSG' => 'After Passing', |
|
| 56 | + 'APV' => 'Approved', |
|
| 57 | + 'ARC' => 'Area Chart', |
|
| 58 | + 'ARNG' => 'Arrange', |
|
| 59 | + 'ARO' => 'Air Traffic Services Reporting Office', |
|
| 60 | + 'ARP' => 'Aerodrome Reference Point', |
|
| 61 | + 'ARR' => 'Arriving', |
|
| 62 | + 'ARST' => 'Arresting', |
|
| 63 | + 'ASC' => 'Ascend To', |
|
| 64 | + 'ASDA' => 'Accelerate-Stop Distance Available', |
|
| 65 | + 'ASPEEDG' => 'Airspeed Gain', |
|
| 66 | + 'ASPEEDL' => 'Airspeed Loss', |
|
| 67 | + 'ASPH' => 'Asphalt', |
|
| 68 | + 'ATA' => 'Actual Time of Arrival', |
|
| 69 | + 'ATD' => 'Actual Time of Departure', |
|
| 70 | + 'ATFM' => 'Air Traffic Flow Management', |
|
| 71 | + 'ATM' => 'Air Traffic Management', |
|
| 72 | + 'ATP' => 'At', |
|
| 73 | + 'ATTN' => 'Attention', |
|
| 74 | + 'ATZ' => 'Aerodrome Traffic Zone', |
|
| 75 | + 'AUG' => 'August', |
|
| 76 | + 'AUTH' => 'Authorization', |
|
| 77 | + 'AUW' => 'All Up Weight', |
|
| 78 | + 'AUX' => 'Auxiliary', |
|
| 79 | + 'AVBL' => 'Available', |
|
| 80 | + 'AVG' => 'Average', |
|
| 81 | + 'AVGAS' => 'Aviation Gasoline', |
|
| 82 | + 'AWTA' => 'Advise At What Time Able', |
|
| 83 | + 'AWY' => 'Airway', |
|
| 84 | + 'AWYS' => 'Airways', |
|
| 85 | + 'AZM' => 'Azimuth', |
|
| 86 | + 'BA' => 'Braking Action', |
|
| 87 | + 'BCN' => 'Beacon', |
|
| 88 | + 'BCST' => 'Broadcast', |
|
| 89 | + 'BDRY' => 'Boundary', |
|
| 90 | + 'BFR' => 'Before', |
|
| 91 | + 'BLDG' => 'Building', |
|
| 92 | + 'BLO' => 'Below Clouds', |
|
| 93 | + 'BLW' => 'Below', |
|
| 94 | + 'BRF' => 'Short', |
|
| 95 | + 'BRG' => 'Bearing', |
|
| 96 | + 'BRKG' => 'Breaking', |
|
| 97 | + 'BTL' => 'Between Layers', |
|
| 98 | + 'BTN' => 'Between', |
|
| 99 | + 'CD' => 'Candela', |
|
| 100 | + 'CDN' => 'Coordination', |
|
| 101 | + 'CF' => 'Change Frequency To', |
|
| 102 | + 'CFM' => 'Confirm', |
|
| 103 | + 'CGL' => 'Circling Guidance Light(s)', |
|
| 104 | + 'CH' => 'Channel', |
|
| 105 | + 'CHG' => 'Changed', |
|
| 106 | + 'CIT' => 'Near or Over Large Towns', |
|
| 107 | + 'CIV' => 'Civil', |
|
| 108 | + 'CK' => 'Check', |
|
| 109 | + 'CL' => 'Centre Line', |
|
| 110 | + 'CLBR' => 'Calibration', |
|
| 111 | + 'CLD' => 'Cloud', |
|
| 112 | + 'CLG' => 'Calling', |
|
| 113 | + 'CLIMB-OUT' => 'Climb-out Area', |
|
| 114 | + 'CLR' => 'Clearance', |
|
| 115 | + 'CLRD' => 'Cleared', |
|
| 116 | + 'CLSD' => 'Closed', |
|
| 117 | + 'CMB' => 'Climb', |
|
| 118 | + 'CMPL' => 'Complete', |
|
| 119 | + 'CNL' => 'Cancel', |
|
| 120 | + 'CNS' => 'Communications, Navigation And Surveillance', |
|
| 121 | + 'COM' => 'Communications', |
|
| 122 | + 'CONC' => 'Concrete', |
|
| 123 | + 'COND' => 'Condition', |
|
| 124 | + 'CONS' => 'Continuous', |
|
| 125 | + 'CONST' => 'Construction', |
|
| 126 | + 'CONT' => 'Continued', |
|
| 127 | + 'COOR' => 'Coordination', |
|
| 128 | + 'COORD' => 'Coordinates', |
|
| 129 | + 'COP' => 'Change-over Point', |
|
| 130 | + 'COR' => 'Correction', |
|
| 131 | + 'COT' => 'At The Coast', |
|
| 132 | + 'COV' => 'Covered', |
|
| 133 | + 'CPDLC' => 'Controller-pilot Data Link Communications', |
|
| 134 | + 'CPL' => 'Current Flight Plan', |
|
| 135 | + 'CRC' => 'Cyclic Redundancy Check', |
|
| 136 | + 'CRZ' => 'Cruise', |
|
| 137 | + 'CTAM' => 'Climb To And Maintain', |
|
| 138 | + 'CTC' => 'Contact', |
|
| 139 | + 'CTL' => 'Control', |
|
| 140 | + 'CTN' => 'Caution', |
|
| 141 | + 'CTR' => 'Control Zone', |
|
| 142 | + 'CVR' => 'Cockpit Voice Recorder', |
|
| 143 | + 'CW' => 'Continuous Wave', |
|
| 144 | + 'CWY' => 'Clearway', |
|
| 145 | + 'DA' => 'Decision Altitude', |
|
| 146 | + 'DCKG' => 'Docking', |
|
| 147 | + 'DCP' => 'Datum Crossing Point', |
|
| 148 | + 'DCPC' => 'Direct Controller-pilot Communications', |
|
| 149 | + 'DCT' => 'Direct', |
|
| 150 | + 'DEC' => 'December', |
|
| 151 | + 'DEG' => 'Degrees', |
|
| 152 | + 'DEP' => 'Departing', |
|
| 153 | + 'DES' => 'Descend', |
|
| 154 | + 'DEST' => 'Destination', |
|
| 155 | + 'DETRESFA' => 'Distress Phase', |
|
| 156 | + 'DEV' => 'Deviating', |
|
| 157 | + 'DFDR' => 'Digital Flight Data Recorder', |
|
| 158 | + 'DFTI' => 'Distance From Touchdown Indicator', |
|
| 159 | + 'DH' => 'Decision Height', |
|
| 160 | + 'DIP' => 'Diffuse', |
|
| 161 | + 'DIST' => 'Distance', |
|
| 162 | + 'DIV' => 'Divert', |
|
| 163 | + 'DLA' => 'Delay', |
|
| 164 | + 'DLY' => 'Daily', |
|
| 165 | + 'DNG' => 'Dangerous', |
|
| 166 | + 'DOM' => 'Domestic', |
|
| 167 | + 'DPT' => 'Depth', |
|
| 168 | + 'DR' => 'Dead Reckoning', |
|
| 169 | + 'DRG' => 'During', |
|
| 170 | + 'DTAM' => 'Descend To And Maintain', |
|
| 171 | + 'DTG' => 'Date-time Group', |
|
| 172 | + 'DTHR' => 'Displaced Runway Threshold', |
|
| 173 | + 'DTRT' => 'Deteriorating', |
|
| 174 | + 'DTW' => 'Dual Tandem Wheels', |
|
| 175 | + 'DUPE' => 'This Is A Duplicate Message', |
|
| 176 | + 'DUR' => 'Duration', |
|
| 177 | + 'DVOR' => 'Doppler VOR', |
|
| 178 | + 'DW' => 'Dual Wheels', |
|
| 179 | + 'EAT' => 'Expected Approach Time', |
|
| 180 | + 'EB' => 'Eastbound', |
|
| 181 | + 'EDA' => 'Elevation Differential Area', |
|
| 182 | + 'EET' => 'Estimated Elapsed Time', |
|
| 183 | + 'EFC' => 'Expect Further Clearance', |
|
| 184 | + 'ELBA' => 'Emergency Location Beacon', |
|
| 185 | + 'ELEV' => 'Elevation', |
|
| 186 | + 'ELR' => 'Extra Long Range', |
|
| 187 | + 'EM' => 'Emission', |
|
| 188 | + 'EMERG' => 'Emergency', |
|
| 189 | + 'END' => 'Stop-end', |
|
| 190 | + 'ENE' => 'East-north-east', |
|
| 191 | + 'ENG' => 'Engine', |
|
| 192 | + 'ENR' => 'En-route', |
|
| 193 | + 'ENRC' => 'En-route Chart', |
|
| 194 | + 'EOBT' => 'Estimated Off-block Time', |
|
| 195 | + 'EQPT' => 'Equipment', |
|
| 196 | + 'ER' => 'Here', |
|
| 197 | + 'ESE' => 'East-south-east', |
|
| 198 | + 'EST' => 'Estimate', |
|
| 199 | + 'ETA' => 'Estimated Time Of Arrival', |
|
| 200 | + 'ETD' => 'Estimated Time Of Departure', |
|
| 201 | + 'ETO' => 'Estimated Time Over Significant Point', |
|
| 202 | + 'EV' => 'Every', |
|
| 203 | + 'EXC' => 'Except', |
|
| 204 | + 'EXER' => 'Exercise', |
|
| 205 | + 'EXP' => 'Expect', |
|
| 206 | + 'EXTD' => 'Extend', |
|
| 207 | + 'FAC' => 'Facilities', |
|
| 208 | + 'FAF' => 'Final Approach Fix', |
|
| 209 | + 'FAL' => 'Facilitation of International Airtransport', |
|
| 210 | + 'FAP' => 'Final Approach Point', |
|
| 211 | + 'FATO' => 'Final Approach And Take-off Area', |
|
| 212 | + 'FAX' => 'Fax', |
|
| 213 | + 'FBL' => 'Light', |
|
| 214 | + 'FCST' => 'Forecast', |
|
| 215 | + 'FCT' => 'Friction Coefficient', |
|
| 216 | + 'FDPS' => 'Flight Data Processing System', |
|
| 217 | + 'FEB' => 'February', |
|
| 218 | + 'FLD' => 'Field', |
|
| 219 | + 'FLG' => 'Flashing', |
|
| 220 | + 'FLR' => 'Flares', |
|
| 221 | + 'FLT' => 'Flight', |
|
| 222 | + 'FLTS' => 'Flights', |
|
| 223 | + 'FLTCK' => 'Flight Check', |
|
| 224 | + 'FLUC' => 'Fluctuating', |
|
| 225 | + 'FLW' => 'Follow(s)', |
|
| 226 | + 'FLY' => 'Fly', |
|
| 227 | + 'FM' => 'From', |
|
| 228 | + 'FMS' => 'Flight Management System', |
|
| 229 | + 'FMU' => 'Flow Management Unit', |
|
| 230 | + 'FNA' => 'Final Approach', |
|
| 231 | + 'FPAP' => 'Flight Path Alignment Point', |
|
| 232 | + 'FPL' => 'Flight Plan', |
|
| 233 | + 'FPLS' => 'Flight Plans', |
|
| 234 | + 'FPM' => 'Feet Per Minute', |
|
| 235 | + 'FPR' => 'Flight Plan Route', |
|
| 236 | + 'FR' => 'Fuel Remaining', |
|
| 237 | + 'FREQ' => 'Frequency', |
|
| 238 | + 'FRI' => 'Friday', |
|
| 239 | + 'FRNG' => 'Firing', |
|
| 240 | + 'FRONT' => 'Front', |
|
| 241 | + 'FRQ' => 'Frequent', |
|
| 242 | + 'FSL' => 'Full Stop Landing', |
|
| 243 | + 'FSS' => 'Flight Service Station', |
|
| 244 | + 'FST' => 'First', |
|
| 245 | + 'FTP' => 'Fictitious Threshold Point', |
|
| 246 | + 'G/A' => 'Ground-to-air', |
|
| 247 | + 'G/A/G' => 'Ground-to-air and Air-to-ground', |
|
| 248 | + 'GARP' => 'GBAS Azimuth Reference Point', |
|
| 249 | + 'GBAS' => 'Ground-based Augmentation System', |
|
| 250 | + 'GCAJ' => 'Ground Controlled Approach', |
|
| 251 | + 'GEN' => 'General', |
|
| 252 | + 'GEO' => 'Geographic or True', |
|
| 253 | + 'GES' => 'Ground Earth Station', |
|
| 254 | + 'GLD' => 'Glider', |
|
| 255 | + 'GMC' => 'Ground Movement Chart', |
|
| 256 | + 'GND' => 'Ground', |
|
| 257 | + 'GNDCK' => 'Ground Check', |
|
| 258 | + 'GP' => 'Glide Path', |
|
| 259 | + 'GRASS' => 'Grass landing area', |
|
| 260 | + 'GRVL' => 'Gravel', |
|
| 261 | + 'GUND' => 'Geoid Undulation', |
|
| 262 | + 'H24' => '24 Hours', |
|
| 263 | + 'HAPI' => 'Helicopter Approach Path Indicator', |
|
| 264 | + 'HBN' => 'Hazard Beacon', |
|
| 265 | + 'HDG' => 'Heading', |
|
| 266 | + 'HEL' => 'Helicopter', |
|
| 267 | + 'HGT' => 'Height', |
|
| 268 | + 'HJ' => 'Sunrise to Sunset', |
|
| 269 | + 'HLDG' => 'Holding', |
|
| 270 | + 'HN' => 'Sunset to Sunrise', |
|
| 271 | + 'HO' => 'Service Available To Meet Operational Requirements', |
|
| 272 | + 'HOL' => 'Holiday', |
|
| 273 | + 'HOSP' => 'Hospital Aircraft', |
|
| 274 | + 'HOT' => 'Height', |
|
| 275 | + 'HPA' => 'Hectopascal', |
|
| 276 | + 'HR' => 'Hours', |
|
| 277 | + 'HRS' => 'Hours', |
|
| 278 | + 'HS' => 'Service Available During Hours Of Scheduled Operations', |
|
| 279 | + 'HURCN' => 'Hurricane', |
|
| 280 | + 'HVY' => 'Heavy', |
|
| 281 | + 'HX' => 'No Specific Working Hours', |
|
| 282 | + 'HYR' => 'Higher', |
|
| 283 | + 'IAC' => 'Instrument Approach Chart', |
|
| 284 | + 'IAF' => 'Initial Approach Fix', |
|
| 285 | + 'IAO' => 'In And Out Of Clouds', |
|
| 286 | + 'IAP' => 'Instrument Approach Procedure', |
|
| 287 | + 'IAR' => 'Intersection Of Air Routes', |
|
| 288 | + 'IBN' => 'Identification Beacon', |
|
| 289 | + 'ID' => 'Identifier', |
|
| 290 | + 'IDENT' => 'Identification', |
|
| 291 | + 'IFF' => 'Identification Friend/Foe', |
|
| 292 | + 'IGA' => 'International General Aviation', |
|
| 293 | + 'IM' => 'Inner Marker', |
|
| 294 | + 'IMPR' => 'Improving', |
|
| 295 | + 'IMT' => 'Immediately', |
|
| 296 | + 'INA' => 'Initial Approach', |
|
| 297 | + 'INBD' => 'Inbound', |
|
| 298 | + 'INCERFA' => 'Uncertainty Phase', |
|
| 299 | + 'INFO' => 'Information', |
|
| 300 | + 'INOP' => 'Inoperative', |
|
| 301 | + 'INP' => 'If Not Possible', |
|
| 302 | + 'INPR' => 'In Progress', |
|
| 303 | + 'INSTL' => 'Installation', |
|
| 304 | + 'INSTR' => 'Instrument', |
|
| 305 | + 'INT' => 'Intersection', |
|
| 306 | + 'INTS' => 'Intersections', |
|
| 307 | + 'INTL' => 'International', |
|
| 308 | + 'INTRG' => 'Interrogator', |
|
| 309 | + 'INTRP' => 'Interruption', |
|
| 310 | + 'INTSF' => 'Intensifying', |
|
| 311 | + 'INTST' => 'Intensity', |
|
| 312 | + 'ISA' => 'International Standard Atmosphere', |
|
| 313 | + 'JAN' => 'January', |
|
| 314 | + 'JTST' => 'Jet stream', |
|
| 315 | + 'JUL' => 'July', |
|
| 316 | + 'JUN' => 'June', |
|
| 317 | + 'KMH' => 'Kilometres Per Hour', |
|
| 318 | + 'KPA' => 'Kilopascal', |
|
| 319 | + 'KT' => 'Knots', |
|
| 320 | + 'KW' => 'Kilowatts', |
|
| 321 | + 'LAN' => 'Inland', |
|
| 322 | + 'LAT' => 'Latitude', |
|
| 323 | + 'LDA' => 'Landing Distance Available', |
|
| 324 | + 'LDAH' => 'Landing Distance Available, Helicopter', |
|
| 325 | + 'LDG' => 'Landing', |
|
| 326 | + 'LDI' => 'Landing Direction Indicator', |
|
| 327 | + 'LEN' => 'Length', |
|
| 328 | + 'LGT' => 'Lighting', |
|
| 329 | + 'LGTD' => 'Lighted', |
|
| 330 | + 'LIH' => 'Light Intensity High', |
|
| 331 | + 'LIL' => 'Light Intensity Low', |
|
| 332 | + 'LIM' => 'Light Intensity Medium', |
|
| 333 | + 'LLZ' => 'Localizer', |
|
| 334 | + 'LM' => 'Locator, Middle', |
|
| 335 | + 'LMT' => 'Local Mean Time', |
|
| 336 | + 'LNG' => 'Long', |
|
| 337 | + 'LO' => 'Locator, Outer', |
|
| 338 | + 'LOG' => 'Located', |
|
| 339 | + 'LONG' => 'Longitude', |
|
| 340 | + 'LRG' => 'Long Range', |
|
| 341 | + 'LTD' => 'Limited', |
|
| 342 | + 'LTP' => 'Landing Threshold Point', |
|
| 343 | + 'LVE' => 'Leaving', |
|
| 344 | + 'LVL' => 'Level', |
|
| 345 | + 'LYR' => 'Layer', |
|
| 346 | + 'MAA' => 'Maximum Authorized Altitude', |
|
| 347 | + 'MAG' => 'Magnetic', |
|
| 348 | + 'MAINT' => 'Maintenance', |
|
| 349 | + 'MAP' => 'Aeronautical Maps and Charts', |
|
| 350 | + 'MAPT' => 'Missed Approach Point', |
|
| 351 | + 'MAR' => 'March', |
|
| 352 | + 'MAX' => 'Maximum', |
|
| 353 | + 'MAY' => 'May', |
|
| 354 | + 'MBST' => 'Microburst', |
|
| 355 | + 'MCA' => 'Minimum Crossing Altitude', |
|
| 356 | + 'MCW' => 'Modulated Continuous Wave', |
|
| 357 | + 'MDA' => 'Minimum Descent Altitude', |
|
| 358 | + 'MDH' => 'Minimum Descent Height', |
|
| 359 | + 'MEA' => 'Minimum En-route Altitude', |
|
| 360 | + 'MEHT' => 'Minimum Eye Height Over Threshold', |
|
| 361 | + 'MET' => 'Meteorological', |
|
| 362 | + 'MID' => 'Mid-point', |
|
| 363 | + 'MIL' => 'Military', |
|
| 364 | + 'MIN' => 'Minutes', |
|
| 365 | + 'MKR' => 'Marker Radio Beacon', |
|
| 366 | + 'MLS' => 'Microwave Landing System', |
|
| 367 | + 'MM' => 'Middle Marker', |
|
| 368 | + 'MNM' => 'Minimum', |
|
| 369 | + 'MNPS' => 'Minimum Navigation Performance Specifications', |
|
| 370 | + 'MNT' => 'Monitor', |
|
| 371 | + 'MNTN' => 'Maintain', |
|
| 372 | + 'MOA' => 'Military Operating Area', |
|
| 373 | + 'MOC' => 'Minimum Obstacle Clearance', |
|
| 374 | + 'MOD' => 'Moderate', |
|
| 375 | + 'MON' => 'Monday', |
|
| 376 | + 'MOPS' => 'Minimum Operational Performance Standards', |
|
| 377 | + 'MOV' => 'Movement', |
|
| 378 | + 'MRA' => 'Minimum Reception Altitude', |
|
| 379 | + 'MRG' => 'Medium Range', |
|
| 380 | + 'MRP' => 'ATS/MET Reporting Point', |
|
| 381 | + 'MS' => 'Minus', |
|
| 382 | + 'MSA' => 'Minimum Sector Altitude', |
|
| 383 | + 'MSAW' => 'Minimum Safe Altitude Warning', |
|
| 384 | + 'MSG' => 'Message', |
|
| 385 | + 'MSSR' => 'Monopulse Secondary Surveillance Radar', |
|
| 386 | + 'MT' => 'Mountain', |
|
| 387 | + 'MTU' => 'Metric Units', |
|
| 388 | + 'MTW' => 'Mountain Waves', |
|
| 389 | + 'NASC' => 'National AIS System Centre', |
|
| 390 | + 'NAT' => 'North Atlantic', |
|
| 391 | + 'NAV' => 'Navigation', |
|
| 392 | + 'NB' => 'Northbound', |
|
| 393 | + 'NBFR' => 'Not Before', |
|
| 394 | + 'NE' => 'North-east', |
|
| 395 | + 'NEB' => 'North-eastbound', |
|
| 396 | + 'NEG' => 'Negative', |
|
| 397 | + 'NGT' => 'Night', |
|
| 398 | + 'NIL' => 'None', |
|
| 399 | + 'NML' => 'Normal', |
|
| 400 | + 'NNE' => 'North-north-east', |
|
| 401 | + 'NNW' => 'North-north-west', |
|
| 402 | + 'NOF' => 'International NOTAM Office', |
|
| 403 | + 'NOV' => 'November', |
|
| 404 | + 'NOZ' => 'Normal Operating Zone', |
|
| 405 | + 'NR' => 'Number', |
|
| 406 | + 'NRH' => 'No Reply Heard', |
|
| 407 | + 'NTL' => 'National', |
|
| 408 | + 'NTZ' => 'No Transgression Zone', |
|
| 409 | + 'NW' => 'North-west', |
|
| 410 | + 'NWB' => 'North-westbound', |
|
| 411 | + 'NXT' => 'Next', |
|
| 412 | + 'O/R' => 'On Request', |
|
| 413 | + 'OAC' => 'Oceanic Area Control Centre', |
|
| 414 | + 'OAS' => 'Obstacle Assessment Surface', |
|
| 415 | + 'OBS' => 'Observe', |
|
| 416 | + 'OBST' => 'Obstacle', |
|
| 417 | + 'OBSTS' => 'Obstacles', |
|
| 418 | + 'OCA' => 'Oceanic Control Area', |
|
| 419 | + 'OCH' => 'Obstacle Clearance Height', |
|
| 420 | + 'OCS' => 'Obstacle Clearance Surface', |
|
| 421 | + 'OCT' => 'October', |
|
| 422 | + 'OFZ' => 'Obstacle Free Zone', |
|
| 423 | + 'OGN' => 'Originate', |
|
| 424 | + 'OHD' => 'Overhead', |
|
| 425 | + 'OM' => 'Outer Marker', |
|
| 426 | + 'OPC' => 'Control Indicated Is Operational Control', |
|
| 427 | + 'OPMET' => 'Operational Meteorological', |
|
| 428 | + 'OPN' => 'Open', |
|
| 429 | + 'OPR' => 'Operate', |
|
| 430 | + 'OPS' => 'Operations', |
|
| 431 | + 'ORD' => 'Order', |
|
| 432 | + 'OSV' => 'Ocean Station Vessel', |
|
| 433 | + 'OTLK' => 'Outlook', |
|
| 434 | + 'OTP' => 'On Top', |
|
| 435 | + 'OTS' => 'Organized Track System', |
|
| 436 | + 'OUBD' => 'Outbound', |
|
| 437 | + 'PA' => 'Precision Approach', |
|
| 438 | + 'PALS' => 'Precision Approach Lighting System', |
|
| 439 | + 'PANS' => 'Procedures for Air Navigation Services', |
|
| 440 | + 'PAR' => 'Precision Approach Radar', |
|
| 441 | + 'PARL' => 'Parallel', |
|
| 442 | + 'PATC' => 'Precision Approach Terrain Chart', |
|
| 443 | + 'PAX' => 'Passenger(s)', |
|
| 444 | + 'PCD' => 'Proceed', |
|
| 445 | + 'PCL' => 'Pilot-controlled Lighting', |
|
| 446 | + 'PCN' => 'Pavement Classification Number', |
|
| 447 | + 'PDC' => 'Pre-departure Clearance', |
|
| 448 | + 'PDG' => 'Procedure Design Gradient', |
|
| 449 | + 'PER' => 'Performance', |
|
| 450 | + 'PERM' => 'Permanent', |
|
| 451 | + 'PIB' => 'Pre-flight Information Bulletin', |
|
| 452 | + 'PJE' => 'Parachute Jumping Exercise', |
|
| 453 | + 'PLA' => 'Practice Low Approach', |
|
| 454 | + 'PLN' => 'Flight Plan', |
|
| 455 | + 'PLVL' => 'Present Level', |
|
| 456 | + 'PN' => 'Prior Notice Required', |
|
| 457 | + 'PNR' => 'Point Of No Return', |
|
| 458 | + 'POB' => 'Persons On Board', |
|
| 459 | + 'POSS' => 'Possible', |
|
| 460 | + 'PPI' => 'Plan Position Indicator', |
|
| 461 | + 'PPR' => 'Prior Permission Required', |
|
| 462 | + 'PPSN' => 'Present Position', |
|
| 463 | + 'PRI' => 'Primary', |
|
| 464 | + 'PRKG' => 'Parking', |
|
| 465 | + 'PROB' => 'Probability', |
|
| 466 | + 'PROC' => 'Procedure', |
|
| 467 | + 'PROV' => 'Provisional', |
|
| 468 | + 'PS' => 'Plus', |
|
| 469 | + 'PSG' => 'Passing', |
|
| 470 | + 'PSN' => 'Position', |
|
| 471 | + 'PSNS' => 'Positions', |
|
| 472 | + 'PSR' => 'Primary Surveillance Radar', |
|
| 473 | + 'PSYS' => 'Pressure System(s)', |
|
| 474 | + 'PTN' => 'Procedure Turn', |
|
| 475 | + 'PTS' => 'Polar Track Structure', |
|
| 476 | + 'PWR' => 'Power', |
|
| 477 | + 'QUAD' => 'Quadrant', |
|
| 478 | + 'RAC' => 'Rules of The Air and Air Traffic Services', |
|
| 479 | + 'RAG' => 'Runway Arresting Gear', |
|
| 480 | + 'RAI' => 'Runway Alignment Indicator', |
|
| 481 | + 'RASC' => 'Regional AIS System Centre', |
|
| 482 | + 'RASS' => 'Remote Altimeter Setting Source', |
|
| 483 | + 'RB' => 'Rescue Boat', |
|
| 484 | + 'RCA' => 'Reach Cruising Altitude', |
|
| 485 | + 'RCC' => 'Rescue Coordination Centre', |
|
| 486 | + 'RCF' => 'Radiocommunication Failure', |
|
| 487 | + 'RCH' => 'Reaching', |
|
| 488 | + 'RCL' => 'Runway Centre Line', |
|
| 489 | + 'RCLL' => 'Runway Centre Line Light(s)', |
|
| 490 | + 'RCLR' => 'Recleared', |
|
| 491 | + 'RDH' => 'Reference Datum Height', |
|
| 492 | + 'RDL' => 'Radial', |
|
| 493 | + 'RDO' => 'Radio', |
|
| 494 | + 'RE' => 'Recent', |
|
| 495 | + 'REC' => 'Receiver', |
|
| 496 | + 'REDL' => 'Runway Edge Light(s)', |
|
| 497 | + 'REF' => 'Refer To', |
|
| 498 | + 'REG' => 'Registration', |
|
| 499 | + 'RENL' => 'Runway End Light(s)', |
|
| 500 | + 'REP' => 'Report', |
|
| 501 | + 'REQ' => 'Requested', |
|
| 502 | + 'RERTE' => 'Re-route', |
|
| 503 | + 'RESA' => 'Runway End Safety Area', |
|
| 504 | + 'RG' => 'Range (lights)', |
|
| 505 | + 'RHC' => 'Right-hand Circuit', |
|
| 506 | + 'RIF' => 'Reclearance In Flight', |
|
| 507 | + 'RITE' => 'Right', |
|
| 508 | + 'RL' => 'Report Leaving', |
|
| 509 | + 'RLA' => 'Relay To', |
|
| 510 | + 'RLCE' => 'Request Level Change En Route', |
|
| 511 | + 'RLLS' => 'Runway Lead-in Lighting System', |
|
| 512 | + 'RLNA' => 'Request Level Not Available', |
|
| 513 | + 'RMAC' => 'Radar Minimum Altitude Chart', |
|
| 514 | + 'RMK' => 'Remark', |
|
| 515 | + 'RNG' => 'Radio Range', |
|
| 516 | + 'RNP' => 'Required Navigation Performance', |
|
| 517 | + 'ROC' => 'Rate Of Climb', |
|
| 518 | + 'ROD' => 'Rate Of Descent', |
|
| 519 | + 'ROFOR' => 'Route Forecast', |
|
| 520 | + 'RON' => 'Receiving Only', |
|
| 521 | + 'RPI' => 'Radar Position Indicator', |
|
| 522 | + 'RPL' => 'Repetitive Flight Plan', |
|
| 523 | + 'RPLC' => 'Replaced', |
|
| 524 | + 'RPS' => 'Radar Position Symbol', |
|
| 525 | + 'RQMNTS' => 'Requirements', |
|
| 526 | + 'RQP' => 'Request Flight Plan', |
|
| 527 | + 'RQS' => 'Request Supplementary Flight Plan', |
|
| 528 | + 'RR' => 'Report Reaching', |
|
| 529 | + 'RSC' => 'Rescue Sub-centre', |
|
| 530 | + 'RSCD' => 'Runway Surface Condition', |
|
| 531 | + 'RSP' => 'Responder Beacon', |
|
| 532 | + 'RSR' => 'En-route Surveillance Radar', |
|
| 533 | + 'RTE' => 'Route', |
|
| 534 | + 'RTES' => 'Routes', |
|
| 535 | + 'RTF' => 'Radiotelephone', |
|
| 536 | + 'RTG' => 'Radiotelegraph', |
|
| 537 | + 'RTHL' => 'Runway Threshold Light(s)', |
|
| 538 | + 'RTN' => 'Return', |
|
| 539 | + 'RTODAH' => 'Rejected Take-off Distance Available, Helicopter', |
|
| 540 | + 'RTS' => 'Return To Service', |
|
| 541 | + 'RTT' => 'Radioteletypewriter', |
|
| 542 | + 'RTZL' => 'Runway Touchdown Zone Light(s)', |
|
| 543 | + 'RUT' => 'Standard Regional Route Transmitting Frequencies', |
|
| 544 | + 'RV' => 'Rescue Vessel', |
|
| 545 | + 'RVSM' => 'Reduced Vertical Separation Minimum', |
|
| 546 | + 'RWY' => 'Runway', |
|
| 547 | + 'RWYS' => 'Runways', |
|
| 548 | + 'SALS' => 'Simple Approach Lighting System', |
|
| 549 | + 'SAN' => 'Sanitary', |
|
| 550 | + 'SAP' => 'As Soon As Possible', |
|
| 551 | + 'SAR' => 'Search and Rescue', |
|
| 552 | + 'SARPS' => 'Standards and Recommended Practices', |
|
| 553 | + 'SAT' => 'Saturday', |
|
| 554 | + 'SATCOM' => 'Satellite Communication', |
|
| 555 | + 'SB' => 'Southbound', |
|
| 556 | + 'SBAS' => 'Satellite-based Augmentation System', |
|
| 557 | + 'SDBY' => 'Stand by', |
|
| 558 | + 'SE' => 'South-east', |
|
| 559 | + 'SEA' => 'Sea', |
|
| 560 | + 'SEB' => 'South-eastbound', |
|
| 561 | + 'SEC' => 'Seconds', |
|
| 562 | + 'SECN' => 'Section', |
|
| 563 | + 'SECT' => 'Sector', |
|
| 564 | + 'SEP' => 'September', |
|
| 565 | + 'SER' => 'Service', |
|
| 566 | + 'SEV' => 'Severe', |
|
| 567 | + 'SFC' => 'Surface', |
|
| 568 | + 'SGL' => 'Signal', |
|
| 569 | + 'SID' => 'Standard Instrument Departure', |
|
| 570 | + 'SIF' => 'Selective Identification Feature', |
|
| 571 | + 'SIG' => 'Significant', |
|
| 572 | + 'SIMUL' => 'Simultaneous', |
|
| 573 | + 'SKED' => 'Schedule', |
|
| 574 | + 'SLP' => 'Speed Limiting Point', |
|
| 575 | + 'SLW' => 'Slow', |
|
| 576 | + 'SMC' => 'Surface Movement Control', |
|
| 577 | + 'SMR' => 'Surface Movement Radar', |
|
| 578 | + 'SPL' => 'Supplementary Flight Plan', |
|
| 579 | + 'SPOC' => 'SAR Point Of Contact', |
|
| 580 | + 'SPOT' => 'Spot Wind', |
|
| 581 | + 'SR' => 'Sunrise', |
|
| 582 | + 'SRA' => 'Surveillance Radar Approach', |
|
| 583 | + 'SRE' => 'Surveillance Radar Element Of Precision Approach Radar System', |
|
| 584 | + 'SRG' => 'Short Range', |
|
| 585 | + 'SRR' => 'Search and Rescue Region', |
|
| 586 | + 'SRY' => 'Secondary', |
|
| 587 | + 'SS' => 'Sunset', |
|
| 588 | + 'SSE' => 'South-south-east', |
|
| 589 | + 'SSR' => 'Secondary Surveillance Radar', |
|
| 590 | + 'SST' => 'Supersonic Transport', |
|
| 591 | + 'SSW' => 'South-south-west', |
|
| 592 | + 'STA' => 'Straight-in Approach', |
|
| 593 | + 'STAR' => 'Standard Instrument Arrival', |
|
| 594 | + 'STD' => 'Standard', |
|
| 595 | + 'STN' => 'Station', |
|
| 596 | + 'STNR' => 'Stationary', |
|
| 597 | + 'STOL' => 'Short Take-off and Landing', |
|
| 598 | + 'STS' => 'Status', |
|
| 599 | + 'STWL' => 'Stopway Light(s)', |
|
| 600 | + 'SUBJ' => 'Subject To', |
|
| 601 | + 'SUN' => 'Sunday', |
|
| 602 | + 'SUP' => 'Supplement', |
|
| 603 | + 'SUPPS' => 'Regional Supplementary Procedures Service Message', |
|
| 604 | + 'SVCBL' => 'Serviceable', |
|
| 605 | + 'SW' => 'South-west', |
|
| 606 | + 'SWB' => 'South-westbound', |
|
| 607 | + 'SWY' => 'Stopway', |
|
| 608 | + 'TA' => 'Transition Altitude', |
|
| 609 | + 'TAA' => 'Terminal Arrival Altitude', |
|
| 610 | + 'TAF' => 'Aerodrome Forecast', |
|
| 611 | + 'TAIL' => 'Tail Wind', |
|
| 612 | + 'TAR' => 'Terminal Area Surveillance Radar', |
|
| 613 | + 'TAX' => 'Taxi', |
|
| 614 | + 'TCAC' => 'Tropical Cyclone Advisory Centre', |
|
| 615 | + 'TDO' => 'Tornado', |
|
| 616 | + 'TDZ' => 'Touchdown Zone', |
|
| 617 | + 'TECR' => 'Technical Reason', |
|
| 618 | + 'TEMPO' => 'Temporarily', |
|
| 619 | + 'TFC' => 'Traffic', |
|
| 620 | + 'TGL' => 'Touch-and-go', |
|
| 621 | + 'TGS' => 'Taxiing Guidance System', |
|
| 622 | + 'THR' => 'Threshold', |
|
| 623 | + 'THRU' => 'Through', |
|
| 624 | + 'THU' => 'Thursday', |
|
| 625 | + 'TIBA' => 'Traffic Information Broadcast By Aircraft', |
|
| 626 | + 'TIL' => 'Until', |
|
| 627 | + 'TIP' => 'Until Past', |
|
| 628 | + 'TKOF' => 'Take-off', |
|
| 629 | + 'TL' => 'Till', |
|
| 630 | + 'TLOF' => 'Touchdown And Lift-off Area', |
|
| 631 | + 'TMA' => 'Terminal Control Area', |
|
| 632 | + 'TNA' => 'Turn Altitude', |
|
| 633 | + 'TNH' => 'Turn Height', |
|
| 634 | + 'TOC' => 'Top of Climb', |
|
| 635 | + 'TODA' => 'Take-off Distance Available', |
|
| 636 | + 'TODAH' => 'Take-off Distance Available, Helicopter', |
|
| 637 | + 'TORA' => 'Take-off Run Available', |
|
| 638 | + 'TP' => 'Turning Point', |
|
| 639 | + 'TR' => 'Track', |
|
| 640 | + 'TRA' => 'Temporary Reserved Airspace', |
|
| 641 | + 'TRANS' => 'Transmitter', |
|
| 642 | + 'TRL' => 'Transition Level', |
|
| 643 | + 'TUE' => 'Tuesday', |
|
| 644 | + 'TURB' => 'Turbulence', |
|
| 645 | + 'TVOR' => 'Terminal VOR', |
|
| 646 | + 'TWR' => 'Tower', |
|
| 647 | + 'TWY' => 'Taxiway', |
|
| 648 | + 'TWYL' => 'Taxiway-link', |
|
| 649 | + 'TXT' => 'Text', |
|
| 650 | + 'TYP' => 'Type of Aircraft', |
|
| 651 | + 'U/S' => 'Unserviceable', |
|
| 652 | + 'UAB' => 'Until Advised By', |
|
| 653 | + 'UAC' => 'Upper Area Control Centre', |
|
| 654 | + 'UAR' => 'Upper Air Route', |
|
| 655 | + 'UFN' => 'Until Further Notice', |
|
| 656 | + 'UHDT' => 'Unable Higher Due Traffic', |
|
| 657 | + 'UIC' => 'Upper Information Centre', |
|
| 658 | + 'UIR' => 'Upper Flight Information Region', |
|
| 659 | + 'ULR' => 'Ultra Long Range', |
|
| 660 | + 'UNA' => 'Unable', |
|
| 661 | + 'UNAP' => 'Unable To Approve', |
|
| 662 | + 'UNL' => 'Unlimited', |
|
| 663 | + 'UNREL' => 'Unreliable', |
|
| 664 | + 'UTA' => 'Upper Control Area', |
|
| 665 | + 'VAAC' => 'Volcanic Ash Advisory Centre', |
|
| 666 | + 'VAC' => 'Visual Approach Chart', |
|
| 667 | + 'VAL' => 'In Valleys', |
|
| 668 | + 'VAN' => 'Runway Control Van', |
|
| 669 | + 'VAR' => 'Visual-aural Radio Range', |
|
| 670 | + 'VC' => 'Vicinity', |
|
| 671 | + 'VCY' => 'Vicinity', |
|
| 672 | + 'VER' => 'Vertical', |
|
| 673 | + 'VIS' => 'Visibility', |
|
| 674 | + 'VLR' => 'Very Long Range', |
|
| 675 | + 'VPA' => 'Vertical Path Angle', |
|
| 676 | + 'VRB' => 'Variable', |
|
| 677 | + 'VSA' => 'By Visual Reference To The Ground', |
|
| 678 | + 'VSP' => 'Vertical Speed', |
|
| 679 | + 'VTOL' => 'Vertical Take-off And Landing', |
|
| 680 | + 'WAC' => 'World Aeronautical Chart', |
|
| 681 | + 'WAFC' => 'World Area Forecast Centre', |
|
| 682 | + 'WB' => 'Westbound', |
|
| 683 | + 'WBAR' => 'Wing Bar Lights', |
|
| 684 | + 'WDI' => 'Wind Direction Indicator', |
|
| 685 | + 'WDSPR' => 'Widespread', |
|
| 686 | + 'WED' => 'Wednesday', |
|
| 687 | + 'WEF' => 'Effective From', |
|
| 688 | + 'WI' => 'Within', |
|
| 689 | + 'WID' => 'Width', |
|
| 690 | + 'WIE' => 'Effective Immediately', |
|
| 691 | + 'WILCO' => 'Will Comply', |
|
| 692 | + 'WIND' => 'Wind', |
|
| 693 | + 'WINTEM' => 'Forecast Upper Wind And Temperature For Aviation', |
|
| 694 | + 'WIP' => 'Work In Progress', |
|
| 695 | + 'WKN' => 'Weaken', |
|
| 696 | + 'WNW' => 'West-north-west', |
|
| 697 | + 'WO' => 'Without', |
|
| 698 | + 'WPT' => 'Way-point', |
|
| 699 | + 'WRNG' => 'Warning', |
|
| 700 | + 'WSW' => 'West-south-west', |
|
| 701 | + 'WT' => 'Weight', |
|
| 702 | + 'WWW' => 'Worldwide Web', |
|
| 703 | + 'WX' => 'Weather', |
|
| 704 | + 'XBAR' => 'Crossbar', |
|
| 705 | + 'XNG' => 'Crossing', |
|
| 706 | + 'XS' => 'Atmospherics', |
|
| 707 | + 'YCZ' => 'Yellow Caution Zone', |
|
| 708 | + 'YR' => 'Your'); |
|
| 709 | 709 | |
| 710 | 710 | |
| 711 | 711 | function __construct($dbc = null) { |
@@ -7,90 +7,90 @@ discard block |
||
| 7 | 7 | |
| 8 | 8 | |
| 9 | 9 | class Translation { |
| 10 | - public $db; |
|
| 11 | - function __construct($dbc = null) { |
|
| 12 | - $Connection = new Connection($dbc); |
|
| 13 | - $this->db = $Connection->db; |
|
| 14 | - } |
|
| 10 | + public $db; |
|
| 11 | + function __construct($dbc = null) { |
|
| 12 | + $Connection = new Connection($dbc); |
|
| 13 | + $this->db = $Connection->db; |
|
| 14 | + } |
|
| 15 | 15 | |
| 16 | - /** |
|
| 17 | - * Change IATA to ICAO value for ident |
|
| 18 | - * |
|
| 19 | - * @param String $ident ident |
|
| 20 | - * @return String the icao |
|
| 21 | - */ |
|
| 22 | - public function ident2icao($ident) { |
|
| 16 | + /** |
|
| 17 | + * Change IATA to ICAO value for ident |
|
| 18 | + * |
|
| 19 | + * @param String $ident ident |
|
| 20 | + * @return String the icao |
|
| 21 | + */ |
|
| 22 | + public function ident2icao($ident) { |
|
| 23 | 23 | $Spotter = new Spotter(); |
| 24 | 24 | if (!is_numeric(substr($ident, 0, 3))) |
| 25 | - { |
|
| 26 | - if (is_numeric(substr(substr($ident, 0, 3), -1, 1))) { |
|
| 27 | - $airline_icao = substr($ident, 0, 2); |
|
| 28 | - } elseif (is_numeric(substr(substr($ident, 0, 4), -1, 1))) { |
|
| 29 | - //$airline_icao = substr($ident, 0, 3); |
|
| 30 | - return $ident; |
|
| 31 | - } else return $ident; |
|
| 32 | - } else return $ident; |
|
| 33 | - if ($airline_icao == 'AF') { |
|
| 34 | - if (filter_var(substr($ident,2),FILTER_VALIDATE_INT,array("flags"=>FILTER_FLAG_ALLOW_OCTAL))) $icao = $ident; |
|
| 35 | - else $icao = 'AFR'.ltrim(substr($ident,2),'0'); |
|
| 36 | - } else { |
|
| 37 | - $identicao = $Spotter->getAllAirlineInfo($airline_icao); |
|
| 38 | - if (isset($identicao[0])) { |
|
| 39 | - $icao = $identicao[0]['icao'].ltrim(substr($ident,2),'0'); |
|
| 40 | - } else $icao = $ident; |
|
| 41 | - } |
|
| 42 | - return $icao; |
|
| 43 | - } |
|
| 25 | + { |
|
| 26 | + if (is_numeric(substr(substr($ident, 0, 3), -1, 1))) { |
|
| 27 | + $airline_icao = substr($ident, 0, 2); |
|
| 28 | + } elseif (is_numeric(substr(substr($ident, 0, 4), -1, 1))) { |
|
| 29 | + //$airline_icao = substr($ident, 0, 3); |
|
| 30 | + return $ident; |
|
| 31 | + } else return $ident; |
|
| 32 | + } else return $ident; |
|
| 33 | + if ($airline_icao == 'AF') { |
|
| 34 | + if (filter_var(substr($ident,2),FILTER_VALIDATE_INT,array("flags"=>FILTER_FLAG_ALLOW_OCTAL))) $icao = $ident; |
|
| 35 | + else $icao = 'AFR'.ltrim(substr($ident,2),'0'); |
|
| 36 | + } else { |
|
| 37 | + $identicao = $Spotter->getAllAirlineInfo($airline_icao); |
|
| 38 | + if (isset($identicao[0])) { |
|
| 39 | + $icao = $identicao[0]['icao'].ltrim(substr($ident,2),'0'); |
|
| 40 | + } else $icao = $ident; |
|
| 41 | + } |
|
| 42 | + return $icao; |
|
| 43 | + } |
|
| 44 | 44 | |
| 45 | 45 | |
| 46 | - public function getOperator($ident) { |
|
| 47 | - $query = "SELECT * FROM translation WHERE Operator = :ident LIMIT 1"; |
|
| 48 | - $query_values = array(':ident' => $ident); |
|
| 49 | - try { |
|
| 50 | - $sth = $this->db->prepare($query); |
|
| 51 | - $sth->execute($query_values); |
|
| 52 | - } catch(PDOException $e) { |
|
| 53 | - return "error : ".$e->getMessage(); |
|
| 54 | - } |
|
| 55 | - $row = $sth->fetch(PDO::FETCH_ASSOC); |
|
| 56 | - if (count($row) > 0) { |
|
| 57 | - return $row['operator_correct']; |
|
| 58 | - } else return $ident; |
|
| 59 | - } |
|
| 46 | + public function getOperator($ident) { |
|
| 47 | + $query = "SELECT * FROM translation WHERE Operator = :ident LIMIT 1"; |
|
| 48 | + $query_values = array(':ident' => $ident); |
|
| 49 | + try { |
|
| 50 | + $sth = $this->db->prepare($query); |
|
| 51 | + $sth->execute($query_values); |
|
| 52 | + } catch(PDOException $e) { |
|
| 53 | + return "error : ".$e->getMessage(); |
|
| 54 | + } |
|
| 55 | + $row = $sth->fetch(PDO::FETCH_ASSOC); |
|
| 56 | + if (count($row) > 0) { |
|
| 57 | + return $row['operator_correct']; |
|
| 58 | + } else return $ident; |
|
| 59 | + } |
|
| 60 | 60 | |
| 61 | - public function addOperator($ident,$correct_ident,$source) { |
|
| 62 | - $query = "INSERT INTO translation (Operator,Operator_correct,Source) VALUES (:ident,:correct_ident,:source)"; |
|
| 63 | - $query_values = array(':ident' => $ident,':correct_ident' => $correct_ident, ':source' => $source); |
|
| 64 | - try { |
|
| 65 | - $sth = $this->db->prepare($query); |
|
| 66 | - $sth->execute($query_values); |
|
| 67 | - } catch(PDOException $e) { |
|
| 68 | - return "error : ".$e->getMessage(); |
|
| 69 | - } |
|
| 70 | - } |
|
| 61 | + public function addOperator($ident,$correct_ident,$source) { |
|
| 62 | + $query = "INSERT INTO translation (Operator,Operator_correct,Source) VALUES (:ident,:correct_ident,:source)"; |
|
| 63 | + $query_values = array(':ident' => $ident,':correct_ident' => $correct_ident, ':source' => $source); |
|
| 64 | + try { |
|
| 65 | + $sth = $this->db->prepare($query); |
|
| 66 | + $sth->execute($query_values); |
|
| 67 | + } catch(PDOException $e) { |
|
| 68 | + return "error : ".$e->getMessage(); |
|
| 69 | + } |
|
| 70 | + } |
|
| 71 | 71 | |
| 72 | - public function updateOperator($ident,$correct_ident,$source) { |
|
| 73 | - $query = "UPDATE translation SET Operator_correct = :correct_ident,Source = :source WHERE Operator = :ident"; |
|
| 74 | - $query_values = array(':ident' => $ident,':correct_ident' => $correct_ident, ':source' => $source); |
|
| 75 | - try { |
|
| 76 | - $sth = $this->db->prepare($query); |
|
| 77 | - $sth->execute($query_values); |
|
| 78 | - } catch(PDOException $e) { |
|
| 79 | - return "error : ".$e->getMessage(); |
|
| 80 | - } |
|
| 81 | - } |
|
| 72 | + public function updateOperator($ident,$correct_ident,$source) { |
|
| 73 | + $query = "UPDATE translation SET Operator_correct = :correct_ident,Source = :source WHERE Operator = :ident"; |
|
| 74 | + $query_values = array(':ident' => $ident,':correct_ident' => $correct_ident, ':source' => $source); |
|
| 75 | + try { |
|
| 76 | + $sth = $this->db->prepare($query); |
|
| 77 | + $sth->execute($query_values); |
|
| 78 | + } catch(PDOException $e) { |
|
| 79 | + return "error : ".$e->getMessage(); |
|
| 80 | + } |
|
| 81 | + } |
|
| 82 | 82 | |
| 83 | - public function checkTranslation($ident,$web = false) { |
|
| 84 | - global $globalTranslationSources, $globalTranslationFetch; |
|
| 85 | - //if (!isset($globalTranslationSources)) $globalTranslationSources = array('planefinder'); |
|
| 86 | - $globalTranslationSources = array(); |
|
| 87 | - if (!isset($globalTranslationFetch)) $globalTranslationFetch = TRUE; |
|
| 88 | - //echo "Check Translation for ".$ident."..."; |
|
| 89 | - $correct = $this->getOperator($ident); |
|
| 90 | - if ($correct != '' && $correct != $ident) { |
|
| 91 | - //echo "Found in DB !\n"; |
|
| 92 | - return $correct; |
|
| 93 | - } /* |
|
| 83 | + public function checkTranslation($ident,$web = false) { |
|
| 84 | + global $globalTranslationSources, $globalTranslationFetch; |
|
| 85 | + //if (!isset($globalTranslationSources)) $globalTranslationSources = array('planefinder'); |
|
| 86 | + $globalTranslationSources = array(); |
|
| 87 | + if (!isset($globalTranslationFetch)) $globalTranslationFetch = TRUE; |
|
| 88 | + //echo "Check Translation for ".$ident."..."; |
|
| 89 | + $correct = $this->getOperator($ident); |
|
| 90 | + if ($correct != '' && $correct != $ident) { |
|
| 91 | + //echo "Found in DB !\n"; |
|
| 92 | + return $correct; |
|
| 93 | + } /* |
|
| 94 | 94 | elseif ($web && $globalTranslationFetch) { |
| 95 | 95 | if (! is_numeric(substr($ident,-4))) { |
| 96 | 96 | if (count($globalTranslationSources) > 0) { |
@@ -107,8 +107,8 @@ discard block |
||
| 107 | 107 | } |
| 108 | 108 | } |
| 109 | 109 | */ |
| 110 | - return $this->ident2icao($ident); |
|
| 111 | - } |
|
| 110 | + return $this->ident2icao($ident); |
|
| 111 | + } |
|
| 112 | 112 | |
| 113 | 113 | /* |
| 114 | 114 | function fromPlanefinder($icao) { |
@@ -11,11 +11,11 @@ discard block |
||
| 11 | 11 | } |
| 12 | 12 | |
| 13 | 13 | /** |
| 14 | - * Gets all the spotter information based on the latest data entry |
|
| 15 | - * |
|
| 16 | - * @return Array the spotter information |
|
| 17 | - * |
|
| 18 | - */ |
|
| 14 | + * Gets all the spotter information based on the latest data entry |
|
| 15 | + * |
|
| 16 | + * @return Array the spotter information |
|
| 17 | + * |
|
| 18 | + */ |
|
| 19 | 19 | public function getLiveSpotterData($limit = '', $sort = '', $filter = array()) |
| 20 | 20 | { |
| 21 | 21 | global $globalDBdriver, $globalLiveInterval; |
@@ -58,7 +58,7 @@ discard block |
||
| 58 | 58 | if ($globalDBdriver == 'mysql') { |
| 59 | 59 | //$query = "SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL 30 SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate"; |
| 60 | 60 | $query = 'SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate'.$filter_query.$orderby_query; |
| 61 | - } else if ($globalDBdriver == 'pgsql') { |
|
| 61 | + } else if ($globalDBdriver == 'pgsql') { |
|
| 62 | 62 | $query = "SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalLiveInterval." SECONDS' <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate".$filter_query.$orderby_query; |
| 63 | 63 | } |
| 64 | 64 | $spotter_array = $Spotter->getDataFromDB($query.$limit_query); |
@@ -67,11 +67,11 @@ discard block |
||
| 67 | 67 | } |
| 68 | 68 | |
| 69 | 69 | /** |
| 70 | - * Gets Minimal Live Spotter data |
|
| 71 | - * |
|
| 72 | - * @return Array the spotter information |
|
| 73 | - * |
|
| 74 | - */ |
|
| 70 | + * Gets Minimal Live Spotter data |
|
| 71 | + * |
|
| 72 | + * @return Array the spotter information |
|
| 73 | + * |
|
| 74 | + */ |
|
| 75 | 75 | public function getMinLiveSpotterData($filter = array()) |
| 76 | 76 | { |
| 77 | 77 | global $globalDBdriver, $globalLiveInterval; |
@@ -104,9 +104,9 @@ discard block |
||
| 104 | 104 | // $query = 'SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk FROM spotter_live WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= spotter_live.date ORDER BY spotter_live.date GROUP BY spotter_live.flightaware_id'.$filter_query; |
| 105 | 105 | |
| 106 | 106 | //$query = 'SELECT a.aircraft_shadow, spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk FROM spotter_live WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= date '.$filter_query.'LEFT JOIN (SELECT aircraft_shadow,icao FROM aircraft) a ON spotter_live.aircraft_icao = a.icao'; |
| 107 | - } else if ($globalDBdriver == 'pgsql') { |
|
| 108 | - //$query = "SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE NOW() AT TIME ZONE 'UTC' - '30 SECONDS'->INTERVAL <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate"; |
|
| 109 | - //$query = "SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE NOW() AT TIME ZONE 'UTC' - '".$globalLiveInterval." SECONDS'->INTERVAL <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate$orderby_query"; |
|
| 107 | + } else if ($globalDBdriver == 'pgsql') { |
|
| 108 | + //$query = "SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE NOW() AT TIME ZONE 'UTC' - '30 SECONDS'->INTERVAL <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate"; |
|
| 109 | + //$query = "SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE NOW() AT TIME ZONE 'UTC' - '".$globalLiveInterval." SECONDS'->INTERVAL <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate$orderby_query"; |
|
| 110 | 110 | //$query = 'SELECT spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, a.aircraft_shadow FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate '.$filter_query.'INNER JOIN (SELECT * FROM aircraft) a on spotter_live.aircraft_icao = a.icao'; |
| 111 | 111 | $query = "SELECT a.aircraft_shadow, spotter_live.ident, spotter_live.flightaware_id, spotter_live.aircraft_icao, spotter_live.departure_airport_icao as departure_airport, spotter_live.arrival_airport_icao as arrival_airport, spotter_live.latitude, spotter_live.longitude, spotter_live.altitude, spotter_live.heading, spotter_live.ground_speed, spotter_live.squawk, spotter_live.date |
| 112 | 112 | FROM spotter_live |
@@ -115,7 +115,7 @@ discard block |
||
| 115 | 115 | // $spotter_array = Spotter->getDataFromDB($query.$limit_query); |
| 116 | 116 | //echo $query; |
| 117 | 117 | |
| 118 | - try { |
|
| 118 | + try { |
|
| 119 | 119 | $sth = $this->db->prepare($query); |
| 120 | 120 | $sth->execute(); |
| 121 | 121 | } catch(PDOException $e) { |
@@ -127,11 +127,11 @@ discard block |
||
| 127 | 127 | } |
| 128 | 128 | |
| 129 | 129 | /** |
| 130 | - * Gets number of latest data entry |
|
| 131 | - * |
|
| 132 | - * @return String number of entry |
|
| 133 | - * |
|
| 134 | - */ |
|
| 130 | + * Gets number of latest data entry |
|
| 131 | + * |
|
| 132 | + * @return String number of entry |
|
| 133 | + * |
|
| 134 | + */ |
|
| 135 | 135 | public function getLiveSpotterCount($filter = array()) |
| 136 | 136 | { |
| 137 | 137 | global $globalDBdriver, $globalLiveInterval; |
@@ -151,13 +151,13 @@ discard block |
||
| 151 | 151 | |
| 152 | 152 | if (!isset($globalLiveInterval)) $globalLiveInterval = '200'; |
| 153 | 153 | if ($globalDBdriver == 'mysql') { |
| 154 | - //$query = 'SELECT COUNT(*) as nb FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate'.$filter_query; |
|
| 154 | + //$query = 'SELECT COUNT(*) as nb FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate'.$filter_query; |
|
| 155 | 155 | $query = 'SELECT COUNT(DISTINCT flightaware_id) as nb FROM spotter_live WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= date'.$filter_query; |
| 156 | - } elseif ($globalDBdriver == 'pgsql') { |
|
| 157 | - //$query = "SELECT COUNT(*) as nb FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE NOW() AT TIME ZONE 'UTC' - '".$globalLiveInterval." SECONDS'->INTERVAL <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate".$filter_query; |
|
| 156 | + } elseif ($globalDBdriver == 'pgsql') { |
|
| 157 | + //$query = "SELECT COUNT(*) as nb FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE NOW() AT TIME ZONE 'UTC' - '".$globalLiveInterval." SECONDS'->INTERVAL <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate".$filter_query; |
|
| 158 | 158 | $query = "SELECT COUNT(DISTINCT flightaware_id) as nb FROM spotter_live WHERE CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '".$globalLiveInterval." SECONDS' <= date".$filter_query; |
| 159 | - } |
|
| 160 | - try { |
|
| 159 | + } |
|
| 160 | + try { |
|
| 161 | 161 | $sth = $this->db->prepare($query); |
| 162 | 162 | $sth->execute(); |
| 163 | 163 | } catch(PDOException $e) { |
@@ -168,11 +168,11 @@ discard block |
||
| 168 | 168 | } |
| 169 | 169 | |
| 170 | 170 | /** |
| 171 | - * Gets all the spotter information based on the latest data entry and coord |
|
| 172 | - * |
|
| 173 | - * @return Array the spotter information |
|
| 174 | - * |
|
| 175 | - */ |
|
| 171 | + * Gets all the spotter information based on the latest data entry and coord |
|
| 172 | + * |
|
| 173 | + * @return Array the spotter information |
|
| 174 | + * |
|
| 175 | + */ |
|
| 176 | 176 | public function getLiveSpotterDatabyCoord($coord, $filter = array()) |
| 177 | 177 | { |
| 178 | 178 | global $globalDBdriver, $globalLiveInterval; |
@@ -193,140 +193,140 @@ discard block |
||
| 193 | 193 | } |
| 194 | 194 | |
| 195 | 195 | if (is_array($coord)) { |
| 196 | - $minlong = filter_var($coord[0],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
|
| 197 | - $minlat = filter_var($coord[1],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
|
| 198 | - $maxlong = filter_var($coord[2],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
|
| 199 | - $maxlat = filter_var($coord[3],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
|
| 200 | - } else return array(); |
|
| 201 | - if ($globalDBdriver == 'mysql') { |
|
| 202 | - //$query = "SELECT spotter_output.* FROM spotter_output WHERE spotter_output.flightaware_id IN (SELECT spotter_live.flightaware_id FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL ".$globalLiveInterval." SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate AND spotter_live.latitude BETWEEN ".$minlat." AND ".$maxlat." AND spotter_live.longitude BETWEEN ".$minlong." AND ".$maxlong.")"; |
|
| 203 | - $query = 'SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate AND spotter_live.latitude BETWEEN '.$minlat.' AND '.$maxlat.' AND spotter_live.longitude BETWEEN '.$minlong.' AND '.$maxlong.' GROUP BY spotter_live.flightaware_id'.$filter_query; |
|
| 204 | - } else if ($globalDBdriver == 'pgsql') { |
|
| 205 | - $query = "SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE NOW() at time zone 'UTC' - INTERVAL '".$globalLiveInterval." SECONDS' <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate AND spotter_live.latitude BETWEEN ".$minlat." AND ".$maxlat." AND spotter_live.longitude BETWEEN ".$minlong." AND ".$maxlong." GROUP BY spotter_live.flightaware_id".$filter_query; |
|
| 206 | - } |
|
| 207 | - $spotter_array = $Spotter->getDataFromDB($query); |
|
| 208 | - return $spotter_array; |
|
| 209 | - } |
|
| 196 | + $minlong = filter_var($coord[0],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
|
| 197 | + $minlat = filter_var($coord[1],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
|
| 198 | + $maxlong = filter_var($coord[2],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
|
| 199 | + $maxlat = filter_var($coord[3],FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); |
|
| 200 | + } else return array(); |
|
| 201 | + if ($globalDBdriver == 'mysql') { |
|
| 202 | + //$query = "SELECT spotter_output.* FROM spotter_output WHERE spotter_output.flightaware_id IN (SELECT spotter_live.flightaware_id FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL ".$globalLiveInterval." SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate AND spotter_live.latitude BETWEEN ".$minlat." AND ".$maxlat." AND spotter_live.longitude BETWEEN ".$minlong." AND ".$maxlong.")"; |
|
| 203 | + $query = 'SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL '.$globalLiveInterval.' SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate AND spotter_live.latitude BETWEEN '.$minlat.' AND '.$maxlat.' AND spotter_live.longitude BETWEEN '.$minlong.' AND '.$maxlong.' GROUP BY spotter_live.flightaware_id'.$filter_query; |
|
| 204 | + } else if ($globalDBdriver == 'pgsql') { |
|
| 205 | + $query = "SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE NOW() at time zone 'UTC' - INTERVAL '".$globalLiveInterval." SECONDS' <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate AND spotter_live.latitude BETWEEN ".$minlat." AND ".$maxlat." AND spotter_live.longitude BETWEEN ".$minlong." AND ".$maxlong." GROUP BY spotter_live.flightaware_id".$filter_query; |
|
| 206 | + } |
|
| 207 | + $spotter_array = $Spotter->getDataFromDB($query); |
|
| 208 | + return $spotter_array; |
|
| 209 | + } |
|
| 210 | 210 | |
| 211 | 211 | /** |
| 212 | - * Gets all the spotter information based on a user's latitude and longitude |
|
| 213 | - * |
|
| 214 | - * @return Array the spotter information |
|
| 215 | - * |
|
| 216 | - */ |
|
| 217 | - public function getLatestSpotterForLayar($lat, $lng, $radius, $interval) |
|
| 218 | - { |
|
| 219 | - $Spotter = new Spotter($this->db); |
|
| 220 | - date_default_timezone_set('UTC'); |
|
| 221 | - |
|
| 222 | - if ($lat != '') |
|
| 223 | - { |
|
| 224 | - if (!is_numeric($lat)) |
|
| 225 | - { |
|
| 226 | - return false; |
|
| 227 | - } |
|
| 228 | - } |
|
| 212 | + * Gets all the spotter information based on a user's latitude and longitude |
|
| 213 | + * |
|
| 214 | + * @return Array the spotter information |
|
| 215 | + * |
|
| 216 | + */ |
|
| 217 | + public function getLatestSpotterForLayar($lat, $lng, $radius, $interval) |
|
| 218 | + { |
|
| 219 | + $Spotter = new Spotter($this->db); |
|
| 220 | + date_default_timezone_set('UTC'); |
|
| 221 | + |
|
| 222 | + if ($lat != '') |
|
| 223 | + { |
|
| 224 | + if (!is_numeric($lat)) |
|
| 225 | + { |
|
| 226 | + return false; |
|
| 227 | + } |
|
| 228 | + } |
|
| 229 | 229 | |
| 230 | - if ($lng != '') |
|
| 231 | - { |
|
| 232 | - if (!is_numeric($lng)) |
|
| 233 | - { |
|
| 234 | - return false; |
|
| 235 | - } |
|
| 236 | - } |
|
| 237 | - |
|
| 238 | - if ($radius != '') |
|
| 239 | - { |
|
| 240 | - if (!is_numeric($radius)) |
|
| 241 | - { |
|
| 242 | - return false; |
|
| 243 | - } |
|
| 244 | - } |
|
| 230 | + if ($lng != '') |
|
| 231 | + { |
|
| 232 | + if (!is_numeric($lng)) |
|
| 233 | + { |
|
| 234 | + return false; |
|
| 235 | + } |
|
| 236 | + } |
|
| 237 | + |
|
| 238 | + if ($radius != '') |
|
| 239 | + { |
|
| 240 | + if (!is_numeric($radius)) |
|
| 241 | + { |
|
| 242 | + return false; |
|
| 243 | + } |
|
| 244 | + } |
|
| 245 | 245 | |
| 246 | - if ($interval != '') |
|
| 247 | - { |
|
| 248 | - if (!is_string($interval)) |
|
| 249 | - { |
|
| 250 | - $additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 MINUTE) <= spotter_live.date '; |
|
| 251 | - return false; |
|
| 252 | - } else { |
|
| 253 | - if ($interval == '1m') |
|
| 254 | - { |
|
| 255 | - $additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 MINUTE) <= spotter_live.date '; |
|
| 256 | - } else if ($interval == '15m'){ |
|
| 257 | - $additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 15 MINUTE) <= spotter_live.date '; |
|
| 258 | - } |
|
| 259 | - } |
|
| 260 | - } else { |
|
| 261 | - $additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 MINUTE) <= spotter_live.date '; |
|
| 262 | - } |
|
| 263 | - |
|
| 264 | - $query = "SELECT spotter_live.*, ( 6371 * acos( cos( radians(:lat) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(:lng) ) + sin( radians(:lat) ) * sin( radians( latitude ) ) ) ) AS distance FROM spotter_live |
|
| 246 | + if ($interval != '') |
|
| 247 | + { |
|
| 248 | + if (!is_string($interval)) |
|
| 249 | + { |
|
| 250 | + $additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 MINUTE) <= spotter_live.date '; |
|
| 251 | + return false; |
|
| 252 | + } else { |
|
| 253 | + if ($interval == '1m') |
|
| 254 | + { |
|
| 255 | + $additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 MINUTE) <= spotter_live.date '; |
|
| 256 | + } else if ($interval == '15m'){ |
|
| 257 | + $additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 15 MINUTE) <= spotter_live.date '; |
|
| 258 | + } |
|
| 259 | + } |
|
| 260 | + } else { |
|
| 261 | + $additional_query = ' AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 MINUTE) <= spotter_live.date '; |
|
| 262 | + } |
|
| 263 | + |
|
| 264 | + $query = "SELECT spotter_live.*, ( 6371 * acos( cos( radians(:lat) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(:lng) ) + sin( radians(:lat) ) * sin( radians( latitude ) ) ) ) AS distance FROM spotter_live |
|
| 265 | 265 | WHERE spotter_live.latitude <> '' |
| 266 | 266 | AND spotter_live.longitude <> '' |
| 267 | 267 | ".$additional_query." |
| 268 | 268 | HAVING distance < :radius |
| 269 | 269 | ORDER BY distance"; |
| 270 | 270 | |
| 271 | - $spotter_array = $Spotter->getDataFromDB($query, array(':lat' => $lat, ':lng' => $lng,':radius' => $radius),$limit_query); |
|
| 271 | + $spotter_array = $Spotter->getDataFromDB($query, array(':lat' => $lat, ':lng' => $lng,':radius' => $radius),$limit_query); |
|
| 272 | 272 | |
| 273 | - return $spotter_array; |
|
| 274 | - } |
|
| 273 | + return $spotter_array; |
|
| 274 | + } |
|
| 275 | 275 | |
| 276 | 276 | |
| 277 | - /** |
|
| 278 | - * Gets all the spotter information based on a particular callsign |
|
| 279 | - * |
|
| 280 | - * @return Array the spotter information |
|
| 281 | - * |
|
| 282 | - */ |
|
| 277 | + /** |
|
| 278 | + * Gets all the spotter information based on a particular callsign |
|
| 279 | + * |
|
| 280 | + * @return Array the spotter information |
|
| 281 | + * |
|
| 282 | + */ |
|
| 283 | 283 | public function getLastLiveSpotterDataByIdent($ident) |
| 284 | 284 | { |
| 285 | 285 | $Spotter = new Spotter($this->db); |
| 286 | 286 | date_default_timezone_set('UTC'); |
| 287 | 287 | |
| 288 | 288 | $ident = filter_var($ident, FILTER_SANITIZE_STRING); |
| 289 | - $query = 'SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE l.ident = :ident GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate ORDER BY spotter_live.date DESC'; |
|
| 289 | + $query = 'SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE l.ident = :ident GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate ORDER BY spotter_live.date DESC'; |
|
| 290 | 290 | |
| 291 | 291 | $spotter_array = $Spotter->getDataFromDB($query,array(':ident' => $ident)); |
| 292 | 292 | |
| 293 | 293 | return $spotter_array; |
| 294 | 294 | } |
| 295 | 295 | |
| 296 | - /** |
|
| 297 | - * Gets last spotter information based on a particular callsign |
|
| 298 | - * |
|
| 299 | - * @return Array the spotter information |
|
| 300 | - * |
|
| 301 | - */ |
|
| 296 | + /** |
|
| 297 | + * Gets last spotter information based on a particular callsign |
|
| 298 | + * |
|
| 299 | + * @return Array the spotter information |
|
| 300 | + * |
|
| 301 | + */ |
|
| 302 | 302 | public function getLastLiveSpotterDataById($id) |
| 303 | 303 | { |
| 304 | 304 | $Spotter = new Spotter($this->db); |
| 305 | 305 | date_default_timezone_set('UTC'); |
| 306 | 306 | |
| 307 | 307 | $id = filter_var($id, FILTER_SANITIZE_STRING); |
| 308 | - $query = 'SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE l.flightaware_id = :id GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate ORDER BY spotter_live.date DESC'; |
|
| 308 | + $query = 'SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE l.flightaware_id = :id GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate ORDER BY spotter_live.date DESC'; |
|
| 309 | 309 | |
| 310 | 310 | $spotter_array = $Spotter->getDataFromDB($query,array(':id' => $id)); |
| 311 | 311 | |
| 312 | 312 | return $spotter_array; |
| 313 | 313 | } |
| 314 | 314 | |
| 315 | - /** |
|
| 316 | - * Gets altitude information based on a particular callsign |
|
| 317 | - * |
|
| 318 | - * @return Array the spotter information |
|
| 319 | - * |
|
| 320 | - */ |
|
| 315 | + /** |
|
| 316 | + * Gets altitude information based on a particular callsign |
|
| 317 | + * |
|
| 318 | + * @return Array the spotter information |
|
| 319 | + * |
|
| 320 | + */ |
|
| 321 | 321 | public function getAltitudeLiveSpotterDataByIdent($ident) |
| 322 | 322 | { |
| 323 | 323 | |
| 324 | 324 | date_default_timezone_set('UTC'); |
| 325 | 325 | |
| 326 | 326 | $ident = filter_var($ident, FILTER_SANITIZE_STRING); |
| 327 | - $query = 'SELECT spotter_live.altitude, spotter_live.date FROM spotter_live WHERE spotter_live.ident = :ident'; |
|
| 327 | + $query = 'SELECT spotter_live.altitude, spotter_live.date FROM spotter_live WHERE spotter_live.ident = :ident'; |
|
| 328 | 328 | |
| 329 | - try { |
|
| 329 | + try { |
|
| 330 | 330 | |
| 331 | 331 | $sth = $this->db->prepare($query); |
| 332 | 332 | $sth->execute(array(':ident' => $ident)); |
@@ -338,12 +338,12 @@ discard block |
||
| 338 | 338 | return $spotter_array; |
| 339 | 339 | } |
| 340 | 340 | |
| 341 | - /** |
|
| 342 | - * Gets all the spotter information based on a particular id |
|
| 343 | - * |
|
| 344 | - * @return Array the spotter information |
|
| 345 | - * |
|
| 346 | - */ |
|
| 341 | + /** |
|
| 342 | + * Gets all the spotter information based on a particular id |
|
| 343 | + * |
|
| 344 | + * @return Array the spotter information |
|
| 345 | + * |
|
| 346 | + */ |
|
| 347 | 347 | public function getAllLiveSpotterDataById($id) |
| 348 | 348 | { |
| 349 | 349 | date_default_timezone_set('UTC'); |
@@ -351,7 +351,7 @@ discard block |
||
| 351 | 351 | $query = self::$global_query.' WHERE spotter_live.flightaware_id = :id ORDER BY date'; |
| 352 | 352 | // $spotter_array = Spotter->getDataFromDB($query,array(':id' => $id)); |
| 353 | 353 | |
| 354 | - try { |
|
| 354 | + try { |
|
| 355 | 355 | |
| 356 | 356 | $sth = $this->db->prepare($query); |
| 357 | 357 | $sth->execute(array(':id' => $id)); |
@@ -363,18 +363,18 @@ discard block |
||
| 363 | 363 | return $spotter_array; |
| 364 | 364 | } |
| 365 | 365 | |
| 366 | - /** |
|
| 367 | - * Gets all the spotter information based on a particular ident |
|
| 368 | - * |
|
| 369 | - * @return Array the spotter information |
|
| 370 | - * |
|
| 371 | - */ |
|
| 366 | + /** |
|
| 367 | + * Gets all the spotter information based on a particular ident |
|
| 368 | + * |
|
| 369 | + * @return Array the spotter information |
|
| 370 | + * |
|
| 371 | + */ |
|
| 372 | 372 | public function getAllLiveSpotterDataByIdent($ident) |
| 373 | 373 | { |
| 374 | 374 | date_default_timezone_set('UTC'); |
| 375 | 375 | $ident = filter_var($ident, FILTER_SANITIZE_STRING); |
| 376 | 376 | $query = self::$global_query.' WHERE spotter_live.ident = :ident'; |
| 377 | - try { |
|
| 377 | + try { |
|
| 378 | 378 | |
| 379 | 379 | $sth = $this->db->prepare($query); |
| 380 | 380 | $sth->execute(array(':ident' => $ident)); |
@@ -387,24 +387,24 @@ discard block |
||
| 387 | 387 | |
| 388 | 388 | |
| 389 | 389 | /** |
| 390 | - * Deletes all info in the table |
|
| 391 | - * |
|
| 392 | - * @return String success or false |
|
| 393 | - * |
|
| 394 | - */ |
|
| 390 | + * Deletes all info in the table |
|
| 391 | + * |
|
| 392 | + * @return String success or false |
|
| 393 | + * |
|
| 394 | + */ |
|
| 395 | 395 | public function deleteLiveSpotterData() |
| 396 | 396 | { |
| 397 | 397 | global $globalDBdriver; |
| 398 | 398 | if ($globalDBdriver == 'mysql') { |
| 399 | 399 | //$query = "DELETE FROM spotter_live WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL 30 MINUTE) >= spotter_live.date"; |
| 400 | 400 | $query = 'DELETE FROM spotter_live WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL 9 HOUR) >= spotter_live.date'; |
| 401 | - //$query = "DELETE FROM spotter_live WHERE spotter_live.id IN (SELECT spotter_live.id FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 HOUR) >= spotter_live.date)"; |
|
| 401 | + //$query = "DELETE FROM spotter_live WHERE spotter_live.id IN (SELECT spotter_live.id FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate AND DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 HOUR) >= spotter_live.date)"; |
|
| 402 | 402 | |
| 403 | 403 | } elseif ($globalDBdriver == 'pgsql') { |
| 404 | 404 | $query = "DELETE FROM spotter_live WHERE NOW() AT TIME ZONE 'UTC' - INTERVAL '9 HOURS' >= spotter_live.date"; |
| 405 | 405 | } |
| 406 | 406 | |
| 407 | - try { |
|
| 407 | + try { |
|
| 408 | 408 | |
| 409 | 409 | $sth = $this->db->prepare($query); |
| 410 | 410 | $sth->execute(); |
@@ -416,18 +416,18 @@ discard block |
||
| 416 | 416 | } |
| 417 | 417 | |
| 418 | 418 | /** |
| 419 | - * Deletes all info in the table for aircraft not seen since 2 HOUR |
|
| 420 | - * |
|
| 421 | - * @return String success or false |
|
| 422 | - * |
|
| 423 | - */ |
|
| 419 | + * Deletes all info in the table for aircraft not seen since 2 HOUR |
|
| 420 | + * |
|
| 421 | + * @return String success or false |
|
| 422 | + * |
|
| 423 | + */ |
|
| 424 | 424 | public function deleteLiveSpotterDataNotUpdated() |
| 425 | 425 | { |
| 426 | 426 | global $globalDBdriver, $globalDebug; |
| 427 | 427 | if ($globalDBdriver == 'mysql') { |
| 428 | 428 | //$query = 'SELECT flightaware_id FROM spotter_live WHERE DATE_SUB(UTC_TIMESTAMP(), INTERVAL 1 HOUR) >= spotter_live.date AND spotter_live.flightaware_id NOT IN (SELECT flightaware_id FROM spotter_live WHERE DATE_SUB(UTC_TIMESTAMP(), INTERVAL 1 HOUR) < spotter_live.date) LIMIT 800 OFFSET 0'; |
| 429 | - $query = "SELECT spotter_live.flightaware_id FROM spotter_live INNER JOIN (SELECT flightaware_id,MAX(date) as max_date FROM spotter_live GROUP BY flightaware_id) s ON s.flightaware_id = spotter_live.flightaware_id AND DATE_SUB(UTC_TIMESTAMP(), INTERVAL 2 HOUR) >= s.max_date LIMIT 1200 OFFSET 0"; |
|
| 430 | - try { |
|
| 429 | + $query = "SELECT spotter_live.flightaware_id FROM spotter_live INNER JOIN (SELECT flightaware_id,MAX(date) as max_date FROM spotter_live GROUP BY flightaware_id) s ON s.flightaware_id = spotter_live.flightaware_id AND DATE_SUB(UTC_TIMESTAMP(), INTERVAL 2 HOUR) >= s.max_date LIMIT 1200 OFFSET 0"; |
|
| 430 | + try { |
|
| 431 | 431 | |
| 432 | 432 | $sth = $this->db->prepare($query); |
| 433 | 433 | $sth->execute(); |
@@ -435,8 +435,8 @@ discard block |
||
| 435 | 435 | return "error"; |
| 436 | 436 | } |
| 437 | 437 | $query_delete = 'DELETE FROM spotter_live WHERE flightaware_id IN ('; |
| 438 | - $i = 0; |
|
| 439 | - $j =0; |
|
| 438 | + $i = 0; |
|
| 439 | + $j =0; |
|
| 440 | 440 | $all = $sth->fetchAll(PDO::FETCH_ASSOC); |
| 441 | 441 | foreach($all as $row) |
| 442 | 442 | { |
@@ -444,20 +444,20 @@ discard block |
||
| 444 | 444 | $j++; |
| 445 | 445 | if ($j == 30) { |
| 446 | 446 | if ($globalDebug) echo "."; |
| 447 | - try { |
|
| 447 | + try { |
|
| 448 | 448 | |
| 449 | 449 | $sth = $this->db->prepare(substr($query_delete,0,-1).")"); |
| 450 | 450 | $sth->execute(); |
| 451 | 451 | } catch(PDOException $e) { |
| 452 | 452 | return "error"; |
| 453 | 453 | } |
| 454 | - $query_delete = 'DELETE FROM spotter_live WHERE flightaware_id IN ('; |
|
| 455 | - $j = 0; |
|
| 454 | + $query_delete = 'DELETE FROM spotter_live WHERE flightaware_id IN ('; |
|
| 455 | + $j = 0; |
|
| 456 | 456 | } |
| 457 | 457 | $query_delete .= "'".$row['flightaware_id']."',"; |
| 458 | 458 | } |
| 459 | 459 | if ($i > 0) { |
| 460 | - try { |
|
| 460 | + try { |
|
| 461 | 461 | |
| 462 | 462 | $sth = $this->db->prepare(substr($query_delete,0,-1).")"); |
| 463 | 463 | $sth->execute(); |
@@ -468,9 +468,9 @@ discard block |
||
| 468 | 468 | return "success"; |
| 469 | 469 | } elseif ($globalDBdriver == 'pgsql') { |
| 470 | 470 | //$query = "SELECT flightaware_id FROM spotter_live WHERE NOW() AT TIME ZONE 'UTC' - INTERVAL '9 HOURS' >= spotter_live.date AND spotter_live.flightaware_id NOT IN (SELECT flightaware_id FROM spotter_live WHERE NOW() AT TIME ZONE 'UTC' - INTERVAL '9 HOURS' < spotter_live.date) LIMIT 800 OFFSET 0"; |
| 471 | - //$query = "SELECT spotter_live.flightaware_id FROM spotter_live INNER JOIN (SELECT flightaware_id,MAX(date) as max_date FROM spotter_live GROUP BY flightaware_id) s ON s.flightaware_id = spotter_live.flightaware_id AND NOW() AT TIME ZONE 'UTC' - INTERVAL '2 HOURS' >= s.max_date LIMIT 800 OFFSET 0"; |
|
| 472 | - $query = "DELETE FROM spotter_live WHERE flightaware_id IN (SELECT spotter_live.flightaware_id FROM spotter_live INNER JOIN (SELECT flightaware_id,MAX(date) as max_date FROM spotter_live GROUP BY flightaware_id) s ON s.flightaware_id = spotter_live.flightaware_id AND NOW() AT TIME ZONE 'UTC' - INTERVAL '2 HOURS' >= s.max_date LIMIT 800 OFFSET 0)"; |
|
| 473 | - try { |
|
| 471 | + //$query = "SELECT spotter_live.flightaware_id FROM spotter_live INNER JOIN (SELECT flightaware_id,MAX(date) as max_date FROM spotter_live GROUP BY flightaware_id) s ON s.flightaware_id = spotter_live.flightaware_id AND NOW() AT TIME ZONE 'UTC' - INTERVAL '2 HOURS' >= s.max_date LIMIT 800 OFFSET 0"; |
|
| 472 | + $query = "DELETE FROM spotter_live WHERE flightaware_id IN (SELECT spotter_live.flightaware_id FROM spotter_live INNER JOIN (SELECT flightaware_id,MAX(date) as max_date FROM spotter_live GROUP BY flightaware_id) s ON s.flightaware_id = spotter_live.flightaware_id AND NOW() AT TIME ZONE 'UTC' - INTERVAL '2 HOURS' >= s.max_date LIMIT 800 OFFSET 0)"; |
|
| 473 | + try { |
|
| 474 | 474 | |
| 475 | 475 | $sth = $this->db->prepare($query); |
| 476 | 476 | $sth->execute(); |
@@ -514,17 +514,17 @@ discard block |
||
| 514 | 514 | } |
| 515 | 515 | |
| 516 | 516 | /** |
| 517 | - * Deletes all info in the table for an ident |
|
| 518 | - * |
|
| 519 | - * @return String success or false |
|
| 520 | - * |
|
| 521 | - */ |
|
| 517 | + * Deletes all info in the table for an ident |
|
| 518 | + * |
|
| 519 | + * @return String success or false |
|
| 520 | + * |
|
| 521 | + */ |
|
| 522 | 522 | public function deleteLiveSpotterDataByIdent($ident) |
| 523 | 523 | { |
| 524 | 524 | $ident = filter_var($ident, FILTER_SANITIZE_STRING); |
| 525 | 525 | $query = 'DELETE FROM spotter_live WHERE ident = :ident'; |
| 526 | 526 | |
| 527 | - try { |
|
| 527 | + try { |
|
| 528 | 528 | |
| 529 | 529 | $sth = $this->db->prepare($query); |
| 530 | 530 | $sth->execute(array(':ident' => $ident)); |
@@ -536,17 +536,17 @@ discard block |
||
| 536 | 536 | } |
| 537 | 537 | |
| 538 | 538 | /** |
| 539 | - * Deletes all info in the table for an id |
|
| 540 | - * |
|
| 541 | - * @return String success or false |
|
| 542 | - * |
|
| 543 | - */ |
|
| 539 | + * Deletes all info in the table for an id |
|
| 540 | + * |
|
| 541 | + * @return String success or false |
|
| 542 | + * |
|
| 543 | + */ |
|
| 544 | 544 | public function deleteLiveSpotterDataById($id) |
| 545 | 545 | { |
| 546 | 546 | $id = filter_var($id, FILTER_SANITIZE_STRING); |
| 547 | 547 | $query = 'DELETE FROM spotter_live WHERE flightaware_id = :id'; |
| 548 | 548 | |
| 549 | - try { |
|
| 549 | + try { |
|
| 550 | 550 | |
| 551 | 551 | $sth = $this->db->prepare($query); |
| 552 | 552 | $sth->execute(array(':id' => $id)); |
@@ -559,11 +559,11 @@ discard block |
||
| 559 | 559 | |
| 560 | 560 | |
| 561 | 561 | /** |
| 562 | - * Gets the aircraft ident within the last hour |
|
| 563 | - * |
|
| 564 | - * @return String the ident |
|
| 565 | - * |
|
| 566 | - */ |
|
| 562 | + * Gets the aircraft ident within the last hour |
|
| 563 | + * |
|
| 564 | + * @return String the ident |
|
| 565 | + * |
|
| 566 | + */ |
|
| 567 | 567 | public function getIdentFromLastHour($ident) |
| 568 | 568 | { |
| 569 | 569 | global $globalDBdriver, $globalTimezone; |
@@ -589,14 +589,14 @@ discard block |
||
| 589 | 589 | $ident_result = $row['ident']; |
| 590 | 590 | } |
| 591 | 591 | return $ident_result; |
| 592 | - } |
|
| 592 | + } |
|
| 593 | 593 | |
| 594 | 594 | /** |
| 595 | - * Check recent aircraft |
|
| 596 | - * |
|
| 597 | - * @return String the ident |
|
| 598 | - * |
|
| 599 | - */ |
|
| 595 | + * Check recent aircraft |
|
| 596 | + * |
|
| 597 | + * @return String the ident |
|
| 598 | + * |
|
| 599 | + */ |
|
| 600 | 600 | public function checkIdentRecent($ident) |
| 601 | 601 | { |
| 602 | 602 | global $globalDBdriver, $globalTimezone; |
@@ -622,14 +622,14 @@ discard block |
||
| 622 | 622 | $ident_result = $row['flightaware_id']; |
| 623 | 623 | } |
| 624 | 624 | return $ident_result; |
| 625 | - } |
|
| 625 | + } |
|
| 626 | 626 | |
| 627 | 627 | /** |
| 628 | - * Check recent aircraft by ModeS |
|
| 629 | - * |
|
| 630 | - * @return String the ModeS |
|
| 631 | - * |
|
| 632 | - */ |
|
| 628 | + * Check recent aircraft by ModeS |
|
| 629 | + * |
|
| 630 | + * @return String the ModeS |
|
| 631 | + * |
|
| 632 | + */ |
|
| 633 | 633 | public function checkModeSRecent($modes) |
| 634 | 634 | { |
| 635 | 635 | global $globalDBdriver, $globalTimezone; |
@@ -656,19 +656,19 @@ discard block |
||
| 656 | 656 | $ident_result = $row['flightaware_id']; |
| 657 | 657 | } |
| 658 | 658 | return $ident_result; |
| 659 | - } |
|
| 659 | + } |
|
| 660 | 660 | |
| 661 | 661 | /** |
| 662 | - * Adds a new spotter data |
|
| 663 | - * |
|
| 664 | - * @param String $flightaware_id the ID from flightaware |
|
| 665 | - * @param String $ident the flight ident |
|
| 666 | - * @param String $aircraft_icao the aircraft type |
|
| 667 | - * @param String $departure_airport_icao the departure airport |
|
| 668 | - * @param String $arrival_airport_icao the arrival airport |
|
| 669 | - * @return String success or false |
|
| 670 | - * |
|
| 671 | - */ |
|
| 662 | + * Adds a new spotter data |
|
| 663 | + * |
|
| 664 | + * @param String $flightaware_id the ID from flightaware |
|
| 665 | + * @param String $ident the flight ident |
|
| 666 | + * @param String $aircraft_icao the aircraft type |
|
| 667 | + * @param String $departure_airport_icao the departure airport |
|
| 668 | + * @param String $arrival_airport_icao the arrival airport |
|
| 669 | + * @return String success or false |
|
| 670 | + * |
|
| 671 | + */ |
|
| 672 | 672 | public function addLiveSpotterData($flightaware_id = '', $ident = '', $aircraft_icao = '', $departure_airport_icao = '', $arrival_airport_icao = '', $latitude = '', $longitude = '', $waypoints = '', $altitude = '', $heading = '', $groundspeed = '', $date = '',$departure_airport_time = '', $arrival_airport_time = '', $squawk = '', $route_stop = '', $ModeS = '', $putinarchive = false,$registration = '',$pilot_id = '', $pilot_name = '', $verticalrate = '', $noarchive = false, $ground = false,$format_source = '', $source_name = '', $over_country = '') |
| 673 | 673 | { |
| 674 | 674 | global $globalURL, $globalArchive, $globalDebug; |
@@ -894,10 +894,10 @@ discard block |
||
| 894 | 894 | $arrival_airport_country = ''; |
| 895 | 895 | } |
| 896 | 896 | |
| 897 | - if ($squawk == '' || $Common->isInteger($squawk) == false ) $squawk = NULL; |
|
| 898 | - if ($verticalrate == '' || $Common->isInteger($verticalrate) == false ) $verticalrate = NULL; |
|
| 899 | - if ($groundspeed == '' || $Common->isInteger($groundspeed) == false ) $groundspeed = 0; |
|
| 900 | - if ($heading == '' || $Common->isInteger($heading) == false ) $heading = 0; |
|
| 897 | + if ($squawk == '' || $Common->isInteger($squawk) == false ) $squawk = NULL; |
|
| 898 | + if ($verticalrate == '' || $Common->isInteger($verticalrate) == false ) $verticalrate = NULL; |
|
| 899 | + if ($groundspeed == '' || $Common->isInteger($groundspeed) == false ) $groundspeed = 0; |
|
| 900 | + if ($heading == '' || $Common->isInteger($heading) == false ) $heading = 0; |
|
| 901 | 901 | |
| 902 | 902 | $query = 'INSERT INTO spotter_live (flightaware_id, ident, registration, airline_name, airline_icao, airline_country, airline_type, aircraft_icao, aircraft_shadow, aircraft_name, aircraft_manufacturer, departure_airport_icao, departure_airport_name, departure_airport_city, departure_airport_country, arrival_airport_icao, arrival_airport_name, arrival_airport_city, arrival_airport_country, latitude, longitude, waypoints, altitude, heading, ground_speed, date, departure_airport_time, arrival_airport_time, squawk, route_stop, ModeS, pilot_id, pilot_name, verticalrate, ground, format_source, source_name, over_country) |
| 903 | 903 | VALUES (:flightaware_id,:ident,:registration,:airline_name,:airline_icao,:airline_country,:airline_type,:aircraft_icao,:aircraft_shadow,:aircraft_type,:aircraft_manufacturer,:departure_airport_icao,:departure_airport_name, :departure_airport_city, :departure_airport_country, :arrival_airport_icao, :arrival_airport_name, :arrival_airport_city, :arrival_airport_country, :latitude,:longitude,:waypoints,:altitude,:heading,:groundspeed,:date,:departure_airport_time,:arrival_airport_time,:squawk,:route_stop,:ModeS, :pilot_id, :pilot_name, :verticalrate, :ground, :format_source, :source_name, :over_country)'; |
@@ -908,13 +908,13 @@ discard block |
||
| 908 | 908 | |
| 909 | 909 | $sth = $this->db->prepare($query); |
| 910 | 910 | $sth->execute($query_values); |
| 911 | - } catch(PDOException $e) { |
|
| 912 | - return "error : ".$e->getMessage(); |
|
| 913 | - } |
|
| 911 | + } catch(PDOException $e) { |
|
| 912 | + return "error : ".$e->getMessage(); |
|
| 913 | + } |
|
| 914 | 914 | if (isset($globalArchive) && $globalArchive && $putinarchive && !$noarchive) { |
| 915 | - if ($globalDebug) echo '(Add to SBS archive : '; |
|
| 916 | - $result = $SpotterArchive->addSpotterArchiveData($flightaware_id, $ident, $registration, $airline_name, $airline_icao, $airline_country, $airline_type, $aircraft_icao, $aircraft_shadow, $aircraft_name, $aircraft_manufacturer, $departure_airport_icao, $departure_airport_name, $departure_airport_city, $departure_airport_country, $departure_airport_time,$arrival_airport_icao, $arrival_airport_name, $arrival_airport_city, $arrival_airport_country, $arrival_airport_time, $route_stop, $date,$latitude, $longitude, $waypoints, $altitude, $heading, $groundspeed, $squawk, $ModeS, $pilot_id, $pilot_name,$verticalrate,$format_source,$source_name, $over_country); |
|
| 917 | - if ($globalDebug) echo $result.')'; |
|
| 915 | + if ($globalDebug) echo '(Add to SBS archive : '; |
|
| 916 | + $result = $SpotterArchive->addSpotterArchiveData($flightaware_id, $ident, $registration, $airline_name, $airline_icao, $airline_country, $airline_type, $aircraft_icao, $aircraft_shadow, $aircraft_name, $aircraft_manufacturer, $departure_airport_icao, $departure_airport_name, $departure_airport_city, $departure_airport_country, $departure_airport_time,$arrival_airport_icao, $arrival_airport_name, $arrival_airport_city, $arrival_airport_country, $arrival_airport_time, $route_stop, $date,$latitude, $longitude, $waypoints, $altitude, $heading, $groundspeed, $squawk, $ModeS, $pilot_id, $pilot_name,$verticalrate,$format_source,$source_name, $over_country); |
|
| 917 | + if ($globalDebug) echo $result.')'; |
|
| 918 | 918 | } |
| 919 | 919 | return "success"; |
| 920 | 920 | |
@@ -6,13 +6,13 @@ discard block |
||
| 6 | 6 | protected $cookies = array(); |
| 7 | 7 | |
| 8 | 8 | /** |
| 9 | - * Get data from form result |
|
| 10 | - * @param String $url form URL |
|
| 11 | - * @param String $type type of submit form method (get or post) |
|
| 12 | - * @param String or Array $data values form post method |
|
| 13 | - * @param Array $headers header to submit with the form |
|
| 14 | - * @return String the result |
|
| 15 | - */ |
|
| 9 | + * Get data from form result |
|
| 10 | + * @param String $url form URL |
|
| 11 | + * @param String $type type of submit form method (get or post) |
|
| 12 | + * @param String or Array $data values form post method |
|
| 13 | + * @param Array $headers header to submit with the form |
|
| 14 | + * @return String the result |
|
| 15 | + */ |
|
| 16 | 16 | public function getData($url, $type = 'get', $data = '', $headers = '',$cookie = '',$referer = '',$timeout = '',$useragent = '') { |
| 17 | 17 | $ch = curl_init(); |
| 18 | 18 | curl_setopt($ch, CURLOPT_URL, $url); |
@@ -67,7 +67,7 @@ discard block |
||
| 67 | 67 | return $this->getData($url,'get',$data,$headers,$clearanceCookie,$referer,$timeout,$useragent); |
| 68 | 68 | } |
| 69 | 69 | } else { |
| 70 | - return $result; |
|
| 70 | + return $result; |
|
| 71 | 71 | } |
| 72 | 72 | } |
| 73 | 73 | |
@@ -79,10 +79,10 @@ discard block |
||
| 79 | 79 | } |
| 80 | 80 | |
| 81 | 81 | /** |
| 82 | - * Convert a HTML table to an array |
|
| 83 | - * @param String $data HTML page |
|
| 84 | - * @return Array array of the tables in HTML page |
|
| 85 | - */ |
|
| 82 | + * Convert a HTML table to an array |
|
| 83 | + * @param String $data HTML page |
|
| 84 | + * @return Array array of the tables in HTML page |
|
| 85 | + */ |
|
| 86 | 86 | public function table2array($data) { |
| 87 | 87 | if (!is_string($data)) return array(); |
| 88 | 88 | if ($data == '') return array(); |
@@ -115,10 +115,10 @@ discard block |
||
| 115 | 115 | } |
| 116 | 116 | |
| 117 | 117 | /** |
| 118 | - * Convert <p> part of a HTML page to an array |
|
| 119 | - * @param String $data HTML page |
|
| 120 | - * @return Array array of the <p> in HTML page |
|
| 121 | - */ |
|
| 118 | + * Convert <p> part of a HTML page to an array |
|
| 119 | + * @param String $data HTML page |
|
| 120 | + * @return Array array of the <p> in HTML page |
|
| 121 | + */ |
|
| 122 | 122 | public function text2array($data) { |
| 123 | 123 | $html = str_get_html($data); |
| 124 | 124 | $tabledata=array(); |
@@ -132,14 +132,14 @@ discard block |
||
| 132 | 132 | } |
| 133 | 133 | |
| 134 | 134 | /** |
| 135 | - * Give distance between 2 coordonnates |
|
| 136 | - * @param Float $lat latitude of first point |
|
| 137 | - * @param Float $lon longitude of first point |
|
| 138 | - * @param Float $latc latitude of second point |
|
| 139 | - * @param Float $lonc longitude of second point |
|
| 140 | - * @param String $unit km else no unit used |
|
| 141 | - * @return Float Distance in $unit |
|
| 142 | - */ |
|
| 135 | + * Give distance between 2 coordonnates |
|
| 136 | + * @param Float $lat latitude of first point |
|
| 137 | + * @param Float $lon longitude of first point |
|
| 138 | + * @param Float $latc latitude of second point |
|
| 139 | + * @param Float $lonc longitude of second point |
|
| 140 | + * @param String $unit km else no unit used |
|
| 141 | + * @return Float Distance in $unit |
|
| 142 | + */ |
|
| 143 | 143 | public function distance($lat, $lon, $latc, $lonc, $unit = 'km') { |
| 144 | 144 | if ($lat == $latc && $lon == $lonc) return 0; |
| 145 | 145 | $dist = rad2deg(acos(sin(deg2rad(floatval($lat)))*sin(deg2rad(floatval($latc)))+ cos(deg2rad(floatval($lat)))*cos(deg2rad(floatval($latc)))*cos(deg2rad(floatval($lon)-floatval($lonc)))))*60*1.1515; |
@@ -157,11 +157,11 @@ discard block |
||
| 157 | 157 | } |
| 158 | 158 | |
| 159 | 159 | /** |
| 160 | - * Check is distance realistic |
|
| 161 | - * @param int $timeDifference the time between the reception of both messages |
|
| 162 | - * @param float $distance distance covered |
|
| 163 | - * @return whether distance is realistic |
|
| 164 | - */ |
|
| 160 | + * Check is distance realistic |
|
| 161 | + * @param int $timeDifference the time between the reception of both messages |
|
| 162 | + * @param float $distance distance covered |
|
| 163 | + * @return whether distance is realistic |
|
| 164 | + */ |
|
| 165 | 165 | public function withinThreshold ($timeDifference, $distance) { |
| 166 | 166 | $x = abs($timeDifference); |
| 167 | 167 | $d = abs($distance); |
@@ -179,7 +179,7 @@ discard block |
||
| 179 | 179 | } |
| 180 | 180 | |
| 181 | 181 | public function isInteger($input){ |
| 182 | - return(ctype_digit(strval($input))); |
|
| 182 | + return(ctype_digit(strval($input))); |
|
| 183 | 183 | } |
| 184 | 184 | |
| 185 | 185 | |
@@ -195,11 +195,11 @@ discard block |
||
| 195 | 195 | } |
| 196 | 196 | |
| 197 | 197 | /** |
| 198 | - * Copy folder contents |
|
| 199 | - * @param string $source Source path |
|
| 200 | - * @param string $dest Destination path |
|
| 201 | - * @return bool Returns true on success, false on failure |
|
| 202 | - */ |
|
| 198 | + * Copy folder contents |
|
| 199 | + * @param string $source Source path |
|
| 200 | + * @param string $dest Destination path |
|
| 201 | + * @return bool Returns true on success, false on failure |
|
| 202 | + */ |
|
| 203 | 203 | public function xcopy($source, $dest, $permissions = 0755) |
| 204 | 204 | { |
| 205 | 205 | $files = glob($source.'*.*'); |
@@ -211,20 +211,20 @@ discard block |
||
| 211 | 211 | } |
| 212 | 212 | |
| 213 | 213 | /** |
| 214 | - * Check if an url exist |
|
| 215 | - * @param String $url url to check |
|
| 216 | - * @return bool Return true on succes false on failure |
|
| 217 | - */ |
|
| 214 | + * Check if an url exist |
|
| 215 | + * @param String $url url to check |
|
| 216 | + * @return bool Return true on succes false on failure |
|
| 217 | + */ |
|
| 218 | 218 | public function urlexist($url){ |
| 219 | 219 | $headers=get_headers($url); |
| 220 | 220 | return stripos($headers[0],"200 OK")?true:false; |
| 221 | 221 | } |
| 222 | 222 | |
| 223 | 223 | /** |
| 224 | - * Convert hexa to string |
|
| 225 | - * @param String $hex data in hexa |
|
| 226 | - * @return String Return result |
|
| 227 | - */ |
|
| 224 | + * Convert hexa to string |
|
| 225 | + * @param String $hex data in hexa |
|
| 226 | + * @return String Return result |
|
| 227 | + */ |
|
| 228 | 228 | public function hex2str($hex) { |
| 229 | 229 | $str = ''; |
| 230 | 230 | $hexln = strlen($hex); |
@@ -272,9 +272,9 @@ discard block |
||
| 272 | 272 | } |
| 273 | 273 | |
| 274 | 274 | /** |
| 275 | - * Returns list of available locales |
|
| 276 | - * |
|
| 277 | - * @return array |
|
| 275 | + * Returns list of available locales |
|
| 276 | + * |
|
| 277 | + * @return array |
|
| 278 | 278 | */ |
| 279 | 279 | public function listLocaleDir() |
| 280 | 280 | { |
@@ -16,11 +16,11 @@ discard block |
||
| 16 | 16 | $this->SI = new SpotterImport($this->db); |
| 17 | 17 | } |
| 18 | 18 | /** |
| 19 | - * Change IATA to ICAO value for ident |
|
| 20 | - * |
|
| 21 | - * @param String $ident ident |
|
| 22 | - * @return String the icao |
|
| 23 | - */ |
|
| 19 | + * Change IATA to ICAO value for ident |
|
| 20 | + * |
|
| 21 | + * @param String $ident ident |
|
| 22 | + * @return String the icao |
|
| 23 | + */ |
|
| 24 | 24 | public function ident2icao($ident) { |
| 25 | 25 | if (substr($ident,0,2) == 'AF') { |
| 26 | 26 | if (filter_var(substr($ident,2),FILTER_VALIDATE_INT,array("flags"=>FILTER_FLAG_ALLOW_OCTAL))) $icao = $ident; |
@@ -36,11 +36,11 @@ discard block |
||
| 36 | 36 | } |
| 37 | 37 | |
| 38 | 38 | /** |
| 39 | - * Deletes all info in the live table |
|
| 40 | - * |
|
| 41 | - * @return String success or false |
|
| 42 | - * |
|
| 43 | - */ |
|
| 39 | + * Deletes all info in the live table |
|
| 40 | + * |
|
| 41 | + * @return String success or false |
|
| 42 | + * |
|
| 43 | + */ |
|
| 44 | 44 | public function deleteLiveAcarsData() |
| 45 | 45 | { |
| 46 | 46 | global $globalDBdriver; |
@@ -60,11 +60,11 @@ discard block |
||
| 60 | 60 | } |
| 61 | 61 | |
| 62 | 62 | /** |
| 63 | - * Deletes all info in the archive table |
|
| 64 | - * |
|
| 65 | - * @return String success or false |
|
| 66 | - * |
|
| 67 | - */ |
|
| 63 | + * Deletes all info in the archive table |
|
| 64 | + * |
|
| 65 | + * @return String success or false |
|
| 66 | + * |
|
| 67 | + */ |
|
| 68 | 68 | public function deleteArchiveAcarsData() |
| 69 | 69 | { |
| 70 | 70 | global $globalACARSArchiveKeepMonths, $globalDBdriver; |
@@ -85,11 +85,11 @@ discard block |
||
| 85 | 85 | |
| 86 | 86 | |
| 87 | 87 | /** |
| 88 | - * Parse ACARS data |
|
| 89 | - * |
|
| 90 | - * @param String ACARS data in acarsdec data |
|
| 91 | - * |
|
| 92 | - */ |
|
| 88 | + * Parse ACARS data |
|
| 89 | + * |
|
| 90 | + * @param String ACARS data in acarsdec data |
|
| 91 | + * |
|
| 92 | + */ |
|
| 93 | 93 | function parse($data) { |
| 94 | 94 | global $globalDebug, $globalACARSArchive; |
| 95 | 95 | $Image = new Image($this->db); |
@@ -660,11 +660,11 @@ discard block |
||
| 660 | 660 | |
| 661 | 661 | |
| 662 | 662 | /** |
| 663 | - * Add ACARS data |
|
| 664 | - * |
|
| 665 | - * @param String ACARS data in acarsdec data |
|
| 666 | - * |
|
| 667 | - */ |
|
| 663 | + * Add ACARS data |
|
| 664 | + * |
|
| 665 | + * @param String ACARS data in acarsdec data |
|
| 666 | + * |
|
| 667 | + */ |
|
| 668 | 668 | function add($data) { |
| 669 | 669 | global $globalDebug, $globalACARSArchive; |
| 670 | 670 | $Image = new Image($this->db); |
@@ -719,15 +719,15 @@ discard block |
||
| 719 | 719 | } |
| 720 | 720 | |
| 721 | 721 | /** |
| 722 | - * Add Live ACARS data in DB |
|
| 723 | - * |
|
| 724 | - * @param String $ident ident |
|
| 725 | - * @param String $registration Registration of the aircraft |
|
| 726 | - * @param String $label Label of the ACARS message |
|
| 727 | - * @param String $block_id Block id of the ACARS message |
|
| 728 | - * @param String $msg_no Number of the ACARS message |
|
| 729 | - * @param String $message ACARS message |
|
| 730 | - */ |
|
| 722 | + * Add Live ACARS data in DB |
|
| 723 | + * |
|
| 724 | + * @param String $ident ident |
|
| 725 | + * @param String $registration Registration of the aircraft |
|
| 726 | + * @param String $label Label of the ACARS message |
|
| 727 | + * @param String $block_id Block id of the ACARS message |
|
| 728 | + * @param String $msg_no Number of the ACARS message |
|
| 729 | + * @param String $message ACARS message |
|
| 730 | + */ |
|
| 731 | 731 | public function addLiveAcarsData($ident,$registration,$label,$block_id,$msg_no,$message,$decode = '') { |
| 732 | 732 | global $globalDebug; |
| 733 | 733 | date_default_timezone_set('UTC'); |
@@ -765,15 +765,15 @@ discard block |
||
| 765 | 765 | } |
| 766 | 766 | |
| 767 | 767 | /** |
| 768 | - * Add Archive ACARS data in DB |
|
| 769 | - * |
|
| 770 | - * @param String $ident ident |
|
| 771 | - * @param String $registration Registration of the aircraft |
|
| 772 | - * @param String $label Label of the ACARS message |
|
| 773 | - * @param String $block_id Block id of the ACARS message |
|
| 774 | - * @param String $msg_no Number of the ACARS message |
|
| 775 | - * @param String $message ACARS message |
|
| 776 | - */ |
|
| 768 | + * Add Archive ACARS data in DB |
|
| 769 | + * |
|
| 770 | + * @param String $ident ident |
|
| 771 | + * @param String $registration Registration of the aircraft |
|
| 772 | + * @param String $label Label of the ACARS message |
|
| 773 | + * @param String $block_id Block id of the ACARS message |
|
| 774 | + * @param String $msg_no Number of the ACARS message |
|
| 775 | + * @param String $message ACARS message |
|
| 776 | + */ |
|
| 777 | 777 | public function addArchiveAcarsData($ident,$registration,$label,$block_id,$msg_no,$message,$decode = '') { |
| 778 | 778 | global $globalDebug; |
| 779 | 779 | date_default_timezone_set('UTC'); |
@@ -807,11 +807,11 @@ discard block |
||
| 807 | 807 | } |
| 808 | 808 | |
| 809 | 809 | /** |
| 810 | - * Get Message title from label from DB |
|
| 811 | - * |
|
| 812 | - * @param String $ident |
|
| 813 | - * @return Array Return ACARS data in array |
|
| 814 | - */ |
|
| 810 | + * Get Message title from label from DB |
|
| 811 | + * |
|
| 812 | + * @param String $ident |
|
| 813 | + * @return Array Return ACARS data in array |
|
| 814 | + */ |
|
| 815 | 815 | public function getTitlefromLabel($label) { |
| 816 | 816 | $Connection = new Connection($this->db); |
| 817 | 817 | $this->db = $Connection->db; |
@@ -830,10 +830,10 @@ discard block |
||
| 830 | 830 | } |
| 831 | 831 | |
| 832 | 832 | /** |
| 833 | - * List all Message title & label from DB |
|
| 834 | - * |
|
| 835 | - * @return Array Return ACARS data in array |
|
| 836 | - */ |
|
| 833 | + * List all Message title & label from DB |
|
| 834 | + * |
|
| 835 | + * @return Array Return ACARS data in array |
|
| 836 | + */ |
|
| 837 | 837 | public function getAllTitleLabel() { |
| 838 | 838 | $query = "SELECT * FROM acars_label ORDER BY title"; |
| 839 | 839 | $query_values = array(); |
@@ -850,11 +850,11 @@ discard block |
||
| 850 | 850 | } |
| 851 | 851 | |
| 852 | 852 | /** |
| 853 | - * Get Live ACARS data from DB |
|
| 854 | - * |
|
| 855 | - * @param String $ident |
|
| 856 | - * @return Array Return ACARS data in array |
|
| 857 | - */ |
|
| 853 | + * Get Live ACARS data from DB |
|
| 854 | + * |
|
| 855 | + * @param String $ident |
|
| 856 | + * @return Array Return ACARS data in array |
|
| 857 | + */ |
|
| 858 | 858 | public function getLiveAcarsData($ident) { |
| 859 | 859 | $query = "SELECT * FROM acars_live WHERE ident = :ident ORDER BY acars_live_id DESC"; |
| 860 | 860 | $query_values = array(':ident' => $ident); |
@@ -871,10 +871,10 @@ discard block |
||
| 871 | 871 | } |
| 872 | 872 | |
| 873 | 873 | /** |
| 874 | - * Get Latest ACARS data from DB |
|
| 875 | - * |
|
| 876 | - * @return Array Return ACARS data in array |
|
| 877 | - */ |
|
| 874 | + * Get Latest ACARS data from DB |
|
| 875 | + * |
|
| 876 | + * @return Array Return ACARS data in array |
|
| 877 | + */ |
|
| 878 | 878 | public function getLatestAcarsData($limit = '',$label = '') { |
| 879 | 879 | global $globalURL, $globalDBdriver; |
| 880 | 880 | $Image = new Image($this->db); |
@@ -972,10 +972,10 @@ discard block |
||
| 972 | 972 | } |
| 973 | 973 | |
| 974 | 974 | /** |
| 975 | - * Get Archive ACARS data from DB |
|
| 976 | - * |
|
| 977 | - * @return Array Return ACARS data in array |
|
| 978 | - */ |
|
| 975 | + * Get Archive ACARS data from DB |
|
| 976 | + * |
|
| 977 | + * @return Array Return ACARS data in array |
|
| 978 | + */ |
|
| 979 | 979 | public function getArchiveAcarsData($limit = '',$label = '') { |
| 980 | 980 | global $globalURL, $globalDBdriver; |
| 981 | 981 | $Image = new Image($this->db); |
@@ -1077,13 +1077,13 @@ discard block |
||
| 1077 | 1077 | } |
| 1078 | 1078 | |
| 1079 | 1079 | /** |
| 1080 | - * Add ModeS data to DB |
|
| 1081 | - * |
|
| 1082 | - * @param String $ident ident |
|
| 1083 | - * @param String $registration Registration of the aircraft |
|
| 1084 | - * @param String $icao |
|
| 1085 | - * @param String $ICAOTypeCode |
|
| 1086 | - */ |
|
| 1080 | + * Add ModeS data to DB |
|
| 1081 | + * |
|
| 1082 | + * @param String $ident ident |
|
| 1083 | + * @param String $registration Registration of the aircraft |
|
| 1084 | + * @param String $icao |
|
| 1085 | + * @param String $ICAOTypeCode |
|
| 1086 | + */ |
|
| 1087 | 1087 | public function addModeSData($ident,$registration,$icao = '',$ICAOTypeCode = '',$latitude = '', $longitude = '') { |
| 1088 | 1088 | global $globalDebug, $globalDBdriver; |
| 1089 | 1089 | $ident = trim($ident); |
@@ -1,8 +1,8 @@ discard block |
||
| 1 | 1 | <?php |
| 2 | 2 | class SBS { |
| 3 | - static $latlon = array(); |
|
| 3 | + static $latlon = array(); |
|
| 4 | 4 | |
| 5 | - function parse($buffer) { |
|
| 5 | + function parse($buffer) { |
|
| 6 | 6 | // Not yet finished, no CRC checks |
| 7 | 7 | //echo $buffer."\n"; |
| 8 | 8 | $typehex = substr($buffer,0,1); |
@@ -12,47 +12,47 @@ discard block |
||
| 12 | 12 | $bin = gmp_strval( gmp_init($hex,16), 2); |
| 13 | 13 | //if (strlen($hex) == 28 && $this->parityCheck($hex,$bin)) { |
| 14 | 14 | if (strlen($hex) == 28) { |
| 15 | - $df = intval(substr($bin,0,5),2); |
|
| 16 | - $ca = intval(substr($bin,5,3),2); |
|
| 17 | - // Only support DF17 for now |
|
| 18 | - //if ($df == 17 || ($df == 18 && ($ca == 0 || $ca == 1 || $ca == 6))) { |
|
| 19 | - if (($df == 17 || $df == 18) && ($this->parityCheck($hex,$bin) || $typehex == '@')) { |
|
| 15 | + $df = intval(substr($bin,0,5),2); |
|
| 16 | + $ca = intval(substr($bin,5,3),2); |
|
| 17 | + // Only support DF17 for now |
|
| 18 | + //if ($df == 17 || ($df == 18 && ($ca == 0 || $ca == 1 || $ca == 6))) { |
|
| 19 | + if (($df == 17 || $df == 18) && ($this->parityCheck($hex,$bin) || $typehex == '@')) { |
|
| 20 | 20 | $icao = substr($hex,2,6); |
| 21 | 21 | $data['hex'] = $icao; |
| 22 | 22 | $tc = intval(substr($bin,32,5),2); |
| 23 | 23 | if ($tc >= 1 && $tc <= 4) { |
| 24 | - //callsign |
|
| 25 | - $csbin = substr($bin,40,56); |
|
| 26 | - $charset = str_split('#ABCDEFGHIJKLMNOPQRSTUVWXYZ#####_###############0123456789######'); |
|
| 27 | - $cs = ''; |
|
| 28 | - $cs .= $charset[intval(substr($csbin,0,6),2)]; |
|
| 29 | - $cs .= $charset[intval(substr($csbin,6,6),2)]; |
|
| 30 | - $cs .= $charset[intval(substr($csbin,12,6),2)]; |
|
| 31 | - $cs .= $charset[intval(substr($csbin,18,6),2)]; |
|
| 32 | - $cs .= $charset[intval(substr($csbin,24,6),2)]; |
|
| 33 | - $cs .= $charset[intval(substr($csbin,30,6),2)]; |
|
| 34 | - $cs .= $charset[intval(substr($csbin,36,6),2)]; |
|
| 35 | - $cs .= $charset[intval(substr($csbin,42,6),2)]; |
|
| 36 | - $cs = str_replace('_','',$cs); |
|
| 37 | - $cs = str_replace('#','',$cs); |
|
| 38 | - $callsign = $cs; |
|
| 39 | - $data['ident'] = $callsign; |
|
| 24 | + //callsign |
|
| 25 | + $csbin = substr($bin,40,56); |
|
| 26 | + $charset = str_split('#ABCDEFGHIJKLMNOPQRSTUVWXYZ#####_###############0123456789######'); |
|
| 27 | + $cs = ''; |
|
| 28 | + $cs .= $charset[intval(substr($csbin,0,6),2)]; |
|
| 29 | + $cs .= $charset[intval(substr($csbin,6,6),2)]; |
|
| 30 | + $cs .= $charset[intval(substr($csbin,12,6),2)]; |
|
| 31 | + $cs .= $charset[intval(substr($csbin,18,6),2)]; |
|
| 32 | + $cs .= $charset[intval(substr($csbin,24,6),2)]; |
|
| 33 | + $cs .= $charset[intval(substr($csbin,30,6),2)]; |
|
| 34 | + $cs .= $charset[intval(substr($csbin,36,6),2)]; |
|
| 35 | + $cs .= $charset[intval(substr($csbin,42,6),2)]; |
|
| 36 | + $cs = str_replace('_','',$cs); |
|
| 37 | + $cs = str_replace('#','',$cs); |
|
| 38 | + $callsign = $cs; |
|
| 39 | + $data['ident'] = $callsign; |
|
| 40 | 40 | } elseif ($tc >= 9 && $tc <= 18) { |
| 41 | - // Check Q-bit |
|
| 42 | - $q = substr($bin,47,1); |
|
| 43 | - if ($q) { |
|
| 41 | + // Check Q-bit |
|
| 42 | + $q = substr($bin,47,1); |
|
| 43 | + if ($q) { |
|
| 44 | 44 | $n = intval(substr($bin,40,7).substr($bin,48,4),2); |
| 45 | 45 | $alt = $n*25-1000; |
| 46 | 46 | $data['altitude'] = $alt; |
| 47 | - } |
|
| 48 | - // Check odd/even flag |
|
| 49 | - $oe = substr($bin,53,1); |
|
| 50 | - //if ($oe) => odd else even |
|
| 51 | - // 131072 is 2^17 since CPR latitude and longitude are encoded in 17 bits. |
|
| 52 | - $cprlat = intval(substr($bin,54,17),2)/131072.0; |
|
| 53 | - $cprlon = intval(substr($bin,71,17),2)/131072.0; |
|
| 54 | - if ($oe == 0) $this::$latlon[$icao] = array('latitude' => $cprlat,'longitude' => $cprlon,'created' => time()); |
|
| 55 | - elseif (isset($this::$latlon[$icao]) && (time() - $this::$latlon[$icao]['created']) < 10) { |
|
| 47 | + } |
|
| 48 | + // Check odd/even flag |
|
| 49 | + $oe = substr($bin,53,1); |
|
| 50 | + //if ($oe) => odd else even |
|
| 51 | + // 131072 is 2^17 since CPR latitude and longitude are encoded in 17 bits. |
|
| 52 | + $cprlat = intval(substr($bin,54,17),2)/131072.0; |
|
| 53 | + $cprlon = intval(substr($bin,71,17),2)/131072.0; |
|
| 54 | + if ($oe == 0) $this::$latlon[$icao] = array('latitude' => $cprlat,'longitude' => $cprlon,'created' => time()); |
|
| 55 | + elseif (isset($this::$latlon[$icao]) && (time() - $this::$latlon[$icao]['created']) < 10) { |
|
| 56 | 56 | $cprlat_odd = $cprlat; |
| 57 | 57 | $cprlon_odd = $cprlon; |
| 58 | 58 | $cprlat_even = $this::$latlon[$icao]['latitude']; |
@@ -65,56 +65,56 @@ discard block |
||
| 65 | 65 | if ($lat_odd >= 270) $lat_odd = $lat_odd - 360; |
| 66 | 66 | // check latitude zone |
| 67 | 67 | if ($this->cprNL($lat_even) == $this->cprNL($lat_odd)) { |
| 68 | - if ($this::$latlon[$icao]['created'] > time()) { |
|
| 68 | + if ($this::$latlon[$icao]['created'] > time()) { |
|
| 69 | 69 | $ni = $this->cprN($lat_even,0); |
| 70 | 70 | $m = floor($cprlon_even*($this->cprNL($lat_even)-1) - $cprlon_odd * $this->cprNL($lat_even)+0.5); |
| 71 | 71 | $lon = (360.0/$ni)*($m%$ni+$cprlon_even); |
| 72 | 72 | $lat = $lat_even; |
| 73 | 73 | if ($lon > 180) $lon = $lon -360; |
| 74 | 74 | if ($lat > -91 && $lat < 91 && $lon > -181 && $lon < 181) { |
| 75 | - //if ($globalDebug) echo 'cs : '.$cs.' - hex : '.$hex.' - lat : '.$lat.' - lon : '.$lon; |
|
| 76 | - $data['latitude'] = $lat; |
|
| 77 | - $data['longitude'] = $lon; |
|
| 75 | + //if ($globalDebug) echo 'cs : '.$cs.' - hex : '.$hex.' - lat : '.$lat.' - lon : '.$lon; |
|
| 76 | + $data['latitude'] = $lat; |
|
| 77 | + $data['longitude'] = $lon; |
|
| 78 | 78 | } |
| 79 | - } else { |
|
| 79 | + } else { |
|
| 80 | 80 | $ni = $this->cprN($lat_odd,1); |
| 81 | 81 | $m = floor($cprlon_even*($this->cprNL($lat_odd)-1) - $cprlon_odd * $this->cprNL($lat_odd)+0.5); |
| 82 | 82 | $lon = (360.0/$ni)*($m%$ni+$cprlon_odd); |
| 83 | 83 | $lat = $lat_odd; |
| 84 | 84 | if ($lon > 180) $lon = $lon -360; |
| 85 | 85 | if ($lat > -91 && $lat < 91 && $lon > -181 && $lon < 181) { |
| 86 | - //if ($globalDebug) echo 'icao : '.$icao.' - hex : '.$hex.' - lat : '.$lat.' - lon : '.$lon.' second'."\n"; |
|
| 87 | - $data['latitude'] = $lat; |
|
| 88 | - $data['longitude'] = $lon; |
|
| 86 | + //if ($globalDebug) echo 'icao : '.$icao.' - hex : '.$hex.' - lat : '.$lat.' - lon : '.$lon.' second'."\n"; |
|
| 87 | + $data['latitude'] = $lat; |
|
| 88 | + $data['longitude'] = $lon; |
|
| 89 | + } |
|
| 89 | 90 | } |
| 90 | - } |
|
| 91 | 91 | } else echo "Not cprNL"; |
| 92 | 92 | unset($this::$latlon[$icao]); |
| 93 | - } |
|
| 93 | + } |
|
| 94 | 94 | } elseif ($tc == 19) { |
| 95 | - // speed & heading |
|
| 96 | - $v_ew_dir = intval(substr($bin,45,1)); |
|
| 97 | - $v_ew = intval(substr($bin,46,10),2); |
|
| 98 | - $v_ns_dir = intval(substr($bin,56,1)); |
|
| 99 | - $v_ns = intval(substr($bin,57,10),2); |
|
| 100 | - if ($v_ew_dir) $v_ew = -1*$v_ew; |
|
| 101 | - if ($v_ns_dir) $v_ns = -1*$v_ns; |
|
| 102 | - $speed = sqrt($v_ns*$v_ns+$v_ew*$v_ew); |
|
| 103 | - $heading = atan2($v_ew,$v_ns)*360.0/(2*pi()); |
|
| 104 | - if ($heading <0) $heading = $heading+360; |
|
| 105 | - $data['speed'] = $speed; |
|
| 106 | - $data['heading'] = $heading; |
|
| 95 | + // speed & heading |
|
| 96 | + $v_ew_dir = intval(substr($bin,45,1)); |
|
| 97 | + $v_ew = intval(substr($bin,46,10),2); |
|
| 98 | + $v_ns_dir = intval(substr($bin,56,1)); |
|
| 99 | + $v_ns = intval(substr($bin,57,10),2); |
|
| 100 | + if ($v_ew_dir) $v_ew = -1*$v_ew; |
|
| 101 | + if ($v_ns_dir) $v_ns = -1*$v_ns; |
|
| 102 | + $speed = sqrt($v_ns*$v_ns+$v_ew*$v_ew); |
|
| 103 | + $heading = atan2($v_ew,$v_ns)*360.0/(2*pi()); |
|
| 104 | + if ($heading <0) $heading = $heading+360; |
|
| 105 | + $data['speed'] = $speed; |
|
| 106 | + $data['heading'] = $heading; |
|
| 107 | + } |
|
| 107 | 108 | } |
| 108 | - } |
|
| 109 | - if (isset($data)) { |
|
| 109 | + if (isset($data)) { |
|
| 110 | 110 | //print_r($data); |
| 111 | 111 | return $data; |
| 112 | - } |
|
| 113 | - } |
|
| 114 | - } |
|
| 112 | + } |
|
| 113 | + } |
|
| 114 | + } |
|
| 115 | 115 | |
| 116 | 116 | |
| 117 | - function cprNL($lat) { |
|
| 117 | + function cprNL($lat) { |
|
| 118 | 118 | //Lookup table to convert the latitude to index. |
| 119 | 119 | if ($lat < 0) $lat = -$lat; // Table is simmetric about the equator. |
| 120 | 120 | if ($lat < 10.47047130) return 59; |
@@ -176,16 +176,16 @@ discard block |
||
| 176 | 176 | if ($lat < 86.53536998) return 3; |
| 177 | 177 | if ($lat < 87.00000000) return 2; |
| 178 | 178 | return 1; |
| 179 | - } |
|
| 179 | + } |
|
| 180 | 180 | |
| 181 | - function cprN($lat,$isodd) { |
|
| 181 | + function cprN($lat,$isodd) { |
|
| 182 | 182 | $nl = $this->cprNL($lat) - $isodd; |
| 183 | 183 | if ($nl > 1) return $nl; |
| 184 | 184 | else return 1; |
| 185 | - } |
|
| 185 | + } |
|
| 186 | 186 | |
| 187 | 187 | |
| 188 | - function parityCheck($msg, $bin) { |
|
| 188 | + function parityCheck($msg, $bin) { |
|
| 189 | 189 | $modes_checksum_table = array( |
| 190 | 190 | 0x3935ea, 0x1c9af5, 0xf1b77e, 0x78dbbf, 0xc397db, 0x9e31e9, 0xb0e2f0, 0x587178, |
| 191 | 191 | 0x2c38bc, 0x161c5e, 0x0b0e2f, 0xfa7d13, 0x82c48d, 0xbe9842, 0x5f4c21, 0xd05c14, |
@@ -207,13 +207,13 @@ discard block |
||
| 207 | 207 | $checksum = intval(substr($msg,22,6),16); |
| 208 | 208 | |
| 209 | 209 | for ($j = 0; $j < strlen($bin); $j++) { |
| 210 | - if ($bin[$j]) $crc = $crc^intval($modes_checksum_table[$j],0); |
|
| 210 | + if ($bin[$j]) $crc = $crc^intval($modes_checksum_table[$j],0); |
|
| 211 | 211 | } |
| 212 | 212 | if ($crc == $checksum) return true; |
| 213 | 213 | else { |
| 214 | - //echo "**** CRC ERROR ****\n"; |
|
| 215 | - return false; |
|
| 214 | + //echo "**** CRC ERROR ****\n"; |
|
| 215 | + return false; |
|
| 216 | + } |
|
| 216 | 217 | } |
| 217 | - } |
|
| 218 | 218 | } |
| 219 | 219 | ?> |
@@ -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(); |