-
Posts
87 -
Joined
-
Last visited
Profile Information
-
Gender
Male
dale0404's Achievements
Newbie (1/14)
1
Reputation
-
Is there any update for this as it looks bloody good!
-
Did you get this sorted out mate?
-
After work getting in the way of things Robin Hood Airlines is back in business!!
-
Could someone please pm me the stylesheet of this skin. I messed around with it a few weeks back and I cant quite remember what I changed!! Cheers Dale
-
Made me chuckle. The link is at the bottom of the page, so what is the damn problem with it?
-
Lose the pickle dude, go for a Guerkin!
-
Just curious, can you post the code I used and the code you used? I am sure I copied and pasted correctly!
-
Got 7 days to go mate, then I am all yours!
-
I am using fivedev hosting and it still isnt working. Code: <?php /** * phpVMS - Virtual Airline Administration Software * Copyright (c) 2008 Nabeel Shahzad * For more information, visit www.phpvms.net * Forums: http://www.phpvms.net/forum * Documentation: http://www.phpvms.net/docs * * phpVMS is licenced under the following license: * Creative Commons Attribution Non-commercial Share Alike (by-nc-sa) * View license.txt in the root, or visit http://creativecommons.org/licenses/by-nc-sa/3.0/ * * @author Nabeel Shahzad * @copyright Copyright (c) 2008, Nabeel Shahzad * @link http://www.phpvms.net * @license http://creativecommons.org/licenses/by-nc-sa/3.0/ */ class PilotData extends CodonData { public static $pilot_data = array(); /** * Find any pilots based on the parameters passed in * * @param array $params All the parameters * @param int $limit Number of results to return * @param int $start Record to start from * @return array Returns all the pilots requested * */ public static function findPilots($params, $limit='', $start = '') { $sql = "SELECT p.*, r.`rankimage`, r.`payrate` FROM ".TABLE_PREFIX."pilots p LEFT JOIN ".TABLE_PREFIX."ranks r ON r.rank=p.rank "; /* Build the select "WHERE" based on the columns passed, this is a generic function */ $sql .= DB::build_where($params); // Order matters if(Config::Get('PILOT_ORDER_BY') != '') { $sql .= ' ORDER BY '.Config::Get('PILOT_ORDER_BY'); } if(strlen($limit) != 0) { $sql .= ' LIMIT '.$limit; } if(strlen($start) != 0) { $sql .= ' OFFSET '. $start; } $ret = DB::get_results($sql); return $ret; } /** * Get all the pilots, or the pilots who's last names start * with the letter */ public static function getAllPilots($letter='') { $params = array(); if(!empty($letter)) { $params['lastname'] = $letter.'%'; } return self::findPilots($params); } /** * Get all the detailed pilot's information */ public static function getAllPilotsDetailed($limit=20, $start='') { return self::findPilots(array(), $limit, $start); } /** * Get a pilot's avatar */ public static function getPilotAvatar($pilotid) { if(is_numeric($pilotid)) { $pilot = self::getPilotData($pilotid); $last_location = PIREPData::getLastReports($pilotid, 1, PIREP_ACCEPTED); $pilotid = self::getPilotCode($pilot->code, $pilot->pilotid); } $link = AVATAR_PATH.'/'.$pilotid.'.png'; if(!file_exists(SITE_ROOT.'/'.$link)) { return SITE_URL.'/lib/images/noavatar.png'; } return SITE_URL.'/'.$link; } /** * Get all the pilots on a certain hub */ public static function getAllPilotsByHub($hub) { return self::findPilots(array('p.hub'=>$hub)); } /** * Return the pilot's code (ie DVA1031), using * the code and their DB ID */ public static function getPilotCode($code, $pilotid) { # Make sure values are entered if(Config::Get('PILOTID_LENGTH') == '') Config::Set('PILOTID_LENGTH', 4); if(Config::Get('PILOTID_OFFSET') == '') Config::Set('PILOTID_OFFSET', 0); $pilotid = $pilotid + Config::Get('PILOTID_OFFSET'); return $code . str_pad($pilotid, Config::Get('PILOTID_LENGTH'), '0', STR_PAD_LEFT); } /** * The the basic pilot information * Quasi 'cached' in case it's called multiple times * for the same pilot in one script */ public static function getPilotData($pilotid) { $pilot = self::findPilots(array('p.pilotid' => $pilotid), 1); if(!$pilot) { return false; } return $pilot[0]; } /** * Get a pilot's information by email */ public static function getPilotByEmail($email) { $pilot = self::findPilots(array('p.email'=>$email)); if(!$pilot) { return false; } return $pilot[0]; } /** * Parse a pilot ID from a passed ID * * @param int $pilotid Pass the ID string * @return int Returns the integer database ID * */ public static function getProperPilotID($pilotid) { return self::parsePilotID($pilotid); } /** * Parse a pilot ID from a passed ID * * @param int $pilotid Pass the ID string * @return int Returns the integer database ID * */ public static function parsePilotID($pilotid) { if(!is_numeric($pilotid)) { $airlines = OperationsData::getAllAirlines(); foreach($airlines as $a) { $a->code = strtoupper($a->code); if(strpos($pilotid, $a->code) === false) { continue; } $pilotid = intval(str_ireplace($a->code, '', $pilotid)); $pilotid = $pilotid - Config::Get('PILOTID_OFFSET'); } } return $pilotid; } /** * Get the list of all the pending pilots */ public static function getPendingPilots($count='') { $params = array( 'p.confirmed' => PILOT_PENDING ); return self::findPilots($params, $count); } public static function getLatestPilots($count=10) { $sql = 'SELECT * FROM '.TABLE_PREFIX.'pilots ORDER BY `pilotid` DESC LIMIT '.$count; return DB::get_results($sql); } /** * Change a pilot's name. This is separate because this is an * admin-only operation (strictly speaking), and isn't included * in a normal change of a pilot's profile (whereas SaveProfile * only changes minute information */ public static function changeName($pilotid, $firstname, $lastname) { # Non-blank if(empty($pilotid) || empty($firstname) || empty($lastname)) { return false; } $params = array( 'firstname' => $firstname, 'lastname' => $lastname, ); return self::updateProfile($pilotid, $params); } public static function changePilotID($old_pilotid, $new_pilotid) { $pilot_exists = self::getPilotData($new_pilotid); if(is_object($pilot_exists)) { return false; } DB::query('SET foreign_key_checks = 0;'); // List of all the tables which need to update $table_list = array( 'groupmembers', 'pilots', 'adminlog', 'awardsgranted', 'acarsdata', 'sessions', 'pireps', 'pirepcomments', 'fieldvalues', 'bids', ); foreach($table_list as $table) { $sql = 'UPDATE `'.TABLE_PREFIX.$table.'` SET `pilotid`='.$new_pilotid.' WHERE `pilotid`='.$old_pilotid; DB::query($sql); //DB::debug(); } return true; } public static function changePilotRank($pilotid, $rankid) { $rank = RanksData::getRankInfo($rankid); $rank_level = RanksData::getRankLevel($rankid); if(!$rank) { return false; } $data = array( 'rankid' => $rank->rankid, 'rank' => $rank->rank, 'ranklevel' => $rank_level, ); return self::updateProfile($pilotid, $data); } /** * Save any changes to a pilot's profile, calls updateProfile() * * @deprecated Use updateProfile() instead!! * */ /*public static function saveProfile($params) { $pilotid = $params['pilotid']; unset($params['pilotid']); return self::updateProfile($pilotid, $params); }*/ /** * Update a pilot, $params is an array of column_name=>value * * @param mixed $pilotid This is a description * @param mixed $params This is a description * @return mixed This is the return value description * */ public static function updateProfile($pilotid, $params) { /*$params = array( 'pilotid' => '', 'code' => '', 'email' => '', 'location' => '', 'hub' => '', 'bgimage' => '', 'retired' => false, );*/ if(!is_array($params)) { return false; } /* Cleanup any specific parameters */ if(isset($params['location'])) { $params['location'] = strtoupper($params['location']); } if(isset($params['retired'])) { if(is_bool($params['retired'])) { //$params['retired'] = intval($params['retired']); # The above doesn't work for false =\ if($params['retired'] == true) $params['retired'] = 1; else $params['retired'] = 0; } } if(isset($params['pilotid'])) { unset($params['pilotid']); } $sql = "UPDATE ".TABLE_PREFIX."pilots SET "; $sql .= DB::build_update($params); $sql .= " WHERE `pilotid`={$pilotid}"; $res = DB::query($sql); if(DB::errno() != 0) { return false; } return true; } public static function updatePilotRankLevels() { $all_pilots = self::findPilots(array()); foreach($all_pilots as $pilot) { $rank_level = RanksData::getRankLevel($pilot->rankid); self::updateProfile($pilot->pilotid, array('ranklevel'=>$rank_level)); } } public static function setPilotRetired($pilotid, $retired) { if($retired === true || $retired == '1') { $retired = 1; } else { $retired = 0; } return self::updateProfile($pilotid, array('retired'=>$retired)); } /** * Returns an array with a list of background images available * * @return array The background images list * */ public static function getBackgroundImages() { $list = array(); $files = scandir(SITE_ROOT.'/lib/signatures/background'); foreach($files as $file) { if($file == '.' || $file == '..') continue; if(strstr($file, '.png') !== false) $list[] = $file; } return $list; } /** * Save avatars */ public static function saveAvatar($code, $pilotid, $_FILES) { # Check the proper file size # Ignored for now since there is a resize /*if ($_FILES['avatar']['size'] > Config::Get('AVATAR_FILE_SIZE')) { return false; }*/ if(!$_FILES['avatar']['type']) return false; # Create the image so we can convert it to PNG if($_FILES['avatar']['type'] == 'image/gif') { $img = imagecreatefromgif($_FILES['file']['tmp_name']); } elseif($_FILES['avatar']['type'] == 'image/jpeg' || $_FILES['avatar']['type'] == 'image/pjpeg') { $img = imagecreatefromjpeg($_FILES['avatar']['tmp_name']); } elseif($_FILES['avatar']['type'] == 'image/png') { $img = imagecreatefrompng($_FILES['avatar']['tmp_name']); } # Resize it $height = imagesy($img); $width = imagesx($img); $new_width = Config::Get('AVATAR_MAX_WIDTH'); $new_height = floor( $height * ( Config::Get('AVATAR_MAX_HEIGHT') / $width ) ); $avatarimg = imagecreatetruecolor($new_width, $new_height); imagecopyresized($avatarimg, $img, 0,0,0,0,$new_width, $new_height, $width, $height); # Output the file, to /lib/avatar/pilotcode.png $pilotCode = self::getPilotCode($code, $pilotid); imagepng($avatarimg, SITE_ROOT.AVATAR_PATH.'/'.$pilotCode.'.png'); imagedestroy($img); } /** * Accept the pilot (allow them into the system) */ public static function AcceptPilot($pilotid) { return self::updateProfile($pilotid, array('confirmed'=>PILOT_ACCEPTED, 'retired'=>'0')); } /** * Reject a pilot */ public static function RejectPilot($pilotid) { return self::DeletePilot($pilotid); } /** * Completely delete a pilot * * @param int $pilotid Pilot ID * @return mixed This is the return value description * */ public static function deletePilot($pilotid) { $sql = array(); unset(self::$pilot_data[$pilotid]); $sql[] = 'DELETE FROM '.TABLE_PREFIX.'acarsdata WHERE pilotid='.$pilotid; $sql[] = 'DELETE FROM '.TABLE_PREFIX.'bids WHERE pilotid='.$pilotid; $sql[] = 'DELETE FROM '.TABLE_PREFIX.'pireps WHERE pilotid='.$pilotid; $sql[] = 'DELETE FROM '.TABLE_PREFIX.'pilots WHERE pilotid='.$pilotid; # These SHOULD delete on cascade, but incase they don't $sql[] = 'DELETE FROM '.TABLE_PREFIX.'fieldvalues WHERE pilotid='.$pilotid; $sql[] = 'DELETE FROM '.TABLE_PREFIX.'groupmembers WHERE pilotid='.$pilotid; $sql[] = 'DELETE FROM '.TABLE_PREFIX.'pirepcomments WHERE pilotid='.$pilotid; foreach($sql as $query) { $res = DB::query($query); } if(DB::errno() != 0) return false; return true; } /** * Update the login time */ public static function updateLogin($pilotid) { return self::updateProfile($pilotid, array( 'lastlogin'=>'NOW()', 'lastip' => $_SERVER['REMOTE_ADDR'], ) ); } public static function getPilotHours($pilotid) { $sql = 'SELECT `flighttime` FROM '.TABLE_PREFIX.'pireps WHERE `accepted`='.PIREP_ACCEPTED.' AND `pilotid`='.$pilotid; $pireps = DB::get_results($sql); if(!$pireps) return '0.0'; $total = 0; foreach($pireps as $report) { $total = Util::AddTime($total, $report->flighttime); } return $total; } /** * Get the total number of hours for a pilot, add them up * * @param int $pilotid The pilot ID * @return int Total hours for pilot * */ public static function updateFlightHours($pilotid) { $total = self::getPilotHours($pilotid); $ret = self::updateProfile($pilotid, array('totalhours'=>$total)); return $total; } /** * Update a pilot's flight data, ie after a pirep * * @param int $pilotid Pilot ID * @param int $flighttime Number of hours.minutes to increment by * @param int $numflights Number of flights (default 1) * @return bool Success * */ public static function updateFlightData($pilotid, $flighttime, $numflights=1) { # Update the flighttime $pilotdata = PilotData::getPilotData($pilotid); $flighttime = Util::AddTime($pilotdata->totalhours, $flighttime); if($numflights == '') $numflights = 1; $params = array( 'totalhours' => $flighttime, 'totalflights' => ($pilotdata->totalflights + $numflights), ); return self::updateProfile($pilotid, $params); } public static function updatePilotStats($pilotid) { $pireps = PIREPData::findPIREPS(array('p.pilotid'=>$pilotid)); $totalpireps = 0; $totalhours = 0; if(is_array($pireps)) { foreach($pireps as $p) { if($p->accepted != PIREP_ACCEPTED) { continue; } $totalpireps++; $totalhours = Util::AddTime($p->flighttime, $totalhours); } } $params = array( 'totalhours'=>$totalhours, 'totalflights'=>$totalpireps, ); return self::updateProfile($pilotid, $params); } /** * Update the last PIREP date for a pilot * * @param int $pilotid Pilot ID * @return bool Success * */ public static function updateLastPIREPDate($pilotid) { return self::updateProfile($pilotid, array('lastpirep'=>'NOW()')); } /** * Don't update the pilot's flight data, but just replace it * with the values given * * $data = array( 'pilotid' => '', 'flighttime' => '', 'numflights' => '', 'totalpay' => '', 'transferhours' => '', ); * * @param int $pilotid Pilot ID * @param int $flighttime Number of flight hours * @param int $numflights Number of flights * @param int $totalpay The total amount of money they have * @return bool Success * */ public static function replaceFlightData($params) { /*$data = array( 'pilotid' => '', 'flighttime' => '', 'numflights' => '', 'totalpay' => '', 'transferhours' => '', );*/ $pilotid = $data['pilotid']; unset($data['pilotid']); return self::updateProfile($pilotid, $params); } public static function resetPilotPay($pilotid) { $total = 0; self::updateProfile($pilotid, array('totalpay'=>0)); $sql = "SELECT `pirepid`, `flighttime`, `pilotpay` FROM ".TABLE_PREFIX."pireps WHERE `pilotid`={$pilotid}"; $results = DB::get_results($sql); if(!$results) { return $total; } foreach($results as $row) { $payupdate = self::getPilotPay($row->flighttime, $row->pilotpay); $total += $payupdate; } self::updateProfile($pilotid, array('totalpay'=>$total)); return $total; } /** * Update a pilot's pay. Pass the pilot ID, and the number of * hours they are being paid for * * @param int $pilotid The pilot ID * @param int $flighthours Number of hours to pay the pilot for * @return bool Success * */ public static function updatePilotPay($pilotid, $flighthours) { $sql = 'SELECT payrate FROM '.TABLE_PREFIX.'ranks r, '.TABLE_PREFIX.'pilots p WHERE p.rank=r.rank AND p.pilotid='.$pilotid; $payrate = DB::get_row($sql); $payupdate = self::getPilotPay($flighthours, $payrate->payrate); $sql = 'UPDATE '.TABLE_PREFIX.'pilots SET totalpay=totalpay+'.$payupdate.' WHERE pilotid='.$pilotid; DB::query($sql); if(DB::errno() != 0) return false; return true; } /** * Get the total pay for a flight at a certain rate, * for a certain number of hours * * @param float $hours Number of hours in Hours.Minutes format * @param float $rate Hourly rate * @return float Returns the total * */ public static function getPilotPay($hours, $rate) { /* Hours are in hours.minutes convert to minutes */ $peices = explode('.', $hours); $minutes = ($peices[0] * 60) + $peices[1]; $payupdate = $minutes * ($rate/60); return $payupdate; } /** * Find and set any pilots as retired * * @return mixed This is the return value description * */ public static function findRetiredPilots() { $days = Config::Get('PILOT_INACTIVE_TIME'); if($days == '') $days = 90; $sql = "SELECT * FROM ".TABLE_PREFIX."pilots WHERE DATE_SUB(CURDATE(), INTERVAL {$days} DAY) > `lastlogin` AND `totalflights` = 0 AND `lastlogin` != 0 AND `retired` = 0"; $results = DB::get_results($sql); $sql = "SELECT * FROM ".TABLE_PREFIX."pilots WHERE DATE_SUB(CURDATE(), INTERVAL {$days} DAY) > `lastpirep` AND `totalflights` > 0 AND `lastpirep` != 0 AND `retired` = 0"; $results2 = DB::get_results($sql); // messy but two queries, merge them both if(!is_array($results) && !is_array($results2)) { return false; } else { if(is_array($results) && is_array($results2)) { $results = array_merge($results, $results2); } if(!is_array($results) && is_array($results2)) { $results = $results2; } } if(!$results) { return false; } foreach($results as $row) { // Set them retired self::updateProfile($row->pilotid, array('retired'=>1)); Template::Set('pilot', $row); $pilot_retired_template = Template::Get('email_pilot_retired.tpl', true, true, true); Util::SendEmail($row->email, Lang::get('email.pilot.retired.subject'), $pilot_retired_template); } } /** * This saves all of the custom fields attributed to pilot * Pass an associated array (fieldname NOT title) to value * * @param int $pilotid Pilot ID * @param array $list fieldname=>fieldvalue associated array * @return bool Success value * */ public static function SaveFields($pilotid, $list) { $allfields = RegistrationData::getCustomFields(true); if(!$allfields) return true; foreach($allfields as $field) { $sql = 'SELECT id FROM '.TABLE_PREFIX.'fieldvalues WHERE fieldid='.$field->fieldid.' AND pilotid='.$pilotid; $res = DB::get_row($sql); $fieldname =str_replace(' ', '_', $field->fieldname); if(!isset($list[$fieldname])) continue; $value = $list[$fieldname]; // if it exists if($res) { $sql = 'UPDATE '.TABLE_PREFIX.'fieldvalues SET value="'.$value.'" WHERE fieldid='.$field->fieldid.' AND pilotid='.$pilotid; } else { $sql = "INSERT INTO ".TABLE_PREFIX."fieldvalues (fieldid, pilotid, value) VALUES ($field->fieldid, $pilotid, '$value')"; } DB::query($sql); } return true; } /** * Get all of the custom fields and values for a pilot * * @param int $pilotid The pilot ID * @param bool $inclprivate TRUE to also include private fields (default false) * @return array Returns all of the fields (names and values) * */ public static function getFieldData($pilotid, $inclprivate=false) { $sql = 'SELECT f.fieldid, f.title, f.type, f.fieldname, f.value as fieldvalues, v.value, f.public FROM '.TABLE_PREFIX.'customfields f LEFT JOIN '.TABLE_PREFIX.'fieldvalues v ON f.fieldid=v.fieldid AND v.pilotid='.$pilotid; if($inclprivate == false) $sql .= ' WHERE f.public=1 '; return DB::get_results($sql); } /** * Get the value of a "custom field" for a pilot * * @param int $pilotid The pilot ID * @param string $title Full title of field, as enter "VATSIM ID" * @return string Returns the value of that field * */ public static function getFieldValue($pilotid, $title) { $sql = "SELECT f.fieldid, v.value FROM ".TABLE_PREFIX."customfields f, ".TABLE_PREFIX."fieldvalues v WHERE f.fieldid=v.fieldid AND f.title='$title' AND v.pilotid=$pilotid"; $res = DB::get_row($sql); return $res->value; } /** * Get all of the groups a pilot is a member of * * @param int $pilotid The pilot ID * @return array Groups the pilot is in (groupid and groupname) * */ public static function getPilotGroups($pilotid) { $pilotid = DB::escape($pilotid); $sql = 'SELECT g.groupid, g.name FROM ' . TABLE_PREFIX . 'groupmembers u,'.TABLE_PREFIX.'groups g WHERE u.pilotid='.$pilotid.' AND g.groupid=u.groupid'; $ret = DB::get_results($sql); return $ret; } /** * This generates the forum signature of a pilot which * can be used wherever. It's dynamic, and adjusts it's * size, etc based on the background image. * * Each image is output into the /lib/signatures directory, * and is named by the pilot code+number (ie, VMA0001.png) * * This is called whenever a PIREP is accepted by an admin, * as not to burden a server with image generation * * Also requires GD to be installed on the server * * @param int The pilot ID for which to generate a signature for * @return bool Success */ public function generateSignature($pilotid) { $pilot = self::getPilotData($pilotid); $pilotcode = self::getPilotCode($pilot->code, $pilot->pilotid); if(Config::Get('TRANSFER_HOURS_IN_RANKS') === true) { $totalhours = $pilot->totalhours + $pilot->transferhours; } else { $totalhours = $pilot->totalhours; } # Configure what we want to show on each line $output = array(); $output[] = $pilotcode.' '. $pilot->firstname.' '.$pilot->lastname; $output[] = $pilot->rank.', '.$pilot->hub; $output[] = 'Total Flights: ' . $pilot->totalflights; $output[] = 'Total Hours: ' . $totalhours; if(Config::Get('SIGNATURE_SHOW_EARNINGS') == true) { $output[] = 'Total Earnings: ' . $pilot->totalpay; $output[] = 'Last Location: ' . $last_location->arricao; } # Load up our image # Get the background image the pilot selected if(empty($pilot->bgimage)) $bgimage = SITE_ROOT.'/lib/signatures/background/background.png'; else $bgimage = SITE_ROOT.'/lib/signatures/background/'.$pilot->bgimage; if(!file_exists($bgimage)) { # Doesn't exist so use the default $bgimage = SITE_ROOT.'/lib/signatures/background/background.png'; if(!file_exists($bgimage)) { return false; } } $img = @imagecreatefrompng($bgimage); if(!$img) { $img = imagecreatetruecolor(300, 50); } $height = imagesy($img); $width = imagesx($img); $txtcolor = str_replace('#', '', Config::Get('SIGNATURE_TEXT_COLOR')); $color = sscanf($txtcolor, '%2x%2x%2x'); $textcolor = imagecolorallocate($img, $color[0], $color[1], $color[2]); $font = 3; // Set the font-size $xoffset = Config::Get('SIGNATURE_X_OFFSET'); # How many pixels, from left, to start $yoffset = Config::Get('SIGNATURE_Y_OFFSET'); # How many pixels, from top, to start $font = Config::Get('SIGNATURE_FONT_PATH'); $font_size = Config::Get('SIGNATURE_FONT_SIZE'); if(function_exists('imageantialias')) { imageantialias($img, true); } /* Font stuff */ if(!function_exists('imagettftext')) { Config::Set('SIGNATURE_USE_CUSTOM_FONT', false); } # The line height of each item to fit nicely, dynamic if(Config::Get('SIGNATURE_USE_CUSTOM_FONT') == false) { $stepsize = imagefontheight($font); $fontwidth = imagefontwidth($font); } else { // get the font width and step size $bb = imagettfbbox ( $font_size, 0, $font, 'A'); $stepsize = $bb[3] - $bb[5] + Config::Get('SIGNATURE_FONT_PADDING'); $fontwidth = $bb[2] - $bb[0]; } $currline = $yoffset; $total = count($output); for($i=0;$i<$total;$i++) { if(Config::Get('SIGNATURE_USE_CUSTOM_FONT') == false) { imagestring($img, $font, $xoffset, $currline, $output[$i], $textcolor); } else { // Use TTF $tmp = imagettftext($img, $font_size, 0, $xoffset, $currline, $textcolor, $font, $output[$i]); // Flag is placed at the end of of the first line, so have that bounding box there if($i==0) { $flag_bb = $tmp; } } $currline+=$stepsize; } # Add the country flag, line it up with the first line, which is the # pilot code/name $country = strtolower($pilot->location); if(file_exists(SITE_ROOT.'/lib/images/countries/'.$country.'.png')) { $flagimg = imagecreatefrompng(SITE_ROOT.'/lib/images/countries/'.$country.'.png'); if(Config::Get('SIGNATURE_USE_CUSTOM_FONT') == false) { $ret = imagecopy($img, $flagimg, strlen($output[0])*$fontwidth, ($yoffset+($stepsize/2)-5.5), 0, 0, 16, 11); } else { # figure out where it would go $ret = imagecopy($img, $flagimg, $flag_bb[4]+5, $flag_bb[5]+2, 0, 0, 16, 11); } } # Add the Rank image if(Config::Get('SIGNATURE_SHOW_RANK_IMAGE') == true && $pilot->rankimage!='' && file_exists($pilot->rankimage)) { $ext = substr($pilot->rankimage, strlen($pilot->rankimage)-3, 3); # Get the rank image type, just jpg, gif or png if($ext == 'png') $rankimg = @imagecreatefrompng($pilot->rankimage); elseif($ext == 'gif') $rankimg = @imagecreatefromgif($pilot->rankimage); else $rankimg = @imagecreatefromjpg($pilot->rankimage); if(!$rankimg) { echo '';} else { $r_width = imagesx($rankimg); $r_height = imagesy($rankimg); imagecopy($img, $rankimg, $width-$r_width-$xoffset, $yoffset, 0, 0, $r_width, $r_height); } } if(Config::Get('SIGNATURE_SHOW_COPYRIGHT') == true) { # # DO NOT remove this, as per the phpVMS license $font = 1; $text = 'powered by phpvms, '. SITE_NAME.' '; imagestring($img, $font, $width-(strlen($text)*imagefontwidth($font)), $height-imagefontheight($font), $text, $textcolor); } imagepng($img, SITE_ROOT.SIGNATURE_PATH.'/'.$pilotcode.'.png', 1); imagedestroy($img); } }
-
EUROFLY - CALLING ALL PILOTS
dale0404 replied to Matthew Talbot's topic in Virtual Airlines Discussion
I got the same thing lol, Matthew, sort it out dude! -
Gents, I have searched and searched with all the different spellings and abbreviations of FSpassengersX I can think of but to no avail I'm afraid. I am looking to integrate FSpassengersX into my website, could someone point me in the right direction if there is a thread I have missed or could someone explain how to do this. Thanks Dale
-
This might be your answer mate, I had the same kind of problem with the recaptcha stuff: From Nabeel: That skin is not updated to 2.1, so you need to update it using the stock registration_mainform.tpl from /core/templates folder (copy it into your skin's folder). You might want to post in the topic for that skin asking for it to be updated
-
crash, not to derail this thread, could you please explain how you have managed to get your last location on your sig please? I know there is a thread about it which I have followed but you'll see a slight problem with my sig, ie it doesnt show the location!
-
Ok that is certainly cool!