Jump to content

Recommended Posts

Posted (edited)

Does anyone have any idea how I could include the jump seat in the administrative panel.

pilots_details.tpl

<form id="dialogform" action="<?php echo adminaction('/pilotadmin/viewpilots');?>" method="post">
<table id="tabledlist" class="tablesorter" style="float: left">
<thead>
<tr>
<th colspan="2">Edit Pilot Details</th>
</tr>
</thead>
<tbody>
<tr>
<td>Avatar</td>
<td>
<?php
$pilotcode = PilotData::GetPilotCode($pilotinfo->code, $pilotinfo->pilotid);
if(!file_exists(SITE_ROOT.AVATAR_PATH.'/'.$pilotcode.'.png'))
{
echo 'None selected';
}
else
{
?>
<img src="<?php echo SITE_URL.AVATAR_PATH.'/'.$pilotcode.'.png';?>" />
<?php
}
?>
</td>
</tr>
<tr>
<td>Pilot ID</td>
<td><?php echo $pilotcode ?></td>
</tr>
<tr>
<td>First Name</td>
<td><input type="text" name="firstname" value="<?php echo $pilotinfo->firstname;?>" /></td>
</tr>
<tr>
<td>Last Name</td>
<td><input type="text" name="lastname" value="<?php echo $pilotinfo->lastname;?>" /></td>
</tr>
<tr>
<td>Email Address</td>
<td><input type="text" name="email" value="<?php echo $pilotinfo->email;?>" /></td>
</tr>
<tr>
<td>Airline</td>
<td>
<select name="code">
<?php
$allairlines = OperationsData::GetAllAirlines();
foreach($allairlines as $airline)
{
if($pilotinfo->code == $airline->code)
$sel = ' selected';
else
$sel = '';

echo '<option value="'.$airline->code.'" '
 .$sel.'>'.$airline->name.'</option>';
}
?>
</select>
</td>
</tr>
<tr>
<td>Location</td>
<td><select name="location">
<?php
foreach($countries as $countryCode=>$countryName)
{
if($pilotinfo->location == $countryCode)
 $sel = 'selected="selected"';
else
 $sel = '';

echo '<option value="'.$countryCode.'" '.$sel.'>'.$countryName.'</option>';
}
 ?>
</select>
</td>
</tr>
<tr>
<td>Hub</td>
<td>
<select name="hub">
<?php
$allhubs = OperationsData::GetAllHubs();
foreach($allhubs as $hub)
{
if($pilotinfo->hub == $hub->icao)
$sel = ' selected';
else
$sel = '';

echo '<option value="'.$hub->icao.'" '.$sel.'>'.$hub->icao.' - ' . $hub->name .'</option>';
}
?>
</select>
</td>
</tr>
<tr>
<td>Current Rank</td>
<td>
<?php
if(Config::Get('RANKS_AUTOCALCULATE') == false)
{
$allranks = RanksData::GetAllRanks();
echo '<select name="rank">';

foreach($allranks as $rank)
{
echo "<option value=\"{$rank->rankid}\">{$rank->rank}</option>";
}
echo '</select>';
}
else
{
echo $pilotinfo->rank;
}
?></td>
</tr>
<tr>
<td>Date Joined</td>
<td><?php echo date(DATE_FORMAT, strtotime($pilotinfo->joindate));?></td>
</tr>
<tr>
<td>Last Login</td>
<td><?php echo date(DATE_FORMAT, strtotime($pilotinfo->lastlogin));?></td>
</tr>
<tr>
<td>Last Flight</td>
<td><?php echo date(DATE_FORMAT, strtotime($pilotinfo->lastpirep));?></td>
</tr>
<tr>
<td>Total Flights</td>
<td><input type="text" name="totalflights" value="<?php echo $pilotinfo->totalflights;?>" /></td>
</tr>
<tr>
<td>Total Hours</td>
<td><?php echo $pilotinfo->totalhours;?>
<input type="hidden" name="totalhours" value="<?php echo $pilotinfo->totalhours;?>" />
</td>
</tr>
<tr>
<td>Transfer Hours</td>
<td><input type="text" name="transferhours" value="<?php echo $pilotinfo->transferhours;?>" /></td>
</tr>
<tr>
<td>Total Pay</td>
<td><input type="text" name="totalpay" value="<?php echo $pilotinfo->totalpay;?>" /></td>
</tr>
<tr>
<td>Pilot active?</td>
<td><?php
if(intval($pilotinfo->retired) == 1)
{
$retsel='selected';
$activesel = '';
}
else
{
$activesel = 'selected';
$retsel = '';
}
?>
<select name="retired">
<option value="0" <?php echo $activesel?>>Active</option>
<option value="1" <?php echo $retsel?>>Inactive</option>
</select>

