Esempio n. 1
0
 /**
  * File PIREP
  *
  */
 public function pirep()
 {
     $data = "<?xml version=\"1.0\" encoding='UTF-8'?>" . trim(utf8_encode($_REQUEST['DATA2']));
     $xml = simplexml_load_string($data);
     $this->log($data, 'fsfk');
     $this->log(print_r($xml, true), 'fsfk');
     #$this->log(serialize($xml), 'fsfk');
     $pilotid = PilotData::parsePilotID($xml->PilotID);
     /*preg_match('/^([A-Za-z]*)(\d*)/', $xml->PilotID, $matches);
     		$code = $matches[1];
     		$pilotid = intval($matches[2]) - Config::Get('PILOTID_OFFSET');*/
     $flightinfo = SchedulesData::getProperFlightNum($xml->FlightNumber);
     $code = $flightinfo['code'];
     $flightnum = $flightinfo['flightnum'];
     # Extract the ICAO of the airport
     $depicao = strtoupper(substr($xml->OriginICAO, 0, 4));
     $arricao = strtoupper(substr($xml->DestinationICAO, 0, 4));
     if (!OperationsData::GetAirportInfo($depicao)) {
         OperationsData::RetrieveAirportInfo($depicao);
     }
     if (!OperationsData::GetAirportInfo($arricao)) {
         OperationsData::RetrieveAirportInfo($arricao);
     }
     $load = (string) $xml->Passenger;
     if ($load == '' || $load == 0) {
         $load = (string) $xml->Cargo;
     }
     $flighttime = str_replace(':', '.', (string) $xml->BlockTime);
     # Get the proper aircraft
     $ac = OperationsData::GetAircraftByReg((string) $xml->AircraftTailNumber);
     if (!$ac) {
         $aircraft = 0;
     } else {
         $aircraft = $ac->id;
         unset($ac);
     }
     /* Process the report, to put into the log */
     $log = '';
     $images = '';
     $rawdata = array();
     # Setup the base things
     $rawdata['FLIGHTMAPS'] = array();
     $rawdata['FLIGHTDATA'] = array();
     foreach ($xml as $key => $value) {
         /* Add the map images in */
         if ($key == 'FLIGHTMAPS') {
             $img = (string) $xml->FLIGHTMAPS->FlightMapJPG;
             if ($img) {
                 $rawdata['FLIGHTMAPS']['FlightMap'] = $img;
             }
             $img = (string) $xml->FLIGHTMAPS->FlightMapWeatherJPG;
             if ($img) {
                 $rawdata['FLIGHTMAPS']['FlightMapWeather'] = $img;
             }
             $img = (string) $xml->FLIGHTMAPS->FlightMapTaxiOutJPG;
             if ($img) {
                 $rawdata['FLIGHTMAPS']['FlightMapTaxiOut'] = $img;
             }
             $img = (string) $xml->FLIGHTMAPS->FlightMapTaxiInJPG;
             if ($img) {
                 $rawdata['FLIGHTMAPS']['FlightMapTaxiIn'] = $img;
             }
             $img = (string) $xml->FLIGHTMAPS->FlightMapVerticalProfileJPG;
             if ($img) {
                 $rawdata['FLIGHTMAPS']['FlightMapVerticalProfile'] = $img;
             }
             $img = (string) $xml->FLIGHTMAPS->FlightMapLandingProfileJPG;
             if ($img) {
                 $rawdata['FLIGHTMAPS']['FlightMapLandingProfile'] = $img;
             }
             continue;
         } elseif ($key == 'FLIGHTPLAN') {
             $rawdata['FLIGHTPLAN'] = (string) $value;
             continue;
         } elseif ($key == 'FLIGHTCRITIQUE') {
             $value = trim((string) $value);
             $rawdata['FLIGHTCRITIQUE'] = $value;
             continue;
         } else {
             $key = trim($key);
             $value = (string) $value;
             $value = str_replace('¯Â', '', $value);
             $rawdata['FLIGHTDATA'][$key] = $value;
         }
     }
     /* Our data to send to the submit PIREP function */
     $data = array('pilotid' => $pilotid, 'code' => $code, 'flightnum' => $flightnum, 'depicao' => $depicao, 'arricao' => $arricao, 'aircraft' => $aircraft, 'registration' => (string) $xml->AircraftTailNumber, 'flighttime' => $flighttime, 'landingrate' => (string) $xml->ONVS, 'submitdate' => 'NOW()', 'comment' => trim((string) $xml->COMMENT), 'fuelused' => (string) $xml->BlockFuel, 'source' => 'fsfk', 'load' => $load, 'log' => $log, 'rawdata' => $rawdata);
     $this->log(print_r($data, true), 'fsfk');
     $ret = ACARSData::FilePIREP($pilotid, $data);
     if (!$ret) {
         echo PIREPData::$lasterror;
     } else {
         echo '<script type="text/javascript">window.location="' . url('/pireps/view/' . ACARSData::$pirepid) . '";</script>';
     }
 }
