Fernando Posted June 23, 2013 Report Share Posted June 23, 2013 I'm having trouble counting flights pilots. Please help The pilot has flown hours, no more records in the number of routes. See the photo. Quote Link to comment Share on other sites More sharing options...
Moderators Parkho Posted June 23, 2013 Moderators Report Share Posted June 23, 2013 Is this the default table or you're using a custom one? Quote Link to comment Share on other sites More sharing options...
Fernando Posted July 7, 2013 Author Report Share Posted July 7, 2013 I'm using a custom, but I'm back to defaut page and the problem continues., Quote Link to comment Share on other sites More sharing options...
Moderators Parkho Posted July 8, 2013 Moderators Report Share Posted July 8, 2013 Open PilotData.class.php and add the following function at the end before the last bracket closes: public function TotalFlightsByPilot() { $pilotid = Auth::$userinfo->pilotid; $sql = "SELECT * FROM phpvms_pireps WHERE pilotid = '$pilotid'"; return DB::get_results($sql); } Then if you need to access the flights use the following: <p> Total flight by pilot: <?php echo count( PilotData::TotalFlightsByPilot()) ;?></p> Let us know what happens. Quote Link to comment Share on other sites More sharing options...
Fernando Posted July 8, 2013 Author Report Share Posted July 8, 2013 Open PilotData.class.php and add the following function at the end before the last bracket closes: public function TotalFlightsByPilot() { $pilotid = Auth::$userinfo->pilotid; $sql = "SELECT * FROM phpvms_pireps WHERE pilotid = '$pilotid'"; return DB::get_results($sql); } Then if you need to access the flights use the following: <p> Total flight by pilot: <?php echo count( PilotData::TotalFlightsByPilot()) ;?></p> Let us know what happens. Parkho, I did and the problem continues, enter the code PilotData.class.php But the number of flights is cleared, check the code below <?php/** * phpVMS - Virtual Airline Administration Software * Copyright © 2008 Nabeel Shahzad * For more information, visit www.phpvms.net * Forums: http://www.phpvms.net/forum'>http://www.phpvms.net/forum * Documentation: http://www.phpvms.net/docs'>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 © 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); $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; } # 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); } public function TotalFlightsByPilot() { $pilotid = Auth::$userinfo->pilotid; $sql = "SELECT * FROM phpvms_pireps WHERE pilotid = '$pilotid'"; return DB::get_results($sql); } } Quote Link to comment Share on other sites More sharing options...
Moderators Parkho Posted July 8, 2013 Moderators Report Share Posted July 8, 2013 Okay, where do you want to use this? if it's in a public area where other pilots are then use the following: public function TotalFlightsByPilot($pilotid) { $sql = "SELECT * FROM phpvms_pireps WHERE pilotid = '$pilotid'"; return DB::get_results($sql); } And the following: <p> Total flight by pilot: <?php echo count( PilotData::TotalFlightsByPilot('25')) ; //25 is the pilot id.?></p> Quote Link to comment Share on other sites More sharing options...
Fernando Posted July 9, 2013 Author Report Share Posted July 9, 2013 As I understand this script it works by entering the number of the pilot, correct? I need the code to be inserted in pilot_list.tpl him count the number of flights from all pilots. When I enter the administrator and restart the PIREPs, the system identifies the number of PIREPs of each pilot. When I go back on the page Pilot_list the number of flights for each pilot is not disclosed remains at 0 Quote Link to comment Share on other sites More sharing options...
Fernando Posted July 10, 2013 Author Report Share Posted July 10, 2013 Parkho I realized that a former programmer installed a system for automatic approval of flight by cpanel. But I can not think it will be that this is the real problem that does not account for the sums of PIREPs site. Within phpAdmin / Reset Count PIREP Pilot By clicking the button above appears the number of flights for each pilot performed, but the website does not. I believe that this script is in the cpanel that is directly impacting this count, you know where it can be installed? Quote Link to comment Share on other sites More sharing options...
Members Vangelis Posted July 10, 2013 Members Report Share Posted July 10, 2013 It should under cron jobs cron =auto Quote Link to comment Share on other sites More sharing options...
Fernando Posted July 10, 2013 Author Report Share Posted July 10, 2013 where do I find it? Quote Link to comment Share on other sites More sharing options...
Members Vangelis Posted July 10, 2013 Members Report Share Posted July 10, 2013 Parkho I realized that a former programmer installed a system for automatic approval of flight by cpanel. I believe that this script is in the cpanel that is directly impacting this count, you know where it can be installed? In cpanel https://www.netshop-isp.com.cy/v3/blog/2010/10/how-to-setup-cron-job-in-cpanel/ On curent cron jobs just click delete Quote Link to comment Share on other sites More sharing options...
Fernando Posted July 11, 2013 Author Report Share Posted July 11, 2013 In cpanel https://www.netshop-...-job-in-cpanel/ On curent cron jobs just click delete Thank you very much! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.