function addTestFlightFromURL($filename_url) { //global $flightsAbsPath ; //$tmpPath=$flightsAbsPath."/-1/tmp"; global $CONF; $tmpPath = LEONARDO_ABS_PATH . '/' . $CONF['paths']['tmpigc']; // if (!is_dir($tmpPath)) makeDir($tmpPath,0755); $filename_parts = explode("/", $filename_url); $filename = $filename_parts[count($filename_parts) - 1]; $filename_tmp = $tmpPath . "/" . $filename; $fp = fopen($filename_tmp, "w"); $lines = file($filename_url); foreach ($lines as $line) { fwrite($fp, $line); } fclose($fp); addFlightFromFile($filename_tmp, 0, -1, array('private' => 1, 'cat' => -1, 'category' => 1)); }
move_uploaded_file($tmpFilename, $filename); //$filename = preg_replace('/[\s\W]+/','_',$filename); //P.Wild A.Rieck - patch to prevent nasty characters spoiling filenames // echo $filename; $category = $_POST['category'] + 0; $comments = $_POST["comments"]; //$glider=$_POST["glider"]; //$gliderBrandID=$_POST["gliderBrandID"]+0; $linkURL = $_POST["linkURL"]; if ($CONF['NAC']['clubPerFlight']) { $NACclubID = $_POST['NACclubID'] + 0; $NACid = $_POST['NACid'] + 0; } else { $NACclubID = -1; $NACid = -1; } list($result, $flightID) = addFlightFromFile($filename, true, $flights_user_id, array('gliderBrandID' => $gliderBrandID, 'private' => $is_private, '$linkURL' => $linkURL, 'comments' => $comments, 'glider' => $glider, 'category' => $category, 'cat' => $gliderCat, 'allowDuplicates' => 1, 'gliderCertCategory' => $gliderCertCategory, 'startType' => $_POST["startType"] + 0, 'NACclubID' => $NACclubID, 'NACid' => $NACid, 'commentsEnabled' => $_POST['commentsEnabled'] + 0)); } if ($result != 1) { // we must log the failure for debuging purposes @unlink($filename); $errMsg = getAddFlightErrMsg($result, $flightID); addFlightError($errMsg); } else { $flight = new flight(); $flight->getFlightFromDB($flightID); if ($flight->takeoffVinicity > $takeoffRadious * 2) { ?> <script language="javascript"> function user_add_takeoff(lat,lon,id) { MWJ_changeContents('takeoffBoxTitle',"Register Takeoff"); document.getElementById('addTakeoffFrame').src='<?php
function processEntry($serverID, $e, $sync_mode = SYNC_INSERT_FLIGHT_LINK) { global $CONF; global $DBGcat, $DBGlvl; if ($DBGlvl > 0) { echo "<PRE>"; print_r($e); echo "</PRE>"; } if (is_array($e['ActionXML'])) { $actionData =& $e['ActionXML']; } else { if (is_array($e['actionData'])) { $actionData =& $e['actionData']; } else { if (is_array($e['flight'])) { $actionData =& $e; } else { return array(0, "logReplicator::processEntry : actionData section not found"); } } } // if this log entry is not for a flight of the specific server // then check if we are allowesd to accpet these flights from this server if (isset($actionData['flight']['serverID'])) { $thisEntryServerID = $actionData['flight']['serverID']; } else { if (isset($e['serverID'])) { $thisEntryServerID = $e['serverID']; } else { return array(0, "logReplicator::processEntry : ServerID for Log entry could not be determined "); } } if ($thisEntryServerID != $serverID) { $wrongServer = 1; if (is_array($CONF['servers']['list'][$serverID]['accept_also_servers'])) { if (in_array($thisEntryServerID, $CONF['servers']['list'][$serverID]['accept_also_servers'])) { $wrongServer = 0; } } if ($wrongServer) { return array(0, "logReplicator::processEntry : We dont accept flights originally from server " . $thisEntryServerID); } } if ($e['type'] == '1') { // flight if ($e['action'] == 4) { // delete $flightIDlocal = logReplicator::findFlight($actionData['flight']['serverID'], $actionData['flight']['id']); if (!$flightIDlocal) { return array(0, "logReplicator::processEntry : Flight with serverID " . $actionData['flight']['serverID'] . " and original ID : " . $actionData['flight']['id'] . " is not found in the local DB -> Wont delete it"); } // echo "Will delete flight $flightIDlocal<BR>"; $extFlight = new flight(); $extFlight->getFlightFromDB($flightIDlocal, 0); $extFlight->deleteFlight(); return array(1, "Flight with local ID: {$flightIDlocal} DELETED"); } if ($e['action'] == 16) { // rename tracklog $flightIDlocal = logReplicator::findFlight($e['serverID'], $e['id']); if (!$flightIDlocal) { return array(0, "logReplicator::processEntry : Flight with serverID " . $e['serverID'] . " and original ID : " . $e['id'] . " is not found in the local DB -> Wont rename tracklog<BR>"); } $extFlight = new flight(); $extFlight->getFlightFromDB($flightIDlocal, 0); $extFlight->renameTracklog($actionData['newFilename'], $actionData['oldFilename']); return array(1, "Flight tracklog renamed for local ID {$flightIDlocal}"); } if ($e['action'] == 8) { // scoring info $flightIDlocal = logReplicator::findFlight($e['serverID'], $e['id']); if (!$flightIDlocal) { return array(0, "logReplicator::processEntry : Flight with serverID " . $e['serverID'] . " and original ID : " . $e['id'] . " is not found in the local DB -> Wont update scoring<BR>"); } // echo "Will update scoring info for flight $flightIDlocal<BR>"; // no need to pull flight info //$extFlight=new flight(); //$extFlight->getFlightFromDB($flightIDlocal,0); require_once dirname(__FILE__) . '/CL_flightScore.php'; $flightScore = new flightScore($flightIDlocal); // we have the score array in $actionData['score'] $sArr =& $actionData['score']; $flightScore->fromSyncArray($sArr); //put also in scores table, the flight is sure to be present in flights table $flightScore->putToDB(1, 1); return array(1, "Flight Score was *pulled* for local ID {$flightIDlocal}"); } // now deal with add/update $getValidationData = 1; $getScoreData = 1; // check 'alien' pilot and insert him or update him anyway $userServerID = $actionData['flight']['serverID']; if ($userServerID == 0) { $userServerID = $serverID; } // echo "logReplicator::checkPilot"; list($effectiveServerID, $effectiveUserID) = logReplicator::checkPilot($userServerID, $actionData['flight']['pilot']); //echo "effectiveServerID: $effectiveServerID, effectiveUserID: $effectiveUserID // userServerID: $userServerID, userID: ".$actionData['flight']['pilot']['userID']."<BR>"; // check if a maping took place and LOG it!! if ($effectiveServerID != $userServerID || $effectiveUserID != $actionData['flight']['pilot']['userID']) { $orgUserIDstr = $userServerID + 0 . '_' . $actionData['flight']['pilot']['userID']; } else { $orgUserIDstr = ''; } // $userIDstr=$userServerID.'_'.$actionData['flight']['pilot']['userID']; $userIDstr = $effectiveServerID . '_' . $effectiveUserID; list($nearestTakeoffID, $nearestDistance) = logReplicator::checkLocation($userServerID, $actionData['flight']['location'], $actionData['flight']['bounds']); list($nearestLandingID, $nearestLandingDistance) = findNearestWaypoint($actionData['flight']['bounds']['lastLat'], $actionData['flight']['bounds']['lastLon']); // get only the first 2 bits $externalFlightType = $sync_mode & 0x3; $addFlightNote = ''; // if action ==update check to see if the flight exists ! if ($e['action'] == 2) { $flightIDlocal = logReplicator::findFlight($actionData['flight']['serverID'], $actionData['flight']['id']); if (!$flightIDlocal) { // we then INSERT IT instead echo " [Not found,will insert] "; $e['action'] = 1; } } else { if ($e['action'] == 1) { // if action == insert we make an extra check to see if the fligh is there, if yes we UPDATE instead $flightIDlocal = logReplicator::findFlight($actionData['flight']['serverID'], $actionData['flight']['id']); if ($flightIDlocal) { // we then UPDATE IT instead echo " [Already here,will update] "; $e['action'] = 2; } } } if ($e['action'] == 1) { // add $igcFilename = $actionData['flight']['filename']; $igcFileURL = $actionData['flight']['linkIGC']; $igcZipFileURL = $actionData['flight']['linkIGCzip']; $tempFilename = LEONARDO_ABS_PATH . '/' . $CONF['paths']['tmpigc'] . '/' . $igcFilename; $hash = $actionData['flight']['validation']['hash']; $sameHashIDarray = flight::findSameHash($hash); if (count($sameHashIDarray) > 0) { $isFlightDup = 0; $markFlightAsDisabled = 1; $msg = ''; if ($CONF['servers']['list'][$actionData['flight']['serverID']]['allow_duplicate_flights']) { foreach ($sameHashIDarray as $sameHashFlightInfo) { if ($sameHashFlightInfo['serverID'] == $actionData['flight']['serverID']) { // from same server $isFlightDup = 1; $msg .= " local flight: " . $sameHashFlightInfo['serverID'] . '_' . $sameHashFlightInfo['ID'] . " , new entry:" . $actionData['flight']['serverID'] . '_' . $actionData['flight']['id']; break; } else { // we have a flight with same hash that is not from this specific server. // HERE we must make the decision whether to mark this flight as DISABLED // WE always mark this new flight as DISABLED because : // the local flight takes precedence anyway. // ONE case // we are DHV mirror , the new flight is from DHV and there is a dup from XContest // we should insert, // SO INSERT TAKES PRECEDENCE OVER LINKED FLIGHTS } } } else { $isFlightDup = 1; } if ($isFlightDup) { return array(-1, "Flight already exists : {$msg}"); } } /* if ($CONF['servers']['list'][$actionData['flight']['serverID']]['allow_duplicate_flights']) { $sameHashIDarray=flight::findSameHash( $hash , $actionData['flight']['serverID'] ); if (count($sameHashIDarray)>0 ) { return array(-1,"Flight already exists in local with ID: $sameHashID (dups allowed)"); continue; } else { // $addFlightNote="*(Duplicate Flight)*"; } } else { $sameHashIDarray=flight::findSameHash( $hash ); if (count($sameHashIDarray)>0 ) { return array(-1,"Flight already exists in local with ID: $sameHashID"); continue; } } */ } else { if ($e['action'] == 2) { // update // This is not needed , we have found $flightIDlocal earlier and if it didnt exist we will insert it instead /* $flightIDlocal=logReplicator::findFlight($actionData['flight']['serverID'],$actionData['flight']['id']); if (!$flightIDlocal) { return array(0,"logReplicator::processEntry : Flight with serverID ".$actionData['flight']['serverID']." and original ID : ". $actionData['flight']['id']." is not found in the local DB -> Wont update<BR>"); } */ // echo "Will update flight $flightIDlocal<BR>"; } } $thisCat = $actionData['flight']['info']['cat'] + 0; // when we get data from leonardo servers, we just ignore these fields // since they can be computed on the fly $originalURL = htmlDecode($actionData['flight']['linkDisplay']); $originalKML = htmlDecode($actionData['flight']['linkGE']); if ($actionData['flight']['serverID'] != 0) { global $CONF; if ($CONF['servers']['list'][$actionData['flight']['serverID']]['isLeo'] == 1) { $originalURL = ''; $originalKML = ''; } } $argArray = array("private" => $actionData['flight']['info']['private'] + 0, "cat" => $actionData['flight']['info']['gliderCat'] + 0, "linkURL" => $actionData['flight']['info']['linkURL'], "comments" => $actionData['flight']['info']['comments'], "glider" => $actionData['flight']['info']['glider'], "gliderBrandID" => $actionData['flight']['info']['gliderBrandID'] + 0, "category" => $thisCat >= 0 ? $thisCat : 0, "dateAdded" => $actionData['flight']['dateAdded'], "originalURL" => $originalURL, "originalKML" => $originalKML, "original_ID" => $actionData['flight']['id'], "serverID" => $actionData['flight']['serverID'], "userServerID" => $actionData['flight']['serverID'], "originalUserID" => $orgUserIDstr, "externalFlightType" => $externalFlightType, "allowDuplicates" => $CONF['servers']['list'][$actionData['flight']['serverID']]['allow_duplicate_flights'] + 0); // print_r($argArray); if ($e['action'] == 1 && $sync_mode & SYNC_INSERT_FLIGHT_LOCAL & SYNC_INSERT_FLIGHT_REPROCESS_LOCALLY) { if (!($igcFileStr = fetchURL($igcFileURL, 20))) { return array(0, "logReplicator::processEntry() : Cannot Fetch {$igcFileURL}"); } writeFile($tempFilename, $igcFileStr); list($res, $flightID) = addFlightFromFile($tempFilename, 0, $userIDstr, $argArray); if ($res != 1) { return array(-128, "Problem: " . getAddFlightErrMsg($res, $flightID)); } return array(1, "Flight *pulled* OK with local ID {$flightID}"); } else { // if ( ( $e['action']==1 && $sync_mode & SYNC_INSERT_FLIGHT_LINK ) || $e['action']==2 ){ // inserting in LINK / LOCAL mode or updates - NOT reproccess if ($e['action'] == 1) { $extFlight = new flight(); // get igc if required if ($sync_mode & SYNC_INSERT_FLIGHT_LOCAL) { echo " Geting IGC file : "; if (!$e['tmpDir']) { $e['tmpDir'] = '/tmp'; } $igcFileTmp = $e['tmpDir'] . '/' . $actionData['flight']['id'] . '.igc'; if (!is_file($igcFileTmp)) { echo "igc file: {$igcFileURL}<BR>\n"; echo "tmpfile: {$igcFileTmp}<BR>\n"; echo "NOT in zip -> will fetch ..."; if (!($igcFileStr = fetchURL($igcFileURL, 20))) { return array(0, "logReplicator::processEntry() : Cannot Fetch {$igcFileURL}"); } writeFile($igcFileTmp, $igcFileStr); } else { echo "IN zip -> will use that ..."; } } } else { $extFlight = new flight(); $extFlight->getFlightFromDB($flightIDlocal, 0); } $igcFilename = $actionData['flight']['filename']; $igcFileURL = $actionData['flight']['linkIGC']; if ($CONF['servers']['list'][$actionData['flight']['serverID']]['exclude_from_list']) { $extFlight->excludeFrom |= 3; } if ($CONF['servers']['list'][$actionData['flight']['serverID']]['exclude_from_league']) { $extFlight->excludeFrom |= 2; } foreach ($argArray as $fieldName => $fieldValue) { // if the flight is already present // we must tkae care to honor ONLY // the 1st bit of 'private' , the others are used locally !! if ($fieldName == 'private') { if ($fieldValue & 0x1) { $fieldValue = $extFlight->private | 0x1; } else { if ($fieldValue & 0x4) { // visible to friends $fieldValue = $extFlight->private | 0x4; } else { $fieldValue = $extFlight->private & 0xfa; } } } $extFlight->{$fieldName} = $fieldValue; } // echo " gliderBrandID : $extFlight->gliderBrandID #<BR>"; $extFlight->takeoffID = $nearestTakeoffID; $extFlight->takeoffVinicity = $nearestDistance; $extFlight->landingID = $nearestLandingID; $extFlight->landingVinicity = $nearestLandingDistance; // no userid will be assgined to this flight since it will not be inserted locally // so userID= userServerID; // $extFlight->userID=$extFlight->originalUserID; // now we take care of mapping between users $extFlight->userID = $effectiveUserID; $extFlight->userServerID = $effectiveServerID; $extFlight->dateAdded = $actionData['flight']['dateAdded']; $extFlight->DATE = $actionData['flight']['time']['date']; $extFlight->timezone = $actionData['flight']['time']['Timezone'] + 0; $extFlight->START_TIME = $actionData['flight']['time']['StartTime'] + 0; $extFlight->DURATION = $actionData['flight']['time']['Duration'] + 0; $extFlight->END_TIME = $extFlight->START_TIME + $extFlight->DURATION; $extFlight->forceBounds = $actionData['flight']['bounds']['forceBounds'] + 0; $extFlight->firstLon = $actionData['flight']['bounds']['firstLon'] + 0; $extFlight->firstLat = $actionData['flight']['bounds']['firstLat'] + 0; $extFlight->firstPointTM = $actionData['flight']['bounds']['firstTM'] + 0; $extFlight->lastLon = $actionData['flight']['bounds']['lastLon'] + 0; $extFlight->lastLat = $actionData['flight']['bounds']['lastLat'] + 0; $extFlight->lastPointTM = $actionData['flight']['bounds']['lastTM'] + 0; $firstPoint = new gpsPoint(); $firstPoint->setLon($actionData['flight']['bounds']['firstLon']); $firstPoint->setLat($actionData['flight']['bounds']['firstLat']); $firstPoint->gpsTime = $actionData['flight']['bounds']['firstTM'] % 86400; $lastPoint = new gpsPoint(); $lastPoint->setLon($actionData['flight']['bounds']['lastLon']); $lastPoint->setLat($actionData['flight']['bounds']['lastLat']); $lastPoint->gpsTime = $actionData['flight']['bounds']['lastTM'] % 86400; // $extFlight->FIRST_POINT=$firstPoint->to_IGC_Record(); // $extFlight->LAST_POINT=$lastPoint->to_IGC_Record(); // not used!! /* if ( is_array($actionData['flight']['turnpoints']) ) { foreach ($actionData['flight']['turnpoints'] as $i=>$tp){ $tpNum=$tp['id']; $tpPoint=new gpsPoint(); $tpPoint->setLon($tp['lon']); $tpPoint->setLat($tp['lat']); $varname="turnpoint$tpNum" ; $extFlight->$varname = $tpPoint->getLatMin().' '.$tpPoint->getLonMin() ; } } */ if ($getValidationData) { $extFlight->validated = $actionData['flight']['validation']['validated']; $extFlight->grecord = $actionData['flight']['validation']['grecord']; $extFlight->hash = $actionData['flight']['validation']['hash']; $extFlight->validationMessage = $actionData['flight']['validation']['validationMessage']; $extFlight->airspaceCheck = $actionData['flight']['validation']['airspaceCheck'] + 0; $extFlight->airspaceCheckFinal = $actionData['flight']['validation']['airspaceCheckFinal'] + 0; $extFlight->airspaceCheckMsg = $actionData['flight']['validation']['airspaceCheckMsg']; } $getScoreDataExtra = 0; $getScoreDataExtraMissing = 0; if ($getScoreData) { // we should get these from the [score] section also $extFlight->BEST_FLIGHT_TYPE = $actionData['flight']['stats']['FlightType']; $extFlight->FLIGHT_KM = $actionData['flight']['stats']['XCdistance']; $extFlight->FLIGHT_POINTS = $actionData['flight']['stats']['XCscore']; $extFlight->LINEAR_DISTANCE = $actionData['flight']['stats']['StraightDistance'] + 0; $extFlight->MAX_LINEAR_DISTANCE = $actionData['flight']['stats']['MaxStraightDistance'] + 0; $extFlight->MEAN_SPEED = $actionData['flight']['stats']['MeanGliderSpeed'] + 0; $extFlight->MAX_SPEED = $actionData['flight']['stats']['MaxSpeed'] + 0; $extFlight->MAX_VARIO = $actionData['flight']['stats']['MaxVario'] + 0; $extFlight->MIN_VARIO = $actionData['flight']['stats']['MinVario'] + 0; $extFlight->MAX_ALT = $actionData['flight']['stats']['MaxAltASL'] + 0; $extFlight->MIN_ALT = $actionData['flight']['stats']['MinAltASL'] + 0; $extFlight->TAKEOFF_ALT = $actionData['flight']['stats']['TakeoffAlt'] + 0; if (is_array($actionData['flight']['score']) && count($actionData['flight']['score']) > 0) { require_once dirname(__FILE__) . '/CL_flightScore.php'; $flightScore = new flightScore($extFlight->flightID); // we have the score array in $actionData['score'] $sArr =& $actionData['flight']['score']; $flightScore->fromSyncArray($sArr); $extFlight->flightScore = $flightScore; $getScoreDataExtra = 1; $extFlight->BEST_FLIGHT_TYPE = $flightScore->bestScoreType; $extFlight->FLIGHT_KM = $flightScore->bestDistance * 1000; $extFlight->FLIGHT_POINTS = $flightScore->bestScore; // check for missing linear distance if ($extFlight->LINEAR_DISTANCE == 0 && $extFlight->MAX_LINEAR_DISTANCE > 0) { // echo "compute MAxtakeoffDistance"; $extFlight->LINEAR_DISTANCE = $flightScore->computeMaxTakeoffDistance($firstPoint); } //put also in scores table, the flight is sure to be present in flights table if ($e['action'] == 2) { // update so we already know the flightID $flightScore->putToDB(1, 1); } } else { $getScoreDataExtraMissing = 1; } } // we also have [gliderBrand] => GRADIENT $extFlight->checkGliderBrand($actionData['flight']['info']['gliderBrand']); if ($e['action'] == 1) { if ($sync_mode & SYNC_INSERT_FLIGHT_LOCAL) { $tmpPilot = new pilot($effectiveServerID, $effectiveUserID); $tmpPilot->createDirs(); $extFlight->filename = $igcFilename; $extFlight->checkDirs(); if ($DBGlvl > 0) { echo "Moving file into place: " . $extFlight->getIGCFilename() . "<BR>"; } while (is_file($extFlight->getIGCFilename())) { if ($DBGlvl > 0) { echo "Same filename is already present<BR>"; } $extFlight->filename = '_' . $extFlight->filename; } @rename($igcFileTmp, $extFlight->getIGCFilename()); $opString = '*inserted*'; } else { $opString = '*linked*'; } // insert flight $extFlight->putFlightToDB(0); // take care of sme flights (hide /unhide) $extFlight->hideSameFlights(); if ($getScoreData && $getScoreDataExtra) { $flightScore->flightID = $extFlight->flightID; $flightScore->putToDB(1, 1); } else { if ($getScoreDataExtraMissing && $CONF['servers']['list'][$actionData['flight']['serverID']]['rescore_if_missing'] && $sync_mode & SYNC_INSERT_FLIGHT_LOCAL) { echo " [Re-score] "; $extFlight->computeScore(); } } return array(1, "Flight {$opString} OK {$addFlightNote} with local ID {$extFlight->flightID}"); } else { //update flight $extFlight->putFlightToDB(1); if ($getScoreDataExtraMissing && $CONF['servers']['list'][$actionData['flight']['serverID']]['rescore_if_missing'] && $sync_mode & SYNC_INSERT_FLIGHT_LOCAL) { echo " [Re-score] "; require_once dirname(__FILE__) . '/CL_flightScore.php'; $flightScore = new flightScore($extFlight->flightID); $flightScore->getFromDB(); if ($flightScore->gotValues) { echo "[not needed] "; } else { $extFlight->computeScore(); } } return array(1, "Flight with local ID {$flightIDlocal} UPDATED OK"); } } return array(0, "Unknown error, we should have returned by this far..."); } // if type==1 }
function flights_submit($args) { global $opMode, $CONF; //global $DBGlvl,$DEBUG_OUTPUT; $DBGlvl=255; require_once dirname(__FILE__) . "/FN_flight.php"; $username = $args[0]; $passwd = $args[1]; $igcURL = $args[2]; $igcFilename = $args[3]; $private = $args[4]; $cat = $args[5]; $linkURL = $args[6]; $comments = $args[7]; $glider = $args[8]; $clientID = $args[9]; $clientPass = $args[10]; global $db, $CONF; $allowUploadWithoutPassword = 0; if ($clientID) { if (clientCheck($clientID, $clientPass)) { if ($CONF['servers']['list'][$clientID]['allowUploadWithoutPassword']) { $allowUploadWithoutPassword = 1; } } else { return new IXR_Error(200, "Client {$clientID} authentication failed"); } } if ($CONF['userdb']['password_users_table']) { $dbTable = $CONF['userdb']['password_users_table']; } else { } $sql = "SELECT " . $CONF['userdb']['user_id_field'] . ", " . $CONF['userdb']['username_field'] . ", " . $CONF['userdb']['password_field'] . " FROM " . $CONF['userdb']['users_table'] . " WHERE LOWER(" . $CONF['userdb']['username_field'] . ") = '" . strtolower($username) . "'"; if (!($result = $db->sql_query($sql))) { return new IXR_Error(200, "Error in obtaining userdata for {$username}"); } $passwordHashed = ''; if ($CONF['userdb']['password_users_table']) { $sql2 = "SELECT " . $CONF['userdb']['password_username_field'] . ", " . $CONF['userdb']['password_password_field'] . " FROM " . $CONF['userdb']['password_users_table'] . " WHERE LOWER(" . $CONF['userdb']['password_username_field'] . ") = '" . strtolower($username) . "'"; if (!($result2 = $db->sql_query($sql2))) { return new IXR_Error(200, "Error in obtaining userdata2 for {$username}"); } if ($row2 = $db->sql_fetchrow($result2)) { $passwordHashed = $row2[$CONF['userdb']['password_password_field']]; } } //echo "$passwordHashed %"; $passwdProblems = 0; if ($row = $db->sql_fetchrow($result)) { if (!$passwordHashed) { $passwordHashed = $row[$CONF['userdb']['password_field']]; } if (function_exists('leonardo_check_password')) { // phpbb3 has custom way of hashing passwords if (!leonardo_check_password($passwd, $passwordHashed)) { $passwdProblems = 1; } } else { if (md5($passwd) != $passwordHashed) { $passwdProblems = 1; } } } else { return new IXR_Error(200, "Error in obtaining userdata for {$username}"); } // check if the client is authrorized to by pass passord so that it can mass upload flights if ($passwdProblems && !$allowUploadWithoutPassword) { return new IXR_Error(201, "Error in password for {$username}"); } $userID = $row['user_id']; //$filename = dirname(__FILE__)."/flights/".$igcFilename; $filename = LEONARDO_ABS_PATH . '/' . $CONF['paths']['tmpigc'] . '/' . $igcFilename; if (!($handle = fopen($filename, 'w'))) { return new IXR_Error(202, "Cannot open file ({$filename})"); } // $igcURL=html_entity_decode($igcURL); $igcURL = rawurldecode($igcURL); // return new IXR_Error(203, "Cannot get igcURL ($igcURL)"); $igcStr = fetchURL($igcURL, 10); // timeout 10 secs if (!$igcStr) { return new IXR_Error(203, "Cannot get igcURL ({$igcURL})"); } if (!fwrite($handle, $igcStr)) { return new IXR_Error(204, "Cannot write to file ({$filename})"); } @fclose($handle); error_reporting(0); ob_start(); list($errCode, $flightID) = addFlightFromFile($filename, 0, $userID, array('private' => $private, 'cat' => $cat, 'category' => 1, 'linkURL' => $linkURL, 'comments' => $comments, 'glider' => $glider)); $errorBuffer = ob_get_contents(); ob_end_clean(); $flightID += 0; if ($errCode == 1 && $flightID != 0) { // all ok // return new IXR_Error(500,htmlspecialchars("flightID:$flightID^errCode:$errCode^" )); return $flightID; } else { if ($errCode == 1 && $flightID == 0) { $errStr = "The IGC file did not contain a valid flight"; //.urlencode($DEBUG_OUTPUT); } else { $errStr = htmlspecialchars(getAddFlightErrMsg($errCode, $flightID)); } // $errStr.=htmlspecialchars("#----------\n".$errorBuffer); return new IXR_Error(500, $errStr); } }
if( ! is_dir("$dir/$entryname") && ($entryname != "." and $entryname!="..") && ( strtolower(substr($entryname,-4))==".igc" || strtolower(substr($entryname,-4))==".olc" ) ) { $igcFiles++; $igcFilename=$dir."/".$entryname; echo _ADDING_FILE." ".$entryname."<br>\n"; flush2Browser(); flush2Browser(); sleep(1); $alreadyValidatedInPage=0; list($res,$flightID)=addFlightFromFile($igcFilename,0,$flights_user_id, array('gliderBrandID'=>$gliderBrandID, 'cat'=>$gliderCat, 'glider'=>$glider,'category'=>$category,'allowDuplicates'=>1 , 'gliderCertCategory'=>$gliderCertCategory, 'startType'=>$_POST["startType"]+0, 'NACclubID'=>$NACclubID,'NACid'=>$NACid, 'commentsEnabled'=>($_POST['commentsEnabled']+0) ) ) ; if ($res==1) { echo _ADDED_SUCESSFULLY."<BR>"; $igcFilesSubmited++; } else { $errMsg=getAddFlightErrMsg($res,$flightID); echo _PROBLEM.": ".$errMsg."<br>"; } echo "<hr>"; flush2Browser(); // flush2Browser();
$XML_str .= "<flightID>0</flightID>\n"; $XML_str .= "</result>"; send_XML($XML_str); exit; } // Write $somecontent to our opened file. if (!fwrite($handle, $FL_FORM["igc"])) { $XML_str .= "<returnCode>-23</returnCode>\n"; $XML_str .= "<returnCodeDescription>Cannot write to file ({$filename})</returnCodeDescription>\n"; $XML_str .= "<flightID>0</flightID>\n"; $XML_str .= "</result>"; send_XML($XML_str); exit; } fclose($handle); list($errCode, $flightID) = addFlightFromFile($filename, 0, $FL_FORM["userID"], array('private' => $FL_FORM["private"], 'cat' => $FL_FORM["cat"], 'linkURL' => $FL_FORM["linkURL"], 'comments' => $FL_FORM["comments"])); $XML_str .= "<returnCode>{$errCode}</returnCode>\n"; $XML_str .= "<returnCodeDescription>" . htmlspecialchars(getAddFlightErrMsg($errCode, $flightID)) . "</returnCodeDescription>\n"; $XML_str .= "<flightID>{$flightID}</flightID>\n"; $XML_str .= "</result>\n"; send_XML($XML_str); } } } } } } } } function send_XML($XML_str) {
else if ($klasse==3) { $cat=1 ; $category=2; } // pg open else if ($klasse==4) { $cat=1 ; $category=1; } // pg sport else if ($klasse==5) { $cat=1 ; $category=3; } // pg tandem else if ($klasse==6) { $cat=1 ; $category=4; } // pg fun cup $gliderCertCategory=$_POST['gliderCertCategory']+0; $glider=$_POST['glider']; $gliderBrandID=$_POST['gliderBrandID']; // log_msg("category=$category,cat=$cat,gliderCertCategory=$gliderCertCategory\r\n"); list($errCode,$flightID)=addFlightFromFile($filename,0,$userID, array('category'=>$category, 'cat'=>$cat, 'glider'=>$glider, 'gliderBrandID'=>$gliderBrandID, // 'allowDuplicates'=>($CONF['servers']['list'][$CONF_server_id]['allow_duplicate_flights']+0) 'allowDuplicates'=>1 , 'gliderCertCategory'=>$gliderCertCategory, ) ) ; if ($errCode!=1) { echo "problem<br>"; echo getAddFlightErrMsg($errCode,$flightID); } else { // echo "response=$flightID<br>"; echo _YOUR_FLIGHT_HAS_BEEN_SUBMITTED."<br><br><a href='http://".$_SERVER['SERVER_NAME']. getLeonardoLink(array('op'=>'show_flight','flightID'=>$flightID)). "'>"._PRESS_HERE_TO_VIEW_IT.'</a>'; }
$linkURL=$_POST["linkURL"]; if ($CONF['NAC']['clubPerFlight'] ) { $NACclubID=$_POST['NACclubID']+0; $NACid=$_POST['NACid']+0; } else { $NACclubID=-1; $NACid=-1; } list($result,$flightID)=addFlightFromFile($filename,true,$flights_user_id, array('gliderBrandID'=>$gliderBrandID,'private'=>$is_private, '$linkURL'=>$linkURL,'comments'=>$comments,'glider'=>$glider,'category'=>$category,'cat'=>$gliderCat , // 'allowDuplicates'=>($CONF['servers']['list'][$CONF_server_id]['allow_duplicate_flights']+0) , 'allowDuplicates'=>1, // we always allow duplicates when locally submitted. (will take over eternal flights) 'gliderCertCategory'=>$gliderCertCategory, 'startType'=>$_POST["startType"]+0, 'NACclubID'=>$NACclubID,'NACid'=>$NACid, 'commentsEnabled'=>($_POST['commentsEnabled']+0) ) ) ; } if ( $result !=1 ) { // we must log the failure for debuging purposes @unlink($filename); $errMsg=getAddFlightErrMsg($result,$flightID); addFlightError($errMsg); } else { $flight=new flight();
if ($klasse == 6) { $cat = 1; $category = 4; } } } } } } } // pg fun cup $gliderCertCategory = $_POST['gliderCertCategory'] + 0; $glider = $_POST['glider']; $gliderBrandID = $_POST['gliderBrandID']; // log_msg("category=$category,cat=$cat,gliderCertCategory=$gliderCertCategory\r\n"); list($errCode, $flightID) = addFlightFromFile($filename, 0, $userID, array('category' => $category, 'cat' => $cat, 'glider' => $glider, 'gliderBrandID' => $gliderBrandID, 'allowDuplicates' => 1, 'gliderCertCategory' => $gliderCertCategory)); if ($errCode != 1) { echo "problem<br>"; echo getAddFlightErrMsg($errCode, $flightID); } else { // echo "response=$flightID<br>"; $flight = new flight(); $flight->getFlightFromDB($flightID); echo _YOUR_FLIGHT_HAS_BEEN_SUBMITTED . "<br><br><a href='http://" . $_SERVER['SERVER_NAME'] . getLeonardoLink(array('op' => 'show_flight', 'flightID' => $flightID)) . "'>" . _PRESS_HERE_TO_VIEW_IT . '</a>'; } // DEBUG_END(); echo "</body></html>"; function log_msg($text) { global $client; $filename = dirname(__FILE__) . '/flight_submit_log.txt';