All pastes #884442 Raw Edit

Stuff

public text v1 · immutable
#884442 ·published 2008-01-30 10:44 UTC
rendered paste body
<?php
if(INCLUDED!==true)exit;
// ==================== //
$pathway_info[] = array('title'=>$lang['honor'],'link'=>'index.php?n=server&sub=honor');
// ==================== //
// some config //
$max_display_chars = 200; // Only top 40 in stats

$site_defines = Array(
  'character_race' => Array(
		1 => $lang['Human'],
		2 => $lang['Orc'],
		3 => $lang['Dwarf'],
		4 => $lang['Nightelf'],
		5 => $lang['Undead'],
		6 => $lang['Tauren'],
		7 => $lang['Gnome'],
		8 => $lang['Troll'],
		9 => $lang['Goblin'],
		10 => $lang['Bloodelf'],
		11 => $lang['Dranei'],
	),
	'character_class' => Array(
		1 => $lang['Warrior'],
		2 => $lang['Paladin'],
		3 => $lang['Hunter'],
		4 => $lang['Rogue'],
		5 => $lang['Priest'],
		7 => $lang['Shaman'],
		8 => $lang['Mage'],
		9 => $lang['Warlock'],
		11 => $lang['Druid'],
	),
  
  'character_gender' => Array(
    0 => $lang['Male'],
    1 => $lang['Female'],
    2 => 'None',
  ),
  'character_rank' => Array(
    'alliance' => Array(
      1 => $lang['ar1'],
      2 => $lang['ar2'],
      3 => $lang['ar3'],
      4 => $lang['ar4'],
      5 => $lang['ar5'],
      6 => $lang['ar6'],
      7 => $lang['ar7'],
      8 => $lang['ar8'],
      9 => $lang['ar9'],
      10 => $lang['ar10'],
      11 => $lang['ar11'],
      12 => $lang['ar12'],
      13 => $lang['ar13'],
      14 => $lang['ar14']
    ),
    'horde' => Array(
      1 => $lang['hr1'],
      2 => $lang['hr2'],
      3 => $lang['hr3'],
      4 => $lang['hr4'],
      5 => $lang['hr5'],
      6 => $lang['hr6'],
      7 => $lang['hr7'],
      8 => $lang['hr8'],
      9 => $lang['hr9'],
      10 => $lang['hr10'],
      11 => $lang['hr11'],
      12 => $lang['hr12'],
      13 => $lang['hr13'],
      14 => $lang['hr14']
    )
 )
);