</td>
</tr>
<?php
if($customfields)
{
foreach($customfields as $field)
{
?>
<tr>
<td><?php echo $field->title;?></td>
<td>
<?php
if($field->type == 'dropdown')
{
echo "<select name=\"{$field->fieldname}\">";
$values = explode(',', $field->fieldvalues);

if(is_array($values))
{	
foreach($values as $val)
{
 $sel = ($field->value === $val) ? 'sel="selected"' : '';

 $val = trim($val);
 echo "<option value=\"{$val}\" {$sel} >{$val}</option>";
}
}

echo '</select>';
}
elseif($field->type == 'textarea')
{
echo '<textarea name="'.$field->fieldname.'" style="width: 400px; height: 100px" class="customfield_textarea">'.$field->value.'</textarea>';
}
else
{
echo '<input type="text" name="'.$field->fieldname.'" value="'.$field->value.'" />';
}
?>
</td>
</tr>
<?php
}
}
?>
<tr>
<td colspan="2">
<input type="hidden" name="pilotid" value="<?php echo $pilotinfo->pilotid;?>" />
<input type="hidden" name="action" value="saveprofile" />
<input type="submit" name="submit" value="Save Changes" />
<div id="results"></div>
</td>
</tr>
</tbody>
</table>
</form>

Operations.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/
* @package module_admin_operations
*/
class Operations extends CodonModule
{

public function HTMLHead()
{
switch($this->controller->function)
{
case 'airlines':
$this->set('sidebar', 'sidebar_airlines.tpl');
break;
case 'addaircraft':
case 'aircraft':
$this->set('sidebar', 'sidebar_aircraft.tpl');
break;
case 'airports':
$this->set('sidebar', 'sidebar_airports.tpl');
break;
case '':
case 'addschedule':
case 'activeschedules':
case 'inactiveschedules':
case 'schedules':
$this->set('sidebar', 'sidebar_schedules.tpl');
break;
case 'editschedule':
$this->set('sidebar', 'sidebar_editschedule.tpl');
break;
}
}

public function index()
{
$this->schedules();
}

public function viewmap()
{
if($this->get->type === 'pirep')
{
$data = PIREPData::getReportDetails($this->get->id);
}

elseif($this->get->type === 'schedule')
{
$data = SchedulesData::getScheduleDetailed($this->get->id);
}

elseif($this->get->type === 'preview')
{
$data = new stdClass();

$depicao = OperationsData::getAirportInfo($this->get->depicao);
$arricao = OperationsData::getAirportInfo($this->get->arricao);

$data->deplat = $depicao->lat;
$data->deplng = $depicao->lng;
$data->depname = $depicao->name;

$data->arrlat = $arricao->lat;
$data->arrlng = $arricao->lng;
$data->arrname = $arricao->name;

$data->route = $this->get->route;

unset($depicao);
unset($arricao);

$data->route_details = NavData::parseRoute($data);
}

$this->set('mapdata', $data);
$this->render('route_map.tpl');
}

public function addaircraft()
{
$this->set('title', 'Add Aircraft');
$this->set('action', 'addaircraft');
$this->set('allranks', RanksData::getAllRanks());
$this->render('ops_aircraftform.tpl');
}

public function editaircraft()
{
$id = $this->get->id;

$this->set('aircraft', OperationsData::GetAircraftInfo($id));
$this->set('title', 'Edit Aircraft');
$this->set('action', 'editaircraft');
$this->set('allranks', RanksData::getAllRanks());
$this->render('ops_aircraftform.tpl');
}

public function addairline()
{
$this->set('title', 'Add Airline');
$this->set('action', 'addairline');
$this->render('ops_airlineform.tpl');
}

public function editairline()
{
$this->set('title', 'Edit Airline');
$this->set('action', 'editairline');
$this->set('airline', OperationsData::GetAirlineByID($this->get->id));

$this->render('ops_airlineform.tpl');
}

public function calculatedistance($depicao='', $arricao='')
{
if($depicao == '')
$depicao = $this->get->depicao;

if($arricao == '')
$arricao = $this->get->arricao;

echo OperationsData::getAirportDistance($depicao, $arricao);
}

public function getfuelprice()
{
if(Config::Get('FUEL_GET_LIVE_PRICE') == false)
{
echo '<span style="color: red">Live fuel pricing is disabled!</span>';
return;
}

$icao = $_GET['icao'];
$price = FuelData::get_from_server($icao);

if(is_bool($price) && $price === false)
{
echo '<span style="color: red">Live fuel pricing is not available for this airport</span>';
return;
}

echo '<span style="color: #33CC00">OK! Found - current price: <strong>'.$price.'</strong></span>';
}

public function findairport()
{
$results = OperationsData::searchAirport($this->get->term);

if(count($results) > 0)
{
$return = array();

foreach($results as $row)
{
$tmp = array(
 'label' => "{$row->icao} ({$row->name})",
 'value' => $row->icao,
 'id' => $row->id,
);

$return[] = $tmp;
}

echo json_encode($return);
}
}

public function airlines()
{
if(isset($this->post->action))
{
if($this->post->action == 'addairline')
{
$this->add_airline_post();
}
elseif($this->post->action == 'editairline')
{
$this->edit_airline_post();
}
}

$this->set('allairlines', OperationsData::GetAllAirlines());
$this->render('ops_airlineslist.tpl');
}

public function aircraft()
{
/* If they're adding an aircraft, go through this pain
*/
switch($this->post->action)
{
case 'addaircraft':

$this->add_aircraft_post();

break;

case 'editaircraft':

$this->edit_aircraft_post();

break;
}

$this->set('allaircraft', OperationsData::GetAllAircraft());
$this->render('ops_aircraftlist.tpl');
}

public function addairport()
{
$this->set('title', 'Add Airport');
$this->set('action', 'addairport');
$this->render('ops_airportform.tpl');
}

public function editairport()
{
$this->set('title', 'Edit Airport');
$this->set('action', 'editairport');
$this->set('airport', OperationsData::GetAirportInfo($this->get->icao));
$this->render('ops_airportform.tpl');
}

public function airports()
{
/* If they're adding an airport, go through this pain
*/
if(isset($this->post->action))
{
switch($this->post->action)
{
case 'addairport':
 $this->add_airport_post();
 break;
case 'editairport':
 $this->edit_airport_post();
 break;
}

return;
}

//$this->set('airports', OperationsData::getAllAirports());
$this->render('ops_airportlist.tpl');
}
public function airportgrid()
{
$page = $this->get->page; // get the requested page
$limit = $this->get->rows; // get how many rows we want to have into the grid
$sidx = $this->get->sidx; // get index row - i.e. user click to sort
$sord = $this->get->sord; // get the direction
if(!$sidx) $sidx =1;

# http://dev.phpvms.net/admin/action.php/operations/
# ?_search=true&nd=1270940867171&rows=20&page=1&sidx=flightnum&sord=asc&searchField=code&searchString=TAY&searchOper=eq

/* Do the search using jqGrid */
$where = array();
if($this->get->_search == 'true')
{
$searchstr = jqgrid::strip($this->get->filters);
$where_string = jqgrid::constructWhere($searchstr);

# Append to our search, add 1=1 since it comes with AND
# from above
$where[] = "1=1 {$where_string}";
}

# Do a search without the limits so we can find how many records
$count = count(OperationsData::findAirport($where));

if($count > 0)
{
$total_pages = ceil($count/$limit);
}
else
{
$total_pages = 0;
}

if ($page > $total_pages)
{
$page = $total_pages;
}

$start = $limit * $page - $limit; // do not put $limit*($page - 1)
if ($start < 0)
{
$start = 0;
}

# And finally do a search with the limits
$airports = OperationsData::findAirport($where, $limit, $start, "{$sidx} {$sord}");
if(!$airports)
{
$airports = array();
}
# Form the json header
$json = array(
'page' => $page,
'total' => $total_pages,
'records' => $count,
'rows' => array()
);

# Add each row to the above array
foreach($airports as $row)
{
if($row->fuelprice == 0)
{
$row->fuelprice = 'Live';
}
$edit = '<a href="#" onclick="editairport(\''.$row->icao.'\'); return false;">Edit</a>';

$tmp = array(
'id' => $row->id,
'cell' => array(
 # Each column, in order
 $row->icao,
 $row->name,
 $row->country,
 $row->fuelprice,
 $row->lat,
 $row->lng,
 $edit,
 ),
 );

$json['rows'][] = $tmp;
}

header("Content-type: text/x-json");
echo json_encode($json);
}

public function addschedule()
{
$this->set('title', 'Add Schedule');
$this->set('action', 'addschedule');
 $this->set('allairlines', OperationsData::GetAllAirlines());
$this->set('allaircraft', OperationsData::GetAllAircraft());
$this->set('allairports', OperationsData::GetAllAirports());
//$this->set('airport_json_list', OperationsData::getAllAirportsJSON());
$this->set('flighttypes', Config::Get('FLIGHT_TYPES'));
$this->render('ops_scheduleform.tpl');
}

public function editschedule()
{
$id = $this->get->id;
$this->set('title', 'Edit Schedule');
$this->set('schedule', SchedulesData::GetSchedule($id));

$this->set('action', 'editschedule');
 $this->set('allairlines', OperationsData::GetAllAirlines());
$this->set('allaircraft', OperationsData::GetAllAircraft());
$this->set('allairports', OperationsData::GetAllAirports());
$this->set('flighttypes', Config::Get('FLIGHT_TYPES'));

$this->render('ops_scheduleform.tpl');
}

public function activeschedules()
{
$this->schedules('activeschedules');
}

public function inactiveschedules()
{
$this->schedules('inactiveschedules');
}

public function schedulegrid()
{
$page = $this->get->page; // get the requested page
$limit = $this->get->rows; // get how many rows we want to have into the grid
$sidx = $this->get->sidx; // get index row - i.e. user click to sort
$sord = $this->get->sord; // get the direction
if(!$sidx) $sidx =1;

# http://dev.phpvms.net/admin/action.php/operations/
# ?_search=true&nd=1270940867171&rows=20&page=1&sidx=flightnum&sord=asc&searchField=code&searchString=TAY&searchOper=eq

/* Do the search using jqGrid */
$where = array();
if($this->get->_search == 'true')
{
$searchstr = jqgrid::strip($this->get->filters);
$where_string = jqgrid::constructWhere($searchstr);

# Append to our search, add 1=1 since it comes with AND
# from above
$where[] = "1=1 {$where_string}";
}

Config::Set('SCHEDULES_ORDER_BY', "{$sidx} {$sord}");

# Do a search without the limits so we can find how many records
$count = SchedulesData::countSchedules($where);
if($count > 0)
{
$total_pages = ceil($count/$limit);
}
else
{
$total_pages = 0;
}

 if ($page > $total_pages)
 {
$page = $total_pages;
}

$start = $limit * $page - $limit; // do not put $limit*($page - 1)
if ($start < 0)
{
$start = 0;
}

# And finally do a search with the limits
$schedules = SchedulesData::findSchedules($where, $limit, $start);
if(!$schedules)
{
$schedules = array();
}

# Form the json header
$json = array(
'page' => $page,
'total' => $total_pages,
'records' => $count,
'rows' => array()
);

# Add each row to the above array
foreach($schedules as $row)
{
if($row->route != '')
{
$route = '<a href="#" onclick="showroute(\''.$row->id.'\'); return false;">View</a>';
}
else
{
$route = '-';
}

$edit = '<a href="'.adminurl('/operations/editschedule?id='.$row->id).'">Edit</a>';
$delete = '<a href="#" onclick="deleteschedule('.$row->id.'); return false;">Delete</a>';

$tmp = array(
'id' => $row->id,
'cell' => array(
 # Each column, in order
 $row->code,
 $row->flightnum,
 $row->depicao,
 $row->arricao,
 $row->aircraft,
 $row->registration,
 $route,
 Util::GetDaysCompact($row->daysofweek),
 $row->distance,
 $row->timesflown,
 $edit,
 $delete,
),
);

$json['rows'][] = $tmp;
}

header("Content-type: text/x-json");
echo json_encode($json);
}

public function schedules($type='activeschedules')
{
/* These are loaded in popup box */
if($this->get->action == 'viewroute')
{
$id = $this->get->id;
return;
}
if($this->get->action == 'filter')
{
$this->set('title', 'Filtered Schedules');

if($this->get->type == 'flightnum')
{
$params = array('s.flightnum' => $this->get->query);
}
elseif($this->get->type == 'code')
{
$params = array('s.code' => $this->get->query);
}
elseif($this->get->type == 'aircraft')
{
$params = array('a.name' => $this->get->query);
}
elseif($this->get->type == 'depapt')
{
$params = array('s.depicao' => $this->get->query);
}
elseif($this->get->type == 'arrapt')
{
$params = array('s.arricao' => $this->get->query);
}

// Filter or don't filter enabled/disabled flights
if(isset($this->get->enabled) && $this->get->enabled != 'all')
{
$params['s.enabled'] = $this->get->enabled;
}

$this->set('schedules', SchedulesData::findSchedules($params));
$this->render('ops_schedules.tpl');
return;
}

switch($this->post->action)
{
case 'addschedule':
$this->add_schedule_post();
break;

case 'editschedule':
$this->edit_schedule_post();
break;

case 'deleteschedule':
$this->delete_schedule_post();
return;
break;
}

if(!isset($this->get->start) || $this->get->start == '')
{
$this->get->start = 0;
}

$num_per_page = 20;
$start = $num_per_page * $this->get->start;

if($type == 'schedules' || $type == 'activeschedules')
{
$params = array('s.enabled' => 1);
$schedules = SchedulesData::findSchedules($params, $num_per_page, $start);

$this->set('title', 'Viewing Active Schedules');
$this->set('schedules', $schedules);

if(count($schedules) >= $num_per_page)
{
$this->set('paginate', true);
$this->set('start', $this->get->start+1);

if($this->get->start - 1 > 0)
{
 $prev = $this->get->start - 1;
 if($prev == '')
 $prev = 0;

 $this->set('prev', intval($prev));
}
}
}
else
{
$this->set('title', 'Viewing Inactive Schedules');
$this->set('schedules', SchedulesData::findSchedules(array('s.enabled'=>0)));
}

$this->render('ops_schedules.tpl');
}

protected function add_airline_post()
{
$this->post->code = strtoupper($this->post->code);

if($this->post->code == '' || $this->post->name == '')
{
$this->set('message', 'You must fill out all of the fields');
$this->render('core_error.tpl');
return;
}

if(OperationsData::GetAirlineByCode($this->post->code))
{
$this->set('message', 'An airline with this code already exists!');
$this->render('core_error.tpl');
return;
}

OperationsData::AddAirline($this->post->code, $this->post->name);

if(DB::errno() != 0)
{
if(DB::errno() == 1062) // Duplicate entry
$this->set('message', 'This airline has already been added');
else
$this->set('message', 'There was an error adding the airline');
	 $this->render('core_error.tpl');
return;
}
$this->set('message', 'Added the airline "'.$this->post->code.' - '.$this->post->name.'"');
$this->render('core_success.tpl');

LogData::addLog(Auth::$userinfo->pilotid, 'Added the airline "'.$this->post->code.' - '.$this->post->name.'"');
}

protected function edit_airline_post()
{
$this->post->code = strtoupper($this->post->code);

if($this->post->code == '' || $this->post->name == '')
{
$this->set('message', 'Code and name cannot be blank');
$this->render('core_error.tpl');
}

$prevairline = OperationsData::GetAirlineByCode($this->post->code);
if($prevairline && $prevairline->id != $this->post->id)
{
$this->set('message', 'This airline with this code already exists!');
$this->render('core_error.tpl');
return;
}

if(isset($this->post->enabled))
$enabled = true;
else
$enabled = false;

OperationsData::EditAirline($this->post->id, $this->post->code, $this->post->name, $enabled);

if(DB::errno() != 0)
{
$this->set('message', 'There was an error editing the airline');
$this->render('core_error.tpl');
return false;
}
$this->set('message', 'Edited the airline "'.$this->post->code.' - '.$this->post->name.'"');
$this->render('core_success.tpl');

LogData::addLog(Auth::$userinfo->pilotid, 'Edited the airline "'.$this->post->code.' - '.$this->post->name.'"');
}

protected function add_aircraft_post()
{
if($this->post->icao == '' || $this->post->name == ''
|| $this->post->fullname == ''
|| $this->post->registration == '')
{
$this->set('message', 'You must enter the ICAO, name, full name and the registration.');
$this->render('core_error.tpl');
return;
}

if($this->post->enabled == '1')
$this->post->enabled = true;
else
$this->post->enabled = false;

# Check aircraft registration, make sure it's not a duplicate

$ac = OperationsData::GetAircraftByReg($this->post->registration);
if($ac)
{
$this->set('message', 'The aircraft registration must be unique');
$this->render('core_error.tpl');
return;
}

$data = array(
'icao'=>$this->post->icao,
'name'=>$this->post->name,
'fullname'=>$this->post->fullname,
'registration'=>$this->post->registration,
'downloadlink'=>$this->post->downloadlink,
'imagelink'=>$this->post->imagelink,
'range'=>$this->post->range,
'weight'=>$this->post->weight,
'cruise'=>$this->post->cruise,
'maxpax'=>$this->post->maxpax,
'maxcargo'=>$this->post->maxcargo,
'minrank'=>$this->post->minrank,
'enabled'=>$this->post->enabled
);

OperationsData::AddAircaft($data);

if(DB::errno() != 0)
{
if(DB::$errno == 1062) // Duplicate entry
$this->set('message', 'This aircraft already exists');
else
$this->set('message', 'There was an error adding the aircraft');
$this->render('core_error.tpl');
return false;
}
$this->set('message', 'The aircraft has been added');
$this->render('core_success.tpl');

LogData::addLog(Auth::$userinfo->pilotid, 'Added the aircraft "'.$this->post->name.' - '.$this->post->registration.'"');
}

protected function edit_aircraft_post()
{
if($this->post->id == '')
{
$this->set('message', 'Invalid ID specified');
$this->render('core_error.tpl');
return;
}

if($this->post->icao == '' || $this->post->name == ''
|| $this->post->fullname == '' || $this->post->registration == '')
{
$this->set('message', 'You must enter the ICAO, name, full name, and registration');
$this->render('core_error.tpl');
return;
}

$ac = OperationsData::CheckRegDupe($this->post->id, $this->post->registration);
if($ac)
{
$this->set('message', 'This registration is already assigned to another active aircraft');
$this->render('core_error.tpl');
return;
}

if($this->post->enabled == '1')
$this->post->enabled = true;
else
$this->post->enabled = false;

$data = array(
'id' => $this->post->id,
'icao'=>$this->post->icao,
'name'=>$this->post->name,
'fullname'=>$this->post->fullname,
'registration'=>$this->post->registration,
'downloadlink'=>$this->post->downloadlink,
'imagelink'=>$this->post->imagelink,
'range'=>$this->post->range,
'weight'=>$this->post->weight,
'cruise'=>$this->post->cruise,
'maxpax'=>$this->post->maxpax,
'maxcargo'=>$this->post->maxcargo,
'minrank'=>$this->post->minrank,
'enabled'=>$this->post->enabled
);

OperationsData::EditAircraft($data);

if(DB::errno() != 0)
{
$this->set('message', 'There was an error editing the aircraft');
	 $this->render('core_error.tpl');
return;
}

LogData::addLog(Auth::$userinfo->pilotid, 'Edited the aircraft "'.$this->post->name.' - '.$this->post->registration.'"');
$this->set('message', 'The aircraft "'.$this->post->registration.'" has been edited');
$this->render('core_success.tpl');
}

protected function add_airport_post()
{

if($this->post->icao == '' || $this->post->name == ''
|| $this->post->country == ''
|| $this->post->lat == '' || $this->post->lng == '')
{
$this->set('message', 'Some fields were blank!');
$this->render('core_error.tpl');
return;
}
if($this->post->hub == 'true')
$this->post->hub = true;
else
$this->post->hub = false;

$data = array(
'icao' => $this->post->icao,
'name' => $this->post->name,
'country' => $this->post->country,
'lat' => $this->post->lat,
'lng' => $this->post->lng,
'hub' => $this->post->hub,
'chartlink' => $this->post->chartlink,
'fuelprice' => $this->post->fuelprice
);

OperationsData::AddAirport($data);

if(DB::errno() != 0)
{
if(DB::$errno == 1062) // Duplicate entry
$this->set('message', 'This airport has already been added');
else
$this->set('message', 'There was an error adding the airport');
$this->render('core_error.tpl');
return;
}
/*$this->set('message', 'The airport has been added');
$this->render('core_success.tpl');*/

LogData::addLog(Auth::$userinfo->pilotid, 'Added the airport "'.$this->post->icao.' - '.$this->post->name.'"');
}
protected function edit_airport_post()
{
if($this->post->icao == '' || $this->post->name == ''
|| $this->post->country == '' || $this->post->lat == '' || $this->post->lng == '')
{
$this->set('message', 'Some fields were blank!');
$this->render('core_message.tpl');
return;
}
if($this->post->hub == 'true')
$this->post->hub = true;
else
$this->post->hub = false;


$data = array(
'icao' => $this->post->icao,
'name' => $this->post->name,
'country' => $this->post->country,
'lat' => $this->post->lat,
'lng' => $this->post->lng,
'hub' => $this->post->hub,
'chartlink' => $this->post->chartlink,
'fuelprice' => $this->post->fuelprice
);
OperationsData::EditAirport($data);

if(DB::errno() != 0)
{
$this->set('message', 'There was an error adding the airport: '.DB::$error);
$this->render('core_error.tpl');
return;
}
$this->set('message', $icao . ' has been edited');
$this->render('core_success.tpl');

LogData::addLog(Auth::$userinfo->pilotid, 'Edited the airport "'.$this->post->icao.' - '.$this->post->name.'"');
}

protected function add_schedule_post()
{
if($this->post->code == '' || $this->post->flightnum == ''
|| $this->post->deptime == '' || $this->post->arrtime == ''
|| $this->post->depicao == '' || $this->post->arricao == '')
{
$this->set('message', 'All of the fields must be filled out');
$this->render('core_error.tpl');

return;
}

# Check if the schedule exists
$sched = SchedulesData::getScheduleByFlight($this->post->code, $this->post->flightnum);
if(is_object($sched))
{
$this->set('message', 'This schedule already exists!');
$this->render('core_error.tpl');

return;
}

$enabled = ($this->post->enabled == 'on') ? true : false;

# Check the distance
if($this->post->distance == '' || $this->post->distance == 0)
{
$this->post->distance = OperationsData::getAirportDistance($this->post->depicao, $this->post->arricao);
}

# Format the flight level
$this->post->flightlevel = str_replace(',', '', $this->post->flightlevel);
$this->post->flightlevel = str_replace(' ', '', $this->post->flightlevel);
$this->post->route = strtoupper($this->post->route);
$this->post->route = str_replace($this->post->depicao, '', $this->post->route);
$this->post->route = str_replace($this->post->arricao, '', $this->post->route);
$this->post->route = str_replace('SID', '', $this->post->route);
$this->post->route = str_replace('STAR', '', $this->post->route);
$this->post->alticao = strtoupper($this->post->alticao);

$data = array( 'code'=>$this->post->code,
 'flightnum'=>$this->post->flightnum,
 'depicao'=>$this->post->depicao,
 'arricao'=>$this->post->arricao,
 'alticao'=>$this->post->alticao,
 'route'=>$this->post->route,
 'aircraft'=>$this->post->aircraft,
 'flightlevel'=>$this->post->flightlevel,
 'distance'=>$this->post->distance,
 'deptime'=>$this->post->deptime,
 'arrtime'=>$this->post->arrtime,
 'flighttime'=>$this->post->flighttime,
 'daysofweek'=>implode('', $_POST['daysofweek']),
 'price'=>$this->post->price,
 'flighttype'=>$this->post->flighttype,
 'EQPT'=>$this->post->EQPT,
 'PBN'=>$this->post->PBN,
 'EET'=>$this->post->EET,
 'PER'=>$this->post->PER,
 'RALT'=>$this->post->RALT,
 'RMK'=>$this->post->RMK,
 'OPR'=>$this->post->OPR,
 'enabled'=>$enabled);

# Add it in
$ret = SchedulesData::AddSchedule($data);

if(DB::errno() != 0 && $ret == false)
{
	 $this->set('message', 'There was an error adding the schedule, already exists DB error: '.DB::error());
$this->render('core_error.tpl');
return;
}

 $this->set('message', 'The schedule "'.$this->post->code.$this->post->flightnum.'" has been added');
$this->render('core_success.tpl');

LogData::addLog(Auth::$userinfo->pilotid, 'Added schedule "'.$this->post->code.$this->post->flightnum.'"');
}
protected function edit_schedule_post()
{
if($this->post->code == '' || $this->post->flightnum == ''
|| $this->post->deptime == '' || $this->post->arrtime == ''
|| $this->post->depicao == '' || $this->post->arricao == '')
{
$this->set('message', 'All of the fields must be filled out');
$this->render('core_error.tpl');

return;
}

$enabled = ($this->post->enabled == 'on') ? true : false;
$this->post->route = strtoupper($this->post->route);

# Format the flight level
$this->post->flightlevel = str_replace(',', '', $this->post->flightlevel);
$this->post->flightlevel = str_replace(' ', '', $this->post->flightlevel);

# Clear anything invalid out of the route
$this->post->route = strtoupper($this->post->route);
$this->post->route = str_replace($this->post->depicao, '', $this->post->route);
$this->post->route = str_replace($this->post->arricao, '', $this->post->route);
$this->post->route = str_replace('SID', '', $this->post->route);
$this->post->route = str_replace('STAR', '', $this->post->route);
$this->post->alticao = strtoupper($this->post->alticao);

$data = array( 'code'=>$this->post->code,
 'flightnum'=>$this->post->flightnum,
 'depicao'=>$this->post->depicao,
 'arricao'=>$this->post->arricao,
 'alticao'=>$this->post->alticao,
 'route'=>$this->post->route,
 'aircraft'=>$this->post->aircraft,
 'flightlevel'=>$this->post->flightlevel,
 'distance'=>$this->post->distance,
 'deptime'=>$this->post->deptime,
 'arrtime'=>$this->post->arrtime,
 'flighttime'=>$this->post->flighttime,
 'daysofweek'=>implode('', $_POST['daysofweek']),
 'price'=>$this->post->price,
 'flighttype'=>$this->post->flighttype,
 'EQPT'=>$this->post->EQPT,
 'PBN'=>$this->post->PBN,
 'EET'=>$this->post->EET,
 'PER'=>$this->post->PER,
 'RALT'=>$this->post->RALT,
 'RMK'=>$this->post->RMK,
 'OPR'=>$this->post->OPR,
 'enabled'=>$enabled);

$val = SchedulesData::editScheduleFields($this->post->id, $data);
if(!$val)
{
$this->set('message', 'There was an error editing the schedule: '.DB::error());
$this->render('core_error.tpl');
return;
}

# Parse the route:
SchedulesData::getRouteDetails($this->post->id, $this->post->route);

$this->set('message', 'The schedule "'.$this->post->code.$this->post->flightnum.'" has been edited');
$this->render('core_success.tpl');

LogData::addLog(Auth::$userinfo->pilotid, 'Edited schedule "'.$this->post->code.$this->post->flightnum.'"');
}
protected function delete_schedule_post()
{
$schedule = SchedulesData::findSchedules(array('s.id'=>$this->post->id));
SchedulesData::DeleteSchedule($this->post->id);

$params = array();
 if(DB::errno() != 0)
{
$params['status'] = 'There was an error deleting the schedule';
$params['error'] = DB::error();
echo json_encode($params);
return;
}
$params['status'] = 'ok';
echo json_encode($params);

LogData::addLog(Auth::$userinfo->pilotid, 'Deleted schedule "'.$schedule->code.$schedule->flightnum.'"');
}
}