Esempio n. 2
0
 public function index()
 {
     if ($_SERVER['REQUEST_METHOD'] === 'POST') {
         $postText = file_get_contents('php://input');
         $rec_xml = trim(utf8_encode(file_get_contents('php://input')));
         $xml = simplexml_load_string($rec_xml);
         if (!$xml) {
             #$this->log("Invalid XML Sent: \n".$rec_xml, 'kacars');
             return;
         }
         #$this->log(print_r($xml->asXML(), true), 'kacars');
         $case = strtolower($xml->switch->data);
         switch ($case) {
             case 'verify':
                 $results = Auth::ProcessLogin($xml->verify->pilotID, $xml->verify->password);
                 if ($results) {
                     $params = array('loginStatus' => '1');
                     //echo 1;
                 } else {
                     $params = array('loginStatus' => '0');
                     //echo 0;
                 }
                 $send = self::sendXML($params);
                 break;
             case 'getbid':
                 $pilotid = PilotData::parsePilotID($xml->verify->pilotID);
                 $pilotinfo = PilotData::getPilotData($pilotid);
                 $biddata = SchedulesData::getLatestBid($pilotid);
                 $aircraftinfo = OperationsData::getAircraftByReg($biddata->registration);
                 if (count($biddata) == 1) {
                     if ($aircraftinfo->enabled == 1) {
                         $params = array('flightStatus' => '1', 'flightNumber' => $biddata->code . $biddata->flightnum, 'aircraftReg' => $biddata->registration, 'aircraftICAO' => $aircraftinfo->icao, 'aircraftFullName' => $aircraftinfo->fullname, 'flightLevel' => $biddata->flightlevel, 'aircraftMaxPax' => $aircraftinfo->maxpax, 'aircraftCargo' => $aircraftinfo->maxcargo, 'depICAO' => $biddata->depicao, 'arrICAO' => $biddata->arricao, 'route' => $biddata->route, 'depTime' => $biddata->deptime, 'arrTime' => $biddata->arrtime, 'flightTime' => $biddata->flighttime, 'flightType' => $biddata->flighttype, 'aircraftName' => $aircraftinfo->name, 'aircraftRange' => $aircraftinfo->range, 'aircraftWeight' => $aircraftinfo->weight, 'aircraftCruise' => $aircraftinfo->cruise);
                     } else {
                         $params = array('flightStatus' => '3');
                         // Aircraft Out of Service.
                     }
                 } else {
                     $params = array('flightStatus' => '2');
                     // You have no bids!
                 }
                 $send = $this->sendXML($params);
                 break;
             case 'getflight':
                 $flightinfo = SchedulesData::getProperFlightNum($xml->pirep->flightNumber);
                 $params = array('s.code' => $flightinfo['code'], 's.flightnum' => $flightinfo['flightnum'], 's.enabled' => 1);
                 $biddata = SchedulesData::findSchedules($params, 1);
                 $aircraftinfo = OperationsData::getAircraftByReg($biddata[0]->registration);
                 if (count($biddata) == 1) {
                     $params = array('flightStatus' => '1', 'flightNumber' => $biddata[0]->code . $biddata[0]->flightnum, 'aircraftReg' => $biddata[0]->registration, 'aircraftICAO' => $aircraftinfo->icao, 'aircraftFullName' => $aircraftinfo->fullname, 'flightLevel' => $biddata[0]->flightlevel, 'aircraftMaxPax' => $aircraftinfo->maxpax, 'aircraftCargo' => $aircraftinfo->maxcargo, 'depICAO' => $biddata[0]->depicao, 'arrICAO' => $biddata[0]->arricao, 'route' => $biddata[0]->route, 'depTime' => $biddata[0]->deptime, 'arrTime' => $biddata[0]->arrtime, 'flightTime' => $biddata[0]->flighttime, 'flightType' => $biddata[0]->flighttype, 'aircraftName' => $aircraftinfo->name, 'aircraftRange' => $aircraftinfo->range, 'aircraftWeight' => $aircraftinfo->weight, 'aircraftCruise' => $aircraftinfo->cruise);
                 } else {
                     $params = array('flightStatus' => '2');
                 }
                 $send = $this->sendXML($params);
                 break;
             case 'liveupdate':
                 $pilotid = PilotData::parsePilotID($xml->verify->pilotID);
                 # Get the distance remaining
                 $depapt = OperationsData::GetAirportInfo($xml->liveupdate->depICAO);
                 $arrapt = OperationsData::GetAirportInfo($xml->liveupdate->arrICAO);
                 $dist_remain = round(SchedulesData::distanceBetweenPoints($xml->liveupdate->latitude, $xml->liveupdate->longitude, $arrapt->lat, $arrapt->lng));
                 # Estimate the time remaining
                 if ($xml->liveupdate->groundSpeed > 0) {
                     $Minutes = round($dist_remain / $xml->liveupdate->groundSpeed * 60);
                     $time_remain = self::ConvertMinutes2Hours($Minutes);
                 } else {
                     $time_remain = '00:00';
                 }
                 $lat = str_replace(",", ".", $xml->liveupdate->latitude);
                 $lon = str_replace(",", ".", $xml->liveupdate->longitude);
                 $fields = array('pilotid' => $pilotid, 'flightnum' => $xml->liveupdate->flightNumber, 'pilotname' => '', 'aircraft' => $xml->liveupdate->registration, 'lat' => $lat, 'lng' => $lon, 'heading' => $xml->liveupdate->heading, 'alt' => $xml->liveupdate->altitude, 'gs' => $xml->liveupdate->groundSpeed, 'depicao' => $xml->liveupdate->depICAO, 'arricao' => $xml->liveupdate->arrICAO, 'deptime' => $xml->liveupdate->depTime, 'arrtime' => '', 'route' => $xml->liveupdate->route, 'distremain' => $dist_remain, 'timeremaining' => $time_remain, 'phasedetail' => $xml->liveupdate->status, 'online' => '', 'client' => 'kACARS');
                 #$this->log("UpdateFlightData: \n".print_r($fields, true), 'kacars');
                 ACARSData::UpdateFlightData($pilotid, $fields);
                 break;
             case 'pirep':
                 $flightinfo = SchedulesData::getProperFlightNum($xml->pirep->flightNumber);
                 $code = $flightinfo['code'];
                 $flightnum = $flightinfo['flightnum'];
                 $pilotid = PilotData::parsePilotID($xml->verify->pilotID);
                 # Make sure airports exist:
                 #  If not, add them.
                 if (!OperationsData::GetAirportInfo($xml->pirep->depICAO)) {
                     OperationsData::RetrieveAirportInfo($xml->pirep->depICAO);
                 }
                 if (!OperationsData::GetAirportInfo($xml->pirep->arrICAO)) {
                     OperationsData::RetrieveAirportInfo($xml->pirep->arrICAO);
                 }
                 # Get aircraft information
                 $reg = trim($xml->pirep->registration);
                 $ac = OperationsData::GetAircraftByReg($reg);
                 # Load info
                 /* If no passengers set, then set it to the cargo */
                 $load = $xml->pirep->pax;
                 if (empty($load)) {
                     $load = $xml->pirep->cargo;
                 }
                 /* Fuel conversion - kAcars only reports in lbs */
                 $fuelused = $xml->pirep->fuelUsed;
                 if (Config::Get('LiquidUnit') == '0') {
                     # Convert to KGs, divide by density since d = mass * volume
                     $fuelused = $fuelused * 0.45359237 / 0.8075;
                 } elseif (Config::Get('LiquidUnit') == '1') {
                     $fuelused = $fuelused * 6.84;
                 } elseif (Config::Get('LiquidUnit') == '2') {
                     $fuelused = $fuelused * 0.45359237;
                 }
                 $data = array('pilotid' => $pilotid, 'code' => $code, 'flightnum' => $flightnum, 'depicao' => $xml->pirep->depICAO, 'arricao' => $xml->pirep->arrICAO, 'aircraft' => $ac->id, 'flighttime' => $xml->pirep->flightTime, 'submitdate' => 'NOW()', 'comment' => $xml->pirep->comments, 'fuelused' => $fuelused, 'source' => 'kACARS', 'load' => $load, 'landingrate' => $xml->pirep->landing, 'log' => $xml->pirep->log);
                 #$this->log("File PIREP: \n".print_r($data, true), 'kacars');
                 $ret = ACARSData::FilePIREP($pilotid, $data);
                 if ($ret) {
                     $params = array('pirepStatus' => '1');
                     // Pirep Filed!
                 } else {
                     $params = array('pirepStatus' => '2');
                     // Please Try Again!
                 }
                 $send = $this->sendXML($params);
                 break;
             case 'aircraft':
                 $this->getAllAircraft();
                 break;
         }
     }
 }
