Jump to content


  • Posts

  • Joined

  • Last visited

1 Follower

Profile Information

  • Gender
  • Location
    Salta, Argentina

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Imanol's Achievements


Newbie (1/14)

  • Week One Done Rare
  • One Month Later Rare
  • One Year In Rare

Recent Badges



  1. I deleted the no conflict script it had and now the map works perfectely. Thank you!
  2. https://www.skyjetvirtual.com/es/index.php/acars
  3. Hi. I am having problems with the ACARS map, it does not show any flights, not even in the lists. On the home page of my site we have a table that shows flights in curos and works correctly. I don't know what the problem with the map might be. I leave the code of the php file and template. Thank you! ACARS.php <?php /** * phpVMS - Virtual Airline Administration Software * Copyright (c) 2008 Nabeel Shahzad * For more information, visit www.phpvms.net * Forums: http://www.phpvms.net/forum * Documentation: http://www.phpvms.net/docs * * phpVMS is licenced under the following license: * Creative Commons Attribution Non-commercial Share Alike (by-nc-sa) * View license.txt in the root, or visit http://creativecommons.org/licenses/by-nc-sa/3.0/ * * @author Nabeel Shahzad * @copyright Copyright (c) 2008, Nabeel Shahzad * @link http://www.phpvms.net * @license http://creativecommons.org/licenses/by-nc-sa/3.0/ */ class ACARS extends CodonModule { public $title = 'ACARS'; public $acarsflights; public function index() { $this->viewmap(); } public function viewmap() { $this->title = 'ACARS Map'; $this->set('acarsdata', ACARSData::GetACARSData()); $this->render('acarsmap.tpl'); } /** * We didn't list a function for each ACARS client, * so call this, which will include the acars peice in */ public function __call($name, $args) { $acars_action = $args[0]; // clean the name... $name = preg_replace("/[^a-z0-9-]/", "", strtolower($name)); if(dirname(__FILE__).DS.$name.'.php') { include_once dirname(__FILE__).DS.$name.'.php'; return; } } public function data() { $flights = ACARSData::GetACARSData(); if(!$flights) $flights = array(); $this->acarsflights = array(); foreach($flights as $flight) { if($flight->route == '') { $flight->route_details = array(); } else { $flight->route_details = NavData::parseRoute($flight->route); } $c = (array) $flight; // Convert the object to an array $c['pilotid'] = PilotData::GetPilotCode($c['code'], $c['pilotid']); // Normalize the data if($c['timeremaining'] == '') { $c['timeremaining'] == '-'; } if(trim($c['phasedetail']) == '') { $c['phasedetail'] = 'Enroute'; } /* If no heading was passed via ACARS app then calculate it This should probably move to inside the ACARSData function, so then the heading is always there for no matter what the calcuation is */ if($flight->heading == '') { /* Calculate an angle based on current coords and the destination coordinates */ $flight->heading = intval(atan2(($flight->lat - $flight->arrlat), ($flight->lng - $flight->arrlng)) * 180 / 3.14); //$flight->heading *= intval(180/3.14159); if(($flight->lng - $flight->arrlng) < 0) { $flight->heading += 180; } if($flight->heading < 0) { $flight->heading += 360; } } // Little one-off fixes to normalize data $c['distremaining'] = $c['distremain']; $c['pilotname'] = $c['firstname'] . ' ' . $c['lastname']; unset($c['messagelog']); $c['flightcode'] = substr($c['flightnum'], 0, 3); $this->acarsflights[] = $c; continue; } CodonEvent::Dispatch('refresh_acars', 'ACARS'); echo json_encode($this->acarsflights); } public function routeinfo() { if($this->get->depicao == '' || $this->get->arricao == '') return; $depinfo = OperationsData::GetAirportInfo($this->get->depicao); if(!$depinfo) { $depinfo = OperationsData::RetrieveAirportInfo($this->get->depicao); } $arrinfo = OperationsData::GetAirportInfo($this->get->arricao); if(!$arrinfo) { $arrinfo = OperationsData::RetrieveAirportInfo($this->get->arricao); } // Convert to json format $c = array(); $c['depapt'] = (array) $depinfo; $c['arrapt'] = (array) $arrinfo; echo json_encode($c); } public function fsacarsconfig() { $this->write_config('fsacars_config.tpl', Auth::$userinfo->code.'.ini'); } public function fspaxconfig() { $this->write_config('fspax_config.tpl', Auth::$userinfo->code.'_config.cfg'); } public function xacarsconfig() { $this->write_config('xacars_config.tpl', 'xacars.ini'); } /** * Write out a config file to the user, give the template name and * the filename to save the template as to the user * * @param mixed $template_name Template to use for config (fspax_config.tpl) * @param mixed $save_as File to save as (xacars.ini) * @return mixed Nothing, sends the file to the user * */ public function write_config($template_name, $save_as) { if(!Auth::LoggedIn()) { echo 'You are not logged in!'; return; } $this->set('pilotcode', PilotData::GetPilotCode(Auth::$userinfo->code, Auth::$userinfo->pilotid)); $this->set('userinfo', Auth::$userinfo); $acars_config = Template::GetTemplate($template_name, true); $acars_config = str_replace("\n", "\r\n", $acars_config); Util::downloadFile($acars_config, $save_as); } } acarsmap.tpl <head><meta http-equiv="Content-Type" content="text/html; charset=gb18030"> <style> .map-responsive iframe{ left:0; top:0; height:100%; width:100%; position:absolute; } .table > thead > tr > th, .table > tbody > tr > th, .table > tfoot > tr > th, .table > thead > tr > td, .table > tbody > tr > td, .table > tfoot > tr > td { vertical-align: middle; } </style> </head> <?php /** * These are some options for the ACARS map, you can change here * * By default, the zoom level and center are ignored, and the map * will try to fit the all the flights in. If you want to manually set * the zoom level and center, set "autozoom" to false. * * You can use these MapTypeId's: * http://code.google.com/apis/maps/documentation/v3/reference.html#MapTypeId * * Change the "TERRAIN" to the "Constant" listed there - they are case-sensitive * * Also, how to style the acars pilot list table. You can use these style selectors: * * table.acarsmap { } * table.acarsmap thead { } * table.acarsmap tbody { } * table.acarsmap tbody tr.even { } * table.acarsmap tbody tr.odd { } */ ?> <div class="mapcenter" align="center"> <div class="map-responsive" id="acarsmap" style="width:90%; height: 500px"></div> </div> <p>&nbsp;</p> <?php /* See below for details and columns you can use in this table */ ?> <div class="table-responsive"> <table border = "0" width="75%" class="table table-hover SegoeUI Text" align="center"> <thead> <tr> <td><strong>Operado por</strong></td> <td><strong>Piloto</strong></td> <td><strong>N煤mero de vuelo</strong></td> <td><strong>Salida</strong></td> <td><strong>Destino</strong></td> <td><strong>Estado</strong></td> <td><strong>Dist./E. R. T.</strong></td> <td><strong>Avi贸n</strong></td> <td><strong>On-line</strong></td> </tr> </thead> <tbody id="pilotlist"></tbody> </table> </div> <script src="<?php echo SITE_URL?>/lib/js/base_map.js"></script> <script src="<?php echo SITE_URL?>/lib/js/acarsmap.js"></script> <?php /* This is the template which is used in the table above, for each row. Be careful modifying it. You can simply add/remove columns, combine columns too. Keep each "section" (<%=...%>) intact Variables you can use (what they are is pretty obvious) Variable: Notes: <%=flight.pilotid%> <%=flight.firstname%> <%=flight.lastname%> <%=flight.pilotname%> First and last combined <%=flight.flightnum%> <%=flight.depapt%> Gives the airport name <%=flight.depicao%> <%=flight.arrapt%> Gives the airport name <%=flight.arricao%> <%=flight.phasedetail%> <%=flight.heading%> <%=flight.alt%> <%=flight.gs%> <%=flight.disremaining%> <%=flight.timeremaning%> <%=flight.aircraft%> Gives the registration <%=flight.aircraftname%> Gives the full name <%=flight.client%> FSACARS/Xacars/FSFK, etc <%=flight.trclass%> "even" or "odd" You can also use logic in the templating, if you so choose: http://ejohn.org/blog/javascript-micro-templating/ */ ?> <script type="text/html" id="acars_map_row"> <tr class="<%=flight.trclass%>"> <td><img src="https://www.skyjetvirtual.com/imagenes/logos/small/<%=flight.flightcode%>.png"></td> <td><a href="<?php echo url('/profile/view');?>/<%=flight.pilotid%>"><%=flight.pilotid%> - <%=flight.pilotname%></a></td> <td class="auto-style2001"><%=flight.flightnum%></td> <td class="auto-style2001"><%=flight.depicao%></td> <td class="auto-style2001"><%=flight.arricao%></td> <td class="auto-style2001"><%=flight.phasedetail%></td> <td class="auto-style2001"><%=flight.distremaining%> <?php echo Config::Get('UNITS');?> / <%=flight.timeremaining%></td> <td class="auto-style2001"><%=flight.aircraftname%></td> <td class="auto-style2001"><%=flight.online%></td> </tr> </script> <?php /* This is the template for the little map bubble which pops up when you click on a flight Same principle as above, keep the <%=...%> tags intact. The same variables are available to use here as are available above. */ ?> <script type="text/html" id="acars_map_bubble"> <span style="font-size: 10px; text-align:left; width: 100%" align="left"> <a href="<?php echo url('/profile/view');?>/<%=flight.pilotid%>"><%=flight.pilotid%> - <%=flight.pilotname%></a><br /> <strong>Flight <%=flight.flightnum%></strong> (<%=flight.depicao%> to <%=flight.arricao%>)<br /> <strong>Status: </strong><%=flight.phasedetail%><br /> <strong>Dist/Time Remain: </strong><%=flight.distremaining%> <?php echo Config::Get('UNITS');?> / <%=flight.timeremaining%><br /> </span> </script> <?php /* This is a small template for information about a navpoint popup Variables available: <%=nav.title%> <%=nav.name%> <%=nav.freq%> <%=nav.lat%> <%=nav.lng%> <%=nav.type%> 2=NDB 3=VOR 4=DME 5=FIX 6=TRACK */ ?> <script type="text/html" id="navpoint_bubble"> <span style="font-size: 10px; text-align:left; width: 100%" align="left"> <strong>Name: </strong><%=nav.title%> (<%=nav.name%>)<br /> <strong>Type: </strong> <?php /* Show the type of point */ ?> <% if(nav.type == 2) { %> NDB <% } %> <% if(nav.type == 3) { %> VOR <% } %> <% if(nav.type == 4) { %> DME <% } %> <% if(nav.type == 5) { %> FIX <% } %> <% if(nav.type == 6) { %> TRACK <% } %> <br /> <?php /* Only show frequency if it's not a 0*/ ?> <% if(nav.freq != 0) { %> <strong>Frequency: </strong><%=nav.freq%> <% } %> </span> </script> <script type="text/javascript"> <?php /* These are the settings for the Google map. You can see the Google API reference if you want to add more options. There's two options I've added: autozoom: This will automatically center in on/zoom so all your current flights are visible. If false, then the zoom and center you specify will be used instead refreshTime: Time, in seconds * 1000 to refresh the map. The default is 10000 (10 seconds) */ ?> const opts = { render_elem: 'acarsmap', provider: '<?php echo Config::Get("MAP_TYPE"); ?>', autozoom: true, zoom: <?php echo Config::Get('MAP_ZOOM_LEVEL'); ?>, center: L.latLng("<?php echo Config::Get('MAP_CENTER_LAT'); ?>", "<?php echo Config::Get('MAP_CENTER_LNG'); ?>"), refreshTime: 10000 }; renderAcarsMap(opts); </script>
  4. I discovered it happens after clicking "Reset Hours" in the maitenance section.
  5. Hi all, Last week I upgraded my site to PHP 7 using the update avaliable in this forum. Everything works fine but the total flown hours count does not show them correctly. Is there any way to fix this? Thank you!
  6. Hi all, I would like to know if there is a possibility that several senders send mass emails to pilots. My idea is that in the option "Email all pilots" there is a drop-down list in which each administrator chooses his name to appear as sender. I saw that in the file "Util.class.php" there is the possibility to edit this, I would like a sender from the list to be used instead of the default email address. Thank you!
  7. Hello, I want the pilot status to be shown on the profile tpl. I copied the code from the pilot list tpl but it's not working, the status is always "Active" although the real status is "Retired". Is any way to set this?. Thanks.
  8. Hello, My VA has different airlines (with their own ICAO) by country. I need to know if there is any way to show the airline name in the schedule informarion. Thank you.
  9. I could solve changing the default value for "Rank" in the pilots table structure on MySQL.
  10. Hello, I deleted the New Hire rank but when new pilots sign in my site they're assigned to "New Hire" anyway. I have created the initial rank as Primer Oficial de Fuselaje Angosto (Narrow-body First Officer) but it isn't working. Thank you!
  11. Hello! Is there any way to list aircraft names instead of icao? Thank you.
  12. It worked perfectely! Thank you so much!
  13. Hello, I need to know if there's any piece of code in order to add the pilot ID column in the admin pilot list. Thank you!
  14. Hello, I installed my site in a new hosting server but I can get the schedules in the admin panel. You can see the issue in the attached file. Thanks. phpVMS.zip
  • Create New...