Edited by eliezerazevedo
Posted (edited)

My scenario and this: I want to enable a jump seat inside the administrative panel.

Example: If one member of the crew go to an airport and for some reason not exitir left flights from its current location, a staff can make the jump seat through the administrative panel.

I do not want the crew can do that only staffs, can they move them!

This can be free!

Yes, I have the Flight Booking System module installed on my site however I do not use.

Not want the pilot do the jumpseat, only the staffs menbros teram this permiƃĀ§ao, they can do the jumpseat of any pilot.

Edited by eliezerazevedo
Posted (edited)

No guarantees this work (haven't had a chance to test it so might've forgotten something) but I've removed the jumpseat from the pilot's side and moved it to the admin's side only.

It will also be a free transfer for staff to move them.

The functionality for the pilot's end jumpseat is still there if you want to add it in later.

This is for parkho's FlightBookingSystem v1, so if you are using a different search at the moment (e.g. default) and want to make it work with that then it will require additional editing.

Edited by web541
  • Moderators
Posted

It came across my mind that in order to simulate pilot jump seat, you'll have to have some kind of a location system or module otherwise it's just something useless since the schedules and flights are not based on pilot location by default but if you just want this to be there then Web541's module is your answer.

Posted (edited)

1.jpg

Web541, does not work the system does not find the crew I believe the problem and be here.

<h3>Choose Pilot</h3>
<br />
<select name="pilot" onchange="location = this.value;">
<?php
foreach($allpilots as $pilot) {
$pilotcode = PilotData::getPilotCode($pilot->code, $pilot->pilotid);
echo '<option value="'.SITE_URL.'/admin/index.php/FBSV/viewpilot?pilotid='.$pilot->pilotid.'">'.$pilotcode.' - '.$pilot->firstname.' '.$pilot->lastname.'</option>';
}
?>
</select>

Edited by eliezerazevedo
Posted (edited)

Ok, made a small mistake here,

Go to admin/modules/FBSV/FBSV.php

and find this line

$allpilots = PilotData::getAllPilots();

After it add this

$this->set('allpilots', $allpilots);

It came across my mind that in order to simulate pilot jump seat, you'll have to have some kind of a location system or module otherwise it's just something useless since the schedules and flights are not based on pilot location by default but if you just want this to be there then Web541's module is your answer.

Agreed, and in addition to this you would have to work other modules around this one (e.g. randomflights) and integrate the "currentlocation" into it.

Edited by web541

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...