$sqlr->connect($realm_db['addr'], $realm_db['user'], $realm_db['pass'], $realm_db['name']); //----Check if a user has login, if Guest mode is enabled, code above will login as Guest if (isset($_SESSION['user_lvl']) && isset($_SESSION['uname']) && isset($_SESSION['realm_id']) && empty($_GET['err'])) { // check for host php script max memory allowed, // setting it higher if it is not enough for MiniManager to run if (ini_get('memory_limit') < 16) { @ini_set('memory_limit', '16M'); } // resuming logged in user settings session_regenerate_id(); $user_lvl = $_SESSION['user_lvl']; $user_name = $_SESSION['uname']; $user_id = $_SESSION['user_id']; $realm_id = isset($_GET['r_id']) ? (int) $_GET['r_id'] : $_SESSION['realm_id']; // for MiniManager security system, getting the users' account group name $user_lvl_name = id_get_gm_level($user_lvl); // get the file name that called this header $array = explode('/', $_SERVER['PHP_SELF']); $lookup_file = $array[sizeof($array) - 1]; unset($array); //---------------------Top Menu---------------------------------------------- $output .= ' <div id="menuwrapper"> <ul id="menubar">'; $lang_header = lang_header(); $action_permission = array(); foreach ($menu_array as $trunk) { // ignore "invisible array" this is for setting security read/write values // for not accessible elements not in the navbar! if ('invisible' === $trunk[1]) { foreach ($trunk[2] as $branch) {
function gen_avatar_panel($level, $sex, $race, $class, $info = 1, $gm = 0, $edit_user = 0) { require_once "libs/char_lib.php"; $return = ' <div class="center" style="background: transparent url('; $return .= char_get_avatar_img($level, $sex, $race, $class, $gm); $return .= ') repeat scroll 0%; width: 64px; height: 64px;' . ($edit_user == 0 ? ' border: 0px;' : '') . '">'; $return .= ' <div style="background: transparent url(img/avatars/frame/full' . ($gm ? 'gm' : '') . '.gif) repeat scroll 0%; position: relative; left: 0px; top: 0px; width: 64px; height: 64px;"> </div>'; if (!$gm) { $return .= ' <div style="text-align: center; font-weight: bold; color: white; position: relative; left: 21px; top: -18px; width: 24px; height: 24px;">' . $level . ' </div>'; } $return .= ' </div>'; if ($gm > 0) { require_once "libs/get_lib.php"; $return .= id_get_gm_level($gm) . ' <br />'; } if ($info == 1) { $return .= ' <div style="margin-top:2px;"> <a href="#" onmouseover="oldtoolTip(\'' . char_get_race_name($race) . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()"> <img src="img/c_icons/' . $race . '-' . $sex . '.gif" border="0" alt="" /> </a> <a href="#" onmouseover="oldtoolTip(\'' . char_get_class_name($class) . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()"> <img src="img/c_icons/' . $class . '.gif" border="0" alt="" /> </a> </div>'; } return $return; }
function edit_user() { global $lang_global, $lang_user, $output, $realm_db, $characters_db, $realm_id, $mmfpm_db, $user_lvl, $user_name, $gm_level_arr, $action_permission, $expansion_select, $developer_test_mode, $multi_realm_mode, $server; $active_realm_id_pq = "active_realm_id"; if (empty($_GET['id'])) { redirect("user.php?error=10"); } $sqlr = new SQL(); $sqlr->connect($realm_db['addr'], $realm_db['user'], $realm_db['pass'], $realm_db['name']); $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); $sqlc = new SQL(); $sqlc->connect($characters_db[$realm_id]['addr'], $characters_db[$realm_id]['user'], $characters_db[$realm_id]['pass'], $characters_db[$realm_id]['name']); $id = $sqlr->quote_smart($_GET['id']); $result = $sqlr->query("SELECT id,username,gmlevel,email,joindate,last_ip,failed_logins,locked,last_login,{$active_realm_id_pq},expansion FROM account WHERE id = '{$id}'"); $data = $sqlr->fetch_assoc($result); $refguid = $sqlm->fetch_assoc($sqlm->query('SELECT InvitedBy FROM mm_point_system_invites WHERE PlayersAccount = ' . $data['id'] . '')); $refguid = $refguid['InveitedBy']; $referred_by = $sqlc->fetch_assoc($sqlc->query("SELECT name FROM characters WHERE guid = '{$refguid}'")); unset($refguid); $referred_by = $referred_by['name']; if ($sqlr->num_rows($result)) { $output .= ' <center> <script type="text/javascript" src="libs/js/sha1.js"></script> <script type="text/javascript"> // <![CDATA[ function do_submit_data () { if ((document.form.username.value != "' . $data['username'] . '") && (document.form.new_pass.value == "******")) { alert("If you are changing Username, The password must be changed too."); return; } else { document.form.pass.value = hex_sha1(document.form.username.value.toUpperCase()+":"+document.form.new_pass.value.toUpperCase()); document.form.new_pass.value = "0"; do_submit(); } } // ]]> </script> <fieldset style="width: 550px;"> <legend>' . $lang_user['edit_acc'] . '</legend> <form method="post" action="user.php?action=doedit_user" name="form"> <input type="hidden" name="pass" value="" maxlength="256" /> <input type="hidden" name="id" value="' . $id . '" /> <table class="flat"> <tr> <td>' . $lang_user['id'] . '</td> <td>' . $data['id'] . '</td> </tr> <tr> <td>' . $lang_user['username'] . '</td>'; if ($user_lvl >= $action_permission['update']) { $output .= ' <td><input type="text" name="username" size="42" maxlength="15" value="' . $data['username'] . '" /></td>'; } else { $output .= ' <td>' . $data['username'] . '</td>'; } $output .= ' </tr> <tr> <td>' . $lang_user['password'] . '</td>'; if ($user_lvl >= $action_permission['update']) { $output .= "\r\n <td><input type=\"text\" name=\"new_pass\" size=\"42\" maxlength=\"40\" value=\"******\" /></td>"; } else { $output .= "\r\n <td>********</td>"; } $output .= "\r\n </tr>\r\n <tr>\r\n <td>{$lang_user['email']}</td>"; if ($user_lvl >= $action_permission['update']) { $output .= ' <td><input type="text" name="mail" size="42" maxlength="225" value="' . $data['email'] . '" /></td>'; } else { $output .= "\r\n <td>***@***.***</td>"; } $output .= "\r\n </tr>\r\n <tr>\r\n <td>{$lang_user['invited_by']}:</td>\r\n <td>"; if ($user_lvl >= $action_permission['update'] && !$referred_by != NULL) { $output .= "\r\n <input type=\"text\" name=\"referredby\" size=\"42\" maxlength=\"12\" value=\"{$referred_by}\" />"; } else { $output .= "\r\n {$referred_by}"; } $output .= "\r\n </td>\r\n </tr>\r\n <tr>\r\n <td>{$lang_user['gm_level_long']}</td>"; if ($user_lvl >= $action_permission['update']) { $output .= "\r\n <td>\r\n <select name=\"gmlevel\">"; foreach ($gm_level_arr as $level) { if ($level[0] > -1 && $level[0] < $user_lvl) { $output .= "\r\n <option value=\"{$level[0]}\" "; if ($data['gmlevel'] == $level[0]) { $output .= "selected=\"selected\" "; } $output .= ">{$level[1]}</option>"; } } $output .= "\r\n </select>\r\n </td>"; } else { $output .= ' <td>' . id_get_gm_level($data['gmlevel']) . ' ( ' . $data['gmlevel'] . ' )</td>'; } $output .= ' </tr> <tr> <td>' . $lang_user['join_date'] . '</td> <td>' . $data['joindate'] . '</td> </tr> <tr> <td>' . $lang_user['last_ip'] . '</td>'; if ($user_lvl >= $action_permission['update']) { $output .= ' <td>' . $data['last_ip'] . '<a href="banned.php?action=do_add_entry&entry=' . $data['last_ip'] . '&bantime=3600&ban_type=ip_banned"> <- ' . $lang_user['ban_this_ip'] . '</a></td>'; } else { $output .= "\r\n <td>***.***.***.***</td>"; } $output .= "\r\n </tr>\r\n <tr>\r\n <td>{$lang_user['banned']}</td>"; $que = $sqlr->query("SELECT bandate, unbandate, bannedby, banreason FROM account_banned WHERE id = {$id}"); if ($sqlr->num_rows($que)) { $banned = $sqlr->fetch_row($que); $ban_info = " From:" . date('d-m-Y G:i', $banned[0]) . " till:" . date('d-m-Y G:i', $banned[1]) . "<br />by {$banned['2']}"; $ban_checked = " checked=\"checked\""; } else { $ban_checked = ""; $ban_info = ""; $banned[3] = ""; } if ($user_lvl >= $action_permission['update']) { $output .= "\r\n <td><input type=\"checkbox\" name=\"banned\" value=\"1\" {$ban_checked}/>{$ban_info}</td>"; } else { $output .= "\r\n <td>{$ban_info}</td>"; } $output .= "\r\n </tr>\r\n <tr>\r\n <td>{$lang_user['banned_reason']}</td>"; if ($user_lvl >= $action_permission['update']) { $output .= "\r\n <td><input type=\"text\" name=\"banreason\" size=\"42\" maxlength=\"255\" value=\"{$banned['3']}\" /></td>"; } else { $output .= "\r\n <td>{$banned['3']}</td>"; } if ($expansion_select) { $output .= "\r\n </tr>\r\n <tr>"; if ($user_lvl >= $action_permission['update']) { $output .= "\r\n <td>{$lang_user['client_type']}</td>"; $output .= "\r\n <td>\r\n <select name=\"expansion\">"; $output .= "\r\n <option value=\"0\">{$lang_user['classic']}</option>\r\n <option value=\"1\" "; if ($data['expansion'] == 1) { $output .= "selected=\"selected\" "; } $output .= ">{$lang_user['tbc']}</option>\r\n <option value=\"2\" "; if ($data['expansion'] == 2) { $output .= "selected=\"selected\" "; } $output .= ">{$lang_user['wotlk']}</option>\r\n </select>\r\n </td>"; } else { $output .= "\r\n <td>{$lang_user['classic']}</td>"; } } $output .= "\r\n </tr>\r\n <tr>\r\n <td>{$lang_user['failed_logins_long']}</td>"; if ($user_lvl >= $action_permission['update']) { $output .= ' <td><input type="text" name="failed" size="42" maxlength="3" value="' . $data['failed_logins'] . '" /></td>'; } else { $output .= ' <td>' . $data['failed_logins'] . '</td>'; } $output .= "\r\n </tr>\r\n <tr>\r\n <td>{$lang_user['locked']}</td>"; $lock_checked = $data['locked'] ? " checked=\"checked\"" : ""; if ($user_lvl >= $action_permission['update']) { $output .= "\r\n <td><input type=\"checkbox\" name=\"locked\" value=\"1\" {$lock_checked}/></td>"; } else { $output .= "\r\n <td></td>"; } $output .= ' </tr> <tr> <td>' . $lang_user['last_login'] . '</td> <td>' . $data['last_login'] . '</td> </tr> <tr> <td>' . $lang_user['online'] . '</td>'; $output .= "\r\n <td>" . ($data['active_realm_id'] ? $lang_global['yes'] : $lang_global['no']) . "</td>\r\n </tr>"; $query = $sqlr->query("SELECT SUM(numchars) FROM realmcharacters WHERE acctid = '{$id}'"); $tot_chars = $sqlr->result($query, 0); $query = $sqlc->query("SELECT count(*) FROM `characters` WHERE account = {$id}"); $chars_on_realm = $sqlc->result($query, 0); $output .= "\r\n <tr>\r\n <td>{$lang_user['tot_chars']}</td>\r\n <td>{$tot_chars}</td>\r\n </tr>"; $realms = $sqlr->query("SELECT id, name FROM realmlist"); if ($developer_test_mode && $multi_realm_mode && ($sqlr->num_rows($realms) > 1 && count($server) > 1 && count($characters_db) > 1)) { require_once "scripts/get_lib.php"; while ($realm = $sqlr->fetch_array($realms)) { $sqlc->connect($characters_db[$realm[0]]['addr'], $characters_db[$realm[0]]['user'], $characters_db[$realm[0]]['pass'], $characters_db[$realm[0]]['name']); $query = $sqlc->query("SELECT count(*) FROM `characters` WHERE account = {$id}"); $chars_on_realm = $sqlc->result($query, 0); $output .= "\r\n <tr>\r\n <td>{$lang_user['chars_on_realm']} " . get_realm_name($realm[0]) . "</td>\r\n <td>{$chars_on_realm}</td>\r\n </tr>"; if ($chars_on_realm) { $char_array = $sqlc->query("SELECT guid, name, race, class, level, gender\r\n FROM `characters` WHERE account = {$id}"); while ($char = $sqlc->fetch_array($char_array)) { $output .= "\r\n <tr>\r\n <td> '---></td>\r\n <td>\r\n <a href=\"char.php?id={$char['0']}&realm={$realm['0']}\">{$char['1']} - <img src='img/c_icons/{$char[2]}-{$char[5]}.gif' onmousemove='toolTip(\"" . char_get_race_name($char[2]) . "\",\"item_tooltip\")' onmouseout='toolTip()' alt=\"\" />\r\n <img src='img/c_icons/{$char[3]}.gif' onmousemove='toolTip(\"" . char_get_class_name($char[3]) . "\",\"item_tooltip\")' onmouseout='toolTip()' alt=\"\"/> - lvl " . char_get_level_color($char[4]) . "</a>\r\n </td>\r\n </tr>"; } } } } else { $query = $sqlc->query("SELECT count(*) FROM `characters` WHERE account = {$id}"); $chars_on_realm = $sqlc->result($query, 0); $output .= "\r\n <tr>\r\n <td>{$lang_user['chars_on_realm']}</td>\r\n <td>{$chars_on_realm}</td>\r\n </tr>"; if ($chars_on_realm) { $char_array = $sqlc->query("SELECT guid,name,race,class, level, gender FROM `characters` WHERE account = {$id}"); while ($char = $sqlc->fetch_array($char_array)) { $output .= "\r\n <tr>\r\n <td> '---></td>\r\n <td>\r\n <a href=\"char.php?id={$char['0']}\">{$char['1']} - <img src='img/c_icons/{$char[2]}-{$char[5]}.gif' onmousemove='toolTip(\"" . char_get_race_name($char[2]) . "\",\"item_tooltip\")' onmouseout='toolTip()' alt=\"\" />\r\n <img src='img/c_icons/{$char[3]}.gif' onmousemove='toolTip(\"" . char_get_class_name($char[3]) . "\",\"item_tooltip\")' onmouseout='toolTip()' alt=\"\"/> - lvl " . char_get_level_color($char[4]) . "</a>\r\n </td>\r\n </tr>"; } } } $output .= "\r\n <tr>\r\n <td>"; if ($user_lvl >= $action_permission['delete']) { makebutton($lang_user['del_acc'], "user.php?action=del_user&check%5B%5D={$id}\" type=\"wrn", 130); } $output .= "\r\n </td>\r\n <td>"; if ($user_lvl >= $action_permission['update']) { makebutton($lang_user['update_data'], "javascript:do_submit_data()", 130); } makebutton($lang_global['back'], "javascript:window.history.back()\" type=\"def", 130); $output .= "\r\n </td>\r\n </tr>\r\n </table>\r\n </form>\r\n </fieldset>\r\n <br /><br />\r\n </center>\r\n"; } else { error($lang_global['err_no_user']); } }
function index(&$sqlr, &$sqlc, &$sqlm) { global $output, $lang_global, $lang_index, $realm_id, $mmfpm_db, $server, $action_permission, $user_lvl, $user_id, $showcountryflag, $motd_display_poster, $gm_online_count, $gm_online, $itemperpage; $output .= ' <div class="top">'; if (test_port($server[$realm_id]['addr'], $server[$realm_id]['game_port'])) { $stats = $sqlr->fetch_assoc($sqlr->query(' SELECT starttime, maxplayers FROM uptime WHERE realmid = ' . $realm_id . ' ORDER BY starttime DESC LIMIT 1'), 0); $uptimetime = time() - $stats['starttime']; $max_ever = $sqlr->fetch_assoc($sqlr->query(' SELECT maxplayers FROM uptime WHERE realmid = ' . $realm_id . ' ORDER BY maxplayers DESC LIMIT 1'), 0); function format_uptime($seconds) { $secs = intval($seconds % 60); $mins = intval($seconds / 60 % 60); $hours = intval($seconds / 3600 % 24); $days = intval($seconds / 86400); $uptimeString = ''; if ($days) { $uptimeString .= $days; $uptimeString .= 1 === $days ? ' day' : ' days'; } if ($hours) { $uptimeString .= (0 < $days ? ', ' : '') . $hours; $uptimeString .= 1 === $hours ? ' hour' : ' hours'; } if ($mins) { $uptimeString .= (0 < $days || 0 < $hours ? ', ' : '') . $mins; $uptimeString .= 1 === $mins ? ' minute' : ' minutes'; } if ($secs) { $uptimeString .= (0 < $days || 0 < $hours || 0 < $mins ? ', ' : '') . $secs; $uptimeString .= 1 === $secs ? ' second' : ' seconds'; } return $uptimeString; } $staticUptime = $lang_index['realm'] . ' <em>' . htmlentities(get_realm_name($realm_id)) . '</em> ' . $lang_index['online'] . ' for ' . format_uptime($uptimetime); unset($uptimetime); $output .= ' <div id="uptime"> <h1><font color="#55aa55">' . $staticUptime . '</font><br /></h1> </div> </div>'; unset($staticUptime); $online = true; } else { $output .= ' <h1><font class="error">' . $lang_index['realm'] . ' <em>' . htmlentities(get_realm_name($realm_id)) . '</em> ' . $lang_index['offline_or_let_high'] . '</font></h1> </div>'; $online = false; } $output .= ' <center> <fieldset> <legend>Info</legend> <table class="lined" style="width: 100%; display: table"> <tr> <th> ' . $lang_index['maxplayers'] . ': ' . $stats['maxplayers'] . '<br /> ' . $lang_index['maxplayersever'] . ': ' . $max_ever['maxplayers'] . ' </th> </tr> </table> </fieldset>'; unset($max_ever); unset($stats); $start_m = isset($_GET['start_m']) ? $sqlc->quote_smart($_GET['start_m']) : 0; if (is_numeric($start_m)) { } else { $start_m = 0; } //print online chars if ($online) { //==========================$_GET and SECURE================================= $start = isset($_GET['start']) ? $sqlc->quote_smart($_GET['start']) : 0; if (is_numeric($start)) { } else { $start = 0; } $order_by = isset($_GET['order_by']) ? $sqlc->quote_smart($_GET['order_by']) : 'level'; if (preg_match('/^[_[:lower:]]{1,12}$/', $order_by)) { } else { $order_by = 'level'; } $dir = isset($_GET['dir']) ? $sqlc->quote_smart($_GET['dir']) : 1; if (preg_match('/^[01]{1}$/', $dir)) { } else { $dir = 1; } $order_dir = $dir ? 'DESC' : 'ASC'; $dir = $dir ? 0 : 1; //==========================$_GET and SECURE end============================= if ($order_by === 'map') { $order_by = 'map ' . $order_dir . ', zone'; } elseif ($order_by === 'zone') { $order_by = 'zone ' . $order_dir . ', map'; } $order_side = ''; if ($user_lvl || $server[$realm_id]['both_factions']) { } else { $result = $sqlc->query(' SELECT race FROM characters WHERE account = ' . $user_id . ' AND totaltime = (SELECT MAX(totaltime) FROM characters WHERE account = ' . $user_id . ') LIMIT 1'); if ($sqlc->num_rows($result)) { $order_side = in_array($sqlc->result($result, 0), array(2, 5, 6, 8, 10)) ? ' AND race IN (2,5,6,8,10) ' : ' AND race IN (1,3,4,7,11) '; } } if ($order_by == 'ip') { $result = $sqlr->query(' SELECT id, last_ip FROM account WHERE active_realm_id != 1 ORDER BY last_ip ' . $order_dir . ' LIMIT ' . $start . ', ' . $itemperpage . ''); } else { $result = $sqlc->query(' SELECT c.guid, c.name, c.race, c.class, c.zone, c.map, c.level, c.account, c.gender, c.totalHonorPoints, COALESCE(guild_member.guildid,0) AS guildid FROM characters c LEFT JOIN guild_member ON guild_member.guid = c.guid WHERE c.online = 1 ' . ($gm_online == '0' ? 'AND c.extra_flags &1 = 0 ' : '') . $order_side . ' ORDER BY ' . $order_by . ' ' . $order_dir . ' LIMIT ' . $start . ', ' . $itemperpage); } $total_online = $sqlc->result($sqlc->query(' SELECT count(*) FROM characters WHERE online= 1' . ($gm_online_count == '0' ? ' AND extra_flags &1 = 0' : '')), 0); $output .= ' <center> <fieldset> <legend>' . $lang_index['tot_users_online'] . ': ' . $total_online . '</legend> <table class="lined" style="width: 100%; display: table"> <tr> <td colspan="' . (10 - $showcountryflag) . '" align="right" class="hidden" width="25%">'; $output .= generate_pagination('index.php?start_m=' . $start_m . '&order_by=' . $order_by . '&dir=' . ($dir ? 0 : 1), $total_online, $itemperpage, $start); $output .= ' </td> </tr> <tr> <th width="15%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=name&dir=' . $dir . '"' . ($order_by === 'name' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['name'] . '</a></th> <th width="1%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=race&dir=' . $dir . '"' . ($order_by === 'race' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['race'] . '</a></th> <th width="1%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=class&dir=' . $dir . '"' . ($order_by === 'class' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['class'] . '</a></th> <th width="5%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=level&dir=' . $dir . '"' . ($order_by === 'level' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['level'] . '</a></th> <th width="1%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=totalHonorPoints&dir=' . $dir . '"' . ($order_by === 'totalHonorPoints' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['rank'] . '</a></th> <th width="15%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=guildid&dir=' . $dir . '"' . ($order_by === 'gname' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['guild'] . '</a></th> <th width="20%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=map&dir=' . $dir . '"' . ($order_by === 'map ' . $order_dir . ', zone' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['map'] . '</a></th> <th width="25%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=zone&dir=' . $dir . '"' . ($order_by === 'zone ' . $order_dir . ', map' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['zone'] . '</a></th>'; if ($showcountryflag) { require_once 'libs/misc_lib.php'; $output .= ' <th width="1%">' . $lang_global['country'] . '</th>'; } $output .= ' </tr>'; $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); while ($char = $sqlc->fetch_assoc($result)) { if ($order_by == 'ip') { $temp = $sqlc->fetch_assoc($sqlc->query(' SELECT characters.guid, characters.name, characters.race, characters.class, characters.zone, characters.map, characters.level, characters.account, characters.gender, characters.totalHonorPoints, COALESCE(guild_member.guildid,0) AS guildid FROM characters LEFT JOIN guild_member ON guild_member.guid = characters.guid WHERE characters.online= 1 ' . ($gm_online == '0' ? 'AND characters.extra_flags &1 = 0 ' : '') . $order_side . ' and account = ' . $char['id'])); if (isset($temp['guid'])) { $char = $temp; } else { continue; } } $gm = $sqlr->result($sqlr->query(' SELECT gmlevel FROM account WHERE id=' . $char['account'] . ''), 0); $guild_name = $sqlc->result($sqlc->query(' SELECT name FROM guild WHERE guildid=' . $char['guildid'] . '')); $output .= ' <tr> <td>'; if ($user_lvl >= $gm) { $output .= ' <a href="char.php?id=' . $char['guid'] . '"> <span onmousemove="toolTip(\'' . id_get_gm_level($gm) . '\', \'item_tooltip\')" onmouseout="toolTip()">' . htmlentities($char['name']) . '</span> </a>'; } else { $output .= ' ' . htmlentities($char['name']) . '</span>'; } $output .= ' </td> <td> <img src="img/c_icons/' . $char['race'] . '-' . $char['gender'] . '.gif" onmousemove="toolTip(\'' . char_get_race_name($char['race']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /> </td> <td> <img src="img/c_icons/' . $char['class'] . '.gif" onmousemove="toolTip(\'' . char_get_class_name($char['class']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /> </td> <td>' . char_get_level_color($char['level']) . '</td> <td> <span onmouseover="toolTip(\'' . char_get_pvp_rank_name($char['totalHonorPoints'], char_get_side_id($char['race'])) . '\', \'item_tooltip\')" onmouseout="toolTip()" style="color: white;"><img src="img/ranks/rank' . char_get_pvp_rank_id($char['totalHonorPoints'], char_get_side_id($char['race'])) . '.gif" alt="" /></span> </td> <td> <a href="guild.php?action=view_guild&error=3&id=' . $char['guildid'] . '">' . htmlentities($guild_name) . '</a> </td> <td> <span onmousemove="toolTip(\'MapID:' . $char['map'] . '\', \'item_tooltip\')" onmouseout="toolTip()">' . get_map_name($char['map'], $sqlm) . '</span> </td> <td> <span onmousemove="toolTip(\'ZoneID:' . $char['zone'] . '\', \'item_tooltip\')" onmouseout="toolTip()">' . get_zone_name($char['zone'], $sqlm) . '</span> </td>'; if ($showcountryflag) { $country = misc_get_country_by_account($char['account'], $sqlr, $sqlm); $output .= ' <td> ' . ($country['code'] ? '<img src="img/flags/' . $country['code'] . '.png" onmousemove="toolTip(\'' . $country['country'] . '\',\'item_tooltip\')" onmouseout="toolTip()" alt="" />' : '-') . ' </td>'; } $output .= ' </tr>'; } $output .= ' <tr>'; $output .= ' <td colspan="' . (10 - $showcountryflag) . '" align="right" class="hidden" width="25%">'; $output .= generate_pagination('index.php?start_m=' . $start_m . '&order_by=' . $order_by . '&dir=' . ($dir ? 0 : 1), $total_online, $itemperpage, $start); unset($total_online); $output .= ' </td> </tr> </table> </fieldset> <br /> </center>'; } }
function edit_user() { global $output, $dbc_db, $corem_db, $logon_db, $characters_db, $corem_db, $realm_id, $invite_only, $timezone_offset, $user_name, $user_id, $expansion_select, $server, $developer_test_mode, $multi_realm_mode, $remember_me_checked, $achievement_point_points, $achievement_point_credits, $credits_fractional, $sql, $core; $refguid = $sql["mgr"]->result($sql["mgr"]->query("SELECT InvitedBy FROM point_system_invites WHERE PlayersAccount='" . $user_id . "'"), 0, 'InvitedBy'); $referred_by = $sql["char"]->result($sql["char"]->query("SELECT name FROM characters WHERE guid='" . $refguid . "'"), 0, 'name'); unset($refguid); if ($core == 1) { $query = "SELECT email, flags, lastip FROM accounts WHERE login='******'"; } else { $query = "SELECT email, expansion AS flags, last_ip AS lastip FROM account WHERE username='******'"; } if ($acc = $sql["logon"]->fetch_assoc($sql["logon"]->query($query))) { // if we have a screen name, we need to use it $screen_name_query = "SELECT *,\n SUBSTRING_INDEX(SUBSTRING_INDEX(Avatar, ' ', 1), ' ', -1) AS avatarsex,\n SUBSTRING_INDEX(SUBSTRING_INDEX(Avatar, ' ', 2), ' ', -1) AS avatarrace,\n SUBSTRING_INDEX(SUBSTRING_INDEX(Avatar, ' ', 3), ' ', -1) AS avatarclass,\n SUBSTRING_INDEX(SUBSTRING_INDEX(Avatar, ' ', 4), ' ', -1) AS avatarlevel\n FROM config_accounts WHERE Login='******'"; $screen_name = $sql["mgr"]->query($screen_name_query); $screen_name = $sql["mgr"]->fetch_assoc($screen_name); if ($screen_name["SecurityLevel"] >= 1073741824) { $screen_name["SecurityLevel"] -= 1073741824; } // ArcEmu: find out if we're using an encrypted password for this account if ($core == 1) { $pass_query = "SELECT * FROM accounts WHERE login='******' AND encrypted_password<>''"; $pass_result = $sql["logon"]->query($pass_query); $arc_encrypted = $sql["logon"]->num_rows($pass_result); } $output .= ' <script type="text/javascript" src="libs/js/sha1.js"></script> <script type="text/javascript"> // <![CDATA[ function do_submit_data () { var myForm = document.getElementById("form")'; if ($core == 1) { if ($arc_encrypted) { $output .= ' myForm.pass.value = hex_sha1("' . strtoupper($user_name) . ':" + myForm.user_pass.value.toUpperCase());'; } else { $output .= ' myForm.pass.value = myForm.user_pass.value;'; } } else { $output .= ' myForm.pass.value = hex_sha1("' . strtoupper($user_name) . ':" + myForm.user_pass.value.toUpperCase());'; } $output .= ' myForm.pass.value = myForm.pass.value.toUpperCase(); do_submit(); } // ]]> </script> <div id="edit_fieldset" class="fieldset_border center"> <span class="legend">' . lang("edit", "edit_acc") . '</span> <form method="post" action="edit.php?action=doedit_user" id="form"> <div> <input type="hidden" name="pass" value="" maxlength="256" /> </div> <table class="flat" id="edit_fieldset_table"> <tr> <td>' . lang("edit", "id") . ':</td> <td colspan="2">' . htmlspecialchars($user_id) . '</td> </tr> <tr> <td>' . lang("edit", "username") . ':</td> <td colspan="2">' . htmlspecialchars($user_name) . '</td> </tr>'; if (!$screen_name["ScreenName"]) { $output .= ' <tr> <td>' . lang("edit", "screenname") . ':</td> <td colspan="2"><input type="text" name="screenname" size="42" maxlength="14" /></td> </tr>'; } else { $output .= ' <tr> <td>' . lang("edit", "screenname") . ':</td> <td colspan="2">' . htmlspecialchars($screen_name["ScreenName"]) . '</td> </tr>'; } $output .= ' <tr> <td>' . lang("edit", "password") . ':</td> <td colspan="2"> <input type="text" name="user_pass" size="39" maxlength="40" value="******" /> <img src="img/information.png" onmousemove="oldtoolTip(\'' . lang("edit", "pass_warning") . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> </td> </tr> <tr> <td>' . lang("edit", "mail") . ':</td>'; if ($screen_name["TempEmail"]) { $output .= ' <td colspan="2"> <a href="edit.php?action=cancel_email_change" > <img src="img/aff_warn.gif" onmousemove="oldtoolTip(\'' . lang("edit", "email_changed") . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> </a> <input type="text" name="mail" size="39" maxlength="225" value="' . $acc["email"] . '" /> </td>'; } else { $output .= ' <td colspan="2"><input type="text" name="mail" size="42" maxlength="225" value="' . $acc["email"] . '" /></td>'; } $output .= ' </tr> <tr> <td>' . lang("edit", "invited_by") . ':</td> <td colspan="2">'; if ($referred_by == NULL) { $output .= ' <input type="text" name="referredby" size="20" maxlength="12" value="' . $referred_by . '" /> (' . lang("user", "charname") . ')'; } else { $output .= ' ' . htmlspecialchars($referred_by) . ''; } $output .= ' </td> </tr> <tr> <td>' . lang("edit", "gm_level") . ':</td> <td colspan="2">' . id_get_gm_level($screen_name["SecurityLevel"]) . ' ( ' . $screen_name["SecurityLevel"] . ' )</td> </tr> <tr> <td>' . lang("edit", "last_ip") . ':</td> <td colspan="2">' . htmlspecialchars($acc["lastip"]) . '</td> </tr>'; if ($expansion_select) { if ($core == 1) { $output .= ' <tr> <td>' . lang("edit", "client_type") . ':</td> <td colspan="2"> <select name="expansion"> <option value="24" ' . ($acc["flags"] == 24 ? 'selected="selected"' : '') . '>' . lang("edit", "wotlktbc") . '</option> <option value="16" ' . ($acc["flags"] == 16 ? 'selected="selected"' : '') . '>' . lang("edit", "wotlk") . '</option> <option value="8" ' . ($acc["flags"] == 8 ? 'selected="selected"' : '') . '>' . lang("edit", "tbc") . '</option> <option value="0" ' . ($acc["flags"] == 0 ? 'selected="selected"' : '') . '>' . lang("edit", "classic") . '</option> </select> </td> </tr>'; } else { $output .= ' <tr> <td>' . lang("edit", "client_type") . ':</td> <td colspan="2"> <select name="expansion"> <option value="2" ' . ($acc["flags"] == 2 ? 'selected="selected"' : '') . '>' . lang("edit", "wotlktbc") . '</option> <option value="1" ' . ($acc["flags"] == 1 ? 'selected="selected"' : '') . '>' . lang("edit", "tbc") . '</option> <option value="0" ' . ($acc["flags"] == 0 ? 'selected="selected"' : '') . '>' . lang("edit", "classic") . '</option> </select> </td> </tr>'; } } $output .= ' <tr> <td>' . lang("edit", "credits") . ':</td> <td colspan="2">' . ($screen_name["Credits"] < 0 ? lang("edit", "unlimited") : (double) $screen_name["Credits"]) . '</td> </tr>'; foreach ($characters_db as $db) { $sqlt = new SQL(); $sqlt->connect($db["addr"], $db["user"], $db["pass"], $db["name"], $db["encoding"]); if ($core == 1) { $query = "SELECT COUNT(*) FROM characters WHERE acct='" . $user_id . "'"; } else { $query = "SELECT COUNT(*) FROM characters WHERE account='" . $user_id . "'"; } $result = $sqlt->query($query); $fields = $sqlt->fetch_assoc($result); $c_count += $fields["COUNT(*)"]; } $output .= ' <tr> <td>' . lang("edit", "tot_chars") . ':</td> <td colspan="2">' . $c_count . '</td> </tr>'; $total_achieve_points = 0; $realms = $sql["mgr"]->query("SELECT * FROM config_servers"); if (1 < $sql["mgr"]->num_rows($realms) && 1 < count($server) && 1 < count($characters_db)) { while ($realm = $sql["mgr"]->fetch_assoc($realms)) { $sql["char"]->connect($characters_db[$realm["Index"]]["addr"], $characters_db[$realm["Index"]]["user"], $characters_db[$realm["Index"]]["pass"], $characters_db[$realm["Index"]]["name"], $characters_db[$realm["Index"]]["encoding"]); if ($core == 1) { $result = $sql["char"]->query("SELECT guid, name, race, class, level, gender, timestamp,\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\n FROM characters WHERE acct='" . $user_id . "'"); } else { $result = $sql["char"]->query("SELECT guid, name, race, class, level, gender, logout_time AS timestamp,\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\n FROM characters WHERE account='" . $user_id . "'"); } // calculate timezone offset $time_offset = $timezone_offset * 3600; $output .= ' <tr> <td colspan="3"> </td> </tr> <tr> <td colspan="3">' . lang("index", "realm") . ': ' . $realm["Name"] . '</td> </tr> <tr> <td>' . lang("edit", "characters") . ':</td> <td>' . $sql["char"]->num_rows($result) . '</td> </tr>'; while ($char = $sql["char"]->fetch_assoc($result)) { if ($char["timestamp"] != 0) { $lastseen = date("F j, Y @ Hi", $char["timestamp"] + $time_offset); } else { $lastseen = '-'; } // add this character's achievement points to our total $total_achieve_points += $char["ach_points"]; $output .= ' <tr> <td> \'---></td> <td> <a href="char.php?id=' . $char["guid"] . '&realm=' . $realm["Index"] . '">' . $char["name"] . '</a> - <img src="img/c_icons/' . $char["race"] . '-' . $char["gender"] . '.gif" onmousemove="oldtoolTip(\'' . char_get_race_name($char["race"]) . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> <img src="img/c_icons/' . $char["class"] . '.gif" onmousemove="oldtoolTip(\'' . char_get_class_name($char["class"]) . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> - ' . lang("char", "level_short") . char_get_level_color($char["level"]) . ' </td> <td>' . $lastseen . '</td> </tr>'; } } unset($realm); } else { if ($core == 1) { $result = $sql["char"]->query("SELECT guid, name, race, class, level, gender, timestamp,\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\n FROM characters WHERE acct='" . $user_id . "'"); } else { $result = $sql["char"]->query("SELECT guid, name, race, class, level, gender, logout_time AS timestamp,\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\n FROM characters WHERE account='" . $user_id . "'"); } // calculate timezone offset $time_offset = $timezone_offset * 3600; $output .= ' <!-- tr> <td>' . lang("edit", "characters") . ':</td> <td>' . $sql["char"]->num_rows($result) . '</td> </tr -->'; while ($char = $sql["char"]->fetch_assoc($result)) { if ($char["timestamp"] != 0) { $lastseen = date("F j, Y @ Hi", $char["timestamp"] + $time_offset); } else { $lastseen = '-'; } // add this character's achievement points to our total $total_achieve_points += $char["ach_points"]; $output .= ' <tr> <td> \'---></td> <td> <a href="char.php?id=' . $char["guid"] . '">' . $char["name"] . '</a> - <img src="img/c_icons/' . $char["race"] . '-' . $char["gender"] . '.gif" onmousemove="oldtoolTip(\'' . char_get_race_name($char["race"]) . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> <img src="img/c_icons/' . $char["class"] . '.gif" onmousemove="oldtoolTip(\'' . char_get_class_name($char["class"]) . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt=""/> - ' . lang("char", "level_short") . char_get_level_color($char["level"]) . ' </td> <td>' . $lastseen . '</td> </tr>'; } } unset($result); unset($realms); // Achievement Point to Credit conversion if ($achievement_point_credits && $screen_name["Credits"] >= 0) { $output .= ' <tr> <td colspan="3"> <hr /> </td> </tr> <tr> <td colspan="3"> <table> <tr> <td>' . lang("edit", "total_achieve_points") . ':</td> <td colspan="2"> <span>' . $total_achieve_points . '</span> </td> </tr> <tr> <td>' . lang("edit", "total_achieve_spent") . ':</td> <td colspan="2"> <span>' . $screen_name["AchievePointsSpent"] . '</span> </td> </tr> <tr> <td>' . lang("edit", "achieve_points_available") . ':</td> <td colspan="2"> <span>' . ($total_achieve_points - $screen_name["AchievePointsSpent"]) . '</span> <img src="img/information.png" style="position: relative; top: 4px;" onmousemove="oldtoolTip(\'' . lang("edit", "achieve_warning") . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> </td> </tr>'; if ($credits_fractional) { $output .= ' <tr> <td>' . lang("edit", "points_to_credits") . ':</td> <td colspan="2"> <span>' . $achievement_point_credits / $achievement_point_points . ' ' . lang("edit", "credits") . '</span> </td> </tr>'; } else { $output .= ' <tr> <td>' . lang("edit", "points_to_credits") . ':</td> <td colspan="2"> <span>' . round($achievement_point_credits / $achievement_point_points) . ' ' . lang("edit", "credits") . '</span> <img src="img/information.png" style="position: relative; top: 4px;" onmousemove="oldtoolTip(\'' . lang("edit", "points_to_credits_round") . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> </td> </tr>'; } $output .= ' <tr> <td>' . lang("edit", "points_to_spend") . ':</td> <td colspan="2">'; if ($total_achieve_points - $screen_name["AchievePointsSpent"] > 0) { $output .= ' <input type="text" name="points_to_spend" value="0" />'; } else { $output .= ' <div style="display: none;"> <input type="hidden" name="points_to_spend" value="0" /> </div> <span>' . lang("edit", "insufficient_funds") . '</span>'; } $output .= ' </td> </tr> </table> </td> </tr>'; } $override_remember_me = $_COOKIE["corem_override_remember_me"]; if (!isset($override_remember_me)) { $override_remember_me = 1; } if ($remember_me_checked) { $output .= ' <tr> <td>' . lang("edit", "override") . ':</td> <td><input type="checkbox" name="override" value="1" ' . ($override_remember_me ? 'checked="checked"' : '') . ' /> </tr>'; } $output .= ' <tr> <td>'; makebutton(lang("edit", "update"), 'javascript:do_submit_data()" type="wrn', 130); $output .= ' </td> <td colspan="2">'; makebutton(lang("global", "back"), 'javascript:window.history.back()" type="def', 130); $output .= ' </td> </tr> </table> </form> </div> <br /> <div id="edit_profile_fieldset" class="fieldset_border center"> <span class="legend">' . lang("edit", "profile_options") . '</span> <form action="edit.php" method="get" id="form3"> <div> <input type="hidden" name="action" value="profile_set" /> </div> <table class="hidden" id="edit_profile_table"> <tr> <td align="left" colspan="3">' . lang("edit", "profile_info") . '</td> </tr> <tr> <td align="left" colspan="3"> <textarea name="profileinfo" rows="6" cols="65">' . $screen_name["Info"] . '</textarea> </td> </tr> <tr> <td></td> </tr> <tr> <td></td> </tr> <tr> <td align="left" colspan="3">' . lang("edit", "signature") . '</td> </tr> <tr> <td align="left" colspan="3">'; bbcode_add_editor(); $output .= ' </td> </tr> <tr> <td align="left" colspan="3"> <textarea id="msg" name="signature" rows="6" cols="65">' . $screen_name["Signature"] . '</textarea> </td> </tr> <tr> <td></td> </tr> <tr> <td></td> </tr> <tr> <td align="left" colspan="3">' . lang("edit", "prefavatar") . '</td> </tr>'; if ($screen_name["SecurityLevel"] == 0) { if ($screen_name["Avatar"] == '') { if ($core == 1) { $avatar_query = "SELECT acct, name, gender, race, class, level,\n (SELECT gm FROM `" . $logon_db["name"] . "`.accounts WHERE `" . $logon_db["name"] . "`.accounts.acct=`" . $characters_db[$realm_id]['name'] . "`.characters.acct) AS gmlevel,\n (SELECT login FROM `" . $logon_db["name"] . "`.accounts WHERE `" . $logon_db["name"] . "`.accounts.acct=`" . $characters_db[$realm_id]['name'] . "`.characters.acct) AS login\n FROM `" . $characters_db[$realm_id]['name'] . "`.characters\n WHERE level IN (SELECT MAX(level) FROM `" . $characters_db[$realm_id]['name'] . "`.characters WHERE acct='" . $user_id . "')"; } elseif ($core == 2) { $avatar_query = "SELECT account AS acct, name, gender, race, class, level,\n (SELECT gmlevel FROM `" . $logon_db["name"] . "`.account WHERE `" . $logon_db["name"] . "`.account.id=`" . $characters_db[$realm_id]['name'] . "`.characters.account) AS gmlevel,\n (SELECT username FROM `" . $logon_db["name"] . "`.account WHERE `" . $logon_db["name"] . "`.account.id=`" . $characters_db[$realm_id]['name'] . "`.characters.account) AS login\n FROM `" . $characters_db[$realm_id]['name'] . "`.characters\n WHERE level IN (SELECT MAX(level) FROM `" . $characters_db[$realm_id]['name'] . "`.characters WHERE account='" . $user_id . "') AND account='" . $user_id . "'"; } else { $avatar_query = "SELECT account AS acct, name, gender, race, class, level,\n (SELECT gmlevel FROM `" . $logon_db["name"] . "`.account_access WHERE `" . $logon_db["name"] . "`.account_access.id=`" . $characters_db[$realm_id]['name'] . "`.characters.account) AS gmlevel,\n (SELECT username FROM `" . $logon_db["name"] . "`.account WHERE `" . $logon_db["name"] . "`.account.id=`" . $characters_db[$realm_id]['name'] . "`.characters.account) AS login\n FROM `" . $characters_db[$realm_id]['name'] . "`.characters\n WHERE level IN (SELECT MAX(level) FROM `" . $characters_db[$realm_id]['name'] . "`.characters WHERE account='" . $user_id . "') AND account='" . $user_id . "'"; } $avatar_result = $sql["char"]->query($avatar_query); $avatar_fields = $sql["char"]->fetch_assoc($avatar_result); $avatar = gen_avatar_panel($avatar_fields["level"], $avatar_fields["gender"], $avatar_fields["race"], $avatar_fields["class"], 1, 0); $screen_name["avatarlevel"] = $avatar_fields["level"]; $screen_name["avatarrace"] = $avatar_fields["race"]; $screen_name["avatarclass"] = $avatar_fields["class"]; $screen_name["avatarsex"] = $avatar_fields["gender"]; } else { $avatar = gen_avatar_panel($screen_name["avatarlevel"], $screen_name["avatarsex"], $screen_name["avatarrace"], $screen_name["avatarclass"], 1, $screen_name["SecurityLevel"]); } $output .= ' <tr> <td id="forum_topic_avatar" rowspan="6"> <center>' . $avatar . '</center> </td> <tr> <td>' . lang("edit", "usedefault") . ':</td> <td><input type="checkbox" name="use_default" value="1" ' . ($screen_name["Avatar"] == '' ? 'checked="checked"' : '') . ' /> ' . lang("edit", "usedefaultinfo") . '</td> </tr> <td>' . lang("edit", "gender") . ':</td> <td> <select name="avatargender"> <option value="0" ' . ($screen_name["avatarsex"] == 0 ? 'selected="selected"' : '') . ' >' . lang("edit", "male") . '</option> <option value="1" ' . ($screen_name["avatarsex"] == 1 ? 'selected="selected"' : '') . ' >' . lang("edit", "female") . '</option> </select> </td> </tr> <tr> <td>' . lang("edit", "race") . ':</td> <td> <select name="avatarrace">'; $races = array(1 => array(1, lang("id_tab", "human")), 2 => array(2, lang("id_tab", "orc")), 3 => array(3, lang("id_tab", "dwarf")), 4 => array(4, lang("id_tab", "nightelf")), 5 => array(5, lang("id_tab", "undead")), 6 => array(6, lang("id_tab", "tauren")), 7 => array(7, lang("id_tab", "gnome")), 8 => array(8, lang("id_tab", "troll")), 10 => array(10, lang("id_tab", "bloodelf")), 11 => array(11, lang("id_tab", "draenei"))); foreach ($races as $race) { $output .= ' <option value="' . $race[0] . '" ' . ($screen_name["avatarrace"] == $race[0] ? 'selected="selected"' : '') . ' >' . $race[1] . '</option>'; } $output .= ' </select> </td> </tr> <tr> <td>' . lang("edit", "class") . ':</td> <td> <select name="avatarclass">'; $classes = $class_names = array(1 => array(1, lang("id_tab", "warrior")), 2 => array(2, lang("id_tab", "paladin")), 3 => array(3, lang("id_tab", "hunter")), 4 => array(4, lang("id_tab", "rogue")), 5 => array(5, lang("id_tab", "priest")), 6 => array(6, lang("id_tab", "death_knight")), 7 => array(7, lang("id_tab", "shaman")), 8 => array(8, lang("id_tab", "mage")), 9 => array(9, lang("id_tab", "warlock")), 11 => array(11, lang("id_tab", "druid"))); foreach ($classes as $class) { $output .= ' <option value="' . $class[0] . '" ' . ($screen_name["avatarclass"] == $class[0] ? 'selected="selected"' : '') . ' >' . $class[1] . '</option>'; } $output .= ' </select> </td> </tr> <tr> <td>' . lang("edit", "level") . ':</td> <td> <input type="text" name="avatarlevel" value="' . $screen_name["avatarlevel"] . '" /> </td> </tr>'; } else { $output .= ' <tr> <td id="forum_topic_avatar" rowspan="4"> <div>' . gen_avatar_panel($screen_name["avatarlevel"], $screen_name["avatarsex"], $screen_name["avatarrace"], $screen_name["avatarclass"], 0, $screen_name["SecurityLevel"]) . '</div> </td> <td>' . lang("edit", "gender") . ':</td> <td>' . lang("edit", "unavailable") . '</td> </tr> <tr> <td>' . lang("edit", "race") . ':</td> <td>' . lang("edit", "unavailable") . '</td> </tr> <tr> <td>' . lang("edit", "class") . ':</td> <td>' . lang("edit", "unavailable") . '</td> </tr> <tr> <td>' . lang("edit", "level") . ':</td> <td>' . lang("edit", "unavailable") . '</td> </tr>'; } $output .= ' <tr> <td></td> </tr> <tr> <td></td> </tr> <tr> <td align="left" colspan="3">' . lang("edit", "viewmods") . '</td> </tr> <tr> <td>' . lang("char", "char_sheet") . ':</td> <td colspan="2"> <select name="viewmod_sheet"> <option value="0" ' . ($screen_name["View_Mod_Sheet"] == 0 ? 'selected="selected" ' : '') . '>' . lang("edit", "onlyme") . '</option> <!-- option value="1" ' . ($screen_name["View_Mod_Sheet"] == 1 ? 'selected="selected" ' : '') . '>' . lang("edit", "friends") . '</option --> <option value="2" ' . ($screen_name["View_Mod_Sheet"] == 2 ? 'selected="selected" ' : '') . '>' . lang("edit", "reg_users") . '</option> </select> </td> </tr> <tr> <td>' . lang("char", "achievements") . ':</td> <td colspan="2"> <select name="viewmod_achieve"> <option value="0" ' . ($screen_name["View_Mod_Achieve"] == 0 ? 'selected="selected" ' : '') . '>' . lang("edit", "onlyme") . '</option> <!-- option value="1" ' . ($screen_name["View_Mod_Achieve"] == 1 ? 'selected="selected" ' : '') . '>' . lang("edit", "friends") . '</option --> <option value="2" ' . ($screen_name["View_Mod_Achieve"] == 2 ? 'selected="selected" ' : '') . '>' . lang("edit", "reg_users") . '</option> </select> </td> </tr> <tr> <td>' . lang("char", "friends") . ':</td> <td colspan="2"> <select name="viewmod_friends"> <option value="0" ' . ($screen_name["View_Mod_Friends"] == 0 ? 'selected="selected" ' : '') . '>' . lang("edit", "onlyme") . '</option> <!-- option value="1" ' . ($screen_name["View_Mod_Friends"] == 1 ? 'selected="selected" ' : '') . '>' . lang("edit", "friends") . '</option --> <option value="2" ' . ($screen_name["View_Mod_Friends"] == 2 ? 'selected="selected" ' : '') . '>' . lang("edit", "reg_users") . '</option> </select> </td> </tr> <tr> <td>' . lang("char", "inventory") . ':</td> <td colspan="2"> <select name="viewmod_inv"> <option value="0" ' . ($screen_name["View_Mod_Inv"] == 0 ? 'selected="selected" ' : '') . '>' . lang("edit", "onlyme") . '</option> <!-- option value="1" ' . ($screen_name["View_Mod_Inv"] == 1 ? 'selected="selected" ' : '') . '>' . lang("edit", "friends") . '</option --> <option value="2" ' . ($screen_name["View_Mod_Inv"] == 2 ? 'selected="selected" ' : '') . '>' . lang("edit", "reg_users") . '</option> </select> </td> </tr> <tr> <td>' . lang("char", "pets") . ':</td> <td colspan="2"> <select name="viewmod_pets"> <option value="0" ' . ($screen_name["View_Mod_Pets"] == 0 ? 'selected="selected" ' : '') . '>' . lang("edit", "onlyme") . '</option> <!-- option value="1" ' . ($screen_name["View_Mod_Pets"] == 1 ? 'selected="selected" ' : '') . '>' . lang("edit", "friends") . '</option --> <option value="2" ' . ($screen_name["View_Mod_Pets"] == 2 ? 'selected="selected" ' : '') . '>' . lang("edit", "reg_users") . '</option> </select> </td> </tr> <tr> <td>' . lang("char", "pvp") . ':</td> <td colspan="2"> <select name="viewmod_pvp"> <option value="0" ' . ($screen_name["View_Mod_PvP"] == 0 ? 'selected="selected" ' : '') . '>' . lang("edit", "onlyme") . '</option> <!-- option value="1" ' . ($screen_name["View_Mod_PvP"] == 1 ? 'selected="selected" ' : '') . '>' . lang("edit", "friends") . '</option --> <option value="2" ' . ($screen_name["View_Mod_PvP"] == 2 ? 'selected="selected" ' : '') . '>' . lang("edit", "reg_users") . '</option> </select> </td> </tr> <tr> <td>' . lang("char", "quests") . ':</td> <td colspan="2"> <select name="viewmod_quests"> <option value="0" ' . ($screen_name["View_Mod_Quest"] == 0 ? 'selected="selected" ' : '') . '>' . lang("edit", "onlyme") . '</option> <!-- option value="1" ' . ($screen_name["View_Mod_Quest"] == 1 ? 'selected="selected" ' : '') . '>' . lang("edit", "friends") . '</option --> <option value="2" ' . ($screen_name["View_Mod_Quest"] == 2 ? 'selected="selected" ' : '') . '>' . lang("edit", "reg_users") . '</option> </select> </td> </tr> <tr> <td>' . lang("char", "reputation") . ':</td> <td colspan="2"> <select name="viewmod_rep"> <option value="0" ' . ($screen_name["View_Mod_Rep"] == 0 ? 'selected="selected" ' : '') . '>' . lang("edit", "onlyme") . '</option> <!-- option value="1" ' . ($screen_name["View_Mod_Rep"] == 1 ? 'selected="selected" ' : '') . '>' . lang("edit", "friends") . '</option --> <option value="2" ' . ($screen_name["View_Mod_Rep"] == 2 ? 'selected="selected" ' : '') . '>' . lang("edit", "reg_users") . '</option> </select> </td> </tr> <tr> <td>' . lang("char", "skills") . ':</td> <td colspan="2"> <select name="viewmod_skills"> <option value="0" ' . ($screen_name["View_Mod_Skill"] == 0 ? 'selected="selected" ' : '') . '>' . lang("edit", "onlyme") . '</option> <!-- option value="1" ' . ($screen_name["View_Mod_Skill"] == 1 ? 'selected="selected" ' : '') . '>' . lang("edit", "friends") . '</option --> <option value="2" ' . ($screen_name["View_Mod_Skill"] == 2 ? 'selected="selected" ' : '') . '>' . lang("edit", "reg_users") . '</option> </select> </td> </tr> <tr> <td>' . lang("char", "talents") . ':</td> <td colspan="2"> <select name="viewmod_talents"> <option value="0" ' . ($screen_name["View_Mod_Talent"] == 0 ? 'selected="selected" ' : '') . '>' . lang("edit", "onlyme") . '</option> <!-- option value="1" ' . ($screen_name["View_Mod_Talent"] == 1 ? 'selected="selected" ' : '') . '>' . lang("edit", "friends") . '</option --> <option value="2" ' . ($screen_name["View_Mod_Talent"] == 2 ? 'selected="selected" ' : '') . '>' . lang("edit", "reg_users") . '</option> </select> </td> </tr> <tr> <td>' . lang("char", "view") . ':</td> <td colspan="2"> <select name="viewmod_view"> <option value="0" ' . ($screen_name["View_Mod_View"] == 0 ? 'selected="selected" ' : '') . '>' . lang("edit", "onlyme") . '</option> <!-- option value="1" ' . ($screen_name["View_Mod_View"] == 1 ? 'selected="selected" ' : '') . '>' . lang("edit", "friends") . '</option --> <option value="2" ' . ($screen_name["View_Mod_View"] == 2 ? 'selected="selected" ' : '') . '>' . lang("edit", "reg_users") . '</option> </select> </td> </tr> <tr> <td></td> </tr> <tr> <td>'; makebutton(lang("edit", "save"), 'javascript:do_submit(\'form3\', 0)', 130); $output .= ' </td> </tr> </table> </form> </div> <div id="edit_invites_fieldset" class="fieldset_border center"> <span class="legend">' . lang("edit", "invite_options") . '</span> <table class="hidden" id="edit_invites_table"> <tr> <td align="left">' . lang("edit", "invite_email") . ': </td> <td align="right"> <form action="edit.php" method="get" id="form4"> <div> <input type="hidden" name="action" value="send_invite" /> <input type="text" name="invite_email" value="" size="30" /> </div> </form> </td> </tr> <tr> <td colspan="2">'; makebutton(lang("edit", "sendinvite"), 'javascript:do_submit(\'form4\', 0)', 130); $output .= ' </td> </tr> <tr> <td> </td> </tr> <tr> <td align="left" colspan="2">' . lang("edit", "active_invites") . ': </td> </tr> <tr> <td colspan="2"> <table class="lined" id="active_invites_table"> <tr> <th style="width: 15%;">Delete</th> <th>Email</th> <th style="width: 15%">Resend</th> </tr>'; $invites_query = "SELECT * FROM invitations WHERE issuer_acct_id='" . $user_id . "'"; $invites_result = $sql["mgr"]->query($invites_query); while ($row = $sql["mgr"]->fetch_assoc($invites_result)) { $output .= ' <tr> <td> <a href="edit.php?action=delete_invite&key=' . $row["invitation_key"] . '"> <img src="img/aff_cross.png" alt="Delete" /> </a> </td> <td>' . $row["invited_email"] . '</td> <td> <a href="edit.php?action=resend_invite&key=' . $row["invitation_key"] . '"> <img src="img/add.png" alt="Resend" /> </a> </td> </tr>'; } $output .= ' </table> </td> </tr> </table> </div> <br /> <div id="edit_prizebags_fieldset" class="fieldset_border center"> <span class="legend">' . lang("edit", "my_bags") . '</span> <table class="hidden" id="edit_prizebags_table">'; // $bag_query = "SELECT * FROM point_system_prize_bags WHERE owner='" . $user_id . "'"; $bag_result = $sql["mgr"]->query($bag_query); $output_temp = '<tr><td style="display: none;"></td></tr>'; while ($bag = $sql["mgr"]->fetch_assoc($bag_result)) { $output_temp .= ' <tr> <td align="right"> <a href="point_system.php?action=view_bag&bag_id=' . $bag["entry"] . '"> <img src="' . get_item_icon(1725) . '" alt="" /> </a> </td> <td align="left"> <span> ' . $bag["slots"] . ' ' . lang("edit", "bag_slots") . '</span> </td> </tr>'; } $output .= $output_temp; $output .= ' </table> </div> <br /> <div id="edit_theme_fieldset" class="fieldset_border center"> <span class="legend">' . lang("edit", "theme_options") . '</span> <table class="hidden" id="edit_theme_table"> <tr> <td align="left">' . lang("edit", "select_layout_lang") . ': </td> <td align="right"> <form action="edit.php" method="get" id="form1"> <div> <input type="hidden" name="action" value="lang_set" /> <select name="lang"> <optgroup label="' . lang("edit", "language") . '">'; if (is_dir('./lang')) { if ($dh = opendir('./lang')) { while (($file = readdir($dh)) == true) { $lang = explode('.', $file); if (isset($lang[1]) && $lang[1] == 'php') { $output .= ' <option value="' . $lang[0] . '"' . (isset($_COOKIE["corem_lang"]) && $_COOKIE["corem_lang"] == $lang[0] ? ' selected="selected" ' : '') . '>' . lang("edit", $lang[0]) . '</option>'; } } closedir($dh); } } $output .= ' </optgroup> </select> </div> </form> </td> <td>'; makebutton(lang("edit", "save"), 'javascript:do_submit(\'form1\', 0)', 130); $output .= ' </td> </tr> <tr> <td align="left">' . lang("edit", "select_theme") . ': </td> <td align="right"> <form action="edit.php" method="get" id="form2"> <div> <input type="hidden" name="action" value="theme_set" /> <select name="theme"> <optgroup label="' . lang("edit", "theme") . '">'; if (is_dir('./themes')) { if ($dh = opendir('./themes')) { while (($file = readdir($dh)) == true) { if ($file == '.' || $file == '..' || $file == '.htaccess' || $file == 'index.html' || $file == '.svn') { } else { $output .= ' <option value="' . $file . '"' . (isset($_COOKIE["corem_theme"]) && $_COOKIE["corem_theme"] == $file ? ' selected="selected" ' : '') . '>' . $file . '</option>'; } } closedir($dh); } } $output .= ' </optgroup> </select> </div> </form> </td> <td>'; makebutton(lang("edit", "save"), 'javascript:do_submit(\'form2\',0)', 130); $output .= ' </td> </tr> </table> </div> <br />'; } else { error(lang("global", "err_no_records_found")); } }
function front(&$sqlr, &$sqlc, &$sqlm) { global $output, $lang_global, $lang_index, $realm_id, $world_db, $mmfpm_db, $server, $action_permission, $user_lvl, $user_id, $showcountryflag, $motd_display_poster, $gm_online_count, $gm_online, $itemperpage; $output .= ' <div class="top">'; if (test_port($server[$realm_id]['addr'], $server[$realm_id]['game_port'])) { $stats = $sqlr->fetch_assoc($sqlr->query('SELECT starttime, maxplayers FROM uptime WHERE realmid = ' . $realm_id . ' ORDER BY starttime DESC LIMIT 1'), 0); $uptimetime = time() - $stats['starttime']; function format_uptime($seconds) { $secs = intval($seconds % 60); $mins = intval($seconds / 60 % 60); $hours = intval($seconds / 3600 % 24); $days = intval($seconds / 86400); $uptimeString = ''; if ($days) { $uptimeString .= $days; $uptimeString .= 1 === $days ? ' day' : ' days'; } if ($hours) { $uptimeString .= (0 < $days ? ', ' : '') . $hours; $uptimeString .= 1 === $hours ? ' hour' : ' hours'; } if ($mins) { $uptimeString .= (0 < $days || 0 < $hours ? ', ' : '') . $mins; $uptimeString .= 1 === $mins ? ' minute' : ' minutes'; } if ($secs) { $uptimeString .= (0 < $days || 0 < $hours || 0 < $mins ? ', ' : '') . $secs; $uptimeString .= 1 === $secs ? ' second' : ' seconds'; } return $uptimeString; } $staticUptime = $lang_index['realm'] . ' <em>' . htmlentities(get_realm_name($realm_id)) . '</em> ' . $lang_index['online'] . ' for ' . format_uptime($uptimetime); unset($uptimetime); $output .= ' <div id="uptime"> <h1> <font color="#55aa55">' . $staticUptime . '<br />' . $lang_index['maxplayers'] . ': ' . $stats['maxplayers'] . '</font> </h1> </div>'; unset($staticUptime); unset($stats); $online = true; } else { $output .= ' <h1> <font class="error">' . $lang_index['realm'] . ' <em>' . htmlentities(get_realm_name($realm_id)) . '</em> ' . $lang_index['offline_or_let_high'] . '</font> </h1>'; $online = false; } $sqlw = new SQL(); $sqlw->connect($world_db[$realm_id]['addr'], $world_db[$realm_id]['user'], $world_db[$realm_id]['pass'], $world_db[$realm_id]['name']); // This retrieves the actual database version from the database itself, instead of hardcoding it into a string $version = $sqlw->fetch_assoc($sqlw->query('SELECT core_revision, db_version FROM version'), 0); $output .= ' ' . $lang_index['trinity_rev'] . ' ' . $version['core_revision'] . ' ' . $lang_index['using_db'] . ' ' . $version['db_version'] . ' </div>'; unset($version); //MOTD part $start_m = isset($_GET['start_m']) ? $sqlc->quote_smart($_GET['start_m']) : 0; if (is_numeric($start_m)) { } else { $start_m = 0; } $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); $all_record_m = $sqlm->result($sqlm->query('SELECT count(*) FROM mm_motd'), 0); if ($user_lvl >= $action_permission['delete']) { $output .= ' <script type="text/javascript"> // <![CDATA[ answerbox.btn_ok="' . $lang_global['yes_low'] . '"; answerbox.btn_cancel="' . $lang_global['no'] . '"; var del_motd = "motd.php?action=delete_motd&id="; // ]]> </script>'; } $output .= ' <center> <table class="lined"> <tr> <th align="right">'; if ($user_lvl >= $action_permission['insert']) { $output .= ' <a href="motd.php?action=add_motd">' . $lang_index['add_motd'] . '</a>'; } $output .= ' </th> </tr>'; if ($all_record_m) { $result = $sqlm->query('SELECT id, realmid, type, content FROM mm_motd WHERE realmid = ' . $realm_id . ' ORDER BY id DESC LIMIT ' . $start_m . ', 3'); while ($post = $sqlm->fetch_assoc($result)) { $output .= ' <tr> <td align="left" class="large"> <blockquote>' . bbcode_bbc2html($post['content']) . '</blockquote> </td> </tr> <tr> <td align="right">'; $motd_display_poster ? $output .= $post['type'] : ''; if ($user_lvl >= $action_permission['delete']) { $output .= ' <img src="img/cross.png" width="12" height="12" onclick="answerBox(\'' . $lang_global['delete'] . ': <font color=white>' . $post['id'] . '</font><br />' . $lang_global['are_you_sure'] . '\', del_motd + ' . $post['id'] . ');" style="cursor:pointer;" alt="" />'; } if ($user_lvl >= $action_permission['update']) { $output .= ' <a href="motd.php?action=edit_motd&error=3&id=' . $post['id'] . '"> <img src="img/edit.png" width="14" height="14" alt="" /> </a>'; } $output .= ' </td> </tr> <tr> <td class="hidden"></td> </tr>'; } if ($online) { $output .= '%%REPLACE_TAG%%'; } else { $output .= ' <tr> <td align="right" class="hidden">' . generate_pagination('index.php?start=0', $all_record_m, 3, $start_m, 'start_m') . '</td> </tr>'; } } $output .= ' </table>'; //print online chars if ($online) { //==========================$_GET and SECURE================================= $start = isset($_GET['start']) ? $sqlc->quote_smart($_GET['start']) : 0; if (is_numeric($start)) { } else { $start = 0; } $order_by = isset($_GET['order_by']) ? $sqlc->quote_smart($_GET['order_by']) : 'level'; if (preg_match('/^[_[:lower:]]{1,12}$/', $order_by)) { } else { $order_by = 'level'; } $dir = isset($_GET['dir']) ? $sqlc->quote_smart($_GET['dir']) : 1; if (preg_match('/^[01]{1}$/', $dir)) { } else { $dir = 1; } $order_dir = $dir ? 'DESC' : 'ASC'; $dir = $dir ? 0 : 1; //==========================$_GET and SECURE end============================= if ($order_by === 'map') { $order_by = 'map ' . $order_dir . ', zone'; } elseif ($order_by === 'zone') { $order_by = 'zone ' . $order_dir . ', map'; } $order_side = ''; if ($user_lvl || $server[$realm_id]['both_factions']) { } else { $result = $sqlc->query('SELECT race FROM characters WHERE account = ' . $user_id . ' AND totaltime = (SELECT MAX(totaltime) FROM characters WHERE account = ' . $user_id . ') LIMIT 1'); if ($sqlc->num_rows($result)) { $order_side = in_array($sqlc->result($result, 0), array(2, 5, 6, 8, 10)) ? ' AND race IN (2,5,6,8,10) ' : ' AND race IN (1,3,4,7,11) '; } } if ($order_by == 'ip') { $result = $sqlr->query('SELECT id, last_ip FROM account WHERE online = 1 ORDER BY last_ip ' . $order_dir . ' LIMIT ' . $start . ', ' . $itemperpage . ''); } else { $result = $sqlc->query('SELECT characters.guid, characters.name, characters.race, characters.class, characters.zone, characters.map, characters.level, characters.account, characters.gender, characters.totalHonorPoints, COALESCE(guild_member.guildid,0) AS guildid FROM characters LEFT JOIN guild_member ON guild_member.guid = characters.guid WHERE characters.online = 1 ' . ($gm_online == '0' ? 'AND characters.extra_flags &1 = 0 ' : '') . $order_side . ' ORDER BY ' . $order_by . ' ' . $order_dir . ' LIMIT ' . $start . ', ' . $itemperpage); } $total_online = $sqlc->result($sqlc->query('SELECT count(*) FROM characters WHERE online= 1' . ($gm_online_count == '0' ? ' AND extra_flags &1 = 0' : '')), 0); $replace = ' <tr> <td align="right" class="hidden">' . generate_pagination('index.php?start=' . $start . '&order_by=' . $order_by . '&dir=' . ($dir ? 0 : 1) . '', $all_record_m, 3, $start_m, 'start_m') . '</td> </tr>'; unset($all_record_m); $output = str_replace('%%REPLACE_TAG%%', $replace, $output); unset($replace); $output .= ' <font class="bold">' . $lang_index['tot_users_online'] . ': ' . $total_online . '</font> <table class="lined"> <tr> <td colspan="' . (10 - $showcountryflag) . '" align="right" class="hidden" width="25%">'; $output .= generate_pagination('index.php?start_m=' . $start_m . '&order_by=' . $order_by . '&dir=' . ($dir ? 0 : 1), $total_online, $itemperpage, $start); $output .= ' </td> </tr> <tr> <th width="15%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=name&dir=' . $dir . '"' . ($order_by === 'name' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['name'] . '</a></th> <th width="1%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=race&dir=' . $dir . '"' . ($order_by === 'race' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['race'] . '</a></th> <th width="1%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=class&dir=' . $dir . '"' . ($order_by === 'class' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['class'] . '</a></th> <th width="5%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=level&dir=' . $dir . '"' . ($order_by === 'level' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['level'] . '</a></th> <th width="1%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=totalHonorPoints&dir=' . $dir . '"' . ($order_by === 'totalHonorPoints' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['rank'] . '</a></th> <th width="15%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=guildid&dir=' . $dir . '"' . ($order_by === 'guildid' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['guild'] . '</a></th> <th width="20%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=map&dir=' . $dir . '"' . ($order_by === 'map ' . $order_dir . ', zone' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['map'] . '</a></th> <th width="25%"><a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=zone&dir=' . $dir . '"' . ($order_by === 'zone ' . $order_dir . ', map' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['zone'] . '</a></th>'; if ($showcountryflag) { require_once 'libs/misc_lib.php'; $output .= ' <th width="1%">' . $lang_global['country'] . '</th>'; } $output .= ' </tr>'; $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); while ($char = $sqlc->fetch_assoc($result)) { if ($order_by == 'ip') { $temp = $sqlc->fetch_assoc($sqlc->query('SELECT characters.guid, characters.name, characters.race, characters.class, characters.zone, characters.map, characters.level, characters.account, characters.gender, characters.totalHonorPoints, COALESCE(guild_member.guildid,0) AS guildid FROM characters LEFT JOIN guild_member ON guild_member.guid = characters.guid WHERE characters.online= 1 ' . ($gm_online == '0' ? 'AND characters.extra_flags &1 = 0 ' : '') . $order_side . ' and account = ' . $char['id'])); if (isset($temp['guid'])) { $char = $temp; } else { continue; } } $gm = $sqlr->result($sqlr->query('SELECT gmlevel FROM account_access WHERE id=' . $char['account'] . ''), 0); $guild_name = $sqlc->result($sqlc->query('SELECT name FROM guild WHERE guildid=' . $char['guildid'] . '')); $output .= ' <tr> <td>'; if ($user_lvl >= $gm) { $output .= ' <a href="char.php?id=' . $char['guid'] . '"> <span onmousemove="toolTip(\'' . id_get_gm_level($gm) . '\', \'item_tooltip\')" onmouseout="toolTip()">' . htmlentities($char['name']) . '</span> </a>'; } else { $output .= ' <span onmousemove="toolTip(\'' . id_get_gm_level($gm) . '\', \'item_tooltip\')" onmouseout="toolTip()">' . htmlentities($char['name']) . '</span>'; } $output .= ' </td> <td> <img src="img/c_icons/' . $char['race'] . '-' . $char['gender'] . '.gif" onmousemove="toolTip(\'' . char_get_race_name($char['race']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /> </td> <td> <img src="img/c_icons/' . $char['class'] . '.gif" onmousemove="toolTip(\'' . char_get_class_name($char['class']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /> </td> <td>' . char_get_level_color($char['level']) . '</td> <td> <span onmouseover="toolTip(\'' . char_get_pvp_rank_name($char['totalHonorPoints'], char_get_side_id($char['race'])) . '\', \'item_tooltip\')" onmouseout="toolTip()" style="color: white;"><img src="img/ranks/rank' . char_get_pvp_rank_id($char['totalHonorPoints'], char_get_side_id($char['race'])) . '.gif" alt="" /></span> </td> <td> <a href="guild.php?action=view_guild&error=3&id=' . $char['guildid'] . '">' . htmlentities($guild_name) . '</a> </td> <td><span onmousemove="toolTip(\'MapID:' . $char['map'] . '\', \'item_tooltip\')" onmouseout="toolTip()">' . get_map_name($char['map'], $sqlm) . '</span></td> <td><span onmousemove="toolTip(\'ZoneID:' . $char['zone'] . '\', \'item_tooltip\')" onmouseout="toolTip()">' . get_zone_name($char['zone'], $sqlm) . '</span></td>'; if ($showcountryflag) { $country = misc_get_country_by_account($char['account'], $sqlr, $sqlm); $output .= ' <td>' . ($country['code'] ? '<img src="img/flags/' . $country['code'] . '.png" onmousemove="toolTip(\'' . $country['country'] . '\',\'item_tooltip\')" onmouseout="toolTip()" alt="" />' : '-') . '</td>'; } $output .= ' </tr>'; } $output .= ' <tr>'; $output .= ' <td colspan="' . (10 - $showcountryflag) . '" align="right" class="hidden" width="25%">'; $output .= generate_pagination('index.php?start_m=' . $start_m . '&order_by=' . $order_by . '&dir=' . ($dir ? 0 : 1), $total_online, $itemperpage, $start); unset($total_online); $output .= ' </td> </tr> </table> <br /> </center>'; } }
function 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 edit_user(&$sqlr, &$sqlc) { global $output, $lang_edit, $lang_global, $mmfpm_db, $characters_db, $user_name, $user_id, $expansion_select, $server, $developer_test_mode, $multi_realm_mode; $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); $refguid = $sqlm->result($sqlm->query('SELECT InvitedBy FROM mm_point_system_invites WHERE PlayersAccount = \'' . $user_id . '\''), 0, 'InvitedBy'); $referred_by = $sqlc->result($sqlc->query('SELECT name FROM characters WHERE guid = \'' . $refguid . '\''), 0, 'name'); unset($refguid); if ($acc = $sqlc->fetch_assoc($sqlr->query('SELECT email, gmlevel, joindate, expansion, last_ip FROM account LEFT JOIN account_access ON account.id=account_access.id WHERE username = \'' . $user_name . '\''))) { if ($acc['gmlevel'] == null) { $acc['gmlevel'] = 0; } $output .= ' <center> <script type="text/javascript" src="libs/js/sha1.js"></script> <script type="text/javascript"> // <![CDATA[ function do_submit_data () { document.form.pass.value = hex_sha1(\'' . strtoupper($user_name) . ':\'+document.form.user_pass.value.toUpperCase()); document.form.user_pass.value = \'0\'; do_submit(); } // ]]> </script> <fieldset style="width: 550px;"> <legend>' . $lang_edit['edit_acc'] . '</legend> <form method="post" action="edit.php?action=doedit_user" name="form"> <input type="hidden" name="pass" value="" maxlength="256" /> <table class="flat"> <tr> <td>' . $lang_edit['id'] . '</td> <td>' . $user_id . '</td> </tr> <tr> <td>' . $lang_edit['username'] . '</td> <td>' . $user_name . '</td> </tr> <tr> <td>' . $lang_edit['password'] . '</td> <td><input type="text" name="user_pass" size="42" maxlength="40" value="******" /></td> </tr> <tr> <td>' . $lang_edit['mail'] . '</td> <td><input type="text" name="mail" size="42" maxlength="225" value="' . $acc['email'] . '" /></td> </tr> <tr> <td>' . $lang_edit['invited_by'] . ':</td> <td>'; if ($referred_by == NULL) { $output .= ' <input type="text" name="referredby" size="42" maxlength="12" value="' . $referred_by . '" />'; } else { $output .= ' ' . $referred_by . ''; } $output .= ' </td> </tr> <tr> <td>' . $lang_edit['gm_level'] . '</td> <td>' . id_get_gm_level($acc['gmlevel']) . ' ( ' . $acc['gmlevel'] . ' )</td> </tr> <tr> <td>' . $lang_edit['join_date'] . '</td> <td>' . $acc['joindate'] . '</td> </tr> <tr> <td>' . $lang_edit['last_ip'] . '</td> <td>' . $acc['last_ip'] . '</td> </tr>'; if ($expansion_select) { $output .= ' <tr> <td >' . $lang_edit['client_type'] . ':</td> <td> <select name="expansion"> <option value="2" '; if ($acc['expansion'] == 2) { $output .= 'selected="selected"'; } $output .= '>' . $lang_edit['wotlk'] . '</option> <option value="1" '; if ($acc['expansion'] == 1) { $output .= 'selected="selected"'; } $output .= '>' . $lang_edit['tbc'] . '</option> <option value="0" '; if ($acc['expansion'] == 0) { $output .= 'selected="selected"'; } $output .= '>' . $lang_edit['classic'] . '</option> </select> </td> </tr>'; } $output .= ' <tr> <td>' . $lang_edit['tot_chars'] . '</td> <td>' . $sqlr->result($sqlr->query('SELECT SUM(numchars) FROM realmcharacters WHERE acctid = ' . $user_id . ''), 0) . '</td> </tr>'; $realms = $sqlr->query('SELECT id, name FROM realmlist'); if ($developer_test_mode && $multi_realm_mode && (1 < $sqlr->num_rows($realms) && 1 < count($server) && 1 < count($characters_db))) { while ($realm = $sqlr->fetch_assoc($realms)) { $sqlc->connect($characters_db[$realm['id']]['addr'], $characters_db[$realm['id']]['user'], $characters_db[$realm['id']]['pass'], $characters_db[$realm['id']]['name']); $result = $sqlc->query('SELECT guid, name, race, class, level, gender FROM characters WHERE account = ' . $user_id . ''); $output .= ' <tr> <td>' . $lang_edit['characters'] . ' ' . $realm['name'] . '</td> <td>' . $sqlc->num_rows($result) . '</td> </tr>'; while ($char = $sqlc->fetch_assoc($result)) { $output .= ' <tr> <td> \'---></td> <td> <a href="char.php?id=' . $char['guid'] . '&realm=' . $realm['id'] . '">' . $char['name'] . ' - <img src="img/c_icons/' . $char['race'] . '-' . $char['gender'] . '.gif" onmousemove="toolTip(\'' . char_get_race_name($char['race']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /> <img src="img/c_icons/' . $char['class'] . '.gif" onmousemove="toolTip(\'' . char_get_class_name($char['class']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt=""/> - lvl ' . char_get_level_color($char['level']) . ' </a> </td> </tr>'; } } unset($realm); } else { $result = $sqlc->query('SELECT guid, name, race, class, level, gender FROM characters WHERE account = ' . $user_id . ''); $output .= ' <tr> <td>' . $lang_edit['characters'] . '</td> <td>' . $sqlc->num_rows($result) . '</td> </tr>'; while ($char = $sqlc->fetch_assoc($result)) { $output .= ' <tr> <td> \'---></td> <td> <a href="char.php?id=' . $char['guid'] . '">' . $char['name'] . ' - <img src="img/c_icons/' . $char['race'] . '-' . $char['gender'] . '.gif" onmousemove="toolTip(\'' . char_get_race_name($char['race']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /> <img src="img/c_icons/' . $char['class'] . '.gif" onmousemove="toolTip(\'' . char_get_class_name($char['class']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt=""/> - lvl ' . char_get_level_color($char['level']) . ' </a> </td> </tr>'; } } unset($result); unset($realms); $output .= ' <tr> <td>'; makebutton($lang_edit['update'], 'javascript:do_submit_data()" type="wrn', 130); $output .= ' </td> <td>'; makebutton($lang_global['back'], 'javascript:window.history.back()" type="def', 130); $output .= ' </td> </tr> </table> </form> </fieldset> <br /> <fieldset style="width: 550px;"> <legend>' . $lang_edit['theme_options'] . '</legend> <table class="hidden" style="width: 450px;"> <tr> <td align="left">' . $lang_edit['select_layout_lang'] . ' :</td> <td align="right"> <form action="edit.php" method="get" name="form1"> <input type="hidden" name="action" value="lang_set" /> <select name="lang"> <optgroup label="' . $lang_edit['language'] . '">'; if (is_dir('./lang')) { if ($dh = opendir('./lang')) { while (($file = readdir($dh)) == true) { $lang = explode('.', $file); if (isset($lang[1]) && $lang[1] == 'php') { $output .= ' <option value="' . $lang[0] . '"'; if (isset($_COOKIE['lang']) && $_COOKIE['lang'] == $lang[0]) { $output .= ' selected="selected" '; } $output .= '>' . $lang[0] . '</option>'; } } closedir($dh); } } $output .= ' </optgroup> </select> </form> </td> <td>'; makebutton($lang_edit['save'], 'javascript:do_submit(\'form1\',0)', 130); $output .= ' </td> </tr> <tr> <td align="left">' . $lang_edit['select_theme'] . ' :</td> <td align="right"> <form action="edit.php" method="get" name="form2"> <input type="hidden" name="action" value="theme_set" /> <select name="theme"> <optgroup label="' . $lang_edit['theme'] . '">'; if (is_dir('./themes')) { if ($dh = opendir('./themes')) { while (($file = readdir($dh)) == true) { if ($file == '.' || $file == '..' || $file == '.htaccess' || $file == 'index.html' || $file == '.svn') { } else { $output .= ' <option value="' . $file . '"'; if (isset($_COOKIE['theme']) && $_COOKIE['theme'] == $file) { $output .= ' selected="selected" '; } $output .= '>' . $file . '</option>'; } } closedir($dh); } } $output .= ' </optgroup> </select> </form> </td> <td>'; makebutton($lang_edit['save'], 'javascript:do_submit(\'form2\',0)', 130); $output .= ' </td> </tr> </table> </fieldset> <br /> </center>'; } else { error($lang_global['err_no_records_found']); } }
function gen_avatar_panel($level, $sex, $race, $class, $info = 1, $gm = 0) { require_once "libs/char_lib.php"; global $lang_index; $return = "<div border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\" background: transparent url("; $return .= char_get_avatar_img($level, $sex, $race, $class, $gm); $return .= ") repeat scroll 0%; width: 64px; height: 64px;\">"; $return .= "<div style=\"background: transparent url(img/avatars/frame/full.gif) repeat scroll 0%; position:relative;left:0px;top:0px; width: 64px; height: 64px;\"></div>"; $return .= "<div style=\"text-align:center;font-weight:bold;color:white;position:relative;left:21px;top:-18px; width: 24px; height: 24px;\">\r\n {$level}\r\n </div></div>"; if ($gm > 0) { require_once "scripts/get_lib.php"; $return .= id_get_gm_level($gm) . "<br />"; } if ($info == 1) { $return .= "<div style=\"margin-top:2px;\">\r\n <a href=\"#\" onmouseover=\"toolTip('{$lang_index["class"]} : " . char_get_class_name($class) . "','item_tooltip')\" onmouseout=\"toolTip()\">\r\n <img src=\"img/c_icons/{$class}.gif\" border=\"0\" alt=\"\" /></a>\r\n <a href=\"#\" onmouseover=\"toolTip('{$lang_index["race"]} : " . char_get_race_name($race) . "','item_tooltip')\" onmouseout=\"toolTip()\">\r\n <img src=\"img/c_icons/{$race}-{$sex}.gif\" border=\"0\" alt=\"\" /></a>"; } $return .= "</div>"; return $return; }
function edit_user() { global $output, $logon_db, $characters_db, $realm_id, $corem_db, $corem_db, $realm_id, $user_lvl, $user_name, $gm_level_arr, $action_permission, $expansion_select, $developer_test_mode, $multi_realm_mode, $server, $timezone_offset, $recruit_reward_auto, $sql, $core; if (empty($_GET["acct"])) { redirect("user.php?error=10"); } $acct = $sql["logon"]->quote_smart($_GET["acct"]); if ($core == 1) { $a_query = "SELECT acct, login, gm, email, lastip, muted, UNIX_TIMESTAMP(lastlogin) AS lastlogin, flags\r\n FROM accounts\r\n WHERE acct='" . $acct . "'"; } elseif ($core == 2) { $a_query = "SELECT account.id AS acct, username AS login, gmlevel AS gm, email, last_ip AS lastip, locked AS muted, UNIX_TIMESTAMP(last_login) AS lastlogin, expansion AS flags\r\n FROM account\r\n WHERE account.id='" . $acct . "'"; } else { $a_query = "SELECT account.id AS acct, username AS login, IFNULL(account_access.gmlevel, 0) AS gm, email, last_ip AS lastip, locked AS muted, UNIX_TIMESTAMP(last_login) AS lastlogin, expansion AS flags\r\n FROM account\r\n LEFT JOIN account_access ON account.id=account_access.id\r\n WHERE account.id='" . $acct . "'"; } $result = $sql["logon"]->query($a_query); $data = $sql["logon"]->fetch_assoc($result); $o_temp = 0; foreach ($characters_db as $db) { $sqlt = new SQL(); $sqlt->connect($db["addr"], $db["user"], $db["pass"], $db["name"], $db["encoding"]); if ($core == 1) { $online_res = $sqlt->query("SELECT SUM(online) FROM characters WHERE acct='" . $data["acct"] . "'"); } else { $online_res = $sqlt->query("SELECT SUM(online) FROM characters WHERE account='" . $data["acct"] . "'"); } $online_fields = $sqlt->fetch_assoc($online_res); $o_temp += $online_fields["SUM(online)"]; } if ($o_temp != 0) { $acct_online = 1; } else { $acct_online = 0; } $query = "SELECT *,\r\n SUBSTRING_INDEX(SUBSTRING_INDEX(Avatar, ' ', 1), ' ', -1) AS avatarsex,\r\n SUBSTRING_INDEX(SUBSTRING_INDEX(Avatar, ' ', 2), ' ', -1) AS avatarrace,\r\n SUBSTRING_INDEX(SUBSTRING_INDEX(Avatar, ' ', 3), ' ', -1) AS avatarclass,\r\n SUBSTRING_INDEX(SUBSTRING_INDEX(Avatar, ' ', 4), ' ', -1) AS avatarlevel\r\n FROM config_accounts WHERE Login='******'"; $sn_result = $sql["mgr"]->query($query); $screenname = $sql["mgr"]->fetch_assoc($sn_result); if ($screenname["SecurityLevel"] == NULL) { $screenname["SecurityLevel"] = 0; } $refguid = $sql["mgr"]->fetch_assoc($sql["mgr"]->query("SELECT InvitedBy FROM point_system_invites WHERE PlayersAccount='" . $data["acct"] . "'")); $refguid = $refguid["InvitedBy"]; $referred_by = $sql["char"]->fetch_assoc($sql["char"]->query("SELECT name FROM characters WHERE guid='" . $refguid . "'")); unset($refguid); $referred_by = $referred_by["name"]; $time_offset = $timezone_offset * 3600; if ($data["lastlogin"] != 0) { $lastlog = date("F j, Y @ Hi", $data["lastlogin"] + $time_offset); } else { $lastlog = '-'; } // only display an Avatar if the player has specified one or if they're a GM. if ($screenname["Avatar"] != '' || $screenname["SecurityLevel"]) { $avatar = gen_avatar_panel($screenname["avatarlevel"], $screenname["avatarsex"], $screenname["avatarrace"], $screenname["avatarclass"], 0, $screenname["SecurityLevel"], 1); } else { $avatar = ''; } $info = $screenname["Info"]; if ($info == '' || $info == NULL) { $info = '...'; } // ArcEmu: find out if we're using an encrypted password for this account if ($core == 1) { $pass_query = "SELECT * FROM accounts WHERE login='******' AND encrypted_password<>''"; $pass_result = $sql["logon"]->query($pass_query); $arc_encrypted = $sql["logon"]->num_rows($pass_result); } if ($sql["logon"]->num_rows($result)) { $output .= ' <center> <script type="text/javascript" src="libs/js/sha1.js"></script> <script type="text/javascript"> // <![CDATA[ function do_submit_data () { var myForm = document.getElementById("form");'; if ($core == 1) { if ($arc_encrypted) { $output .= ' if ( myForm.new_pass.value != "******" ) myForm.pass.value = hex_sha1(myForm.login.value.toUpperCase() + ":" + myFormnew_pass.value.toUpperCase()); else myForm.pass.value = "******";'; } else { $output .= ' myForm.pass.value = myForm.new_pass.value;'; } } else { $output .= ' if ( myForm.new_pass.value != "******" ) myForm.pass.value = hex_sha1(myForm.login.value.toUpperCase() + ":" + myForm.new_pass.value.toUpperCase()); else myForm.pass.value = "******";'; } $output .= ' myForm.new_pass.value = "******"; do_submit(); } // ]]> </script> <div class="user_edit_account fieldset_border"> <span class="legend">' . lang("edit", "profile_info") . '</span> <table class="flat user_edit_account">'; if ($avatar != '') { $output .= ' <tr> <td id="forum_topic_header_info"> <center>' . $avatar . '</center> </td> <td> </td> </tr> <tr> <td colspan="2"> <hr /> </td> </tr>'; } $output .= ' <tr> <td colspan="2">' . $info . '</td> </tr> </table> </div> <br /> <div class="user_edit_account fieldset_border"> <span class="legend">' . lang("user", "edit_acc") . '</span> <form method="post" action="user.php?action=doedit_user" id="form"> <input type="hidden" name="pass" value="" maxlength="256" /> <input type="hidden" name="acct" value="' . $acct . '" /> <input type="hidden" name="oldscreenname" value="' . $screenname["ScreenName"] . '" /> <input type="hidden" name="oldlogin" value="' . $data["login"] . '" /> <input type="hidden" name="webadmin" value="' . ($screenname["SecurityLevel"] & 1073741824) . '" /> <table class="flat"> <tr> <td>' . lang("user", "acct") . ':</td> <td colspan="2">' . $data["acct"] . '</td> </tr> <tr> <td>' . lang("user", "login") . ':</td>'; if ($user_lvl >= $action_permission["update"]) { $output .= ' <td colspan="2"><input type="text" name="login" size="42" maxlength="15" value="' . $data["login"] . '" /></td>'; } else { if ($screenname["ScreenName"]) { $output .= ' <td colspan="2">********</td>'; } else { $output .= ' <td colspan="2">' . $data["login"] . '</td>'; } } $output .= ' </tr> <tr> <td>' . lang("user", "screenname") . ':</td>'; if ($user_lvl >= $action_permission["update"]) { $output .= ' <td colspan="2"><input type="text" name="screenname" size="42" maxlength="15" value="' . $screenname["ScreenName"] . '" /></td>'; } else { $output .= ' <td colspan="2">' . $screenname["ScreenName"] . '</td>'; } $output .= ' </tr> <tr> <td>' . lang("user", "password") . ':</td>'; if ($user_lvl >= $action_permission["update"]) { $output .= ' <td colspan="2"><input type="text" name="new_pass" size="42" maxlength="40" value="******" /></td>'; } else { $output .= ' <td colspan="2">********</td>'; } $output .= ' </tr> <tr> <td>' . lang("user", "email") . ':</td>'; if ($user_lvl >= $action_permission["update"]) { if ($screenname["TempEmail"]) { $output .= ' <td colspan="2"> <a href="user.php?action=cancel_email_change&username='******'&acct=' . $data["acct"] . '" > <img src="img/aff_warn.gif" onmousemove="oldtoolTip(\'' . lang("edit", "email_changed") . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" /> </a> <input type="text" name="mail" size="39" maxlength="225" value="' . $data["email"] . '" /> </td>'; } else { $output .= ' <td colspan="2"><input type="text" name="mail" size="42" maxlength="225" value="' . $data["email"] . '" /></td>'; } } else { $output .= ' <td colspan="2">***@***.***</td>'; } $output .= ' </tr> <tr> <td>' . lang("user", "invited_by") . ':</td> <td colspan="2">'; if ($user_lvl >= $action_permission["update"] && !$referred_by != NULL) { $output .= ' <input type="text" name="referredby" size="20" maxlength="12" value="' . $referred_by . '" /> (' . lang("user", "charname") . ')'; } else { $output .= $referred_by; } $output .= ' </td> </tr> <tr> <td>' . lang("user", "gm_level_long") . ':</td>'; if ($user_lvl >= $action_permission["update"]) { $output .= ' <td colspan="2"> <input type="text" name="gm" value="' . $data["gm"] . '" /> </td>'; } else { $output .= ' <td colspan="2">' . $data["gm"] . '</td>'; } $output .= ' </tr> <tr> <td>' . lang("user", "sec_level_long") . ':</td>'; $sec_lvl_only = $screenname["SecurityLevel"]; if ($sec_lvl_only >= 1073741824) { $sec_lvl_only -= 1073741824; } if ($user_lvl >= $action_permission["update"]) { $output .= ' <td colspan="2"> <!-- input type="text" name="seclvl" value="' . $screenname["SecurityLevel"] . '" --> <select name="seclvl">'; $s_query = "SELECT * FROM config_gm_level_names"; $s_result = $sql["mgr"]->query($s_query); while ($level = $sql["mgr"]->fetch_assoc($s_result)) { if ($level["Security_Level"] > -1 && $level["Security_Level"] <= $user_lvl) { $output .= ' <option value="' . $level["Security_Level"] . '"'; if (gmlevel($sec_lvl_only) == $level["Security_Level"]) { $output .= ' selected="selected"'; } $output .= '>' . $level["Full_Name"] . '</option>'; } } $output .= ' </select> </td>'; } else { $output .= ' <td colspan="2">' . id_get_gm_level($screenname["SecurityLevel"]) . '</td>'; } $output .= ' </tr> <tr> <td>' . lang("user", "last_ip") . ':</td>'; if ($user_lvl >= $action_permission["update"]) { $output .= ' <td colspan="2">' . $data["lastip"] . '<a href="banned.php?action=do_add_entry&entry=' . $data["lastip"] . '&bantime=3600&ban_type=ipbans"> <- ' . lang("user", "ban_this_ip") . '</a></td>'; } else { $output .= ' <td colspan="2">***.***.***.***</td>'; } $output .= ' </tr> <tr> <td>' . lang("user", "banned") . ':</td>'; if ($core == 1) { $que = $sql["logon"]->query("SELECT banned, banreason FROM accounts WHERE banned<>0 AND acct=" . $acct); } else { $que = $sql["logon"]->query("SELECT bandate, unbandate, bannedby, banreason FROM account_banned WHERE active=1 AND id=" . $acct); } if ($sql["logon"]->num_rows($que)) { $banned = $sql["logon"]->fetch_row($que); if ($core == 1) { $ban_info = ' ' . lang("user", "ban_until") . ': ' . date("d-m-Y G:i", $banned[0]); } else { $ban_info = ' ' . lang("user", "ban_from") . ': ' . date("d-m-Y G:i", $banned[0]) . ', ' . lang("user", "ban_until") . ': ' . date("d-m-Y G:i", $banned[1]) . ',<br />' . lang("user", "ban_by") . ': ' . $banned[2]; } $ban_checked = ' checked="checked"'; } else { $ban_checked = ""; $ban_info = ""; $banned[3] = ""; } if ($user_lvl >= $action_permission["update"]) { $output .= ' <td colspan="2"><input type="checkbox" name="banned" value="1" ' . $ban_checked . ' />' . $ban_info . '</td>'; } else { $output .= ' <td colspan="2">' . $ban_info . '</td>'; } $output .= ' </tr> <tr> <td>' . lang("user", "banned_reason") . ':</td>'; if ($user_lvl >= $action_permission["update"]) { $output .= ' <td colspan="2"><input type="text" name="banreason" size="42" maxlength="255" value="' . $banned[3] . '" /></td>'; } else { $output .= ' <td colspan="2">' . $banned[3] . '</td>'; } if ($expansion_select) { $output .= ' </tr> <tr>'; if ($user_lvl >= $action_permission["update"]) { $output .= ' <td>' . lang("user", "client_type") . ':</td>'; $output .= ' <td colspan="2"> <select name="expansion">'; if ($core == 1) { $output .= ' <option value="0" ' . ($data["flags"] == 0 ? 'selected="selected" ' : '') . '>' . lang("user", "classic") . '</option> <option value="8" ' . ($data["flags"] == 8 ? 'selected="selected" ' : '') . '>' . lang("user", "tbc") . '</option> <option value="16" ' . ($data["flags"] == 16 ? 'selected="selected" ' : '') . '>' . lang("user", "wotlk") . '</option> <option value="24" ' . ($data["flags"] == 24 ? 'selected="selected" ' : '') . '>' . lang("user", "wotlktbc") . '</option>'; } else { $output .= ' <option value="0" ' . ($data["flags"] == 0 ? 'selected="selected" ' : '') . '>' . lang("user", "classic") . '</option> <option value="1" ' . ($data["flags"] == 1 ? 'selected="selected" ' : '') . '>' . lang("user", "tbc") . '</option> <option value="2" ' . ($data["flags"] == 2 ? 'selected="selected" ' : '') . '>' . lang("user", "wotlktbc") . '</option>'; } $output .= ' </select> </td>'; } else { $output .= ' <td>' . lang("user", "client_type") . ':</td>'; if ($core == 1) { switch ($data["flags"]) { case 0: $output .= ' <td colspan="2">' . lang("user", "classic") . '</td>'; break; case 8: $output .= ' <td colspan="2">' . lang("user", "tbc") . '</td>'; break; case 16: $output .= ' <td colspan="2">' . lang("user", "wotlk") . '</td>'; break; case 24: $output .= ' <td colspan="2">' . lang("user", "wotlktbc") . '</td>'; break; } } else { switch ($data["flags"]) { case 0: $output .= ' <td colspan="2">' . lang("user", "classic") . '</td>'; break; case 1: $output .= ' <td colspan="2">' . lang("user", "tbc") . '</td>'; break; case 2: $output .= ' <td colspan="2">' . lang("user", "wotlktbc") . '</td>'; break; } } } } $output .= ' </tr> <tr> <td>' . lang("user", "locked") . ':</td>'; if ($user_lvl >= $action_permission["update"]) { $output .= ' <td colspan="2"> <input type="checkbox" name="locked" value="1" ' . ($data["muted"] ? ' checked="checked"' : '') . ' /> </td>'; } else { $output .= ' <td colspan="2"></td>'; } $output .= ' </tr> <tr> <td>' . lang("user", "last_login") . ':</td> <td colspan="2">' . $lastlog . '</td> </tr> <tr> <td>' . lang("user", "online") . ':</td> <td colspan="2"><img src="img/' . ($acct_online ? 'up' : 'down') . '.gif" alt="" /></td> </tr>'; if ($user_lvl >= $action_permission["update"]) { $output .= ' <tr> <td>' . lang("user", "credits") . ':</td> <td colspan="2"> <input type="text" name="credits" value="' . (double) $screenname["Credits"] . '" /> <img src="img/information.png" onmousemove="oldtoolTip(\'' . lang("user", "credits_info") . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> </td> </tr>'; } //$realms = $sql["mgr"]->query('SELECT id, name FROM realmlist'); //while ( $realm = $sql["mgr"]->fetch_assoc($realms) ) foreach ($characters_db as $db) { $sqlt = new SQL(); $sqlt->connect($db["addr"], $db["user"], $db["pass"], $db["name"], $db["encoding"]); if ($core == 1) { $query = "SELECT COUNT(*) FROM characters WHERE acct='" . $acct . "'"; } else { $query = "SELECT COUNT(*) FROM characters WHERE account='" . $acct . "'"; } $result = $sqlt->query($query); $fields = $sqlt->fetch_assoc($result); $tot_chars += $fields["COUNT(*)"]; } if ($core == 1) { $query = $sql["char"]->query("SELECT COUNT(*) FROM `characters` WHERE acct=" . $acct); } else { $query = $sql["char"]->query("SELECT COUNT(*) FROM `characters` WHERE account=" . $acct); } $chars_on_realm = $sql["char"]->result($query, 0); $output .= ' <tr> <td>' . lang("user", "tot_chars") . ':</td> <td colspan="2">' . $tot_chars . '</td> </tr>'; $realms = $sql["mgr"]->query("SELECT `Index` AS id, Name AS name FROM config_servers"); if ($sql["mgr"]->num_rows($realms) > 1 && count($server) > 1 && count($characters_db) > 1) { require_once "libs/get_lib.php"; while ($realm = $sql["mgr"]->fetch_array($realms)) { $sql["char"]->connect($characters_db[$realm[0]]['addr'], $characters_db[$realm[0]]['user'], $characters_db[$realm[0]]['pass'], $characters_db[$realm[0]]['name'], $characters_db[$realm[0]]['encoding']); if ($core == 1) { $query = $sql["char"]->query("SELECT COUNT(*) FROM `characters` WHERE acct=" . $acct); } else { $query = $sql["char"]->query("SELECT COUNT(*) FROM `characters` WHERE account=" . $acct); } $chars_on_realm = $sql["char"]->result($query, 0); $output .= ' <tr> <td colspan="3"> </td> </tr> <tr> <td colspan="3">' . lang("index", "realm") . ': ' . get_realm_name($realm[0]) . '</td> </tr> <tr> <td>' . lang("user", "chars_on_realm") . ':</td> <td colspan="2">' . $chars_on_realm . '</td> </tr>'; if ($chars_on_realm) { if ($core == 1) { $char_array = $sql["char"]->query("SELECT guid, name, race, class, level, gender, timestamp\r\n FROM `characters` WHERE acct=" . $acct); } else { $char_array = $sql["char"]->query("SELECT guid, name, race, class, level, gender, logout_time AS timestamp\r\n FROM `characters` WHERE account=" . $acct); } // calculate timezone offset $time_offset = $timezone_offset * 3600; while ($char = $sql["char"]->fetch_array($char_array)) { if ($char["timestamp"] != 0) { $lastseen = date("F j, Y @ Hi", $char["timestamp"] + $time_offset); } else { $lastseen = '-'; } $output .= ' <tr> <td> \'---></td> <td> <a href="char.php?id=' . $char[0] . '&realm=' . $realm[0] . '">' . $char[1] . '</a> - <img src="img/c_icons/' . $char[2] . '-' . $char[5] . '.gif" onmousemove="oldtoolTip(\'' . char_get_race_name($char[2]) . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> <img src="img/c_icons/' . $char[3] . '.gif" onmousemove="oldtoolTip(\'' . char_get_class_name($char[3]) . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt=""/> - ' . lang("char", "level_short") . char_get_level_color($char[4]) . ' </td> <td>' . $lastseen . '</td> </tr>'; } } } } else { if ($core == 1) { $query = $sql["char"]->query("SELECT COUNT(*) FROM `characters` WHERE acct=" . $acct); } else { $query = $sql["char"]->query("SELECT COUNT(*) FROM `characters` WHERE account=" . $acct); } $chars_on_realm = $sql["char"]->result($query, 0); $output .= ' <!-- tr> <td>' . lang("user", "chars_on_realm") . ':</td> <td colspan="2">' . $chars_on_realm . '</td> </tr -->'; if ($chars_on_realm) { if ($core == 1) { $char_array = $sql["char"]->query("SELECT guid, name, race, class, level, gender, timestamp\r\n FROM `characters` WHERE acct=" . $acct); } else { $char_array = $sql["char"]->query("SELECT guid, name, race, class, level, gender, logout_time AS timestamp\r\n FROM `characters` WHERE account=" . $acct); } // calculate timezone offset $time_offset = $timezone_offset * 3600; while ($char = $sql["char"]->fetch_array($char_array)) { if ($char["timestamp"] != 0) { $lastseen = date("F j, Y @ Hi", $char["timestamp"] + $time_offset); } else { $lastseen = '-'; } $output .= ' <tr> <td> \'---></td> <td> <a href="char.php?id=' . $char[0] . '">' . $char[1] . '</a> - <img src="img/c_icons/' . $char[2] . '-' . $char[5] . '.gif" onmousemove="oldtoolTip(\'' . char_get_race_name($char[2]) . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> <img src="img/c_icons/' . $char[3] . '.gif" onmousemove="oldtoolTip(\'' . char_get_class_name($char[3]) . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt=""/> - ' . lang("char", "level_short") . char_get_level_color($char[4]) . ' </td> <td>' . $lastseen . '</td> </tr>'; } } } $output .= ' <tr> <td>'; if ($user_lvl >= $action_permission["delete"]) { makebutton(lang("user", "del_acc"), "user.php?action=del_user&check%5B%5D=" . $acct . "\" type=\"wrn", 130); } $output .= ' </td> <td>'; if ($user_lvl >= $action_permission["update"]) { makebutton(lang("user", "update_data"), "javascript:do_submit_data()", 130); } $output .= ' </td> <td>'; makebutton(lang("global", "back"), "javascript:window.history.back()\" type=\"def", 130); $output .= ' </td> </tr> </table> </form> </div> <br />'; $query = "SELECT * FROM point_system_invites WHERE InviterAccount='" . $acct . "'"; $result = $sql["mgr"]->query($query); if ($sql["mgr"]->num_rows($result) > 0) { $output .= ' <div id="user_recruits" class="fieldset_border"> <span class="legend">' . lang("user", "recruits") . '</span> <table class="lined" style="width: 95%"> <tr> <th>' . lang("user", "login") . '</th> <th>' . lang("user", "last_ip") . '</th> <th>' . lang("user", "reward") . '</th> </tr>'; while ($row = $sql["mgr"]->fetch_assoc($result)) { if ($core == 1) { $recruit_query = "SELECT *, acct AS id, login AS username, lastip AS last_ip FROM accounts WHERE acct='" . $row["PlayersAccount"] . "'"; } else { $recruit_query = "SELECT * FROM account WHERE id='" . $row["PlayersAccount"] . "'"; } $recruit_result = $sql["logon"]->query($recruit_query); $recruit = $sql["logon"]->fetch_assoc($recruit_result); if ($recruit != NULL) { $output .= ' <tr> <td><a href="user.php?action=edit_user&acct=' . $recruit["id"] . '">' . $recruit["username"] . '</a></td> <td>' . $recruit["last_ip"] . '</td> <td>'; if ($row["Rewarded"] == 0) { // if the recruitment hasn't been rewarded if ($user_lvl >= $action_permission["update"]) { if ($screenname["Credits"] >= 0) { // if the recruiter can gain Credits $output .= ' <a href="user.php?action=reward&acct=' . $recruit["id"] . '&recruiter=' . $acct . '"> <img src="img/aff_tick.png" alt="" /> </a>'; } else { // if the recruiter cannot gain Credits (Unlimited) $output .= ' <a href="" onmouseover="oldtoolTip(\'' . lang("user", "no_reward") . '\', \'info_tooltip\')" onmouseout="oldtoolTip()"> <img src="img/lock.png" alt="" /> </a>'; } } else { // if the user viewing the recruiter does not have permissions $output .= ' <a href="" onmouseover="oldtoolTip(\'' . lang("user", "you_have_no_permission") . '\', \'info_tooltip\')" onmouseout="oldtoolTip()"> <img src="img/lock.png" alt="" /> </a>'; } } else { $output .= ' <span>' . lang("user", "rewarded") . '</span>'; } $output .= ' </td> </tr>'; } } $output .= ' </table> </div>'; } $output .= ' <br /> </center>'; } else { error(lang("global", "err_no_user")); } }