if(!$_GET['realm']){
    $realm_list = realm_list();
}elseif($_GET['realm']){
    $pos = 0;
    $realm_list = realm_list();
    $realm = $DB->selectRow("SELECT * FROM realmlist WHERE id=?d LIMIT 1",$_GET['realm']);
    
    $pathway_info[] = array('title'=>$realm['name'],'');
    
    if(!$realm['dbinfo'])output_message('alert','Check field <u>dbinfo</u> in table `realmlist` for realm id='.$realm['id']);
    $wsdb_info = parse_worlddb_info($realm['dbinfo']);
    $WSDB = DbSimple_Generic::connect("".$realmd['db_type']."://".$wsdb_info['user'].":".$wsdb_info['password']."@".$wsdb_info['host'].":".$wsdb_info['port']."/".$wsdb_info['db']."");
    if($WSDB)$WSDB->setErrorHandler('databaseErrorHandler');
    if($WSDB)$WSDB->query("SET NAMES ".$mangos['db_encoding']);

     if($WSDB)$honor = $WSDB->select("SELECT guid, CAST( SUBSTRING_INDEX(SUBSTRING_INDEX(`data`, ' ', 1433), ' ', -1) AS UNSIGNED) AS honor FROM `character`;");

        foreach($honor as $res_row)
    {
//  if($res_row['type']==0){
            $honor_arr[$res_row['guid']] += $res_row['honor'];
//        }elseif($res_row['type']==2){
//            $honor_arr[$res_row['guid']] -= $res_row['honor'];
//        }
    
    }
//    print_r($honor_arr);
//    exit;
    unset($honor);
    if(!is_array($honor_arr))$honor_arr = array();
    $honor_arr = array_filter($honor_arr,"zehohonorfilter");
    arsort($honor_arr);
//  reset($honor_arr);
    $honor_arr = array_slice($honor_arr,0,$max_display_chars,true);
    $allhonor['alliance'] = array();
    $allhonor['horde'] = array();
    $charinfo_arr = array();
    $precharinfo_arr = array();
    $sql="SELECT character.guid AS ARRAY_KEY,character.guid,character.data,character.name,character.race,character.class, ifnull(a.count,0) as count "
	    ."FROM `character` left join (select guid as gid,sum(count) as count from character_kill group by guid) a"
	    ." on a.gid=character.guid left join `realmd`.`account` on `account`.`id` = `character`.`account` WHERE character.guid IN(?a) and `account`.`gmlevel` <2";
    
     if(count($honor_arr)>0)$precharinfo_arr = $WSDB->select($sql,array_keys($honor_arr));
//   if(count($honor_arr)>0)$precharinfo_arr = $WSDB->select("SELECT character.guid AS ARRAY_KEY,character.guid,character.data,character.name,character.race,character.class FROM `character` WHERE guid IN(?a)",array_keys($honor_arr));

    foreach ($honor_arr as $honor_uid=>$honor_val){
        $charinfo_arr[$honor_uid] = $precharinfo_arr[$honor_uid];
    }
    unset($precharinfo_arr);
    // Prepair data ...
    foreach($charinfo_arr as $charinfo_item){
        $char_data = explode(' ',$charinfo_item['data']);
        $char_gender = dechex($char_data[36]);
        $char_gender = str_pad($char_gender,8, 0, STR_PAD_LEFT);
        $char_gender = $char_gender{3};
        $char_rank_id = calc_character_rank($honor_arr[$charinfo_item['guid']]);
        if($charinfo_item['race']==1 || $charinfo_item['race']==3 || $charinfo_item['race']==4 || $charinfo_item['race']==7 || $charinfo_item['race']==11)$faction = 'alliance';
        else$faction = 'horde';
   $honor_kills = $char_data[1387];
//       $honor_kills = $WSDB->select("SELECT (sum(count)) FROM `character_kill` WHERE guid = ".$char_data[0]);
	$character = array(
            'name'   => $charinfo_item['name'],
            'race'   => $site_defines['character_race'][$charinfo_item['race']],
            'class'  => $site_defines['character_class'][$charinfo_item['class']],
            'gender' => $site_defines['character_gender'][$char_gender],
            'rank'   => $site_defines['character_rank'][$faction][$char_rank_id],
            'level'  => $char_data[34],
            'honor_points'       => $honor_arr[$charinfo_item['guid']],
            'honorable_kills'    => $honor_kills,
            'race_icon'   => $config['template_href'].'images/icon/race/'.$charinfo_item['race'].'-'.$char_gender.'.gif',
            'class_icon'   => $config['template_href'].'images/icon/class/'.$charinfo_item['class'].'.gif',
            'rank_icon'   => $config['template_href'].'images/icon/pvpranks/rank'.$char_rank_id.'.gif',
        );
        $allhonor[$faction][] = $character;
    }    
    unset($honor_arr);
    unset($charinfo_arr);
    unset($honor_kills);
    unset($WSDB);
    
}
function realm_list()
{
  global $DB;
  $res = $DB->selectCol("SELECT id AS ARRAY_KEY,name FROM realmlist ORDER BY name");
  return $res;
}
function get_rank_numending($n)
{
  $n = substr("$n", -1);
  if($n==1)return 'st';
  elseif($n==2)return 'nd';
  elseif($n==3)return 'rd';
  elseif($n>=4)return 'th';
}
function parse_worlddb_info($str){
    $arr = explode(';',$str);
    $mangosd_database['host'] = $arr[0];
    $mangosd_database['port'] = $arr[1];
    $mangosd_database['user'] = $arr[2];
    $mangosd_database['password'] = $arr[3];
    $mangosd_database['db'] = $arr[4];
    return $mangosd_database;
}
function calc_character_rank($honor_points){
    $rank = 0;
    if($honor_points <= 0){
        $rank = 0; 
    }else{
        if($honor_points < 2000) $rank = 1;
        else $rank = ceil($honor_points / 5000) + 1;
    }
    return $rank;
}
function zehohonorfilter($var){
    return ($var>0);
}
?>