Merge pull request #456 from Struart88/patch-2
[FlightAirMap.git] / airport-detailed.php
blob43ba7cff250b6af6327f987a4443286b5c1563be
1 <?php
2 require_once('require/class.Connection.php');
3 require_once('require/class.Spotter.php');
4 require_once('require/class.Language.php');
5 require_once('require/class.Stats.php');
6 require_once('require/class.METAR.php');
8 if (!isset($_GET['airport'])){
9 header('Location: '.$globalURL.'/airport');
10 } else {
11 $Spotter = new Spotter();
12 //calculation for the pagination
13 if(!isset($_GET['limit']))
15 $limit_start = 0;
16 $limit_end = 25;
17 $absolute_difference = 25;
18 } else {
19 $limit_explode = explode(",", $_GET['limit']);
20 $limit_start = $limit_explode[0];
21 $limit_end = $limit_explode[1];
22 if (!ctype_digit(strval($limit_start)) || !ctype_digit(strval($limit_end))) {
23 $limit_start = 0;
24 $limit_end = 25;
27 $absolute_difference = abs($limit_start - $limit_end);
28 $limit_next = $limit_end + $absolute_difference;
29 $limit_previous_1 = $limit_start - $absolute_difference;
30 $limit_previous_2 = $limit_end - $absolute_difference;
31 $airport_icao = filter_input(INPUT_GET,'airport',FILTER_SANITIZE_STRING);
32 $airport = $airport_icao;
33 $page_url = $globalURL.'/airport/'.$airport_icao;
35 $sort = filter_input(INPUT_GET,'sort',FILTER_SANITIZE_STRING);
36 $airport_array = $Spotter->getAllAirportInfo($airport_icao);
37 if (!empty($airport_array))
39 if ($sort != '') {
40 $spotter_array = $Spotter->getSpotterDataByAirport($airport_icao,$limit_start.",".$absolute_difference, $sort);
41 } else {
42 $spotter_array = $Spotter->getSpotterDataByAirport($airport_icao,$limit_start.",".$absolute_difference, '');
45 if (isset($globalMETAR) && $globalMETAR) {
46 $METAR = new METAR();
47 $metar_info = $METAR->getMETAR($airport_icao);
48 //print_r($metar_info);
49 if (isset($metar_info[0]['metar'])) $metar_parse = $METAR->parse($metar_info[0]['metar']);
50 //print_r($metar_parse);
53 $title = sprintf(_("Detailed View for %s, %s (%s)"),$airport_array[0]['city'],$airport_array[0]['name'],$airport_array[0]['icao']);
55 require_once('header.php');
57 print '<div class="select-item">';
58 print '<form action="'.$globalURL.'/airport" method="post">';
59 print '<select name="airport" class="selectpicker" data-live-search="true">';
60 print '<option></option>';
61 $Stats = new Stats();
62 $airport_names = $Stats->getAllAirportNames();
63 if (empty($airport_names)) $airport_names = $Spotter->getAllAirportNames();
64 ksort($airport_names);
65 foreach($airport_names as $airport_name)
67 if($airport_icao == $airport_name['airport_icao'])
69 print '<option value="'.$airport_name['airport_icao'].'" selected="selected">'.$airport_name['airport_city'].', '.$airport_name['airport_name'].', '.$airport_name['airport_country'].' ('.$airport_name['airport_icao'].')</option>';
70 } else {
71 print '<option value="'.$airport_name['airport_icao'].'">'.$airport_name['airport_city'].', '.$airport_name['airport_name'].', '.$airport_name['airport_country'].' ('.$airport_name['airport_icao'].')</option>';
74 print '</select>';
75 print '<button type="submit"><i class="fa fa-angle-double-right"></i></button>';
76 print '</form>';
77 print '</div>';
78 print '<br />';
80 if ($airport_icao != "NA")
82 print '<div class="info column">';
83 print '<h1>'.$airport_array[0]['city'].', '.$airport_array[0]['name'].' ('.$airport_array[0]['icao'].')</h1>';
84 print '<div><span class="label">'._("Name").'</span>'.$airport_array[0]['name'].'</div>';
85 print '<div><span class="label">'._("City").'</span>'.$airport_array[0]['city'].'</div>';
86 print '<div><span class="label">'._("Country").'</span>'.$airport_array[0]['country'].'</div>';
87 print '<div><span class="label">'._("ICAO").'</span>'.$airport_array[0]['icao'].'</div>';
88 print '<div><span class="label">'._("IATA").'</span>'.$airport_array[0]['iata'].'</div>';
89 print '<div><span class="label">'._("Altitude").'</span>';
90 if ((!isset($_COOKIE['unitaltitude']) && isset($globalUnitAltitude) && $globalUnitAltitude == 'feet') || (isset($_COOKIE['unitaltitude']) && $_COOKIE['unitaltitude'] == 'feet')) {
91 print $airport_array[0]['altitude'].' feet';
92 } else {
93 print round($airport_array[0]['altitude']*0.3048).' m';
95 print '</div>';
96 print '<div><span class="label">'._("Coordinates").'</span><a href="http://maps.google.com/maps?z=10&t=k&q='.$airport_array[0]['latitude'].','.$airport_array[0]['longitude'].'" target="_blank">Google Map<i class="fa fa-angle-double-right"></i></a></div>';
97 print '<div><span class="label">'._("Live Air Traffic").'</span><a href="http://www.liveatc.net/search/?icao='.$airport_array[0]['icao'].'" target="_blank">LiveATC.net<i class="fa fa-angle-double-right"></i></a></div>';
98 if (isset($airport_array[0]['home_link']) && $airport_array[0]['home_link'] != '') print '<div><a href="'.$airport_array[0]['home_link'].'"><i class="fa fa-home"></i></a></div>';
99 if (isset($airport_array[0]['wikipedia_link']) && $airport_array[0]['wikipedia_link'] != '') print '<div><a href="'.$airport_array[0]['wikipedia_link'].'"><i class="fa fa-wikipedia-w"></i></a></div>';
100 if (isset($airport_array[0]['diagram_pdf']) && $airport_array[0]['diagram_pdf'] != '') print '<div><span class="label">'._("Diagram").'</span><a href="'.$airport_array[0]['diagram_pdf'].'" target="_blank">'.$airport_array[0]['icao'].'<i class="fa fa-angle-double-right"></i></a></div>';
101 print '</div>';
103 $Stats = new Stats();
104 $all_data = $Stats->getLast7DaysAirports($airport_icao);
105 // Use spotter also
106 if (isset($globalTimezone)) {
107 date_default_timezone_set($globalTimezone);
108 } else date_default_timezone_set('UTC');
109 if (count($all_data) > 0) {
110 print '<link href="'.$globalURL.'/css/c3.min.css" rel="stylesheet" type="text/css">';
111 print '<script type="text/javascript" src="'.$globalURL.'/js/d3.min.js"></script>';
112 print '<script type="text/javascript" src="'.$globalURL.'/js/c3.min.js"></script>';
113 print '<div id="chart" class="chart" width="100%"></div><script>';
114 $date_data = '';
115 $departure_data = '';
116 $arrival_data = '';
117 foreach($all_data as $data)
119 $date_data .= '"'.$data['date'].'",';
120 $departure_data .= $data['departure'].',';
121 $arrival_data .= $data['arrival'].',';
123 $date_data = "['x',".substr($date_data,0,-1)."]";
124 $departure_data = "['departure',".substr($departure_data,0,-1)."]";
125 $arrival_data = "['arrival',".substr($arrival_data,0,-1)."]";
126 print 'c3.generate({
127 bindto: "#chart",
128 data: {
129 x: "x",
130 axes: {
131 departure: "y",
132 speed: "y2"
134 xFormat: "%Y-%m-%d",
135 columns: ['.$date_data.','.$departure_data.','.$arrival_data.'],
136 colors: {
137 departure: "#1a3151",
138 arrival: "#aa0000"
141 axis: {
142 x: {
143 type: "timeseries", tick: { format: "%Y-%m-%d"}
145 y: {
146 label: "# of Flights",tick: { format: d3.format("d") }
149 legend: { show: false }});';
150 print '</script>';
152 print '<div class="info column">';
153 if (isset($metar_parse)) {
154 print '<div><span class="label">METAR</span>';
155 print $metar_info[0]['metar'].'<br />';
156 print '<b>'.$metar_info[0]['metar_date'].'</b> ';
157 if (isset($metar_parse['wind'])) {
158 print _("Wind:").' ';
159 if (isset($metar_parse['wind']['direction'])) {
160 $direction = $Spotter->parseDirection($metar_parse['wind']['direction']);
161 print $direction[0]['direction_fullname'];
162 print ' ('.$metar_parse['wind']['direction'].'°) ';
164 if (isset($metar_parse['wind']['speed'])) {
165 print $metar_parse['wind']['speed'].' m/s';
167 print ' - ';
169 if (isset($metar_parse['visibility'])) {
170 print _("Visibility:").' '.$metar_parse['visibility'].' m'." - ";
172 if (isset($metar_parse['weather'])) {
173 print _("Weather:").' '.$metar_parse['weather']." - ";
175 if (isset($metar_parse['temperature'])) {
176 print _("Temperature:").' '.$metar_parse['temperature'].' °C'." - ";
178 if (isset($metar_parse['dew'])) {
179 print _("Dew point:").' '.$metar_parse['dew'].' °C'." - ";
181 if (isset($metar_parse['temperature']) && isset($metar_parse['dew'])) {
182 $humidity = round(100 * pow((112 - (0.1 * $metar_parse['temperature']) + $metar_parse['dew']) / (112 + (0.9 * $metar_parse['temperature'])), 8),1);
183 print _("Humidity:").' '.$humidity.'%'." - ";
185 if (isset($metar_parse['QNH'])) {
186 print _("Pressure:").' '.$metar_parse['QNH'].' hPa';
188 print '</div>';
190 print '</div>';
191 } else {
192 print '<div class="alert alert-warning">'._("This special airport profile shows all flights that do <u>not</u> have a departure and/or arrival airport associated with them.").'</div>';
194 if (!empty($spotter_array)) {
195 include('airport-sub-menu.php');
196 print '<div class="table column">';
197 if ($airport_array[0]['iata'] != "NA")
199 print '<p>'.sprintf(_("The table below shows the detailed information of all flights to/from <strong>%s, %s (%s)</strong>."),$airport_array[0]['city'],$airport_array[0]['name'],$airport_array[0]['icao']).'</p>';
201 include('table-output.php');
202 print '<div class="pagination">';
203 if ($limit_previous_1 >= 0)
205 print '<a href="'.$page_url.'/'.$limit_previous_1.','.$limit_previous_2.'/'.$sort.'">&laquo;'._("Previous Page").'</a>';
207 if (isset($spotter_array[0]['query_number_rows']) && $spotter_array[0]['query_number_rows'] == $absolute_difference)
209 print '<a href="'.$page_url.'/'.$limit_end.','.$limit_next.'/'.$sort.'">'._("Next Page").'&raquo;</a>';
211 print '</div>';
212 print '</div>';
213 } else {
214 if (isset($airport_array[0]['image']) && $airport_array[0]['image'] != '') print '<center><img src="'.$airport_array[0]['image'].'" /></center>';
215 print '<p>'._("Sorry, no flights used the airport in this database.").'</p>';
217 } else {
218 $title = "Airport";
219 require_once('header.php');
220 print '<h1>'._("Error").'</h1>';
221 print '<p>'._("Sorry, the airport does not exist in this database. :(").'</p>';
224 require_once('footer.php');