function char_main(&$sqlr, &$sqlc) { global $output, $lang_global, $lang_char, $lang_item, $realm_id, $realm_db, $characters_db, $world_db, $server, $mmfpm_db, $action_permission, $user_lvl, $user_name, $user_id, $item_datasite, $spell_datasite, $showcountryflag; // this page uses wowhead tooltops wowhead_tt(); // we need at least an id or we would have nothing to show if (empty($_GET['id'])) { error($lang_global['empty_fields']); } // this is multi realm support, as of writing still under development // this page is already implementing it if (empty($_GET['realm'])) { $realmid = $realm_id; } else { $realmid = $sqlr->quote_smart($_GET['realm']); if (is_numeric($realmid)) { $sqlc->connect($characters_db[$realmid]['addr'], $characters_db[$realmid]['user'], $characters_db[$realmid]['pass'], $characters_db[$realmid]['name']); } else { $realmid = $realm_id; } } $id = $sqlc->quote_smart($_GET['id']); if (is_numeric($id)) { } else { error($lang_global['empty_fields']); } $result = $sqlc->query('SELECT account, race FROM characters WHERE guid = ' . $id . ' LIMIT 1'); if ($sqlc->num_rows($result)) { //resrict by owner's gmlvl $owner_acc_id = $sqlc->result($result, 0, 'account'); $query = $sqlr->query('SELECT gmlevel, username FROM account WHERE id = ' . $owner_acc_id . ''); $owner_gmlvl = $sqlr->result($query, 0, 'gmlevel'); $owner_name = $sqlr->result($query, 0, 'username'); if ($user_lvl || $server[$realmid]['both_factions']) { $side_v = 0; $side_p = 0; } else { $side_p = in_array($sqlc->result($result, 0, 'race'), array(2, 5, 6, 8, 10)) ? 1 : 2; $result_1 = $sqlc->query('SELECT race FROM characters WHERE account = ' . $user_id . ' LIMIT 1'); if ($sqlc->num_rows($result)) { $side_v = in_array($sqlc->result($result_1, 0, 'race'), array(2, 5, 6, 8, 10)) ? 1 : 2; } else { $side_v = 0; } unset($result_1); } if ($user_lvl >= $owner_gmlvl && ($side_v === $side_p || !$side_v)) { $result = $sqlc->query('SELECT account, data, name, race, class, gender, level, zone, map, online, totaltime, arenaPoints, totalHonorPoints, totalKills, health, power1, power2, power3, power4, power5, power6, power7 FROM characters WHERE guid = ' . $id . ''); $char = $sqlc->fetch_assoc($result); $char_data = explode(' ', $char['data']); $online = $char['online'] ? $lang_char['online'] : $lang_char['offline']; if ($char_data[CHAR_DATA_OFFSET_GUILD_ID]) { $guild_name = $sqlc->result($sqlc->query('SELECT name FROM guild WHERE guildid =' . $char_data[CHAR_DATA_OFFSET_GUILD_ID] . ''), 0, 'name'); $guild_name = '<a href="guild.php?action=view_guild&realm=' . $realmid . '&error=3&id=' . $char_data[CHAR_DATA_OFFSET_GUILD_ID] . '" >' . $guild_name . '</a>'; $mrank = $char_data[CHAR_DATA_OFFSET_GUILD_RANK] + 1; $guild_rank = $sqlc->result($sqlc->query('SELECT rname FROM guild_rank WHERE guildid =' . $char_data[CHAR_DATA_OFFSET_GUILD_ID] . ' AND rid=' . $mrank . ''), 0, 'rname'); } else { $guild_name = $lang_global['none']; $guild_rank = $lang_global['none']; } $block = unpack('f', pack('L', $char_data[CHAR_DATA_OFFSET_BLOCK])); $block = round($block[1], 2); $dodge = unpack('f', pack('L', $char_data[CHAR_DATA_OFFSET_DODGE])); $dodge = round($dodge[1], 2); $parry = unpack('f', pack('L', $char_data[CHAR_DATA_OFFSET_PARRY])); $parry = round($parry[1], 2); $crit = unpack('f', pack('L', $char_data[CHAR_DATA_OFFSET_MELEE_CRIT])); $crit = round($crit[1], 2); $ranged_crit = unpack('f', pack('L', $char_data[CHAR_DATA_OFFSET_RANGE_CRIT])); $ranged_crit = round($ranged_crit[1], 2); $maxdamage = unpack('f', pack('L', $char_data[CHAR_DATA_OFFSET_MAXDAMAGE])); $maxdamage = round($maxdamage[1], 0); $mindamage = unpack('f', pack('L', $char_data[CHAR_DATA_OFFSET_MINDAMAGE])); $mindamage = round($mindamage[1], 0); $maxrangeddamage = unpack('f', pack('L', $char_data[CHAR_DATA_OFFSET_MAXRANGEDDAMAGE])); $maxrangeddamage = round($maxrangeddamage[1], 0); $minrangeddamage = unpack('f', pack('L', $char_data[CHAR_DATA_OFFSET_MINRANGEDDAMAGE])); $minrangeddamage = round($minrangeddamage[1], 0); $spell_crit = 100; for ($i = 0; $i < 6; ++$i) { $temp = unpack('f', pack('L', $char_data[CHAR_DATA_OFFSET_SPELL_CRIT + 1 + $i])); if ($temp[1] < $spell_crit) { $spell_crit = $temp[1]; } } $spell_crit = round($spell_crit, 2); $spell_damage = 9999; for ($i = 0; $i < 6; ++$i) { if ($char_data[CHAR_DATA_OFFSET_SPELL_DAMAGE + 1 + $i] < $spell_damage) { $spell_damage = $char_data[CHAR_DATA_OFFSET_SPELL_DAMAGE + 1 + $i]; } } $rage = round($char['power2'] / 10); $expertise = '' . $char_data[CHAR_DATA_OFFSET_EXPERTISE] . ' / ' . $char_data[CHAR_DATA_OFFSET_OFFHAND_EXPERTISE] . ''; $EQU_HEAD = $char_data[CHAR_DATA_OFFSET_EQU_HEAD]; $EQU_NECK = $char_data[CHAR_DATA_OFFSET_EQU_NECK]; $EQU_SHOULDER = $char_data[CHAR_DATA_OFFSET_EQU_SHOULDER]; $EQU_SHIRT = $char_data[CHAR_DATA_OFFSET_EQU_SHIRT]; $EQU_CHEST = $char_data[CHAR_DATA_OFFSET_EQU_CHEST]; $EQU_BELT = $char_data[CHAR_DATA_OFFSET_EQU_BELT]; $EQU_LEGS = $char_data[CHAR_DATA_OFFSET_EQU_LEGS]; $EQU_FEET = $char_data[CHAR_DATA_OFFSET_EQU_FEET]; $EQU_WRIST = $char_data[CHAR_DATA_OFFSET_EQU_WRIST]; $EQU_GLOVES = $char_data[CHAR_DATA_OFFSET_EQU_GLOVES]; $EQU_FINGER1 = $char_data[CHAR_DATA_OFFSET_EQU_FINGER1]; $EQU_FINGER2 = $char_data[CHAR_DATA_OFFSET_EQU_FINGER2]; $EQU_TRINKET1 = $char_data[CHAR_DATA_OFFSET_EQU_TRINKET1]; $EQU_TRINKET2 = $char_data[CHAR_DATA_OFFSET_EQU_TRINKET2]; $EQU_BACK = $char_data[CHAR_DATA_OFFSET_EQU_BACK]; $EQU_MAIN_HAND = $char_data[CHAR_DATA_OFFSET_EQU_MAIN_HAND]; $EQU_OFF_HAND = $char_data[CHAR_DATA_OFFSET_EQU_OFF_HAND]; $EQU_RANGED = $char_data[CHAR_DATA_OFFSET_EQU_RANGED]; $EQU_TABARD = $char_data[CHAR_DATA_OFFSET_EQU_TABARD]; /* // reserved incase we want to use back minimanagers' built in tooltip, instead of wowheads' // minimanagers' item tooltip needs updating, but it can show enchantments and sockets. $equiped_items = array ( 1 => array(($EQU_HEAD ? get_item_tooltip($EQU_HEAD) : 0),($EQU_HEAD ? get_item_icon($EQU_HEAD) : 0),($EQU_HEAD ? get_item_border($EQU_HEAD) : 0)), 2 => array(($EQU_NECK ? get_item_tooltip($EQU_NECK) : 0),($EQU_NECK ? get_item_icon($EQU_NECK) : 0),($EQU_NECK ? get_item_border($EQU_NECK) : 0)), 3 => array(($EQU_SHOULDER ? get_item_tooltip($EQU_SHOULDER) : 0),($EQU_SHOULDER ? get_item_icon($EQU_SHOULDER) : 0),($EQU_SHOULDER ? get_item_border($EQU_SHOULDER) : 0)), 4 => array(($EQU_SHIRT ? get_item_tooltip($EQU_SHIRT) : 0),($EQU_SHIRT ? get_item_icon($EQU_SHIRT) : 0),($EQU_SHIRT ? get_item_border($EQU_SHIRT) : 0)), 5 => array(($EQU_CHEST ? get_item_tooltip($EQU_CHEST) : 0),($EQU_CHEST ? get_item_icon($EQU_CHEST) : 0),($EQU_CHEST ? get_item_border($EQU_CHEST) : 0)), 6 => array(($EQU_BELT ? get_item_tooltip($EQU_BELT) : 0),($EQU_BELT ? get_item_icon($EQU_BELT) : 0),($EQU_BELT ? get_item_border($EQU_BELT) : 0)), 7 => array(($EQU_LEGS ? get_item_tooltip($EQU_LEGS) : 0),($EQU_LEGS ? get_item_icon($EQU_LEGS) : 0),($EQU_LEGS ? get_item_border($EQU_LEGS) : 0)), 8 => array(($EQU_FEET ? get_item_tooltip($EQU_FEET) : 0),($EQU_FEET ? get_item_icon($EQU_FEET) : 0),($EQU_FEET ? get_item_border($EQU_FEET) : 0)), 9 => array(($EQU_WRIST ? get_item_tooltip($EQU_WRIST) : 0),($EQU_WRIST ? get_item_icon($EQU_WRIST) : 0),($EQU_WRIST ? get_item_border($EQU_WRIST) : 0)), 10 => array(($EQU_GLOVES ? get_item_tooltip($EQU_GLOVES) : 0),($EQU_GLOVES ? get_item_icon($EQU_GLOVES) : 0),($EQU_GLOVES ? get_item_border($EQU_GLOVES) : 0)), 11 => array(($EQU_FINGER1 ? get_item_tooltip($EQU_FINGER1) : 0),($EQU_FINGER1 ? get_item_icon($EQU_FINGER1) : 0),($EQU_FINGER1 ? get_item_border($EQU_FINGER1) : 0)), 12 => array(($EQU_FINGER2 ? get_item_tooltip($EQU_FINGER2) : 0),($EQU_FINGER2 ? get_item_icon($EQU_FINGER2) : 0),($EQU_FINGER2 ? get_item_border($EQU_FINGER2) : 0)), 13 => array(($EQU_TRINKET1 ? get_item_tooltip($EQU_TRINKET1) : 0),($EQU_TRINKET1 ? get_item_icon($EQU_TRINKET1) : 0),($EQU_TRINKET1 ? get_item_border($EQU_TRINKET1) : 0)), 14 => array(($EQU_TRINKET2 ? get_item_tooltip($EQU_TRINKET2) : 0),($EQU_TRINKET2 ? get_item_icon($EQU_TRINKET2) : 0),($EQU_TRINKET2 ? get_item_border($EQU_TRINKET2) : 0)), 15 => array(($EQU_BACK ? get_item_tooltip($EQU_BACK) : 0),($EQU_BACK ? get_item_icon($EQU_BACK) : 0),($EQU_BACK ? get_item_border($EQU_BACK) : 0)), 16 => array(($EQU_MAIN_HAND ? get_item_tooltip($EQU_MAIN_HAND) : 0),($EQU_MAIN_HAND ? get_item_icon($EQU_MAIN_HAND) : 0),($EQU_MAIN_HAND ? get_item_border($EQU_MAIN_HAND) : 0)), 17 => array(($EQU_OFF_HAND ? get_item_tooltip($EQU_OFF_HAND) : 0),($EQU_OFF_HAND ? get_item_icon($EQU_OFF_HAND) : 0),($EQU_OFF_HAND ? get_item_border($EQU_OFF_HAND) : 0)), 18 => array(($EQU_RANGED ? get_item_tooltip($EQU_RANGED) : 0),($EQU_RANGED ? get_item_icon($EQU_RANGED) : 0),($EQU_RANGED ? get_item_border($EQU_RANGED) : 0)), 19 => array(($EQU_TABARD ? get_item_tooltip($EQU_TABARD) : 0),($EQU_TABARD ? get_item_icon($EQU_TABARD) : 0),($EQU_TABARD ? get_item_border($EQU_TABARD) : 0)) ); */ $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); $sqlw = new SQL(); $sqlw->connect($world_db[$realmid]['addr'], $world_db[$realmid]['user'], $world_db[$realmid]['pass'], $world_db[$realmid]['name']); $equiped_items = array(1 => array('', $EQU_HEAD ? get_item_icon($EQU_HEAD, $sqlm, $sqlw) : 0, $EQU_HEAD ? get_item_border($EQU_HEAD, $sqlw) : 0), 2 => array('', $EQU_NECK ? get_item_icon($EQU_NECK, $sqlm, $sqlw) : 0, $EQU_NECK ? get_item_border($EQU_NECK, $sqlw) : 0), 3 => array('', $EQU_SHOULDER ? get_item_icon($EQU_SHOULDER, $sqlm, $sqlw) : 0, $EQU_SHOULDER ? get_item_border($EQU_SHOULDER, $sqlw) : 0), 4 => array('', $EQU_SHIRT ? get_item_icon($EQU_SHIRT, $sqlm, $sqlw) : 0, $EQU_SHIRT ? get_item_border($EQU_SHIRT, $sqlw) : 0), 5 => array('', $EQU_CHEST ? get_item_icon($EQU_CHEST, $sqlm, $sqlw) : 0, $EQU_CHEST ? get_item_border($EQU_CHEST, $sqlw) : 0), 6 => array('', $EQU_BELT ? get_item_icon($EQU_BELT, $sqlm, $sqlw) : 0, $EQU_BELT ? get_item_border($EQU_BELT, $sqlw) : 0), 7 => array('', $EQU_LEGS ? get_item_icon($EQU_LEGS, $sqlm, $sqlw) : 0, $EQU_LEGS ? get_item_border($EQU_LEGS, $sqlw) : 0), 8 => array('', $EQU_FEET ? get_item_icon($EQU_FEET, $sqlm, $sqlw) : 0, $EQU_FEET ? get_item_border($EQU_FEET, $sqlw) : 0), 9 => array('', $EQU_WRIST ? get_item_icon($EQU_WRIST, $sqlm, $sqlw) : 0, $EQU_WRIST ? get_item_border($EQU_WRIST, $sqlw) : 0), 10 => array('', $EQU_GLOVES ? get_item_icon($EQU_GLOVES, $sqlm, $sqlw) : 0, $EQU_GLOVES ? get_item_border($EQU_GLOVES, $sqlw) : 0), 11 => array('', $EQU_FINGER1 ? get_item_icon($EQU_FINGER1, $sqlm, $sqlw) : 0, $EQU_FINGER1 ? get_item_border($EQU_FINGER1, $sqlw) : 0), 12 => array('', $EQU_FINGER2 ? get_item_icon($EQU_FINGER2, $sqlm, $sqlw) : 0, $EQU_FINGER2 ? get_item_border($EQU_FINGER2, $sqlw) : 0), 13 => array('', $EQU_TRINKET1 ? get_item_icon($EQU_TRINKET1, $sqlm, $sqlw) : 0, $EQU_TRINKET1 ? get_item_border($EQU_TRINKET1, $sqlw) : 0), 14 => array('', $EQU_TRINKET2 ? get_item_icon($EQU_TRINKET2, $sqlm, $sqlw) : 0, $EQU_TRINKET2 ? get_item_border($EQU_TRINKET2, $sqlw) : 0), 15 => array('', $EQU_BACK ? get_item_icon($EQU_BACK, $sqlm, $sqlw) : 0, $EQU_BACK ? get_item_border($EQU_BACK, $sqlw) : 0), 16 => array('', $EQU_MAIN_HAND ? get_item_icon($EQU_MAIN_HAND, $sqlm, $sqlw) : 0, $EQU_MAIN_HAND ? get_item_border($EQU_MAIN_HAND, $sqlw) : 0), 17 => array('', $EQU_OFF_HAND ? get_item_icon($EQU_OFF_HAND, $sqlm, $sqlw) : 0, $EQU_OFF_HAND ? get_item_border($EQU_OFF_HAND, $sqlw) : 0), 18 => array('', $EQU_RANGED ? get_item_icon($EQU_RANGED, $sqlm, $sqlw) : 0, $EQU_RANGED ? get_item_border($EQU_RANGED, $sqlw) : 0), 19 => array('', $EQU_TABARD ? get_item_icon($EQU_TABARD, $sqlm, $sqlw) : 0, $EQU_TABARD ? get_item_border($EQU_TABARD, $sqlw) : 0)); if ($user_lvl > $owner_gmlvl || $owner_name === $user_name) { $output .= ' <!-- start of char.php --> <center> <div id="tab_content"> <div id="tab"> <ul> <li><a href="char_inv.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['inventory'] . '</a></li> <li><a href="char_extra.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['extra'] . '</a></li> ' . ($char['level'] < 10 ? '' : '<li><a href="char_talent.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['talents'] . '</a></li>') . ' <li><a href="char_achieve.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['achievements'] . '</a></li> <li><a href="char_rep.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['reputation'] . '</a></li> <li><a href="char_skill.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['skills'] . '</a></li> <li><a href="char_quest.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['quests'] . '</a></li>'; if (char_get_class_name($char['class']) === 'Hunter') { $output .= ' <li><a href="char_pets.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['pets'] . '</a></li>'; } $output .= ' <li><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['friends'] . '</a></li> <li><a href="char_spell.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['spells'] . '</a></li> <li><a href="char_mail.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['mail'] . '</a></li> </ul> <ul>'; // selected char tab at last $output .= ' <li id="selected"><a href="char.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['char_sheet'] . '</a></li>'; } else { $output .= ' <center> <div id="tab"> <ul> <li id="selected"><a href="char.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['char_sheet'] . '</a></li> </ul> </div> <div id="tab_content"> <div id="tab"> <ul>'; } $output .= ' </ul> </div> <div id="tab_content2"> <table class="lined" style="width: 580px;"> <tr> <td colspan="2"> <div> <img src="' . char_get_avatar_img($char['level'], $char['gender'], $char['race'], $char['class'], 0) . '" alt="avatar" /> </div> <div>'; $a_results = $sqlc->query('SELECT DISTINCT spell FROM character_aura WHERE guid = ' . $id . ''); if ($sqlc->num_rows($a_results)) { while ($aura = $sqlc->fetch_assoc($a_results)) { $output .= ' <a style="padding:2px;" href="' . $spell_datasite . $aura['spell'] . '" target="_blank"> <img src="' . spell_get_icon($aura['spell'], $sqlm) . '" alt="' . $aura['spell'] . '" width="24" height="24" /> </a>'; } } $output .= ' </div> </td> <td colspan="4"> <font class="bold"> ' . htmlentities($char['name']) . ' - <img src="img/c_icons/' . $char['race'] . '-' . $char['gender'] . '.gif" onmousemove="toolTip(\'' . char_get_race_name($char['race']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /> <img src="img/c_icons/' . $char['class'] . '.gif" onmousemove="toolTip(\'' . char_get_class_name($char['class']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /> - lvl ' . char_get_level_color($char['level']) . ' </font> <br />' . get_map_name($char['map'], $sqlm) . ' - ' . get_zone_name($char['zone'], $sqlm) . ' <br />' . $lang_char['honor_points'] . ': ' . $char['totalHonorPoints'] . ' / ' . $char['arenaPoints'] . ' - ' . $lang_char['honor_kills'] . ': ' . $char['totalKills'] . ' <br />' . $lang_char['guild'] . ': ' . $guild_name . ' | ' . $lang_char['rank'] . ': ' . htmlentities($guild_rank) . ' <br />' . ($char['online'] ? '<img src="img/up.gif" onmousemove="toolTip(\'Online\', \'item_tooltip\')" onmouseout="toolTip()" alt="online" />' : '<img src="img/down.gif" onmousemove="toolTip(\'Offline\', \'item_tooltip\')" onmouseout="toolTip()" alt="offline" />'); if ($showcountryflag) { require_once 'libs/misc_lib.php'; $country = misc_get_country_by_account($char['account'], $sqlr, $sqlm); $output .= ' - ' . ($country['code'] ? '<img src="img/flags/' . $country['code'] . '.png" onmousemove="toolTip(\'' . $country['country'] . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" />' : '-'); unset($country); } $output .= ' </td> </tr> <tr> <td width="6%">'; if ($equiped_items[1][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_HEAD . '" target="_blank"> <img src="' . $equiped_items[1][1] . '" class="' . $equiped_items[1][2] . '" alt="Head" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_head.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td class="half_line" colspan="2" align="center" width="50%"> <div class="gradient_p">' . $lang_item['health'] . ':</div> <div class="gradient_pp">' . $char['health'] . '</div>'; if ($char['class'] == 11) { //druid $output .= ' </br> <div class="gradient_p">' . $lang_item['energy'] . ':</div> <div class="gradient_pp">' . $char['power4'] . '</div>'; } $output .= ' </td> <td class="half_line" colspan="2" align="center" width="50%">'; if ($char['class'] == 1) { $output .= ' <div class="gradient_p">' . $lang_item['rage'] . ':</div> <div class="gradient_pp">' . $rage . '</div>'; } elseif ($char['class'] == 4) { $output .= ' <div class="gradient_p">' . $lang_item['energy'] . ':</div> <div class="gradient_pp">' . $char['power4'] . '</div>'; } elseif ($char['class'] == 6) { // Don't know if FOCUS is the right one need to verify with Death Knight player. $output .= ' <div class="gradient_p">' . $lang_item['runic'] . ':</div> <div class="gradient_pp">Unknown</div>'; } elseif ($char['class'] == 11) { $output .= ' <div class="gradient_p">' . $lang_item['mana'] . ':</div> <div class="gradient_pp">' . $char['power1'] . '</div> </br> <div class="gradient_p">' . $lang_item['rage'] . ':</div> <div class="gradient_pp">' . $rage . '</div>'; } elseif ($char['class'] == 2 || $char['class'] == 3 || $char['class'] == 5 || $char['class'] == 7 || $char['class'] == 8 || $char['class'] == 9) { $output .= ' <div class="gradient_p">' . $lang_item['mana'] . ':</div> <div class="gradient_pp">' . $char['power1'] . '</div>'; } $output .= ' </td> <td width="6%">'; if ($equiped_items[10][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_GLOVES . '" target="_blank"> <img src="' . $equiped_items[10][1] . '" class="' . $equiped_items[10][2] . '" alt="Gloves" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_gloves.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td width="1%">'; if ($equiped_items[2][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_NECK . '" target="_blank"> <img src="' . $equiped_items[2][1] . '" class="' . $equiped_items[2][2] . '" alt="Neck" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_neck.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td class="half_line" colspan="2" rowspan="3" align="center" width="50%"> <div class="gradient_p"> ' . $lang_item['strength'] . ':<br /> ' . $lang_item['agility'] . ':<br /> ' . $lang_item['stamina'] . ':<br /> ' . $lang_item['intellect'] . ':<br /> ' . $lang_item['spirit'] . ':<br /> ' . $lang_item['armor'] . ': </div> <div class="gradient_pp"> ' . $char_data[CHAR_DATA_OFFSET_STR] . '<br /> ' . $char_data[CHAR_DATA_OFFSET_AGI] . '<br /> ' . $char_data[CHAR_DATA_OFFSET_STA] . '<br /> ' . $char_data[CHAR_DATA_OFFSET_INT] . '<br /> ' . $char_data[CHAR_DATA_OFFSET_SPI] . '<br /> ' . $char_data[CHAR_DATA_OFFSET_ARMOR] . ' </div> </td> <td class="half_line" colspan="2" rowspan="3" align="center" width="50%"> <div class="gradient_p"> ' . $lang_item['res_holy'] . ':<br /> ' . $lang_item['res_arcane'] . ':<br /> ' . $lang_item['res_fire'] . ':<br /> ' . $lang_item['res_nature'] . ':<br /> ' . $lang_item['res_frost'] . ':<br /> ' . $lang_item['res_shadow'] . ': </div> <div class="gradient_pp"> ' . $char_data[CHAR_DATA_OFFSET_RES_HOLY] . '<br /> ' . $char_data[CHAR_DATA_OFFSET_RES_ARCANE] . '<br /> ' . $char_data[CHAR_DATA_OFFSET_RES_FIRE] . '<br /> ' . $char_data[CHAR_DATA_OFFSET_RES_NATURE] . '<br /> ' . $char_data[CHAR_DATA_OFFSET_RES_FROST] . '<br /> ' . $char_data[CHAR_DATA_OFFSET_RES_SHADOW] . ' </div> </td> <td width="1%">'; if ($equiped_items[6][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_BELT . '" target="_blank"> <img src="' . $equiped_items[6][1] . '" class="' . $equiped_items[6][2] . '" alt="Belt" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_waist.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td width="1%">'; if ($equiped_items[3][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_SHOULDER . '" target="_blank"> <img src="' . $equiped_items[3][1] . '" class="' . $equiped_items[3][2] . '" alt="Shoulder" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_shoulder.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td width="1%">'; if ($equiped_items[7][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_LEGS . '" target="_blank"> <img src="' . $equiped_items[7][1] . '" class="' . $equiped_items[7][2] . '" alt="Legs" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_legs.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td width="1%">'; if ($equiped_items[15][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_BACK . '" target="_blank"> <img src="' . $equiped_items[15][1] . '" class="' . $equiped_items[15][2] . '" alt="Back" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_chest_back.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td width="1%">'; if ($equiped_items[8][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_FEET . '" target="_blank"> <img src="' . $equiped_items[8][1] . '" class="' . $equiped_items[8][2] . '" alt="Feet" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_feet.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td width="1%">'; if ($equiped_items[5][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_CHEST . '" target="_blank"> <img src="' . $equiped_items[5][1] . '" class="' . $equiped_items[5][2] . '" alt="Chest" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_chest_back.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td class="half_line" colspan="2" rowspan="2" align="center" width="50%"> <div class="gradient_p"> ' . $lang_char['melee_d'] . ':<br /> ' . $lang_char['melee_ap'] . ':<br /> ' . $lang_char['melee_hit'] . ':<br /> ' . $lang_char['melee_crit'] . ':<br /> ' . $lang_char['expertise'] . ':<br /> </div> <div class="gradient_pp"> ' . $mindamage . '-' . $maxdamage . '<br /> ' . ($char_data[CHAR_DATA_OFFSET_AP] + $char_data[CHAR_DATA_OFFSET_AP_MOD]) . '<br /> ' . $char_data[CHAR_DATA_OFFSET_MELEE_HIT] . '<br /> ' . $crit . '%<br /> ' . $expertise . '<br /> </div> </td> <td class="half_line" colspan="2" rowspan="2" align="center" width="50%"> <div class="gradient_p"> ' . $lang_char['spell_d'] . ':<br /> ' . $lang_char['spell_heal'] . ':<br /> ' . $lang_char['spell_hit'] . ':<br /> ' . $lang_char['spell_crit'] . ':<br /> ' . $lang_char['spell_haste'] . ' </div> <div class="gradient_pp"> ' . $spell_damage . '<br /> ' . $char_data[CHAR_DATA_OFFSET_SPELL_HEAL] . '<br /> ' . $char_data[CHAR_DATA_OFFSET_SPELL_HIT] . '<br /> ' . $spell_crit . '%<br /> ' . $char_data[CHAR_DATA_OFFSET_SPELL_HASTE_RATING] . ' </div> </td> <td width="1%">'; if ($equiped_items[11][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_FINGER1 . '" target="_blank"> <img src="' . $equiped_items[11][1] . '" class="' . $equiped_items[11][2] . '" alt="Finger1" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_finger.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td width="1%">'; if ($equiped_items[4][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_SHIRT . '" target="_blank"> <img src="' . $equiped_items[4][1] . '" class="' . $equiped_items[4][2] . '" alt="Shirt" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_shirt.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td width="1%">'; if ($equiped_items[12][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_FINGER2 . '" target="_blank"> <img src="' . $equiped_items[12][1] . '" class="' . $equiped_items[12][2] . '" alt="Finger2" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_finger.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td width="1%">'; if ($equiped_items[19][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_TABARD . '" target="_blank"> <img src="' . $equiped_items[19][1] . '" class="' . $equiped_items[19][2] . '" alt="Tabard" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_tabard.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td class="half_line" colspan="2" rowspan="2" align="center" width="50%"> <div class="gradient_p"> ' . $lang_char['dodge'] . ':<br /> ' . $lang_char['parry'] . ':<br /> ' . $lang_char['block'] . ':<br /> ' . $lang_char['resilience'] . ':<br /> </div> <div class="gradient_pp"> ' . $dodge . '%<br /> ' . $parry . '%<br /> ' . $block . '%<br /> ' . $char_data[CHAR_DATA_OFFSET_RESILIENCE] . '<br /> </div> </td> <td class="half_line" colspan="2" rowspan="2" align="center" width="50%"> <div class="gradient_p"> ' . $lang_char['ranged_d'] . ':<br /> ' . $lang_char['ranged_ap'] . ':<br /> ' . $lang_char['ranged_hit'] . ':<br /> ' . $lang_char['ranged_crit'] . ':<br /> </div> <div class="gradient_pp"> ' . $minrangeddamage . '-' . $maxrangeddamage . '<br /> ' . ($char_data[CHAR_DATA_OFFSET_RANGED_AP] + $char_data[CHAR_DATA_OFFSET_RANGED_AP_MOD]) . '<br /> ' . $char_data[CHAR_DATA_OFFSET_RANGE_HIT] . '<br /> ' . $ranged_crit . '%<br /> </div> </td> <td width="1%">'; if ($equiped_items[13][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_TRINKET1 . '" target="_blank"> <img src="' . $equiped_items[13][1] . '" class="' . $equiped_items[13][2] . '" alt="Trinket1" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_trinket.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td width="1%">'; if ($equiped_items[9][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_WRIST . '" target="_blank"> <img src="' . $equiped_items[9][1] . '" class="' . $equiped_items[9][2] . '" alt="Wrist" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_wrist.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td width="1%">'; if ($equiped_items[14][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_TRINKET2 . '" target="_blank"> <img src="' . $equiped_items[14][1] . '" class="' . $equiped_items[14][2] . '" alt="Trinket2" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_trinket.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td></td> <td width="15%">'; if ($equiped_items[16][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_MAIN_HAND . '" target="_blank"> <img src="' . $equiped_items[16][1] . '" class="' . $equiped_items[16][2] . '" alt="MainHand" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_main_hand.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td width="15%">'; if ($equiped_items[17][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_OFF_HAND . '" target="_blank"> <img src="' . $equiped_items[17][1] . '" class="' . $equiped_items[17][2] . '" alt="OffHand" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_off_hand.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td width="15%">'; if ($equiped_items[18][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_RANGED . '" target="_blank"> <img src="' . $equiped_items[18][1] . '" class="' . $equiped_items[18][2] . '" alt="Ranged" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_ranged.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td width="15%"></td> <td></td> </tr>'; if ($user_lvl > $owner_gmlvl || $owner_name === $user_name) { //total time played $tot_time = $char['totaltime']; $tot_days = (int) ($tot_time / 86400); $tot_time = $tot_time - $tot_days * 86400; $total_hours = (int) ($tot_time / 3600); $tot_time = $tot_time - $total_hours * 3600; $total_min = (int) ($tot_time / 60); $output .= ' <tr> <td colspan="6"> ' . $lang_char['tot_paly_time'] . ': ' . $tot_days . ' ' . $lang_char['days'] . ' ' . $total_hours . ' ' . $lang_char['hours'] . ' ' . $total_min . ' ' . $lang_char['min'] . ' </td> </tr>'; } $output .= ' </table> </div> <br /> </div> <br /> <table class="hidden"> <tr> <td>'; // button to user account page, user account page has own security makebutton($lang_char['chars_acc'], 'user.php?action=edit_user&id=' . $owner_acc_id . '', 130); $output .= ' </td> <td>'; // only higher level GM with delete access can edit character // character edit allows removal of character items, so delete permission is needed if ($user_lvl > $owner_gmlvl && $user_lvl >= $action_permission['delete']) { makebutton($lang_char['edit_button'], 'char_edit.php?id=' . $id . '&realm=' . $realmid . '', 130); $output .= ' </td> <td>'; } // only higher level GM with delete access, or character owner can delete character if ($user_lvl > $owner_gmlvl && $user_lvl >= $action_permission['delete'] || $owner_name === $user_name) { makebutton($lang_char['del_char'], 'char_list.php?action=del_char_form&check%5B%5D=' . $id . '" type="wrn', 130); $output .= ' </td> <td>'; } // only GM with update permission can send mail, mail can send items, so update permission is needed if ($user_lvl >= $action_permission['update']) { makebutton($lang_char['send_mail'], 'mail.php?type=ingame_mail&to=' . $char['name'] . '', 130); $output .= ' </td> <td>'; } makebutton($lang_global['back'], 'javascript:window.history.back()" type="def', 130); $output .= ' </td> </tr> </table> <br /> </center> <!-- end of char.php -->'; } else { error($lang_char['no_permission']); } } else { error($lang_char['no_char_found']); } }
function view_guild() { global $lang_guild, $lang_global, $output, $realm_db, $characters_db, $mmfpm_db, $realm_id, $itemperpage, $action_permission, $user_lvl, $user_id, $showcountryflag; if (!isset($_GET['id'])) { redirect("guild.php?error=1&realm={$realmid}"); } $sqlr = new SQL(); $sqlr->connect($realm_db['addr'], $realm_db['user'], $realm_db['pass'], $realm_db['name']); if (empty($_GET['realm'])) { $realmid = $realm_id; } else { $realmid = $sqlr->quote_smart($_GET['realm']); if (!is_numeric($realmid)) { $realmid = $realm_id; } } $sqlc = new SQL(); $sqlc->connect($characters_db[$realmid]['addr'], $characters_db[$realmid]['user'], $characters_db[$realmid]['pass'], $characters_db[$realmid]['name']); $guild_id = $sqlc->quote_smart($_GET['id']); if (is_numeric($guild_id)) { } else { redirect("guild.php?error=6&realm={$realmid}"); } //==========================SQL INGUILD and GUILDLEADER====================== $q_inguild = $sqlc->query("select 1 from guild_member where guildid = '{$guild_id}' and guid in (select guid from characters where account = '{$user_id}')"); $inguild = $sqlc->result($q_inguild, 0, '1'); if ($user_lvl < $action_permission['update'] && !$inguild) { redirect("guild.php?error=6&realm={$realmid}"); } $q_amIguildleader = $sqlc->query("select 1 from guild where guildid = '{$guild_id}' and leaderguid in (select guid from characters where account = '{$user_id}')"); $amIguildleader = $sqlc->result($q_amIguildleader, 0, '1'); $q_guildmemberCount = $sqlc->query("SELECT 1 from guild_member where guildid = '{$guild_id}'"); $guildmemberCount = $sqlc->num_rows($q_guildmemberCount); //====================SQL INGUILD and GUILDLEADER end======================== //==========================$_GET and SECURE================================= $start = isset($_GET['start']) ? $sqlc->quote_smart($_GET['start']) : 0; if (is_numeric($start)) { } else { $start = 0; } $order_by = isset($_GET['order_by']) ? $sqlc->quote_smart($_GET['order_by']) : "mrank"; if (!preg_match("/^[_[:lower:]]{1,10}\$/", $order_by)) { $order_by = "mrank"; } $dir = isset($_GET['dir']) ? $sqlc->quote_smart($_GET['dir']) : 1; if (!preg_match("/^[01]{1}\$/", $dir)) { $dir = 1; } $order_dir = $dir ? "ASC" : "DESC"; $dir = $dir ? 0 : 1; //==========================$_GET and SECURE end============================= $query = $sqlc->query("SELECT guildid, name, info, MOTD, createdate,\r\n (select count(*) from guild_member where guildid = '{$guild_id}') as mtotal,\r\n (select count(*) from guild_member where guildid = '{$guild_id}' and guid in\r\n (select guid from characters where online = 1)) as monline\r\n FROM guild WHERE guildid = '{$guild_id}'"); $guild_data = $sqlc->fetch_row($query); $output .= "\r\n<center>\r\n\t<div id=\"tab_content\">\r\n\t\t<div id=\"tab\">\r\n\t\t\t<ul>\r\n\t\t\t\t<li id=\"selected\"><a href=\"guild.php?action=view_guild&realm={$realmid}&error=3&id={$guild_data['0']}\">" . $lang_guild['members'] . "</a></li>\r\n\t\t\t\t<li><a href=\"guildbank.php?id={$guild_id}&realm={$realmid}\">" . $lang_guild['guildbank'] . "</a></li>\r\n\t\t\t</ul>\r\n\t\t</div>\r\n"; $output .= "\r\n <script type=\"text/javascript\">\r\n answerbox.btn_ok='{$lang_global['yes']}';\r\n answerbox.btn_cancel='{$lang_global['no']}';\r\n </script>\r\n\t\t<div id=\"tab_content2\">\r\n\t\t\t<table class=\"hidden\" style=\"width: 100%;\">\r\n <tr>\r\n <td>\r\n <table class=\"lined\"style=\"width: 100%;\">\r\n <tr>\r\n <td width=\"25%\"><b>{$lang_guild['create_date']}:</b><br />" . date('o-m-d', $guild_data[4]) . "</td>\r\n <td width=\"50%\" class=\"bold\">{$guild_data['1']}</td>\r\n <td width=\"25%\"><b>{$lang_guild['tot_m_online']}:</b><br />{$guild_data['6']} / {$guild_data['5']}</td>\r\n </tr>"; if ($guild_data[2] != '') { $output .= "\r\n <tr>\r\n <td colspan=\"3\"><b>{$lang_guild['info']}:</b><br />{$guild_data['2']}</td>\r\n </tr>"; } if ($guild_data[3] != '') { $output .= "\r\n <tr>\r\n <td colspan=\"3\"><b>{$lang_guild['motd']}:</b><br />{$guild_data['3']}</td>\r\n </tr>"; } $output .= "\r\n </table>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td align=\"right\">" . generate_pagination("guild.php?action=view_guild&realm={$realmid}&id={$guild_id}&order_by={$order_by}&dir=" . ($dir ? 0 : 1) . "", $guildmemberCount, $itemperpage, $start) . "</td>\r\n </tr>\r\n <tr>\r\n <td>\r\n <table class=\"lined\" style=\"width: 100%;\">\r\n <tr>\r\n <th width=\"1%\">{$lang_guild['remove']}</th>\r\n <th width=\"20%\"><a href=\"guild.php?action=view_guild&error=3&realm={$realmid}&id={$guild_id}&order_by=cname&start={$start}&dir={$dir}\">" . ($order_by == 'cname' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_guild['name']}</a></th>\r\n <th width=\"1%\"><a href=\"guild.php?action=view_guild&error=3&realm={$realmid}&id={$guild_id}&order_by=crace&start={$start}&dir={$dir}\">" . ($order_by == 'crace' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_guild['race']}</a></th>\r\n <th width=\"1%\"><a href=\"guild.php?action=view_guild&error=3&realm={$realmid}&id={$guild_id}&order_by=class&start={$start}&dir={$dir}\">" . ($order_by == 'cclass' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_guild['class']}</a></th>\r\n <th width=\"1%\"><a href=\"guild.php?action=view_guild&error=3&realm={$realmid}&id={$guild_id}&order_by=clevel&start={$start}&dir={$dir}\">" . ($order_by == 'clevel' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_guild['level']}</a></th>\r\n <th width=\"23%\"><a href=\"guild.php?action=view_guild&error=3&realm={$realmid}&id={$guild_id}&order_by=mrank&start={$start}&dir={$dir}\">" . ($order_by == 'mrank' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_guild['rank']}</a></th>\r\n <th width=\"25%\">{$lang_guild['pnote']}</th>\r\n <th width=\"25%\">{$lang_guild['offnote']}</th>\r\n <th width=\"1%\"><a href=\"guild.php?action=view_guild&error=3&realm={$realmid}&id={$guild_id}&order_by=clogout&start={$start}&dir={$dir}\">" . ($order_by == 'clogout' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_guild['llogin']}</a></th>\r\n <th width=\"1%\"><a href=\"guild.php?action=view_guild&error=3&realm={$realmid}&id={$guild_id}&order_by=conline&start={$start}&dir={$dir}\">" . ($order_by == 'conline' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_guild['online']}</a></th>"; if ($showcountryflag) { require_once 'libs/misc_lib.php'; $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); $output .= "\r\n <th width=\"1%\">{$lang_global['country']}</th>"; } $output .= "\r\n </tr>"; $members = $sqlc->query("SELECT gm.guid as cguid, c.name as cname, c.`race` as crace ,c.`class` as cclass,\r\n c.`level` AS clevel,\r\n gm.rank AS mrank, (SELECT rname FROM guild_rank WHERE guildid ='{$guild_id}' AND rid = mrank) AS rname,\r\n gm.Pnote, gm.OFFnote, gender,\r\n c.`online` as conline, c.`account`, c.`logout_time` as clogout\r\n FROM guild_member as gm left outer join characters as c on c.guid = gm.guid\r\n WHERE gm.guildid = '{$guild_id}' ORDER BY {$order_by} {$order_dir} LIMIT {$start}, {$itemperpage}"); while ($member = $sqlr->fetch_row($members)) { $result = $sqlr->query("SELECT gmlevel FROM account WHERE id ='{$member['11']}'"); $owner_gmlvl = $sqlr->result($result, 0, 'gmlevel'); $output .= "\r\n <tr>"; // gm, gildleader or own account! are allowed to remove from guild $output .= $user_lvl >= $action_permission['delete'] || $amIguildleader || $member[11] == $user_id ? "\r\n <td>\r\n <img src=\"img/aff_cross.png\" alt=\"\" onclick=\"answerBox('{$lang_global['delete']}: <font color=white>{$member[1]}</font><br />{$lang_global['are_you_sure']}', 'guild.php?action=rem_char_from_guild&realm={$realmid}&id={$member['0']}&guld_id={$guild_id}');\" style=\"cursor:pointer;\" />\r\n </td>" : "\r\n <td>\r\n </td>"; $output .= $user_lvl < $owner_gmlvl ? "\r\n <td>" . htmlentities($member[1]) . "</td>" : "\r\n <td><a href=\"char.php?id={$member['0']}&realm={$realmid}\">" . htmlentities($member[1]) . "</a></td>"; $output .= "\r\n <td><img src='img/c_icons/{$member[2]}-{$member[9]}.gif' onmousemove='toolTip(\"" . char_get_race_name($member[2]) . "\",\"item_tooltip\")' onmouseout='toolTip()' alt=\"\" /></td>\r\n <td><img src='img/c_icons/{$member[3]}.gif' onmousemove='toolTip(\"" . char_get_class_name($member[3]) . "\",\"item_tooltip\")' onmouseout='toolTip()' alt=\"\" /></td>\r\n <td>" . char_get_level_color($member[4]) . "</td>\r\n <td>" . htmlentities($member[6]) . " (" . $member[5] . ")</td>\r\n <td>" . htmlentities($member[7]) . "</td>\r\n <td>" . htmlentities($member[8]) . "</td>\r\n <td>" . get_days_with_color($member[12]) . "</td>\r\n <td>" . ($member[10] ? "<img src=\"img/up.gif\" alt=\"\" />" : "-") . "</td>"; if ($showcountryflag) { $country = misc_get_country_by_account($member[11], $sqlr, $sqlm); $output .= "\r\n <td>" . ($country['code'] ? "<img src='img/flags/" . $country['code'] . ".png' onmousemove='toolTip(\"" . $country['country'] . "\",\"item_tooltip\")' onmouseout='toolTip()' alt=\"\" />" : "-") . "</td>"; } $output .= "\r\n </tr>"; } unset($member); $output .= "\r\n </table>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td align=\"right\">" . generate_pagination("guild.php?action=view_guild&error=3&realm={$realmid}&id={$guild_id}&order_by={$order_by}&dir=" . !$dir, $guildmemberCount, $itemperpage, $start) . "</td>\r\n </tr>\r\n </table>\r\n\t\t</div>\r\n\t</div>\r\n <br />"; $output .= "\r\n <table class=\"hidden\">\r\n <tr>\r\n <td>"; if ($user_lvl >= $action_permission['delete'] || $amIguildleader) { makebutton($lang_guild['del_guild'], "guild.php?action=del_guild&realm={$realmid}&id={$guild_id}\" type=\"wrn", 130); $output .= "\r\n </td>\r\n <td>"; } makebutton($lang_guild['show_guilds'], "guild.php?realm={$realmid}\" type=\"def", 130); $output .= "\r\n </td>\r\n </tr>\r\n </table>\r\n\t</center>\r\n"; }
function browse_chars() { global $output, $logon_db, $corem_db, $corem_db, $characters_db, $realm_id, $site_encoding, $action_permission, $user_lvl, $user_name, $showcountryflag, $itemperpage, $timezone_offset, $sql, $core; //==========================$_GET and SECURE======================== $start = isset($_GET["start"]) ? $sql["logon"]->quote_smart($_GET["start"]) : 0; if (!is_numeric($start)) { $start = 0; } $order_by = isset($_GET["order_by"]) ? $sql["logon"]->quote_smart($_GET["order_by"]) : "guid"; if (!preg_match("/^[_[:lower:]]{1,12}\$/", $order_by)) { $order_by = "guid"; } $dir = isset($_GET["dir"]) ? $sql["logon"]->quote_smart($_GET["dir"]) : 1; if (!preg_match("/^[01]{1}\$/", $dir)) { $dir = 1; } $order_dir = $dir ? "ASC" : "DESC"; $dir = $dir ? 0 : 1; //==========================$_GET and SECURE end======================== if ($order_by == "mapid") { $order_by = "mapid, zoneid"; $order_hold = "mapid"; } elseif ($order_by == "zoneid") { $order_by = "zoneid, mapid"; $order_hold = "zoneid"; } else { $order_hold = $order_by; } switch ($_GET["symbol"]) { case "equal": $symbol = "="; break; case "greater_equal": $symbol = ">="; break; case "greater": $symbol = ">"; break; case "less_equal": $symbol = "<="; break; case "less": $symbol = "<"; break; case "not_equal": $symbol = "<>"; break; } $search_by = ""; $search_value = ""; if (isset($_GET["search_value"]) && isset($_GET["search_by"])) { $search_value = $sql["logon"]->quote_smart($_GET["search_value"]); $search_by = isset($_GET["search_by"]) ? $sql["logon"]->quote_smart($_GET["search_by"]) : "name"; $search_menu = array("name", "guid", "account", "level", "greater_level", "guild", "race", "class", "mapid", "highest_rank", "greater_rank", "online", "gold", "item"); if (!in_array($search_by, $search_menu)) { $search_by = "name"; } unset($search_menu); switch ($search_by) { //need to get the acc id from other table since input comes as name case "account": if (preg_match('/^[\\t\\v\\b\\f\\a\\n\\r\\\\"\'\\? <>[](){}_=+-|!@#$%^&*~`.,0123456789\\0]{1,30}$/', $search_value)) { redirect("charlist.php?error=2"); } if ($core == 1) { $result = $sql["logon"]->query("SELECT acct FROM accounts WHERE login LIKE '%" . $search_value . "%' LIMIT " . $start . ", " . $itemperpage); } else { $result = $sql["logon"]->query("SELECT id AS acct FROM account WHERE username LIKE '%" . $search_value . "%' LIMIT " . $start . ", " . $itemperpage); } if ($core == 1) { $where_out = " acct IN (0 "; } else { $where_out = " account IN (0 "; } while ($char = $sql["logon"]->fetch_row($result)) { $where_out .= ", "; $where_out .= $char[0]; } $where_out .= ") "; unset($result); break; case "level": if (!is_numeric($search_value)) { $search_value = 1; } $where_out = "level" . $symbol . $search_value; break; case "gold": if (!is_numeric($search_value)) { $search_value = 1; } if ($core == 1) { $where_out = "gold" . $symbol . $search_value; } else { $where_out = "money" . $symbol . $search_value; } break; case "guild": if (preg_match('/^[\\t\\v\\b\\f\\a\\n\\r\\\\"\'\\? <>[](){}_=+-|!@#$%^&*~`.,0123456789\\0]{1,30}$/', $search_value)) { redirect("charlist.php?error=2"); } if ($core == 1) { $result = $sql["char"]->query("SELECT guildid FROM guilds WHERE guildname LIKE '%" . $search_value . "%'"); } else { $result = $sql["char"]->query("SELECT guildid FROM guild WHERE name LIKE '%" . $search_value . "%'"); } $guildid = $sql["char"]->result($result, 0, 'guildid'); if (!$search_value) { $guildid = 0; } if ($core == 1) { $Q1 = "SELECT playerid FROM guild_data WHERE guildid=" . $guildid; } else { $Q1 = "SELECT guid AS playerid FROM guild_member WHERE guildid=" . $guildid; } $result = $sql["char"]->query($Q1); unset($guildid); unset($Q1); $where_out = "guid IN (0 "; while ($char = $sql["char"]->fetch_row($result)) { $where_out .= ", "; $where_out .= $char[0]; } $where_out .= ") "; unset($result); break; case "item": if (!is_numeric($search_value)) { $search_value = 0; } if ($core == 1) { $result = $sql["char"]->query("SELECT ownerguid\r\n FROM playeritems\r\n WHERE entry" . $symbol . "'" . $search_value . "'"); } elseif ($core == 2) { $result = $sql["char"]->query("SELECT owner_guid AS ownerguid\r\n FROM character_inventory\r\n LEFT JOIN item_instance ON character_inventory.item=item_instance.guid\r\n WHERE item_template" . $symbol . "'" . $search_value . "'"); } else { $result = $sql["char"]->query("SELECT owner_guid AS ownerguid\r\n FROM character_inventory\r\n LEFT JOIN item_instance ON character_inventory.item=item_instance.guid\r\n WHERE itemEntry" . $symbol . "'" . $search_value . "'"); } $where_out = "guid IN (0 "; while ($char = $sql["char"]->fetch_row($result)) { if ($char[0] != NULL) { $where_out .= ", "; $where_out .= $char[0]; } } $where_out .= ") "; unset($result); break; case "highest_rank": if (!is_numeric($search_value)) { $search_value = 0; } if ($core == 1) { $where_out = "SUBSTRING_INDEX(SUBSTRING_INDEX(`data`, ';', " . (PLAYER_FIELD_LIFETIME_HONORBALE_KILLS + 1) . "), ';', -1)" . $symbol . $search_value; } else { $where_out = "totalKills" . $symbol . $search_value; } break; case "mapid": if (!is_numeric($search_value)) { $search_value = 0; } if ($core == 1) { $where_out = "mapid" . $symbol . $search_value; } else { $where_out = "map" . $symbol . $search_value; } break; case "online": if ($search_value != 0) { $search_value = 1; } else { $search_value = 0; } $where_out = "online=" . $search_value; break; default: if (preg_match('/^[\\t\\v\\b\\f\\a\\n\\r\\\\"\'\\? <>[](){}_=+-|!@#$%^&*~`.,0123456789\\0]{1,30}$/', $search_value)) { redirect("charlist.php?error=2"); } if (!is_numeric($search_value)) { $where_out = $search_by . " LIKE '%" . $search_value . "%'"; } else { $where_out = $search_by . $symbol . "'" . $search_value . "'"; } } if ($core == 1) { $sql_query = "SELECT guid, name, acct, race, class, zoneid, mapid,\r\n CAST( SUBSTRING_INDEX(SUBSTRING_INDEX(`data`, ';', " . (PLAYER_FIELD_LIFETIME_HONORBALE_KILLS + 1) . "), ';', -1) AS UNSIGNED) AS highest_rank,\r\n online, level, gender, timestamp\r\n FROM `characters`\r\n WHERE " . $where_out . " ORDER BY " . $order_by . " " . $order_dir . " LIMIT " . $start . ", " . $itemperpage; } else { $sql_query = "SELECT guid, name, account AS acct, race, class, zone AS zoneid, map AS mapid,\r\n totalKills AS highest_rank,\r\n online, level, gender, logout_time AS timestamp\r\n FROM `characters`\r\n WHERE " . $where_out . " ORDER BY " . $order_by . " " . $order_dir . " LIMIT " . $start . ", " . $itemperpage; } $query_1 = $sql["char"]->query("SELECT COUNT(*) FROM `characters` WHERE " . $where_out); $query = $sql["char"]->query($sql_query); } else { $query_1 = $sql["char"]->query("SELECT COUNT(*) FROM `characters`"); if ($core == 1) { $query = $sql["char"]->query("SELECT guid, name, acct, race, class, zoneid, mapid,\r\n online, level, gender, timestamp,\r\n CAST( SUBSTRING_INDEX(SUBSTRING_INDEX(`data`, ';', " . (PLAYER_FIELD_LIFETIME_HONORBALE_KILLS + 1) . "), ';', -1) AS UNSIGNED) AS highest_rank\r\n FROM `characters` ORDER BY " . $order_by . " " . $order_dir . " LIMIT " . $start . ", " . $itemperpage); } else { $query = $sql["char"]->query("SELECT guid, name, account AS acct, race, class, zone AS zoneid, map AS mapid,\r\n online, level, gender, logout_time AS timestamp,\r\n totalKills AS highest_rank\r\n FROM `characters` ORDER BY " . $order_by . " " . $order_dir . " LIMIT " . $start . ", " . $itemperpage); } } $all_record = $sql["char"]->result($query_1, 0); unset($query_1); $this_page = $sql["char"]->num_rows($query); //==========================top page navigaion starts here======================== $output .= ' <script type="text/javascript" src="libs/js/check.js"></script> <table class="top_hidden"> <tr> <td>'; // cleanup unknown working condition //if($user_lvl >= $action_permission["delete"]) // makebutton($lang_char_list["cleanup"], 'cleanup.php', 130); makebutton(lang("global", "back"), 'javascript:window.history.back()', 130); $search_by && $search_value ? makebutton(lang("char_list", "characters"), 'char_list.php" type="def', 130) : ($output .= ''); $output .= ' </td> <td align="right" style="width: 25%;" rowspan="2">'; $output .= generate_pagination('char_list.php?order_by=' . $order_hold . '&dir=' . ($dir ? 0 : 1) . ($search_value && $search_by ? '&symbol=' . $_GET["symbol"] . '&search_by=' . $search_by . '&search_value=' . $search_value . '' : ''), $all_record, $itemperpage, $start); $output .= ' </td> </tr> <tr align="left"> <td> <table class="hidden"> <tr> <td> <form action="char_list.php" method="get" id="form"> <div> <input type="hidden" name="error" value="3" /> <select name="search_by"> <option value="name"' . ($search_by == "name" ? ' selected="selected"' : '') . '>' . lang("char_list", "by_name") . '</option> <option value="guid"' . ($search_by == "guid" ? ' selected="selected"' : '') . '>' . lang("char_list", "by_id") . '</option> <option value="account"' . ($search_by == "account" ? ' selected="selected"' : '') . '>' . lang("char_list", "by_account") . '</option> <option value="level"' . ($search_by == "level" ? ' selected="selected"' : '') . '>' . lang("char_list", "by_level") . '</option> <option value="guild"' . ($search_by == "guild" ? ' selected="selected"' : '') . '>' . lang("char_list", "by_guild") . '</option> <option value="race"' . ($search_by == "race" ? ' selected="selected"' : '') . '>' . lang("char_list", "by_race_id") . '</option> <option value="class"' . ($search_by == "class" ? ' selected="selected"' : '') . '>' . lang("char_list", "by_class_id") . '</option> <option value="mapid"' . ($search_by == "mapid" ? ' selected="selected"' : '') . '>' . lang("char_list", "by_map_id") . '</option> <option value="highest_rank"' . ($search_by == "highest_rank" ? ' selected="selected"' : '') . '>' . lang("char_list", "by_honor_kills") . '</option> <option value="online"' . ($search_by == "online" ? ' selected="selected"' : '') . '>' . lang("char_list", "by_online") . '</option> <option value="gold"' . ($search_by == "gold" ? ' selected="selected"' : '') . '>' . lang("char_list", "chars_gold") . '</option> <option value="item"' . ($search_by == "item" ? ' selected="selected"' : '') . '>' . lang("char_list", "by_item") . '</option> </select> <select name="symbol"> <option value="equal"' . ($symbol == "=" ? ' selected="selected"' : '') . '>=</option> <option value="greater_equal"' . ($symbol == ">=" ? ' selected="selected"' : '') . '>>=</option> <option value="greater"' . ($symbol == ">" ? ' selected="selected"' : '') . '>></option> <option value="less_equal"' . ($symbol == "<=" ? ' selected="selected"' : '') . '><=</option> <option value="less"' . ($symbol == "<" ? ' selected="selected"' : '') . '><</option> <option value="not_equal"' . ($symbol == "<>" ? ' selected="selected"' : '') . '>!=</option> </select> <input type="text" size="24" maxlength="50" name="search_value" value="' . $search_value . '" /> </div> </form> </td> <td>'; makebutton(lang("global", "search"), 'javascript:do_submit()', 80); $output .= ' </td> </tr> </table> </td> </tr> </table>'; //==========================top page navigaion ENDS here ======================== $output .= ' <form method="get" action="char_list.php" id="form1"> <div> <input type="hidden" name="action" value="del_char_form" /> <input type="hidden" name="start" value="' . $start . '" /> </div> <table class="lined" id="char_list_table"> <tr> <td colspan="6" align="left" class="hidden">'; if ($user_lvl >= $action_permission["delete"] || $owner_acc_name == $user_name) { makebutton(lang("char_list", "del_selected_chars"), 'javascript:do_submit(\'form1\',0)" type="wrn', 220); } $output .= ' </td> </tr> <tr> <th style="width: 1%;"> <input name="allbox" type="checkbox" value="Check All" onclick="CheckAll(document.form1);" /> </th> <th style="width: 1%;"> <a href="char_list.php?order_by=guid&start=' . $start . ($search_value && $search_by ? '&search_by=' . $search_by . '&symbol=' . $_GET["symbol"] . '&search_value=' . $search_value : '') . '&dir=' . $dir . '">' . ($order_by == "guid" ? '<img src="img/arr_' . ($dir ? "dw" : "up") . '.gif" alt="" /> ' : '') . lang("char_list", "id") . '</a> </th> <th style="width: 10%;"> <a href="char_list.php?order_by=name&start=' . $start . ($search_value && $search_by ? '&search_by=' . $search_by . '&symbol=' . $_GET["symbol"] . '&search_value=' . $search_value : '') . '&dir=' . $dir . '">' . ($order_by == "name" ? '<img src="img/arr_' . ($dir ? "dw" : "up") . '.gif" alt="" /> ' : '') . lang("char_list", "char_name") . '</a> </th> <th style="width: 10%;"> <a href="char_list.php?order_by=acct&start=' . $start . ($search_value && $search_by ? '&search_by=' . $search_by . '&symbol=' . $_GET["symbol"] . '&search_value=' . $search_value : '') . '&dir=' . $dir . '">' . ($order_by == "acct" ? '<img src="img/arr_' . ($dir ? "dw" : "up") . '.gif" alt="" /> ' : '') . lang("char_list", "account") . '</a> </th> <th style="width: 1%;"> <a href="char_list.php?order_by=race&start=' . $start . ($search_value && $search_by ? '&search_by=' . $search_by . '&symbol=' . $_GET["symbol"] . '&search_value=' . $search_value : '') . '&dir=' . $dir . '">' . ($order_by == "race" ? '<img src="img/arr_' . ($dir ? "dw" : "up") . '.gif" alt="" /> ' : '') . lang("char_list", "race_short") . '</a> </th> <th style="width: 1%;"> <a href="char_list.php?order_by=class&start=' . $start . ($search_value && $search_by ? '&search_by=' . $search_by . '&symbol=' . $_GET["symbol"] . '&search_value=' . $search_value : '') . '&dir=' . $dir . '">' . ($order_by == "class" ? '<img src="img/arr_' . ($dir ? "dw" : "up") . '.gif" alt="" /> ' : '') . lang("char_list", "class_short") . '</a> </th> <th style="width: 1%;"> <a href="char_list.php?order_by=level&start=' . $start . ($search_value && $search_by ? '&search_by=' . $search_by . '&symbol=' . $_GET["symbol"] . '&search_value=' . $search_value : '') . '&dir=' . $dir . '">' . ($order_by == "level" ? '<img src="img/arr_' . ($dir ? "dw" : "up") . '.gif" alt="" /> ' : '') . lang("char_list", "level_short") . '</a> </th> <th style="width: 10%;"> <a href="char_list.php?order_by=mapid&start=' . $start . ($search_value && $search_by ? '&search_by=' . $search_by . '&symbol=' . $_GET["symbol"] . '&search_value=' . $search_value : '') . '&dir=' . $dir . '">' . ($order_by == "mapid, zoneid" ? '<img src="img/arr_' . ($dir ? "dw" : "up") . '.gif" alt="" /> ' : '') . lang("char_list", "map") . '</a> </th> <th style="width: 10%;"> <a href="char_list.php?order_by=zoneid&start=' . $start . ($search_value && $search_by ? '&search_by=' . $search_by . '&symbol=' . $_GET["symbol"] . '&search_value=' . $search_value : '') . '&dir=' . $dir . '">' . ($order_by == "zoneid, mapid" ? '<img src="img/arr_' . ($dir ? "dw" : "up") . '.gif" alt="" /> ' : '') . lang("char_list", "zone") . '</a> </th> <th style="width: 1%;"> <a href="char_list.php?order_by=highest_rank&start=' . $start . ($search_value && $search_by ? '&search_by=' . $search_by . '&symbol=' . $_GET["symbol"] . '&search_value=' . $search_value : '') . '&dir=' . $dir . '">' . ($order_by == "highest_rank" ? '<img src="img/arr_' . ($dir ? "dw" : "up") . '.gif" alt="" /> ' : '') . lang("char_list", "honor_kills") . '</a> </th> <th style="width: 10%;"> <!-- a href="char_list.php?order_by=guild&start=' . $start . ($search_value && $search_by ? '&search_by=' . $search_by . '&symbol=' . $_GET["symbol"] . '&search_value=' . $search_value : '') . '&dir=' . $dir . '" -->' . ($order_by == "guild" ? '<img src="img/arr_' . ($dir ? "dw" : "up") . '.gif" alt="" /> ' : '') . lang("char_list", "guild") . '<!-- /a --> </th> <th style="width: 10%;"> <a href="char_list.php?order_by=timestamp&start=' . $start . ($search_value && $search_by ? '&search_by=' . $search_by . '&symbol=' . $_GET["symbol"] . '&search_value=' . $search_value : '') . '&dir=' . $dir . '">' . ($order_by == "logout_time" ? '<img src="img/arr_' . ($dir ? "dw" : "up") . '.gif" alt="" /> ' : '') . lang("char_list", "lastseen") . '</a> </th> <th style="width: 1%;"> <a href="char_list.php?order_by=online&start=' . $start . ($search_value && $search_by ? '&search_by=' . $search_by . '&symbol=' . $_GET["symbol"] . '&search_value=' . $search_value : '') . '&dir=' . $dir . '">' . ($order_by == "online" ? '<img src="img/arr_' . ($dir ? "dw" : "up") . '.gif" alt="" /> ' : '') . ' <img src="img/lightning.png" onmousemove="oldtoolTip(\'' . lang("char_list", "online") . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" ' . ($order_by == "online" ? '' : 'style="position: relative; top: 7px;"') . ' /> </a> </th>'; if ($showcountryflag) { require_once "libs/misc_lib.php"; $output .= ' <th style="width: 1%;"> <img src="img/world.png" onmousemove="oldtoolTip(\'' . lang("global", "country") . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> </th>'; } if ($user_lvl >= $action_permission["update"]) { $output .= ' <th style="width: 1%;"> <img src="img/arrow_switch.png" onmousemove="oldtoolTip(\'' . lang("char_list", "char_tools") . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> </th>'; } $output .= ' </tr>'; $looping = $this_page < $itemperpage ? $this_page : $itemperpage; for ($i = 1; $i <= $looping; $i++) { // switched to fetch_assoc because using record indexes is for morons $char = $sql["char"]->fetch_assoc($query, 0) or die(error(lang("global", "err_no_user"))); // to disalow lower lvl gm to view accounts of other GMs if ($core == 1) { $a_query = $sql["logon"]->query("SELECT login FROM accounts WHERE acct='" . $char["acct"] . "'"); } else { $a_query = $sql["logon"]->query("SELECT username as login FROM account WHERE id='" . $char["acct"] . "'"); } $owner_acc_name = $sql["logon"]->result($a_query, 0, 'login'); $gm_query = $sql["mgr"]->query("SELECT SecurityLevel AS gm FROM config_accounts WHERE Login='******'"); $owner_gmlvl = $sql["mgr"]->result($gm_query, 0, 'gm'); if ($owner_gmlvl >= 1073741824) { $owner_gmlvl -= 1073741824; } $time_offset = $timezone_offset * 3600; if ($char["timestamp"] != 0) { // we only show hours if it was today if (date("M j, Y", $char["timestamp"] + $time_offset) == date("M j, Y", $time_offset)) { $lastseen = date(lang("char_list", "today") . " @ Hi", $char["timestamp"] + $time_offset); } else { $lastseen = date("M j, Y", $char["timestamp"] + $time_offset); } } else { $lastseen = "-"; } if ($core == 1) { $guild_id = $sql["char"]->result($sql["char"]->query("SELECT guildid FROM guild_data WHERE playerid='" . $char["guid"] . "'"), 0); $guild_name = $sql["char"]->result($sql["char"]->query("SELECT guildName FROM guilds WHERE guildid='" . $guild_id . "'")); } else { $guild_id = $sql["char"]->result($sql["char"]->query("SELECT guildid FROM guild_member WHERE guid='" . $char["guid"] . "'"), 0); $guild_name = $sql["char"]->result($sql["char"]->query("SELECT name FROM guild WHERE guildid='" . $guild_id . "'")); } // we need the screen name here // but first, we need the user name if ($core == 1) { $un_query = "SELECT * FROM accounts WHERE acct='" . $char["acct"] . "'"; } else { $un_query = "SELECT * FROM account WHERE id='" . $char["acct"] . "'"; } $un_results = $sql["logon"]->query($un_query); $un = $sql["logon"]->fetch_assoc($un_results); $sn_query = "SELECT * FROM config_accounts WHERE Login='******'"; $sn_result = $sql["mgr"]->query($sn_query); $sn = $sql["mgr"]->fetch_assoc($sn_result); if ($user_lvl >= $owner_gmlvl || $owner_acc_name == $user_name || $user_lvl == $action_permission["delete"]) { $output .= ' <tr> <td>'; if ($user_lvl >= $action_permission["delete"] || $owner_acc_name == $user_name) { $output .= ' <input type="checkbox" name="check[]" value="' . $char["guid"] . '" onclick="CheckCheckAll(document.form1);" />'; } $output .= ' </td> <td>' . $char["guid"] . '</td> <td> <a href="char.php?id=' . $char["guid"] . '">' . htmlentities($char["name"], ENT_COMPAT, $site_encoding) . '</a> </td>'; if ($sn["ScreenName"]) { $output .= ' <td> <a href="user.php?action=edit_user&error=11&acct=' . $char["acct"] . '">' . htmlentities($sn["ScreenName"], ENT_COMPAT, $site_encoding) . '</a> </td>'; } else { $output .= ' <td> <a href="user.php?action=edit_user&error=11&acct=' . $char["acct"] . '">' . htmlentities($owner_acc_name, ENT_COMPAT, $site_encoding) . '</a> </td>'; } $output .= ' <td> <img src="img/c_icons/' . $char["race"] . '-' . $char["gender"] . '.gif" onmousemove="oldtoolTip(\'' . char_get_race_name($char["race"]) . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> </td> <td> <img src="img/c_icons/' . $char["class"] . '.gif" onmousemove="oldtoolTip(\'' . char_get_class_name($char["class"]) . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> </td> <td> <span>' . char_get_level_color($char["level"]) . '</span> </td> <td> <span onmousemove="oldtoolTip(\'MapID:' . $char["mapid"] . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()">' . get_map_name($char["mapid"]) . '</span> </td> <td> <span onmousemove="oldtoolTip(\'ZoneID:' . $char["zoneid"] . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()">' . get_zone_name($char["zoneid"]) . '</span> </td> <td> <span>' . $char["highest_rank"] . '</span> </td> <td> <a href="guild.php?action=view_guild&error=3&id=' . $guild_id . '">' . htmlentities($guild_name, ENT_COMPAT, $site_encoding) . '</a> </td> <td> <span>' . $lastseen . '</span> </td> <td> <img src="img/' . ($char["online"] ? 'up' : 'down') . '.gif" alt="" /> </td>'; if ($showcountryflag) { $country = misc_get_country_by_account($char["acct"]); if ($country["code"]) { $output .= ' <td> <img src="img/flags/' . $country["code"] . '.png" onmousemove="oldtoolTip(\'' . $country["country"] . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> </td>'; } else { $output .= ' <td> <span>-</span> </td>'; } } if ($user_lvl >= $action_permission["update"]) { $output .= ' <td> <a href="char_tools.php?char=' . $char["guid"] . '"> <img src="img/arrow_switch.png" alt="" /> </a> </td>'; } $output .= ' </tr>'; } else { $output .= ' <tr> <td>*</td><td>***</td><td>***</td><td>You</td><td>Have</td><td>No</td><td class="small">Permission</td><td>to</td><td>View</td><td>this</td><td>Data</td><td>***</td><td>*</td>'; if ($showcountryflag) { $output .= '<td>*</td>'; } $output .= ' <td>*</td> </tr>'; } } unset($char); unset($result); $output .= ' <tr> <td colspan="13" align="right" class="hidden" style="width: 25%;">'; $output .= generate_pagination('char_list.php?order_by=' . $order_by . '&dir=' . ($dir ? 0 : 1) . ($search_value && $search_by ? '&symbol=' . $_GET["symbol"] . '&search_by=' . $search_by . '&search_value=' . $search_value . '' : ''), $all_record, $itemperpage, $start); $output .= ' </td> </tr> <tr> <td colspan="6" align="left" class="hidden">'; if ($user_lvl >= $action_permission["delete"] || $owner_acc_name == $user_name) { makebutton(lang("char_list", "del_selected_chars"), 'javascript:do_submit(\'form1\',0)" type="wrn', 220); } $output .= ' </td> <td colspan="7" align="right" class="hidden">' . lang("char_list", "tot_chars") . ' : ' . $all_record . '</td> </tr> </table> </form>'; }
function char_tools_form() { global $output, $characters_db, $realm_id, $action_permission, $site_encoding, $showcountryflag, $sql; valid_login($action_permission["delete"]); if (isset($_GET["char"])) { $id = $_GET["char"]; } else { error(lang("global", "empty_fields")); } if ($core == 1) { $result = $sql["char"]->query("SELECT guid, name, race, class, level, zoneid, mapid, online, gender\r\n acct, data \r\n FROM characters WHERE guid='" . $id . "'"); } elseif ($core == 2) { $result = $sql["char"]->query("SELECT guid, name, race, class, level, zone AS zoneid, map AS mapid, \r\n online, gender, totaltime, account AS acct,\r\n arenaPoints, totalHonorPoints, totalKills\r\n FROM characters WHERE guid='" . $id . "'"); } else { $result = $sql["char"]->query("SELECT guid, name, race, class, level, zone AS zoneid, map AS mapid, \r\n online, gender, totaltime, account AS acct, arenaPoints, totalHonorPoints, totalKills\r\n FROM characters WHERE guid='" . $id . "'"); } $char = $sql["char"]->fetch_assoc($result); if ($core == 1) { $char_data = $char["data"]; if (empty($char_data)) { $char_data = str_repeat("0;", PLAYER_END); } $char_data = explode(";", $char_data); } else { $query = "SELECT * FROM characters\r\n LEFT JOIN character_stats ON characters.guid=character_stats.guid\r\n WHERE characters.guid='" . $id . "'"; $char_data_result = $sql["char"]->query($query); $char_data_fields = $sql["char"]->fetch_assoc($char_data_result); $char_data[PLAYER_FIELD_HONOR_CURRENCY] = isset($char["totalHonorPoints"]) ? $char["totalHonorPoints"] : ' '; $char_data[PLAYER_FIELD_ARENA_CURRENCY] = isset($char["arenaPoints"]) ? $char["arenaPoints"] : ' '; $char_data[PLAYER_FIELD_LIFETIME_HONORBALE_KILLS] = isset($char["totalKills"]) ? $char["totalKills"] : ' '; } if ($core == 1) { $guild_id = $sql["char"]->result($sql["char"]->query("SELECT guildid FROM guild_data WHERE playerid='" . $char["guid"] . "'"), 0); $guild_rank = $sql["char"]->result($sql["char"]->query("SELECT guildRank FROM guild_data WHERE playerid='" . $char["guid"] . "'"), 0); $guild_name = $sql["char"]->result($sql["char"]->query("SELECT guildName FROM guilds WHERE guildid='" . $guild_id . "'")); } else { $guild_id = $sql["char"]->result($sql["char"]->query("SELECT guildid FROM guild_member WHERE guid='" . $char["guid"] . "'"), 0); $guild_rank = $sql["char"]->result($sql["char"]->query("SELECT rank AS guildRank FROM guild_member WHERE guid='" . $char["guid"] . "'"), 0); $guild_name = $sql["char"]->result($sql["char"]->query("SELECT name AS guildName FROM guild WHERE guildid='" . $guild_id . "'")); } $online = $char["online"] ? lang("char", "online") : lang("char", "offline"); if ($guild_id) { $guild_name = '<a href="guild.php?action=view_guild&realm=' . $realmid . '&error=3&id=' . $guild_id . '" >' . $guild_name . '</a>'; $mrank = $guild_rank; if ($core == 1) { $guild_rank = $sql["char"]->result($sql["char"]->query('SELECT rankname FROM guild_ranks WHERE guildid=' . $guild_id . ' AND rankId=' . $mrank . ''), 0, 'rankname'); } else { $guild_rank = $sql["char"]->result($sql["char"]->query('SELECT rname AS rankname FROM guild_rank WHERE guildid=' . $guild_id . ' AND rid=' . $mrank . ''), 0, 'rankname'); } } else { $guild_name = lang("global", "none"); $guild_rank = lang("global", "none"); } $output .= ' <center> <table class="hidden char_list_char_tools"> <tr> <td class="char_tools_avatar"> <div> <img src="' . char_get_avatar_img($char["level"], $char["gender"], $char["race"], $char["class"], 0) . '" alt="avatar" /> </div> </td> <td colspan="3"> <font class="bold"> ' . htmlentities($char["name"], ENT_COMPAT, $site_encoding) . ' - <img src="img/c_icons/' . $char["race"] . '-' . $char["gender"] . '.gif" onmousemove="oldtoolTip(\'' . char_get_race_name($char["race"]) . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> <img src="img/c_icons/' . $char["class"] . '.gif" onmousemove="oldtoolTip(\'' . char_get_class_name($char["class"]) . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> - ' . lang("char", "level_short") . char_get_level_color($char["level"]) . ' </font> <br />' . lang("char", "location") . ': ' . get_map_name($char["mapid"]) . ' - ' . get_zone_name($char["zoneid"]) . ' <br />' . lang("char", "honor_points") . ': ' . $char_data[PLAYER_FIELD_HONOR_CURRENCY] . ' | ' . lang("char", "arena_points") . ': ' . $char_data[PLAYER_FIELD_ARENA_CURRENCY] . ' | ' . lang("char", "honor_kills") . ': ' . $char_data[PLAYER_FIELD_LIFETIME_HONORBALE_KILLS] . ' <br />' . lang("char", "guild") . ': ' . $guild_name . ' | ' . lang("char", "rank") . ': ' . htmlentities($guild_rank, ENT_COMPAT, $site_encoding) . ' <br />' . lang("char", "online") . ': ' . ($char["online"] ? '<img src="img/up.gif" onmousemove="oldtoolTip(\'' . lang("char", "online") . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="online" />' : '<img src="img/down.gif" onmousemove="oldtoolTip(\'' . lang("char", "offline") . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="offline" />'); if ($showcountryflag) { require_once 'libs/misc_lib.php'; $country = misc_get_country_by_account($char["acct"]); $output .= ' | ' . lang("global", "country") . ': ' . ($country["code"] ? '<img src="img/flags/' . $country["code"] . '.png" onmousemove="oldtoolTip(\'' . $country["country"] . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" />' : '-'); unset($country); } $output .= ' </td> </tr> </table> <br /> <table class="hidden char_list_char_tools"> <tr> <td>'; makebutton(lang("xname", "changename"), "char_tools.php?char=" . $id, 150); $output .= ' </td> <td>'; makebutton(lang("xrace", "changerace"), "char_tools.php?char=" . $id, 150); $output .= ' </td> <td>'; makebutton(lang("unstuck", "unstuck"), "hearthstone.php?action=approve&char=" . $id, 150); $output .= ' </td> </tr> <tr> <td>'; makebutton(lang("char_list", "transfer"), "change_char_account.php?action=chooseacct&priority=1&char=" . $id, 150); $output .= ' </td> <td>'; makebutton(lang("global", "back"), "char_list.php", 150); $output .= ' </td> </tr> </table> </center>'; }
function char_main(&$sqlr, &$sqlc) { global $output, $lang_global, $lang_char, $lang_item, $realm_id, $realm_db, $characters_db, $world_db, $server, $mmfpm_db, $action_permission, $user_lvl, $user_name, $user_id, $item_datasite, $spell_datasite, $showcountryflag; // this page uses wowhead tooltops wowhead_tt(); require_once 'core/char/char_security.php'; $result = $sqlc->query('SELECT account, race FROM characters WHERE guid = ' . $id . ' LIMIT 1'); if ($sqlc->num_rows($result)) { //resrict by owner's gmlvl $owner_acc_id = $sqlc->result($result, 0, 'account'); $query = $sqlr->query('SELECT `username`, `gmlevel` FROM `account` LEFT JOIN `account_access` ON `account`.`id`=`account_access`.`id` WHERE `account`.`id` = ' . $owner_acc_id . ' ORDER BY `gmlevel` DESC LIMIT 1'); $owner_name = $sqlr->result($query, 0, 'username'); $owner_gmlvl = $sqlr->result($query, 0, 'gmlevel'); if (empty($owner_gmlvl)) { $owner_gmlvl = 0; } if ($user_lvl || $server[$realmid]['both_factions']) { $side_v = 0; $side_p = 0; } else { $side_p = in_array($sqlc->result($result, 0, 'race'), array(2, 5, 6, 8, 10)) ? 1 : 2; $result_1 = $sqlc->query('SELECT race FROM characters WHERE account = ' . $user_id . ' LIMIT 1'); if ($sqlc->num_rows($result)) { $side_v = in_array($sqlc->result($result_1, 0, 'race'), array(2, 5, 6, 8, 10)) ? 1 : 2; } else { $side_v = 0; } unset($result_1); } if ($user_lvl >= $owner_gmlvl && ($side_v === $side_p || !$side_v)) { $result = $sqlc->query('SELECT characters.equipmentCache, characters.name, characters.race, characters.class, characters.level, characters.zone, characters.map, characters.online, characters.totaltime, characters.gender, characters.account, character_stats.blockPct, character_stats.dodgePct, character_stats.parryPct, character_stats.critPct, character_stats.rangedCritPct, character_stats.spellCritPct, COALESCE(guild_member.guildid,0) AS guildid, COALESCE(guild_member.rank,0) AS rank, characters.totalHonorPoints, characters.arenaPoints, characters.totalKills, character_stats.maxhealth, character_stats.maxpower1, character_stats.strength, character_stats.agility, character_stats.stamina, character_stats.intellect, character_stats.spirit, character_stats.armor, character_stats.resHoly, character_stats.resFire, character_stats.resNature, character_stats.resFrost, character_stats.resShadow, character_stats.resArcane, character_stats.attackPower, character_stats.rangedAttackPower, character_stats.spellPower, characters.power2, character_stats.maxpower2, characters.power4, character_stats.maxpower4, characters.power3, character_stats.maxpower3 FROM characters LEFT JOIN character_stats ON characters.guid = character_stats.guid LEFT JOIN guild_member ON characters.guid = guild_member.guid WHERE characters.guid = ' . $id); $char = $sqlc->fetch_assoc($result); $eq_data = explode(' ', $char['equipmentCache']); $online = $char['online'] ? $lang_char['online'] : $lang_char['offline']; if ($char['guildid'] && $char['guildid'] != 0) { $guild_name = $sqlc->result($sqlc->query('SELECT name FROM guild WHERE guildid =' . $char['guildid'] . ''), 0, 'name'); $guild_name = '<a href="guild.php?action=view_guild&realm=' . $realmid . '&error=3&id=' . $char['guildid'] . '" >' . $guild_name . '</a>'; $mrank = $char['rank']; $guild_rank = $sqlc->result($sqlc->query('SELECT rname FROM guild_rank WHERE guildid =' . $char['guildid'] . ' AND rid=' . $mrank . ''), 0, 'rname'); } else { $guild_name = $lang_global['none']; $guild_rank = $lang_global['none']; } $block = round($char['blockPct'], 2); $dodge = round($char['dodgePct'], 2); $parry = round($char['parryPct'], 2); $crit = round($char['critPct'], 2); $ranged_crit = round($char['rangedCritPct'], 2); $spell_crit = round($char['spellCritPct'], 2); $spell_damage = $char['spellPower']; $rage = round($char['power2'] / 10); $maxrage = round($char['maxpower2'] / 10); //preventing undefined variables, didnt want to remove all this stuff so just filling the missing variables with 0 define('CHAR_DATA_OFFSET_MELEE_HIT', 0); define('CHAR_DATA_OFFSET_SPELL_HEAL', 1); define('CHAR_DATA_OFFSET_SPELL_HIT', 2); define('CHAR_DATA_OFFSET_SPELL_HASTE_RATING', 3); define('CHAR_DATA_OFFSET_RESILIENCE', 4); define('CHAR_DATA_OFFSET_RANGE_HIT', 5); $char_data = array(0, 0, 0, 0, 0, 0); $maxdamage = 0; $mindamage = 0; $maxrangeddamage = 0; $minrangeddamage = 0; $expertise = 0; $EQU_HEAD = $eq_data[EQ_DATA_OFFSET_EQU_HEAD]; $EQU_NECK = $eq_data[EQ_DATA_OFFSET_EQU_NECK]; $EQU_SHOULDER = $eq_data[EQ_DATA_OFFSET_EQU_SHOULDER]; $EQU_SHIRT = $eq_data[EQ_DATA_OFFSET_EQU_SHIRT]; $EQU_CHEST = $eq_data[EQ_DATA_OFFSET_EQU_CHEST]; $EQU_BELT = $eq_data[EQ_DATA_OFFSET_EQU_BELT]; $EQU_LEGS = $eq_data[EQ_DATA_OFFSET_EQU_LEGS]; $EQU_FEET = $eq_data[EQ_DATA_OFFSET_EQU_FEET]; $EQU_WRIST = $eq_data[EQ_DATA_OFFSET_EQU_WRIST]; $EQU_GLOVES = $eq_data[EQ_DATA_OFFSET_EQU_GLOVES]; $EQU_FINGER1 = $eq_data[EQ_DATA_OFFSET_EQU_FINGER1]; $EQU_FINGER2 = $eq_data[EQ_DATA_OFFSET_EQU_FINGER2]; $EQU_TRINKET1 = $eq_data[EQ_DATA_OFFSET_EQU_TRINKET1]; $EQU_TRINKET2 = $eq_data[EQ_DATA_OFFSET_EQU_TRINKET2]; $EQU_BACK = $eq_data[EQ_DATA_OFFSET_EQU_BACK]; $EQU_MAIN_HAND = $eq_data[EQ_DATA_OFFSET_EQU_MAIN_HAND]; $EQU_OFF_HAND = $eq_data[EQ_DATA_OFFSET_EQU_OFF_HAND]; $EQU_RANGED = $eq_data[EQ_DATA_OFFSET_EQU_RANGED]; $EQU_TABARD = $eq_data[EQ_DATA_OFFSET_EQU_TABARD]; /* // reserved incase we want to use back minimanagers' built in tooltip, instead of wowheads' // minimanagers' item tooltip needs updating, but it can show enchantments and sockets. $equiped_items = array ( 1 => array(($EQU_HEAD ? get_item_tooltip($EQU_HEAD) : 0),($EQU_HEAD ? get_item_icon($EQU_HEAD) : 0),($EQU_HEAD ? get_item_border($EQU_HEAD) : 0)), 2 => array(($EQU_NECK ? get_item_tooltip($EQU_NECK) : 0),($EQU_NECK ? get_item_icon($EQU_NECK) : 0),($EQU_NECK ? get_item_border($EQU_NECK) : 0)), 3 => array(($EQU_SHOULDER ? get_item_tooltip($EQU_SHOULDER) : 0),($EQU_SHOULDER ? get_item_icon($EQU_SHOULDER) : 0),($EQU_SHOULDER ? get_item_border($EQU_SHOULDER) : 0)), 4 => array(($EQU_SHIRT ? get_item_tooltip($EQU_SHIRT) : 0),($EQU_SHIRT ? get_item_icon($EQU_SHIRT) : 0),($EQU_SHIRT ? get_item_border($EQU_SHIRT) : 0)), 5 => array(($EQU_CHEST ? get_item_tooltip($EQU_CHEST) : 0),($EQU_CHEST ? get_item_icon($EQU_CHEST) : 0),($EQU_CHEST ? get_item_border($EQU_CHEST) : 0)), 6 => array(($EQU_BELT ? get_item_tooltip($EQU_BELT) : 0),($EQU_BELT ? get_item_icon($EQU_BELT) : 0),($EQU_BELT ? get_item_border($EQU_BELT) : 0)), 7 => array(($EQU_LEGS ? get_item_tooltip($EQU_LEGS) : 0),($EQU_LEGS ? get_item_icon($EQU_LEGS) : 0),($EQU_LEGS ? get_item_border($EQU_LEGS) : 0)), 8 => array(($EQU_FEET ? get_item_tooltip($EQU_FEET) : 0),($EQU_FEET ? get_item_icon($EQU_FEET) : 0),($EQU_FEET ? get_item_border($EQU_FEET) : 0)), 9 => array(($EQU_WRIST ? get_item_tooltip($EQU_WRIST) : 0),($EQU_WRIST ? get_item_icon($EQU_WRIST) : 0),($EQU_WRIST ? get_item_border($EQU_WRIST) : 0)), 10 => array(($EQU_GLOVES ? get_item_tooltip($EQU_GLOVES) : 0),($EQU_GLOVES ? get_item_icon($EQU_GLOVES) : 0),($EQU_GLOVES ? get_item_border($EQU_GLOVES) : 0)), 11 => array(($EQU_FINGER1 ? get_item_tooltip($EQU_FINGER1) : 0),($EQU_FINGER1 ? get_item_icon($EQU_FINGER1) : 0),($EQU_FINGER1 ? get_item_border($EQU_FINGER1) : 0)), 12 => array(($EQU_FINGER2 ? get_item_tooltip($EQU_FINGER2) : 0),($EQU_FINGER2 ? get_item_icon($EQU_FINGER2) : 0),($EQU_FINGER2 ? get_item_border($EQU_FINGER2) : 0)), 13 => array(($EQU_TRINKET1 ? get_item_tooltip($EQU_TRINKET1) : 0),($EQU_TRINKET1 ? get_item_icon($EQU_TRINKET1) : 0),($EQU_TRINKET1 ? get_item_border($EQU_TRINKET1) : 0)), 14 => array(($EQU_TRINKET2 ? get_item_tooltip($EQU_TRINKET2) : 0),($EQU_TRINKET2 ? get_item_icon($EQU_TRINKET2) : 0),($EQU_TRINKET2 ? get_item_border($EQU_TRINKET2) : 0)), 15 => array(($EQU_BACK ? get_item_tooltip($EQU_BACK) : 0),($EQU_BACK ? get_item_icon($EQU_BACK) : 0),($EQU_BACK ? get_item_border($EQU_BACK) : 0)), 16 => array(($EQU_MAIN_HAND ? get_item_tooltip($EQU_MAIN_HAND) : 0),($EQU_MAIN_HAND ? get_item_icon($EQU_MAIN_HAND) : 0),($EQU_MAIN_HAND ? get_item_border($EQU_MAIN_HAND) : 0)), 17 => array(($EQU_OFF_HAND ? get_item_tooltip($EQU_OFF_HAND) : 0),($EQU_OFF_HAND ? get_item_icon($EQU_OFF_HAND) : 0),($EQU_OFF_HAND ? get_item_border($EQU_OFF_HAND) : 0)), 18 => array(($EQU_RANGED ? get_item_tooltip($EQU_RANGED) : 0),($EQU_RANGED ? get_item_icon($EQU_RANGED) : 0),($EQU_RANGED ? get_item_border($EQU_RANGED) : 0)), 19 => array(($EQU_TABARD ? get_item_tooltip($EQU_TABARD) : 0),($EQU_TABARD ? get_item_icon($EQU_TABARD) : 0),($EQU_TABARD ? get_item_border($EQU_TABARD) : 0)) ); */ $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); $sqlw = new SQL(); $sqlw->connect($world_db[$realmid]['addr'], $world_db[$realmid]['user'], $world_db[$realmid]['pass'], $world_db[$realmid]['name']); $equiped_items = array(1 => array('', $EQU_HEAD ? get_item_icon($EQU_HEAD, $sqlm, $sqlw) : 0, $EQU_HEAD ? get_item_border($EQU_HEAD, $sqlw) : 0), 2 => array('', $EQU_NECK ? get_item_icon($EQU_NECK, $sqlm, $sqlw) : 0, $EQU_NECK ? get_item_border($EQU_NECK, $sqlw) : 0), 3 => array('', $EQU_SHOULDER ? get_item_icon($EQU_SHOULDER, $sqlm, $sqlw) : 0, $EQU_SHOULDER ? get_item_border($EQU_SHOULDER, $sqlw) : 0), 4 => array('', $EQU_SHIRT ? get_item_icon($EQU_SHIRT, $sqlm, $sqlw) : 0, $EQU_SHIRT ? get_item_border($EQU_SHIRT, $sqlw) : 0), 5 => array('', $EQU_CHEST ? get_item_icon($EQU_CHEST, $sqlm, $sqlw) : 0, $EQU_CHEST ? get_item_border($EQU_CHEST, $sqlw) : 0), 6 => array('', $EQU_BELT ? get_item_icon($EQU_BELT, $sqlm, $sqlw) : 0, $EQU_BELT ? get_item_border($EQU_BELT, $sqlw) : 0), 7 => array('', $EQU_LEGS ? get_item_icon($EQU_LEGS, $sqlm, $sqlw) : 0, $EQU_LEGS ? get_item_border($EQU_LEGS, $sqlw) : 0), 8 => array('', $EQU_FEET ? get_item_icon($EQU_FEET, $sqlm, $sqlw) : 0, $EQU_FEET ? get_item_border($EQU_FEET, $sqlw) : 0), 9 => array('', $EQU_WRIST ? get_item_icon($EQU_WRIST, $sqlm, $sqlw) : 0, $EQU_WRIST ? get_item_border($EQU_WRIST, $sqlw) : 0), 10 => array('', $EQU_GLOVES ? get_item_icon($EQU_GLOVES, $sqlm, $sqlw) : 0, $EQU_GLOVES ? get_item_border($EQU_GLOVES, $sqlw) : 0), 11 => array('', $EQU_FINGER1 ? get_item_icon($EQU_FINGER1, $sqlm, $sqlw) : 0, $EQU_FINGER1 ? get_item_border($EQU_FINGER1, $sqlw) : 0), 12 => array('', $EQU_FINGER2 ? get_item_icon($EQU_FINGER2, $sqlm, $sqlw) : 0, $EQU_FINGER2 ? get_item_border($EQU_FINGER2, $sqlw) : 0), 13 => array('', $EQU_TRINKET1 ? get_item_icon($EQU_TRINKET1, $sqlm, $sqlw) : 0, $EQU_TRINKET1 ? get_item_border($EQU_TRINKET1, $sqlw) : 0), 14 => array('', $EQU_TRINKET2 ? get_item_icon($EQU_TRINKET2, $sqlm, $sqlw) : 0, $EQU_TRINKET2 ? get_item_border($EQU_TRINKET2, $sqlw) : 0), 15 => array('', $EQU_BACK ? get_item_icon($EQU_BACK, $sqlm, $sqlw) : 0, $EQU_BACK ? get_item_border($EQU_BACK, $sqlw) : 0), 16 => array('', $EQU_MAIN_HAND ? get_item_icon($EQU_MAIN_HAND, $sqlm, $sqlw) : 0, $EQU_MAIN_HAND ? get_item_border($EQU_MAIN_HAND, $sqlw) : 0), 17 => array('', $EQU_OFF_HAND ? get_item_icon($EQU_OFF_HAND, $sqlm, $sqlw) : 0, $EQU_OFF_HAND ? get_item_border($EQU_OFF_HAND, $sqlw) : 0), 18 => array('', $EQU_RANGED ? get_item_icon($EQU_RANGED, $sqlm, $sqlw) : 0, $EQU_RANGED ? get_item_border($EQU_RANGED, $sqlw) : 0), 19 => array('', $EQU_TABARD ? get_item_icon($EQU_TABARD, $sqlm, $sqlw) : 0, $EQU_TABARD ? get_item_border($EQU_TABARD, $sqlw) : 0)); if ($user_lvl > $owner_gmlvl || $owner_name === $user_name) { $output .= ' <center> <div id="tab_content"> <h1>' . $lang_char['char_sheet'] . '</h1><br /> <div id="tab"> <ul> <li><a href="char.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['char_sheet'] . '</a></li> <li><a href="char_inv.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['inventory'] . '</a></li> <li><a href="char_extra.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['extra'] . '</a></li> ' . ($char['level'] < 10 ? '' : '<li><a href="char_talent.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['talents'] . '</a></li>') . ' <li><a href="char_achieve.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['achievements'] . '</a></li> <li><a href="char_rep.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['reputation'] . '</a></li> <li><a href="char_skill.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['skills'] . '</a></li> <li><a href="char_quest.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['quests'] . '</a></li>'; if (char_get_class_name($char['class']) === 'Hunter') { $output .= ' <li><a href="char_pets.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['pets'] . '</a></li>'; } $output .= ' <li><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['friends'] . '</a></li> <li><a href="char_spell.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['spells'] . '</a></li> <li><a href="char_mail.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['mail'] . '</a></li>'; } else { $output .= ' <center> <div id="tab_content"> <h1>' . $lang_char['char_sheet'] . '</h1><br /> <div id="tab"> <ul> <li><a href="char.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['char_sheet'] . '</a></li>'; } $output .= ' </ul> </div> <div id="tab_content2"> <table class="lined" style="width: 580px;"> <tr> <td colspan="2"> <div> <img src="' . char_get_avatar_img($char['level'], $char['gender'], $char['race'], $char['class'], 0) . '" alt="avatar" /> </div> <div>'; $a_results = $sqlc->query('SELECT DISTINCT spell FROM character_aura WHERE guid = ' . $id . ''); if ($sqlc->num_rows($a_results)) { while ($aura = $sqlc->fetch_assoc($a_results)) { $output .= ' <a style="padding:2px;" href="' . $spell_datasite . $aura['spell'] . '" target="_blank"> <img src="' . spell_get_icon($aura['spell'], $sqlm) . '" alt="' . $aura['spell'] . '" width="24" height="24" /> </a>'; } } $output .= ' </div> </td> <td colspan="4"> <font class="bold"> ' . htmlentities($char['name']) . ' - <img src="img/c_icons/' . $char['race'] . '-' . $char['gender'] . '.gif" onmousemove="toolTip(\'' . char_get_race_name($char['race']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /> <img src="img/c_icons/' . $char['class'] . '.gif" onmousemove="toolTip(\'' . char_get_class_name($char['class']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /> - lvl ' . char_get_level_color($char['level']) . ' </font> <br />' . get_map_name($char['map'], $sqlm) . ' - ' . get_zone_name($char['zone'], $sqlm) . ' <br />' . $lang_char['honor_points'] . ': ' . $char['totalHonorPoints'] . ' / ' . $char['arenaPoints'] . ' - ' . $lang_char['honor_kills'] . ': ' . $char['totalKills'] . ' <br />' . $lang_char['guild'] . ': ' . $guild_name . ' | ' . $lang_char['rank'] . ': ' . htmlentities($guild_rank) . ' <br />' . ($char['online'] ? '<img src="img/up.gif" onmousemove="toolTip(\'Online\', \'item_tooltip\')" onmouseout="toolTip()" alt="online" />' : '<img src="img/down.gif" onmousemove="toolTip(\'Offline\', \'item_tooltip\')" onmouseout="toolTip()" alt="offline" />'); if ($showcountryflag) { require_once 'libs/misc_lib.php'; $country = misc_get_country_by_account($char['account'], $sqlr, $sqlm); $output .= ' - ' . ($country['code'] ? '<img src="img/flags/' . $country['code'] . '.png" onmousemove="toolTip(\'' . $country['country'] . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" />' : '-'); unset($country); } $output .= ' </td> </tr> <tr> <td width="6%">'; if ($equiped_items[1][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_HEAD . '" target="_blank"> <img src="' . $equiped_items[1][1] . '" class="' . $equiped_items[1][2] . '" alt="Head" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_head.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td class="half_line" colspan="2" align="center" width="50%"> <div class="gradient_p">' . $lang_item['health'] . ':</div> <div class="gradient_pp">' . $char['maxhealth'] . '</div>'; if ($char['class'] == 11) { //druid $output .= ' </br> <div class="gradient_p">' . $lang_item['energy'] . ':</div> <div class="gradient_pp">' . $char['power4'] . '/' . $char['maxpower4'] . '</div>'; } $output .= ' </td> <td class="half_line" colspan="2" align="center" width="50%">'; if ($char['class'] == 1) { // warrior $output .= ' <div class="gradient_p">' . $lang_item['rage'] . ':</div> <div class="gradient_pp">' . $rage . '/' . $maxrage . '</div>'; } elseif ($char['class'] == 4) { // rogue $output .= ' <div class="gradient_p">' . $lang_item['energy'] . ':</div> <div class="gradient_pp">' . $char['power4'] . '/' . $char['maxpower4'] . '</div>'; } elseif ($char['class'] == 6) { // death knight // Don't know if FOCUS is the right one need to verify with Death Knight player. $output .= ' <div class="gradient_p">' . $lang_item['runic'] . ':</div> <div class="gradient_pp">' . $char['power3'] . '/' . $char['maxpower3'] . '</div>'; } elseif ($char['class'] == 11) { // druid $output .= ' <div class="gradient_p">' . $lang_item['mana'] . ':</div> <div class="gradient_pp">' . $char['maxpower1'] . '</div> </br> <div class="gradient_p">' . $lang_item['rage'] . ':</div> <div class="gradient_pp">' . $rage . '/' . $maxrage . '</div>'; } elseif ($char['class'] == 2 || $char['class'] == 3 || $char['class'] == 5 || $char['class'] == 7 || $char['class'] == 8 || $char['class'] == 9) { // warlock $output .= ' <div class="gradient_p">' . $lang_item['mana'] . ':</div> <div class="gradient_pp">' . $char['maxpower1'] . '</div>'; } $output .= ' </td> <td width="6%">'; if ($equiped_items[10][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_GLOVES . '" target="_blank"> <img src="' . $equiped_items[10][1] . '" class="' . $equiped_items[10][2] . '" alt="Gloves" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_gloves.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td width="1%">'; if ($equiped_items[2][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_NECK . '" target="_blank"> <img src="' . $equiped_items[2][1] . '" class="' . $equiped_items[2][2] . '" alt="Neck" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_neck.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td class="half_line" colspan="2" rowspan="3" align="center" width="50%"> <div class="gradient_p"> ' . $lang_item['strength'] . ':<br /> ' . $lang_item['agility'] . ':<br /> ' . $lang_item['stamina'] . ':<br /> ' . $lang_item['intellect'] . ':<br /> ' . $lang_item['spirit'] . ':<br /> ' . $lang_item['armor'] . ': </div> <div class="gradient_pp"> ' . $char['strength'] . '<br /> ' . $char['agility'] . '<br /> ' . $char['stamina'] . '<br /> ' . $char['intellect'] . '<br /> ' . $char['spirit'] . '<br /> ' . $char['armor'] . ' </div> </td> <td class="half_line" colspan="2" rowspan="3" align="center" width="50%"> <div class="gradient_p"> ' . $lang_item['res_holy'] . ':<br /> ' . $lang_item['res_arcane'] . ':<br /> ' . $lang_item['res_fire'] . ':<br /> ' . $lang_item['res_nature'] . ':<br /> ' . $lang_item['res_frost'] . ':<br /> ' . $lang_item['res_shadow'] . ': </div> <div class="gradient_pp"> ' . $char['resHoly'] . '<br /> ' . $char['resArcane'] . '<br /> ' . $char['resFire'] . '<br /> ' . $char['resNature'] . '<br /> ' . $char['resFrost'] . '<br /> ' . $char['resShadow'] . ' </div> </td> <td width="1%">'; if ($equiped_items[6][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_BELT . '" target="_blank"> <img src="' . $equiped_items[6][1] . '" class="' . $equiped_items[6][2] . '" alt="Belt" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_waist.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td width="1%">'; if ($equiped_items[3][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_SHOULDER . '" target="_blank"> <img src="' . $equiped_items[3][1] . '" class="' . $equiped_items[3][2] . '" alt="Shoulder" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_shoulder.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td width="1%">'; if ($equiped_items[7][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_LEGS . '" target="_blank"> <img src="' . $equiped_items[7][1] . '" class="' . $equiped_items[7][2] . '" alt="Legs" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_legs.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td width="1%">'; if ($equiped_items[15][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_BACK . '" target="_blank"> <img src="' . $equiped_items[15][1] . '" class="' . $equiped_items[15][2] . '" alt="Back" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_chest_back.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td width="1%">'; if ($equiped_items[8][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_FEET . '" target="_blank"> <img src="' . $equiped_items[8][1] . '" class="' . $equiped_items[8][2] . '" alt="Feet" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_feet.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td width="1%">'; if ($equiped_items[5][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_CHEST . '" target="_blank"> <img src="' . $equiped_items[5][1] . '" class="' . $equiped_items[5][2] . '" alt="Chest" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_chest_back.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td class="half_line" colspan="2" rowspan="2" align="center" width="50%"> <div class="gradient_p"> ' . $lang_char['melee_d'] . ':<br /> ' . $lang_char['melee_ap'] . ':<br /> ' . $lang_char['melee_hit'] . ':<br /> ' . $lang_char['melee_crit'] . ':<br /> ' . $lang_char['expertise'] . ':<br /> </div> <div class="gradient_pp"> ' . $mindamage . '-' . $maxdamage . '<br /> ' . $char['attackPower'] . '<br /> ' . $char_data[CHAR_DATA_OFFSET_MELEE_HIT] . '<br /> ' . $crit . '%<br /> ' . $expertise . '<br /> </div> </td> <td class="half_line" colspan="2" rowspan="2" align="center" width="50%"> <div class="gradient_p"> ' . $lang_char['spell_d'] . ':<br /> ' . $lang_char['spell_heal'] . ':<br /> ' . $lang_char['spell_hit'] . ':<br /> ' . $lang_char['spell_crit'] . ':<br /> ' . $lang_char['spell_haste'] . ' </div> <div class="gradient_pp"> ' . $spell_damage . '<br /> ' . $char_data[CHAR_DATA_OFFSET_SPELL_HEAL] . '<br /> ' . $char_data[CHAR_DATA_OFFSET_SPELL_HIT] . '<br /> ' . $spell_crit . '%<br /> ' . $char_data[CHAR_DATA_OFFSET_SPELL_HASTE_RATING] . ' </div> </td> <td width="1%">'; if ($equiped_items[11][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_FINGER1 . '" target="_blank"> <img src="' . $equiped_items[11][1] . '" class="' . $equiped_items[11][2] . '" alt="Finger1" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_finger.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td width="1%">'; if ($equiped_items[4][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_SHIRT . '" target="_blank"> <img src="' . $equiped_items[4][1] . '" class="' . $equiped_items[4][2] . '" alt="Shirt" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_shirt.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td width="1%">'; if ($equiped_items[12][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_FINGER2 . '" target="_blank"> <img src="' . $equiped_items[12][1] . '" class="' . $equiped_items[12][2] . '" alt="Finger2" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_finger.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td width="1%">'; if ($equiped_items[19][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_TABARD . '" target="_blank"> <img src="' . $equiped_items[19][1] . '" class="' . $equiped_items[19][2] . '" alt="Tabard" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_tabard.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td class="half_line" colspan="2" rowspan="2" align="center" width="50%"> <div class="gradient_p"> ' . $lang_char['dodge'] . ':<br /> ' . $lang_char['parry'] . ':<br /> ' . $lang_char['block'] . ':<br /> ' . $lang_char['resilience'] . ':<br /> </div> <div class="gradient_pp"> ' . $dodge . '%<br /> ' . $parry . '%<br /> ' . $block . '%<br /> ' . $char_data[CHAR_DATA_OFFSET_RESILIENCE] . '<br /> </div> </td> <td class="half_line" colspan="2" rowspan="2" align="center" width="50%"> <div class="gradient_p"> ' . $lang_char['ranged_d'] . ':<br /> ' . $lang_char['ranged_ap'] . ':<br /> ' . $lang_char['ranged_hit'] . ':<br /> ' . $lang_char['ranged_crit'] . ':<br /> </div> <div class="gradient_pp"> ' . $minrangeddamage . '-' . $maxrangeddamage . '<br /> ' . $char['rangedAttackPower'] . '<br /> ' . $char_data[CHAR_DATA_OFFSET_RANGE_HIT] . '<br /> ' . $ranged_crit . '%<br /> </div> </td> <td width="1%">'; if ($equiped_items[13][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_TRINKET1 . '" target="_blank"> <img src="' . $equiped_items[13][1] . '" class="' . $equiped_items[13][2] . '" alt="Trinket1" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_trinket.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td width="1%">'; if ($equiped_items[9][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_WRIST . '" target="_blank"> <img src="' . $equiped_items[9][1] . '" class="' . $equiped_items[9][2] . '" alt="Wrist" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_wrist.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td width="1%">'; if ($equiped_items[14][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_TRINKET2 . '" target="_blank"> <img src="' . $equiped_items[14][1] . '" class="' . $equiped_items[14][2] . '" alt="Trinket2" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_trinket.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td></td> <td width="15%">'; if ($equiped_items[16][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_MAIN_HAND . '" target="_blank"> <img src="' . $equiped_items[16][1] . '" class="' . $equiped_items[16][2] . '" alt="MainHand" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_main_hand.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td width="15%">'; if ($equiped_items[17][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_OFF_HAND . '" target="_blank"> <img src="' . $equiped_items[17][1] . '" class="' . $equiped_items[17][2] . '" alt="OffHand" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_off_hand.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td width="15%">'; if ($equiped_items[18][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_RANGED . '" target="_blank"> <img src="' . $equiped_items[18][1] . '" class="' . $equiped_items[18][2] . '" alt="Ranged" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_ranged.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td width="15%"></td> <td></td> </tr>'; if ($user_lvl > $owner_gmlvl || $owner_name === $user_name) { //total time played $tot_time = $char['totaltime']; $tot_days = (int) ($tot_time / 86400); $tot_time = $tot_time - $tot_days * 86400; $total_hours = (int) ($tot_time / 3600); $tot_time = $tot_time - $total_hours * 3600; $total_min = (int) ($tot_time / 60); $output .= ' <tr> <td colspan="6"> ' . $lang_char['tot_paly_time'] . ': ' . $tot_days . ' ' . $lang_char['days'] . ' ' . $total_hours . ' ' . $lang_char['hours'] . ' ' . $total_min . ' ' . $lang_char['min'] . ' </td> </tr>'; } $output .= ' </table> </div> <br /> </div> <br />'; require_once 'core/char/char_footer.php'; $output .= ' <br /> </center>'; } else { error($lang_char['no_permission']); } } else { error($lang_char['no_char_found']); } }
function view_guild() { global $output, $logon_db, $characters_db, $corem_db, $realm_id, $itemperpage, $action_permission, $user_lvl, $user_id, $showcountryflag, $site_encoding, $show_guild_emblem, $sql, $core; if (!isset($_GET["id"])) { redirect("guild.php?error=1"); } $guild_id = $sql["char"]->quote_smart($_GET["id"]); if (!is_numeric($guild_id)) { redirect("guild.php?error=6"); } //==========================SQL INGUILD and GUILDLEADER====================== if ($core == 1) { $q_inguild = $sql["char"]->query("SELECT 1 FROM guild_data WHERE guildid='" . $guild_id . "' AND playerid IN (SELECT guid FROM characters WHERE acct='" . $user_id . "')"); } else { $q_inguild = $sql["char"]->query("SELECT 1 FROM guild_member WHERE guildid='" . $guild_id . "' AND guid IN (SELECT guid FROM characters WHERE account='" . $user_id . "')"); } $inguild = $sql["char"]->result($q_inguild, 0, "1"); if ($user_lvl < $action_permission["update"] && !$inguild) { redirect("guild.php?error=6"); } if ($core == 1) { $q_amIguildleader = $sql["char"]->query("SELECT 1 FROM guilds WHERE guildid='" . $guild_id . "' AND leaderguid IN (SELECT guid FROM characters WHERE acct='" . $user_id . "')"); } else { $q_amIguildleader = $sql["char"]->query("SELECT 1 FROM guild WHERE guildid='" . $guild_id . "' AND leaderguid IN (SELECT guid FROM characters WHERE account='" . $user_id . "')"); } $amIguildleader = $sql["char"]->result($q_amIguildleader, 0, "1"); if ($core == 1) { $q_guildmemberCount = $sql["char"]->query("SELECT 1 FROM guild_data WHERE guildid='" . $guild_id . "'"); } else { $q_guildmemberCount = $sql["char"]->query("SELECT 1 from guild_member where guildid='" . $guild_id . "'"); } $guildmemberCount = $sql["char"]->num_rows($q_guildmemberCount); //====================SQL INGUILD and GUILDLEADER end======================== //==========================$_GET and SECURE================================= $start = isset($_GET["start"]) ? $sql["char"]->quote_smart($_GET["start"]) : 0; if (is_numeric($start)) { } else { $start = 0; } $order_by = isset($_GET["order_by"]) ? $sql["char"]->quote_smart($_GET["order_by"]) : "mrank"; if (!preg_match("/^[_[:lower:]]{1,10}\$/", $order_by)) { $order_by = "mrank"; } $dir = isset($_GET["dir"]) ? $sql["char"]->quote_smart($_GET["dir"]) : 1; if (!preg_match("/^[01]{1}\$/", $dir)) { $dir = 1; } $order_dir = $dir ? "ASC" : "DESC"; $dir = $dir ? 0 : 1; //==========================$_GET and SECURE end============================= if ($core == 1) { $query = $sql["char"]->query("SELECT guildid, guildname AS name, guildinfo AS info, MOTD, createdate,\n (SELECT COUNT(*) FROM guild_data WHERE guildid='" . $guild_id . "') AS mtotal,\n (SELECT COUNT(*) FROM guild_data WHERE guildid='" . $guild_id . "' AND playerid IN\n (SELECT guid FROM characters WHERE online=1)) AS monline,\n emblemStyle AS EmblemStyle,\n emblemColor AS EmblemColor,\n borderStyle AS BorderStyle,\n borderColor AS BorderColor,\n backgroundColor AS BackgroundColor\n FROM guilds WHERE guildid='" . $guild_id . "'"); } else { $query = $sql["char"]->query("SELECT guildid, name, info, MOTD, createdate,\n (SELECT COUNT(*) FROM guild_member where guildid='" . $guild_id . "') AS mtotal,\n (SELECT COUNT(*) FROM guild_member where guildid='" . $guild_id . "' AND guid IN\n (SELECT guid FROM characters WHERE online=1)) AS monline,\n EmblemStyle, EmblemColor, BorderStyle, BorderColor, BackgroundColor\n FROM guild WHERE guildid='" . $guild_id . "'"); } $guild_data = $sql["char"]->fetch_assoc($query); $output .= ' <script type="text/javascript"> answerbox.btn_ok="' . lang("global", "yes") . '"; answerbox.btn_cancel="' . lang("global", "no") . '"; </script> <div class="guild_fieldset fieldset_border"> <span class="legend">' . lang("guild", "guild") . '</span> <table class="lined"> <tr> <td style="width: 25%;" class="hidden"><b>' . lang("guild", "create_date") . ':</b><br />' . date("o-m-d", $guild_data["createdate"]) . '</td> <td style="width: 50%;" class="bold hidden" colspan="2">' . $guild_data["name"] . '</td> <td style="width: 25%;" class="hidden"><b>' . lang("guild", "tot_m_online") . ':</b><br />' . $guild_data["monline"] . ' / ' . $guild_data["mtotal"] . '</td> </tr> <tr> <td colspan="2" class="hidden"><b>' . lang("guild", "info") . ':</b><br />' . $guild_data["info"] . '</td> <td colspan="2" class="hidden"><b>' . lang("guild", "motd") . ':</b><br />' . $guild_data["MOTD"] . '</td> </tr>'; if ($show_guild_emblem) { $output .= ' <tr> <td colspan="4" class="hidden"> <div id="guild_emblem"> <div> <img id="guild_view_background" src="img/emblems/Background_' . doubledigit($guild_data["BackgroundColor"]) . '.png" alt="" /> <img id="guild_view_emblem" src="img/emblems/Emblem_' . doubledigit($guild_data["EmblemStyle"]) . '_' . doubledigit($guild_data["EmblemColor"]) . '.png" alt="" /> <img id="guild_view_border" src="img/emblems/Border_' . doubledigit($guild_data["BorderStyle"]) . '_' . doubledigit($guild_data["BorderColor"]) . '.png" alt="" /> <img id="guild_emblem_border" src="img/EmblemBorder.png" alt="" /> </div> </div> </td> </tr> <tr> <td id="guild_pages_background" style="text-align: right;" colspan="4">' . generate_pagination("guild.php?action=view_guild&id=" . $guild_id . "&order_by=" . $order_by . "&dir=" . ($dir ? 0 : 1), $guildmemberCount, $itemperpage, $start) . '</td> </tr> </table> <table class="lined"> <tr> <th style="width: 1%;">' . lang("guild", "remove") . '</th> <th style="width: 15%;"><a href="guild.php?action=view_guild&error=3&id=' . $guild_id . '&order_by=cname&start=' . $start . '&dir=' . $dir . '">' . ($order_by == "cname" ? '<img src="img/arr_' . ($dir ? "up" : "dw") . '.gif" alt="" /> ' : '') . lang("guild", "name") . '</a></th> <th style="width: 1%;"><a href="guild.php?action=view_guild&error=3&id=' . $guild_id . '&order_by=crace&start=' . $start . '&dir=' . $dir . '">' . ($order_by == "crace" ? '<img src="img/arr_' . ($dir ? "up" : "dw") . '.gif" alt="" /> ' : '') . lang("guild", "race") . '</a></th> <th style="width: 1%;"><a href="guild.php?action=view_guild&error=3&id=' . $guild_id . '&order_by=class&start=' . $start . '&dir=' . $dir . '">' . ($order_by == "cclass" ? '<img src="img/arr_' . ($dir ? "up" : "dw") . '.gif" alt="" /> ' : '') . lang("guild", "class") . '</a></th> <th style="width: 1%;"><a href="guild.php?action=view_guild&error=3&id=' . $guild_id . '&order_by=clevel&start=' . $start . '&dir=' . $dir . '">' . ($order_by == "clevel" ? '<img src="img/arr_' . ($dir ? "up" : "dw") . '.gif" alt="" /> ' : '') . lang("guild", "level") . '</a></th> <th style="width: 25%;"><a href="guild.php?action=view_guild&error=3&id=' . $guild_id . '&order_by=mrank&start=' . $start . '&dir=' . $dir . '">' . ($order_by == "mrank" ? '<img src="img/arr_' . ($dir ? "up" : "dw") . '.gif" alt="" /> ' : '') . lang("guild", "rank") . '</a></th> <th style="width: 15%;">' . lang("guild", "pnote") . '</th> <th style="width: 15%;">' . lang("guild", "offnote") . '</th> <th style="width: 15%;"><a href="guild.php?action=view_guild&error=3&id=' . $guild_id . '&order_by=clogout&start=' . $start . '&dir=' . $dir . '">' . ($order_by == "clogout" ? '<img src="img/arr_' . ($dir ? "up" : "dw") . '.gif" alt="" /> ' : '') . lang("guild", "llogin") . '</a></th> <th style="width: 1%;"><a href="guild.php?action=view_guild&error=3&id=' . $guild_id . '&order_by=conline&start=' . $start . '&dir=' . $dir . '">' . ($order_by == "conline" ? '<img src="img/arr_' . ($dir ? "up" : "dw") . '.gif" alt="" /> ' : '') . lang("guild", "online") . '</a></th>'; } if ($showcountryflag) { require_once "libs/misc_lib.php"; $output .= ' <th style="width: 1%;">' . lang("global", "country") . '</th>'; } $output .= ' </tr>'; // this_is_junk: WTF? O_o if ($core == 1) { $members = $sql["char"]->query("SELECT gm.playerid AS cguid, c.name AS cname, c.`race` AS crace, c.`class` AS cclass,\n c.`level` AS clevel,\n gm.guildrank AS mrank, (SELECT rankname FROM guild_ranks WHERE guildid='" . $guild_id . "' AND rankid=mrank) AS rname,\n gm.publicNote AS pnote, gm.officerNote AS offnote, gender,\n c.`online` AS conline, c.`acct`, c.`timestamp` AS clogout\n FROM guild_data AS gm LEFT OUTER JOIN characters AS c ON c.guid=gm.playerid\n WHERE gm.guildid='" . $guild_id . "' ORDER BY " . $order_by . " " . $order_dir . " LIMIT " . $start . ", " . $itemperpage); } else { $members = $sql["char"]->query("SELECT gm.guid AS cguid, c.name AS cname, c.`race` AS crace, c.`class` AS cclass,\n c.`level` AS clevel,\n gm.rank AS mrank, (SELECT rname FROM guild_rank WHERE guildid='" . $guild_id . "' AND rid=mrank) AS rname,\n gm.pnote AS pnote, gm.offnote AS offnote, gender,\n c.`online` AS conline, c.`account` AS acct, c.`logout_time` AS clogout\n FROM guild_member AS gm LEFT OUTER JOIN characters AS c ON c.guid=gm.guid\n WHERE gm.guildid='" . $guild_id . "' ORDER BY " . $order_by . " " . $order_dir . " LIMIT " . $start . ", " . $itemperpage); } while ($member = $sql["char"]->fetch_assoc($members)) { if ($core == 1) { $query = "SELECT * FROM accounts WHERE acct='" . $member["acct"] . "'"; $result = $sql["logon"]->query($query); $result = $sql["logon"]->fetch_assoc($result); $user = $result["login"]; } else { $query = "SELECT * FROM account WHERE id='" . $member["acct"] . "'"; $result = $sql["logon"]->query($query); $result = $sql["logon"]->fetch_assoc($result); $user = $result["username"]; } $result = $sql["mgr"]->query("SELECT SecurityLevel AS gm FROM config_accounts WHERE Login='******'"); $owner_gmlvl = $sql["logon"]->result($result, 0, "gm"); if ($owner_gmlvl >= 1073741824) { $owner_gmlvl -= 1073741824; } $output .= ' <tr>'; // gm, guildleader or own account! are allowed to remove from guild $output .= $user_lvl >= $action_permission["delete"] || $amIguildleader || $member["acct"] == $user_id ? '<td><img src="img/aff_cross.png" alt="" onclick="answerBox(\'' . lang("global", "delete") . ': <font color=white>' . $member["cname"] . '</font><br />' . lang("global", "are_you_sure") . '\', \'guild.php?action=rem_char_from_guild&realm=' . $realmid . '&id=' . $member["cguid"] . '&guld_id=' . $guild_id . '\');" class="guild_edit_delete_cursor" /></td>' : '<td></td>'; $output .= ' <td><a href="char.php?id=' . $member["cguid"] . '">' . htmlentities($member["cname"], ENT_COMPAT, $site_encoding) . '</a></td> <td><img src="img/c_icons/' . $member["crace"] . '-' . $member["gender"] . '.gif" onmousemove="oldtoolTip(\'' . char_get_race_name($member["crace"]) . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /></td> <td><img src="img/c_icons/' . $member["cclass"] . '.gif" onmousemove="oldtoolTip(\'' . char_get_class_name($member["cclass"]) . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /></td> <td>' . char_get_level_color($member["clevel"]) . '</td> <td>' . htmlentities($member["rname"], ENT_COMPAT, $site_encoding) . ' (' . $member["mrank"] . ')</td> <td>' . htmlentities($member["pnote"], ENT_COMPAT, $site_encoding) . '</td> <td>' . htmlentities($member["offnote"], ENT_COMPAT, $site_encoding) . '</td> <td><span style="font-weight: bold;">' . get_days_with_color($member["clogout"]) . '</span></td> <td><img src="img/' . ($member["conline"] ? 'up' : 'down') . '.gif" alt="" /></td>'; if ($showcountryflag) { // this_is_junk: apparently sometimes guilds end up with members who don't exist. O_o // and because they don't exist, they don't have anything in their acct field. // which misc_get_country_by_account() doesn't like. if ($member["acct"]) { $country = misc_get_country_by_account($member["acct"]); } else { $country = 0; } $output .= ' <td>' . ($country["code"] ? '<img src="img/flags/' . $country["code"] . '.png" onmousemove="oldtoolTip(\'' . $country["country"] . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" />' : '-') . '</td>'; } $output .= ' </tr>'; } unset($member); $output .= ' <tr> <td align="right" class="hidden">' . generate_pagination("guild.php?action=view_guild&error=3&id=" . $guild_id . "&order_by=" . $order_by . "&dir=" . !$dir, $guildmemberCount, $itemperpage, $start) . '</td> </tr> </table> <br />'; $output .= ' <table class="hidden center"> <tr> <td>'; if ($user_lvl >= $action_permission["delete"] || $amIguildleader) { makebutton(lang("guild", "del_guild"), "guild.php?action=del_guild&realm=" . $realm_id . "&id=" . $guild_id . "&name=" . $guild_data["name"] . "\" type=\"wrn", 130); $output .= ' </td> <td>'; } makebutton(lang("guild", "guildbank"), "guildbank.php?id=" . $guild_id, 130); $output .= ' </td> <td>'; makebutton(lang("guild", "show_guilds"), "guild.php\" type=\"def", 130); $output .= ' </td> </tr> </table> </div>'; }
function index(&$sqlr, &$sqlc, &$sqlm) { global $output, $lang_global, $lang_index, $realm_id, $mmfpm_db, $server, $action_permission, $user_lvl, $user_id, $showcountryflag, $motd_display_poster, $gm_online_count, $gm_online, $itemperpage; $output .= ' <div class="top">'; if (test_port($server[$realm_id]['addr'], $server[$realm_id]['game_port'])) { $stats = $sqlr->fetch_assoc($sqlr->query(' SELECT starttime, maxplayers FROM uptime WHERE realmid = ' . $realm_id . ' ORDER BY starttime DESC LIMIT 1'), 0); $uptimetime = time() - $stats['starttime']; $max_ever = $sqlr->fetch_assoc($sqlr->query(' SELECT maxplayers FROM uptime WHERE realmid = ' . $realm_id . ' ORDER BY maxplayers DESC LIMIT 1'), 0); function format_uptime($seconds) { $secs = intval($seconds % 60); $mins = intval($seconds / 60 % 60); $hours = intval($seconds / 3600 % 24); $days = intval($seconds / 86400); $uptimeString = ''; if ($days) { $uptimeString .= $days; $uptimeString .= 1 === $days ? ' day' : ' days'; } if ($hours) { $uptimeString .= (0 < $days ? ', ' : '') . $hours; $uptimeString .= 1 === $hours ? ' hour' : ' hours'; } if ($mins) { $uptimeString .= (0 < $days || 0 < $hours ? ', ' : '') . $mins; $uptimeString .= 1 === $mins ? ' minute' : ' minutes'; } if ($secs) { $uptimeString .= (0 < $days || 0 < $hours || 0 < $mins ? ', ' : '') . $secs; $uptimeString .= 1 === $secs ? ' second' : ' seconds'; } return $uptimeString; } $staticUptime = $lang_index['realm'] . ' <em>' . htmlentities(get_realm_name($realm_id)) . '</em> ' . $lang_index['online'] . ' for ' . format_uptime($uptimetime); unset($uptimetime); $output .= ' <div id="uptime"> <h1><font color="#55aa55">' . $staticUptime . '</font><br /></h1> </div> </div>'; unset($staticUptime); $online = true; } else { $output .= ' <h1><font class="error">' . $lang_index['realm'] . ' <em>' . htmlentities(get_realm_name($realm_id)) . '</em> ' . $lang_index['offline_or_let_high'] . '</font></h1> </div>'; $online = false; } $output .= ' <center> <fieldset> <legend>Info</legend> <table class="lined" style="width: 100%; display: table"> <tr> <th> ' . $lang_index['maxplayers'] . ': ' . $stats['maxplayers'] . '<br /> ' . $lang_index['maxplayersever'] . ': ' . $max_ever['maxplayers'] . ' </th> </tr> </table> </fieldset>'; unset($max_ever); unset($stats); $start_m = isset($_GET['start_m']) ? $sqlc->quote_smart($_GET['start_m']) : 0; if (is_numeric($start_m)) { } else { $start_m = 0; } //print online chars if ($online) { //==========================$_GET and SECURE================================= $start = isset($_GET['start']) ? $sqlc->quote_smart($_GET['start']) : 0; if (is_numeric($start)) { } else { $start = 0; } $order_by = isset($_GET['order_by']) ? $sqlc->quote_smart($_GET['order_by']) : 'level'; if (preg_match('/^[_[:lower:]]{1,12}$/', $order_by)) { } else { $order_by = 'level'; } $dir = isset($_GET['dir']) ? $sqlc->quote_smart($_GET['dir']) : 1; if (preg_match('/^[01]{1}$/', $dir)) { } else { $dir = 1; } $order_dir = $dir ? 'DESC' : 'ASC'; $dir = $dir ? 0 : 1; //==========================$_GET and SECURE end============================= if ($order_by === 'map') { $order_by = 'map ' . $order_dir . ', zone'; } elseif ($order_by === 'zone') { $order_by = 'zone ' . $order_dir . ', map'; } $order_side = ''; if ($user_lvl || $server[$realm_id]['both_factions']) { } else { $result = $sqlc->query(' SELECT race FROM characters WHERE account = ' . $user_id . ' AND totaltime = (SELECT MAX(totaltime) FROM characters WHERE account = ' . $user_id . ') LIMIT 1'); if ($sqlc->num_rows($result)) { $order_side = in_array($sqlc->result($result, 0), array(2, 5, 6, 8, 10)) ? ' AND race IN (2,5,6,8,10) ' : ' AND race IN (1,3,4,7,11) '; } } if ($order_by == 'ip') { $result = $sqlr->query(' SELECT id, last_ip FROM account WHERE active_realm_id != 1 ORDER BY last_ip ' . $order_dir . ' LIMIT ' . $start . ', ' . $itemperpage . ''); } else { $result = $sqlc->query(' SELECT c.guid, c.name, c.race, c.class, c.zone, c.map, c.level, c.account, c.gender, c.totalHonorPoints, COALESCE(guild_member.guildid,0) AS guildid FROM characters c LEFT JOIN guild_member ON guild_member.guid = c.guid WHERE c.online = 1 ' . ($gm_online == '0' ? 'AND c.extra_flags &1 = 0 ' : '') . $order_side . ' ORDER BY ' . $order_by . ' ' . $order_dir . ' LIMIT ' . $start . ', ' . $itemperpage); } $total_online = $sqlc->result($sqlc->query(' SELECT count(*) FROM characters WHERE online= 1' . ($gm_online_count == '0' ? ' AND extra_flags &1 = 0' : '')), 0); $output .= ' <center> <fieldset> <legend>' . $lang_index['tot_users_online'] . ': ' . $total_online . '</legend> <table class="lined" style="width: 100%; display: table"> <tr> <td colspan="' . (10 - $showcountryflag) . '" align="right" class="hidden" width="25%">'; $output .= generate_pagination('index.php?start_m=' . $start_m . '&order_by=' . $order_by . '&dir=' . ($dir ? 0 : 1), $total_online, $itemperpage, $start); $output .= ' </td> </tr> <tr> <th width="15%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=name&dir=' . $dir . '"' . ($order_by === 'name' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['name'] . '</a></th> <th width="1%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=race&dir=' . $dir . '"' . ($order_by === 'race' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['race'] . '</a></th> <th width="1%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=class&dir=' . $dir . '"' . ($order_by === 'class' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['class'] . '</a></th> <th width="5%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=level&dir=' . $dir . '"' . ($order_by === 'level' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['level'] . '</a></th> <th width="1%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=totalHonorPoints&dir=' . $dir . '"' . ($order_by === 'totalHonorPoints' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['rank'] . '</a></th> <th width="15%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=guildid&dir=' . $dir . '"' . ($order_by === 'gname' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['guild'] . '</a></th> <th width="20%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=map&dir=' . $dir . '"' . ($order_by === 'map ' . $order_dir . ', zone' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['map'] . '</a></th> <th width="25%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=zone&dir=' . $dir . '"' . ($order_by === 'zone ' . $order_dir . ', map' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['zone'] . '</a></th>'; if ($showcountryflag) { require_once 'libs/misc_lib.php'; $output .= ' <th width="1%">' . $lang_global['country'] . '</th>'; } $output .= ' </tr>'; $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); while ($char = $sqlc->fetch_assoc($result)) { if ($order_by == 'ip') { $temp = $sqlc->fetch_assoc($sqlc->query(' SELECT characters.guid, characters.name, characters.race, characters.class, characters.zone, characters.map, characters.level, characters.account, characters.gender, characters.totalHonorPoints, COALESCE(guild_member.guildid,0) AS guildid FROM characters LEFT JOIN guild_member ON guild_member.guid = characters.guid WHERE characters.online= 1 ' . ($gm_online == '0' ? 'AND characters.extra_flags &1 = 0 ' : '') . $order_side . ' and account = ' . $char['id'])); if (isset($temp['guid'])) { $char = $temp; } else { continue; } } $gm = $sqlr->result($sqlr->query(' SELECT gmlevel FROM account WHERE id=' . $char['account'] . ''), 0); $guild_name = $sqlc->result($sqlc->query(' SELECT name FROM guild WHERE guildid=' . $char['guildid'] . '')); $output .= ' <tr> <td>'; if ($user_lvl >= $gm) { $output .= ' <a href="char.php?id=' . $char['guid'] . '"> <span onmousemove="toolTip(\'' . id_get_gm_level($gm) . '\', \'item_tooltip\')" onmouseout="toolTip()">' . htmlentities($char['name']) . '</span> </a>'; } else { $output .= ' ' . htmlentities($char['name']) . '</span>'; } $output .= ' </td> <td> <img src="img/c_icons/' . $char['race'] . '-' . $char['gender'] . '.gif" onmousemove="toolTip(\'' . char_get_race_name($char['race']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /> </td> <td> <img src="img/c_icons/' . $char['class'] . '.gif" onmousemove="toolTip(\'' . char_get_class_name($char['class']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /> </td> <td>' . char_get_level_color($char['level']) . '</td> <td> <span onmouseover="toolTip(\'' . char_get_pvp_rank_name($char['totalHonorPoints'], char_get_side_id($char['race'])) . '\', \'item_tooltip\')" onmouseout="toolTip()" style="color: white;"><img src="img/ranks/rank' . char_get_pvp_rank_id($char['totalHonorPoints'], char_get_side_id($char['race'])) . '.gif" alt="" /></span> </td> <td> <a href="guild.php?action=view_guild&error=3&id=' . $char['guildid'] . '">' . htmlentities($guild_name) . '</a> </td> <td> <span onmousemove="toolTip(\'MapID:' . $char['map'] . '\', \'item_tooltip\')" onmouseout="toolTip()">' . get_map_name($char['map'], $sqlm) . '</span> </td> <td> <span onmousemove="toolTip(\'ZoneID:' . $char['zone'] . '\', \'item_tooltip\')" onmouseout="toolTip()">' . get_zone_name($char['zone'], $sqlm) . '</span> </td>'; if ($showcountryflag) { $country = misc_get_country_by_account($char['account'], $sqlr, $sqlm); $output .= ' <td> ' . ($country['code'] ? '<img src="img/flags/' . $country['code'] . '.png" onmousemove="toolTip(\'' . $country['country'] . '\',\'item_tooltip\')" onmouseout="toolTip()" alt="" />' : '-') . ' </td>'; } $output .= ' </tr>'; } $output .= ' <tr>'; $output .= ' <td colspan="' . (10 - $showcountryflag) . '" align="right" class="hidden" width="25%">'; $output .= generate_pagination('index.php?start_m=' . $start_m . '&order_by=' . $order_by . '&dir=' . ($dir ? 0 : 1), $total_online, $itemperpage, $start); unset($total_online); $output .= ' </td> </tr> </table> </fieldset> <br /> </center>'; } }
function char_main() { global $output, $realm_id, $logon_db, $characters_db, $world_db, $server, $corem_db, $site_encoding, $action_permission, $user_lvl, $user_name, $user_id, $locales_search_option, $base_datasite, $item_datasite, $spell_datasite, $showcountryflag, $timezone_offset, $sql, $core; // this page uses wowhead tooltops //wowhead_tt(); // we need at either an id or a name or we would have nothing to show if (empty($_GET["id"])) { if (empty($_GET["name"])) { error(lang("global", "empty_fields")); } } // this is multi realm support, as of writing still under development // this page is already implementing it if (empty($_GET["realm"])) { $realmid = $realm_id; } else { $realmid = $sql["logon"]->quote_smart($_GET["realm"]); if (is_numeric($realmid)) { $sql["char"]->connect($characters_db[$realmid]["addr"], $characters_db[$realmid]["user"], $characters_db[$realmid]["pass"], $characters_db[$realmid]["name"], $characters_db[$realmid]["encoding"]); } else { $realmid = $realm_id; } } if (empty($_GET["id"])) { $name = $sql["char"]->quote_smart($_GET["name"]); if ($core == 1) { $result = $sql["char"]->query("SELECT guid, acct, race FROM characters WHERE name='" . $name . "' LIMIT 1"); } else { $result = $sql["char"]->query("SELECT guid, id AS acct, race FROM characters WHERE name='" . $name . "' LIMIT 1"); } $id_result = $sql["char"]->fetch_assoc($result); $id = $id_result["guid"]; } else { $id = $sql["char"]->quote_smart($_GET["id"]); } if (!is_numeric($id)) { error(lang("global", "empty_fields")); } if ($core == 1) { $result = $sql["char"]->query("SELECT acct, race FROM characters WHERE guid='" . $id . "' LIMIT 1"); } else { $result = $sql["char"]->query("SELECT account AS acct, race FROM characters WHERE guid='" . $id . "' LIMIT 1"); } if ($sql["char"]->num_rows($result)) { //resrict by owner's gmlvl $owner_acc_id = $sql["char"]->result($result, 0, "acct"); if ($core == 1) { $query = $sql["logon"]->query("SELECT login FROM accounts WHERE acct='" . $owner_acc_id . "'"); } else { $query = $sql["logon"]->query("SELECT username as login FROM account WHERE id='" . $owner_acc_id . "'"); } $owner_name = $sql["logon"]->result($query, 0, "login"); $s_query = "SELECT *, SecurityLevel AS gm FROM config_accounts WHERE Login='******'"; $s_result = $sql["mgr"]->query($s_query); $s_fields = $sql["mgr"]->fetch_assoc($s_result); $owner_gmlvl = $s_fields["gm"]; $view_mod = $s_fields["View_Mod_Sheet"]; if ($owner_gmlvl >= 1073741824) { $owner_gmlvl -= 1073741824; } // owner configured overrides $view_override = false; if ($view_mod > 0) { if ($view_mod == 1) { } elseif ($view_mod == 2) { // only registered users may view this page if ($user_lvl > -1) { $view_override = true; } } } if ($user_lvl || $server[$realmid]["both_factions"]) { $side_v = 0; $side_p = 0; } else { $side_p = in_array($sql["char"]->result($result, 0, "race"), array(2, 5, 6, 8, 10)) ? 1 : 2; if ($core == 1) { $result_1 = $sql["char"]->query("SELECT race FROM characters WHERE acct='" . $user_id . "' LIMIT 1"); } else { $result_1 = $sql["char"]->query("SELECT race FROM characters WHERE account='" . $user_id . "' LIMIT 1"); } if ($sql["char"]->num_rows($result)) { $side_v = in_array($sql["char"]->result($result_1, 0, "race"), array(2, 5, 6, 8, 10)) ? 1 : 2; } else { $side_v = 0; } unset($result_1); } if ($view_override || $user_lvl >= gmlevel($owner_gmlvl) && ($side_v === $side_p || !$side_v)) { if ($core == 1) { $result = $sql["char"]->query("SELECT guid, name, race, class, level, zoneid, mapid, online, gender,\n SUBSTRING_INDEX(SUBSTRING_INDEX(playedtime, ' ', 2), ' ', -1) AS totaltime,\n acct, data, timestamp, xp \n FROM characters WHERE guid='" . $id . "'"); } elseif ($core == 2) { $result = $sql["char"]->query("SELECT guid, name, race, class, level, zone AS zoneid, map AS mapid, \n online, gender, totaltime, account AS acct, logout_time AS timestamp, health, \n\t\t\t\t\tpower1, power2, power3, power4, power5, power6, power7, xp,\n arenaPoints, totalHonorPoints, totalKills\n FROM characters WHERE guid='" . $id . "'"); } else { $result = $sql["char"]->query("SELECT guid, name, race, class, level, zone AS zoneid, map AS mapid, \n online, gender, totaltime, account AS acct, logout_time AS timestamp, health, \n\t\t\t\t\tpower1, power2, power3, power4, power5, power6, power7, xp, arenaPoints, totalHonorPoints, totalKills\n FROM characters WHERE guid='" . $id . "'"); } $char = $sql["char"]->fetch_assoc($result); // find out what mode we're in View or Delete (0 = View, 1 = Delete) $mode = isset($_GET["mode"]) ? $_GET["mode"] : 0; // only the character's owner or a GM with Delete privs can enter Delete Mode if ($owner_name != $user_name) { if ($user_lvl < $action_permission["delete"]) { $mode = 0; } else { $mode = $mode; } } // View Mode is only availble on characters that are offline if ($char["online"] != 0) { $mode = 0; } if ($core == 1) { $char_data = $char["data"]; if (empty($char_data)) { $char_data = str_repeat("0;", PLAYER_END); } $char_data = explode(";", $char_data); } else { $query = "SELECT * FROM characters LEFT JOIN character_stats ON characters.guid=character_stats.guid WHERE characters.guid='" . $id . "'"; $char_data_result = $sql["char"]->query($query); $char_data_fields = $sql["char"]->fetch_assoc($char_data_result); $char_data[PLAYER_BLOCK_PERCENTAGE] = isset($char_data_fields["blockPct"]) ? $char_data_fields["blockPct"] : ' '; $char_data[PLAYER_DODGE_PERCENTAGE] = isset($char_data_fields["dodgePct"]) ? $char_data_fields["dodgePct"] : ' '; $char_data[PLAYER_PARRY_PERCENTAGE] = isset($char_data_fields["parryPct"]) ? $char_data_fields["parryPct"] : ' '; $char_data[PLAYER_CRIT_PERCENTAGE] = isset($char_data_fields["critPct"]) ? $char_data_fields["critPct"] : ' '; $char_data[PLAYER_RANGED_CRIT_PERCENTAGE] = isset($char_data_fields["rangedCritPct"]) ? $char_data_fields["rangedCritPct"] : ' '; $char_data[UNIT_FIELD_MAXDAMAGE] = isset($char_data_fields["attackPower"]) ? $char_data_fields["attackPower"] : ' '; $char_data[UNIT_FIELD_MINDAMAGE] = isset($char_data_fields["attackPower"]) ? $char_data_fields["attackPower"] : ' '; $char_data[UNIT_FIELD_MAXRANGEDDAMAGE] = isset($char_data_fields["rangedAttackPower"]) ? $char_data_fields["rangedAttackPower"] : ' '; $char_data[UNIT_FIELD_MINRANGEDDAMAGE] = isset($char_data_fields["rangedAttackPower"]) ? $char_data_fields["rangedAttackPower"] : ' '; $char_data[PLAYER_SPELL_CRIT_PERCENTAGE1] = isset($char_data_fields["spellCritPct"]) ? $char_data_fields["spellCritPct"] : ' '; $char_data[PLAYER_FIELD_MOD_DAMAGE_DONE_POS] = isset($char_data_fields["spellPower"]) ? $char_data_fields["spellPower"] : ' '; $char_data[UNIT_FIELD_STAT0] = isset($char_data_fields["strength"]) ? $char_data_fields["strength"] : ' '; $char_data[UNIT_FIELD_STAT1] = isset($char_data_fields["agility"]) ? $char_data_fields["agility"] : ' '; $char_data[UNIT_FIELD_STAT2] = isset($char_data_fields["stamina"]) ? $char_data_fields["stamina"] : ' '; $char_data[UNIT_FIELD_STAT3] = isset($char_data_fields["intellect"]) ? $char_data_fields["intellect"] : ' '; $char_data[UNIT_FIELD_STAT4] = isset($char_data_fields["spirit"]) ? $char_data_fields["spirit"] : ' '; $char_data[UNIT_FIELD_RESISTANCES] = isset($char_data_fields["armor"]) ? $char_data_fields["armor"] : ' '; $char_data[UNIT_FIELD_RESISTANCES + 1] = isset($char_data_fields["resHoly"]) ? $char_data_fields["resHoly"] : ' '; $char_data[UNIT_FIELD_RESISTANCES + 2] = isset($char_data_fields["resArcane"]) ? $char_data_fields["resArcane"] : ' '; $char_data[UNIT_FIELD_RESISTANCES + 3] = isset($char_data_fields["resFire"]) ? $char_data_fields["resFire"] : ' '; $char_data[UNIT_FIELD_RESISTANCES + 4] = isset($char_data_fields["resNature"]) ? $char_data_fields["resNature"] : ' '; $char_data[UNIT_FIELD_RESISTANCES + 5] = isset($char_data_fields["resFrost"]) ? $char_data_fields["resFrost"] : ' '; $char_data[UNIT_FIELD_RESISTANCES + 6] = isset($char_data_fields["resShadow"]) ? $char_data_fields["resShadow"] : ' '; $char_data[UNIT_FIELD_HEALTH] = isset($char["health"]) ? $char["health"] : ' '; $char_data[UNIT_FIELD_MAXHEALTH] = isset($char_data_fields["maxhealth"]) ? $char_data_fields["maxhealth"] : ' '; $char_data[UNIT_FIELD_POWER1] = isset($char["power1"]) ? $char["power1"] : ' '; $char_data[UNIT_FIELD_POWER2] = isset($char["power2"]) ? $char["power2"] : ' '; $char_data[UNIT_FIELD_POWER3] = isset($char["power3"]) ? $char["power3"] : ' '; $char_data[UNIT_FIELD_POWER4] = isset($char["power4"]) ? $char["power4"] : ' '; $char_data[UNIT_FIELD_POWER5] = isset($char["power5"]) ? $char["power5"] : ' '; $char_data[UNIT_FIELD_POWER6] = isset($char["power6"]) ? $char["power6"] : ' '; $char_data[UNIT_FIELD_POWER7] = isset($char["power7"]) ? $char["power7"] : ' '; $char_data[UNIT_FIELD_MAXPOWER1] = isset($char_data_fields["maxpower1"]) ? $char_data_fields["maxpower1"] : ' '; $char_data[UNIT_FIELD_MAXPOWER2] = isset($char_data_fields["maxpower2"]) ? $char_data_fields["maxpower2"] : ' '; $char_data[UNIT_FIELD_MAXPOWER3] = isset($char_data_fields["maxpower3"]) ? $char_data_fields["maxpower3"] : ' '; $char_data[UNIT_FIELD_MAXPOWER4] = isset($char_data_fields["maxpower4"]) ? $char_data_fields["maxpower4"] : ' '; $char_data[UNIT_FIELD_MAXPOWER5] = isset($char_data_fields["maxpower5"]) ? $char_data_fields["maxpower5"] : ' '; $char_data[UNIT_FIELD_MAXPOWER6] = isset($char_data_fields["maxpower6"]) ? $char_data_fields["maxpower6"] : ' '; $char_data[UNIT_FIELD_MAXPOWER7] = isset($char_data_fields["maxpower7"]) ? $char_data_fields["maxpower7"] : ' '; $char_data[PLAYER_FIELD_MOD_HEALING_DONE_POS] = "ERR"; $char_data[PLAYER_FIELD_COMBAT_RATING_1 + 5] = "ERR"; $char_data[PLAYER_FIELD_COMBAT_RATING_1 + 17] = "ERR"; $char_data[PLAYER_FIELD_COMBAT_RATING_1 + 6] = "ERR"; $char_data[PLAYER_FIELD_COMBAT_RATING_1 + 7] = "ERR"; $char_data[PLAYER_EXPERTISE] = "ERR"; $char_data[PLAYER_OFFHAND_EXPERTISE] = "ERR"; $char_data[PLAYER_FIELD_HONOR_CURRENCY] = isset($char["totalHonorPoints"]) ? $char["totalHonorPoints"] : ' '; $char_data[PLAYER_FIELD_ARENA_CURRENCY] = isset($char["arenaPoints"]) ? $char["arenaPoints"] : ' '; $char_data[PLAYER_FIELD_LIFETIME_HONORBALE_KILLS] = isset($char["totalKills"]) ? $char["totalKills"] : ' '; } if ($core == 1) { $guild_id = $sql["char"]->result($sql["char"]->query("SELECT guildid FROM guild_data WHERE playerid='" . $char["guid"] . "'"), 0); $guild_rank = $sql["char"]->result($sql["char"]->query("SELECT guildRank FROM guild_data WHERE playerid='" . $char["guid"] . "'"), 0); $guild_name = $sql["char"]->result($sql["char"]->query("SELECT guildName FROM guilds WHERE guildid='" . $guild_id . "'")); } else { $guild_id = $sql["char"]->result($sql["char"]->query("SELECT guildid FROM guild_member WHERE guid='" . $char["guid"] . "'"), 0); $guild_rank = $sql["char"]->result($sql["char"]->query("SELECT rank AS guildRank FROM guild_member WHERE guid='" . $char["guid"] . "'"), 0); $guild_name = $sql["char"]->result($sql["char"]->query("SELECT name AS guildName FROM guild WHERE guildid='" . $guild_id . "'")); } $online = $char["online"] ? lang("char", "online") : lang("char", "offline"); if ($guild_id) { //$guild_name = $sql["char"]->result($sql["char"]->query('SELECT name FROM guild WHERE guildid ='.$char_data[CHAR_DATA_OFFSET_GUILD_ID].''), 0, 'name'); $guild_name = '<a href="guild.php?action=view_guild&realm=' . $realmid . '&error=3&id=' . $guild_id . '" >' . $guild_name . '</a>'; $mrank = $guild_rank; if ($core == 1) { $guild_rank = $sql["char"]->result($sql["char"]->query("SELECT rankname FROM guild_ranks WHERE guildid='" . $guild_id . "' AND rankId='" . $mrank . "'"), 0, "rankname"); } else { $guild_rank = $sql["char"]->result($sql["char"]->query("SELECT rname AS rankname FROM guild_rank WHERE guildid='" . $guild_id . "' AND rid='" . $mrank . "'"), 0, "rankname"); } } else { $guild_name = lang("global", "none"); $guild_rank = lang("global", "none"); } if ($core == 1) { $block = unpack("f", pack("L", $char_data[PLAYER_BLOCK_PERCENTAGE])); $block = round($block[1], 2); $dodge = unpack("f", pack("L", $char_data[PLAYER_DODGE_PERCENTAGE])); $dodge = round($dodge[1], 2); $parry = unpack("f", pack("L", $char_data[PLAYER_PARRY_PERCENTAGE])); $parry = round($parry[1], 2); $crit = unpack("f", pack("L", $char_data[PLAYER_CRIT_PERCENTAGE])); $crit = round($crit[1], 2); $ranged_crit = unpack("f", pack("L", $char_data[PLAYER_RANGED_CRIT_PERCENTAGE])); $ranged_crit = round($ranged_crit[1], 2); $maxdamage = unpack("f", pack("L", $char_data[UNIT_FIELD_MAXDAMAGE])); $maxdamage = round($maxdamage[1], 0); $mindamage = unpack("f", pack("L", $char_data[UNIT_FIELD_MINDAMAGE])); $mindamage = round($mindamage[1], 0); $maxrangeddamage = unpack("f", pack("L", $char_data[UNIT_FIELD_MAXRANGEDDAMAGE])); $maxrangeddamage = round($maxrangeddamage[1], 0); $minrangeddamage = unpack("f", pack("L", $char_data[UNIT_FIELD_MINRANGEDDAMAGE])); $minrangeddamage = round($minrangeddamage[1], 0); } else { $block = $char_data[PLAYER_BLOCK_PERCENTAGE]; $block = round($block, 2); $dodge = $char_data[PLAYER_DODGE_PERCENTAGE]; $dodge = round($dodge, 2); $parry = $char_data[PLAYER_PARRY_PERCENTAGE]; $parry = round($parry, 2); $crit = $char_data[PLAYER_CRIT_PERCENTAGE]; $crit = round($crit, 2); $ranged_crit = $char_data[PLAYER_RANGED_CRIT_PERCENTAGE]; $ranged_crit = round($ranged_crit, 2); $maxdamage = $char_data[UNIT_FIELD_MAXDAMAGE]; $maxdamage = round($maxdamage, 0); $mindamage = $char_data[UNIT_FIELD_MINDAMAGE]; $mindamage = round($mindamage, 0); $maxrangeddamage = $char_data[UNIT_FIELD_MAXRANGEDDAMAGE]; $maxrangeddamage = round($maxrangeddamage, 0); $minrangeddamage = $char_data[UNIT_FIELD_MINRANGEDDAMAGE]; $minrangeddamage = round($minrangeddamage, 0); } if ($core == 1) { $spell_crit = 100; for ($i = 0; $i < 6; ++$i) { $temp = unpack("f", pack("L", $char_data[PLAYER_SPELL_CRIT_PERCENTAGE1 + 1 + $i])); if ($temp[1] < $spell_crit) { $spell_crit = $temp[1]; } } $spell_crit = round($spell_crit, 2); } else { $spell_crit = $char_data[PLAYER_SPELL_CRIT_PERCENTAGE1]; $spell_crit = round($spell_crit, 2); } if ($core == 1) { $spell_damage = 9999; for ($i = 0; $i < 6; ++$i) { if ($char_data[PLAYER_FIELD_MOD_DAMAGE_DONE_POS + 1 + $i] < $spell_damage) { $spell_damage = $char_data[PLAYER_FIELD_MOD_DAMAGE_DONE_POS + 1 + $i]; } } } else { $spell_damage = $char_data[PLAYER_FIELD_MOD_DAMAGE_DONE_POS]; } $spell_heal = $char_data[PLAYER_FIELD_MOD_HEALING_DONE_POS]; // this_is_junk: PLAYER_FIELD_COMBAT_RATING_1 +5, +6, and +7 seem to have the same value as +5 // I'm not sure which of these fields is which hit rating. :/ $spell_hit = $char_data[PLAYER_FIELD_COMBAT_RATING_1 + 5]; // this_is_junk: PLAYER_FIELD_COMBAT_RATING_1 +18 and +19 seem to have the same value as +5 // I'm not sure which of these fields is really spell haste. :/ $spell_haste = $char_data[PLAYER_FIELD_COMBAT_RATING_1 + 17]; // this_is_junk: PLAYER_FIELD_COMBAT_RATING_1 +5, +6, and +7 seem to have the same value as +5 // I'm not sure which of these fields is which hit rating. :/ $ranged_hit = $char_data[PLAYER_FIELD_COMBAT_RATING_1 + 6]; // this_is_junk: PLAYER_FIELD_COMBAT_RATING_1 +5, +6, and +7 seem to have the same value as +5 // I'm not sure which of these fields is which hit rating. :/ $melee_hit = $char_data[PLAYER_FIELD_COMBAT_RATING_1 + 7]; $expertise = $char_data[PLAYER_EXPERTISE] . " / " . $char_data[PLAYER_OFFHAND_EXPERTISE]; //if ( $core == 1 ) //{ /*$EQU_HEAD = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 0]; $EQU_NECK = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 2]; $EQU_SHOULDER = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 4]; $EQU_SHIRT = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 6]; $EQU_CHEST = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 8]; $EQU_BELT = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 10]; $EQU_LEGS = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 12]; $EQU_FEET = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 14]; $EQU_WRIST = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 16]; $EQU_GLOVES = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 18]; $EQU_FINGER1 = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 20]; $EQU_FINGER2 = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 22]; $EQU_TRINKET1 = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 24]; $EQU_TRINKET2 = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 26]; $EQU_BACK = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 28]; $EQU_MAIN_HAND = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 30]; $EQU_OFF_HAND = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 32]; $EQU_RANGED = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 34]; $EQU_TABARD = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 36];*/ //} //else //{ $world_db_name = $world_db[$realm_id]["name"]; if ($core == 1) { $char_equip_query = "SELECT *, \n playeritems.entry AS item_template, randomprop as property, enchantments AS enchantment, flags\n FROM playeritems WHERE ownerguid='" . $id . "' AND containerslot=-1"; } elseif ($core == 2) { $char_equip_query = "SELECT *,\n SUBSTRING_INDEX(SUBSTRING_INDEX(item_instance.data, ' ', 11), ' ', -1) AS creator,\n SUBSTRING_INDEX(SUBSTRING_INDEX(item_instance.data, ' ', 23), ' ', -1) AS enchantment,\n SUBSTRING_INDEX(SUBSTRING_INDEX(item_instance.data, ' ', 60), ' ', -1) AS property,\n SUBSTRING_INDEX(SUBSTRING_INDEX(item_instance.data, ' ', 62), ' ', -1) AS durability,\n SUBSTRING_INDEX(SUBSTRING_INDEX(item_instance.data, ' ', 22), ' ', -1) AS flags\n FROM character_inventory\n LEFT JOIN item_instance ON character_inventory.item=item_instance.guid\n WHERE character_inventory.guid='" . $id . "' AND character_inventory.bag=0"; } else { $char_equip_query = "SELECT *,\n creatorGuid AS creator, enchantments AS enchantment,\n randomPropertyId AS property, durability, flags,\n itemEntry AS item_template\n FROM character_inventory\n LEFT JOIN item_instance ON character_inventory.item=item_instance.guid\n WHERE character_inventory.guid='" . $id . "' AND character_inventory.bag=0"; } $char_equip_result = $sql["char"]->query($char_equip_query); while ($equip_row = $sql["char"]->fetch_assoc($char_equip_result)) { switch ($equip_row["slot"]) { case 0: $EQU_HEAD = $equip_row["item_template"]; $EQU_HEAD_ROW = $equip_row; break; case 1: $EQU_NECK = $equip_row["item_template"]; $EQU_NECK_ROW = $equip_row; break; case 2: $EQU_SHOULDER = $equip_row["item_template"]; $EQU_SHOULDER_ROW = $equip_row; break; case 3: $EQU_SHIRT = $equip_row["item_template"]; $EQU_SHIRT_ROW = $equip_row; break; case 4: $EQU_CHEST = $equip_row["item_template"]; $EQU_CHEST_ROW = $equip_row; break; case 5: $EQU_BELT = $equip_row["item_template"]; $EQU_BELT_ROW = $equip_row; break; case 6: $EQU_LEGS = $equip_row["item_template"]; $EQU_LEGS_ROW = $equip_row; break; case 7: $EQU_FEET = $equip_row["item_template"]; $EQU_FEET_ROW = $equip_row; break; case 8: $EQU_WRIST = $equip_row["item_template"]; $EQU_WRIST_ROW = $equip_row; break; case 9: $EQU_GLOVES = $equip_row["item_template"]; $EQU_GLOVES_ROW = $equip_row; break; case 10: $EQU_FINGER1 = $equip_row["item_template"]; $EQU_FINGER1_ROW = $equip_row; break; case 11: $EQU_FINGER2 = $equip_row["item_template"]; $EQU_FINGER2_ROW = $equip_row; break; case 12: $EQU_TRINKET1 = $equip_row["item_template"]; $EQU_TRINKET1_ROW = $equip_row; break; case 13: $EQU_TRINKET2 = $equip_row["item_template"]; $EQU_TRINKET2_ROW = $equip_row; break; case 14: $EQU_BACK = $equip_row["item_template"]; $EQU_BACK_ROW = $equip_row; break; case 15: $EQU_MAIN_HAND = $equip_row["item_template"]; $EQU_MAIN_HAND_ROW = $equip_row; break; case 16: $EQU_OFF_HAND = $equip_row["item_template"]; $EQU_OFF_HAND_ROW = $equip_row; break; case 17: $EQU_RANGED = $equip_row["item_template"]; $EQU_RANGED_ROW = $equip_row; break; case 18: $EQU_TABARD = $equip_row["item_template"]; $EQU_TABARD_ROW = $equip_row; break; } } //} $equiped_items = array(1 => array("", $EQU_HEAD ? get_item_icon($EQU_HEAD) : 0, $EQU_HEAD ? get_item_border($EQU_HEAD) : 0, $EQU_HEAD_ROW), 2 => array("", $EQU_NECK ? get_item_icon($EQU_NECK) : 0, $EQU_NECK ? get_item_border($EQU_NECK) : 0, $EQU_NECK_ROW), 3 => array("", $EQU_SHOULDER ? get_item_icon($EQU_SHOULDER) : 0, $EQU_SHOULDER ? get_item_border($EQU_SHOULDER) : 0, $EQU_SHOULDER_ROW), 4 => array("", $EQU_SHIRT ? get_item_icon($EQU_SHIRT) : 0, $EQU_SHIRT ? get_item_border($EQU_SHIRT) : 0, $EQU_SHIRT_ROW), 5 => array("", $EQU_CHEST ? get_item_icon($EQU_CHEST) : 0, $EQU_CHEST ? get_item_border($EQU_CHEST) : 0, $EQU_CHEST_ROW), 6 => array("", $EQU_BELT ? get_item_icon($EQU_BELT) : 0, $EQU_BELT ? get_item_border($EQU_BELT) : 0, $EQU_BELT_ROW), 7 => array("", $EQU_LEGS ? get_item_icon($EQU_LEGS) : 0, $EQU_LEGS ? get_item_border($EQU_LEGS) : 0, $EQU_LEGS_ROW), 8 => array("", $EQU_FEET ? get_item_icon($EQU_FEET) : 0, $EQU_FEET ? get_item_border($EQU_FEET) : 0, $EQU_FEET_ROW), 9 => array("", $EQU_WRIST ? get_item_icon($EQU_WRIST) : 0, $EQU_WRIST ? get_item_border($EQU_WRIST) : 0, $EQU_WRIST_ROW), 10 => array("", $EQU_GLOVES ? get_item_icon($EQU_GLOVES) : 0, $EQU_GLOVES ? get_item_border($EQU_GLOVES) : 0, $EQU_GLOVES_ROW), 11 => array("", $EQU_FINGER1 ? get_item_icon($EQU_FINGER1) : 0, $EQU_FINGER1 ? get_item_border($EQU_FINGER1) : 0, $EQU_FINGER1_ROW), 12 => array("", $EQU_FINGER2 ? get_item_icon($EQU_FINGER2) : 0, $EQU_FINGER2 ? get_item_border($EQU_FINGER2) : 0, $EQU_FINGER2_ROW), 13 => array("", $EQU_TRINKET1 ? get_item_icon($EQU_TRINKET1) : 0, $EQU_TRINKET1 ? get_item_border($EQU_TRINKET1) : 0, $EQU_TRINKET1_ROW), 14 => array("", $EQU_TRINKET2 ? get_item_icon($EQU_TRINKET2) : 0, $EQU_TRINKET2 ? get_item_border($EQU_TRINKET2) : 0, $EQU_TRINKET2_ROW), 15 => array("", $EQU_BACK ? get_item_icon($EQU_BACK) : 0, $EQU_BACK ? get_item_border($EQU_BACK) : 0, $EQU_BACK_ROW), 16 => array("", $EQU_MAIN_HAND ? get_item_icon($EQU_MAIN_HAND) : 0, $EQU_MAIN_HAND ? get_item_border($EQU_MAIN_HAND) : 0, $EQU_MAIN_HAND_ROW), 17 => array("", $EQU_OFF_HAND ? get_item_icon($EQU_OFF_HAND) : 0, $EQU_OFF_HAND ? get_item_border($EQU_OFF_HAND) : 0, $EQU_OFF_HAND_ROW), 18 => array("", $EQU_RANGED ? get_item_icon($EQU_RANGED) : 0, $EQU_RANGED ? get_item_border($EQU_RANGED) : 0, $EQU_RANGED_ROW), 19 => array("", $EQU_TABARD ? get_item_icon($EQU_TABARD) : 0, $EQU_TABARD ? get_item_border($EQU_TABARD) : 0, $EQU_TABARD_ROW)); // visibility overrides for specific tabs $view_inv_override = false; if ($s_fields["View_Mod_Inv"] > 0) { if ($s_fields["View_Mod_Inv"] == 1) { } elseif ($s_fields["View_Mod_Inv"] == 2) { // only registered users may view this tab if ($user_lvl > -1) { $view_inv_override = true; } } } else { if ($user_lvl > $owner_gmlvl || $owner_name === $user_name || $user_lvl == $action_permission["delete"]) { $view_inv_override = true; } } $view_talent_override = false; if ($s_fields["View_Mod_Talent"] > 0) { if ($s_fields["View_Mod_Talent"] == 1) { } elseif ($s_fields["View_Mod_Talent"] == 2) { // only registered users may view this tab if ($user_lvl > -1) { $view_talent_override = true; } } } else { if ($user_lvl > $owner_gmlvl || $owner_name === $user_name || $user_lvl == $action_permission["delete"]) { $view_talent_override = true; } } $view_achieve_override = false; if ($s_fields["View_Mod_Achieve"] > 0) { if ($s_fields["View_Mod_Achieve"] == 1) { } elseif ($s_fields["View_Mod_Achieve"] == 2) { // only registered users may view this tab if ($user_lvl > -1) { $view_achieve_override = true; } } } else { if ($user_lvl > $owner_gmlvl || $owner_name === $user_name || $user_lvl == $action_permission["delete"]) { $view_achieve_override = true; } } $view_quest_override = false; if ($s_fields["View_Mod_Quest"] > 0) { if ($s_fields["View_Mod_Quest"] == 1) { } elseif ($s_fields["View_Mod_Quest"] == 2) { // only registered users may view this tab if ($user_lvl > -1) { $view_quest_override = true; } } } else { if ($user_lvl > $owner_gmlvl || $owner_name === $user_name || $user_lvl == $action_permission["delete"]) { $view_quest_override = true; } } $view_friends_override = false; if ($s_fields["View_Mod_Friends"] > 0) { if ($s_fields["View_Mod_Friends"] == 1) { } elseif ($s_fields["View_Mod_Friends"] == 2) { // only registered users may view this tab if ($user_lvl > -1) { $view_friends_override = true; } } } else { if ($user_lvl > $owner_gmlvl || $owner_name === $user_name || $user_lvl == $action_permission["delete"]) { $view_friends_override = true; } } $view_view_override = false; if ($s_fields["View_Mod_View"] > 0) { if ($s_fields["View_Mod_View"] == 1) { } elseif ($s_fields["View_Mod_View"] == 2) { // only registered users may view this tab if ($user_lvl > -1) { $view_view_override = true; } } } else { if ($user_lvl > $owner_gmlvl || $owner_name === $user_name || $user_lvl == $action_permission["delete"]) { $view_view_override = true; } } $view_pets_override = false; if ($s_fields["View_Mod_Pets"] > 0) { if ($s_fields["View_Mod_Pets"] == 1) { } elseif ($s_fields["View_Mod_Pets"] == 2) { // only registered users may view this tab if ($user_lvl > -1) { $view_pets_override = true; } } } else { if ($user_lvl > $owner_gmlvl || $owner_name === $user_name || $user_lvl == $action_permission["delete"]) { $view_pets_override = true; } } $view_rep_override = false; if ($s_fields["View_Mod_Rep"] > 0) { if ($s_fields["View_Mod_Rep"] == 1) { } elseif ($s_fields["View_Mod_Rep"] == 2) { // only registered users may view this tab if ($user_lvl > -1) { $view_rep_override = true; } } } else { if ($user_lvl > $owner_gmlvl || $owner_name === $user_name || $user_lvl == $action_permission["delete"]) { $view_rep_override = true; } } $view_skill_override = false; if ($s_fields["View_Mod_Skill"] > 0) { if ($s_fields["View_Mod_Skill"] == 1) { } elseif ($s_fields["View_Mod_Skill"] == 2) { // only registered users may view this tab if ($user_lvl > -1) { $view_skill_override = true; } } } else { if ($user_lvl > $owner_gmlvl || $owner_name === $user_name || $user_lvl == $action_permission["delete"]) { $view_skill_override = true; } } $view_pvp_override = false; if ($s_fields["View_Mod_PvP"] > 0) { if ($s_fields["View_Mod_PvP"] == 1) { } elseif ($s_fields["View_Mod_PvP"] == 2) { // only registered users may view this tab if ($user_lvl > -1) { $view_pvp_override = true; } } } else { if ($user_lvl > $owner_gmlvl || $owner_name === $user_name || $user_lvl == $action_permission["delete"]) { $view_pvp_override = true; } } $output .= ' <!-- start of char.php --> <div class="tab"> <ul> <li class="selected"><a href="char.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "char_sheet") . '</a></li>'; if ($view_inv_override) { $output .= ' <li><a href="char_inv.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "inventory") . '</a></li>'; } if ($view_talent_override) { $output .= ' ' . ($char["level"] < 10 ? '' : '<li><a href="char_talent.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "talents") . '</a></li>') . ''; } if ($view_achieve_override) { $output .= ' <li><a href="char_achieve.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "achievements") . '</a></li>'; } if ($view_quest_override) { $output .= ' <li><a href="char_quest.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "quests") . '</a></li>'; } if ($view_friends_override) { $output .= ' <li><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "friends") . '</a></li>'; } if ($view_view_override) { $output .= ' <li><a href="char_view.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "view") . '</a></li>'; } $output .= ' </ul> </div>'; if ($view_override || $user_lvl > $owner_gmlvl || $owner_name === $user_name || $user_lvl == $action_permission["delete"]) { $output .= ' <div class="tab_content center"> <div class="tab"> <ul> <li class="selected"><a href="char.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "char_sheet") . '</a></li>'; if (char_get_class_name($char["class"]) === "Hunter" && $view_pets_override) { $output .= ' <li><a href="char_pets.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "pets") . '</a></li>'; } if ($view_rep_override) { $output .= ' <li><a href="char_rep.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "reputation") . '</a></li>'; } if ($view_skill_override) { $output .= ' <li><a href="char_skill.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "skills") . '</a></li>'; } if ($view_pvp_override) { $output .= ' <li><a href="char_pvp.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "pvp") . '</a></li>'; } if ($owner_name == $user_name || $user_lvl >= get_page_permission("insert", "char_mail.php")) { $output .= ' <li><a href="char_mail.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "mail") . '</a></li>'; } $output .= ' </ul> </div>'; } else { $output .= ' <div class="tab_content center"> <div class="tab"> </div>'; } $output .= ' <div class="tab_content2 center"> <table class="lined" id="char_character_sheet"> <tr> <td colspan="2"> <div> <img src="' . char_get_avatar_img($char["level"], $char["gender"], $char["race"], $char["class"], 0) . '" alt="avatar" /> </div> <div>'; // this_is_junk: auras are stored in a string in the characters table. // not sure how to query a string as though it were a record if ($core == 1) { } else { $a_results = $sql["char"]->query("SELECT DISTINCT spell FROM character_aura WHERE guid='" . $id . "'"); } if ($sql["char"]->num_rows($a_results)) { while ($aura = $sql["char"]->fetch_assoc($a_results)) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $spell_datasite . $aura["spell"] . '" rel="external"> <img src="' . spell_get_icon($aura["spell"]) . '" alt="' . $aura["spell"] . '" width="24" height="24" /> </a>'; } } $output .= ' </div> </td> <td colspan="4"> <span class="bold"> ' . htmlentities($char["name"], ENT_COMPAT, $site_encoding) . ' - <img src="img/c_icons/' . $char["race"] . '-' . $char["gender"] . '.gif" onmousemove="oldtoolTip(\'' . char_get_race_name($char["race"]) . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> <img src="img/c_icons/' . $char["class"] . '.gif" onmousemove="oldtoolTip(\'' . char_get_class_name($char["class"]) . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> - ' . lang("char", "level_short") . char_get_level_color($char["level"]) . ' </span> <br />' . lang("char", "location") . ': ' . get_map_name($char["mapid"]) . ' - ' . get_zone_name($char["zoneid"]) . ' <br />' . lang("char", "honor_points") . ': ' . $char_data[PLAYER_FIELD_HONOR_CURRENCY] . ' | ' . lang("char", "arena_points") . ': ' . $char_data[PLAYER_FIELD_ARENA_CURRENCY] . ' | ' . lang("char", "honor_kills") . ': ' . $char_data[PLAYER_FIELD_LIFETIME_HONORBALE_KILLS] . ' <br />' . lang("char", "guild") . ': ' . $guild_name . ' | ' . lang("char", "rank") . ': ' . htmlentities($guild_rank, ENT_COMPAT, $site_encoding) . ' <br />' . lang("char", "online") . ': ' . ($char["online"] ? '<img src="img/up.gif" onmousemove="oldtoolTip(\'' . lang("char", "online") . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="online" />' : '<img src="img/down.gif" onmousemove="oldtoolTip(\'' . lang("char", "offline") . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="offline" />'); if ($showcountryflag) { require_once 'libs/misc_lib.php'; $country = misc_get_country_by_account($char["acct"]); $output .= ' | ' . lang("global", "country") . ': ' . ($country["code"] ? '<img src="img/flags/' . $country["code"] . '.png" onmousemove="oldtoolTip(\'' . $country["country"] . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" />' : '-'); unset($country); } $output .= ' </td> </tr> <tr> <td style="width: 6%;">'; if ($equiped_items[1][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_HEAD . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'HEAD' . '\');" onmouseout="HideTooltip(\'_b' . 'HEAD' . '\');"> <img src="' . $equiped_items[1][1] . '" class="' . $equiped_items[1][2] . '" alt="Head" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[1][3]["bag"] . '&slot=' . $equiped_items[1][3]["slot"] . '&item=' . $equiped_items[1][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[1][3]["item_template"]); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'HEAD' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[1][3]["enchantment"], $equiped_items[1][3]["property"], $equiped_items[1][3]["creator"], $equiped_items[1][3]["durability"], $equiped_items[1][3]["flags"]) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_head.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td class="half_line" colspan="2" align="center" style="width: 50%;"> <div class="gradient_p" id="char_hp_name">' . lang("item", "health") . ':</div> <div class="gradient_pp" id="char_hp_value">' . $char_data[UNIT_FIELD_HEALTH] . '/' . $char_data[UNIT_FIELD_MAXHEALTH] . '</div>'; if ($char["class"] == 11) { //druid $output .= ' <br /> <div class="gradient_p" id="char_energy_name">' . lang("item", "mana") . ':</div> <div class="gradient_pp" id="char_energy_value">' . $char_data[UNIT_FIELD_POWER1] . '/' . $char_data[UNIT_FIELD_MAXPOWER1] . '</div>'; } $output .= ' </td> <td class="half_line" colspan="2" align="center" style="width: 50%;">'; if ($char["class"] == 1) { $output .= ' <div class="gradient_p" id="char_energy_name">' . lang("item", "rage") . ':</div> <div class="gradient_pp" id="char_energy_value">' . $char_data[UNIT_FIELD_POWER2] / 10 . '/' . $char_data[UNIT_FIELD_MAXPOWER2] / 10 . '</div>'; } elseif ($char["class"] == 4) { $output .= ' <div class="gradient_p" id="char_energy_name">' . lang("item", "energy") . ':</div> <div class="gradient_pp" id="char_energy_value">' . $char_data[UNIT_FIELD_POWER4] . '/' . $char_data[UNIT_FIELD_MAXPOWER4] . '</div>'; } elseif ($char["class"] == 6) { $output .= ' <div class="gradient_p" id="char_energy_name">' . lang("item", "runic") . ':</div> <div class="gradient_pp" id="char_energy_value">' . $char_data[UNIT_FIELD_POWER7] / 10 . '/' . $char_data[UNIT_FIELD_MAXPOWER7] / 10 . '</div>'; } elseif ($char["class"] == 11) { $output .= ' <div class="gradient_p" id="char_energy_name">' . lang("item", "mana") . ':</div> <div class="gradient_pp" id="char_energy_value">' . $char_data[UNIT_FIELD_POWER1] . '/' . $char_data[UNIT_FIELD_MAXPOWER1] . '</div> <br /> <div class="gradient_p" id="char_energy_name">' . lang("item", "rage") . ':</div> <div class="gradient_pp" id="char_energy_value">' . $char_data[UNIT_FIELD_POWER2] / 10 . '/' . $char_data[UNIT_FIELD_MAXPOWER2] / 10 . '</div>'; } elseif ($char["class"] == 2 || $char["class"] == 3 || $char["class"] == 5 || $char["class"] == 7 || $char["class"] == 8 || $char["class"] == 9) { $output .= ' <div class="gradient_p" id="char_energy_name">' . lang("item", "mana") . ':</div> <div class="gradient_pp" id="char_energy_value">' . $char_data[UNIT_FIELD_POWER1] . '/' . $char_data[UNIT_FIELD_MAXPOWER1] . '</div>'; } $output .= ' </td> <td style="width: 6%;">'; if ($equiped_items[10][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_GLOVES . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'GLOVES' . '\');" onmouseout="HideTooltip(\'_b' . 'GLOVES' . '\');"> <img src="' . $equiped_items[10][1] . '" class="' . $equiped_items[10][2] . '" alt="Gloves" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[10][3]["bag"] . '&slot=' . $equiped_items[10][3]["slot"] . '&item=' . $equiped_items[10][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[10][3]["item_template"]); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'GLOVES' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[10][3]["enchantment"], $equiped_items[10][3]["property"], $equiped_items[10][3]["creator"], $equiped_items[10][3]["durability"], $equiped_items[10][3]["flags"]) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_gloves.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td style="width: 1%;">'; if ($equiped_items[2][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_NECK . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'NECK' . '\');" onmouseout="HideTooltip(\'_b' . 'NECK' . '\');"> <img src="' . $equiped_items[2][1] . '" class="' . $equiped_items[2][2] . '" alt="Neck" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[2][3]["bag"] . '&slot=' . $equiped_items[2][3]["slot"] . '&item=' . $equiped_items[2][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[2][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'NECK' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[2][3]['enchantment'], $equiped_items[2][3]['property'], $equiped_items[2][3]['creator'], $equiped_items[2][3]['durability'], $equiped_items[2][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_neck.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td class="half_line" colspan="2" rowspan="3" align="center" style="width: 50%;"> <div class="gradient_p"> ' . lang("item", "strength") . ':<br /> ' . lang("item", "agility") . ':<br /> ' . lang("item", "stamina") . ':<br /> ' . lang("item", "intellect") . ':<br /> ' . lang("item", "spirit") . ':<br /> ' . lang("item", "armor") . ': </div> <div class="gradient_pp"> ' . $char_data[UNIT_FIELD_STAT0] . '<br /> ' . $char_data[UNIT_FIELD_STAT1] . '<br /> ' . $char_data[UNIT_FIELD_STAT2] . '<br /> ' . $char_data[UNIT_FIELD_STAT3] . '<br /> ' . $char_data[UNIT_FIELD_STAT4] . '<br /> ' . $char_data[UNIT_FIELD_RESISTANCES] . ' </div> </td> <td class="half_line" colspan="2" rowspan="3" align="center" style="width: 50%;"> <div class="gradient_p"> ' . lang("item", "res_holy") . ':<br /> ' . lang("item", "res_arcane") . ':<br /> ' . lang("item", "res_fire") . ':<br /> ' . lang("item", "res_nature") . ':<br /> ' . lang("item", "res_frost") . ':<br /> ' . lang("item", "res_shadow") . ': </div> <div class="gradient_pp"> ' . $char_data[UNIT_FIELD_RESISTANCES + 1] . '<br /> ' . $char_data[UNIT_FIELD_RESISTANCES + 2] . '<br /> ' . $char_data[UNIT_FIELD_RESISTANCES + 3] . '<br /> ' . $char_data[UNIT_FIELD_RESISTANCES + 4] . '<br /> ' . $char_data[UNIT_FIELD_RESISTANCES + 5] . '<br /> ' . $char_data[UNIT_FIELD_RESISTANCES + 6] . ' </div> </td> <td style="width: 1%;">'; if ($equiped_items[6][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_BELT . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'BELT' . '\');" onmouseout="HideTooltip(\'_b' . 'BELT' . '\');"> <img src="' . $equiped_items[6][1] . '" class="' . $equiped_items[6][2] . '" alt="Belt" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[6][3]["bag"] . '&slot=' . $equiped_items[6][3]["slot"] . '&item=' . $equiped_items[6][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[6][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'BELT' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[6][3]['enchantment'], $equiped_items[6][3]['property'], $equiped_items[6][3]['creator'], $equiped_items[6][3]['durability'], $equiped_items[6][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_waist.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td style="width: 1%;">'; if ($equiped_items[3][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_SHOULDER . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'SHOULDER' . '\');" onmouseout="HideTooltip(\'_b' . 'SHOULDER' . '\');"> <img src="' . $equiped_items[3][1] . '" class="' . $equiped_items[3][2] . '" alt="Shoulder" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[3][3]["bag"] . '&slot=' . $equiped_items[3][3]["slot"] . '&item=' . $equiped_items[3][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[3][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'SHOULDER' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[3][3]['enchantment'], $equiped_items[3][3]['property'], $equiped_items[3][3]['creator'], $equiped_items[3][3]['durability'], $equiped_items[3][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_shoulder.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td style="width: 1%;">'; if ($equiped_items[7][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_LEGS . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'LEGS' . '\');" onmouseout="HideTooltip(\'_b' . 'LEGS' . '\');"> <img src="' . $equiped_items[7][1] . '" class="' . $equiped_items[7][2] . '" alt="Legs" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[7][3]["bag"] . '&slot=' . $equiped_items[7][3]["slot"] . '&item=' . $equiped_items[7][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[7][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'LEGS' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[7][3]['enchantment'], $equiped_items[7][3]['property'], $equiped_items[7][3]['creator'], $equiped_items[7][3]['durability'], $equiped_items[7][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_legs.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td style="width: 1%;">'; if ($equiped_items[15][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_BACK . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'BACK' . '\');" onmouseout="HideTooltip(\'_b' . 'BACK' . '\');"> <img src="' . $equiped_items[15][1] . '" class="' . $equiped_items[15][2] . '" alt="Back" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[15][3]["bag"] . '&slot=' . $equiped_items[15][3]["slot"] . '&item=' . $equiped_items[15][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[15][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'BACK' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[15][3]['enchantment'], $equiped_items[15][3]['property'], $equiped_items[15][3]['creator'], $equiped_items[15][3]['durability'], $equiped_items[15][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_chest_back.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td style="width: 1%;">'; if ($equiped_items[8][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_FEET . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'FEET' . '\');" onmouseout="HideTooltip(\'_b' . 'FEET' . '\');"> <img src="' . $equiped_items[8][1] . '" class="' . $equiped_items[8][2] . '" alt="Feet" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[8][3]["bag"] . '&slot=' . $equiped_items[8][3]["slot"] . '&item=' . $equiped_items[8][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[8][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'FEET' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[8][3]['enchantment'], $equiped_items[8][3]['property'], $equiped_items[8][3]['creator'], $equiped_items[8][3]['durability'], $equiped_items[8][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_feet.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td style="width: 1%;">'; if ($equiped_items[5][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_CHEST . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'CHEST' . '\');" onmouseout="HideTooltip(\'_b' . 'CHEST' . '\');"> <img src="' . $equiped_items[5][1] . '" class="' . $equiped_items[5][2] . '" alt="Chest" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[5][3]["bag"] . '&slot=' . $equiped_items[5][3]["slot"] . '&item=' . $equiped_items[5][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[5][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'CHEST' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[5][3]['enchantment'], $equiped_items[5][3]['property'], $equiped_items[5][3]['creator'], $equiped_items[5][3]['durability'], $equiped_items[5][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_chest_back.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td class="half_line" colspan="2" rowspan="2" align="center" style="width: 50%;"> <div class="gradient_p" id="char_melee_name"> ' . lang("char", "melee_d") . ':<br /> ' . lang("char", "melee_ap") . ':<br /> ' . lang("char", "melee_hit") . ':<br /> ' . lang("char", "melee_crit") . ':<br /> ' . lang("char", "expertise") . ':<br /> </div> <div class="gradient_pp" id="char_melee_value"> ' . $mindamage . '-' . $maxdamage . '<br /> ' . ($char_data[UNIT_FIELD_ATTACK_POWER] + $char_data[UNIT_FIELD_ATTACK_POWER_MODS]) . '<br /> ' . $melee_hit . '<br /> ' . $crit . '%<br /> ' . $expertise . '<br /> </div> </td> <td class="half_line" colspan="2" rowspan="2" align="center" style="width: 50%;"> <div class="gradient_p"> ' . lang("char", "spell_d") . ':<br /> ' . lang("char", "spell_heal") . ':<br /> ' . lang("char", "spell_hit") . ':<br /> ' . lang("char", "spell_crit") . ':<br /> ' . lang("char", "spell_haste") . ' </div> <div class="gradient_pp"> ' . $spell_damage . '<br /> ' . $spell_heal . '<br /> ' . $spell_hit . '<br /> ' . $spell_crit . '%<br /> ' . $spell_haste . ' </div> </td> <td style="width: 1%;">'; if ($equiped_items[11][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_FINGER1 . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'FINGER1' . '\');" onmouseout="HideTooltip(\'_b' . 'FINGER1' . '\');"> <img src="' . $equiped_items[11][1] . '" class="' . $equiped_items[11][2] . '" alt="Finger1" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[11][3]["bag"] . '&slot=' . $equiped_items[11][3]["slot"] . '&item=' . $equiped_items[11][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[11][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'FINGER1' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[11][3]['enchantment'], $equiped_items[11][3]['property'], $equiped_items[11][3]['creator'], $equiped_items[11][3]['durability'], $equiped_items[11][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_finger.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td style="width: 1%;">'; if ($equiped_items[4][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_SHIRT . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'SHIRT' . '\');" onmouseout="HideTooltip(\'_b' . 'SHIRT' . '\');"> <img src="' . $equiped_items[4][1] . '" class="' . $equiped_items[4][2] . '" alt="Shirt" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[4][3]["bag"] . '&slot=' . $equiped_items[4][3]["slot"] . '&item=' . $equiped_items[4][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[4][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'SHIRT' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[4][3]['enchantment'], $equiped_items[4][3]['property'], $equiped_items[4][3]['creator'], $equiped_items[4][3]['durability'], $equiped_items[4][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_shirt.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td style="width: 1%;">'; if ($equiped_items[12][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_FINGER2 . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'FINGER2' . '\');" onmouseout="HideTooltip(\'_b' . 'FINGER2' . '\');"> <img src="' . $equiped_items[12][1] . '" class="' . $equiped_items[12][2] . '" alt="Finger2" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[12][3]["bag"] . '&slot=' . $equiped_items[12][3]["slot"] . '&item=' . $equiped_items[12][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[12][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'FINGER2' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[12][3]['enchantment'], $equiped_items[12][3]['property'], $equiped_items[12][3]['creator'], $equiped_items[12][3]['durability'], $equiped_items[12][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_finger.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td style="width: 1%;">'; if ($equiped_items[19][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_TABARD . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'TABARD' . '\');" onmouseout="HideTooltip(\'_b' . 'TABARD' . '\');"> <img src="' . $equiped_items[19][1] . '" class="' . $equiped_items[19][2] . '" alt="Tabard" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[19][3]["bag"] . '&slot=' . $equiped_items[19][3]["slot"] . '&item=' . $equiped_items[19][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[19][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'TABARD' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[19][3]['enchantment'], $equiped_items[19][3]['property'], $equiped_items[19][3]['creator'], $equiped_items[19][3]['durability'], $equiped_items[19][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_tabard.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td class="half_line" colspan="2" rowspan="2" align="center" style="width: 50%;"> <div class="gradient_p"> ' . lang("char", "dodge") . ':<br /> ' . lang("char", "parry") . ':<br /> ' . lang("char", "block") . ': </div> <div class="gradient_pp"> ' . $dodge . '%<br /> ' . $parry . '%<br /> ' . $block . '% </div> </td> <td class="half_line" colspan="2" rowspan="2" align="center" style="width: 50%;"> <div class="gradient_p" id="char_ranged_name"> ' . lang("char", "ranged_d") . ':<br /> ' . lang("char", "ranged_ap") . ':<br /> ' . lang("char", "ranged_hit") . ':<br /> ' . lang("char", "ranged_crit") . ':<br /> </div> <div class="gradient_pp" id="char_ranged_value"> ' . $minrangeddamage . '-' . $maxrangeddamage . '<br /> ' . ($char_data[UNIT_FIELD_RANGED_ATTACK_POWER] + $char_data[UNIT_FIELD_RANGED_ATTACK_POWER_MODS]) . '<br /> ' . $ranged_hit . '<br /> ' . $ranged_crit . '%<br /> </div> </td> <td style="width: 1%;">'; if ($equiped_items[13][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_TRINKET1 . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'TRINKET1' . '\');" onmouseout="HideTooltip(\'_b' . 'TRINKET1' . '\');"> <img src="' . $equiped_items[13][1] . '" class="' . $equiped_items[13][2] . '" alt="Trinket1" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[13][3]["bag"] . '&slot=' . $equiped_items[13][3]["slot"] . '&item=' . $equiped_items[13][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[13][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'TRINKET1' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[13][3]['enchantment'], $equiped_items[13][3]['property'], $equiped_items[13][3]['creator'], $equiped_items[13][3]['durability'], $equiped_items[13][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_trinket.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td style="width: 1%;">'; if ($equiped_items[9][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_WRIST . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'WRIST' . '\');" onmouseout="HideTooltip(\'_b' . 'WRIST' . '\');"> <img src="' . $equiped_items[9][1] . '" class="' . $equiped_items[9][2] . '" alt="Wrist" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[9][3]["bag"] . '&slot=' . $equiped_items[9][3]["slot"] . '&item=' . $equiped_items[9][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[9][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'WRIST' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[9][3]['enchantment'], $equiped_items[9][3]['property'], $equiped_items[9][3]['creator'], $equiped_items[9][3]['durability'], $equiped_items[9][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_wrist.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td style="width: 1%;">'; if ($equiped_items[14][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_TRINKET2 . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'TRINKET2' . '\');" onmouseout="HideTooltip(\'_b' . 'TRINKET2' . '\');"> <img src="' . $equiped_items[14][1] . '" class="' . $equiped_items[14][2] . '" alt="Trinket2" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[14][3]["bag"] . '&slot=' . $equiped_items[14][3]["slot"] . '&item=' . $equiped_items[14][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[14][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'TRINKET2' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[14][3]['enchantment'], $equiped_items[14][3]['property'], $equiped_items[14][3]['creator'], $equiped_items[14][3]['durability'], $equiped_items[14][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_trinket.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td></td> <td style="width: 15%;">'; if ($equiped_items[16][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_MAIN_HAND . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'MAIN_HAND' . '\');" onmouseout="HideTooltip(\'_b' . 'MAIN_HAND' . '\');"> <img src="' . $equiped_items[16][1] . '" class="' . $equiped_items[16][2] . '" alt="MainHand" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[16][3]["bag"] . '&slot=' . $equiped_items[16][3]["slot"] . '&item=' . $equiped_items[16][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[16][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'MAIN_HAND' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[16][3]['enchantment'], $equiped_items[16][3]['property'], $equiped_items[16][3]['creator'], $equiped_items[16][3]['durability'], $equiped_items[16][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_main_hand.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td style="width: 15%;">'; if ($equiped_items[17][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_OFF_HAND . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'OFF_HAND' . '\');" onmouseout="HideTooltip(\'_b' . 'OFF_HAND' . '\');"> <img src="' . $equiped_items[17][1] . '" class="' . $equiped_items[17][2] . '" alt="OffHand" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[17][3]["bag"] . '&slot=' . $equiped_items[17][3]["slot"] . '&item=' . $equiped_items[17][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[17][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'OFF_HAND' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[17][3]['enchantment'], $equiped_items[17][3]['property'], $equiped_items[17][3]['creator'], $equiped_items[17][3]['durability'], $equiped_items[17][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_off_hand.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td style="width: 15%;">'; if ($equiped_items[18][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_RANGED . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'RANGED' . '\');" onmouseout="HideTooltip(\'_b' . 'RANGED' . '\');"> <img src="' . $equiped_items[18][1] . '" class="' . $equiped_items[18][2] . '" alt="Ranged" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[18][3]["bag"] . '&slot=' . $equiped_items[18][3]["slot"] . '&item=' . $equiped_items[18][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[18][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'RANGED' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[18][3]['enchantment'], $equiped_items[18][3]['property'], $equiped_items[18][3]['creator'], $equiped_items[18][3]['durability'], $equiped_items[18][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_ranged.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td style="width: 15%;"></td> <td></td> </tr>'; if ($user_lvl > $owner_gmlvl || $owner_name === $user_name || $user_lvl == $action_permission["delete"]) { // if the character is still leveling, show an experience bar if ($char["level"] < 80) { $xp_query = "SELECT * FROM xp_to_level WHERE level='" . $char["level"] . "'"; $xp_result = $sql["mgr"]->query($xp_query); $xp_fields = $sql["mgr"]->fetch_assoc($xp_result); $xp_to_level = $xp_fields["xp_for_next_level"]; $output .= ' <tr> <td colspan="6" class="bar xp_bar" style="background-position: ' . (round(580 * $char["xp"] / $xp_to_level) - 580) . 'px;"> ' . lang("char", "exp") . ": " . $char["xp"] . " / " . $xp_to_level . ' </td> </tr>'; } //total time played $tot_time = $char["totaltime"]; $tot_days = (int) ($tot_time / 86400); $tot_time = $tot_time - $tot_days * 86400; $total_hours = (int) ($tot_time / 3600); $tot_time = $tot_time - $total_hours * 3600; $total_min = (int) ($tot_time / 60); $time_offset = $timezone_offset * 3600; if ($char["timestamp"] != 0) { $lastseen = date("F j, Y @ Hi", $char["timestamp"] + $time_offset); } else { $lastseen = '-'; } $output .= ' <tr> <td colspan="6"> ' . lang("char", "tot_play_time") . ': ' . $tot_days . ' ' . lang("char", "days") . ' ' . $total_hours . ' ' . lang("char", "hours") . ' ' . $total_min . ' ' . lang("char", "min") . ' </td> </tr>'; $output .= ' <tr> <td colspan="6"> ' . lang("char", "lastseen") . ': ' . $lastseen . ' </td> </tr>'; } $output .= ' </table> </div> <br /> </div> <br /> <table class="hidden center"> <tr> <td>'; // button to user account page, user account page has own security makebutton(lang("char", "chars_acc"), 'user.php?action=edit_user&acct=' . $owner_acc_id . '', 130); $output .= ' </td> <td>'; // only higher level GM with delete access can edit character // character edit allows removal of character items, so delete permission is needed if ($user_lvl >= $owner_gmlvl && $user_lvl >= $action_permission["delete"]) { makebutton(lang("char", "edit_button"), 'char_edit.php?id=' . $id . '&realm=' . $realmid, 130); $output .= ' </td> <td>'; } // only higher level GM with delete access, or character owner can delete character if ($user_lvl > $owner_gmlvl && $user_lvl >= $action_permission["delete"] || $owner_name === $user_name) { makebutton(lang("char", "del_char"), 'char_list.php?action=del_char_form&check%5B%5D=' . $id . '" type="wrn', 130); $output .= ' </td> <td>'; } // show Delete Mode / View Mode button depending on current mode if ($mode) { makebutton(lang("char", "viewmode"), 'char.php?id=' . $id . '&realm=' . $realmid . '&mode=0" type="def', 130); } else { makebutton(lang("char", "deletemode"), 'char.php?id=' . $id . '&realm=' . $realmid . '&mode=1" type="def', 130); } $output .= ' </td> <td>'; // only GM with update permission can send mail, mail can send items, so update permission is needed if ($user_lvl >= $action_permission["update"]) { makebutton(lang("char", "send_mail"), 'mail.php?type=ingame_mail&to=' . $char["name"], 130); $output .= ' </td>'; } else { $output .= ' </td>'; } $output .= ' </tr> <tr> <td>'; makebutton(lang("global", "back"), 'javascript:window.history.back()" type="def', 130); $output .= ' </td> </tr> </table> <br /> <!-- end of char.php -->'; } else { } //error($lang_char["no_permission"]); } else { error(lang("char", "no_char_found")); } }
function front(&$sqlr, &$sqlc, &$sqlm) { global $output, $lang_global, $lang_index, $realm_id, $world_db, $mmfpm_db, $server, $action_permission, $user_lvl, $user_id, $showcountryflag, $motd_display_poster, $gm_online_count, $gm_online, $itemperpage; $output .= ' <div class="top">'; if (test_port($server[$realm_id]['addr'], $server[$realm_id]['game_port'])) { $stats = $sqlr->fetch_assoc($sqlr->query('SELECT starttime, maxplayers FROM uptime WHERE realmid = ' . $realm_id . ' ORDER BY starttime DESC LIMIT 1'), 0); $uptimetime = time() - $stats['starttime']; function format_uptime($seconds) { $secs = intval($seconds % 60); $mins = intval($seconds / 60 % 60); $hours = intval($seconds / 3600 % 24); $days = intval($seconds / 86400); $uptimeString = ''; if ($days) { $uptimeString .= $days; $uptimeString .= 1 === $days ? ' day' : ' days'; } if ($hours) { $uptimeString .= (0 < $days ? ', ' : '') . $hours; $uptimeString .= 1 === $hours ? ' hour' : ' hours'; } if ($mins) { $uptimeString .= (0 < $days || 0 < $hours ? ', ' : '') . $mins; $uptimeString .= 1 === $mins ? ' minute' : ' minutes'; } if ($secs) { $uptimeString .= (0 < $days || 0 < $hours || 0 < $mins ? ', ' : '') . $secs; $uptimeString .= 1 === $secs ? ' second' : ' seconds'; } return $uptimeString; } $staticUptime = $lang_index['realm'] . ' <em>' . htmlentities(get_realm_name($realm_id)) . '</em> ' . $lang_index['online'] . ' for ' . format_uptime($uptimetime); unset($uptimetime); $output .= ' <div id="uptime"> <h1> <font color="#55aa55">' . $staticUptime . '<br />' . $lang_index['maxplayers'] . ': ' . $stats['maxplayers'] . '</font> </h1> </div>'; unset($staticUptime); unset($stats); $online = true; } else { $output .= ' <h1> <font class="error">' . $lang_index['realm'] . ' <em>' . htmlentities(get_realm_name($realm_id)) . '</em> ' . $lang_index['offline_or_let_high'] . '</font> </h1>'; $online = false; } $sqlw = new SQL(); $sqlw->connect($world_db[$realm_id]['addr'], $world_db[$realm_id]['user'], $world_db[$realm_id]['pass'], $world_db[$realm_id]['name']); // This retrieves the actual database version from the database itself, instead of hardcoding it into a string $version = $sqlw->fetch_assoc($sqlw->query('SELECT core_revision, db_version FROM version'), 0); $output .= ' ' . $lang_index['trinity_rev'] . ' ' . $version['core_revision'] . ' ' . $lang_index['using_db'] . ' ' . $version['db_version'] . ' </div>'; unset($version); //MOTD part $start_m = isset($_GET['start_m']) ? $sqlc->quote_smart($_GET['start_m']) : 0; if (is_numeric($start_m)) { } else { $start_m = 0; } $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); $all_record_m = $sqlm->result($sqlm->query('SELECT count(*) FROM mm_motd'), 0); if ($user_lvl >= $action_permission['delete']) { $output .= ' <script type="text/javascript"> // <![CDATA[ answerbox.btn_ok="' . $lang_global['yes_low'] . '"; answerbox.btn_cancel="' . $lang_global['no'] . '"; var del_motd = "motd.php?action=delete_motd&id="; // ]]> </script>'; } $output .= ' <center> <table class="lined"> <tr> <th align="right">'; if ($user_lvl >= $action_permission['insert']) { $output .= ' <a href="motd.php?action=add_motd">' . $lang_index['add_motd'] . '</a>'; } $output .= ' </th> </tr>'; if ($all_record_m) { $result = $sqlm->query('SELECT id, realmid, type, content FROM mm_motd WHERE realmid = ' . $realm_id . ' ORDER BY id DESC LIMIT ' . $start_m . ', 3'); while ($post = $sqlm->fetch_assoc($result)) { $output .= ' <tr> <td align="left" class="large"> <blockquote>' . bbcode_bbc2html($post['content']) . '</blockquote> </td> </tr> <tr> <td align="right">'; $motd_display_poster ? $output .= $post['type'] : ''; if ($user_lvl >= $action_permission['delete']) { $output .= ' <img src="img/cross.png" width="12" height="12" onclick="answerBox(\'' . $lang_global['delete'] . ': <font color=white>' . $post['id'] . '</font><br />' . $lang_global['are_you_sure'] . '\', del_motd + ' . $post['id'] . ');" style="cursor:pointer;" alt="" />'; } if ($user_lvl >= $action_permission['update']) { $output .= ' <a href="motd.php?action=edit_motd&error=3&id=' . $post['id'] . '"> <img src="img/edit.png" width="14" height="14" alt="" /> </a>'; } $output .= ' </td> </tr> <tr> <td class="hidden"></td> </tr>'; } if ($online) { $output .= '%%REPLACE_TAG%%'; } else { $output .= ' <tr> <td align="right" class="hidden">' . generate_pagination('index.php?start=0', $all_record_m, 3, $start_m, 'start_m') . '</td> </tr>'; } } $output .= ' </table>'; //print online chars if ($online) { //==========================$_GET and SECURE================================= $start = isset($_GET['start']) ? $sqlc->quote_smart($_GET['start']) : 0; if (is_numeric($start)) { } else { $start = 0; } $order_by = isset($_GET['order_by']) ? $sqlc->quote_smart($_GET['order_by']) : 'level'; if (preg_match('/^[_[:lower:]]{1,12}$/', $order_by)) { } else { $order_by = 'level'; } $dir = isset($_GET['dir']) ? $sqlc->quote_smart($_GET['dir']) : 1; if (preg_match('/^[01]{1}$/', $dir)) { } else { $dir = 1; } $order_dir = $dir ? 'DESC' : 'ASC'; $dir = $dir ? 0 : 1; //==========================$_GET and SECURE end============================= if ($order_by === 'map') { $order_by = 'map ' . $order_dir . ', zone'; } elseif ($order_by === 'zone') { $order_by = 'zone ' . $order_dir . ', map'; } $order_side = ''; if ($user_lvl || $server[$realm_id]['both_factions']) { } else { $result = $sqlc->query('SELECT race FROM characters WHERE account = ' . $user_id . ' AND totaltime = (SELECT MAX(totaltime) FROM characters WHERE account = ' . $user_id . ') LIMIT 1'); if ($sqlc->num_rows($result)) { $order_side = in_array($sqlc->result($result, 0), array(2, 5, 6, 8, 10)) ? ' AND race IN (2,5,6,8,10) ' : ' AND race IN (1,3,4,7,11) '; } } if ($order_by == 'ip') { $result = $sqlr->query('SELECT id, last_ip FROM account WHERE online = 1 ORDER BY last_ip ' . $order_dir . ' LIMIT ' . $start . ', ' . $itemperpage . ''); } else { $result = $sqlc->query('SELECT characters.guid, characters.name, characters.race, characters.class, characters.zone, characters.map, characters.level, characters.account, characters.gender, characters.totalHonorPoints, COALESCE(guild_member.guildid,0) AS guildid FROM characters LEFT JOIN guild_member ON guild_member.guid = characters.guid WHERE characters.online = 1 ' . ($gm_online == '0' ? 'AND characters.extra_flags &1 = 0 ' : '') . $order_side . ' ORDER BY ' . $order_by . ' ' . $order_dir . ' LIMIT ' . $start . ', ' . $itemperpage); } $total_online = $sqlc->result($sqlc->query('SELECT count(*) FROM characters WHERE online= 1' . ($gm_online_count == '0' ? ' AND extra_flags &1 = 0' : '')), 0); $replace = ' <tr> <td align="right" class="hidden">' . generate_pagination('index.php?start=' . $start . '&order_by=' . $order_by . '&dir=' . ($dir ? 0 : 1) . '', $all_record_m, 3, $start_m, 'start_m') . '</td> </tr>'; unset($all_record_m); $output = str_replace('%%REPLACE_TAG%%', $replace, $output); unset($replace); $output .= ' <font class="bold">' . $lang_index['tot_users_online'] . ': ' . $total_online . '</font> <table class="lined"> <tr> <td colspan="' . (10 - $showcountryflag) . '" align="right" class="hidden" width="25%">'; $output .= generate_pagination('index.php?start_m=' . $start_m . '&order_by=' . $order_by . '&dir=' . ($dir ? 0 : 1), $total_online, $itemperpage, $start); $output .= ' </td> </tr> <tr> <th width="15%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=name&dir=' . $dir . '"' . ($order_by === 'name' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['name'] . '</a></th> <th width="1%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=race&dir=' . $dir . '"' . ($order_by === 'race' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['race'] . '</a></th> <th width="1%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=class&dir=' . $dir . '"' . ($order_by === 'class' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['class'] . '</a></th> <th width="5%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=level&dir=' . $dir . '"' . ($order_by === 'level' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['level'] . '</a></th> <th width="1%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=totalHonorPoints&dir=' . $dir . '"' . ($order_by === 'totalHonorPoints' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['rank'] . '</a></th> <th width="15%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=guildid&dir=' . $dir . '"' . ($order_by === 'guildid' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['guild'] . '</a></th> <th width="20%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=map&dir=' . $dir . '"' . ($order_by === 'map ' . $order_dir . ', zone' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['map'] . '</a></th> <th width="25%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=zone&dir=' . $dir . '"' . ($order_by === 'zone ' . $order_dir . ', map' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['zone'] . '</a></th>'; if ($showcountryflag) { require_once 'libs/misc_lib.php'; $output .= ' <th width="1%">' . $lang_global['country'] . '</th>'; } $output .= ' </tr>'; $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); while ($char = $sqlc->fetch_assoc($result)) { if ($order_by == 'ip') { $temp = $sqlc->fetch_assoc($sqlc->query('SELECT characters.guid, characters.name, characters.race, characters.class, characters.zone, characters.map, characters.level, characters.account, characters.gender, characters.totalHonorPoints, COALESCE(guild_member.guildid,0) AS guildid FROM characters LEFT JOIN guild_member ON guild_member.guid = characters.guid WHERE characters.online= 1 ' . ($gm_online == '0' ? 'AND characters.extra_flags &1 = 0 ' : '') . $order_side . ' and account = ' . $char['id'])); if (isset($temp['guid'])) { $char = $temp; } else { continue; } } $gm = $sqlr->result($sqlr->query('SELECT gmlevel FROM account_access WHERE id=' . $char['account'] . ''), 0); $guild_name = $sqlc->result($sqlc->query('SELECT name FROM guild WHERE guildid=' . $char['guildid'] . '')); $output .= ' <tr> <td>'; if ($user_lvl >= $gm) { $output .= ' <a href="char.php?id=' . $char['guid'] . '"> <span onmousemove="toolTip(\'' . id_get_gm_level($gm) . '\', \'item_tooltip\')" onmouseout="toolTip()">' . htmlentities($char['name']) . '</span> </a>'; } else { $output .= ' <span onmousemove="toolTip(\'' . id_get_gm_level($gm) . '\', \'item_tooltip\')" onmouseout="toolTip()">' . htmlentities($char['name']) . '</span>'; } $output .= ' </td> <td> <img src="img/c_icons/' . $char['race'] . '-' . $char['gender'] . '.gif" onmousemove="toolTip(\'' . char_get_race_name($char['race']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /> </td> <td> <img src="img/c_icons/' . $char['class'] . '.gif" onmousemove="toolTip(\'' . char_get_class_name($char['class']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /> </td> <td>' . char_get_level_color($char['level']) . '</td> <td> <span onmouseover="toolTip(\'' . char_get_pvp_rank_name($char['totalHonorPoints'], char_get_side_id($char['race'])) . '\', \'item_tooltip\')" onmouseout="toolTip()" style="color: white;"><img src="img/ranks/rank' . char_get_pvp_rank_id($char['totalHonorPoints'], char_get_side_id($char['race'])) . '.gif" alt="" /></span> </td> <td> <a href="guild.php?action=view_guild&error=3&id=' . $char['guildid'] . '">' . htmlentities($guild_name) . '</a> </td> <td><span onmousemove="toolTip(\'MapID:' . $char['map'] . '\', \'item_tooltip\')" onmouseout="toolTip()">' . get_map_name($char['map'], $sqlm) . '</span></td> <td><span onmousemove="toolTip(\'ZoneID:' . $char['zone'] . '\', \'item_tooltip\')" onmouseout="toolTip()">' . get_zone_name($char['zone'], $sqlm) . '</span></td>'; if ($showcountryflag) { $country = misc_get_country_by_account($char['account'], $sqlr, $sqlm); $output .= ' <td>' . ($country['code'] ? '<img src="img/flags/' . $country['code'] . '.png" onmousemove="toolTip(\'' . $country['country'] . '\',\'item_tooltip\')" onmouseout="toolTip()" alt="" />' : '-') . '</td>'; } $output .= ' </tr>'; } $output .= ' <tr>'; $output .= ' <td colspan="' . (10 - $showcountryflag) . '" align="right" class="hidden" width="25%">'; $output .= generate_pagination('index.php?start_m=' . $start_m . '&order_by=' . $order_by . '&dir=' . ($dir ? 0 : 1), $total_online, $itemperpage, $start); unset($total_online); $output .= ' </td> </tr> </table> <br /> </center>'; } }
function browse_chars(&$sqlr, &$sqlc) { global $output, $lang_char_list, $lang_global, $realm_db, $mmfpm_db, $characters_db, $realm_id, $action_permission, $user_lvl, $user_name, $showcountryflag, $itemperpage; $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); //==========================$_GET and SECURE======================== $start = isset($_GET['start']) ? $sqlr->quote_smart($_GET['start']) : 0; if (is_numeric($start)) { } else { $start = 0; } $order_by = isset($_GET['order_by']) ? $sqlr->quote_smart($_GET['order_by']) : 'guid'; if (preg_match('/^[_[:lower:]]{1,12}$/', $order_by)) { } else { $order_by = 'guid'; } $dir = isset($_GET['dir']) ? $sqlr->quote_smart($_GET['dir']) : 1; if (preg_match('/^[01]{1}$/', $dir)) { } else { $dir = 1; } $order_dir = $dir ? 'ASC' : 'DESC'; $dir = $dir ? 0 : 1; //==========================$_GET and SECURE end======================== if ($order_by == 'map') { $order_by = 'map ' . $order_dir . ', zone'; } elseif ($order_by == 'zone') { $order_by = 'zone ' . $order_dir . ', map'; } $search_by = ''; $search_value = ''; if (isset($_GET['search_value']) && isset($_GET['search_by'])) { $search_value = $sqlr->quote_smart($_GET['search_value']); $search_by = isset($_GET['search_by']) ? $sqlr->quote_smart($_GET['search_by']) : 'name'; $search_menu = array('name', 'guid', 'account', 'level', 'greater_level', 'guild', 'race', 'class', 'map', 'highest_rank', 'greater_rank', 'online', 'gold', 'item'); if (in_array($search_by, $search_menu)) { } else { $search_by = 'name'; } unset($search_menu); switch ($search_by) { //need to get the acc id from other table since input comes as name case "account": if (preg_match('/^[\\t\\v\\b\\f\\a\\n\\r\\\\"\'\\? <>[](){}_=+-|!@#$%^&*~`.,0123456789\\0]{1,30}$/', $search_value)) { redirect("charlist.php?error=2"); } $result = $sqlr->query("SELECT id FROM account WHERE username LIKE '%{$search_value}%' LIMIT {$start}, {$itemperpage}"); $where_out = " account IN (0 "; while ($char = $sqlr->fetch_row($result)) { $where_out .= " ,"; $where_out .= $char[0]; } $where_out .= ") "; unset($result); $sql_query = "SELECT characters.guid, characters.name, characters.account, characters.race, characters.class, characters.zone, characters.map,online, level, characters.gender, characters.logout_time, guildid FROM characters, guild_member WHERE {$where_out} AND guild_member.guid = characters.guid GROUP BY characters.name ORDER BY {$order_by} {$order_dir} LIMIT {$start}, {$itemperpage}"; break; case "level": if (is_numeric($search_value)) { } else { $search_value = 1; } $where_out = "level = {$search_value}"; $sql_query = "SELECT characters.guid, characters.name, characters.account, characters.race, characters.class, characters.zone, characters.map,online, level, characters.gender, characters.logout_time, guildid FROM characters, guild_member WHERE {$where_out} AND guild_member.guid = characters.guid GROUP BY characters.name ORDER BY {$order_by} {$order_dir} LIMIT {$start}, {$itemperpage}"; break; case "greater_level": if (is_numeric($search_value)) { } else { $search_value = 1; } $where_out = "level > {$search_value}"; $sql_query = "SELECT characters.guid, characters.name, characters.account, characters.race, characters.class, characters.zone, characters.map,online, level, characters.gender, characters.logout_time, guildid FROM characters, guild_member WHERE {$where_out} AND guild_member.guid = characters.guid GROUP BY characters.name ORDER BY 'level' {$order_dir} LIMIT {$start}, {$itemperpage}"; break; case "gold": if (is_numeric($search_value)) { } else { $search_value = 1; } $where_out = "money > {$search_value}"; $sql_query = "SELECT characters.guid, characters.name, characters.account, characters.race, characters.class, characters.zone, characters.map,online, level, characters.gender, characters.logout_time, guildid FROM characters, guild_member WHERE {$where_out} AND guild_member.guid = characters.guid GROUP BY characters.name ORDER BY {$order_by} {$order_dir} LIMIT {$start}, {$itemperpage}"; break; case "guild": if (preg_match('/^[\\t\\v\\b\\f\\a\\n\\r\\\\"\'\\? <>[](){}_=+-|!@#$%^&*~`.,0123456789\\0]{1,30}$/', $search_value)) { redirect("charlist.php?error=2"); } $result = $sqlc->query("SELECT guildid FROM guild WHERE name LIKE '%{$search_value}%'"); $guildid = $sqlc->result($result, 0, 'guildid'); if (!$search_value) { $guildid = 0; } $Q1 = "SELECT guid FROM guild_member WHERE guildid = "; $Q1 .= $guildid; $result = $sqlc->query($Q1); unset($guildid); unset($Q1); $where_out = "guid IN (0 "; while ($char = $sqlc->fetch_row($result)) { $where_out .= " ,"; $where_out .= $char[0]; } $where_out .= ") "; unset($result); $sql_query = "SELECT characters.guid, characters.name, characters.account, characters.race, characters.class, characters.zone, characters.map,online, level, characters.gender, characters.logout_time, guildid FROM characters, guild_member WHERE {$where_out} AND guild_member.guid = characters.guid GROUP BY characters.name ORDER BY {$order_by} {$order_dir} LIMIT {$start}, {$itemperpage}"; break; case "item": if (is_numeric($search_value)) { } else { $search_value = 0; } $result = $sqlc->query("SELECT guid FROM character_inventory WHERE item_template = '{$search_value}'"); $where_out = "guid IN (0 "; while ($char = $sqlc->fetch_row($result)) { $where_out .= " ,"; $where_out .= $char[0]; } $where_out .= ") "; unset($result); $sql_query = "SELECT characters.guid, characters.name, characters.account, characters.race, characters.class, characters.zone, characters.map,online, level, characters.gender, characters.logout_time, guildid FROM characters, guild_member WHERE {$where_out} AND guild_member.guid = characters.guid GROUP BY characters.name ORDER BY {$order_by} {$order_dir} LIMIT {$start}, {$itemperpage}"; break; case "greater_rank": if (is_numeric($search_value)) { } else { $search_value = 0; } $where_out = "totalHonorPoints > {$search_value}"; $sql_query = "SELECT characters.guid, characters.name, characters.account, characters.race, characters.class, characters.zone, characters.map,online, level, characters.gender, characters.logout_time, guildid FROM characters, guild_member\r\n WHERE {$where_out} AND guild_member.guid = characters.guid ORDER BY 'highest_rank' {$order_dir} LIMIT {$start}, {$itemperpage}"; break; case "highest_rank": if (is_numeric($search_value)) { } else { $search_value = 0; } $where_out = "totalHonorPoints = {$search_value}"; $sql_query = "SELECT characters.guid, characters.name, characters.account, characters.race, characters.class, characters.zone, characters.map,online, level, characters.gender, characters.logout_time, guildid FROM characters, guild_member WHERE {$where_out} AND guild_member.guid = characters.guid GROUP BY characters.name ORDER BY {$order_by} {$order_dir} LIMIT {$start}, {$itemperpage}"; break; default: if (preg_match('/^[\\t\\v\\b\\f\\a\\n\\r\\\\"\'\\? <>[](){}_=+-|!@#$%^&*~`.,0123456789\\0]{1,30}$/', $search_value)) { redirect("charlist.php?error=2"); } $where_out = "{$search_by} LIKE '%{$search_value}%'"; $sql_query = "SELECT characters.guid, characters.name, characters.account, characters.race, characters.class, characters.zone, characters.map,online, level, characters.gender, characters.logout_time, guildid FROM characters, guild_member WHERE guild_member.guid = characters.guid GROUP BY characters.name ORDER BY {$order_by} {$order_dir} LIMIT {$start}, {$itemperpage}"; } $query_1 = $sqlc->query("SELECT count(*) FROM `characters` where {$where_out}"); $query = $sqlc->query($sql_query); } else { $query_1 = $sqlc->query("SELECT count(*) FROM `characters`"); $query = $sqlc->query("SELECT characters.guid, characters.name, characters.account, characters.race, characters.class, characters.zone, characters.map, totalHonorPoints AS highest_rank,\r\n online,level, gender, logout_time, guild.guildid as gname\r\n FROM `characters`, guild_member, guild WHERE characters.guid = guild_member.guid AND guild_member.guildid = guild.guildid GROUP BY characters.guid ORDER BY {$order_by} {$order_dir} LIMIT {$start}, {$itemperpage}"); } $all_record = $sqlc->result($query_1, 0); unset($query_1); $this_page = $sqlc->num_rows($query) or die(error($lang_global['err_no_result'])); //==========================top tage navigaion starts here======================== $output .= ' <script type="text/javascript" src="libs/js/check.js"></script> <center> <table class="top_hidden"> <tr> <td>'; // cleanup unknown working condition //if($user_lvl >= $action_permission['delete']) // makebutton($lang_char_list['cleanup'], 'cleanup.php', 130); makebutton($lang_global['back'], 'javascript:window.history.back()', 130); $search_by && $search_value ? makebutton($lang_char_list['characters'], 'char_list.php" type="def', 130) : ($output .= ''); $output .= ' </td> <td align="right" width="25%" rowspan="2">'; $output .= generate_pagination('char_list.php?order_by=' . $order_by . '&dir=' . ($dir ? 0 : 1) . ($search_value && $search_by ? '&search_by=' . $search_by . '&search_value=' . $search_value . '' : ''), $all_record, $itemperpage, $start); $output .= "\r\n </td>\r\n </tr>\r\n <tr align=\"left\">\r\n <td>\r\n <table class=\"hidden\">\r\n <tr>\r\n <td>\r\n <form action=\"char_list.php\" method=\"get\" name=\"form\">\r\n <input type=\"hidden\" name=\"error\" value=\"3\" />\r\n <input type=\"text\" size=\"24\" maxlength=\"50\" name=\"search_value\" value=\"{$search_value}\" />\r\n <select name=\"search_by\">\r\n <option value=\"name\"" . ($search_by == 'name' ? " selected=\"selected\"" : "") . ">{$lang_char_list['by_name']}</option>\r\n <option value=\"guid\"" . ($search_by == 'guid' ? " selected=\"selected\"" : "") . ">{$lang_char_list['by_id']}</option>\r\n <option value=\"account\"" . ($search_by == 'account' ? " selected=\"selected\"" : "") . ">{$lang_char_list['by_account']}</option>\r\n <option value=\"level\"" . ($search_by == 'level' ? " selected=\"selected\"" : "") . ">{$lang_char_list['by_level']}</option>\r\n <option value=\"greater_level\"" . ($search_by == 'greater_level' ? " selected=\"selected\"" : "") . ">{$lang_char_list['greater_level']}</option>\r\n <option value=\"guild\"" . ($search_by == 'guild' ? " selected=\"selected\"" : "") . ">{$lang_char_list['by_guild']}</option>\r\n <option value=\"race\"" . ($search_by == 'race' ? " selected=\"selected\"" : "") . ">{$lang_char_list['by_race_id']}</option>\r\n <option value=\"class\"" . ($search_by == 'class' ? " selected=\"selected\"" : "") . ">{$lang_char_list['by_class_id']}</option>\r\n <option value=\"map\"" . ($search_by == 'map' ? " selected=\"selected\"" : "") . ">{$lang_char_list['by_map_id']}</option>\r\n <option value=\"highest_rank\"" . ($search_by == 'highest_rank' ? " selected=\"selected\"" : "") . ">{$lang_char_list['by_honor_kills']}</option>\r\n <option value=\"greater_rank\"" . ($search_by == 'greater_rank' ? " selected=\"selected\"" : "") . ">{$lang_char_list['greater_honor_kills']}</option>\r\n <option value=\"online\"" . ($search_by == 'online' ? " selected=\"selected\"" : "") . ">{$lang_char_list['by_online']}</option>\r\n <option value=\"gold\"" . ($search_by == 'gold' ? " selected=\"selected\"" : "") . ">{$lang_char_list['chars_gold']}</option>\r\n <option value=\"item\"" . ($search_by == 'item' ? " selected=\"selected\"" : "") . ">{$lang_char_list['by_item']}</option>\r\n </select>\r\n </form>\r\n </td>\r\n <td>"; makebutton($lang_global['search'], 'javascript:do_submit()', 80); $output .= ' </td> </tr> </table> </td> </tr> </table>'; //==========================top tage navigaion ENDS here ======================== $output .= "\r\n <form method=\"get\" action=\"char_list.php\" name=\"form1\">\r\n <input type=\"hidden\" name=\"action\" value=\"del_char_form\" />\r\n <input type=\"hidden\" name=\"start\" value=\"{$start}\" />\r\n <table class=\"lined\">\r\n <tr>\r\n <th width=\"1%\"><input name=\"allbox\" type=\"checkbox\" value=\"Check All\" onclick=\"CheckAll(document.form1);\" /></th>\r\n <th width=\"1%\"><a href=\"char_list.php?order_by=guid&start={$start}" . ($search_value && $search_by ? "&search_by={$search_by}&search_value={$search_value}" : "") . "&dir={$dir}\">" . ($order_by == 'guid' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_char_list['id']}</a></th>\r\n <th width=\"1%\"><a href=\"char_list.php?order_by=name&start={$start}" . ($search_value && $search_by ? "&search_by={$search_by}&search_value={$search_value}" : "") . "&dir={$dir}\">" . ($order_by == 'name' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_char_list['char_name']}</a></th>\r\n <th width=\"1%\"><a href=\"char_list.php?order_by=account&start={$start}" . ($search_value && $search_by ? "&search_by={$search_by}&search_value={$search_value}" : "") . "&dir={$dir}\">" . ($order_by == 'account' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_char_list['account']}</a></th>\r\n <th width=\"1%\"><a href=\"char_list.php?order_by=race&start={$start}" . ($search_value && $search_by ? "&search_by={$search_by}&search_value={$search_value}" : "") . "&dir={$dir}\">" . ($order_by == 'race' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_char_list['race']}</a></th>\r\n <th width=\"1%\"><a href=\"char_list.php?order_by=class&start={$start}" . ($search_value && $search_by ? "&search_by={$search_by}&search_value={$search_value}" : "") . "&dir={$dir}\">" . ($order_by == 'class' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_char_list['class']}</a></th>\r\n <th width=\"1%\"><a href=\"char_list.php?order_by=level&start={$start}" . ($search_value && $search_by ? "&search_by={$search_by}&search_value={$search_value}" : "") . "&dir={$dir}\">" . ($order_by == 'level' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_char_list['level']}</a></th>\r\n <th width=\"10%\"><a href=\"char_list.php?order_by=map&start={$start}" . ($search_value && $search_by ? "&search_by={$search_by}&search_value={$search_value}" : "") . "&dir={$dir}\">" . ($order_by == 'map ' . $order_dir . ', zone' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_char_list['map']}</a></th>\r\n <th width=\"10%\"><a href=\"char_list.php?order_by=zone&start={$start}" . ($search_value && $search_by ? "&search_by={$search_by}&search_value={$search_value}" : "") . "&dir={$dir}\">" . ($order_by == 'zone ' . $order_dir . ', map' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_char_list['zone']}</a></th>\r\n <th width=\"1%\"><a href=\"char_list.php?order_by=highest_rank&start={$start}" . ($search_value && $search_by ? "&search_by={$search_by}&search_value={$search_value}" : "") . "&dir={$dir}\">" . ($order_by == 'highest_rank' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_char_list['honor_kills']}</a></th>\r\n <th width=\"10%\"><a href=\"char_list.php?order_by=gname&start={$start}" . ($search_value && $search_by ? "&search_by={$search_by}&search_value={$search_value}" : "") . "&dir={$dir}\">" . ($order_by == 'gname' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_char_list['guild']}</a></th>\r\n <th width=\"1%\"><a href=\"char_list.php?order_by=logout_time&start={$start}" . ($search_value && $search_by ? "&search_by={$search_by}&search_value={$search_value}" : "") . "&dir={$dir}\">" . ($order_by == 'logout_time' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_char_list['lastseen']}</a></th>\r\n <th width=\"1%\"><a href=\"char_list.php?order_by=online&start={$start}" . ($search_value && $search_by ? "&search_by={$search_by}&search_value={$search_value}" : "") . "&dir={$dir}\">" . ($order_by == 'online' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_char_list['online']}</a></th>"; if ($showcountryflag) { require_once 'libs/misc_lib.php'; $output .= ' <th width="1%">' . $lang_global['country'] . '</th>'; } $output .= ' </tr>'; $looping = $this_page < $itemperpage ? $this_page : $itemperpage; for ($i = 1; $i <= $looping; $i++) { $char = $sqlr->fetch_row($query) or die(error($lang_global['err_no_user'])); // to disalow lower lvl gm to view accounts of other gms $result = $sqlr->query("SELECT gmlevel, username FROM account WHERE id ='{$char['2']}'"); $owner_gmlvl = $sqlr->result($result, 0, 'gmlevel'); if ($owner_gmlvl == null) { $owner_gmlvl = 0; } $owner_acc_name = $sqlr->result($result, 0, 'username'); $lastseen = date('Y-m-d G:i:s', $char[11]); $guild_name = $sqlc->fetch_row($sqlc->query('SELECT name FROM guild WHERE guildid = ' . $char[12] . '')); if ($user_lvl >= $owner_gmlvl || $owner_acc_name == $user_name) { $output .= ' <tr> <td>'; if ($user_lvl >= $action_permission['delete'] || $owner_acc_name == $user_name) { $output .= ' <input type="checkbox" name="check[]" value="' . $char[0] . '" onclick="CheckCheckAll(document.form1);" />'; } $output .= "\r\n </td>\r\n <td>{$char['0']}</td>\r\n <td><a href=\"char.php?id={$char['0']}\">" . htmlentities($char[1]) . "</a></td>\r\n <td><a href=\"user.php?action=edit_user&error=11&id={$char['2']}\">" . htmlentities($owner_acc_name) . "</a></td>\r\n <td><img src='img/c_icons/{$char[3]}-{$char[10]}.gif' onmousemove='toolTip(\"" . char_get_race_name($char[3]) . "\",\"item_tooltip\")' onmouseout='toolTip()' alt=\"\" /></td>\r\n <td><img src='img/c_icons/{$char[4]}.gif' onmousemove='toolTip(\"" . char_get_class_name($char[4]) . "\",\"item_tooltip\")' onmouseout='toolTip()' alt=\"\" /></td>\r\n <td>" . char_get_level_color($char[9]) . "</td>\r\n <td class=\"small\"><span onmousemove='toolTip(\"MapID:" . $char[6] . "\",\"item_tooltip\")' onmouseout='toolTip()'>" . get_map_name($char[6], $sqlm) . "</span></td>\r\n <td class=\"small\"><span onmousemove='toolTip(\"ZoneID:" . $char[5] . "\",\"item_tooltip\")' onmouseout='toolTip()'>" . get_zone_name($char[5], $sqlm) . "</span></td>\r\n <td>{$char['7']}</td>\r\n <td class=\"small\"><a href=\"guild.php?action=view_guild&error=3&id={$char['12']}\">" . htmlentities($guild_name[0]) . "</a></td>\r\n <td class=\"small\">{$lastseen}</td>\r\n <td>" . ($char[8] ? "<img src=\"img/up.gif\" alt=\"\" />" : "-") . "</td>"; if ($showcountryflag) { $country = misc_get_country_by_account($char[2], $sqlr, $sqlm); $output .= "\r\n <td>" . ($country['code'] ? "<img src='img/flags/" . $country['code'] . ".png' onmousemove='toolTip(\"" . $country['country'] . "\",\"item_tooltip\")' onmouseout='toolTip()' alt=\"\" />" : "-") . "</td>"; } $output .= ' </tr>'; } else { $output .= ' <tr> <td>*</td><td>***</td><td>***</td><td>You</td><td>Have</td><td>No</td><td class=\\"small\\">Permission</td><td>to</td><td>View</td><td>this</td><td>Data</td><td>***</td><td>*</td>'; if ($showcountryflag) { $output .= '<td>*</td>'; } $output .= ' </tr>'; } } unset($char); unset($result); $output .= ' <tr> <td colspan="13" align="right" class="hidden" width="25%">'; $output .= generate_pagination('char_list.php?order_by=' . $order_by . '&dir=' . ($dir ? 0 : 1) . ($search_value && $search_by ? '&search_by=' . $search_by . '&search_value=' . $search_value . '' : ''), $all_record, $itemperpage, $start); $output .= ' </td> </tr> <tr> <td colspan="6" align="left" class="hidden">'; if ($user_lvl >= $action_permission['delete'] || $owner_acc_name == $user_name) { makebutton($lang_char_list['del_selected_chars'], 'javascript:do_submit(\'form1\',0)" type="wrn', 220); } $output .= ' </td> <td colspan="7" align="right" class="hidden">' . $lang_char_list['tot_chars'] . ' : ' . $all_record . '</td> </tr> </table> </form> </center>'; }
function view_team() { global $output, $characters_db, $realm_id, $corem_db, $logon_db, $site_encoding, $action_permission, $user_lvl, $user_id, $showcountryflag, $sql, $core; if (!isset($_GET["id"])) { redirect("arenateam.php?error=1"); } $arenateam_id = $sql["char"]->quote_smart($_GET["id"]); if ($core == 1) { $query = $sql["char"]->query("SELECT id, name, type,\r\n INET_NTOA(backgroundcolour) AS BackgroundColor,\r\n INET_NTOA(bordercolour) AS BorderColor,\r\n INET_NTOA(emblemcolour) AS EmblemColor,\r\n emblemstyle AS EmblemStyle, borderstyle AS BorderStyle\r\n FROM arenateams\r\n WHERE id='" . $arenateam_id . "'"); } elseif ($core == 2) { $query = $sql["char"]->query("SELECT arenateamid AS id, name, type,\r\n INET_NTOA(BackgroundColor) AS BackgroundColor,\r\n INET_NTOA(BorderColor) AS BorderColor,\r\n INET_NTOA(EmblemColor) AS EmblemColor,\r\n EmblemStyle, BorderStyle\r\n FROM arena_team\r\n WHERE arenateamid='" . $arenateam_id . "'"); } else { $query = $sql["char"]->query("SELECT arenaTeamId AS id, name, type,\r\n INET_NTOA(BackgroundColor) AS BackgroundColor,\r\n INET_NTOA(BorderColor) AS BorderColor,\r\n INET_NTOA(EmblemColor) AS EmblemColor,\r\n EmblemStyle, BorderStyle\r\n FROM arena_team\r\n WHERE arenaTeamId='" . $arenateam_id . "'"); } $arenateam_data = $sql["char"]->fetch_assoc($query); if ($core == 1) { // arenateams.data format: [week games] [week wins] [season games] [season wins] $query = "SELECT id, rating,\r\n SUBSTRING_INDEX(SUBSTRING_INDEX(data, ' ', 2), ' ', 1) AS games, \r\n SUBSTRING_INDEX(SUBSTRING_INDEX(data, ' ', 2), ' ', -1) AS wins,\r\n SUBSTRING_INDEX(SUBSTRING_INDEX(data, ' ', -2), ' ', 1) AS played, \r\n SUBSTRING_INDEX(SUBSTRING_INDEX(data, ' ', -2), ' ', -1) AS wins2,\r\n ranking, player_data1, player_data2, player_data3, player_data4, player_data5,\r\n player_data6, player_data7, player_data8, player_data9, player_data10\r\n FROM arenateams WHERE id='" . $arenateam_id . "'"; $query = $sql["char"]->query($query); } elseif ($core == 2) { $query = "SELECT arena_team.arenateamid AS id, rating,\r\n games_week AS games, wins_week AS wins, games_season AS played, wins_season AS wins2, rank AS ranking,\r\n (SELECT COUNT(*) FROM arena_team_member WHERE arenateamid=id) AS tot_chars\r\n FROM arena_team\r\n LEFT JOIN arena_team_stats ON arena_team_stats.arenateamid=arena_team.arenateamid\r\n LEFT JOIN arena_team_member ON arena_team_member.arenateamid=arena_team.arenateamid\r\n WHERE arena_team.arenateamid='" . $arenateam_id . "'"; $query = $sql["char"]->query($query); $m_query = "SELECT * FROM arena_team_member WHERE arenateamid='" . $arenateam_id . "'"; $m_query = $sql["char"]->query($m_query); } else { $query = "SELECT arena_team.arenaTeamId AS id, rating,\r\n arena_team.weekGames, arena_team.weekWins, arena_team.weekGames AS played, arena_team.seasonWins, rank AS ranking,\r\n (SELECT COUNT(*) FROM arena_team_member WHERE arenaTeamId=id) AS tot_chars\r\n FROM arena_team\r\n LEFT JOIN arena_team_member ON arena_team_member.arenaTeamId=arena_team.arenaTeamId\r\n WHERE arena_team.arenaTeamId='" . $arenateam_id . "'"; $query = $sql["char"]->query($query); $m_query = "SELECT guid, weekWins AS wons_week, weekGames AS played_week,\r\n seasonWins AS wons_season, seasonGames AS played_season, personalRating as personal_rating\r\n FROM arena_team_member WHERE arenaTeamId='" . $arenateam_id . "'"; $m_query = $sql["char"]->query($m_query); } $arenateamstats_data = $sql["char"]->fetch_row($query); $rating_offset = 1550; if ($core == 1) { if ($arenateam_data["type"] == 1) { $rating_offset += 6; } elseif ($arenateam_data["type"] == 2) { $rating_offset += 12; } } else { if ($arenateam_data["type"] == 3) { $rating_offset += 6; } elseif ($arenateam_data["type"] == 5) { $rating_offset += 12; } } $total_members = 0; if ($core == 1) { for ($m = 0; $m < 10; $m++) { $temp = explode(' ', $arenateamstats_data[$m + 7]); if ($temp[0]) { $members[$m] = $temp; } if ($members[$m][0]) { $total_members += 1; } } } else { $total_members = $arenateamstats_data[7]; } $losses_week = $arenateamstats_data[2] - $arenateamstats_data[3]; if ($arenateamstats_data[2]) { $winperc_week = round(10000 * $arenateamstats_data[3] / $arenateamstats_data[2]) / 100; } else { $winperc_week = $arenateamstats_data[2]; } $losses_season = $arenateamstats_data[4] - $arenateamstats_data[5]; if ($arenateamstats_data[4]) { $winperc_season = round(10000 * $arenateamstats_data[5] / $arenateamstats_data[4]) / 100; } else { $winperc_season = $arenateamstats_data[4]; } // extract banner colors $background_color = explode(".", $arenateam_data["BackgroundColor"]); $border_color = explode(".", $arenateam_data["BorderColor"]); $emblem_color = explode(".", $arenateam_data["EmblemColor"]); // Trinity stores Team type as 2, 3, 5; ArcEmu & MaNGOS use 0, 1, 2 if ($core != 3) { if ($arenateam_data["type"] == 0) { $banner_style = 2; $banner_span = 8; } elseif ($arenateam_data["type"] == 1) { $banner_style = 3; $banner_span = 9; } elseif ($arenateam_data["type"] == 2) { $banner_style = 5; $banner_span = 11; } } else { if ($arenateam_data["type"] == 2) { $banner_style = 2; $banner_span = 8; } elseif ($arenateam_data["type"] == 3) { $banner_style = 3; $banner_span = 9; } elseif ($arenateam_data["type"] == 5) { $banner_style = 5; $banner_span = 11; } } $output .= ' <script type="text/javascript"> answerbox.btn_ok="' . lang("global", "yes_low") . '"; answerbox.btn_cancel="' . lang("global", "no") . '"; </script> <div class="fieldset_border arena_fieldset center"> <span class="legend">' . lang("arenateam", "arenateam") . ' (' . lang("arenateam", $arenateam_data["type"] . ($core == 1 ? "A" : "MT")) . ')</span> <table class="lined" id="arena_table_with_banner"> <tr class="bold"> <td rowspan="' . $banner_span . '"> <div class="arena_banner"> <img src="libs/banner_lib.php?action=banner&f=' . $banner_style . '&r=' . $background_color[1] . '&g=' . $background_color[2] . '&b=' . $background_color[3] . '" class="banner_img" alt="" /> <img src="libs/banner_lib.php?action=border&f=' . $arenateam_data["BorderStyle"] . '&f2=' . $banner_style . '&r=' . $border_color[1] . '&g=' . $border_color[2] . '&b=' . $border_color[3] . '" class="border_img" alt="" /> <img src="libs/banner_lib.php?action=emblem&f=' . $arenateam_data["EmblemStyle"] . '&r=' . $emblem_color[1] . '&g=' . $emblem_color[2] . '&b=' . $emblem_color[3] . '&s=0.55" class="emblem_img" alt="" /> </div> </td> <td colspan="' . ($showcountryflag ? 14 : 13) . '">' . htmlentities($arenateam_data["name"], ENT_COMPAT, $site_encoding) . '</td> </tr> <tr> <td colspan="' . ($showcountryflag ? 14 : 13) . '">' . lang("arenateam", "tot_members") . ': ' . $total_members . '</td> </tr> <tr> <td colspan="4">' . lang("arenateam", "this_week") . ':</td> <td colspan="2">' . lang("arenateam", "games_played") . ': ' . $arenateamstats_data[2] . '</td> <td colspan="2">' . lang("arenateam", "games_won") . ': ' . $arenateamstats_data[3] . '</td> <td colspan="2">' . lang("arenateam", "games_lost") . ': ' . $losses_week . '</td> <td colspan="' . ($showcountryflag ? 4 : 3) . '">' . lang("arenateam", "ratio") . ': ' . $winperc_week . ' %</td> </tr> <tr> <td colspan="4">' . lang("arenateam", "this_season") . ':</td> <td colspan="2">' . lang("arenateam", "games_played") . ': ' . $arenateamstats_data[4] . '</td> <td colspan="2">' . lang("arenateam", "games_won") . ': ' . $arenateamstats_data[5] . '</td> <td colspan="2">' . lang("arenateam", "games_lost") . ': ' . $losses_season . '</td> <td colspan="' . ($showcountryflag ? 4 : 3) . '">' . lang("arenateam", "ratio") . ': ' . $winperc_season . ' %</td> </tr> <tr> <td colspan="' . ($showcountryflag ? 14 : 13) . '">' . lang("arenateam", "standings") . ': ' . $arenateamstats_data[6] . ' (' . $arenateamstats_data[1] . ')</td> </tr> <tr> <th style="width: 1%;">' . lang("arenateam", "remove") . '</th> <th style="width: 1%;">' . lang("arenateam", "name") . '</th> <th style="width: 1%;">' . lang("char", "race") . '</th> <th style="width: 1%;">' . lang("char", "class") . '</th> <th style="width: 1%;">' . lang("arenateam", "personalrating") . '</th> <th style="width: 1%;">' . lang("arenateam", "lastlogin") . '</th> <th style="width: 1%;">' . lang("char", "online") . '</th> <th style="width: 1%;">' . lang("arenateam", "played_week") . '</th> <th style="width: 1%;">' . lang("arenateam", "wons_week") . '</th> <th style="width: 5%;">' . lang("arenateam", "win") . ' %</th> <th style="width: 1%;">' . lang("arenateam", "played_season") . '</th> <th style="width: 1%;">' . lang("arenateam", "wons_season") . '</th> <th style="width: 5%;">' . lang("arenateam", "win") . ' %</th>'; if ($showcountryflag) { $output .= ' <th style="width: 1%;">' . lang("global", "country") . '</th>'; } $output .= ' </tr>'; if ($core == 1) { // arena team player structure [player_id] [week_played] [week_win] [season_played] [season_win] [rating] foreach ($members as $member) { $query = "SELECT acct, name, level, race, class, online, timestamp, gender\r\n FROM characters WHERE guid='" . $member[0] . "'"; $result = $sql["char"]->query($query); $member_char = $sql["char"]->fetch_row($result); $accid = $member_char[0]; $output .= ' <tr>'; if ($user_lvl >= $action_permission["delete"] || $accid == $user_id) { $output .= ' <td> <img src="img/aff_cross.png" alt="" onclick="answerBox(\'' . lang("global", "delete") . '\': <spen class=\'color_white\'>' . $member[1] . '</span><br />' . lang("global", "are_you_sure") . '\', \'arenateam.php?action=rem_char_from_team&id=' . $member[0] . '&arenateam_id=' . $arenateam_id . '\');" id="arenateam_delete_cursor" /> </td>'; } else { $output .= ' <td> </td>'; } if ($member[1]) { $ww_pct = round(10000 * $member[2] / $member[1]) / 100; } else { $ww_pct = $member[1]; } if ($member[3]) { $ws_pct = round(10000 * $member[4] / $member[3]) / 100; } else { $ws_pct = $member[3]; } $output .= ' <td><a href="char.php?id=' . $member[0] . '">' . htmlentities($member_char[1], ENT_COMPAT, $site_encoding) . '</a></td> <td><img src="img/c_icons/' . $member_char[3] . '-' . $member_char[7] . '.gif" onmousemove="oldtoolTip(\'' . char_get_race_name($member_char[3]) . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /></td> <td><img src="img/c_icons/' . $member_char[4] . '.gif" onmousemove="oldtoolTip(\'' . char_get_class_name($member_char[4]) . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /></td> <td>' . $member[5] . '</td> <td>' . get_days_with_color($member_char[6]) . '</td> <td><img src="img/' . ($member_char[5] ? 'up' : 'down') . '.gif" alt="" /></td> <td>' . $member[1] . '</td> <td>' . $member[2] . '</td> <td>' . $ww_pct . '</td> <td>' . $member[3] . '</td> <td>' . $member[4] . '</td> <td>' . $ws_pct . '</td>'; if ($showcountryflag) { require_once './libs/misc_lib.php'; $country = misc_get_country_by_account($member_char[0]); $output .= ' <td>' . ($country["code"] ? '<img src="img/flags/' . $country["code"] . '.png" onmousemove="oldtoolTip(\'' . $country["country"] . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" />' : '-') . '</td>'; } $output .= ' </tr>'; } } else { while ($member = $sql["char"]->fetch_assoc($m_query)) { $query = "SELECT account AS acct, name, level, race, class, online, logout_time AS timestamp, gender\r\n FROM characters WHERE guid='" . $member["guid"] . "'"; $result = $sql["char"]->query($query); $member_char = $sql["char"]->fetch_assoc($result); $accid = $member_char["acct"]; $output .= ' <tr>'; if ($user_lvl >= $action_permission["delete"] || $accid == $user_id) { $output .= ' <td><img src="img/aff_cross.png" alt="" onclick="answerBox(\'' . lang("global", "delete") . '\': <span class=\'color_white\'>' . $member["name"] . '</span><br />' . lang("global", "are_you_sure") . '\', \'arenateam.php?action=rem_char_from_team&id=' . $member["guid"] . '&arenateam_id=' . $arenateam_id . '\');" class="arenateam_delete_cursor" /></td>'; } else { $output .= ' <td> </td>'; } if ($member["played_week"]) { $ww_pct = round(10000 * $member["wons_week"] / $member["played_week"]) / 100; } else { $ww_pct = $member["played_week"]; } if ($member["played_season"]) { $ws_pct = round(10000 * $member["wons_season"] / $member["played_season"]) / 100; } else { $ws_pct = $member["played_season"]; } // arena team player structure [player_id] [week_played] [week_win] [season_played] [season_win] [rating] $output .= ' <td><a href="char.php?id=' . $member["guid"] . '">' . htmlentities($member_char["name"], ENT_COMPAT, $site_encoding) . '</a></td> <td><img src="img/c_icons/' . $member_char["race"] . '-' . $member_char["gender"] . '.gif" onmousemove="oldtoolTip(\'' . char_get_race_name($member_char["race"]) . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /></td> <td><img src="img/c_icons/' . $member_char["class"] . '.gif" onmousemove="oldtoolTip(\'' . char_get_class_name($member_char["class"]) . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /></td> <td>' . $member["personal_rating"] . '</td> <td>' . get_days_with_color($member_char["timestamp"]) . '</td> <td>' . ($member_char["online"] ? '<img src="img/up.gif" alt="" />' : '<img src="img/down.gif" alt="" />') . '</td> <td>' . $member["played_week"] . '</td> <td>' . $member["wons_week"] . '</td> <td>' . $ww_pct . '</td> <td>' . $member["played_season"] . '</td> <td>' . $member["wons_season"] . '</td> <td>' . $ws_pct . '</td>'; if ($showcountryflag) { require_once './libs/misc_lib.php'; $country = misc_get_country_by_account($accid); $output .= ' <td>' . ($country["code"] ? '<img src="img/flags/' . $country["code"] . '.png" onmousemove="oldtoolTip(\'' . $country["country"] . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" />' : '-') . '</td>'; } $output .= ' </tr>'; } } $output .= ' </table> <br /> <table class="hidden"> <tr> <td>'; if ($user_lvl >= $action_permission["delete"]) { makebutton(lang("arenateam", "del_team"), "arenateam.php?action=del_team&id=" . $arenateam_id . "&name=" . $arenateam_data["name"] . "\" type=\"wrn", 180); $output .= ' </td> <td>'; makebutton(lang("arenateam", "arenateams"), "arenateam.php\" type=\"def", 130); $output .= ' </td> </tr>'; } else { makebutton(lang("arenateam", "arenateams"), "arenateam.php", 130); $output .= ' </td> </tr>'; } $output .= ' </table> </div>'; }
function view_team() { global $lang_arenateam, $lang_global, $output, $characters_db, $realm_id, $realm_db, $mmfpm_db, $action_permission, $user_lvl, $user_id, $showcountryflag; if (!isset($_GET['id'])) { redirect("arenateam.php?error=1"); } $sqlc = new SQL(); $sqlc->connect($characters_db[$realm_id]['addr'], $characters_db[$realm_id]['user'], $characters_db[$realm_id]['pass'], $characters_db[$realm_id]['name']); $arenateam_id = $sqlc->quote_smart($_GET['id']); $query = $sqlc->query("SELECT arenateamid, name, type FROM arena_team WHERE arenateamid = '{$arenateam_id}'"); $arenateam_data = $sqlc->fetch_row($query); $query = $sqlc->query("SELECT arenateamid, rating, weekGames, weekWins, seasonGames, seasonWins, rank FROM arena_team WHERE arenateamid = '{$arenateam_id}'"); $arenateamstats_data = $sqlc->fetch_row($query); $rating_offset = 1550; if ($arenateam_data[2] == 3) { $rating_offset += 6; } else { if ($arenateam_data[2] == 5) { $rating_offset += 12; } } $members = $sqlc->query("SELECT arena_team_member.guid,characters.name, arena_team_member.personalRating, level, arena_team_member.weekGames, arena_team_member.weekWins, arena_team_member.seasonGames, arena_team_member.seasonWins, characters.race, characters.class, characters.online, characters.account, characters.logout_time, gender, account FROM arena_team_member,characters LEFT JOIN arena_team_member k1 ON k1.guid=characters.guid AND k1.arenateamid='{$arenateam_id}' WHERE arena_team_member.arenateamid = '{$arenateam_id}' AND arena_team_member.guid=characters.guid ORDER BY characters.name"); $total_members = $sqlc->num_rows($members); $losses_week = $arenateamstats_data[2] - $arenateamstats_data[3]; if ($arenateamstats_data[2]) { $winperc_week = round(10000 * $arenateamstats_data[3] / $arenateamstats_data[2]) / 100; } else { $winperc_week = $arenateamstats_data[2]; } $losses_season = $arenateamstats_data[4] - $arenateamstats_data[5]; if ($arenateamstats_data[4]) { $winperc_season = round(10000 * $arenateamstats_data[5] / $arenateamstats_data[4]) / 100; } else { $winperc_season = $arenateamstats_data[4]; } $output .= "\r\n <script type=\"text/javascript\">\r\n answerbox.btn_ok='{$lang_global['yes_low']}';\r\n answerbox.btn_cancel='{$lang_global['no']}';\r\n </script>\r\n <center>\r\n <fieldset>\r\n <legend>{$lang_arenateam['arenateam']} ({$arenateam_data[2]}v{$arenateam_data[2]})</legend>\r\n <table class=\"lined\" style=\"width: 100%;\">\r\n <tr class=\"bold\">\r\n <td colspan=\"" . ($showcountryflag ? 14 : 13) . "\">" . htmlentities($arenateam_data[1]) . "</td>\r\n </tr>\r\n <tr>\r\n <td colspan=\"" . ($showcountryflag ? 14 : 13) . "\">{$lang_arenateam['tot_members']}: {$total_members}</td>\r\n </tr>\r\n <tr>\r\n <td colspan=\"4\">{$lang_arenateam['this_week']}</td>\r\n <td colspan=\"2\">{$lang_arenateam['games_played']} : {$arenateamstats_data['2']}</td>\r\n <td colspan=\"2\">{$lang_arenateam['games_won']} : {$arenateamstats_data['3']}</td>\r\n <td colspan=\"2\">{$lang_arenateam['games_lost']} : {$losses_week}</td>\r\n <td colspan=\"" . ($showcountryflag ? 4 : 3) . "\">{$lang_arenateam['ratio']} : {$winperc_week} %</td>\r\n </tr>\r\n <tr>\r\n <td colspan=\"4\">{$lang_arenateam['this_season']}</td>\r\n <td colspan=\"2\">{$lang_arenateam['games_played']} : {$arenateamstats_data['4']}</td>\r\n <td colspan=\"2\">{$lang_arenateam['games_won']} : {$arenateamstats_data['5']}</td>\r\n <td colspan=\"2\">{$lang_arenateam['games_lost']} : {$losses_season}</td>\r\n <td colspan=\"" . ($showcountryflag ? 4 : 3) . "\">{$lang_arenateam['ratio']} : {$winperc_season} %</td>\r\n </tr>\r\n <tr>\r\n <td colspan=\"" . ($showcountryflag ? 14 : 13) . "\">{$lang_arenateam['standings']} {$arenateamstats_data[6]} ({$arenateamstats_data[1]})</td>\r\n </tr>\r\n <tr>\r\n <th width=\"1%\">{$lang_arenateam['remove']}</th>\r\n <th width=\"1%\">{$lang_arenateam['name']}</th>\r\n <th width=\"1%\">Race</th>\r\n <th width=\"1%\">Class</th>\r\n <th width=\"1%\">Personal Rating</th>\r\n <th width=\"1%\">Last Login (Days)</th>\r\n <th width=\"1%\">Online</th>\r\n <th width=\"1%\">{$lang_arenateam['played_week']}</th>\r\n <th width=\"1%\">{$lang_arenateam['wons_week']}</th>\r\n <th width=\"1%\">Win %</th>\r\n <th width=\"1%\">{$lang_arenateam['played_season']}</th>\r\n <th width=\"1%\">{$lang_arenateam['wons_season']}</th>\r\n <th width=\"1%\">Win %</th>"; if ($showcountryflag) { require_once 'libs/misc_lib.php'; $sqlr = new SQL(); $sqlr->connect($realm_db['addr'], $realm_db['user'], $realm_db['pass'], $realm_db['name']); $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); $output .= "\r\n <th width=\"1%\">{$lang_global['country']}</th>"; } $output .= "\r\n </tr>"; while ($member = $sqlc->fetch_row($members)) { $accid = $member[11]; $output .= "\r\n <tr>"; if ($user_lvl >= $action_permission['delete'] || $accid == $user_id) { $output .= "\r\n <td><img src=\"img/aff_cross.png\" alt=\"\" onclick=\"answerBox('{$lang_global['delete']}: <font color=white>{$member[1]}</font><br />{$lang_global['are_you_sure']}', 'arenateam.php?action=rem_char_from_team&id={$member['0']}&arenateam_id={$arenateam_id}');\" style=\"cursor:pointer;\" /></td>"; } else { $output .= "\r\n <td> </td>"; } if ($member[4]) { $ww_pct = round(10000 * $member[5] / $member[4]) / 100; } else { $ww_pct = $member[4]; } if ($member[6]) { $ws_pct = round(10000 * $member[7] / $member[6]) / 100; } else { $ws_pct = $member[6]; } $output .= "\r\n <td><a href=\"char.php?id={$member['0']}\">" . htmlentities($member[1]) . "</a></td>\r\n <td><img src='img/c_icons/{$member[8]}-{$member[13]}.gif' onmousemove='toolTip(\"" . char_get_race_name($member[8]) . "\",\"item_tooltip\")' onmouseout='toolTip()' /></td>\r\n <td><img src='img/c_icons/{$member[9]}.gif' onmousemove='toolTip(\"" . char_get_class_name($member[9]) . "\",\"item_tooltip\")' onmouseout='toolTip()' /></td>\r\n <td>{$member['2']}</td>\r\n <td>" . get_days_with_color($member[12]) . "</td>\r\n <td>" . ($member[10] ? "<img src=\"img/up.gif\" alt=\"\" />" : "-") . "</td>\r\n <td>{$member['4']}</td>\r\n <td>{$member['5']}</td>\r\n <td>{$ww_pct} %</td>\r\n <td>{$member['6']}</td>\r\n <td>{$member['7']}</td>\r\n <td>{$ws_pct} %</td>"; if ($showcountryflag) { $country = misc_get_country_by_account($member[14], $sqlr, $sqlm); $output .= "\r\n <td>" . ($country['code'] ? "<img src='img/flags/" . $country['code'] . ".png' onmousemove='toolTip(\"" . $country['country'] . "\",\"item_tooltip\")' onmouseout='toolTip()' alt=\"\" />" : "-") . "</td>"; } $output .= "\r\n </tr>"; } $output .= "\r\n </table>\r\n <br />\r\n <table class=\"hidden\">\r\n <tr>\r\n <td>"; if ($user_lvl >= $action_permission['delete']) { makebutton($lang_arenateam['del_team'], "arenateam.php?action=del_team&id={$arenateam_id}\" type=\"wrn", 180); $output .= "\r\n </td>\r\n <td>"; makebutton($lang_arenateam['arenateams'], "arenateam.php\" type=\"def", 130); $output .= "\r\n </td>\r\n </tr>\r\n <tr>\r\n </tr>"; } else { makebutton($lang_arenateam['arenateams'], "arenateam.php", 130); $output .= "\r\n </td>\r\n </tr>"; } $output .= "\r\n </table>\r\n </fieldset>\r\n </center>"; }
function browse_chars(&$sqlr, &$sqlc) { global $output, $lang_char_list, $lang_global, $mmfpm_db, $realm_id, $action_permission, $user_lvl, $user_name, $showcountryflag, $itemperpage; $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); //==========================$_GET and SECURE======================== $start = isset($_GET['start']) ? $sqlr->quote_smart($_GET['start']) : 0; if (is_numeric($start)) { } else { $start = 0; } $order_by = isset($_GET['order_by']) ? $sqlr->quote_smart($_GET['order_by']) : 'guid'; if (preg_match('/^[_[:lower:]]{1,12}$/', $order_by)) { } else { $order_by = 'guid'; } $dir = isset($_GET['dir']) ? $sqlr->quote_smart($_GET['dir']) : 1; if (preg_match('/^[01]{1}$/', $dir)) { } else { $dir = 1; } $order_dir = $dir ? 'ASC' : 'DESC'; $dir = $dir ? 0 : 1; if ($order_by == 'map') { $order_by = 'map ' . $order_dir . ', zone'; } elseif ($order_by == 'zone') { $order_by = 'zone ' . $order_dir . ', map'; } //==========================$_GET and SECURE end======================== $search_by = ''; $search_value = ''; // if we have a search request, if not we just return everything if (isset($_GET['search_value']) && isset($_GET['search_by'])) { // injection prevention $search_value = $sqlr->quote_smart($_GET['search_value']); $search_by = isset($_GET['search_by']) ? $sqlr->quote_smart($_GET['search_by']) : 'name'; $search_menu = array('name', 'guid', 'account', 'level', 'greater_level', 'lesser_level', 'guild', 'race', 'class', 'map', 'online', 'gold', 'item'); if (in_array($search_by, $search_menu)) { } else { $search_by = 'name'; } unset($search_menu); // special search cases // developer note: 'if else' is always faster then 'switch case' if ($search_by === 'account') { //need to get the acc id from other table since input comes as name if (preg_match('/^[\\t\\v\\b\\f\\a\\n\\r\\\\"\'\\? <>[](){}_=+-|!@#$%^&*~`.,0123456789\\0]{1,30}$/', $search_value)) { redirect("charlist.php?error=2"); } $result = $sqlr->query(' SELECT id FROM account WHERE username LIKE "%' . $search_value . '%" LIMIT ' . $start . ', ' . $itemperpage . ''); $where_out = ' account IN (0 '; while ($char = $sqlr->fetch_assoc($result)) { $where_out .= ' ,'; $where_out .= $char['id']; } $where_out .= ') '; unset($result); $sql_query = ' SELECT c.guid as guid, c.name as name, c.account as account, c.race as race, c.class as class, c.zone as zone, c.map as map, c.online as online, c.level as level, c.gender as gender, c.logout_time as logout_time, COALESCE(guild_member.guildid,0) as gname FROM characters c LEFT JOIN guild_member ON guild_member.guid = c.guid WHERE ' . $where_out . ' ORDER BY ' . $order_by . ' ' . $order_dir . ' LIMIT ' . $start . ', ' . $itemperpage . ''; } elseif ($search_by === 'level') { if (is_numeric($search_value)) { } else { $search_value = 1; } $where_out = 'level = ' . $search_value . ''; $sql_query = ' SELECT c.guid as guid, c.name as name, c.account as account, c.race as race, c.class as class, c.zone as zone, c.map as map, c.online as online, c.level as level, c.gender as gender, c.logout_time as logout_time, COALESCE(guild_member.guildid,0) as gname FROM characters c LEFT JOIN guild_member ON guild_member.guid = c.guid WHERE ' . $where_out . ' ORDER BY ' . $order_by . ' ' . $order_dir . ' LIMIT ' . $start . ', ' . $itemperpage . ''; } elseif ($search_by === 'greater_level') { if (is_numeric($search_value)) { } else { $search_value = 1; } $where_out = 'level > ' . $search_value . ''; $sql_query = ' SELECT c.guid as guid, c.name as name, c.account as account, c.race as race, c.class as class, c.zone as zone, c.map as map, c.online as online, c.level as level, c.gender as gender, c.logout_time as logout_time, COALESCE(guild_member.guildid,0) as gname FROM characters c LEFT JOIN guild_member ON guild_member.guid = c.guid WHERE ' . $where_out . ' ORDER BY ' . $order_by . ' ' . $order_dir . ' LIMIT ' . $start . ', ' . $itemperpage . ''; } elseif ($search_by === 'lesser_level') { if (is_numeric($search_value)) { } else { $search_value = 1; } $where_out = 'level < ' . $search_value . ''; $sql_query = ' SELECT c.guid as guid, c.name as name, c.account as account, c.race as race, c.class as class, c.zone as zone, c.map as map, c.online as online, c.level as level, c.gender as gender, c.logout_time as logout_time, COALESCE(guild_member.guildid,0) as gname FROM characters c LEFT JOIN guild_member ON guild_member.guid = c.guid WHERE ' . $where_out . ' ORDER BY ' . $order_by . ' ' . $order_dir . ' LIMIT ' . $start . ', ' . $itemperpage . ''; } elseif ($search_by === 'guid') { if (is_numeric($search_value)) { } else { $search_value = 1; } $where_out = 'c.guid = ' . $search_value . ''; $sql_query = ' SELECT c.guid as guid, c.name as name, c.account as account, c.race as race, c.class as class, c.zone as zone, c.map as map, c.online as online, c.level as level, c.gender as gender, c.logout_time as logout_time, COALESCE(guild_member.guildid,0) as gname FROM characters c LEFT JOIN guild_member ON guild_member.guid = c.guid WHERE ' . $where_out . ' ORDER BY ' . $order_by . ' ' . $order_dir . ' LIMIT ' . $start . ', ' . $itemperpage . ''; } elseif ($search_by === 'race') { if (is_numeric($search_value)) { } else { $search_value = 1; } $where_out = 'c.race = ' . $search_value . ''; $sql_query = ' SELECT c.guid as guid, c.name as name, c.account as account, c.race as race, c.class as class, c.zone as zone, c.map as map, c.online as online, c.level as level, c.gender as gender, c.logout_time as logout_time, COALESCE(guild_member.guildid,0) as gname FROM characters c LEFT JOIN guild_member ON guild_member.guid = c.guid WHERE ' . $where_out . ' ORDER BY ' . $order_by . ' ' . $order_dir . ' LIMIT ' . $start . ', ' . $itemperpage . ''; } elseif ($search_by === 'class') { if (is_numeric($search_value)) { } else { $search_value = 1; } $where_out = 'c.class = ' . $search_value . ''; $sql_query = ' SELECT c.guid as guid, c.name as name, c.account as account, c.race as race, c.class as class, c.zone as zone, c.map as map, c.online as online, c.level as level, c.gender as gender, c.logout_time as logout_time, COALESCE(guild_member.guildid,0) as gname FROM characters c LEFT JOIN guild_member ON guild_member.guid = c.guid WHERE ' . $where_out . ' ORDER BY ' . $order_by . ' ' . $order_dir . ' LIMIT ' . $start . ', ' . $itemperpage . ''; } elseif ($search_by === 'gold') { if (is_numeric($search_value)) { } else { $search_value = 1; } $where_out = 'money > ' . $search_value . ''; $sql_query = ' SELECT c.guid as guid, c.name as name, c.account as account, c.race as race, c.class as class, c.zone as zone, c.map as map, c.online as online, c.level as level, c.gender as gender, c.logout_time as logout_time, COALESCE(guild_member.guildid,0) as gname FROM characters c LEFT JOIN guild_member ON guild_member.guid = c.guid WHERE ' . $where_out . ' ORDER BY ' . $order_by . ' ' . $order_dir . ' LIMIT ' . $start . ', ' . $itemperpage . ''; } elseif ($search_by === 'guild') { if (preg_match('/^[\\t\\v\\b\\f\\a\\n\\r\\\\"\'\\? <>[](){}_=+-|!@#$%^&*~`.,0123456789\\0]{1,30}$/', $search_value)) { redirect("charlist.php?error=2"); } $result = $sqlc->query(' SELECT guildid FROM guild WHERE name LIKE "%' . $search_value . '%"'); $guildid = $sqlc->result($result, 0, 'guildid'); if (!$search_value) { $guildid = 0; } $Q1 = ' SELECT guid FROM guild_member WHERE guildid = '; $Q1 .= $guildid; $result = $sqlc->query($Q1); unset($guildid); unset($Q1); $where_out = 'guid IN (0 '; while ($char = $sqlc->fetch_row($result)) { $where_out .= ' ,'; $where_out .= $char['guid']; } $where_out .= ') '; unset($result); $sql_query = ' SELECT c.guid as guid, c.name as name, c.account as account, c.race as race, c.class as class, c.zone as zone, c.map as map, c.online as online, c.level as level, c.gender as gender, c.logout_time as logout_time, COALESCE(guild_member.guildid,0) as gname FROM characters c LEFT JOIN guild_member ON guild_member.guid = c.guid WHERE ' . $where_out . ' ORDER BY ' . $order_by . ' ' . $order_dir . ' LIMIT ' . $start . ', ' . $itemperpage . ''; } elseif ($search_by === 'item') { if (is_numeric($search_value)) { } else { $search_value = 0; } $result = $sqlc->query(' SELECT guid FROM character_inventory WHERE item_template = ' . $search_value . ''); $where_out = 'guid IN (0 '; while ($char = $sqlc->fetch_assoc($result)) { $where_out .= ' ,'; $where_out .= $char['guid']; } $where_out .= ') '; unset($result); $sql_query = ' SELECT c.guid as guid, c.name as name, c.account as account, c.race as race, c.class as class, c.zone as zone, c.map as map, c.online as online, c.level as level, c.gender as gender, c.logout_time as logout_time, COALESCE(guild_member.guildid,0) as gname FROM characters c LEFT JOIN guild_member ON guild_member.guid = c.guid WHERE ' . $where_out . ' ORDER BY ' . $order_by . ' ' . $order_dir . ' LIMIT ' . $start . ', ' . $itemperpage . ''; } else { if (preg_match('/^[\\t\\v\\b\\f\\a\\n\\r\\\\"\'\\? <>[](){}_=+-|!@#$%^&*~`.,0123456789\\0]{1,30}$/', $search_value)) { redirect("charlist.php?error=2"); } $where_out = '' . $search_by . ' LIKE "%' . $search_value . '%"'; $sql_query = ' SELECT c.guid as guid, c.name as name, c.account as account, c.race as race, c.class as class, c.zone as zone, c.map as map, c.online as online, c.level as level, c.gender as gender, c.logout_time as logout_time, COALESCE(guild_member.guildid,0) as gname FROM characters c LEFT JOIN guild_member ON guild_member.guid = c.guid WHERE ' . $where_out . ' ORDER BY ' . $order_by . ' ' . $order_dir . ' LIMIT ' . $start . ', ' . $itemperpage . ''; } $query_1 = $sqlc->query(' SELECT count(*) FROM characters c WHERE ' . $where_out . ''); $query = $sqlc->query($sql_query); } else { $query_1 = $sqlc->query(' SELECT count(*) FROM characters'); $query = $sqlc->query(' SELECT c.guid as guid, c.name as name, c.account as account, c.race as race, c.class as class, c.zone as zone, c.map as map, c.online as online, c.level as level, c.gender as gender, c.logout_time as logout_time, COALESCE(guild_member.guildid,0) as gname FROM characters c LEFT JOIN guild_member ON guild_member.guid = c.guid ORDER BY ' . $order_by . ' ' . $order_dir . ' LIMIT ' . $start . ', ' . $itemperpage . ''); } $all_record = $sqlc->result($query_1, 0); unset($query_1); $this_page = $sqlc->num_rows($query) or die(error($lang_global['err_no_result'])); //==========================top tage navigaion starts here======================== $output .= ' <script type="text/javascript" src="libs/js/check.js"></script> <center> <table class="top_hidden"> <tr> <td>'; if ($user_lvl >= $action_permission['delete']) { makebutton($lang_char_list['cleanup'], 'cleanup.php" type="wrn', 130); } makebutton($lang_global['back'], 'javascript:window.history.back()', 130); $search_by && $search_value ? makebutton($lang_char_list['characters'], 'characters.php" type="def', 130) : ($output .= ''); $output .= ' </td> </tr> <tr> <td> <table class="lined"> <tr> <td "class="hidden" align="left" width="40%"> <form action="characters.php" method="get" name="form"> <input type="hidden" name="error" value="3" /> <input type="text" size="24" maxlength="50" name="search_value" value="' . $search_value . '" /> <select name="search_by"> <option value="name"' . ($search_by == 'name' ? ' selected="selected"' : '') . '>' . $lang_char_list['by_name'] . '</option> <option value="guid"' . ($search_by == 'guid' ? ' selected="selected"' : '') . '>' . $lang_char_list['by_id'] . '</option> <option value="account"' . ($search_by == 'account' ? ' selected="selected"' : '') . '>' . $lang_char_list['by_account'] . '</option> <option value="level"' . ($search_by == 'level' ? ' selected="selected"' : '') . '>' . $lang_char_list['by_level'] . '</option> <option value="greater_level"' . ($search_by == 'greater_level' ? ' selected="selected"' : '') . '>' . $lang_char_list['greater_level'] . '</option> <option value="lesser_level"' . ($search_by == 'lesser_level' ? ' selected="selected"' : '') . '>' . $lang_char_list['lesser_level'] . '</option> <option value="guild"' . ($search_by == 'guild' ? ' selected="selected"' : '') . '>' . $lang_char_list['by_guild'] . '</option> <option value="race"' . ($search_by == 'race' ? ' selected="selected"' : '') . '>' . $lang_char_list['by_race_id'] . '</option> <option value="class"' . ($search_by == 'class' ? ' selected="selected"' : '') . '>' . $lang_char_list['by_class_id'] . '</option> <option value="map"' . ($search_by == 'map' ? ' selected="selected"' : '') . '>' . $lang_char_list['by_map_id'] . '</option> <option value="online"' . ($search_by == 'online' ? ' selected="selected"' : '') . '>' . $lang_char_list['by_online'] . '</option> <option value="gold"' . ($search_by == 'gold' ? ' selected="selected"' : '') . '>' . $lang_char_list['chars_gold'] . '</option> <option value="item"' . ($search_by == 'item' ? ' selected="selected"' : '') . '>' . $lang_char_list['by_item'] . '</option> </select> </form> </td> <td align="left">'; makebutton($lang_global['search'], 'javascript:do_submit()', 80); $output .= ' </td> </tr> </table> </td> </tr> </table>'; //==========================top tage navigaion ENDS here ======================== $output .= ' <form method="get" action="characters.php" name="form1"> <input type="hidden" name="action" value="del_char_form" /> <input type="hidden" name="start" value="$start" /> <table class="lined"> <tr> <td "class="hidden" align="left" width="25%">'; $output .= ' ' . $lang_char_list['tot_chars'] . ' : ' . $all_record . ' </td> <td "class="hidden" align="right" width="25%">'; $output .= generate_pagination('characters.php?order_by=' . $order_by . '&dir=' . ($dir ? 0 : 1) . ($search_value && $search_by ? '&search_by=' . $search_by . '&search_value=' . $search_value . '' : ''), $all_record, $itemperpage, $start); $output .= ' </td> </tr> </table>'; $output .= "\n\t<table class=\"lined\">\n\t\t<tr>\n\t\t\t<th width=\"1%\"><input name=\"allbox\" type=\"checkbox\" value=\"Check All\" onclick=\"CheckAll(document.form1);\" /></th>\n\t\t\t<th width=\"1%\"><a href=\"characters.php?order_by=guid&start={$start}" . ($search_value && $search_by ? "&search_by={$search_by}&search_value={$search_value}" : "") . "&dir={$dir}\">" . ($order_by == 'guid' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_char_list['id']}</a></th>\n\t\t\t<th width=\"1%\"><a href=\"characters.php?order_by=name&start={$start}" . ($search_value && $search_by ? "&search_by={$search_by}&search_value={$search_value}" : "") . "&dir={$dir}\">" . ($order_by == 'name' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_char_list['char_name']}</a></th>\n\t\t\t<th width=\"1%\"><a href=\"characters.php?order_by=account&start={$start}" . ($search_value && $search_by ? "&search_by={$search_by}&search_value={$search_value}" : "") . "&dir={$dir}\">" . ($order_by == 'account' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_char_list['account']}</a></th>\n\t\t\t<th width=\"1%\"><a href=\"characters.php?order_by=race&start={$start}" . ($search_value && $search_by ? "&search_by={$search_by}&search_value={$search_value}" : "") . "&dir={$dir}\">" . ($order_by == 'race' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_char_list['race']}</a></th>\n\t\t\t<th width=\"1%\"><a href=\"characters.php?order_by=class&start={$start}" . ($search_value && $search_by ? "&search_by={$search_by}&search_value={$search_value}" : "") . "&dir={$dir}\">" . ($order_by == 'class' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_char_list['class']}</a></th>\n\t\t\t<th width=\"1%\"><a href=\"characters.php?order_by=level&start={$start}" . ($search_value && $search_by ? "&search_by={$search_by}&search_value={$search_value}" : "") . "&dir={$dir}\">" . ($order_by == 'level' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_char_list['level']}</a></th>\n\t\t\t<th width=\"10%\"><a href=\"characters.php?order_by=map&start={$start}" . ($search_value && $search_by ? "&search_by={$search_by}&search_value={$search_value}" : "") . "&dir={$dir}\">" . ($order_by == 'map ' . $order_dir . ', zone' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_char_list['map']}</a></th>\n\t\t\t<th width=\"10%\"><a href=\"characters.php?order_by=zone&start={$start}" . ($search_value && $search_by ? "&search_by={$search_by}&search_value={$search_value}" : "") . "&dir={$dir}\">" . ($order_by == 'zone ' . $order_dir . ', map' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_char_list['zone']}</a></th>\n\t\t\t<th width=\"10%\"><a href=\"characters.php?order_by=gname&start={$start}" . ($search_value && $search_by ? "&search_by={$search_by}&search_value={$search_value}" : "") . "&dir={$dir}\">" . ($order_by == 'gname' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_char_list['guild']}</a></th>\n\t\t\t<th width=\"1%\"><a href=\"characters.php?order_by=logout_time&start={$start}" . ($search_value && $search_by ? "&search_by={$search_by}&search_value={$search_value}" : "") . "&dir={$dir}\">" . ($order_by == 'logout_time' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_char_list['lastseen']}</a></th>\n\t\t\t<th width=\"1%\"><a href=\"characters.php?order_by=online&start={$start}" . ($search_value && $search_by ? "&search_by={$search_by}&search_value={$search_value}" : "") . "&dir={$dir}\">" . ($order_by == 'online' ? "<img src=\"img/arr_" . ($dir ? "up" : "dw") . ".gif\" alt=\"\" /> " : "") . "{$lang_char_list['online']}</a></th>"; if ($showcountryflag) { require_once 'libs/misc_lib.php'; $output .= ' <th width="1%">' . $lang_global['country'] . '</th>'; } $output .= ' </tr>'; $looping = $this_page < $itemperpage ? $this_page : $itemperpage; for ($i = 1; $i <= $looping; $i++) { $char = $sqlr->fetch_assoc($query) or die(error($lang_global['err_no_user'])); // to disalow lower lvl gm to view accounts of other gms $result = $sqlr->query(' SELECT gmlevel, username FROM account WHERE id = ' . $char['account'] . ''); $owner_gmlvl = $sqlr->result($result, 0, 'gmlevel'); if ($owner_gmlvl == null) { $owner_gmlvl = 0; } $owner_acc_name = $sqlr->result($result, 0, 'username'); $lastseen = date('Y-m-d G:i:s', $char['logout_time']); $guild_name = $sqlc->fetch_assoc($sqlc->query(' SELECT name FROM guild WHERE guildid = ' . $char['gname'] . '')); if ($user_lvl >= $owner_gmlvl || $owner_acc_name == $user_name) { $output .= ' <tr> <td>'; if ($user_lvl >= $action_permission['delete'] || $owner_acc_name == $user_name) { $output .= ' <input type="checkbox" name="check[]" value="' . $char['guid'] . '" onclick="CheckCheckAll(document.form1);" />'; } $output .= ' </td> <td>' . $char['guid'] . '</td> <td><a href="char.php?id=' . $char['guid'] . '">' . htmlentities($char['name']) . '</a></td> <td><a href="accounts.php?action=edit_user&error=11&id=' . $char['account'] . '">' . htmlentities($owner_acc_name) . '</a></td> <td><img src="img/c_icons/' . $char['race'] . '-' . $char['gender'] . '.gif" onmousemove="toolTip(\'' . char_get_race_name($char['race']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /></td> <td><img src="img/c_icons/' . $char['class'] . '.gif" onmousemove="toolTip(\'' . char_get_class_name($char['class']) . '\',\'item_tooltip\')" onmouseout="toolTip()" alt="" /></td> <td>' . char_get_level_color($char['level']) . '</td> <td class="small"><span onmousemove="toolTip(\'MapID:' . $char['map'] . '\', \'item_tooltip\')" onmouseout="toolTip()">' . get_map_name($char['map'], $sqlm) . '</span></td> <td class="small"><span onmousemove="toolTip(\'ZoneID:' . $char['zone'] . '\',\'item_tooltip\')" onmouseout="toolTip()">' . get_zone_name($char['zone'], $sqlm) . '</span></td> <td class="small"><a href="guild.php?action=view_guild&error=3&id=' . $char['gname'] . '">' . htmlentities($guild_name['name']) . '</a></td> <td class="small">' . $lastseen . '</td> <td>' . ($char['online'] ? "<img src=\"img/up.gif\" alt=\"\" />" : "-") . '</td>'; if ($showcountryflag) { $country = misc_get_country_by_account($char['account'], $sqlr, $sqlm); $output .= "\n\t\t\t<td>" . ($country['code'] ? "<img src='img/flags/" . $country['code'] . ".png' onmousemove='toolTip(\"" . $country['country'] . "\",\"item_tooltip\")' onmouseout='toolTip()' alt=\"\" />" : "-") . "</td>"; } $output .= ' </tr>'; } else { $output .= ' <tr> <td>*</td><td>***</td><td>***</td><td>You</td><td>Have</td><td>No</td><td class=\\"small\\">Permission</td><td>to</td><td>View</td><td>this</td><td>Data</td><td>***</td><td>*</td>'; if ($showcountryflag) { $output .= ' <td>*</td>'; } $output .= ' </tr>'; } } unset($char); unset($result); $output .= ' </table> <table class="lined"> <tr> <th> </th> </tr> </table> <table class="lined"> <tr> <td "class="hidden" align="left" width="25%">'; $output .= ' ' . $lang_char_list['tot_chars'] . ' : ' . $all_record . ' </td> <td "class="hidden" align="right" width="25%">'; $output .= generate_pagination('characters.php?order_by=' . $order_by . '&dir=' . ($dir ? 0 : 1) . ($search_value && $search_by ? '&search_by=' . $search_by . '&search_value=' . $search_value . '' : ''), $all_record, $itemperpage, $start); $output .= ' </td> </tr> </table> <table class="top_hidden"> <tr> <td>'; if ($user_lvl >= $action_permission['delete'] || $owner_acc_name == $user_name) { makebutton($lang_char_list['del_selected_chars'], 'javascript:do_submit(\'form1\',0)" type="wrn', 220); } $output .= ' </td> </tr> </table> </form> </center>'; }