예제 #1
0
파일: user.php 프로젝트: scamp/minimanager
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&amp;entry=' . $data['last_ip'] . '&amp;bantime=3600&amp;ban_type=ip_banned"> &lt;- ' . $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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'---></td>\r\n                <td>\r\n                      <a href=\"char.php?id={$char['0']}&amp;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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'---></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&amp;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']);
    }
}
예제 #2
0
							<li><a href="edit.php">' . $lang_header['edit_my_acc'] . '</a></li>
							<li><a href="logout.php">' . $lang_header['logout'] . '</a></li>';
    }
    unset($result);
    $output .= '
						</ul>
					</li>
					</ul>
					<br class="clearit" />
					</div>
					</td>
					<td class="table_top_middle">
						<div id="link1"><a href="' . $link_header['link1'] . '">' . $lang_header['link1'] . '</a></div>
						<div id="link2"><a href="' . $link_header['link2'] . '">' . $lang_header['link2'] . '</a></div>
						<div id="link3"><a href="' . $link_header['link3'] . '">' . $lang_header['link3'] . '</a></div>
						<div id="realm">Realm .:' . get_realm_name($realm_id) . ':.</a></div>
						<div id="username">' . $user_name . ' .:' . $user_lvl_name . '\'s ' . $lang_header['menu'] . ':.</div>
					</td>
					<td class="table_top_right"></td>
				</tr>
			</table>';
    unset($lang_header);
    //---------------------Version Information-------------------------------------
    if ($show_version['show'] && $user_lvl >= $show_version['version_lvl']) {
        if (1 < $show_version['show'] && $user_lvl >= $show_version['svnrev_lvl']) {
            $show_version['svnrev'] = '';
            // if file exists and readable
            if (is_readable('.svn/entries')) {
                $file_obj = new SplFileObject('.svn/entries');
                // line 4 is where svn revision is stored
                $file_obj->seek(3);
예제 #3
0
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 . '&amp;order_by=' . $order_by . '&amp;dir=' . ($dir ? 0 : 1), $total_online, $itemperpage, $start);
        $output .= '
		</td>
	</tr>
	<tr>
		<th width="15%"><a href="index.php?start=' . $start . '&amp;start_m=' . $start_m . '&amp;order_by=name&amp;dir=' . $dir . '"' . ($order_by === 'name' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['name'] . '</a></th>
		<th width="1%"><a href="index.php?start=' . $start . '&amp;start_m=' . $start_m . '&amp;order_by=race&amp;dir=' . $dir . '"' . ($order_by === 'race' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['race'] . '</a></th>
		<th width="1%"><a href="index.php?start=' . $start . '&amp;start_m=' . $start_m . '&amp;order_by=class&amp;dir=' . $dir . '"' . ($order_by === 'class' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['class'] . '</a></th>
		<th width="5%"><a href="index.php?start=' . $start . '&amp;start_m=' . $start_m . '&amp;order_by=level&amp;dir=' . $dir . '"' . ($order_by === 'level' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['level'] . '</a></th>
		<th width="1%"><a href="index.php?start=' . $start . '&amp;start_m=' . $start_m . '&amp;order_by=totalHonorPoints&amp;dir=' . $dir . '"' . ($order_by === 'totalHonorPoints' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['rank'] . '</a></th>
		<th width="15%"><a href="index.php?start=' . $start . '&amp;start_m=' . $start_m . '&amp;order_by=guildid&amp;dir=' . $dir . '"' . ($order_by === 'gname' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['guild'] . '</a></th>
		<th width="20%"><a href="index.php?start=' . $start . '&amp;start_m=' . $start_m . '&amp;order_by=map&amp;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 . '&amp;start_m=' . $start_m . '&amp;order_by=zone&amp;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&amp;error=3&amp;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 . '&amp;order_by=' . $order_by . '&amp;dir=' . ($dir ? 0 : 1), $total_online, $itemperpage, $start);
        unset($total_online);
        $output .= '
		</td>
	</tr>
	</table>
</fieldset>
<br />
</center>';
    }
}
예제 #4
0
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&amp;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'] . ': &lt;font color=white&gt;' . $post['id'] . '&lt;/font&gt;&lt;br /&gt;' . $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&amp;error=3&amp;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 . '&amp;order_by=' . $order_by . '&amp;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 . '&amp;order_by=' . $order_by . '&amp;dir=' . ($dir ? 0 : 1), $total_online, $itemperpage, $start);
        $output .= '
                            </td>
                        </tr>
                        <tr>
                            <th width="15%"><a href="index.php?start=' . $start . '&amp;start_m=' . $start_m . '&amp;order_by=name&amp;dir=' . $dir . '"' . ($order_by === 'name' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['name'] . '</a></th>
                            <th width="1%"><a href="index.php?start=' . $start . '&amp;start_m=' . $start_m . '&amp;order_by=race&amp;dir=' . $dir . '"' . ($order_by === 'race' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['race'] . '</a></th>
                            <th width="1%"><a href="index.php?start=' . $start . '&amp;start_m=' . $start_m . '&amp;order_by=class&amp;dir=' . $dir . '"' . ($order_by === 'class' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['class'] . '</a></th>
                            <th width="5%"><a href="index.php?start=' . $start . '&amp;start_m=' . $start_m . '&amp;order_by=level&amp;dir=' . $dir . '"' . ($order_by === 'level' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['level'] . '</a></th>
                            <th width="1%"><a href="index.php?start=' . $start . '&amp;start_m=' . $start_m . '&amp;order_by=totalHonorPoints&amp;dir=' . $dir . '"' . ($order_by === 'totalHonorPoints' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['rank'] . '</a></th>
                            <th width="15%"><a href="index.php?start=' . $start . '&amp;start_m=' . $start_m . '&amp;order_by=guildid&amp;dir=' . $dir . '"' . ($order_by === 'guildid' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_index['guild'] . '</a></th>
                            <th width="20%"><a href="index.php?start=' . $start . '&amp;start_m=' . $start_m . '&amp;order_by=map&amp;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 . '&amp;start_m=' . $start_m . '&amp;order_by=zone&amp;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&amp;error=3&amp;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 . '&amp;order_by=' . $order_by . '&amp;dir=' . ($dir ? 0 : 1), $total_online, $itemperpage, $start);
        unset($total_online);
        $output .= '
                            </td>
                        </tr>
                    </table>
                    <br />
                </center>';
    }
}
예제 #5
0
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&amp;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&amp;error=11&amp;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&amp;error=11&amp;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") . ': &lt;font color=white&gt;' . $temp["ID"] . '&lt;/font&gt;&lt;br /&gt;' . lang("global", "are_you_sure") . '\', del_motd + ' . $temp["ID"] . ');" alt="" />';
                }
                if ($user_lvl >= $action_permission["update"]) {
                    $output .= '
                  <a href="motd.php?action=edit_motd&amp;error=3&amp;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&amp;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&amp;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&amp;coupon_id=' . $coupon["entry"] . '">
                  <img src="img/star.png" width="16" height="16" alt="" />
                  <span>&nbsp;' . 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&amp;error=4&amp;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&amp;guid=' . $change["guid"] . '">
                  <img src="img/cross.png" width="12" height="12" alt="" />
                </a>';
                if (!$change_char["online"]) {
                    $output .= '
                <a href="' . $file . '?action=approve&amp;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 . "&amp;order_by=" . $order_hold . "&amp;dir=" . ($dir ? 0 : 1), $total_online, $itemperpage, $start);
            $output .= '
                </td>
              </tr>
              <tr>
                <th style="width: 15%;">
                  <a href="index.php?start=' . $start . '&amp;start_m=' . $start_m . '&amp;order_by=name&amp;dir=' . $dir . '"' . ($order_by === "name" ? ' class="' . $order_dir . '"' : '') . '>' . lang("index", "name") . '</a>
                </th>
                <th style="width: 1%;">
                  <a href="index.php?start=' . $start . '&amp;start_m=' . $start_m . '&amp;order_by=race&amp;dir=' . $dir . '"' . ($order_by === "race" ? ' class="' . $order_dir . '"' : '') . '>' . lang("index", "race") . '</a>
                </th>
                <th style="width: 1%;">
                  <a href="index.php?start=' . $start . '&amp;start_m=' . $start_m . '&amp;order_by=class&amp;dir=' . $dir . '"' . ($order_by === "class" ? ' class="' . $order_dir . '"' : '') . '>' . lang("index", "class") . '</a>
                </th>
                <th style="width: 5%;">
                  <a href="index.php?start=' . $start . '&amp;start_m=' . $start_m . '&amp;order_by=level&amp;dir=' . $dir . '"' . ($order_by === "level" ? ' class="' . $order_dir . '"' : '') . '>' . lang("index", "level") . '</a>
                </th>
                <th style="width: 1%;">
                  <a href="index.php?start=' . $start . '&amp;start_m=' . $start_m . '&amp;order_by=highest_rank&amp;dir=' . $dir . '"' . ($order_by === "highest_rank" ? ' class="' . $order_dir . '"' : '') . '>' . lang("index", "rank") . '</a>
                </th>
                <th style="width: 15%;">
                  <a href="index.php?start=' . $start . '&amp;start_m=' . $start_m . '&amp;order_by=gname&amp;dir=' . $dir . '"' . ($order_by === "gname" ? ' class="' . $order_dir . '"' : '') . '>' . lang("index", "guild") . '</a>
                </th>
                <th style="width: 20%;">
                  <a href="index.php?start=' . $start . '&amp;start_m=' . $start_m . '&amp;order_by=mapid&amp;dir=' . $dir . '"' . ($order_by === "mapid, zoneid " ? ' class="' . $order_dir . '"' : '') . '>' . lang("index", "map") . '</a>
                </th>
                <th style="width: 25%;">
                  <a href="index.php?start=' . $start . '&amp;start_m=' . $start_m . '&amp;order_by=zoneid&amp;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 . '&amp;start_m=' . $start_m . '&amp;order_by=latency&amp;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 . '&amp;start_m=' . $start_m . '&amp;order_by=lastip&amp;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&amp;error=3&amp;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 . "&amp;order_by=" . $order_by . "&amp;dir=" . ($dir ? 0 : 1), $total_online, $itemperpage, $start);
            $output .= '
                </td>
              </tr>
            </table>';
        }
        $output .= '
            <br />';
        unset($total_online);
    }
}
예제 #6
0
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>&nbsp;</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&amp;entry=' . $data["lastip"] . '&amp;bantime=3600&amp;ban_type=ipbans"> &lt;- ' . 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">&nbsp;</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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\'---></td>
                <td>
                      <a href="char.php?id=' . $char[0] . '&amp;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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\'---></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&amp;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&amp;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&amp;acct=' . $recruit["id"] . '&amp;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"));
    }
}