Jump to content

RESTRICT_AIRCRAFT_RANKS


CN@ndo

Recommended Posts

Hello friends.

I have a basic problem, I'm willing to block for some aircraft rating.

but some pilots still reserving flights with the aircraft and also blocked release,

Example.

In AdminCenter put the A320 into a Commander rating, but the co-pilot can book a flight and system releases.

APP.CONFIG.PHP my script this way: Config:: Set ('RESTRICT_AIRCRAFT_RANKS', true);

To block flights with aircraft restrictions on what can I do?

Link to comment
Share on other sites

  • Administrators

Hello friends.

I have a basic problem, I'm willing to block for some aircraft rating.

but some pilots still reserving flights with the aircraft and also blocked release,

Example.

In AdminCenter put the A320 into a Commander rating, but the co-pilot can book a flight and system releases.

APP.CONFIG.PHP my script this way: Config:: Set ('RESTRICT_AIRCRAFT_RANKS', true);

To block flights with aircraft restrictions on what can I do?

To remove them completely from being listed? In the default schedule_results.tpl, there is some code which does that, make sure you have it in there:

/*	Skip any schedules which have aircraft that the pilot
	is not rated to fly (according to RANK), only skip them if
	they are logged in. */
if(Config::Get('RESTRICT_AIRCRAFT_RANKS') === true && Auth::LoggedIn())
{
	/*	This means the aircraft rank level is higher than
		what the pilot's ranklevel, so just do "continue"
		and move onto the next route in the list 
	 */
	if($route->aircraftlevel > Auth::$userinfo->ranklevel)
	{
		continue;
	}
}

They won't be able to select that aircraft from the dropdown either, make sure that code is in the pirep_new.tpl

Link to comment
Share on other sites

The code is this, how can I send data from private ftp? Thanks

it can take a look at the map after the update gave error also

my map with error: http://www.voeoceanairvirtual.com.br/index.php/acars

Perfect server: http://www.voeoceanairvirtual.com.br/install/checkinstall.php

