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>'; } }
$guild_name = $guild_name["name"]; } $output .= ' <tr> <td> <a href="char.php?id=' . $char["guid"] . '">' . htmlentities($char["name"], ENT_COMPAT, $site_encoding) . '</a> </td> <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>' . char_get_level_color($char["level"]) . '</td> <td> <span onmouseover="oldtoolTip(\'' . char_get_pvp_rank_name($char["honor"], char_get_side_id($char["race"])) . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" class="honor_tooltip"> <img src="img/ranks/rank' . char_get_pvp_rank_id($char["honor"], char_get_side_id($char["race"])) . '.gif" alt="" /> </span> </td> <td>' . $char["honor"] . '</td> <td>' . $char["kills"] . '</td> <td>' . $char["arena"] . '</td> <td> <a href="guild.php?action=view_guild&error=3&id=' . $char["GNAME"] . '">' . htmlentities($guild_name, ENT_COMPAT, $site_encoding) . '</a> </td> </tr>'; } $output .= ' </table> </div>'; require_once "footer.php";
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 main() { global $output, $realm_id, $world_db, $logon_db, $characters_db, $corem_db, $server, $action_permission, $user_lvl, $user_id, $site_encoding, $hide_coupons, $locales_search_option, $base_datasite, $item_datasite, $showcountryflag, $gm_online_count, $gm_online, $itemperpage, $hide_uptime, $player_online, $hide_max_players, $hide_avg_latency, $hide_plr_latency, $hide_server_mem, $sql, $core; // do any raffle drawings that are necessary do_raffles(); // check achievement contests do_contests(); $output .= ' <div class="top">'; //---------------------Information for Explorer Users-------------------------- if (preg_match("/MSIE/", $_SERVER["HTTP_USER_AGENT"])) { $msie = ' <br /> <span id="index_explorer_warning">' . lang("index", "explorer_warn") . '</span> <br />'; } else { $msie = ''; } //----------------------------------------------------------------------------- if (test_port($server[$realm_id]["addr"], $server[$realm_id]["game_port"])) { if ($core == 1) { $stats = get_uptime($server[$realm_id]["stats.xml"]); $staticUptime = ' <em>' . htmlentities(get_realm_name($realm_id), ENT_COMPAT, $site_encoding) . '</em> <br />' . $stats["platform"][4] . ' ' . $stats["platform"][5] . ' ' . $stats["platform"][6]; if (!$hide_uptime) { $staticUptime .= '<br />' . lang("index", "online") . ' for ' . $stats["uptime"]; } $output .= ' <div id="uptime">' . $msie . ' <h1> <span id="index_realm_info"> <span>' . $staticUptime . '</span>'; if (!$hide_max_players) { $output .= ' <br /> <span>' . lang("index", "maxplayers") . ': </span> <span class="index_realm_info_value">' . $stats["peak"] . '</span>'; } if (!$hide_avg_latency) { $output .= ' <br /> <span>' . lang("index", "avglat") . ': </span> <span class="index_realm_info_value">' . $stats["avglat"] . '</span>'; } $output .= ' <br />'; if ($hide_server_mem != 0) { if ($hide_server_mem == 2 || $user_lvl == $action_permission["delete"]) { $output .= ' <span>' . lang("index", "cpu") . ': </span> <span class="index_realm_info_value">' . $stats["cpu"] . '%, </span> <span>' . lang("index", "ram") . ': </span> <span class="index_realm_info_value">' . $stats["ram"] . ' MB, </span> <span>' . lang("index", "threads") . ': </span> <span class="index_realm_info_value">' . $stats["threads"] . '</span>'; } } $output .= ' </span> </h1> </div>'; } else { $stats = $sql["logon"]->fetch_assoc($sql["logon"]->query("SELECT starttime, maxplayers FROM uptime WHERE realmid='" . $realm_id . "' ORDER BY starttime DESC LIMIT 1"), 0); $uptimetime = time() - $stats["starttime"]; // a more reliable method of counting how many characters have been online since server start //$maxplayers_query = "SELECT COUNT(*) FROM `".$characters_db[$realm_id]["name"]."`.characters WHERE logout_time>='".$stats["starttime"]."' AND logout_time>=(SELECT UNIX_TIMESTAMP(last_login) FROM `".$logon_db["name"]."`.account WHERE id=`".$characters_db[$realm_id]["name"]."`.characters.account)"; //$maxplayers_result = $sql["char"]->query($maxplayers_query); //$maxplayers_result = $sql["char"]->fetch_assoc($maxplayers_result); //$stats["maxplayers"] = $maxplayers_result["COUNT(*)"]; function format_uptime($seconds) { $secs = intval($seconds % 60); $mins = intval($seconds / 60 % 60); $hours = intval($seconds / 3600 % 24); $days = intval($seconds / 86400); if ($days > 365) { $days = intval($seconds / 86400 % 365.24); $years = intval($seconds / 31556926); } $uptimeString = ''; if ($years) { // we have a server that has been up for over a year? O_o // actually, it's probably because the server didn't write a useful // value to the uptime table's starttime field. $uptimeString .= $years; $uptimeString .= $years == 1 ? ' ' . lang("index", "uptime_year") : ' ' . lang("index", "uptime_years"); if ($days) { $uptimeString .= ($years > 0 ? ', ' : '') . $days; $uptimeString .= $days == 1 ? ' ' . lang("index", "uptime_day") : ' ' . lang("index", "uptime_days"); } } else { if ($days) { $uptimeString .= $days; $uptimeString .= $days == 1 ? ' ' . lang("index", "uptime_day") : ' ' . lang("index", "uptime_days"); } } if ($hours) { $uptimeString .= ($days > 0 ? ', ' : '') . $hours; $uptimeString .= $hours == 1 ? ' ' . lang("index", "uptime_hour") : ' ' . lang("index", "uptime_hours"); } if ($mins) { $uptimeString .= ($days > 0 || $hours > 0 ? ', ' : '') . $mins; $uptimeString .= $mins == 1 ? ' ' . lang("index", "uptime_minute") : ' ' . lang("index", "uptime_minutes"); } if ($secs) { $uptimeString .= ($days > 0 || $hours > 0 || $mins > 0 ? ', ' : '') . $secs; $uptimeString .= $secs == 1 ? ' ' . lang("index", "uptime_second") : ' ' . lang("index", "uptime_seconds"); } return $uptimeString; } $staticUptime = ' <em>' . htmlentities(get_realm_name($realm_id), ENT_COMPAT, $site_encoding) . '</em> '; if (!$hide_uptime) { if ($stats["starttime"] != 0) { $staticUptime .= '<br /><span>' . lang("index", "online") . format_uptime($uptimetime) . '</span>'; } else { $staticUptime .= '<br /><span style="color:orange">' . lang("index", "time_error1") . ': <br>' . format_uptime($uptimetime) . '</span><br><span style="color:red">' . lang("index", "time_error2") . '</span>'; } } unset($uptimetime); $output .= ' <div id="uptime">' . $msie . ' <h1> <span id="index_realm_info">' . $staticUptime; if (!$hide_max_players) { $output .= ' <br /> <span>' . lang("index", "maxplayers") . ': </span> <span class="index_realm_info_value">' . $stats["maxplayers"] . '</span>'; } // this_is_junk: MaNGOS doesn't store player latency. :/ if ($core == 3) { if (!$hide_avg_latency) { $lat_query = "SELECT SUM(latency), COUNT(*) FROM characters WHERE online=1"; $lat_result = $sql["char"]->query($lat_query); $lat_fields = $sql["char"]->fetch_assoc($lat_result); $avglat = sprintf("%.3f", $lat_fields["SUM(latency)"] / $lat_fields["COUNT(*)"]); $output .= ' <br /> <span>' . lang("index", "avglat") . ': </span> <span class="index_realm_info_value">' . $avglat . '</span>'; } } $output .= ' </span> </h1> </div>'; unset($stats); $online = true; } unset($staticUptime); //unset($stats); $online = true; } else { $output .= $msie . '<h1><span class="error">' . lang("index", "realm") . ' <em>' . htmlentities(get_realm_name($realm_id), ENT_COMPAT, $site_encoding) . '</em> ' . lang("index", "offline_or_let_high") . '</span></h1>'; $online = false; } //close the div $output .= ' </div>'; // MOTDs // get our MotDs... $motd = ""; $motd_result = $sql["mgr"]->query("SELECT *, UNIX_TIMESTAMP(Created) AS Created, UNIX_TIMESTAMP(Last_Edited) AS Last_Edited FROM motd WHERE Enabled<>0 AND (Target='" . $user_id . "' OR Target=0) ORDER BY Priority ASC"); // if we don't get any MotDs, it'll stay empty if ($user_lvl >= $action_permission["update"]) { $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>'; } if ($sql["mgr"]->num_rows($motd_result) > 0) { $output .= ' <div class="div_lined"> <div class="div_lined_head"> <span>' . lang("index", "motd") . '</span> </div>'; } while ($temp = $sql["mgr"]->fetch_assoc($motd_result)) { if ($user_lvl >= $temp["Min_Sec_Level"]) { $motd = bb2html($temp["Message"]) . "<br /><br />"; if ($motd) { if ($temp["Target"] != 0) { $output .= ' <div class="div_lined_line left_text">' . lang("motd", "private") . '</div>'; } $output .= ' <div class="div_lined_line left_text">'; $output .= $motd; $output .= ' <br />'; // Get User Name for poster if ($core == 1) { $posted_name_query = "SELECT login FROM accounts WHERE acct='" . $temp["Created_By"] . "'"; } else { $posted_name_query = "SELECT username AS login FROM account WHERE id='" . $temp["Created_By"] . "'"; } $posted_name_result = $sql["logon"]->query($posted_name_query); $posted_name = $sql["logon"]->fetch_assoc($posted_name_result); $posted_name = $posted_name["login"]; // Get Screen Name for poster, if available $posted_screenname_query = "SELECT ScreenName FROM config_accounts WHERE Login='******'"; $posted_screenname_result = $sql["mgr"]->query($posted_screenname_query); $posted_screenname = $sql["mgr"]->fetch_assoc($posted_screenname_result); if ($posted_screenname["ScreenName"] != NULL) { $posted_name = htmlspecialchars($posted_screenname["ScreenName"]); } // if the Server Message is posted by the system, Created_By will be zero if ($temp["Created_By"] != 0) { $output .= ' <span>' . lang("motd", "posted_by") . ':</span>'; if ($user_lvl > -1) { $output .= ' <a href="user.php?action=edit_user&error=11&acct=' . $temp["Created_By"] . '">'; } $output .= ' <span>' . $posted_name . '</span>'; if ($user_lvl > -1) { $output .= ' </a>'; } $output .= ' <span>(' . date("M d, Y @ H:i:s", $temp["Created"]) . ')</span>'; } else { $output .= ' <span>' . lang("motd", "posted") . ': ' . date("M d, Y @ H:i:s", $temp["Created"]) . '</span>'; } // Get User Name for last editor if ($core == 1) { $edited_name_query = "SELECT login FROM accounts WHERE acct='" . $temp["Last_Edited_By"] . "'"; } else { $edited_name_query = "SELECT username AS login FROM account WHERE id='" . $temp["Last_Edited_By"] . "'"; } $edited_name_result = $sql["logon"]->query($edited_name_query); $edited_name = $sql["logon"]->fetch_assoc($edited_name_result); $edited_name = $edited_name["login"]; // Get Screen Name for last editor, if available $edited_screenname_query = "SELECT ScreenName FROM config_accounts WHERE Login='******'"; $edited_screenname_result = $sql["mgr"]->query($edited_screenname_query); $edited_screenname = $sql["mgr"]->fetch_assoc($edited_screenname_result); if ($edited_screenname["ScreenName"] != NULL) { $edited_name = htmlspecialchars($edited_screenname["ScreenName"]); } if ($temp["Last_Edited_By"] != 0) { $output .= ' <br /> <div> <span>' . lang("motd", "edited_by") . ':</span>'; if ($user_lvl > -1) { $output .= ' <a href="user.php?action=edit_user&error=11&acct=' . $temp["Last_Edited_By"] . '">'; } $output .= ' <span>' . $edited_name . '</span>'; if ($user_lvl > -1) { $output .= ' </a>'; } $output .= ' <span>(' . date("M d, Y @ H:i:s", $temp["Last_Edited"]) . ')</span> </div>'; } $output .= ' </div>'; if ($user_lvl >= $action_permission["update"]) { $output .= ' <div class="div_lined_line right_text"> <img src="img/aff_cross.png" width="16" height="16" onclick="answerBox(\'' . lang("global", "delete") . ': <font color=white>' . $temp["ID"] . '</font><br />' . lang("global", "are_you_sure") . '\', del_motd + ' . $temp["ID"] . ');" alt="" />'; } if ($user_lvl >= $action_permission["update"]) { $output .= ' <a href="motd.php?action=edit_motd&error=3&id=' . $temp["ID"] . '"> <img src="img/edit.png" width="16" height="16" alt="" /> </a> </div>'; } $output .= ' <br />'; } } } if ($sql["mgr"]->num_rows($motd_result)) { $output = substr($output, 0, strlen($output) - 24); } if ($sql["mgr"]->num_rows($motd_result) > 0) { $output .= ' </div>'; } if ($user_lvl >= $action_permission["insert"]) { $output .= ' <div class="div_lined"> <div class="div_lined_head right_text"> <a href="motd.php?action=add_motd&error=4">' . lang("index", "add_motd") . '</a> </div> </div>'; } // Coupons if (!$hide_coupons) { $coupon_query = "SELECT * FROM point_system_coupons WHERE ((target='0' AND contest='0') OR target='" . $user_id . "') AND enabled='1'"; $coupon_result = $sql["mgr"]->query($coupon_query); if ($sql["mgr"]->num_rows($coupon_result) > 0) { $output .= ' <br /> <div class="div_lined"> <div class="div_lined_head"> <span>' . lang("index", "avail_coupons") . '</span> </div>'; while ($coupon = $sql["mgr"]->fetch_assoc($coupon_result)) { $usage_query = "SELECT * FROM point_system_coupon_usage WHERE coupon='" . $coupon["entry"] . "' AND user='******'"; $usage_result = $sql["mgr"]->query($usage_query); if ($sql["mgr"]->num_rows($usage_result) < $coupon["usage_limit"] || $coupon["usage_limit"] == -1) { $output .= ' <div class="div_lined_line left_text"> <span>' . $coupon["title"] . '</span> </div>'; if ($coupon["text"] != "") { $output .= ' <div class="div_lined_line left_text"> <span>' . $coupon["text"] . '</span> </div>'; } if ($coupon["credits"] != 0 || $coupon["money"] != 0 || $coupon["item_id"] != 0 || $coupon["raffle_id"] != 0) { $output .= ' <div class="div_lined_line left_text"> <span>' . lang("index", "coupon_value") . ':</span>'; if ($coupon["credits"] > 0) { if ($coupon["credits"] > 1) { $tip = lang("index", "coupon_credits"); } else { $tip = lang("index", "coupon_credit"); } $output .= ' <br /> <br /> <span>' . $coupon["credits"] . '</span> <span>' . $tip . '</span>'; } if ($coupon["money"] > 0) { // extract gold/silver/copper from single gold number $coupon["money"] = str_pad($coupon["money"], 4, "0", STR_PAD_LEFT); $coupon_g = substr($coupon["money"], 0, -4); if ($coupon_g == "") { $coupon_g = 0; } $coupon_s = substr($coupon["money"], -4, 2); if ($coupon_s == "" || $coupon_s == "00") { $coupon_s = 0; } $coupon_c = substr($coupon["money"], -2); if ($coupon_c == "" || $coupon_c == "00") { $coupon_c = 0; } $output .= ' <br /> <br /> <span>' . $coupon_g . '</span> <img src="img/gold.gif" alt="gold" /> <span>' . $coupon_s . '</span> <img src="img/silver.gif" alt="gold" /> <span>' . $coupon_c . '</span> <img src="img/copper.gif" alt="gold" />'; } if ($coupon["item_id"] != 0) { if ($coupon["item_id"] > 0) { // get item data if ($core == 1) { $i_query = "SELECT \r\n *, description AS description1, name1 AS name, quality AS Quality, inventorytype AS InventoryType, \r\n socket_color_1 AS socketColor_1, socket_color_2 AS socketColor_2, socket_color_3 AS socketColor_3,\r\n requiredlevel AS RequiredLevel, allowableclass AS AllowableClass,\r\n sellprice AS SellPrice, itemlevel AS ItemLevel\r\n FROM items " . ($locales_search_option != 0 ? "LEFT JOIN items_localized ON (items_localized.entry=items.entry AND language_code='" . $locales_search_option . "') " : " ") . "WHERE items.entry='" . $coupon["item_id"] . "'"; } else { $i_query = "SELECT *, description AS description1 FROM item_template " . ($locales_search_option != 0 ? "LEFT JOIN locales_item ON locales_item.entry=item_template.entry " : " ") . "WHERE item_template.entry='" . $coupon["item_id"] . "'"; } $i_result = $sql["world"]->query($i_query); $i = $sql["world"]->fetch_assoc($i_result); $output .= ' <br /> <br /> <div class="coupon_item"> <div> <a href="' . $base_datasite . $item_datasite . $coupon["item_id"] . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . $coupon["entry"] . '\');" onmouseout="HideTooltip(\'_b' . $coupon["entry"] . '\');"> <img src="' . get_item_icon($coupon["item_id"]) . '" alt="" /> </a>'; if ($coupon["item_count"] > 1) { $output .= ' <div class="ch_inv_quantity_shadow">' . $coupon["item_count"] . '</div> <div class="ch_inv_quantity">' . $coupon["item_count"] . '</div>'; } $output .= ' </div>'; // build a tooltip object for this item $output .= ' <div class="item_tooltip_div" id="tooltip_b' . $coupon["entry"] . '" style="left: -129px; top: 42px;"> <div>' . get_item_tooltip($i, 0, 0, 0, 0, 0) . '</div> </div>'; $output .= ' </div>'; } else { $output .= ' <br /> <br /> <div class="coupon_item"> <div> <a href="point_system.php?action=view_bag&bag_id=' . $coupon["item_id"] * -1 . '" onmousemove="oldtoolTip(\'' . lang("points", "prize_bag") . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()"> <img src="' . get_item_icon(1725) . '" alt="" /> </a> </div> </div>'; } } if ($coupon["raffle_id"] != 0) { // find out how many entries per user the raffle allows and whether the raffle is enabled if ($coupon["raffle_id"] != -1) { $query = "SELECT tickets_per_user, enabled FROM point_system_raffles WHERE entry='" . $coupon["raffle_id"] . "'"; $result = $sql["mgr"]->query($query); $result = $sql["mgr"]->fetch_assoc($result); $per_user = $result["tickets_per_user"]; $raffle_enabled = $result["enabled"]; // if tickets_per_user is -1 then its unlimited, fake it with a reasonably high number $per_user = 999999999; } else { // if it allows any raffle, then fake it $per_user = 999999999; $raffle_enabled = 1; } if ($raffle_enabled) { // find out how many time we've entered $query = "SELECT COUNT(*) FROM point_system_raffle_tickets WHERE raffle='" . $coupon["raffle_id"] . "' AND user='******'"; $result = $sql["mgr"]->query($query); $result = $sql["mgr"]->fetch_assoc($result); $tickets = $result["COUNT(*)"]; // if we haven't already purchased the maximum number of tickets // or the raffle allows purchase of tickets from any raffle if ($tickets < $per_user || $coupon["raffle_id"] == -1) { if ($coupon["redemption_option"] == 0) { $output .= ' <br /> <br /> <span>' . lang("index", "and_raffle") . '</span>'; } else { $output .= ' <br /> <br /> <span>' . lang("index", "or_raffle") . '</span>'; } } } } $output .= ' </div>'; } if ($coupon["credits"] < 0) { $message = lang("points", "coupon_cost_credits"); $message = str_replace("%1", $coupon["credits"] * -1, $message); $output .= ' <div class="div_lined_line right_text"> <span>' . $message . '</span> </div>'; } if ($coupon["money"] < 0) { $coupon["money"] = $coupon["money"] * -1; $coupon_money = $coupon["money"]; $coupon_money = str_pad($coupon_money, 4, "0", STR_PAD_LEFT); $cg = substr($coupon_money, 0, -4); if ($cg == "") { $cg = 0; } $cs = substr($coupon_money, -4, 2); if ($cs == "" || $cs == "00") { $cs = 0; } $cc = substr($coupon_money, -2); if ($cc == "" || $cc == "00") { $cc = 0; } $coupon_money_display = ' <span>' . $cg . '</span> <img src="img/gold.gif" alt="" align="middle" /> <span>' . $cs . '</span> <img src="img/silver.gif" alt="" align="middle" /> <span>' . $cc . '</span> <img src="img/copper.gif" alt="" align="middle" />'; $message = lang("points", "coupon_cost_money"); $message = str_replace("%1", $coupon_money_display, $message); $output .= ' <div class="div_lined_line right_text"> <span>' . $message . '</span> </div>'; } $output .= ' <div class="div_lined_line right_text"> <a href="point_system.php?action=redeem_coupon&coupon_id=' . $coupon["entry"] . '"> <img src="img/star.png" width="16" height="16" alt="" /> <span> ' . lang("index", "use_coupon") . '</span> </a> </div>'; $output .= ' <br />'; } } if ($sql["mgr"]->num_rows($coupon_result)) { $output = substr($output, 0, strlen($output) - 20); } $output .= ' </div>'; } } // GM Tickets $start_m = isset($_GET["start_m"]) ? $sql["char"]->quote_smart($_GET["start_m"]) : 0; if (!is_numeric($start_m)) { $start_m = 0; } if ($core == 1) { $all_record_m = $sql["char"]->result($sql["char"]->query("SELECT COUNT(*) FROM gm_tickets WHERE deleted=0"), 0); } elseif ($core == 2) { $all_record_m = $sql["char"]->result($sql["char"]->query("SELECT COUNT(*) FROM character_ticket"), 0); } else { $all_record_m = $sql["char"]->result($sql["char"]->query("SELECT COUNT(*) FROM gm_tickets WHERE closedBy=0"), 0); } // show gm tickets $output .= ' <br />'; if ($user_lvl >= $action_permission["insert"]) { if ($all_record_m) { $output .= ' <div class="div_lined"> <div class="div_lined_head"> <span>' . lang("index", "tickets") . '</span> </div>'; if ($core == 1) { $result = $sql["char"]->query("SELECT ticketid, level, message, name, deleted,\r\n timestamp, gm_tickets.playerGuid, acct\r\n FROM gm_tickets\r\n LEFT JOIN characters ON characters.guid=gm_tickets.playerGuid\r\n ORDER BY ticketid DESC LIMIT " . $start_m . ", 3"); } elseif ($core == 2) { $result = $sql["char"]->query("SELECT character_ticket.ticket_id AS ticketid, characters.level,\r\n ticket_text AS message, characters.name, UNIX_TIMESTAMP(ticket_lastchange) AS timestamp,\r\n character_ticket.guid AS playerGuid, account AS acct\r\n FROM character_ticket\r\n LEFT JOIN characters ON characters.guid=character_ticket.guid\r\n ORDER BY ticketid DESC LIMIT " . $start_m . ", 3"); } else { $result = $sql["char"]->query("SELECT gm_tickets.guid AS ticketid, characters.level, message,\r\n gm_tickets.name, closedBy AS deleted, lastModifiedTime AS timestamp, gm_tickets.guid AS playerGuid, account AS acct\r\n FROM gm_tickets\r\n LEFT JOIN characters ON characters.guid=gm_tickets.guid\r\n ORDER BY ticketid DESC LIMIT " . $start_m . ", 3"); } while ($post = $sql["char"]->fetch_assoc($result)) { if (!$post["deleted"]) { if ($core == 1) { $login_result = $sql["logon"]->query("SELECT * FROM accounts WHERE acct='" . $post["acct"] . "'"); } else { $login_result = $sql["logon"]->query("SELECT *, username AS login FROM account WHERE id='" . $post["acct"] . "'"); } $login = $sql["logon"]->fetch_assoc($login_result); $gm_result = $sql["mgr"]->query("SELECT SecurityLevel FROM config_accounts WHERE Login='******'"); $gm = $sql["mgr"]->fetch_assoc($gm_result); $gm = $gm["SecurityLevel"]; if ($user_lvl > 0 && ($user_lvl >= gmlevel($gm) || $user_lvl == $action_permission["delete"])) { $output .= ' <div class="div_lined_line left_text"> <a href="char.php?id=' . $post["playerGuid"] . '"> <span onmousemove="oldtoolTip(\'' . htmlspecialchars($login["username"]) . ' (' . id_get_gm_level($gm) . ')' . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()">' . htmlentities($post["name"], ENT_COMPAT, $site_encoding) . '</span> </a> </div> <div class="div_lined_line left_text"> <span>' . htmlspecialchars($post["message"]) . '</span> </div> <div class="div_lined_line right_text">'; } $output .= ' <span>' . lang("index", "submitted") . ": " . date('G:i:s m-d-Y', $post["timestamp"]) . '</span>'; $output .= ' </div> <div class="div_lined_line right_text">'; if ($user_lvl >= $action_permission["update"]) { $output .= ' <a href="ticket.php?action=edit_ticket&error=4&id=' . $post["ticketid"] . '"> <img src="img/edit.png" width="16" height="16" alt="" /> </a>'; } $output .= ' </div> <br />'; } } $output .= ' </div>'; } } // Character Changes // count pending character changes $char_change_count = $sql["mgr"]->result($sql["mgr"]->query("SELECT COUNT(*) FROM char_changes"), 0); // show pending character changes $output .= ' <br />'; if ($user_lvl >= $action_permission["update"]) { if ($char_change_count) { $output .= ' <div class="div_lined"> <div class="div_lined_head"> <span>' . lang("index", "pendingchanges") . '</span> </div>'; $result = $sql["mgr"]->query("SELECT * FROM char_changes"); while ($change = $sql["mgr"]->fetch_assoc($result)) { if ($core == 1) { $change_char_query = "SELECT * FROM characters WHERE guid='" . $change["guid"] . "'"; } else { $change_char_query = "SELECT *, account AS acct FROM characters WHERE guid='" . $change["guid"] . "'"; } $change_char = $sql["char"]->fetch_assoc($sql["char"]->query($change_char_query)); if ($core == 1) { $change_acct_query = "SELECT * FROM accounts WHERE acct='" . $change_char["acct"] . "'"; } else { $change_acct_query = "SELECT *, username AS login FROM account WHERE id='" . $change_char["acct"] . "'"; } $change_acct = $sql["logon"]->fetch_assoc($sql["logon"]->query($change_acct_query)); if (isset($change["new_name"])) { // Localization $namechange = lang("xname", "playerhasreq"); $namechange = str_replace("%1", htmlspecialchars($change_acct["login"]), $namechange); $namechange = str_replace("%2", htmlspecialchars($change_char["name"]), $namechange); $namechange = str_replace("%3", htmlspecialchars($change["new_name"]), $namechange); $output .= ' <div class="div_lined_line left_text large"> <span>' . $namechange . '</span>'; } if (isset($change["new_race"])) { // Localization $racechange = lang("xrace", "playerhasreq"); $racechange = str_replace("%1", htmlspecialchars($change_acct["login"]), $racechange); $racechange = str_replace("%2", htmlspecialchars($change_char["name"]), $racechange); $racechange = str_replace("%3", char_get_race_name($change["new_race"]), $racechange); $output .= ' <div class="div_lined_line left_text large"> <span>' . $racechange . '</span>'; } if (isset($change["new_acct"])) { if ($core == 1) { $new_acct_query = "SELECT login FROM accounts WHERE acct='" . $change["new_acct"] . "'"; } else { $new_acct_query = "SELECT username AS login FROM account WHERE id='" . $change["new_acct"] . "'"; } $new_acct_result = $sql["logon"]->query($new_acct_query); $new_acct_result = $sql["logon"]->fetch_assoc($new_acct_result); $new_acct_name = $new_acct_result["login"]; // Localization $acctchange = lang("xacct", "playerhasreq"); $acctchange = str_replace("%1", htmlspecialchars($change_acct["login"]), $acctchange); $acctchange = str_replace("%2", htmlspecialchars($change_char["name"]), $acctchange); $acctchange = str_replace("%3", $new_acct_name, $acctchange); $output .= ' <div class="div_lined_line left_text large"> <span>' . $acctchange . '</span>'; } if ($change_char["online"]) { $output .= ' <br /> <br /> <img src="img/aff_warn.gif" alt="warn" /> <span class="error">' . lang("xname", "online") . '</span>'; } $output .= ' </div>'; if (isset($change["new_name"])) { $file = "change_char_name.php"; } elseif (isset($change["new_race"])) { $file = "change_char_race.php"; } else { $file = "change_char_account.php"; } $output .= ' <div class="div_lined_line right_text"> <a href="' . $file . '?action=denied&guid=' . $change["guid"] . '"> <img src="img/cross.png" width="12" height="12" alt="" /> </a>'; if (!$change_char["online"]) { $output .= ' <a href="' . $file . '?action=approve&guid=' . $change["guid"] . '"> <img src="img/aff_tick.png" width="14" height="14" alt="" /> </a>'; } $output .= ' </div> <br />'; } $output .= ' </div>'; } } //print online chars if ($online && $user_lvl >= $player_online) { //==========================$_GET and SECURE================================= $start = isset($_GET["start"]) ? $sql["char"]->quote_smart($_GET["start"]) : 0; if (!is_numeric($start)) { $start = 0; } $order_by = isset($_GET["order_by"]) ? $sql["char"]->quote_smart($_GET["order_by"]) : "name"; if (!preg_match("/^[_[:lower:]]{1,12}\$/", $order_by)) { $order_by = "name"; } $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 ($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; } $order_side = ""; if (!($user_lvl || $server[$realm_id]["both_factions"])) { if ($core == 1) { $result = $sql["char"]->query("SELECT race FROM characters WHERE acct=" . $user_id . "\r\n AND SUBSTRING_INDEX(SUBSTRING_INDEX(playedtime, ' ', 2), ' ', -1)=(SELECT MAX(SUBSTRING_INDEX(SUBSTRING_INDEX(playedtime, ' ', 2), ' ', -1)) FROM characters WHERE acct=" . $user_id . ") LIMIT 1"); } else { $result = $sql["char"]->query("SELECT race FROM characters WHERE account=" . $user_id . "\r\n AND totaltime=(SELECT MAX(totaltime) FROM characters WHERE account=" . $user_id . ") LIMIT 1"); } if ($sql["char"]->num_rows($result)) { $order_side = in_array($sql["char"]->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 ($core == 1) { $result = $sql["char"]->query("SELECT guid, name, race, class, zoneid, mapid, level, characters.acct, gender,\r\n CAST( SUBSTRING_INDEX( SUBSTRING_INDEX( data, ';', " . (PLAYER_FIELD_HONOR_CURRENCY + 1) . " ), ';', -1 ) AS UNSIGNED ) AS highest_rank, lastip\r\n FROM characters\r\n LEFT JOIN `" . $logon_db["name"] . "`.accounts ON characters.acct=`" . $logon_db["name"] . "`.accounts.acct\r\n WHERE characters.online=1 " . $order_side . " ORDER BY " . $order_by . " " . $order_dir . " LIMIT " . $start . ", " . $itemperpage); } elseif ($core == 2) { $result = $sql["char"]->query("SELECT guid, name, race, class, zone AS zoneid, map AS mapid, level, account AS acct, gender,\r\n totalHonorPoints AS highest_rank, last_ip AS lastip\r\n FROM characters\r\n LEFT JOIN `" . $logon_db["name"] . "`.account ON characters.account=`" . $logon_db["name"] . "`.account.id\r\n WHERE characters.online=1 " . $order_side . " ORDER BY " . $order_by . " " . $order_dir . " LIMIT " . $start . ", " . $itemperpage); } else { $result = $sql["char"]->query("SELECT characters.guid, characters.name, race, class, zone AS zoneid, map AS mapid, level, account AS acct, gender,\r\n totalHonorPoints AS highest_rank, latency, last_ip AS lastip, guild.name AS gname\r\n FROM characters\r\n LEFT JOIN `" . $logon_db["name"] . "`.account ON characters.account=`" . $logon_db["name"] . "`.account.id\r\n LEFT JOIN guild_member ON characters.guid=guild_member.guid\r\n LEFT JOIN guild ON guild_member.guildid=guild.guildid\r\n WHERE characters.online=1 " . $order_side . " ORDER BY " . $order_by . " " . $order_dir . " LIMIT " . $start . ", " . $itemperpage); } $total_online = $sql["char"]->result($sql["char"]->query("SELECT count(*) FROM characters WHERE online= 1"), 0); $output .= ' <div class="div_lined center_text"> <span class="bold">' . lang("index", "tot_users_online") . ': ' . $total_online . '</span> </div>'; if ($total_online) { $output .= ' <table class="lined"> <tr> <td colspan="' . (9 - $showcountryflag) . '" align="right" class="hidden" style="width: 25%;">'; $output .= generate_pagination("index.php?start_m=" . $start_m . "&order_by=" . $order_hold . "&dir=" . ($dir ? 0 : 1), $total_online, $itemperpage, $start); $output .= ' </td> </tr> <tr> <th style="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 style="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 style="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 style="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 style="width: 1%;"> <a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=highest_rank&dir=' . $dir . '"' . ($order_by === "highest_rank" ? ' class="' . $order_dir . '"' : '') . '>' . lang("index", "rank") . '</a> </th> <th style="width: 15%;"> <a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=gname&dir=' . $dir . '"' . ($order_by === "gname" ? ' class="' . $order_dir . '"' : '') . '>' . lang("index", "guild") . '</a> </th> <th style="width: 20%;"> <a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=mapid&dir=' . $dir . '"' . ($order_by === "mapid, zoneid " ? ' class="' . $order_dir . '"' : '') . '>' . lang("index", "map") . '</a> </th> <th style="width: 25%;"> <a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=zoneid&dir=' . $dir . '"' . ($order_by === "zoneid, mapid " ? ' class="' . $order_dir . '"' : '') . '>' . lang("index", "zone") . '</a> </th>'; if ($core == 1) { $output .= ' <th style="width: 25%;"> <span>' . lang("index", "area") . '</span> </th>'; } // this_is_junk: MaNGOS doesn't store player latency if ($core != 2) { if (!$hide_plr_latency) { // this_is_junk: Trinity is the only core which can sort by Player Latency if ($core == 3) { $output .= ' <th style="width: 1%;"> <a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=latency&dir=' . $dir . '"' . ($order_by === "latency" ? ' class="' . $order_dir . '"' : '') . '> <img src="img/time.png" onmousemove="oldtoolTip(\'' . lang("index", "latency") . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt=""' . ($order_by === "latency" ? '' : ' style="position: relative; top: 7px;"') . ' /> </a> </th>'; } else { $output .= ' <th style="width: 1%;"> <img src="img/time.png" onmousemove="oldtoolTip(\'' . lang("index", "latency") . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" style="position: relative; top: 7px;" /> </th>'; } } } if ($showcountryflag) { require_once "libs/misc_lib.php"; $output .= ' <th style="width: 1%;"> <a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=lastip&dir=' . $dir . '"' . ($order_by === "lastip" ? ' class="' . $order_dir . '"' : '') . '> <img src="img/world.png" onmousemove="oldtoolTip(\'' . lang("global", "country") . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt=""' . ($order_by === "lastip" ? '' : ' style="position: relative; top: 7px;"') . ' /> </a> </th>'; } $output .= ' </tr>'; } while ($char = $sql["char"]->fetch_assoc($result)) { if ($core == 1) { $ca_query = "SELECT accounts.login AS name FROM `" . $logon_db["name"] . "`.accounts LEFT JOIN `" . $corem_db["name"] . "`.config_accounts ON accounts.login=`" . $corem_db["name"] . "`.config_accounts.Login COLLATE utf8_unicode_ci WHERE acct='" . $char["acct"] . "'"; } else { $ca_query = "SELECT *, username AS name FROM `" . $logon_db["name"] . "`.account LEFT JOIN `" . $corem_db["name"] . "`.config_accounts ON account.username=`" . $corem_db["name"] . "`.config_accounts.Login WHERE id='" . $char["acct"] . "'"; } $ca_result = $sql["mgr"]->query($ca_query); $char_acct = $sql["mgr"]->fetch_assoc($ca_result); $gm = $char_acct["SecurityLevel"]; if (!isset($gm)) { $gm = 0; } if ($core == 1) { $guild_id = $sql["char"]->result($sql["char"]->query("SELECT guildid FROM guild_data WHERE playerid='" . $char["guid"] . "'"), 0); } else { $guild_id = $sql["char"]->result($sql["char"]->query("SELECT guildid FROM guild_member WHERE guid='" . $char["guid"] . "'"), 0); } if ($core == 1) { $guild_name_query = "SELECT guildName FROM guilds WHERE guildid='" . $guild_id . "'"; } else { $guild_name_query = "SELECT name AS guildName FROM guild WHERE guildid='" . $guild_id . "'"; } $guild_name_result = $sql["char"]->query($guild_name_query); $guild_name = $sql["char"]->fetch_assoc($guild_name_result); $guild_name = $guild_name["guildName"]; $output .= ' <tr> <td>'; if ($user_lvl > 0 && ($user_lvl >= gmlevel($gm) || $user_lvl == $action_permission["delete"])) { $output .= ' <a href="char.php?id=' . $char["guid"] . '"> <span onmousemove="oldtoolTip(\'' . htmlspecialchars($char_acct["name"]) . ' (' . id_get_gm_level($gm) . ')' . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()">' . htmlentities($char["name"], ENT_COMPAT, $site_encoding) . '</span> </a>'; } else { $output .= ' <span>' . htmlentities($char["name"], ENT_COMPAT, $site_encoding) . '</span>'; } $output .= ' </td> <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>' . char_get_level_color($char["level"]) . '</td> <td> <span onmouseover="oldtoolTip(\'' . char_get_pvp_rank_name($char["highest_rank"], char_get_side_id($char["race"])) . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" id="index_delete_cursor"><img src="img/ranks/rank' . char_get_pvp_rank_id($char["highest_rank"], char_get_side_id($char["race"])) . '.gif" alt="" /></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 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>'; // display player area, if available if ($core == 1) { for ($i = 0; $i < count($stats["plrs_area"]); $i++) { if ($stats["plrs_area"][$i][0] == $char["name"]) { $output .= ' <td> <span onmousemove="toolTip(\'AreaID:' . $stats["plrs_area"][$i][1] . '\', \'item_tooltip\')" onmouseout="toolTip()">' . get_zone_name($stats["plrs_area"][$i][1]) . '</span> </td>'; } if (!isset($stats["plrs_lat"][$i][1])) { $output .= ' <td>-</td>'; } } } // display player latency, if enabled, and if available if (!$hide_plr_latency) { if ($core == 1) { for ($i = 0; $i < count($stats["plrs_lat"]); $i++) { if ($stats["plrs_lat"][$i][0] == $char["name"]) { $output .= ' <td>' . $stats["plrs_lat"][$i][1] . '</td>'; } if (!isset($stats["plrs_lat"][$i][1])) { $output .= ' <td>-</td>'; } } } else { // this_is_junk: MaNGOS doesn't store player latency if ($core == 3) { $output .= ' <td>' . $char["latency"] . '</td>'; } } } if ($showcountryflag) { $country = misc_get_country_by_ip($char["lastip"]); $output .= ' <td>' . ($country["code"] ? '<img src="img/flags/' . $country["code"] . '.png" onmousemove="oldtoolTip(\'' . $country["country"] . ($user_lvl >= $action_permission["update"] ? '<br />' . $country["actualip"] : '') . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" />' : '-') . '</td>'; } $output .= ' </tr>'; } if ($total_online) { $output .= ' <tr>'; $output .= ' <td colspan="' . (9 - $showcountryflag) . '" align="right" class="hidden" style="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> </table>'; } $output .= ' <br />'; unset($total_online); } }
function top100($realm_id) { global $output, $logon_db, $characters_db, $dbc_db, $server, $itemperpage, $developer_test_mode, $multi_realm_mode, $sql, $core, $site_encoding, $n_realms; $sql["char"]->connect($characters_db[$realm_id]["addr"], $characters_db[$realm_id]["user"], $characters_db[$realm_id]["pass"], $characters_db[$realm_id]["name"], $characters_db[$realm_id]["encoding"]); //==========================$_GET and SECURE======================== $type = isset($_GET["type"]) ? $sql["char"]->quote_smart($_GET["type"]) : "level"; if (!preg_match("/^[_[:lower:]]{1,10}\$/", $type)) { $type = "level"; } $start = isset($_GET["start"]) ? $sql["char"]->quote_smart($_GET["start"]) : 0; if (!is_numeric($start)) { $start = 0; } $order_by = isset($_GET["order_by"]) ? $sql["char"]->quote_smart($_GET["order_by"]) : "level"; if (!preg_match("/^[_[:lower:]]{1,14}\$/", $order_by)) { $order_by = "level"; } // Top 100 should sort DESC by default... $dir = isset($_GET["dir"]) ? $sql["char"]->quote_smart($_GET["dir"]) : 0; if (!preg_match("/^[01]{1}\$/", $dir)) { $dir = 1; } $order_dir = $dir ? "ASC" : "DESC"; $dir = $dir ? 0 : 1; //==========================$_GET and SECURE end======================== $type_list = array("level", "stat", "defense", "attack", "resist", "crit_hit", "pvp"); if (!in_array($type, $type_list)) { $type = "level"; } $result = $sql["char"]->query("SELECT count(*) FROM characters"); $all_record = $sql["char"]->result($result, 0); $all_record = $all_record < 100 ? $all_record : 100; if ($core == 1) { // this_is_junk: rage and runic are both stored *10 $result = $sql["char"]->query("SELECT guid, name, race, class, gender, level, online, gold,\r\n SUBSTRING_INDEX(SUBSTRING_INDEX(playedtime, ' ', 2), ' ', -1) AS totaltime,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (PLAYER_GUILDID + 1) . "), ';', -1) AS UNSIGNED) AS gname,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (UNIT_FIELD_MAXHEALTH + 1) . "), ';', -1) AS UNSIGNED) AS health,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (UNIT_FIELD_MAXPOWER1 + 1) . "), ';', -1) AS UNSIGNED) AS mana,\r\n (CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (UNIT_FIELD_MAXPOWER2 + 1) . "), ';', -1) AS UNSIGNED) DIV 10) AS rage,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (UNIT_FIELD_MAXPOWER4 + 1) . "), ';', -1) AS UNSIGNED) AS energy,\r\n (CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (UNIT_FIELD_MAXPOWER7 + 1) . "), ';', -1) AS UNSIGNED) DIV 10) AS runic,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (UNIT_FIELD_STAT0 + 1) . "), ';', -1) AS UNSIGNED) AS str,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (UNIT_FIELD_STAT1 + 1) . "), ';', -1) AS UNSIGNED) AS agi,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (UNIT_FIELD_STAT2 + 1) . "), ';', -1) AS UNSIGNED) AS sta,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (UNIT_FIELD_STAT3 + 1) . "), ';', -1) AS UNSIGNED) AS intel,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (UNIT_FIELD_STAT4 + 1) . "), ';', -1) AS UNSIGNED) AS spi,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (UNIT_FIELD_RESISTANCES + 1) . "), ';', -1) AS UNSIGNED) AS armor,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (PLAYER_BLOCK_PERCENTAGE + 1) . "), ';', -1) AS UNSIGNED) AS block,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (PLAYER_DODGE_PERCENTAGE + 1) . "), ';', -1) AS UNSIGNED) AS dodge,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (PLAYER_PARRY_PERCENTAGE + 1) . "), ';', -1) AS UNSIGNED) AS parry,\r\n (CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (UNIT_FIELD_ATTACK_POWER + 1) . "), ';', -1) AS UNSIGNED)\r\n + CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (UNIT_FIELD_ATTACK_POWER_MODS + 1) . "), ';', -1) AS UNSIGNED)) AS ap,\r\n (CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (UNIT_FIELD_RANGED_ATTACK_POWER + 1) . "), ';', -1) AS UNSIGNED)\r\n + CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (UNIT_FIELD_RANGED_ATTACK_POWER_MODS + 1) . "), ';', -1) AS UNSIGNED)) AS ranged_ap,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (UNIT_FIELD_MINDAMAGE + 1) . "), ';', -1) AS UNSIGNED) AS min_dmg,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (UNIT_FIELD_MAXDAMAGE + 1) . "), ';', -1) AS UNSIGNED) AS max_dmg,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (UNIT_FIELD_MINRANGEDDAMAGE + 1) . "), ';', -1) AS UNSIGNED) AS min_ranged_dmg,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (UNIT_FIELD_MAXRANGEDDAMAGE + 1) . "), ';', -1) AS UNSIGNED) AS max_ranged_dmg,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (PLAYER_EXPERTISE + 1) . "), ';', -1) AS UNSIGNED) AS expertise,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (PLAYER_OFFHAND_EXPERTISE + 1) . "), ';', -1) AS UNSIGNED) AS off_expertise,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (UNIT_FIELD_RESISTANCES + 1 + 1) . "), ';', -1) AS UNSIGNED) AS holy,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (UNIT_FIELD_RESISTANCES + 2 + 1) . "), ';', -1) AS UNSIGNED) AS fire,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (UNIT_FIELD_RESISTANCES + 3 + 1) . "), ';', -1) AS UNSIGNED) AS nature,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (UNIT_FIELD_RESISTANCES + 4 + 1) . "), ';', -1) AS UNSIGNED) AS frost,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (UNIT_FIELD_RESISTANCES + 5 + 1) . "), ';', -1) AS UNSIGNED) AS shadow,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (UNIT_FIELD_RESISTANCES + 6 + 1) . "), ';', -1) AS UNSIGNED) AS arcane,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (PLAYER_CRIT_PERCENTAGE + 1) . "), ';', -1) AS UNSIGNED) AS melee_crit,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (PLAYER_RANGED_CRIT_PERCENTAGE + 1) . "), ';', -1) AS UNSIGNED) AS range_crit,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (PLAYER_FIELD_COMBAT_RATING_1 + 7) . "), ';', -1) AS UNSIGNED) AS melee_hit,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (PLAYER_FIELD_COMBAT_RATING_1 + 6) . "), ';', -1) AS UNSIGNED) AS range_hit,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (PLAYER_FIELD_COMBAT_RATING_1 + 5) . "), ';', -1) AS UNSIGNED) AS spell_hit,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (PLAYER_FIELD_HONOR_CURRENCY + 1) . "), ';', -1) AS UNSIGNED) AS honor,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (PLAYER_FIELD_LIFETIME_HONORBALE_KILLS + 1) . "), ';', -1) AS UNSIGNED) AS kills,\r\n CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ';', " . (PLAYER_FIELD_ARENA_CURRENCY + 1) . "), ';', -1) AS UNSIGNED) AS arena,\r\n IFNULL((SELECT SUM(points) FROM character_achievement LEFT JOIN `" . $dbc_db["name"] . "`.achievement ON `" . $dbc_db["name"] . "`.achievement.id=character_achievement.achievement WHERE character_achievement.guid=characters.guid),0) AS ach_points\r\n FROM characters \r\n ORDER BY " . $order_by . " " . $order_dir . " LIMIT " . $start . ", " . $itemperpage); } elseif ($core == 2) { $query = "SELECT characters.guid, characters.name, characters.race, characters.class, characters.gender, characters.level, \r\n characters.totaltime, characters.online, characters.money AS gold, health,\r\n power1 AS mana,\r\n power2 AS rage,\r\n power4 AS energy,\r\n power7 AS runic,\r\n\t\t\t\t\t\t\tcharacters.arenaPoints AS arena, characters.totalHonorPoints AS honor, characters.totalKills AS kills,\r\n strength AS str,\r\n agility AS agi,\r\n stamina AS sta,\r\n intellect AS intel,\r\n spirit AS spi,\r\n armor AS armor,\r\n blockPct AS block,\r\n dodgePct AS dodge,\r\n parryPct AS parry,\r\n attackPower AS ap,\r\n rangedAttackPower AS ranged_ap,\r\n power2 AS min_dmg,\r\n power3 AS max_dmg,\r\n power4 AS min_ranged_dmg,\r\n power5 AS max_ranged_dmg,\r\n power6 AS expertise,\r\n power7 AS off_expertise,\r\n resHoly AS holy,\r\n resFire AS fire,\r\n resNature AS nature,\r\n resFrost AS frost,\r\n resShadow AS shadow,\r\n resArcane AS arcane,\r\n critPct AS melee_crit,\r\n rangedCritPct AS range_crit,\r\n power1 AS melee_hit,\r\n power2 AS range_hit,\r\n power3 AS spell_hit,\r\n IFNULL((SELECT SUM(points) FROM character_achievement LEFT JOIN `" . $dbc_db["name"] . "`.achievement ON `" . $dbc_db["name"] . "`.achievement.id=character_achievement.achievement WHERE character_achievement.guid=characters.guid),0) AS ach_points\r\n FROM characters\r\n LEFT JOIN character_stats ON character_stats.guid=characters.guid\r\n ORDER BY " . $order_by . " " . $order_dir . " LIMIT " . $start . ", " . $itemperpage; $result = $sql["char"]->query($query); } else { $query = "SELECT characters.guid, characters.name, race, class, gender, level, \r\n totaltime, online, money AS gold, health,\r\n power1 AS mana,\r\n power2 AS rage,\r\n power4 AS energy,\r\n power7 AS runic,\r\n\t\t\t\t\t\t\tarenaPoints AS arena, totalHonorPoints AS honor, totalKills AS kills,\r\n strength AS str,\r\n agility AS agi,\r\n stamina AS sta,\r\n intellect AS intel,\r\n spirit AS spi,\r\n armor AS armor,\r\n blockPct AS block,\r\n dodgePct AS dodge,\r\n parryPct AS parry,\r\n attackPower AS ap,\r\n rangedAttackPower AS ranged_ap,\r\n power2 AS min_dmg,\r\n power3 AS max_dmg,\r\n power4 AS min_ranged_dmg,\r\n power5 AS max_ranged_dmg,\r\n power6 AS expertise,\r\n power7 AS off_expertise,\r\n resHoly AS holy,\r\n resFire AS fire,\r\n resNature AS nature,\r\n resFrost AS frost,\r\n resShadow AS shadow,\r\n resArcane AS arcane,\r\n critPct AS melee_crit,\r\n rangedCritPct AS range_crit,\r\n power1 AS melee_hit,\r\n power2 AS range_hit,\r\n power3 AS spell_hit,\r\n IFNULL((SELECT SUM(points) FROM character_achievement LEFT JOIN `" . $dbc_db["name"] . "`.achievement ON `" . $dbc_db["name"] . "`.achievement.id=character_achievement.achievement WHERE character_achievement.guid=characters.guid),0) AS ach_points\r\n FROM characters\r\n LEFT JOIN character_stats ON character_stats.guid=characters.guid\r\n ORDER BY " . $order_by . " " . $order_dir . " LIMIT " . $start . ", " . $itemperpage; $result = $sql["char"]->query($query); } //==========================top tage navigaion starts here======================== $output .= ' <div class="tab"> <ul> <li' . ($type == "level" ? ' class="selected"' : '') . '> <a href="top100.php?n_realms=' . $n_realms . '&start=' . $start . '"> ' . lang("top", "general") . ' </a> </li> <li' . ($type == "stat" ? ' class="selected"' : '') . '> <a href="top100.php?n_realms=' . $n_realms . '&start=' . $start . '&type=stat&order_by=health"> ' . lang("top", "stats") . ' </a> </li> <li' . ($type == "defense" ? ' class="selected"' : '') . '> <a href="top100.php?n_realms=' . $n_realms . '&start=' . $start . '&type=defense&order_by=armor"> ' . lang("top", "defense") . ' </a> </li> <li' . ($type == "resist" ? ' class="selected"' : '') . '> <a href="top100.php?n_realms=' . $n_realms . '&start=' . $start . '&type=resist&order_by=holy"> ' . lang("top", "resist") . ' </a> </li> <li' . ($type == "attack" ? ' class="selected"' : '') . '> <a href="top100.php?n_realms=' . $n_realms . '&start=' . $start . '&type=attack&order_by=ap"> ' . lang("top", "melee") . ' </a> </li> <li' . ($type == "crit_hit" ? ' class="selected"' : '') . '> <a href="top100.php?n_realms=' . $n_realms . '&start=' . $start . '&type=crit_hit&order_by=ranged_ap"> ' . lang("top", "ranged") . ' </a> </li> <li' . ($type == "pvp" ? ' class="selected"' : '') . '> <a href="top100.php?n_realms=' . $n_realms . '&start=' . $start . '&type=pvp&order_by=honor"> ' . lang("top", "pvp") . ' </a> </li> </ul> </div> <div class="tab_content center"> <table class="top_hidden" id="top100_realms">'; $output .= ' <tr> <td align="right">Total: ' . $all_record . '</td> <td align="right" style="width: 25%;">'; $output .= generate_pagination('top100.php?type=' . $type . '&order_by=' . $order_by . '&dir=' . ($dir ? 0 : 1) . '', $all_record, $itemperpage, $start); $output .= ' </td> </tr> </table>'; //==========================top tage navigaion ENDS here ======================== $output .= ' <table class="lined" id="' . ($type == "level" ? 'top100_mainlist_wide' : 'top100_mainlist') . '"> <tr> <th style="width: 5%;">#</th> <th style="width: 14%;">' . lang("top", "name") . '</th> <th style="width: 5%;">' . lang("top", "race") . '</th> <th style="width: 5%;">' . lang("top", "class") . '</th> <th style="width: 8%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=level&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "level" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "level") . '</a></th>'; if ($type == "level") { $output .= ' <th style="width: 5%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=ach_points&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "ach_points" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "ach_points") . '</a></th> <th style="width: 22%;">' . lang("top", "guild") . '</th> <th style="width: 20%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=gold&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "gold" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "money") . '</a></th> <th style="width: 20%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=totaltime&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "totaltime" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "time_played") . '</a></th>'; } elseif ($type == "stat") { $output .= ' <th style="width: 11%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=health&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "health" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "health") . '</a></th> <th style="width: 10%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=mana&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "mana" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "mana") . '</a></th> <th style="width: 9%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=str&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "str" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "str") . '</a></th> <th style="width: 8%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=agi&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "agi" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "agi") . '</a></th> <th style="width: 8%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=sta&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "sta" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "sta") . '</a></th> <th style="width: 8%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=intel&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "intel" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "intel") . '</a></th> <th style="width: 8%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=spi&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "spi" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "spi") . '</a></th>'; } elseif ($type == "defense") { $output .= ' <th style="width: 16%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=armor&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "armor" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "armor") . '</a></th> <th style="width: 16%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=block&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "block" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "block") . '</a></th> <th style="width: 15%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=dodge&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "dodge" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "dodge") . '</a></th> <th style="width: 15%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=parry&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "parry" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "parry") . '</a></th>'; } elseif ($type == "resist") { $output .= ' <th style="width: 10%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=holy&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "holy" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "holy") . '</a></th> <th style="width: 10%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=fire&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "fire" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "fire") . '</a></th> <th style="width: 10%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=nature&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "nature" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "nature") . '</a></th> <th style="width: 10%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=frost&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "frost" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "frost") . '</a></th> <th style="width: 11%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=shadow&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "shadow" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "shadow") . '</a></th> <th style="width: 11%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=arcane&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "arcane" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "arcane") . '</a></th>'; } elseif ($type == "attack") { $output .= ' <th style="width: 20%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=ap&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "ap" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "ap") . '</a></th> <th style="width: 6%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=min_dmg&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "min_dmg" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "min_dmg") . '</a></th> <th style="width: 6%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=max_dmg&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "max_dmg" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "max_dmg") . '</a></th> <th style="width: 10%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=melee_crit&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "melee_crit" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "crit") . '</a></th> <th style="width: 5%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=melee_hit&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "melee_hit" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "hit") . '</a></th> <th style="width: 5%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=expertise&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "expertise" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "expertise") . '</a></th> <th style="width: 9%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=off_expertise&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "off_expertise" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "off_expertise") . '</a></th>'; } elseif ($type == "crit_hit") { $output .= ' <th style="width: 18%"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=ranged_ap&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "ranged_ap" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "ap") . '</a></th> <th style="width: 12%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=min_ranged_dmg&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "min_ranged_dmg" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "min_dmg") . '</a></th> <th style="width: 12%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=max_ranged_dmg&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "max_ranged_dmg" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "max_dmg") . '</a></th> <th style="width: 10%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=range_crit&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "range_crit" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "crit") . '</a></th> <th style="width: 10%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=range_hit&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "range_hit" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "hit") . '</a></th>'; } elseif ($type == "pvp") { $output .= ' <th style="width: 20%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=honor&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "honor" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "rank") . '</a></th> <th style="width: 14%;">' . lang("top", "honor_points") . '</th> <th style="width: 14%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=kills&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "kills" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "kills") . '</a></th> <th style="width: 14%;"><a href="top100.php?n_realms=' . $n_realms . '&type=' . $type . '&order_by=arena&start=' . $start . '&dir=' . $dir . '"' . ($order_by == "arena" ? ' class="' . $order_dir . '"' : '') . '>' . lang("top", "arena_points") . '</a></th>'; } $output .= ' </tr>'; $i = 0; while ($char = $sql["char"]->fetch_assoc($result)) { // MaNGOS & Trinity don't save guild info on the character if ($core != 1) { $g_query = "SELECT * FROM guild_member WHERE guid='" . $char["guid"] . "'"; $g_result = $sql["char"]->query($g_query); $guildinfo = $sql["char"]->fetch_assoc($g_result); $char["gname"] = $guildinfo["guildid"]; } $output .= ' <tr valign="top"> <td>' . (++$i + $start) . '</td> <td><a href="char.php?id=' . $char["guid"] . '&realm=' . $realm_id . '">' . htmlentities($char["name"], ENT_COMPAT, $site_encoding) . '</a></td> <td> <img src="img/c_icons/' . $char["race"] . '-' . $char["gender"] . '.gif" alt="' . char_get_race_name($char["race"]) . '" onmousemove="toolTip(\'' . char_get_race_name($char["race"]) . '\', \'item_tooltip\')" onmouseout="toolTip()" /> </td> <td> <img src="img/c_icons/' . $char["class"] . '.gif" alt="' . char_get_class_name($char["class"]) . '" onmousemove="toolTip(\'' . char_get_class_name($char["class"]) . '\', \'item_tooltip\')" onmouseout="toolTip()" /> </td> <td>' . char_get_level_color($char["level"]) . '</td>'; if ($type == "level") { 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 . "'"), 0); } 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 AS guildname FROM guild WHERE guildid = '" . $guild_id . "'"), 0); } $days = floor(round($char["totaltime"] / 3600) / 24); $hours = round($char["totaltime"] / 3600) - $days * 24; $time = ''; if ($days) { $time .= $days . ' days '; } if ($hours) { $time .= $hours . ' hours'; } $output .= ' <td>' . $char["ach_points"] . '</td> <td><a href="guild.php?action=view_guild&realm=' . $realm_id . '&error=3&id=' . $guild_name . '">' . htmlentities($guild_name, ENT_COMPAT, $site_encoding) . '</a></td> <td align="right"> ' . substr($char["gold"], 0, -4) . '<img src="img/gold.gif" alt="" style="position: relative; bottom: -6px;" /> ' . substr($char["gold"], -4, 2) . '<img src="img/silver.gif" alt="" style="position: relative; bottom: -6px;" /> ' . substr($char["gold"], -2) . '<img src="img/copper.gif" alt="" style="position: relative; bottom: -6px;" /> </td> <td align="right">' . $time . '</td>'; } elseif ($type == "stat") { switch ($char["class"]) { case 1: // Warrior $output .= ' <td>' . $char["health"] . '</td> <td>' . $char["rage"] . '</td> <td>' . $char["str"] . '</td> <td>' . $char["agi"] . '</td> <td>' . $char["sta"] . '</td> <td>' . $char["intel"] . '</td> <td>' . $char["spi"] . '</td>'; break; case 2: //Paladin $output .= ' <td>' . $char["health"] . '</td> <td>' . $char["mana"] . '</td> <td>' . $char["str"] . '</td> <td>' . $char["agi"] . '</td> <td>' . $char["sta"] . '</td> <td>' . $char["intel"] . '</td> <td>' . $char["spi"] . '</td>'; break; case 3: //Hunter $output .= ' <td>' . $char["health"] . '</td> <td>' . $char["mana"] . '</td> <td>' . $char["str"] . '</td> <td>' . $char["agi"] . '</td> <td>' . $char["sta"] . '</td> <td>' . $char["intel"] . '</td> <td>' . $char["spi"] . '</td>'; break; case 4: //Rogue $output .= ' <td>' . $char["health"] . '</td> <td>' . $char["energy"] . '</td> <td>' . $char["str"] . '</td> <td>' . $char["agi"] . '</td> <td>' . $char["sta"] . '</td> <td>' . $char["intel"] . '</td> <td>' . $char["spi"] . '</td>'; break; case 5: //Priest $output .= ' <td>' . $char["health"] . '</td> <td>' . $char["mana"] . '</td> <td>' . $char["str"] . '</td> <td>' . $char["agi"] . '</td> <td>' . $char["sta"] . '</td> <td>' . $char["intel"] . '</td> <td>' . $char["spi"] . '</td>'; break; case 6: //Death Knight $output .= ' <td>' . $char["health"] . '</td> <td>' . $char["runic"] . '</td> <td>' . $char["str"] . '</td> <td>' . $char["agi"] . '</td> <td>' . $char["sta"] . '</td> <td>' . $char["intel"] . '</td> <td>' . $char["spi"] . '</td>'; break; case 7: //Shaman $output .= ' <td>' . $char["health"] . '</td> <td>' . $char["mana"] . '</td> <td>' . $char["str"] . '</td> <td>' . $char["agi"] . '</td> <td>' . $char["sta"] . '</td> <td>' . $char["intel"] . '</td> <td>' . $char["spi"] . '</td>'; break; case 8: //Mage $output .= ' <td>' . $char["health"] . '</td> <td>' . $char["mana"] . '</td> <td>' . $char["str"] . '</td> <td>' . $char["agi"] . '</td> <td>' . $char["sta"] . '</td> <td>' . $char["intel"] . '</td> <td>' . $char["spi"] . '</td>'; break; case 9: //Warlock $output .= ' <td>' . $char["health"] . '</td> <td>' . $char["mana"] . '</td> <td>' . $char["str"] . '</td> <td>' . $char["agi"] . '</td> <td>' . $char["sta"] . '</td> <td>' . $char["intel"] . '</td> <td>' . $char["spi"] . '</td>'; break; case 7: //Druid $output .= ' <td>' . $char["health"] . '</td> <td>' . $char["mana"] . '</td> <td>' . $char["str"] . '</td> <td>' . $char["agi"] . '</td> <td>' . $char["sta"] . '</td> <td>' . $char["intel"] . '</td> <td>' . $char["spi"] . '</td>'; break; } } elseif ($type == "defense") { $block = unpack("f", pack("L", $char["block"])); $block = round($block[1], 2); $dodge = unpack("f", pack("L", $char["dodge"])); $dodge = round($dodge[1], 2); $parry = unpack("f", pack("L", $char["parry"])); $parry = round($parry[1], 2); $output .= ' <td>' . $char["armor"] . '</td> <td>' . $block . '%</td> <td>' . $dodge . '%</td> <td>' . $parry . '%</td>'; } elseif ($type == "resist") { $output .= ' <td>' . $char["holy"] . '</td> <td>' . $char["fire"] . '</td> <td>' . $char["nature"] . '</td> <td>' . $char["frost"] . '</td> <td>' . $char["shadow"] . '</td> <td>' . $char["arcane"] . '</td>'; } elseif ($type == "attack") { $melee = unpack("f", pack("L", $char["melee_crit"])); $melee = round($melee[1], 2); $mindamage = unpack("f", pack("L", $char["min_dmg"])); $mindamage = round($mindamage[1], 0); $maxdamage = unpack("f", pack("L", $char["max_dmg"])); $maxdamage = round($maxdamage[1], 0); $output .= ' <td>' . $char["ap"] . '</td> <td>' . $mindamage . '</td> <td>' . $maxdamage . '</td> <td>' . $melee . '%</td> <td>' . $char["melee_hit"] . '</td> <td>' . $char["expertise"] . '</td> <td>' . $char["off_expertise"] . '</td>'; } elseif ($type == "crit_hit") { $range = unpack("f", pack("L", $char["range_crit"])); $range = round($range[1], 2); $minrangeddamage = unpack("f", pack("L", $char["min_ranged_dmg"])); $minrangeddamage = round($minrangeddamage[1], 0); $maxrangeddamage = unpack("f", pack("L", $char["max_ranged_dmg"])); $maxrangeddamage = round($maxrangeddamage[1], 0); $output .= ' <td>' . $char["ranged_ap"] . '</td> <td>' . $minrangeddamage . '</td> <td>' . $maxrangeddamage . '</td> <td>' . $range . '%</td> <td>' . $char["range_hit"] . '</td>'; } elseif ($type == "pvp") { $output .= ' <td align="left"><img src="img/ranks/rank' . char_get_pvp_rank_id($char["honor"], char_get_side_id($char["race"])) . '.gif" alt=""></img> ' . char_get_pvp_rank_name($char["honor"], char_get_side_id($char["race"])) . '</td> <td>' . $char["honor"] . '</td> <td>' . $char["kills"] . '</td> <td>' . $char["arena"] . '</td>'; } $output .= ' </tr>'; } $output .= ' </table> <table class="top_hidden" id="top100_total_etc"> <tr> <td align="right">Total: ' . $all_record . '</td> <td align="right" style="width: 25%;">'; $output .= generate_pagination('top100.php?type=' . $type . '&order_by=' . $order_by . '&dir=' . ($dir ? 0 : 1) . '', $all_record, $itemperpage, $start); unset($all_record); $output .= ' </td> </tr> </table> </div> <br />'; }
<?php require_once "header.php"; require_once "libs/char_lib.php"; valid_login($action_permission['read']); //global $lang_honor, $lang_global, $output, $characters_db, $realm_id, $itemperpage, $realm_db; $sql = new SQL(); $sql->connect($characters_db[$realm_id]['addr'], $characters_db[$realm_id]['user'], $characters_db[$realm_id]['pass'], $characters_db[$realm_id]['name']); $start = isset($_GET['start']) ? $sql->quote_smart($_GET['start']) : 0; $order_by = isset($_GET['order_by']) ? $sql->quote_smart($_GET['order_by']) : "honor"; $query = $sql->query("SELECT C.guid, C.name, C.race, C.class, C.totalHonorPoints AS honor , C.totalKills AS kills, C.level, C.arenaPoints AS arena, COALESCE(guild_member.guildid,0) as GNAME, C.gender FROM characters C LEFT JOIN guild_member ON C.guid = guild_member.guid WHERE race in (1,3,4,7,11) ORDER BY {$order_by} DESC LIMIT 25;"); $this_page = $sql->num_rows($query); $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 style=\"width: 776px;\">\r\n <legend><img src='img/alliance.gif' /></legend>\r\n <table class=\"lined\" style=\"width: 705px;\">\r\n <tr class=\"bold\">\r\n <td colspan=\"11\">{$lang_honor['allied']} {$lang_honor['browse_honor']}</td>\r\n </tr>\r\n <tr>\r\n <th width=\"30%\">{$lang_honor['guid']}</th>\r\n <th width=\"7%\">{$lang_honor['race']}</th>\r\n <th width=\"7%\">{$lang_honor['class']}</th>\r\n <th width=\"7%\">{$lang_honor['level']}</th>\r\n <th width=\"5%\"><a href=\"honor.php?order_by=honor\"" . ($order_by == 'honor' ? " class=DESC" : "") . ">{$lang_honor['honor']}</a></th>\r\n <th width=\"5%\"><a href=\"honor.php?order_by=honor\"" . ($order_by == 'honor' ? " class=DESC" : "") . ">{$lang_honor['honor points']}</a></th>\r\n <th width=\"5%\"><a href=\"honor.php?order_by=kills\"" . ($order_by == 'kills' ? " class=DESC" : "") . ">Kills</a></th>\r\n <th width=\"5%\"><a href=\"honor.php?order_by=arena\"" . ($order_by == 'arena' ? " class=DESC" : "") . ">AP</a></th>\r\n <th width=\"30%\">{$lang_honor['guild']}</th>\r\n </tr>"; while ($char = $sql->fetch_row($query)) { $guild_name = $sql->fetch_row($sql->query("SELECT `name` FROM `guild` WHERE `guildid`=" . $char[8] . ";")); $output .= "\r\n <tr>\r\n <td><a href=\"char.php?id={$char['0']}\">" . htmlentities($char[1]) . "</a></td>\r\n <td><img src='img/c_icons/{$char[2]}-{$char[9]}.gif' onmousemove='toolTip(\"" . char_get_race_name($char[2]) . "\",\"item_tooltip\")' onmouseout='toolTip()'></td>\r\n <td><img src='img/c_icons/{$char[3]}.gif' onmousemove='toolTip(\"" . char_get_class_name($char[3]) . "\",\"item_tooltip\")' onmouseout='toolTip()'></td>\r\n <td>" . char_get_level_color($char[6]) . "</td>\r\n <td><span onmouseover='toolTip(\"" . char_get_pvp_rank_name($char[4], char_get_side_id($char[2])) . "\",\"item_tooltip\")' onmouseout='toolTip()' style='color: white;'><img src='img/ranks/rank" . char_get_pvp_rank_id($char[4], char_get_side_id($char[2])) . ".gif'></span></td>\r\n <td>{$char['4']}</td>\r\n <td>{$char['5']}</td>\r\n <td>{$char['7']}</td>\r\n <td><a href=\"guild.php?action=view_guild&error=3&id={$char['8']}\">" . htmlentities($guild_name[0]) . "</a></td>\r\n </tr>"; } $output .= "\r\n </table>\r\n <br />\r\n </fieldset>"; $query = $sql->query("SELECT C.guid, C.name, C.race, C.class, C.todayHonorPoints AS honor , C.totalKills AS kills, C.level, C.arenaPoints AS arena, COALESCE(guild_member.guildid,0) as GNAME, C.gender FROM characters C LEFT JOIN guild_member ON C.guid = guild_member.guid WHERE race not in (1,3,4,7,11) ORDER BY {$order_by} DESC LIMIT 25;"); $this_page = $sql->num_rows($query); $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 style=\"width: 776px;\">\r\n <legend><img src='img/horde.gif' /></legend>\r\n <table class=\"lined\" style=\"width: 705px;\">\r\n <tr class=\"bold\">\r\n <td colspan=\"11\">{$lang_honor['horde']} {$lang_honor['browse_honor']}</td>\r\n </tr>\r\n <tr>\r\n <th width=\"30%\">{$lang_honor['guid']}</th>\r\n <th width=\"7%\">{$lang_honor['race']}</th>\r\n <th width=\"7%\">{$lang_honor['class']}</th>\r\n <th width=\"7%\">{$lang_honor['level']}</th>\r\n <th width=\"5%\"><a href=\"honor.php?order_by=honor\"" . ($order_by == 'honor' ? " class=DESC" : "") . ">{$lang_honor['honor']}</a></th>\r\n <th width=\"5%\"><a href=\"honor.php?order_by=honor\"" . ($order_by == 'honor' ? " class=DESC" : "") . ">{$lang_honor['honor points']}</a></th>\r\n <th width=\"5%\"><a href=\"honor.php?order_by=kills\"" . ($order_by == 'kills' ? " class=DESC" : "") . ">Kills</a></th>\r\n <th width=\"5%\"><a href=\"honor.php?order_by=arena\"" . ($order_by == 'arena' ? " class=DESC" : "") . ">AP</a></th>\r\n <th width=\"30%\">{$lang_honor['guild']}</th>\r\n </tr>"; while ($char = $sql->fetch_row($query)) { $guild_name = $sql->fetch_row($sql->query("SELECT `name` FROM `guild` WHERE `guildid`=" . $char[8] . ";")); $output .= "\r\n <tr>\r\n <td><a href=\"char.php?id={$char['0']}\">" . htmlentities($char[1]) . "</a></td>\r\n <td><img src='img/c_icons/{$char[2]}-{$char[9]}.gif' onmousemove='toolTip(\"" . char_get_race_name($char[2]) . "\",\"item_tooltip\")' onmouseout='toolTip()'></td>\r\n <td><img src='img/c_icons/{$char[3]}.gif' onmousemove='toolTip(\"" . char_get_class_name($char[3]) . "\",\"item_tooltip\")' onmouseout='toolTip()'></td>\r\n <td>" . char_get_level_color($char[6]) . "</td>\r\n <td><span onmouseover='toolTip(\"" . char_get_pvp_rank_name($char[4], char_get_side_id($char[2])) . "\",\"item_tooltip\")' onmouseout='toolTip()' style='color: white;'><img src='img/ranks/rank" . char_get_pvp_rank_id($char[4], char_get_side_id($char[2])) . ".gif'></span></td>\r\n <td>{$char['4']}</td>\r\n <td>{$char['5']}</td>\r\n <td>{$char['7']}</td>\r\n <td><a href=\"guild.php?action=view_guild&error=3&id={$char['8']}\">" . htmlentities($guild_name[0]) . "</a></td>\r\n </tr>"; } $output .= "\r\n </table>\r\n <br />\r\n </fieldset>"; require_once "footer.php";
function top100($realmid, &$sqlr, &$sqlc) { global $output, $lang_top, $realm_db, $characters_db, $server, $itemperpage, $developer_test_mode, $multi_realm_mode; $realm_id = $realmid; $sqlc->connect($characters_db[$realm_id]['addr'], $characters_db[$realm_id]['user'], $characters_db[$realm_id]['pass'], $characters_db[$realm_id]['name']); //==========================$_GET and SECURE======================== $type = isset($_GET['type']) ? $sqlc->quote_smart($_GET['type']) : 'level'; if (preg_match('/^[_[:lower:]]{1,10}$/', $type)) { } else { $type = 'level'; } $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,14}$/', $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' : 'DESC'; $dir = $dir ? 0 : 1; //==========================$_GET and SECURE end======================== $type_list = array('level', 'stat', 'defense', 'attack', 'resist', 'crit_hit', 'pvp'); if (in_array($type, $type_list)) { } else { $type = 'level'; } $result = $sqlc->query('SELECT count(*) FROM characters'); $all_record = $sqlc->result($result, 0); $all_record = $all_record < 100 ? $all_record : 100; $result = $sqlc->query('SELECT characters.guid, characters.name, race, class, gender, level, totaltime, online, money, health, power1, arenaPoints as arena, totalHonorPoints as honor, totalKills as kills, guildid as gname, strength AS str, agility AS agi, stamina AS sta, intellect AS intel, spirit AS spi, armor AS armor, blockPct AS block, dodgePct AS dodge, parryPct AS parry, attackPower AS ap, rangedAttackPower AS ranged_ap, power2 AS min_dmg, power3 AS max_dmg, power4 AS min_ranged_dmg, power5 AS max_ranged_dmg, power6 AS expertise, power7 AS off_expertise, resHoly AS holy, resFire AS fire, resNature AS nature, resFrost AS frost, resShadow AS shadow, resArcane AS arcane, critPct AS melee_crit, rangedCritPct AS range_crit, power1 AS melee_hit, power2 AS range_hit, power3 AS spell_hit FROM characters, character_stats, guild_member WHERE guild_member.guid = characters.guid ORDER BY ' . $order_by . ' ' . $order_dir . ' LIMIT ' . $start . ', ' . $itemperpage . ''); //==========================top tage navigaion starts here======================== $output .= ' <center> <div id="tab"> <ul> <li' . ($type === 'level' ? ' id="selected"' : '') . '> <a href="top100.php?start=' . $start . '"> ' . $lang_top['general'] . ' </a> </li> <li' . ($type === 'stat' ? ' id="selected"' : '') . '> <a href="top100.php?start=' . $start . '&type=stat&order_by=health"> ' . $lang_top['stats'] . ' </a> </li> <li' . ($type === 'defense' ? ' id="selected"' : '') . '> <a href="top100.php?start=' . $start . '&type=defense&order_by=armor"> ' . $lang_top['defense'] . ' </a> </li> <li' . ($type === 'resist' ? ' id="selected"' : '') . '> <a href="top100.php?start=' . $start . '&type=resist&order_by=holy"> ' . $lang_top['resist'] . ' </a> </li> <li' . ($type === 'attack' ? ' id="selected"' : '') . '> <a href="top100.php?start=' . $start . '&type=attack&order_by=ap"> ' . $lang_top['melee'] . ' </a> </li> <li' . ($type === 'crit_hit' ? ' id="selected"' : '') . '> <a href="top100.php?start=' . $start . '&type=crit_hit&order_by=ranged_ap"> ' . $lang_top['ranged'] . ' </a> </li> <li' . ($type === 'pvp' ? ' id="selected"' : '') . '> <a href="top100.php?start=' . $start . '&type=pvp&order_by=honor"> ' . $lang_top['pvp'] . ' </a> </li> </ul> </div> <div id="tab_content"> <table class="top_hidden" style="width: 720px">'; if ($developer_test_mode && $multi_realm_mode) { $realms = $sqlr->query('SELECT count(*) FROM realmlist'); $tot_realms = $sqlr->result($realms, 0); if (1 < $tot_realms && 1 < count($server)) { $output .= ' <tr> <td colspan="2" align="left">'; makebutton('View', 'javascript:do_submit(\'form' . $realm_id . '\',0)', 130); $output .= ' <form action="top100.php?type=' . $type . '" method="post" name="form' . $realm_id . '"> Number of Realms : <input type="hidden" name="action" value="realms" /> <select name="n_realms">'; for ($i = 1; $i <= $tot_realms; ++$i) { $output .= ' <option value="' . $i . '">' . htmlentities($i) . '</option>'; } $output .= ' </select> </form> </td> </tr>'; } } $output .= ' <tr> <td align="right">Total: ' . $all_record . '</td> <td align="right" width="25%">'; $output .= generate_pagination('top100.php?type=' . $type . '&order_by=' . $order_by . '&dir=' . ($dir ? 0 : 1) . '', $all_record, $itemperpage, $start); $output .= ' </td> </tr> </table>'; //==========================top tage navigaion ENDS here ======================== $output .= ' <table class="lined" style="width: 720px"> <tr> <th width="5%">#</th> <th width="14%">' . $lang_top['name'] . '</th> <th width="11%">' . $lang_top['race'] . ' ' . $lang_top['class'] . '</th> <th width="8%"><a href="top100.php?type=' . $type . '&order_by=level&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'level' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['level'] . '</a></th>'; if ($type === 'level') { $output .= ' <th width="22%">' . $lang_top['guild'] . '</th> <th width="20%"><a href="top100.php?type=' . $type . '&order_by=money&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'money' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['money'] . '</a></th> <th width="20%"><a href="top100.php?type=' . $type . '&order_by=totaltime&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'totaltime' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['time_played'] . '</a></th>'; } elseif ($type === 'stat') { $output .= ' <th width="11%"><a href="top100.php?type=' . $type . '&order_by=health&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'health' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['health'] . '</a></th> <th width="10%"><a href="top100.php?type=' . $type . '&order_by=power1&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'power1' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['mana'] . '</a></th> <th width="9%"><a href="top100.php?type=' . $type . '&order_by=str&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'str' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['str'] . '</a></th> <th width="8%"><a href="top100.php?type=' . $type . '&order_by=agi&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'agi' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['agi'] . '</a></th> <th width="8%"><a href="top100.php?type=' . $type . '&order_by=sta&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'sta' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['sta'] . '</a></th> <th width="8%"><a href="top100.php?type=' . $type . '&order_by=intel&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'intel' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['intel'] . '</a></th> <th width="8%"><a href="top100.php?type=' . $type . '&order_by=spi&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'spi' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['spi'] . '</a></th>'; } elseif ($type === 'defense') { $output .= ' <th width="16%"><a href="top100.php?type=' . $type . '&order_by=armor&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'armor' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['armor'] . '</a></th> <th width="16%"><a href="top100.php?type=' . $type . '&order_by=block&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'block' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['block'] . '</a></th> <th width="15%"><a href="top100.php?type=' . $type . '&order_by=dodge&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'dodge' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['dodge'] . '</a></th> <th width="15%"><a href="top100.php?type=' . $type . '&order_by=parry&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'parry' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['parry'] . '</a></th>'; } elseif ($type === 'resist') { $output .= ' <th width="10%"><a href="top100.php?type=' . $type . '&order_by=holy&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'holy' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['holy'] . '</a></th> <th width="10%"><a href="top100.php?type=' . $type . '&order_by=fire&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'fire' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['fire'] . '</a></th> <th width="10%"><a href="top100.php?type=' . $type . '&order_by=nature&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'nature' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['nature'] . '</a></th> <th width="10%"><a href="top100.php?type=' . $type . '&order_by=frost&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'frost' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['frost'] . '</a></th> <th width="11%"><a href="top100.php?type=' . $type . '&order_by=shadow&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'shadow' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['shadow'] . '</a></th> <th width="11%"><a href="top100.php?type=' . $type . '&order_by=arcane&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'arcane' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['arcane'] . '</a></th>'; } elseif ($type === 'attack') { $output .= ' <th width="20%"><a href="top100.php?type=' . $type . '&order_by=ap&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'ap' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['ap'] . '</a></th> <th width="6%"><a href="top100.php?type=' . $type . '&order_by=min_dmg&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'min_dmg' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['min_dmg'] . '</a></th> <th width="6%"><a href="top100.php?type=' . $type . '&order_by=max_dmg&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'max_dmg' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['max_dmg'] . '</a></th> <th width="10%"><a href="top100.php?type=' . $type . '&order_by=melee_crit&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'melee_crit' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['crit'] . '</a></th> <th width="5%"><a href="top100.php?type=' . $type . '&order_by=melee_hit&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'melee_hit' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['hit'] . '</a></th> <th width="5%"><a href="top100.php?type=' . $type . '&order_by=expertise&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'expertise' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['expertise'] . '</a></th> <th width="9%"><a href="top100.php?type=' . $type . '&order_by=off_expertise&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'off_expertise' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['off_expertise'] . '</a></th> </tr>'; } elseif ($type === 'crit_hit') { $output .= ' <th width="18%"><a href="top100.php?type=' . $type . '&order_by=ranged_ap&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'ranged_ap' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['ap'] . '</a></th> <th width="12%"><a href="top100.php?type=' . $type . '&order_by=min_ranged_dmg&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'min_ranged_dmg' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['min_dmg'] . '</a></th> <th width="12%"><a href="top100.php?type=' . $type . '&order_by=max_ranged_dmg&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'max_ranged_dmg' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['max_dmg'] . '</a></th> <th width="10%"><a href="top100.php?type=' . $type . '&order_by=range_crit&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'range_crit' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['crit'] . '</a></th> <th width="10%"><a href="top100.php?type=' . $type . '&order_by=range_hit&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'range_hit' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['hit'] . '</a></th>'; } elseif ($type === 'pvp') { $output .= ' <th width="20%"><a href="top100.php?type=' . $type . '&order_by=honor&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'honor' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['rank'] . '</a></th> <th width="14%">' . $lang_top['honor_points'] . '</th> <th width="14%"><a href="top100.php?type=' . $type . '&order_by=kills&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'kills' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['kills'] . '</a></th> <th width="14%"><a href="top100.php?type=' . $type . '&order_by=arena&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'arena' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_top['arena_points'] . '</a></th>'; } $output .= ' </tr>'; $i = 0; while ($char = $sqlc->fetch_assoc($result)) { $output .= ' <tr valign="top"> <td>' . (++$i + $start) . '</td> <td><a href="char.php?id=' . $char['guid'] . '&realm=' . $realm_id . '">' . htmlentities($char['name']) . '</a></td> <td> <img src="img/c_icons/' . $char['race'] . '-' . $char['gender'] . '.gif" alt="' . char_get_race_name($char['race']) . '" onmousemove="toolTip(\'' . char_get_race_name($char['race']) . '\', \'item_tooltip\')" onmouseout="toolTip()" /> <img src="img/c_icons/' . $char['class'] . '.gif" alt="' . char_get_class_name($char['class']) . '" onmousemove="toolTip(\'' . char_get_class_name($char['class']) . '\', \'item_tooltip\')" onmouseout="toolTip()" /> </td> <td>' . char_get_level_color($char['level']) . '</td>'; if ($type === 'level') { $guild_name = $sqlc->result($sqlc->query('SELECT name FROM guild WHERE guildid = ' . $char['gname'] . ''), 0); $days = floor(round($char['totaltime'] / 3600) / 24); $hours = round($char['totaltime'] / 3600) - $days * 24; $time = ''; if ($days) { $time .= $days . ' days '; } if ($hours) { $time .= $hours . ' hours'; } $output .= ' <td><a href="guild.php?action=view_guild&realm=' . $realm_id . '&error=3&id=' . $char['gname'] . '">' . htmlentities($guild_name) . '</a></td> <td align="right"> ' . substr($char['money'], 0, -4) . '<img src="img/gold.gif" alt="" align="middle" /> ' . substr($char['money'], -4, 2) . '<img src="img/silver.gif" alt="" align="middle" /> ' . substr($char['money'], -2) . '<img src="img/copper.gif" alt="" align="middle" /> </td> <td align="right">' . $time . '</td>'; } elseif ($type === 'stat') { $output .= ' <td>' . $char['health'] . '</td> <td>' . $char['power1'] . '</td> <td>' . $char['str'] . '</td> <td>' . $char['agi'] . '</td> <td>' . $char['sta'] . '</td> <td>' . $char['intel'] . '</td> <td>' . $char['spi'] . '</td>'; } elseif ($type === 'defense') { $block = unpack('f', pack('L', $char['block'])); $block = round($block[1], 2); $dodge = unpack('f', pack('L', $char['dodge'])); $dodge = round($dodge[1], 2); $parry = unpack('f', pack('L', $char['parry'])); $parry = round($parry[1], 2); $output .= ' <td>' . $char['armor'] . '</td> <td>' . $block . '%</td> <td>' . $dodge . '%</td> <td>' . $parry . '%</td>'; } elseif ($type === 'resist') { $output .= ' <td>' . $char['holy'] . '</td> <td>' . $char['fire'] . '</td> <td>' . $char['nature'] . '</td> <td>' . $char['frost'] . '</td> <td>' . $char['shadow'] . '</td> <td>' . $char['arcane'] . '</td>'; } elseif ($type === 'attack') { $melee = unpack('f', pack('L', $char['melee_crit'])); $melee = round($melee[1], 2); $mindamage = unpack('f', pack('L', $char['min_dmg'])); $mindamage = round($mindamage[1], 0); $maxdamage = unpack('f', pack('L', $char['max_dmg'])); $maxdamage = round($maxdamage[1], 0); $output .= ' <td>' . $char['ap'] . '</td> <td>' . $mindamage . '</td> <td>' . $maxdamage . '</td> <td>' . $melee . '%</td> <td>' . $char['melee_hit'] . '</td> <td>' . $char['expertise'] . '</td> <td>' . $char['off_expertise'] . '</td>'; } elseif ($type === 'crit_hit') { $range = unpack('f', pack('L', $char['range_crit'])); $range = round($range[1], 2); $minrangeddamage = unpack('f', pack('L', $char['min_ranged_dmg'])); $minrangeddamage = round($minrangeddamage[1], 0); $maxrangeddamage = unpack('f', pack('L', $char['max_ranged_dmg'])); $maxrangeddamage = round($maxrangeddamage[1], 0); $output .= ' <td>' . $char['ranged_ap'] . '</td> <td>' . $minrangeddamage . '</td> <td>' . $maxrangeddamage . '</td> <td>' . $range . '%</td> <td>' . $char['range_hit'] . '</td>'; } elseif ($type === 'pvp') { $output .= ' <td align="left"><img src="img/ranks/rank' . char_get_pvp_rank_id($char['honor'], char_get_side_id($char['race'])) . '.gif" alt=""></img> ' . char_get_pvp_rank_name($char['honor'], char_get_side_id($char['race'])) . '</td> <td>' . $char['honor'] . '</td> <td>' . $char['kills'] . '</td> <td>' . $char['arena'] . '</td>'; } $output .= ' </tr>'; } $output .= ' </table> <table class="top_hidden" style="width: 720px"> <tr> <td align="right">Total: ' . $all_record . '</td> <td align="right" width="25%">'; $output .= generate_pagination('top100.php?type=' . $type . '&order_by=' . $order_by . '&dir=' . ($dir ? 0 : 1) . '', $all_record, $itemperpage, $start); unset($all_record); $output .= ' </td> </tr> </table> </div> <br /> </center>'; }