Esempio n. 3
0
        $_GET['dest'] = DB::escape($_GET['dest']);
        # Get schedule info, using minimal information
        #	Check if they forgot the flight code
        if ($code == '') {
            # Find a flight using just the flight code
            $sched = SchedulesData::FindFlight($flightnum);
            # Can't do it. They completely f****d this up
            if (!$sched) {
                return;
            }
            $code = $sched->code;
            $flightnum = $sched->flightnum;
            if ($_GET['origin'] != $sched->depicao || $_GET['dest'] != $sched->arricao) {
                $comment = 'phpVMS Message: Arrival or Departure does not match schedule';
            }
        }
        # Make sure airports exist:
        #  If not, add them.
        if (!OperationsData::GetAirportInfo($_GET['origin'])) {
            OperationsData::RetrieveAirportInfo($_GET['origin']);
        }
        if (!OperationsData::GetAirportInfo($_GET['dest'])) {
            OperationsData::RetrieveAirportInfo($_GET['dest']);
        }
        # Convert the time to xx.xx
        $flighttime = number_format(floatval(str_replace(':', '.', $_GET['duration'])), 2);
        $data = array('pilotid' => $pilotid, 'code' => $code, 'flightnum' => $flightnum, 'depicao' => $_GET['origin'], 'arricao' => $_GET['dest'], 'aircraft' => $ac->id, 'flighttime' => $flighttime, 'landingrate' => $landingrate, 'submitdate' => 'NOW()', 'comment' => $comment, 'fuelused' => $_GET['fuel'], 'source' => 'fsacars', 'route' => $route, 'load' => $load, 'rawdata' => $log, 'log' => $_GET['log']);
        $ret = ACARSData::FilePIREP($pilotid, $data);
        echo 'OK';
        break;
}