<style type="text/css">
<!--
.style1 {color: #FFFFFF}
body {
background-color: #CCCCCC;
}
/*      Skip any schedules which have aircraft that the pilot
               is not rated to fly (according to RANK), only skip them if
               they are logged in. */
       if(Config::Get('RESTRICT_AIRCRAFT_RANKS') === true && Auth::LoggedIn())
       {
               /*      This means the aircraft rank level is higher than
                       what the pilot's ranklevel, so just do "continue"
                       and move onto the next route in the list 
                */
               if($route->aircraftlevel > Auth::$userinfo->ranklevel)
               {
                       continue;
               }
       }
<?php

if(!$allroutes)

{

echo '<p align="center">Nenhuma rota encontrada!</p>';

return;

}

?>

<table width="691" class="tablesorter" id="tabledlist">

<thead>

<tr>

<th width="296" bgcolor="#003366"><span class="style1">Informações do vôo </span></th>

<th width="383" bgcolor="#003366"><span class="style1">Opções</span></th>
</tr>
</thead>

<tbody>

<?php

foreach($allroutes as $route)

{



/* Uncomment this code if you want only schedules which are from the last PIREP that

	pilot filed */

/*if(Auth::LoggedIn())

{

	$search = array(

		'p.pilotid' => Auth::$userinfo->pilotid,

		'p.accepted' => PIREP_ACCEPTED

	);



	$reports = PIREPData::findPIREPS($search, 1); // return only one



	if(is_object($reports))

	{

		# IF the arrival airport doesn't match the departure airport

		if($reports->arricao != $route->depicao)

		{

			continue;

		}

	}

}*/



/*

Skip over a route if it's not for this day of week

Left this here, so it can be omitted if your VA

 doesn't use this. 



Comment out these two lines if you don't want to.

*/



if(strpos($route->daysofweek, date('w')) === false)

	continue;



/* END DAY OF WEEK CHECK */







/*

This will skip over a schedule if it's been bid on

This only runs if the below setting is enabled



If you don't want it to skip, then comment out

this code below by adding // in front of each 

line until the END DISABLE SCHEDULE comment below



If you do that, and want to show some text when

it's been bid on, see the comment below

*/

if(Config::Get('DISABLE_SCHED_ON_BID') == true && $route->bidid != 0)

{

	continue;

}

/* END DISABLE SCHEDULE ON BID */



/* THIS BEGINS ONE TABLE ROW */

?>

<tr>

<td bgcolor="#CCCCCC" >

	<a href="<?php echo url('/schedules/details/'.$route->id);?>"><?php echo $route->code . $route->flightnum?><?php echo '('.$route->depicao.' - '.$route->arricao.')'?></a>

	<br />



	<strong>Origem: </strong><?php echo $route->deptime;?>         <strong>Origem: </strong><?php echo $route->arrtime;?><br />

	<strong>Aeronave: </strong><?php echo $route->aircraft; ?> (<?php echo $route->registration;?>)  <strong>Distancia: </strong><?php echo $route->distance . Config::Get('UNITS');?>

	<br />

	<strong>Dias da semana : </strong><?php echo Util::GetDaysCompact($route->daysofweek); ?><br />

	<?php echo ($route->route=='')?'':'<strong>Route: </strong>'.$route->route.'<br />' ?>

	<?php echo ($route->notes=='')?'':'<strong>Notes: </strong>'.html_entity_decode($route->notes).'<br />' ?>



	<?php

	# Note: this will only show if the above code to

	#	skip the schedule is commented out

	if($route->bidid != 0)

	{

		echo 'Lamento esta rota acaba de ser reservada';

	}

	?>	</td>

<td nowrap bgcolor="#999999">

	<div align="right"><a href="<?php echo url('/schedules/details/'.$route->id);?>">Visualizar detalhes </a><br />

	    <a href="<?php echo url('/schedules/brief/'.$route->id);?>">Detalhes do vôo </a><br />



	    <?php 

	# Don't allow overlapping bids and a bid exists

	if(Config::Get('DISABLE_SCHED_ON_BID') == true && $route->bidid != 0)

	{

	?>

	  <a id="<?php echo $route->id; ?>" class="addbid" 

			href="<?php echo actionurl('/schedules/addbid');?>">Reservar</a>

        <?php

	}

	else

	{

		if(Auth::LoggedIn())

		{

		 ?>

	  <a id="<?php echo $route->id; ?>" class="addbid" 

				href="<?php echo url('/schedules/addbid');?>">Reservar</a>

           <?php			 

		}

	}		

	?>	
    <img src="http://www.voeoceanairvirtual.com.br/imagem/escala_sim.gif" width="14" height="14" /></div></td>
</tr>

<?php

/* END OF ONE TABLE ROW */

}

?>
</tbody>
</table>

</div>

Link to comment
Share on other sites

  • Administrators

Here's your problem:

<style type="text/css">
<!--
.style1 {color: #FFFFFF}
body {
background-color: #CCCCCC;
}

You never closed that CSS tag, it seems like it's inside a PHP block as well.

Your other error, is related to this thread (the other one you posted):

http://forum.phpvms.net/topic/2548-live-map-with-problem/page__view__findpost__p__17346

Read that post, and the several posts after that

Link to comment
Share on other sites

Excuse me, I read the post over the error continues;

I post my script on the host.

ACARSMAP.JS

/**
* 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/
*
* Rewritten for Google Maps v3
*/

var flightMarkers = [];
var routeMarkers = [];
var flightPath = null;
var depMarker = null, arrMarker = null;
var info_window= null;
var run_once = false;

var defaultOptions = {
autozoom: true,
zoom: 4,
center: new google.maps.LatLng(-25.363882,131.044922),
mapTypeId: google.maps.MapTypeId.TERRAIN,
refreshTime: 12000,
autorefresh: true
};

var options = $.extend({}, defaultOptions, acars_map_defaults);
var map = new google.maps.Map(document.getElementById("acarsmap"), options);

// They clicked the map
google.maps.event.addListener(map, 'click', function()
{
//clearPreviousMarkers();
});

liveRefresh();
if(options.autorefresh == true)
{
   setInterval(function () { liveRefresh(); }, options.refreshTime);
}

function liveRefresh()
{
$.ajax({
	type: "GET",
	url: url + "/action.php/acars/data",
	dataType: "json",
	cache: false,
	success: function(data) 
	{
		populateMap(data);
    }
});
};

function populateMap(data)
{
clearMap();
$("#pilotlist").html("");

if (data.length == 0) {
	return false;
}

var lat, lng;
var details, row, pilotlink;
var bounds = new google.maps.LatLngBounds();

for (var i = 0; i < data.length; i++) 
{
	if(data[i] == null || data[i].lat == null || data[i].lng == null
	    || data[i].lat == "" || data[i].lng == "")
	{
		continue;
    }

	lat = data[i].lat;
	lng = data[i].lng;

	if(i%2 == 0)
		data[i].trclass = "even";
	else
		data[i].trclass = "odd";

	// Pull ze templates!
	var map_row = tmpl("acars_map_row", {flight: data[i]});
	var detailed_bubble = tmpl("acars_map_bubble", {flight: data[i]});

	$('#pilotlist').append(map_row);

	var pos = new google.maps.LatLng(lat, lng);
	flightMarkers[flightMarkers.length] = new google.maps.Marker({
		position: pos,
		map: map,
		icon: url+"/lib/images/inair/"+data[i].heading+".png",
		flightdetails: data[i],
		infowindow_content: detailed_bubble
	});

	bounds.extend(pos);

	google.maps.event.addListener(flightMarkers[flightMarkers.length - 1], 'click', function() 
	{
		clearPreviousMarkers();

		var focus_bounds = new google.maps.LatLngBounds();
		// Flight details info window
		info_window = new google.maps.InfoWindow({ 
			content: this.infowindow_content,
			position: this.position
		});

		info_window.open(map, this);

		// Add polyline, and start/end points
		var dep_location = new google.maps.LatLng(this.flightdetails.deplat, this.flightdetails.deplng);
		var arr_location = new google.maps.LatLng(this.flightdetails.arrlat, this.flightdetails.arrlng);

		depMarker = new google.maps.Marker({
			position: dep_location,
			map: map,
			icon: depicon,
			title: this.flightdetails.depname,
			zIndex: 100
		});

		arrMarker = new google.maps.Marker({
			position: arr_location,
			map: map,
			icon: arricon,
			title: this.flightdetails.arrname,
			zIndex: 100
		});

		// Now the flight path, if it exists
		var path = new Array();
		path[path.length] = dep_location;
		focus_bounds.extend(dep_location);
		if(this.flightdetails.route_details.length > 0)
		{
	        $.each(this.flightdetails.route_details, function(i, nav)
	        {
	            var loc = new google.maps.LatLng(nav.lat, nav.lng);

	            if(nav.type == 3)
	                icon = "icon_vor.png";
	            else
	                icon = "icon_fix.png";

	            var navpoint_info = tmpl("navpoint_bubble", {nav: nav});
	            routeMarkers[routeMarkers.length] = new google.maps.Marker({
		            position: loc,
		            map: map,
		            icon: url + "/lib/images/"+icon,
		            title: nav.title,
		            zIndex: 100,
		            infowindow_content: navpoint_info
	            });

	            google.maps.event.addListener(routeMarkers[routeMarkers.length - 1], 'click', function() 
			    {
				    info_window = new google.maps.InfoWindow({ 
					    content: this.infowindow_content,
					    position: this.position
				    });

				    info_window.open(map, this);
			    });

	            path[path.length] = loc;
	            focus_bounds.extend(loc);
	        });
	    }

		path[path.length] = arr_location;
		focus_bounds.extend(this.position);
		focus_bounds.extend(arr_location);

		flightPath = new google.maps.Polyline({
			path: path,
			strokeColor: "#FF0000", strokeOpacity: 1.0, strokeWeight: 2
		});

		map.fitBounds(focus_bounds); 
		flightPath.setMap(map);
	});
}

// If they selected autozoom, only do the zoom first time
if(options.autozoom == true && run_once == false)
{
	map.fitBounds(bounds); 
	run_once = true;
}
}

function clearPreviousMarkers()
{
if(info_window)
{
	info_window.close();
	info_window = null;
}

if(depMarker != null)
{
	depMarker.setMap(null);
	depMarker = null;
}

if(arrMarker != null)
{
	arrMarker.setMap(null);
	arrMarker = null;
}

if(routeMarkers.length > 0)
{
    for(var i = 0; i < routeMarkers.length; i++) {
		routeMarkers[i].setMap(null);
	}
}

routeMarkers.length = 0;

if(flightPath != null)
{
	flightPath.setMap(null);
	flightPath = null;
}
}

function clearMap()
{
if(flightMarkers.length > 0)
{
	for(var i = 0; i < flightMarkers.length; i++) {
		flightMarkers[i].setMap(null);
	}
}

flightMarkers.length = 0;

if(routeMarkers.length > 0)
{
    for(var i = 0; i < routeMarkers.length; i++) {
		routeMarkers[i].setMap(null);
	}
}

routeMarkers.length = 0;
}

ACARSMAP.TPL

<?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 { } 
*/
?>
<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)
*/
?>
var acars_map_defaults = {
autozoom: true,
zoom: 4,
   center: new google.maps.LatLng("<?php echo Config::Get('MAP_CENTER_LAT'); ?>", "<?php echo Config::Get('MAP_CENTER_LNG'); ?>"),
   mapTypeId: google.maps.MapTypeId.TERRAIN,
   refreshTime: 10000
};
</script><style type="text/css">
<!--
body {
background-color: #CCCCCC;
}
.style3 {color: #FFFFFF; font-weight: bold; }
-->
</style>
<div class="mapcenter" align="center">
<div id="acarsmap" style="width:<?php echo  Config::Get('MAP_WIDTH');?>; height: <?php echo Config::Get('MAP_HEIGHT')?>"></div>
</div>
<?php
/* See below for details and columns you can use in this table */
?>
<table width="70%" border = "0" align="center" class="acarsmap">
<thead>
<tr>
	<td bgcolor="#003366"><span class="style3">Pilot</span></td>
	<td bgcolor="#003366"><span class="style3">Voo</span></td>
	<td bgcolor="#003366"><span class="style3">Origem</span></td>
	<td bgcolor="#003366"><span class="style3">Destino</span></td>
	<td bgcolor="#003366"><span class="style3">Status</span></td>
	<td bgcolor="#003366"><span class="style3">Altitude</span></td>
	<td bgcolor="#003366"><span class="style3">Velocidade</span></td>
	<td bgcolor="#003366"><span class="style3">Distancia/previsão</span></td>
</tr>
</thead>
<tbody id="pilotlist"></tbody>
</table>
<script type="text/javascript" src="<?php echo fileurl('/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><a href="<?php echo url('/profile/view');?>/<%=flight.pilotid%>"><%=flight.pilotid%> - <%=flight.pilotname%></a></td>
<td><%=flight.flightnum%></td>
<td><%=flight.depicao%></td>
<td><%=flight.arricao%></td>
<td><%=flight.phasedetail%></td>
<td><%=flight.alt%></td>
<td><%=flight.gs%></td>
<td><%=flight.distremaining%> <?php echo Config::Get('UNITS');?> / <%=flight.timeremaining%></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>

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...