function del_acc($acc_id) { global $characters_db, $logon_db, $corem_db, $realm_id, $user_lvl, $user_id, $tab_del_user_realmd, $tab_del_user_char, $tab_del_user_characters, $sql, $core; $del_char = 0; // get username name to delete from account table if ($core == 1) { $query = $sql["logon"]->query("SELECT login AS username FROM accounts WHERE acct='" . $acc_id . "'"); } else { $query = $sql["logon"]->query("SELECT username FROM account WHERE id='" . $acc_id . "'"); } $acct_name = $sql["logon"]->result($query, 0, "username"); // get the account's owner's SecurityLevel (not 100% perfect since we don't use the core gm) $query = $sql["mgr"]->query("SELECT SecurityLevel FROM config_accounts WHERE Login='******'"); $gmlevel = $sql["mgr"]->result($query, 0, "SecurityLevel"); if ($user_lvl >= gmlevel($gmlevel) || $acc_id == $user_id) { if ($core == 1) { $char_count_query = "SELECT COUNT(*) FROM characters WHERE acct='" . $acct_id . "'"; } else { $char_count_query = "SELECT COUNT(*) FROM characters WHERE account='" . $acct_id . "'"; } $online = $sql["char"]->result($sql["char"]->query($char_count_query), 0); if (!$online > 0) { foreach ($characters_db as $db) { $sqlx = new SQL(); $sqlx->connect($db["addr"], $db["user"], $db["pass"], $db["name"], $db["encoding"]); if ($core == 1) { $result = $sqlx->query("SELECT guid FROM characters WHERE acct='" . $acc_id . "'"); } else { $result = $sqlx->query("SELECT guid FROM characters WHERE account='" . $acc_id . "'"); } while ($row = $sqlx->fetch_assoc($result)) { $temp = del_char($row["guid"], $db["id"]); $del_char++; } // MaNGOS: Delete character_tutorial if ($core == 2) { $sqlx->query("DELETE FROM character_tutorial WHERE account='" . $owner_acc_id . "'"); } // Trinity: Delete account_tutorial if ($core == 3) { $sqlx->query("DELETE FROM account_tutorial WHERE accountId='" . $owner_acc_id . "'"); } // ArcEmu: Delete account_data for this user if ($core == 1) { $sqlx->query("DELETE FROM account_data WHERE acct='" . $owner_acc_id . "'"); } } if ($core == 1) { $sql["logon"]->query("DELETE FROM accounts WHERE acct='" . $acc_id . "'"); } else { $sql["logon"]->query("DELETE FROM account WHERE id='" . $acc_id . "'"); } $sql["mgr"]->query("DELETE FROM point_system_invites WHERE PlayersAccount='" . $acc_id . "'"); $sql["mgr"]->query("DELETE FROM config_accounts WHERE Login='******'"); if ($sql["logon"]->affected_rows()) { return array(true, $del_char); } } } return array(false, $del_char); }
function dologin() { global $corem_db, $logon_db, $sql, $core; $sql["logon"] = new SQL(); $sql["logon"]->connect($logon_db["addr"], $logon_db["user"], $logon_db["pass"], $logon_db["name"], $logon_db["encoding"]); $sql["mgr"] = new SQL(); $sql["mgr"]->connect($corem_db["addr"], $corem_db["user"], $corem_db["pass"], $corem_db["name"], $corem_db["encoding"]); // if $core is ZERO then we auto-detect based on the auth database if ($core == 0) { $core = detectcore(); } if (empty($_POST["login"]) || empty($_POST["password"])) { redirect("admin_login.php?error=2"); } $user_name = $sql["mgr"]->quote_smart($_POST["login"]); $user_pass = $sql["mgr"]->quote_smart($_POST["password"]); if (strlen($user_name) > 255 || strlen($user_pass) > 255) { redirect("admin_login.php?error=1"); } // Users may log in using either their username or screen name // check for matching login if ($core == 1) { $query = "SELECT * FROM accounts WHERE login='******' AND password='******'"; } else { $pass_hash = sha1(strtoupper($user_name . ":" . $user_pass)); $query = "SELECT * FROM account WHERE username='******' AND sha_pass_hash='" . $pass_hash . "'"; } $name_result = $sql["logon"]->query($query); if (!$sql["logon"]->num_rows($name_result)) { // if we didn't find one, check for matching screen name $query = "SELECT * FROM config_accounts WHERE ScreenName='" . $user_name . "'"; $name_result = $sql["mgr"]->query($query); if ($sql["mgr"]->num_rows($name_result)) { $name = $sql["mgr"]->fetch_assoc($name_result); $user_name = $name["Login"]; } } else { // we'll still need the screen name if we have one $query = "SELECT * FROM config_accounts WHERE Login = '******'"; $name_result = $sql["mgr"]->query($query); $name = $sql["mgr"]->fetch_assoc($name_result); } // if we didn't find the name given for either entries, then the name will come up bad below if ($core == 1) { $query = "SELECT * FROM accounts WHERE login='******' AND password='******'"; } else { $pass_hash = sha1(strtoupper($user_name . ":" . $user_pass)); $query = "SELECT * FROM account WHERE username='******' AND sha_pass_hash='" . $pass_hash . "'"; } $result = $sql["logon"]->query($query); $s_result = $sql["mgr"]->query("SELECT SecurityLevel AS gm FROM config_accounts WHERE Login='******'"); $temp = $sql["mgr"]->fetch_assoc($s_result); if ($temp["gm"] >= 1073741824) { $temp["gm"] -= 1073741824; } $_SESSION["gm_lvl"] = $temp["gm"]; if ($sql["logon"]->num_rows($result) == 1) { if ($core == 1) { $acct = $sql["logon"]->result($result, 0, "acct"); } else { $acct = $sql["logon"]->result($result, 0, "id"); } if ($core == 1) { $ban_query = "SELECT banned FROM accounts WHERE login='******' AND password='******'"; } else { $ban_query = "SELECT COUNT(*) FROM account_banned WHERE id='" . $acct . "' AND active=1"; } if ($sql["logon"]->result($sql["logon"]->query($ban_query), 0)) { redirect("admin_login.php?error=3"); } else { $_SESSION["user_id"] = $acct; if ($core == 1) { $_SESSION["login"] = $sql["logon"]->result($result, 0, "login"); } else { $_SESSION["login"] = $sql["logon"]->result($result, 0, "username"); } // if we got a screen name, we'll want it later. $_SESSION["screenname"] = $name["ScreenName"]; //gets our numerical level based on Security Level. $_SESSION["user_lvl"] = gmlevel($temp["gm"]); $_SESSION["realm_id"] = $sql["logon"]->quote_smart($_POST["realm"]); $_SESSION["client_ip"] = isset($_SERVER["REMOTE_ADDR"]) ? $_SERVER["REMOTE_ADDR"] : getenv("REMOTE_ADDR"); $_SESSION["logged_in"] = true; redirect("admin.php"); } } else { redirect("admin_login.php?error=1"); } }
function char_main() { global $output, $realm_id, $logon_db, $characters_db, $world_db, $server, $corem_db, $site_encoding, $action_permission, $user_lvl, $user_name, $user_id, $locales_search_option, $base_datasite, $item_datasite, $spell_datasite, $showcountryflag, $timezone_offset, $sql, $core; // this page uses wowhead tooltops //wowhead_tt(); // we need at either an id or a name or we would have nothing to show if (empty($_GET["id"])) { if (empty($_GET["name"])) { error(lang("global", "empty_fields")); } } // this is multi realm support, as of writing still under development // this page is already implementing it if (empty($_GET["realm"])) { $realmid = $realm_id; } else { $realmid = $sql["logon"]->quote_smart($_GET["realm"]); if (is_numeric($realmid)) { $sql["char"]->connect($characters_db[$realmid]["addr"], $characters_db[$realmid]["user"], $characters_db[$realmid]["pass"], $characters_db[$realmid]["name"], $characters_db[$realmid]["encoding"]); } else { $realmid = $realm_id; } } if (empty($_GET["id"])) { $name = $sql["char"]->quote_smart($_GET["name"]); if ($core == 1) { $result = $sql["char"]->query("SELECT guid, acct, race FROM characters WHERE name='" . $name . "' LIMIT 1"); } else { $result = $sql["char"]->query("SELECT guid, id AS acct, race FROM characters WHERE name='" . $name . "' LIMIT 1"); } $id_result = $sql["char"]->fetch_assoc($result); $id = $id_result["guid"]; } else { $id = $sql["char"]->quote_smart($_GET["id"]); } if (!is_numeric($id)) { error(lang("global", "empty_fields")); } if ($core == 1) { $result = $sql["char"]->query("SELECT acct, race FROM characters WHERE guid='" . $id . "' LIMIT 1"); } else { $result = $sql["char"]->query("SELECT account AS acct, race FROM characters WHERE guid='" . $id . "' LIMIT 1"); } if ($sql["char"]->num_rows($result)) { //resrict by owner's gmlvl $owner_acc_id = $sql["char"]->result($result, 0, "acct"); if ($core == 1) { $query = $sql["logon"]->query("SELECT login FROM accounts WHERE acct='" . $owner_acc_id . "'"); } else { $query = $sql["logon"]->query("SELECT username as login FROM account WHERE id='" . $owner_acc_id . "'"); } $owner_name = $sql["logon"]->result($query, 0, "login"); $s_query = "SELECT *, SecurityLevel AS gm FROM config_accounts WHERE Login='******'"; $s_result = $sql["mgr"]->query($s_query); $s_fields = $sql["mgr"]->fetch_assoc($s_result); $owner_gmlvl = $s_fields["gm"]; $view_mod = $s_fields["View_Mod_Sheet"]; if ($owner_gmlvl >= 1073741824) { $owner_gmlvl -= 1073741824; } // owner configured overrides $view_override = false; if ($view_mod > 0) { if ($view_mod == 1) { } elseif ($view_mod == 2) { // only registered users may view this page if ($user_lvl > -1) { $view_override = true; } } } if ($user_lvl || $server[$realmid]["both_factions"]) { $side_v = 0; $side_p = 0; } else { $side_p = in_array($sql["char"]->result($result, 0, "race"), array(2, 5, 6, 8, 10)) ? 1 : 2; if ($core == 1) { $result_1 = $sql["char"]->query("SELECT race FROM characters WHERE acct='" . $user_id . "' LIMIT 1"); } else { $result_1 = $sql["char"]->query("SELECT race FROM characters WHERE account='" . $user_id . "' LIMIT 1"); } if ($sql["char"]->num_rows($result)) { $side_v = in_array($sql["char"]->result($result_1, 0, "race"), array(2, 5, 6, 8, 10)) ? 1 : 2; } else { $side_v = 0; } unset($result_1); } if ($view_override || $user_lvl >= gmlevel($owner_gmlvl) && ($side_v === $side_p || !$side_v)) { if ($core == 1) { $result = $sql["char"]->query("SELECT guid, name, race, class, level, zoneid, mapid, online, gender,\n SUBSTRING_INDEX(SUBSTRING_INDEX(playedtime, ' ', 2), ' ', -1) AS totaltime,\n acct, data, timestamp, xp \n FROM characters WHERE guid='" . $id . "'"); } elseif ($core == 2) { $result = $sql["char"]->query("SELECT guid, name, race, class, level, zone AS zoneid, map AS mapid, \n online, gender, totaltime, account AS acct, logout_time AS timestamp, health, \n\t\t\t\t\tpower1, power2, power3, power4, power5, power6, power7, xp,\n arenaPoints, totalHonorPoints, totalKills\n FROM characters WHERE guid='" . $id . "'"); } else { $result = $sql["char"]->query("SELECT guid, name, race, class, level, zone AS zoneid, map AS mapid, \n online, gender, totaltime, account AS acct, logout_time AS timestamp, health, \n\t\t\t\t\tpower1, power2, power3, power4, power5, power6, power7, xp, arenaPoints, totalHonorPoints, totalKills\n FROM characters WHERE guid='" . $id . "'"); } $char = $sql["char"]->fetch_assoc($result); // find out what mode we're in View or Delete (0 = View, 1 = Delete) $mode = isset($_GET["mode"]) ? $_GET["mode"] : 0; // only the character's owner or a GM with Delete privs can enter Delete Mode if ($owner_name != $user_name) { if ($user_lvl < $action_permission["delete"]) { $mode = 0; } else { $mode = $mode; } } // View Mode is only availble on characters that are offline if ($char["online"] != 0) { $mode = 0; } if ($core == 1) { $char_data = $char["data"]; if (empty($char_data)) { $char_data = str_repeat("0;", PLAYER_END); } $char_data = explode(";", $char_data); } else { $query = "SELECT * FROM characters LEFT JOIN character_stats ON characters.guid=character_stats.guid WHERE characters.guid='" . $id . "'"; $char_data_result = $sql["char"]->query($query); $char_data_fields = $sql["char"]->fetch_assoc($char_data_result); $char_data[PLAYER_BLOCK_PERCENTAGE] = isset($char_data_fields["blockPct"]) ? $char_data_fields["blockPct"] : ' '; $char_data[PLAYER_DODGE_PERCENTAGE] = isset($char_data_fields["dodgePct"]) ? $char_data_fields["dodgePct"] : ' '; $char_data[PLAYER_PARRY_PERCENTAGE] = isset($char_data_fields["parryPct"]) ? $char_data_fields["parryPct"] : ' '; $char_data[PLAYER_CRIT_PERCENTAGE] = isset($char_data_fields["critPct"]) ? $char_data_fields["critPct"] : ' '; $char_data[PLAYER_RANGED_CRIT_PERCENTAGE] = isset($char_data_fields["rangedCritPct"]) ? $char_data_fields["rangedCritPct"] : ' '; $char_data[UNIT_FIELD_MAXDAMAGE] = isset($char_data_fields["attackPower"]) ? $char_data_fields["attackPower"] : ' '; $char_data[UNIT_FIELD_MINDAMAGE] = isset($char_data_fields["attackPower"]) ? $char_data_fields["attackPower"] : ' '; $char_data[UNIT_FIELD_MAXRANGEDDAMAGE] = isset($char_data_fields["rangedAttackPower"]) ? $char_data_fields["rangedAttackPower"] : ' '; $char_data[UNIT_FIELD_MINRANGEDDAMAGE] = isset($char_data_fields["rangedAttackPower"]) ? $char_data_fields["rangedAttackPower"] : ' '; $char_data[PLAYER_SPELL_CRIT_PERCENTAGE1] = isset($char_data_fields["spellCritPct"]) ? $char_data_fields["spellCritPct"] : ' '; $char_data[PLAYER_FIELD_MOD_DAMAGE_DONE_POS] = isset($char_data_fields["spellPower"]) ? $char_data_fields["spellPower"] : ' '; $char_data[UNIT_FIELD_STAT0] = isset($char_data_fields["strength"]) ? $char_data_fields["strength"] : ' '; $char_data[UNIT_FIELD_STAT1] = isset($char_data_fields["agility"]) ? $char_data_fields["agility"] : ' '; $char_data[UNIT_FIELD_STAT2] = isset($char_data_fields["stamina"]) ? $char_data_fields["stamina"] : ' '; $char_data[UNIT_FIELD_STAT3] = isset($char_data_fields["intellect"]) ? $char_data_fields["intellect"] : ' '; $char_data[UNIT_FIELD_STAT4] = isset($char_data_fields["spirit"]) ? $char_data_fields["spirit"] : ' '; $char_data[UNIT_FIELD_RESISTANCES] = isset($char_data_fields["armor"]) ? $char_data_fields["armor"] : ' '; $char_data[UNIT_FIELD_RESISTANCES + 1] = isset($char_data_fields["resHoly"]) ? $char_data_fields["resHoly"] : ' '; $char_data[UNIT_FIELD_RESISTANCES + 2] = isset($char_data_fields["resArcane"]) ? $char_data_fields["resArcane"] : ' '; $char_data[UNIT_FIELD_RESISTANCES + 3] = isset($char_data_fields["resFire"]) ? $char_data_fields["resFire"] : ' '; $char_data[UNIT_FIELD_RESISTANCES + 4] = isset($char_data_fields["resNature"]) ? $char_data_fields["resNature"] : ' '; $char_data[UNIT_FIELD_RESISTANCES + 5] = isset($char_data_fields["resFrost"]) ? $char_data_fields["resFrost"] : ' '; $char_data[UNIT_FIELD_RESISTANCES + 6] = isset($char_data_fields["resShadow"]) ? $char_data_fields["resShadow"] : ' '; $char_data[UNIT_FIELD_HEALTH] = isset($char["health"]) ? $char["health"] : ' '; $char_data[UNIT_FIELD_MAXHEALTH] = isset($char_data_fields["maxhealth"]) ? $char_data_fields["maxhealth"] : ' '; $char_data[UNIT_FIELD_POWER1] = isset($char["power1"]) ? $char["power1"] : ' '; $char_data[UNIT_FIELD_POWER2] = isset($char["power2"]) ? $char["power2"] : ' '; $char_data[UNIT_FIELD_POWER3] = isset($char["power3"]) ? $char["power3"] : ' '; $char_data[UNIT_FIELD_POWER4] = isset($char["power4"]) ? $char["power4"] : ' '; $char_data[UNIT_FIELD_POWER5] = isset($char["power5"]) ? $char["power5"] : ' '; $char_data[UNIT_FIELD_POWER6] = isset($char["power6"]) ? $char["power6"] : ' '; $char_data[UNIT_FIELD_POWER7] = isset($char["power7"]) ? $char["power7"] : ' '; $char_data[UNIT_FIELD_MAXPOWER1] = isset($char_data_fields["maxpower1"]) ? $char_data_fields["maxpower1"] : ' '; $char_data[UNIT_FIELD_MAXPOWER2] = isset($char_data_fields["maxpower2"]) ? $char_data_fields["maxpower2"] : ' '; $char_data[UNIT_FIELD_MAXPOWER3] = isset($char_data_fields["maxpower3"]) ? $char_data_fields["maxpower3"] : ' '; $char_data[UNIT_FIELD_MAXPOWER4] = isset($char_data_fields["maxpower4"]) ? $char_data_fields["maxpower4"] : ' '; $char_data[UNIT_FIELD_MAXPOWER5] = isset($char_data_fields["maxpower5"]) ? $char_data_fields["maxpower5"] : ' '; $char_data[UNIT_FIELD_MAXPOWER6] = isset($char_data_fields["maxpower6"]) ? $char_data_fields["maxpower6"] : ' '; $char_data[UNIT_FIELD_MAXPOWER7] = isset($char_data_fields["maxpower7"]) ? $char_data_fields["maxpower7"] : ' '; $char_data[PLAYER_FIELD_MOD_HEALING_DONE_POS] = "ERR"; $char_data[PLAYER_FIELD_COMBAT_RATING_1 + 5] = "ERR"; $char_data[PLAYER_FIELD_COMBAT_RATING_1 + 17] = "ERR"; $char_data[PLAYER_FIELD_COMBAT_RATING_1 + 6] = "ERR"; $char_data[PLAYER_FIELD_COMBAT_RATING_1 + 7] = "ERR"; $char_data[PLAYER_EXPERTISE] = "ERR"; $char_data[PLAYER_OFFHAND_EXPERTISE] = "ERR"; $char_data[PLAYER_FIELD_HONOR_CURRENCY] = isset($char["totalHonorPoints"]) ? $char["totalHonorPoints"] : ' '; $char_data[PLAYER_FIELD_ARENA_CURRENCY] = isset($char["arenaPoints"]) ? $char["arenaPoints"] : ' '; $char_data[PLAYER_FIELD_LIFETIME_HONORBALE_KILLS] = isset($char["totalKills"]) ? $char["totalKills"] : ' '; } if ($core == 1) { $guild_id = $sql["char"]->result($sql["char"]->query("SELECT guildid FROM guild_data WHERE playerid='" . $char["guid"] . "'"), 0); $guild_rank = $sql["char"]->result($sql["char"]->query("SELECT guildRank FROM guild_data WHERE playerid='" . $char["guid"] . "'"), 0); $guild_name = $sql["char"]->result($sql["char"]->query("SELECT guildName FROM guilds WHERE guildid='" . $guild_id . "'")); } else { $guild_id = $sql["char"]->result($sql["char"]->query("SELECT guildid FROM guild_member WHERE guid='" . $char["guid"] . "'"), 0); $guild_rank = $sql["char"]->result($sql["char"]->query("SELECT rank AS guildRank FROM guild_member WHERE guid='" . $char["guid"] . "'"), 0); $guild_name = $sql["char"]->result($sql["char"]->query("SELECT name AS guildName FROM guild WHERE guildid='" . $guild_id . "'")); } $online = $char["online"] ? lang("char", "online") : lang("char", "offline"); if ($guild_id) { //$guild_name = $sql["char"]->result($sql["char"]->query('SELECT name FROM guild WHERE guildid ='.$char_data[CHAR_DATA_OFFSET_GUILD_ID].''), 0, 'name'); $guild_name = '<a href="guild.php?action=view_guild&realm=' . $realmid . '&error=3&id=' . $guild_id . '" >' . $guild_name . '</a>'; $mrank = $guild_rank; if ($core == 1) { $guild_rank = $sql["char"]->result($sql["char"]->query("SELECT rankname FROM guild_ranks WHERE guildid='" . $guild_id . "' AND rankId='" . $mrank . "'"), 0, "rankname"); } else { $guild_rank = $sql["char"]->result($sql["char"]->query("SELECT rname AS rankname FROM guild_rank WHERE guildid='" . $guild_id . "' AND rid='" . $mrank . "'"), 0, "rankname"); } } else { $guild_name = lang("global", "none"); $guild_rank = lang("global", "none"); } if ($core == 1) { $block = unpack("f", pack("L", $char_data[PLAYER_BLOCK_PERCENTAGE])); $block = round($block[1], 2); $dodge = unpack("f", pack("L", $char_data[PLAYER_DODGE_PERCENTAGE])); $dodge = round($dodge[1], 2); $parry = unpack("f", pack("L", $char_data[PLAYER_PARRY_PERCENTAGE])); $parry = round($parry[1], 2); $crit = unpack("f", pack("L", $char_data[PLAYER_CRIT_PERCENTAGE])); $crit = round($crit[1], 2); $ranged_crit = unpack("f", pack("L", $char_data[PLAYER_RANGED_CRIT_PERCENTAGE])); $ranged_crit = round($ranged_crit[1], 2); $maxdamage = unpack("f", pack("L", $char_data[UNIT_FIELD_MAXDAMAGE])); $maxdamage = round($maxdamage[1], 0); $mindamage = unpack("f", pack("L", $char_data[UNIT_FIELD_MINDAMAGE])); $mindamage = round($mindamage[1], 0); $maxrangeddamage = unpack("f", pack("L", $char_data[UNIT_FIELD_MAXRANGEDDAMAGE])); $maxrangeddamage = round($maxrangeddamage[1], 0); $minrangeddamage = unpack("f", pack("L", $char_data[UNIT_FIELD_MINRANGEDDAMAGE])); $minrangeddamage = round($minrangeddamage[1], 0); } else { $block = $char_data[PLAYER_BLOCK_PERCENTAGE]; $block = round($block, 2); $dodge = $char_data[PLAYER_DODGE_PERCENTAGE]; $dodge = round($dodge, 2); $parry = $char_data[PLAYER_PARRY_PERCENTAGE]; $parry = round($parry, 2); $crit = $char_data[PLAYER_CRIT_PERCENTAGE]; $crit = round($crit, 2); $ranged_crit = $char_data[PLAYER_RANGED_CRIT_PERCENTAGE]; $ranged_crit = round($ranged_crit, 2); $maxdamage = $char_data[UNIT_FIELD_MAXDAMAGE]; $maxdamage = round($maxdamage, 0); $mindamage = $char_data[UNIT_FIELD_MINDAMAGE]; $mindamage = round($mindamage, 0); $maxrangeddamage = $char_data[UNIT_FIELD_MAXRANGEDDAMAGE]; $maxrangeddamage = round($maxrangeddamage, 0); $minrangeddamage = $char_data[UNIT_FIELD_MINRANGEDDAMAGE]; $minrangeddamage = round($minrangeddamage, 0); } if ($core == 1) { $spell_crit = 100; for ($i = 0; $i < 6; ++$i) { $temp = unpack("f", pack("L", $char_data[PLAYER_SPELL_CRIT_PERCENTAGE1 + 1 + $i])); if ($temp[1] < $spell_crit) { $spell_crit = $temp[1]; } } $spell_crit = round($spell_crit, 2); } else { $spell_crit = $char_data[PLAYER_SPELL_CRIT_PERCENTAGE1]; $spell_crit = round($spell_crit, 2); } if ($core == 1) { $spell_damage = 9999; for ($i = 0; $i < 6; ++$i) { if ($char_data[PLAYER_FIELD_MOD_DAMAGE_DONE_POS + 1 + $i] < $spell_damage) { $spell_damage = $char_data[PLAYER_FIELD_MOD_DAMAGE_DONE_POS + 1 + $i]; } } } else { $spell_damage = $char_data[PLAYER_FIELD_MOD_DAMAGE_DONE_POS]; } $spell_heal = $char_data[PLAYER_FIELD_MOD_HEALING_DONE_POS]; // this_is_junk: PLAYER_FIELD_COMBAT_RATING_1 +5, +6, and +7 seem to have the same value as +5 // I'm not sure which of these fields is which hit rating. :/ $spell_hit = $char_data[PLAYER_FIELD_COMBAT_RATING_1 + 5]; // this_is_junk: PLAYER_FIELD_COMBAT_RATING_1 +18 and +19 seem to have the same value as +5 // I'm not sure which of these fields is really spell haste. :/ $spell_haste = $char_data[PLAYER_FIELD_COMBAT_RATING_1 + 17]; // this_is_junk: PLAYER_FIELD_COMBAT_RATING_1 +5, +6, and +7 seem to have the same value as +5 // I'm not sure which of these fields is which hit rating. :/ $ranged_hit = $char_data[PLAYER_FIELD_COMBAT_RATING_1 + 6]; // this_is_junk: PLAYER_FIELD_COMBAT_RATING_1 +5, +6, and +7 seem to have the same value as +5 // I'm not sure which of these fields is which hit rating. :/ $melee_hit = $char_data[PLAYER_FIELD_COMBAT_RATING_1 + 7]; $expertise = $char_data[PLAYER_EXPERTISE] . " / " . $char_data[PLAYER_OFFHAND_EXPERTISE]; //if ( $core == 1 ) //{ /*$EQU_HEAD = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 0]; $EQU_NECK = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 2]; $EQU_SHOULDER = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 4]; $EQU_SHIRT = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 6]; $EQU_CHEST = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 8]; $EQU_BELT = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 10]; $EQU_LEGS = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 12]; $EQU_FEET = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 14]; $EQU_WRIST = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 16]; $EQU_GLOVES = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 18]; $EQU_FINGER1 = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 20]; $EQU_FINGER2 = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 22]; $EQU_TRINKET1 = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 24]; $EQU_TRINKET2 = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 26]; $EQU_BACK = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 28]; $EQU_MAIN_HAND = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 30]; $EQU_OFF_HAND = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 32]; $EQU_RANGED = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 34]; $EQU_TABARD = $char_data[PLAYER_FIELD_INV_SLOT_HEAD + 36];*/ //} //else //{ $world_db_name = $world_db[$realm_id]["name"]; if ($core == 1) { $char_equip_query = "SELECT *, \n playeritems.entry AS item_template, randomprop as property, enchantments AS enchantment, flags\n FROM playeritems WHERE ownerguid='" . $id . "' AND containerslot=-1"; } elseif ($core == 2) { $char_equip_query = "SELECT *,\n SUBSTRING_INDEX(SUBSTRING_INDEX(item_instance.data, ' ', 11), ' ', -1) AS creator,\n SUBSTRING_INDEX(SUBSTRING_INDEX(item_instance.data, ' ', 23), ' ', -1) AS enchantment,\n SUBSTRING_INDEX(SUBSTRING_INDEX(item_instance.data, ' ', 60), ' ', -1) AS property,\n SUBSTRING_INDEX(SUBSTRING_INDEX(item_instance.data, ' ', 62), ' ', -1) AS durability,\n SUBSTRING_INDEX(SUBSTRING_INDEX(item_instance.data, ' ', 22), ' ', -1) AS flags\n FROM character_inventory\n LEFT JOIN item_instance ON character_inventory.item=item_instance.guid\n WHERE character_inventory.guid='" . $id . "' AND character_inventory.bag=0"; } else { $char_equip_query = "SELECT *,\n creatorGuid AS creator, enchantments AS enchantment,\n randomPropertyId AS property, durability, flags,\n itemEntry AS item_template\n FROM character_inventory\n LEFT JOIN item_instance ON character_inventory.item=item_instance.guid\n WHERE character_inventory.guid='" . $id . "' AND character_inventory.bag=0"; } $char_equip_result = $sql["char"]->query($char_equip_query); while ($equip_row = $sql["char"]->fetch_assoc($char_equip_result)) { switch ($equip_row["slot"]) { case 0: $EQU_HEAD = $equip_row["item_template"]; $EQU_HEAD_ROW = $equip_row; break; case 1: $EQU_NECK = $equip_row["item_template"]; $EQU_NECK_ROW = $equip_row; break; case 2: $EQU_SHOULDER = $equip_row["item_template"]; $EQU_SHOULDER_ROW = $equip_row; break; case 3: $EQU_SHIRT = $equip_row["item_template"]; $EQU_SHIRT_ROW = $equip_row; break; case 4: $EQU_CHEST = $equip_row["item_template"]; $EQU_CHEST_ROW = $equip_row; break; case 5: $EQU_BELT = $equip_row["item_template"]; $EQU_BELT_ROW = $equip_row; break; case 6: $EQU_LEGS = $equip_row["item_template"]; $EQU_LEGS_ROW = $equip_row; break; case 7: $EQU_FEET = $equip_row["item_template"]; $EQU_FEET_ROW = $equip_row; break; case 8: $EQU_WRIST = $equip_row["item_template"]; $EQU_WRIST_ROW = $equip_row; break; case 9: $EQU_GLOVES = $equip_row["item_template"]; $EQU_GLOVES_ROW = $equip_row; break; case 10: $EQU_FINGER1 = $equip_row["item_template"]; $EQU_FINGER1_ROW = $equip_row; break; case 11: $EQU_FINGER2 = $equip_row["item_template"]; $EQU_FINGER2_ROW = $equip_row; break; case 12: $EQU_TRINKET1 = $equip_row["item_template"]; $EQU_TRINKET1_ROW = $equip_row; break; case 13: $EQU_TRINKET2 = $equip_row["item_template"]; $EQU_TRINKET2_ROW = $equip_row; break; case 14: $EQU_BACK = $equip_row["item_template"]; $EQU_BACK_ROW = $equip_row; break; case 15: $EQU_MAIN_HAND = $equip_row["item_template"]; $EQU_MAIN_HAND_ROW = $equip_row; break; case 16: $EQU_OFF_HAND = $equip_row["item_template"]; $EQU_OFF_HAND_ROW = $equip_row; break; case 17: $EQU_RANGED = $equip_row["item_template"]; $EQU_RANGED_ROW = $equip_row; break; case 18: $EQU_TABARD = $equip_row["item_template"]; $EQU_TABARD_ROW = $equip_row; break; } } //} $equiped_items = array(1 => array("", $EQU_HEAD ? get_item_icon($EQU_HEAD) : 0, $EQU_HEAD ? get_item_border($EQU_HEAD) : 0, $EQU_HEAD_ROW), 2 => array("", $EQU_NECK ? get_item_icon($EQU_NECK) : 0, $EQU_NECK ? get_item_border($EQU_NECK) : 0, $EQU_NECK_ROW), 3 => array("", $EQU_SHOULDER ? get_item_icon($EQU_SHOULDER) : 0, $EQU_SHOULDER ? get_item_border($EQU_SHOULDER) : 0, $EQU_SHOULDER_ROW), 4 => array("", $EQU_SHIRT ? get_item_icon($EQU_SHIRT) : 0, $EQU_SHIRT ? get_item_border($EQU_SHIRT) : 0, $EQU_SHIRT_ROW), 5 => array("", $EQU_CHEST ? get_item_icon($EQU_CHEST) : 0, $EQU_CHEST ? get_item_border($EQU_CHEST) : 0, $EQU_CHEST_ROW), 6 => array("", $EQU_BELT ? get_item_icon($EQU_BELT) : 0, $EQU_BELT ? get_item_border($EQU_BELT) : 0, $EQU_BELT_ROW), 7 => array("", $EQU_LEGS ? get_item_icon($EQU_LEGS) : 0, $EQU_LEGS ? get_item_border($EQU_LEGS) : 0, $EQU_LEGS_ROW), 8 => array("", $EQU_FEET ? get_item_icon($EQU_FEET) : 0, $EQU_FEET ? get_item_border($EQU_FEET) : 0, $EQU_FEET_ROW), 9 => array("", $EQU_WRIST ? get_item_icon($EQU_WRIST) : 0, $EQU_WRIST ? get_item_border($EQU_WRIST) : 0, $EQU_WRIST_ROW), 10 => array("", $EQU_GLOVES ? get_item_icon($EQU_GLOVES) : 0, $EQU_GLOVES ? get_item_border($EQU_GLOVES) : 0, $EQU_GLOVES_ROW), 11 => array("", $EQU_FINGER1 ? get_item_icon($EQU_FINGER1) : 0, $EQU_FINGER1 ? get_item_border($EQU_FINGER1) : 0, $EQU_FINGER1_ROW), 12 => array("", $EQU_FINGER2 ? get_item_icon($EQU_FINGER2) : 0, $EQU_FINGER2 ? get_item_border($EQU_FINGER2) : 0, $EQU_FINGER2_ROW), 13 => array("", $EQU_TRINKET1 ? get_item_icon($EQU_TRINKET1) : 0, $EQU_TRINKET1 ? get_item_border($EQU_TRINKET1) : 0, $EQU_TRINKET1_ROW), 14 => array("", $EQU_TRINKET2 ? get_item_icon($EQU_TRINKET2) : 0, $EQU_TRINKET2 ? get_item_border($EQU_TRINKET2) : 0, $EQU_TRINKET2_ROW), 15 => array("", $EQU_BACK ? get_item_icon($EQU_BACK) : 0, $EQU_BACK ? get_item_border($EQU_BACK) : 0, $EQU_BACK_ROW), 16 => array("", $EQU_MAIN_HAND ? get_item_icon($EQU_MAIN_HAND) : 0, $EQU_MAIN_HAND ? get_item_border($EQU_MAIN_HAND) : 0, $EQU_MAIN_HAND_ROW), 17 => array("", $EQU_OFF_HAND ? get_item_icon($EQU_OFF_HAND) : 0, $EQU_OFF_HAND ? get_item_border($EQU_OFF_HAND) : 0, $EQU_OFF_HAND_ROW), 18 => array("", $EQU_RANGED ? get_item_icon($EQU_RANGED) : 0, $EQU_RANGED ? get_item_border($EQU_RANGED) : 0, $EQU_RANGED_ROW), 19 => array("", $EQU_TABARD ? get_item_icon($EQU_TABARD) : 0, $EQU_TABARD ? get_item_border($EQU_TABARD) : 0, $EQU_TABARD_ROW)); // visibility overrides for specific tabs $view_inv_override = false; if ($s_fields["View_Mod_Inv"] > 0) { if ($s_fields["View_Mod_Inv"] == 1) { } elseif ($s_fields["View_Mod_Inv"] == 2) { // only registered users may view this tab if ($user_lvl > -1) { $view_inv_override = true; } } } else { if ($user_lvl > $owner_gmlvl || $owner_name === $user_name || $user_lvl == $action_permission["delete"]) { $view_inv_override = true; } } $view_talent_override = false; if ($s_fields["View_Mod_Talent"] > 0) { if ($s_fields["View_Mod_Talent"] == 1) { } elseif ($s_fields["View_Mod_Talent"] == 2) { // only registered users may view this tab if ($user_lvl > -1) { $view_talent_override = true; } } } else { if ($user_lvl > $owner_gmlvl || $owner_name === $user_name || $user_lvl == $action_permission["delete"]) { $view_talent_override = true; } } $view_achieve_override = false; if ($s_fields["View_Mod_Achieve"] > 0) { if ($s_fields["View_Mod_Achieve"] == 1) { } elseif ($s_fields["View_Mod_Achieve"] == 2) { // only registered users may view this tab if ($user_lvl > -1) { $view_achieve_override = true; } } } else { if ($user_lvl > $owner_gmlvl || $owner_name === $user_name || $user_lvl == $action_permission["delete"]) { $view_achieve_override = true; } } $view_quest_override = false; if ($s_fields["View_Mod_Quest"] > 0) { if ($s_fields["View_Mod_Quest"] == 1) { } elseif ($s_fields["View_Mod_Quest"] == 2) { // only registered users may view this tab if ($user_lvl > -1) { $view_quest_override = true; } } } else { if ($user_lvl > $owner_gmlvl || $owner_name === $user_name || $user_lvl == $action_permission["delete"]) { $view_quest_override = true; } } $view_friends_override = false; if ($s_fields["View_Mod_Friends"] > 0) { if ($s_fields["View_Mod_Friends"] == 1) { } elseif ($s_fields["View_Mod_Friends"] == 2) { // only registered users may view this tab if ($user_lvl > -1) { $view_friends_override = true; } } } else { if ($user_lvl > $owner_gmlvl || $owner_name === $user_name || $user_lvl == $action_permission["delete"]) { $view_friends_override = true; } } $view_view_override = false; if ($s_fields["View_Mod_View"] > 0) { if ($s_fields["View_Mod_View"] == 1) { } elseif ($s_fields["View_Mod_View"] == 2) { // only registered users may view this tab if ($user_lvl > -1) { $view_view_override = true; } } } else { if ($user_lvl > $owner_gmlvl || $owner_name === $user_name || $user_lvl == $action_permission["delete"]) { $view_view_override = true; } } $view_pets_override = false; if ($s_fields["View_Mod_Pets"] > 0) { if ($s_fields["View_Mod_Pets"] == 1) { } elseif ($s_fields["View_Mod_Pets"] == 2) { // only registered users may view this tab if ($user_lvl > -1) { $view_pets_override = true; } } } else { if ($user_lvl > $owner_gmlvl || $owner_name === $user_name || $user_lvl == $action_permission["delete"]) { $view_pets_override = true; } } $view_rep_override = false; if ($s_fields["View_Mod_Rep"] > 0) { if ($s_fields["View_Mod_Rep"] == 1) { } elseif ($s_fields["View_Mod_Rep"] == 2) { // only registered users may view this tab if ($user_lvl > -1) { $view_rep_override = true; } } } else { if ($user_lvl > $owner_gmlvl || $owner_name === $user_name || $user_lvl == $action_permission["delete"]) { $view_rep_override = true; } } $view_skill_override = false; if ($s_fields["View_Mod_Skill"] > 0) { if ($s_fields["View_Mod_Skill"] == 1) { } elseif ($s_fields["View_Mod_Skill"] == 2) { // only registered users may view this tab if ($user_lvl > -1) { $view_skill_override = true; } } } else { if ($user_lvl > $owner_gmlvl || $owner_name === $user_name || $user_lvl == $action_permission["delete"]) { $view_skill_override = true; } } $view_pvp_override = false; if ($s_fields["View_Mod_PvP"] > 0) { if ($s_fields["View_Mod_PvP"] == 1) { } elseif ($s_fields["View_Mod_PvP"] == 2) { // only registered users may view this tab if ($user_lvl > -1) { $view_pvp_override = true; } } } else { if ($user_lvl > $owner_gmlvl || $owner_name === $user_name || $user_lvl == $action_permission["delete"]) { $view_pvp_override = true; } } $output .= ' <!-- start of char.php --> <div class="tab"> <ul> <li class="selected"><a href="char.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "char_sheet") . '</a></li>'; if ($view_inv_override) { $output .= ' <li><a href="char_inv.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "inventory") . '</a></li>'; } if ($view_talent_override) { $output .= ' ' . ($char["level"] < 10 ? '' : '<li><a href="char_talent.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "talents") . '</a></li>') . ''; } if ($view_achieve_override) { $output .= ' <li><a href="char_achieve.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "achievements") . '</a></li>'; } if ($view_quest_override) { $output .= ' <li><a href="char_quest.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "quests") . '</a></li>'; } if ($view_friends_override) { $output .= ' <li><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "friends") . '</a></li>'; } if ($view_view_override) { $output .= ' <li><a href="char_view.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "view") . '</a></li>'; } $output .= ' </ul> </div>'; if ($view_override || $user_lvl > $owner_gmlvl || $owner_name === $user_name || $user_lvl == $action_permission["delete"]) { $output .= ' <div class="tab_content center"> <div class="tab"> <ul> <li class="selected"><a href="char.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "char_sheet") . '</a></li>'; if (char_get_class_name($char["class"]) === "Hunter" && $view_pets_override) { $output .= ' <li><a href="char_pets.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "pets") . '</a></li>'; } if ($view_rep_override) { $output .= ' <li><a href="char_rep.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "reputation") . '</a></li>'; } if ($view_skill_override) { $output .= ' <li><a href="char_skill.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "skills") . '</a></li>'; } if ($view_pvp_override) { $output .= ' <li><a href="char_pvp.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "pvp") . '</a></li>'; } if ($owner_name == $user_name || $user_lvl >= get_page_permission("insert", "char_mail.php")) { $output .= ' <li><a href="char_mail.php?id=' . $id . '&realm=' . $realmid . '">' . lang("char", "mail") . '</a></li>'; } $output .= ' </ul> </div>'; } else { $output .= ' <div class="tab_content center"> <div class="tab"> </div>'; } $output .= ' <div class="tab_content2 center"> <table class="lined" id="char_character_sheet"> <tr> <td colspan="2"> <div> <img src="' . char_get_avatar_img($char["level"], $char["gender"], $char["race"], $char["class"], 0) . '" alt="avatar" /> </div> <div>'; // this_is_junk: auras are stored in a string in the characters table. // not sure how to query a string as though it were a record if ($core == 1) { } else { $a_results = $sql["char"]->query("SELECT DISTINCT spell FROM character_aura WHERE guid='" . $id . "'"); } if ($sql["char"]->num_rows($a_results)) { while ($aura = $sql["char"]->fetch_assoc($a_results)) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $spell_datasite . $aura["spell"] . '" rel="external"> <img src="' . spell_get_icon($aura["spell"]) . '" alt="' . $aura["spell"] . '" width="24" height="24" /> </a>'; } } $output .= ' </div> </td> <td colspan="4"> <span class="bold"> ' . htmlentities($char["name"], ENT_COMPAT, $site_encoding) . ' - <img src="img/c_icons/' . $char["race"] . '-' . $char["gender"] . '.gif" onmousemove="oldtoolTip(\'' . char_get_race_name($char["race"]) . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> <img src="img/c_icons/' . $char["class"] . '.gif" onmousemove="oldtoolTip(\'' . char_get_class_name($char["class"]) . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> - ' . lang("char", "level_short") . char_get_level_color($char["level"]) . ' </span> <br />' . lang("char", "location") . ': ' . get_map_name($char["mapid"]) . ' - ' . get_zone_name($char["zoneid"]) . ' <br />' . lang("char", "honor_points") . ': ' . $char_data[PLAYER_FIELD_HONOR_CURRENCY] . ' | ' . lang("char", "arena_points") . ': ' . $char_data[PLAYER_FIELD_ARENA_CURRENCY] . ' | ' . lang("char", "honor_kills") . ': ' . $char_data[PLAYER_FIELD_LIFETIME_HONORBALE_KILLS] . ' <br />' . lang("char", "guild") . ': ' . $guild_name . ' | ' . lang("char", "rank") . ': ' . htmlentities($guild_rank, ENT_COMPAT, $site_encoding) . ' <br />' . lang("char", "online") . ': ' . ($char["online"] ? '<img src="img/up.gif" onmousemove="oldtoolTip(\'' . lang("char", "online") . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="online" />' : '<img src="img/down.gif" onmousemove="oldtoolTip(\'' . lang("char", "offline") . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="offline" />'); if ($showcountryflag) { require_once 'libs/misc_lib.php'; $country = misc_get_country_by_account($char["acct"]); $output .= ' | ' . lang("global", "country") . ': ' . ($country["code"] ? '<img src="img/flags/' . $country["code"] . '.png" onmousemove="oldtoolTip(\'' . $country["country"] . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" />' : '-'); unset($country); } $output .= ' </td> </tr> <tr> <td style="width: 6%;">'; if ($equiped_items[1][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_HEAD . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'HEAD' . '\');" onmouseout="HideTooltip(\'_b' . 'HEAD' . '\');"> <img src="' . $equiped_items[1][1] . '" class="' . $equiped_items[1][2] . '" alt="Head" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[1][3]["bag"] . '&slot=' . $equiped_items[1][3]["slot"] . '&item=' . $equiped_items[1][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[1][3]["item_template"]); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'HEAD' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[1][3]["enchantment"], $equiped_items[1][3]["property"], $equiped_items[1][3]["creator"], $equiped_items[1][3]["durability"], $equiped_items[1][3]["flags"]) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_head.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td class="half_line" colspan="2" align="center" style="width: 50%;"> <div class="gradient_p" id="char_hp_name">' . lang("item", "health") . ':</div> <div class="gradient_pp" id="char_hp_value">' . $char_data[UNIT_FIELD_HEALTH] . '/' . $char_data[UNIT_FIELD_MAXHEALTH] . '</div>'; if ($char["class"] == 11) { //druid $output .= ' <br /> <div class="gradient_p" id="char_energy_name">' . lang("item", "mana") . ':</div> <div class="gradient_pp" id="char_energy_value">' . $char_data[UNIT_FIELD_POWER1] . '/' . $char_data[UNIT_FIELD_MAXPOWER1] . '</div>'; } $output .= ' </td> <td class="half_line" colspan="2" align="center" style="width: 50%;">'; if ($char["class"] == 1) { $output .= ' <div class="gradient_p" id="char_energy_name">' . lang("item", "rage") . ':</div> <div class="gradient_pp" id="char_energy_value">' . $char_data[UNIT_FIELD_POWER2] / 10 . '/' . $char_data[UNIT_FIELD_MAXPOWER2] / 10 . '</div>'; } elseif ($char["class"] == 4) { $output .= ' <div class="gradient_p" id="char_energy_name">' . lang("item", "energy") . ':</div> <div class="gradient_pp" id="char_energy_value">' . $char_data[UNIT_FIELD_POWER4] . '/' . $char_data[UNIT_FIELD_MAXPOWER4] . '</div>'; } elseif ($char["class"] == 6) { $output .= ' <div class="gradient_p" id="char_energy_name">' . lang("item", "runic") . ':</div> <div class="gradient_pp" id="char_energy_value">' . $char_data[UNIT_FIELD_POWER7] / 10 . '/' . $char_data[UNIT_FIELD_MAXPOWER7] / 10 . '</div>'; } elseif ($char["class"] == 11) { $output .= ' <div class="gradient_p" id="char_energy_name">' . lang("item", "mana") . ':</div> <div class="gradient_pp" id="char_energy_value">' . $char_data[UNIT_FIELD_POWER1] . '/' . $char_data[UNIT_FIELD_MAXPOWER1] . '</div> <br /> <div class="gradient_p" id="char_energy_name">' . lang("item", "rage") . ':</div> <div class="gradient_pp" id="char_energy_value">' . $char_data[UNIT_FIELD_POWER2] / 10 . '/' . $char_data[UNIT_FIELD_MAXPOWER2] / 10 . '</div>'; } elseif ($char["class"] == 2 || $char["class"] == 3 || $char["class"] == 5 || $char["class"] == 7 || $char["class"] == 8 || $char["class"] == 9) { $output .= ' <div class="gradient_p" id="char_energy_name">' . lang("item", "mana") . ':</div> <div class="gradient_pp" id="char_energy_value">' . $char_data[UNIT_FIELD_POWER1] . '/' . $char_data[UNIT_FIELD_MAXPOWER1] . '</div>'; } $output .= ' </td> <td style="width: 6%;">'; if ($equiped_items[10][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_GLOVES . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'GLOVES' . '\');" onmouseout="HideTooltip(\'_b' . 'GLOVES' . '\');"> <img src="' . $equiped_items[10][1] . '" class="' . $equiped_items[10][2] . '" alt="Gloves" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[10][3]["bag"] . '&slot=' . $equiped_items[10][3]["slot"] . '&item=' . $equiped_items[10][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[10][3]["item_template"]); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'GLOVES' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[10][3]["enchantment"], $equiped_items[10][3]["property"], $equiped_items[10][3]["creator"], $equiped_items[10][3]["durability"], $equiped_items[10][3]["flags"]) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_gloves.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td style="width: 1%;">'; if ($equiped_items[2][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_NECK . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'NECK' . '\');" onmouseout="HideTooltip(\'_b' . 'NECK' . '\');"> <img src="' . $equiped_items[2][1] . '" class="' . $equiped_items[2][2] . '" alt="Neck" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[2][3]["bag"] . '&slot=' . $equiped_items[2][3]["slot"] . '&item=' . $equiped_items[2][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[2][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'NECK' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[2][3]['enchantment'], $equiped_items[2][3]['property'], $equiped_items[2][3]['creator'], $equiped_items[2][3]['durability'], $equiped_items[2][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_neck.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td class="half_line" colspan="2" rowspan="3" align="center" style="width: 50%;"> <div class="gradient_p"> ' . lang("item", "strength") . ':<br /> ' . lang("item", "agility") . ':<br /> ' . lang("item", "stamina") . ':<br /> ' . lang("item", "intellect") . ':<br /> ' . lang("item", "spirit") . ':<br /> ' . lang("item", "armor") . ': </div> <div class="gradient_pp"> ' . $char_data[UNIT_FIELD_STAT0] . '<br /> ' . $char_data[UNIT_FIELD_STAT1] . '<br /> ' . $char_data[UNIT_FIELD_STAT2] . '<br /> ' . $char_data[UNIT_FIELD_STAT3] . '<br /> ' . $char_data[UNIT_FIELD_STAT4] . '<br /> ' . $char_data[UNIT_FIELD_RESISTANCES] . ' </div> </td> <td class="half_line" colspan="2" rowspan="3" align="center" style="width: 50%;"> <div class="gradient_p"> ' . lang("item", "res_holy") . ':<br /> ' . lang("item", "res_arcane") . ':<br /> ' . lang("item", "res_fire") . ':<br /> ' . lang("item", "res_nature") . ':<br /> ' . lang("item", "res_frost") . ':<br /> ' . lang("item", "res_shadow") . ': </div> <div class="gradient_pp"> ' . $char_data[UNIT_FIELD_RESISTANCES + 1] . '<br /> ' . $char_data[UNIT_FIELD_RESISTANCES + 2] . '<br /> ' . $char_data[UNIT_FIELD_RESISTANCES + 3] . '<br /> ' . $char_data[UNIT_FIELD_RESISTANCES + 4] . '<br /> ' . $char_data[UNIT_FIELD_RESISTANCES + 5] . '<br /> ' . $char_data[UNIT_FIELD_RESISTANCES + 6] . ' </div> </td> <td style="width: 1%;">'; if ($equiped_items[6][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_BELT . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'BELT' . '\');" onmouseout="HideTooltip(\'_b' . 'BELT' . '\');"> <img src="' . $equiped_items[6][1] . '" class="' . $equiped_items[6][2] . '" alt="Belt" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[6][3]["bag"] . '&slot=' . $equiped_items[6][3]["slot"] . '&item=' . $equiped_items[6][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[6][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'BELT' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[6][3]['enchantment'], $equiped_items[6][3]['property'], $equiped_items[6][3]['creator'], $equiped_items[6][3]['durability'], $equiped_items[6][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_waist.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td style="width: 1%;">'; if ($equiped_items[3][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_SHOULDER . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'SHOULDER' . '\');" onmouseout="HideTooltip(\'_b' . 'SHOULDER' . '\');"> <img src="' . $equiped_items[3][1] . '" class="' . $equiped_items[3][2] . '" alt="Shoulder" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[3][3]["bag"] . '&slot=' . $equiped_items[3][3]["slot"] . '&item=' . $equiped_items[3][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[3][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'SHOULDER' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[3][3]['enchantment'], $equiped_items[3][3]['property'], $equiped_items[3][3]['creator'], $equiped_items[3][3]['durability'], $equiped_items[3][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_shoulder.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td style="width: 1%;">'; if ($equiped_items[7][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_LEGS . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'LEGS' . '\');" onmouseout="HideTooltip(\'_b' . 'LEGS' . '\');"> <img src="' . $equiped_items[7][1] . '" class="' . $equiped_items[7][2] . '" alt="Legs" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[7][3]["bag"] . '&slot=' . $equiped_items[7][3]["slot"] . '&item=' . $equiped_items[7][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[7][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'LEGS' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[7][3]['enchantment'], $equiped_items[7][3]['property'], $equiped_items[7][3]['creator'], $equiped_items[7][3]['durability'], $equiped_items[7][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_legs.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td style="width: 1%;">'; if ($equiped_items[15][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_BACK . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'BACK' . '\');" onmouseout="HideTooltip(\'_b' . 'BACK' . '\');"> <img src="' . $equiped_items[15][1] . '" class="' . $equiped_items[15][2] . '" alt="Back" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[15][3]["bag"] . '&slot=' . $equiped_items[15][3]["slot"] . '&item=' . $equiped_items[15][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[15][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'BACK' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[15][3]['enchantment'], $equiped_items[15][3]['property'], $equiped_items[15][3]['creator'], $equiped_items[15][3]['durability'], $equiped_items[15][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_chest_back.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td style="width: 1%;">'; if ($equiped_items[8][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_FEET . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'FEET' . '\');" onmouseout="HideTooltip(\'_b' . 'FEET' . '\');"> <img src="' . $equiped_items[8][1] . '" class="' . $equiped_items[8][2] . '" alt="Feet" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[8][3]["bag"] . '&slot=' . $equiped_items[8][3]["slot"] . '&item=' . $equiped_items[8][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[8][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'FEET' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[8][3]['enchantment'], $equiped_items[8][3]['property'], $equiped_items[8][3]['creator'], $equiped_items[8][3]['durability'], $equiped_items[8][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_feet.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td style="width: 1%;">'; if ($equiped_items[5][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_CHEST . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'CHEST' . '\');" onmouseout="HideTooltip(\'_b' . 'CHEST' . '\');"> <img src="' . $equiped_items[5][1] . '" class="' . $equiped_items[5][2] . '" alt="Chest" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[5][3]["bag"] . '&slot=' . $equiped_items[5][3]["slot"] . '&item=' . $equiped_items[5][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[5][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'CHEST' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[5][3]['enchantment'], $equiped_items[5][3]['property'], $equiped_items[5][3]['creator'], $equiped_items[5][3]['durability'], $equiped_items[5][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_chest_back.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td class="half_line" colspan="2" rowspan="2" align="center" style="width: 50%;"> <div class="gradient_p" id="char_melee_name"> ' . lang("char", "melee_d") . ':<br /> ' . lang("char", "melee_ap") . ':<br /> ' . lang("char", "melee_hit") . ':<br /> ' . lang("char", "melee_crit") . ':<br /> ' . lang("char", "expertise") . ':<br /> </div> <div class="gradient_pp" id="char_melee_value"> ' . $mindamage . '-' . $maxdamage . '<br /> ' . ($char_data[UNIT_FIELD_ATTACK_POWER] + $char_data[UNIT_FIELD_ATTACK_POWER_MODS]) . '<br /> ' . $melee_hit . '<br /> ' . $crit . '%<br /> ' . $expertise . '<br /> </div> </td> <td class="half_line" colspan="2" rowspan="2" align="center" style="width: 50%;"> <div class="gradient_p"> ' . lang("char", "spell_d") . ':<br /> ' . lang("char", "spell_heal") . ':<br /> ' . lang("char", "spell_hit") . ':<br /> ' . lang("char", "spell_crit") . ':<br /> ' . lang("char", "spell_haste") . ' </div> <div class="gradient_pp"> ' . $spell_damage . '<br /> ' . $spell_heal . '<br /> ' . $spell_hit . '<br /> ' . $spell_crit . '%<br /> ' . $spell_haste . ' </div> </td> <td style="width: 1%;">'; if ($equiped_items[11][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_FINGER1 . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'FINGER1' . '\');" onmouseout="HideTooltip(\'_b' . 'FINGER1' . '\');"> <img src="' . $equiped_items[11][1] . '" class="' . $equiped_items[11][2] . '" alt="Finger1" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[11][3]["bag"] . '&slot=' . $equiped_items[11][3]["slot"] . '&item=' . $equiped_items[11][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[11][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'FINGER1' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[11][3]['enchantment'], $equiped_items[11][3]['property'], $equiped_items[11][3]['creator'], $equiped_items[11][3]['durability'], $equiped_items[11][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_finger.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td style="width: 1%;">'; if ($equiped_items[4][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_SHIRT . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'SHIRT' . '\');" onmouseout="HideTooltip(\'_b' . 'SHIRT' . '\');"> <img src="' . $equiped_items[4][1] . '" class="' . $equiped_items[4][2] . '" alt="Shirt" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[4][3]["bag"] . '&slot=' . $equiped_items[4][3]["slot"] . '&item=' . $equiped_items[4][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[4][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'SHIRT' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[4][3]['enchantment'], $equiped_items[4][3]['property'], $equiped_items[4][3]['creator'], $equiped_items[4][3]['durability'], $equiped_items[4][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_shirt.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td style="width: 1%;">'; if ($equiped_items[12][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_FINGER2 . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'FINGER2' . '\');" onmouseout="HideTooltip(\'_b' . 'FINGER2' . '\');"> <img src="' . $equiped_items[12][1] . '" class="' . $equiped_items[12][2] . '" alt="Finger2" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[12][3]["bag"] . '&slot=' . $equiped_items[12][3]["slot"] . '&item=' . $equiped_items[12][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[12][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'FINGER2' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[12][3]['enchantment'], $equiped_items[12][3]['property'], $equiped_items[12][3]['creator'], $equiped_items[12][3]['durability'], $equiped_items[12][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_finger.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td style="width: 1%;">'; if ($equiped_items[19][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_TABARD . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'TABARD' . '\');" onmouseout="HideTooltip(\'_b' . 'TABARD' . '\');"> <img src="' . $equiped_items[19][1] . '" class="' . $equiped_items[19][2] . '" alt="Tabard" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[19][3]["bag"] . '&slot=' . $equiped_items[19][3]["slot"] . '&item=' . $equiped_items[19][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[19][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'TABARD' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[19][3]['enchantment'], $equiped_items[19][3]['property'], $equiped_items[19][3]['creator'], $equiped_items[19][3]['durability'], $equiped_items[19][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_tabard.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td class="half_line" colspan="2" rowspan="2" align="center" style="width: 50%;"> <div class="gradient_p"> ' . lang("char", "dodge") . ':<br /> ' . lang("char", "parry") . ':<br /> ' . lang("char", "block") . ': </div> <div class="gradient_pp"> ' . $dodge . '%<br /> ' . $parry . '%<br /> ' . $block . '% </div> </td> <td class="half_line" colspan="2" rowspan="2" align="center" style="width: 50%;"> <div class="gradient_p" id="char_ranged_name"> ' . lang("char", "ranged_d") . ':<br /> ' . lang("char", "ranged_ap") . ':<br /> ' . lang("char", "ranged_hit") . ':<br /> ' . lang("char", "ranged_crit") . ':<br /> </div> <div class="gradient_pp" id="char_ranged_value"> ' . $minrangeddamage . '-' . $maxrangeddamage . '<br /> ' . ($char_data[UNIT_FIELD_RANGED_ATTACK_POWER] + $char_data[UNIT_FIELD_RANGED_ATTACK_POWER_MODS]) . '<br /> ' . $ranged_hit . '<br /> ' . $ranged_crit . '%<br /> </div> </td> <td style="width: 1%;">'; if ($equiped_items[13][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_TRINKET1 . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'TRINKET1' . '\');" onmouseout="HideTooltip(\'_b' . 'TRINKET1' . '\');"> <img src="' . $equiped_items[13][1] . '" class="' . $equiped_items[13][2] . '" alt="Trinket1" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[13][3]["bag"] . '&slot=' . $equiped_items[13][3]["slot"] . '&item=' . $equiped_items[13][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[13][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'TRINKET1' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[13][3]['enchantment'], $equiped_items[13][3]['property'], $equiped_items[13][3]['creator'], $equiped_items[13][3]['durability'], $equiped_items[13][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_trinket.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td style="width: 1%;">'; if ($equiped_items[9][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_WRIST . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'WRIST' . '\');" onmouseout="HideTooltip(\'_b' . 'WRIST' . '\');"> <img src="' . $equiped_items[9][1] . '" class="' . $equiped_items[9][2] . '" alt="Wrist" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[9][3]["bag"] . '&slot=' . $equiped_items[9][3]["slot"] . '&item=' . $equiped_items[9][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[9][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'WRIST' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[9][3]['enchantment'], $equiped_items[9][3]['property'], $equiped_items[9][3]['creator'], $equiped_items[9][3]['durability'], $equiped_items[9][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_wrist.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td style="width: 1%;">'; if ($equiped_items[14][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_TRINKET2 . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'TRINKET2' . '\');" onmouseout="HideTooltip(\'_b' . 'TRINKET2' . '\');"> <img src="' . $equiped_items[14][1] . '" class="' . $equiped_items[14][2] . '" alt="Trinket2" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[14][3]["bag"] . '&slot=' . $equiped_items[14][3]["slot"] . '&item=' . $equiped_items[14][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[14][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'TRINKET2' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[14][3]['enchantment'], $equiped_items[14][3]['property'], $equiped_items[14][3]['creator'], $equiped_items[14][3]['durability'], $equiped_items[14][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_trinket.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td></td> <td style="width: 15%;">'; if ($equiped_items[16][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_MAIN_HAND . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'MAIN_HAND' . '\');" onmouseout="HideTooltip(\'_b' . 'MAIN_HAND' . '\');"> <img src="' . $equiped_items[16][1] . '" class="' . $equiped_items[16][2] . '" alt="MainHand" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[16][3]["bag"] . '&slot=' . $equiped_items[16][3]["slot"] . '&item=' . $equiped_items[16][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[16][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'MAIN_HAND' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[16][3]['enchantment'], $equiped_items[16][3]['property'], $equiped_items[16][3]['creator'], $equiped_items[16][3]['durability'], $equiped_items[16][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_main_hand.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td style="width: 15%;">'; if ($equiped_items[17][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_OFF_HAND . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'OFF_HAND' . '\');" onmouseout="HideTooltip(\'_b' . 'OFF_HAND' . '\');"> <img src="' . $equiped_items[17][1] . '" class="' . $equiped_items[17][2] . '" alt="OffHand" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[17][3]["bag"] . '&slot=' . $equiped_items[17][3]["slot"] . '&item=' . $equiped_items[17][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[17][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'OFF_HAND' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[17][3]['enchantment'], $equiped_items[17][3]['property'], $equiped_items[17][3]['creator'], $equiped_items[17][3]['durability'], $equiped_items[17][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_off_hand.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td style="width: 15%;">'; if ($equiped_items[18][1]) { $output .= ' <a class="char_icon_padding" href="' . $base_datasite . $item_datasite . $EQU_RANGED . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . 'RANGED' . '\');" onmouseout="HideTooltip(\'_b' . 'RANGED' . '\');"> <img src="' . $equiped_items[18][1] . '" class="' . $equiped_items[18][2] . '" alt="Ranged" /> </a>'; if ($mode) { $output .= ' <div style="position: relative;"> <a href="char.php?action=delete_item&id=' . $id . '&bag=' . $equiped_items[18][3]["bag"] . '&slot=' . $equiped_items[18][3]["slot"] . '&item=' . $equiped_items[18][3]["item_template"] . '&mode=' . $mode . '" id="ch_item_delete"> <img src="img/aff_cross.png" /> </a> </div>'; } // build a tooltip object for this item $i_fields = get_item_info($equiped_items[18][3]['item_template']); $output .= ' <div class="item_tooltip" id="tooltip_b' . 'RANGED' . '"> <table> <tr> <td> ' . get_item_tooltip($i_fields, $equiped_items[18][3]['enchantment'], $equiped_items[18][3]['property'], $equiped_items[18][3]['creator'], $equiped_items[18][3]['durability'], $equiped_items[18][3]['flags']) . ' </td> </tr> </table> </div>'; } else { $output .= ' <img src="img/INV/INV_empty_ranged.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td style="width: 15%;"></td> <td></td> </tr>'; if ($user_lvl > $owner_gmlvl || $owner_name === $user_name || $user_lvl == $action_permission["delete"]) { // if the character is still leveling, show an experience bar if ($char["level"] < 80) { $xp_query = "SELECT * FROM xp_to_level WHERE level='" . $char["level"] . "'"; $xp_result = $sql["mgr"]->query($xp_query); $xp_fields = $sql["mgr"]->fetch_assoc($xp_result); $xp_to_level = $xp_fields["xp_for_next_level"]; $output .= ' <tr> <td colspan="6" class="bar xp_bar" style="background-position: ' . (round(580 * $char["xp"] / $xp_to_level) - 580) . 'px;"> ' . lang("char", "exp") . ": " . $char["xp"] . " / " . $xp_to_level . ' </td> </tr>'; } //total time played $tot_time = $char["totaltime"]; $tot_days = (int) ($tot_time / 86400); $tot_time = $tot_time - $tot_days * 86400; $total_hours = (int) ($tot_time / 3600); $tot_time = $tot_time - $total_hours * 3600; $total_min = (int) ($tot_time / 60); $time_offset = $timezone_offset * 3600; if ($char["timestamp"] != 0) { $lastseen = date("F j, Y @ Hi", $char["timestamp"] + $time_offset); } else { $lastseen = '-'; } $output .= ' <tr> <td colspan="6"> ' . lang("char", "tot_play_time") . ': ' . $tot_days . ' ' . lang("char", "days") . ' ' . $total_hours . ' ' . lang("char", "hours") . ' ' . $total_min . ' ' . lang("char", "min") . ' </td> </tr>'; $output .= ' <tr> <td colspan="6"> ' . lang("char", "lastseen") . ': ' . $lastseen . ' </td> </tr>'; } $output .= ' </table> </div> <br /> </div> <br /> <table class="hidden center"> <tr> <td>'; // button to user account page, user account page has own security makebutton(lang("char", "chars_acc"), 'user.php?action=edit_user&acct=' . $owner_acc_id . '', 130); $output .= ' </td> <td>'; // only higher level GM with delete access can edit character // character edit allows removal of character items, so delete permission is needed if ($user_lvl >= $owner_gmlvl && $user_lvl >= $action_permission["delete"]) { makebutton(lang("char", "edit_button"), 'char_edit.php?id=' . $id . '&realm=' . $realmid, 130); $output .= ' </td> <td>'; } // only higher level GM with delete access, or character owner can delete character if ($user_lvl > $owner_gmlvl && $user_lvl >= $action_permission["delete"] || $owner_name === $user_name) { makebutton(lang("char", "del_char"), 'char_list.php?action=del_char_form&check%5B%5D=' . $id . '" type="wrn', 130); $output .= ' </td> <td>'; } // show Delete Mode / View Mode button depending on current mode if ($mode) { makebutton(lang("char", "viewmode"), 'char.php?id=' . $id . '&realm=' . $realmid . '&mode=0" type="def', 130); } else { makebutton(lang("char", "deletemode"), 'char.php?id=' . $id . '&realm=' . $realmid . '&mode=1" type="def', 130); } $output .= ' </td> <td>'; // only GM with update permission can send mail, mail can send items, so update permission is needed if ($user_lvl >= $action_permission["update"]) { makebutton(lang("char", "send_mail"), 'mail.php?type=ingame_mail&to=' . $char["name"], 130); $output .= ' </td>'; } else { $output .= ' </td>'; } $output .= ' </tr> <tr> <td>'; makebutton(lang("global", "back"), 'javascript:window.history.back()" type="def', 130); $output .= ' </td> </tr> </table> <br /> <!-- end of char.php -->'; } else { } //error($lang_char["no_permission"]); } else { error(lang("char", "no_char_found")); } }
function main() { global $output, $realm_id, $world_db, $logon_db, $characters_db, $corem_db, $server, $action_permission, $user_lvl, $user_id, $site_encoding, $hide_coupons, $locales_search_option, $base_datasite, $item_datasite, $showcountryflag, $gm_online_count, $gm_online, $itemperpage, $hide_uptime, $player_online, $hide_max_players, $hide_avg_latency, $hide_plr_latency, $hide_server_mem, $sql, $core; // do any raffle drawings that are necessary do_raffles(); // check achievement contests do_contests(); $output .= ' <div class="top">'; //---------------------Information for Explorer Users-------------------------- if (preg_match("/MSIE/", $_SERVER["HTTP_USER_AGENT"])) { $msie = ' <br /> <span id="index_explorer_warning">' . lang("index", "explorer_warn") . '</span> <br />'; } else { $msie = ''; } //----------------------------------------------------------------------------- if (test_port($server[$realm_id]["addr"], $server[$realm_id]["game_port"])) { if ($core == 1) { $stats = get_uptime($server[$realm_id]["stats.xml"]); $staticUptime = ' <em>' . htmlentities(get_realm_name($realm_id), ENT_COMPAT, $site_encoding) . '</em> <br />' . $stats["platform"][4] . ' ' . $stats["platform"][5] . ' ' . $stats["platform"][6]; if (!$hide_uptime) { $staticUptime .= '<br />' . lang("index", "online") . ' for ' . $stats["uptime"]; } $output .= ' <div id="uptime">' . $msie . ' <h1> <span id="index_realm_info"> <span>' . $staticUptime . '</span>'; if (!$hide_max_players) { $output .= ' <br /> <span>' . lang("index", "maxplayers") . ': </span> <span class="index_realm_info_value">' . $stats["peak"] . '</span>'; } if (!$hide_avg_latency) { $output .= ' <br /> <span>' . lang("index", "avglat") . ': </span> <span class="index_realm_info_value">' . $stats["avglat"] . '</span>'; } $output .= ' <br />'; if ($hide_server_mem != 0) { if ($hide_server_mem == 2 || $user_lvl == $action_permission["delete"]) { $output .= ' <span>' . lang("index", "cpu") . ': </span> <span class="index_realm_info_value">' . $stats["cpu"] . '%, </span> <span>' . lang("index", "ram") . ': </span> <span class="index_realm_info_value">' . $stats["ram"] . ' MB, </span> <span>' . lang("index", "threads") . ': </span> <span class="index_realm_info_value">' . $stats["threads"] . '</span>'; } } $output .= ' </span> </h1> </div>'; } else { $stats = $sql["logon"]->fetch_assoc($sql["logon"]->query("SELECT starttime, maxplayers FROM uptime WHERE realmid='" . $realm_id . "' ORDER BY starttime DESC LIMIT 1"), 0); $uptimetime = time() - $stats["starttime"]; // a more reliable method of counting how many characters have been online since server start //$maxplayers_query = "SELECT COUNT(*) FROM `".$characters_db[$realm_id]["name"]."`.characters WHERE logout_time>='".$stats["starttime"]."' AND logout_time>=(SELECT UNIX_TIMESTAMP(last_login) FROM `".$logon_db["name"]."`.account WHERE id=`".$characters_db[$realm_id]["name"]."`.characters.account)"; //$maxplayers_result = $sql["char"]->query($maxplayers_query); //$maxplayers_result = $sql["char"]->fetch_assoc($maxplayers_result); //$stats["maxplayers"] = $maxplayers_result["COUNT(*)"]; function format_uptime($seconds) { $secs = intval($seconds % 60); $mins = intval($seconds / 60 % 60); $hours = intval($seconds / 3600 % 24); $days = intval($seconds / 86400); if ($days > 365) { $days = intval($seconds / 86400 % 365.24); $years = intval($seconds / 31556926); } $uptimeString = ''; if ($years) { // we have a server that has been up for over a year? O_o // actually, it's probably because the server didn't write a useful // value to the uptime table's starttime field. $uptimeString .= $years; $uptimeString .= $years == 1 ? ' ' . lang("index", "uptime_year") : ' ' . lang("index", "uptime_years"); if ($days) { $uptimeString .= ($years > 0 ? ', ' : '') . $days; $uptimeString .= $days == 1 ? ' ' . lang("index", "uptime_day") : ' ' . lang("index", "uptime_days"); } } else { if ($days) { $uptimeString .= $days; $uptimeString .= $days == 1 ? ' ' . lang("index", "uptime_day") : ' ' . lang("index", "uptime_days"); } } if ($hours) { $uptimeString .= ($days > 0 ? ', ' : '') . $hours; $uptimeString .= $hours == 1 ? ' ' . lang("index", "uptime_hour") : ' ' . lang("index", "uptime_hours"); } if ($mins) { $uptimeString .= ($days > 0 || $hours > 0 ? ', ' : '') . $mins; $uptimeString .= $mins == 1 ? ' ' . lang("index", "uptime_minute") : ' ' . lang("index", "uptime_minutes"); } if ($secs) { $uptimeString .= ($days > 0 || $hours > 0 || $mins > 0 ? ', ' : '') . $secs; $uptimeString .= $secs == 1 ? ' ' . lang("index", "uptime_second") : ' ' . lang("index", "uptime_seconds"); } return $uptimeString; } $staticUptime = ' <em>' . htmlentities(get_realm_name($realm_id), ENT_COMPAT, $site_encoding) . '</em> '; if (!$hide_uptime) { if ($stats["starttime"] != 0) { $staticUptime .= '<br /><span>' . lang("index", "online") . format_uptime($uptimetime) . '</span>'; } else { $staticUptime .= '<br /><span style="color:orange">' . lang("index", "time_error1") . ': <br>' . format_uptime($uptimetime) . '</span><br><span style="color:red">' . lang("index", "time_error2") . '</span>'; } } unset($uptimetime); $output .= ' <div id="uptime">' . $msie . ' <h1> <span id="index_realm_info">' . $staticUptime; if (!$hide_max_players) { $output .= ' <br /> <span>' . lang("index", "maxplayers") . ': </span> <span class="index_realm_info_value">' . $stats["maxplayers"] . '</span>'; } // this_is_junk: MaNGOS doesn't store player latency. :/ if ($core == 3) { if (!$hide_avg_latency) { $lat_query = "SELECT SUM(latency), COUNT(*) FROM characters WHERE online=1"; $lat_result = $sql["char"]->query($lat_query); $lat_fields = $sql["char"]->fetch_assoc($lat_result); $avglat = sprintf("%.3f", $lat_fields["SUM(latency)"] / $lat_fields["COUNT(*)"]); $output .= ' <br /> <span>' . lang("index", "avglat") . ': </span> <span class="index_realm_info_value">' . $avglat . '</span>'; } } $output .= ' </span> </h1> </div>'; unset($stats); $online = true; } unset($staticUptime); //unset($stats); $online = true; } else { $output .= $msie . '<h1><span class="error">' . lang("index", "realm") . ' <em>' . htmlentities(get_realm_name($realm_id), ENT_COMPAT, $site_encoding) . '</em> ' . lang("index", "offline_or_let_high") . '</span></h1>'; $online = false; } //close the div $output .= ' </div>'; // MOTDs // get our MotDs... $motd = ""; $motd_result = $sql["mgr"]->query("SELECT *, UNIX_TIMESTAMP(Created) AS Created, UNIX_TIMESTAMP(Last_Edited) AS Last_Edited FROM motd WHERE Enabled<>0 AND (Target='" . $user_id . "' OR Target=0) ORDER BY Priority ASC"); // if we don't get any MotDs, it'll stay empty if ($user_lvl >= $action_permission["update"]) { $output .= ' <script type="text/javascript"> // <![CDATA[ answerbox.btn_ok = "' . lang("global", "yes_low") . '"; answerbox.btn_cancel = "' . lang("global", "no") . '"; var del_motd = "motd.php?action=delete_motd&id="; // ]]> </script>'; } if ($sql["mgr"]->num_rows($motd_result) > 0) { $output .= ' <div class="div_lined"> <div class="div_lined_head"> <span>' . lang("index", "motd") . '</span> </div>'; } while ($temp = $sql["mgr"]->fetch_assoc($motd_result)) { if ($user_lvl >= $temp["Min_Sec_Level"]) { $motd = bb2html($temp["Message"]) . "<br /><br />"; if ($motd) { if ($temp["Target"] != 0) { $output .= ' <div class="div_lined_line left_text">' . lang("motd", "private") . '</div>'; } $output .= ' <div class="div_lined_line left_text">'; $output .= $motd; $output .= ' <br />'; // Get User Name for poster if ($core == 1) { $posted_name_query = "SELECT login FROM accounts WHERE acct='" . $temp["Created_By"] . "'"; } else { $posted_name_query = "SELECT username AS login FROM account WHERE id='" . $temp["Created_By"] . "'"; } $posted_name_result = $sql["logon"]->query($posted_name_query); $posted_name = $sql["logon"]->fetch_assoc($posted_name_result); $posted_name = $posted_name["login"]; // Get Screen Name for poster, if available $posted_screenname_query = "SELECT ScreenName FROM config_accounts WHERE Login='******'"; $posted_screenname_result = $sql["mgr"]->query($posted_screenname_query); $posted_screenname = $sql["mgr"]->fetch_assoc($posted_screenname_result); if ($posted_screenname["ScreenName"] != NULL) { $posted_name = htmlspecialchars($posted_screenname["ScreenName"]); } // if the Server Message is posted by the system, Created_By will be zero if ($temp["Created_By"] != 0) { $output .= ' <span>' . lang("motd", "posted_by") . ':</span>'; if ($user_lvl > -1) { $output .= ' <a href="user.php?action=edit_user&error=11&acct=' . $temp["Created_By"] . '">'; } $output .= ' <span>' . $posted_name . '</span>'; if ($user_lvl > -1) { $output .= ' </a>'; } $output .= ' <span>(' . date("M d, Y @ H:i:s", $temp["Created"]) . ')</span>'; } else { $output .= ' <span>' . lang("motd", "posted") . ': ' . date("M d, Y @ H:i:s", $temp["Created"]) . '</span>'; } // Get User Name for last editor if ($core == 1) { $edited_name_query = "SELECT login FROM accounts WHERE acct='" . $temp["Last_Edited_By"] . "'"; } else { $edited_name_query = "SELECT username AS login FROM account WHERE id='" . $temp["Last_Edited_By"] . "'"; } $edited_name_result = $sql["logon"]->query($edited_name_query); $edited_name = $sql["logon"]->fetch_assoc($edited_name_result); $edited_name = $edited_name["login"]; // Get Screen Name for last editor, if available $edited_screenname_query = "SELECT ScreenName FROM config_accounts WHERE Login='******'"; $edited_screenname_result = $sql["mgr"]->query($edited_screenname_query); $edited_screenname = $sql["mgr"]->fetch_assoc($edited_screenname_result); if ($edited_screenname["ScreenName"] != NULL) { $edited_name = htmlspecialchars($edited_screenname["ScreenName"]); } if ($temp["Last_Edited_By"] != 0) { $output .= ' <br /> <div> <span>' . lang("motd", "edited_by") . ':</span>'; if ($user_lvl > -1) { $output .= ' <a href="user.php?action=edit_user&error=11&acct=' . $temp["Last_Edited_By"] . '">'; } $output .= ' <span>' . $edited_name . '</span>'; if ($user_lvl > -1) { $output .= ' </a>'; } $output .= ' <span>(' . date("M d, Y @ H:i:s", $temp["Last_Edited"]) . ')</span> </div>'; } $output .= ' </div>'; if ($user_lvl >= $action_permission["update"]) { $output .= ' <div class="div_lined_line right_text"> <img src="img/aff_cross.png" width="16" height="16" onclick="answerBox(\'' . lang("global", "delete") . ': <font color=white>' . $temp["ID"] . '</font><br />' . lang("global", "are_you_sure") . '\', del_motd + ' . $temp["ID"] . ');" alt="" />'; } if ($user_lvl >= $action_permission["update"]) { $output .= ' <a href="motd.php?action=edit_motd&error=3&id=' . $temp["ID"] . '"> <img src="img/edit.png" width="16" height="16" alt="" /> </a> </div>'; } $output .= ' <br />'; } } } if ($sql["mgr"]->num_rows($motd_result)) { $output = substr($output, 0, strlen($output) - 24); } if ($sql["mgr"]->num_rows($motd_result) > 0) { $output .= ' </div>'; } if ($user_lvl >= $action_permission["insert"]) { $output .= ' <div class="div_lined"> <div class="div_lined_head right_text"> <a href="motd.php?action=add_motd&error=4">' . lang("index", "add_motd") . '</a> </div> </div>'; } // Coupons if (!$hide_coupons) { $coupon_query = "SELECT * FROM point_system_coupons WHERE ((target='0' AND contest='0') OR target='" . $user_id . "') AND enabled='1'"; $coupon_result = $sql["mgr"]->query($coupon_query); if ($sql["mgr"]->num_rows($coupon_result) > 0) { $output .= ' <br /> <div class="div_lined"> <div class="div_lined_head"> <span>' . lang("index", "avail_coupons") . '</span> </div>'; while ($coupon = $sql["mgr"]->fetch_assoc($coupon_result)) { $usage_query = "SELECT * FROM point_system_coupon_usage WHERE coupon='" . $coupon["entry"] . "' AND user='******'"; $usage_result = $sql["mgr"]->query($usage_query); if ($sql["mgr"]->num_rows($usage_result) < $coupon["usage_limit"] || $coupon["usage_limit"] == -1) { $output .= ' <div class="div_lined_line left_text"> <span>' . $coupon["title"] . '</span> </div>'; if ($coupon["text"] != "") { $output .= ' <div class="div_lined_line left_text"> <span>' . $coupon["text"] . '</span> </div>'; } if ($coupon["credits"] != 0 || $coupon["money"] != 0 || $coupon["item_id"] != 0 || $coupon["raffle_id"] != 0) { $output .= ' <div class="div_lined_line left_text"> <span>' . lang("index", "coupon_value") . ':</span>'; if ($coupon["credits"] > 0) { if ($coupon["credits"] > 1) { $tip = lang("index", "coupon_credits"); } else { $tip = lang("index", "coupon_credit"); } $output .= ' <br /> <br /> <span>' . $coupon["credits"] . '</span> <span>' . $tip . '</span>'; } if ($coupon["money"] > 0) { // extract gold/silver/copper from single gold number $coupon["money"] = str_pad($coupon["money"], 4, "0", STR_PAD_LEFT); $coupon_g = substr($coupon["money"], 0, -4); if ($coupon_g == "") { $coupon_g = 0; } $coupon_s = substr($coupon["money"], -4, 2); if ($coupon_s == "" || $coupon_s == "00") { $coupon_s = 0; } $coupon_c = substr($coupon["money"], -2); if ($coupon_c == "" || $coupon_c == "00") { $coupon_c = 0; } $output .= ' <br /> <br /> <span>' . $coupon_g . '</span> <img src="img/gold.gif" alt="gold" /> <span>' . $coupon_s . '</span> <img src="img/silver.gif" alt="gold" /> <span>' . $coupon_c . '</span> <img src="img/copper.gif" alt="gold" />'; } if ($coupon["item_id"] != 0) { if ($coupon["item_id"] > 0) { // get item data if ($core == 1) { $i_query = "SELECT \r\n *, description AS description1, name1 AS name, quality AS Quality, inventorytype AS InventoryType, \r\n socket_color_1 AS socketColor_1, socket_color_2 AS socketColor_2, socket_color_3 AS socketColor_3,\r\n requiredlevel AS RequiredLevel, allowableclass AS AllowableClass,\r\n sellprice AS SellPrice, itemlevel AS ItemLevel\r\n FROM items " . ($locales_search_option != 0 ? "LEFT JOIN items_localized ON (items_localized.entry=items.entry AND language_code='" . $locales_search_option . "') " : " ") . "WHERE items.entry='" . $coupon["item_id"] . "'"; } else { $i_query = "SELECT *, description AS description1 FROM item_template " . ($locales_search_option != 0 ? "LEFT JOIN locales_item ON locales_item.entry=item_template.entry " : " ") . "WHERE item_template.entry='" . $coupon["item_id"] . "'"; } $i_result = $sql["world"]->query($i_query); $i = $sql["world"]->fetch_assoc($i_result); $output .= ' <br /> <br /> <div class="coupon_item"> <div> <a href="' . $base_datasite . $item_datasite . $coupon["item_id"] . '" rel="external" onmouseover="ShowTooltip(this,\'_b' . $coupon["entry"] . '\');" onmouseout="HideTooltip(\'_b' . $coupon["entry"] . '\');"> <img src="' . get_item_icon($coupon["item_id"]) . '" alt="" /> </a>'; if ($coupon["item_count"] > 1) { $output .= ' <div class="ch_inv_quantity_shadow">' . $coupon["item_count"] . '</div> <div class="ch_inv_quantity">' . $coupon["item_count"] . '</div>'; } $output .= ' </div>'; // build a tooltip object for this item $output .= ' <div class="item_tooltip_div" id="tooltip_b' . $coupon["entry"] . '" style="left: -129px; top: 42px;"> <div>' . get_item_tooltip($i, 0, 0, 0, 0, 0) . '</div> </div>'; $output .= ' </div>'; } else { $output .= ' <br /> <br /> <div class="coupon_item"> <div> <a href="point_system.php?action=view_bag&bag_id=' . $coupon["item_id"] * -1 . '" onmousemove="oldtoolTip(\'' . lang("points", "prize_bag") . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()"> <img src="' . get_item_icon(1725) . '" alt="" /> </a> </div> </div>'; } } if ($coupon["raffle_id"] != 0) { // find out how many entries per user the raffle allows and whether the raffle is enabled if ($coupon["raffle_id"] != -1) { $query = "SELECT tickets_per_user, enabled FROM point_system_raffles WHERE entry='" . $coupon["raffle_id"] . "'"; $result = $sql["mgr"]->query($query); $result = $sql["mgr"]->fetch_assoc($result); $per_user = $result["tickets_per_user"]; $raffle_enabled = $result["enabled"]; // if tickets_per_user is -1 then its unlimited, fake it with a reasonably high number $per_user = 999999999; } else { // if it allows any raffle, then fake it $per_user = 999999999; $raffle_enabled = 1; } if ($raffle_enabled) { // find out how many time we've entered $query = "SELECT COUNT(*) FROM point_system_raffle_tickets WHERE raffle='" . $coupon["raffle_id"] . "' AND user='******'"; $result = $sql["mgr"]->query($query); $result = $sql["mgr"]->fetch_assoc($result); $tickets = $result["COUNT(*)"]; // if we haven't already purchased the maximum number of tickets // or the raffle allows purchase of tickets from any raffle if ($tickets < $per_user || $coupon["raffle_id"] == -1) { if ($coupon["redemption_option"] == 0) { $output .= ' <br /> <br /> <span>' . lang("index", "and_raffle") . '</span>'; } else { $output .= ' <br /> <br /> <span>' . lang("index", "or_raffle") . '</span>'; } } } } $output .= ' </div>'; } if ($coupon["credits"] < 0) { $message = lang("points", "coupon_cost_credits"); $message = str_replace("%1", $coupon["credits"] * -1, $message); $output .= ' <div class="div_lined_line right_text"> <span>' . $message . '</span> </div>'; } if ($coupon["money"] < 0) { $coupon["money"] = $coupon["money"] * -1; $coupon_money = $coupon["money"]; $coupon_money = str_pad($coupon_money, 4, "0", STR_PAD_LEFT); $cg = substr($coupon_money, 0, -4); if ($cg == "") { $cg = 0; } $cs = substr($coupon_money, -4, 2); if ($cs == "" || $cs == "00") { $cs = 0; } $cc = substr($coupon_money, -2); if ($cc == "" || $cc == "00") { $cc = 0; } $coupon_money_display = ' <span>' . $cg . '</span> <img src="img/gold.gif" alt="" align="middle" /> <span>' . $cs . '</span> <img src="img/silver.gif" alt="" align="middle" /> <span>' . $cc . '</span> <img src="img/copper.gif" alt="" align="middle" />'; $message = lang("points", "coupon_cost_money"); $message = str_replace("%1", $coupon_money_display, $message); $output .= ' <div class="div_lined_line right_text"> <span>' . $message . '</span> </div>'; } $output .= ' <div class="div_lined_line right_text"> <a href="point_system.php?action=redeem_coupon&coupon_id=' . $coupon["entry"] . '"> <img src="img/star.png" width="16" height="16" alt="" /> <span> ' . lang("index", "use_coupon") . '</span> </a> </div>'; $output .= ' <br />'; } } if ($sql["mgr"]->num_rows($coupon_result)) { $output = substr($output, 0, strlen($output) - 20); } $output .= ' </div>'; } } // GM Tickets $start_m = isset($_GET["start_m"]) ? $sql["char"]->quote_smart($_GET["start_m"]) : 0; if (!is_numeric($start_m)) { $start_m = 0; } if ($core == 1) { $all_record_m = $sql["char"]->result($sql["char"]->query("SELECT COUNT(*) FROM gm_tickets WHERE deleted=0"), 0); } elseif ($core == 2) { $all_record_m = $sql["char"]->result($sql["char"]->query("SELECT COUNT(*) FROM character_ticket"), 0); } else { $all_record_m = $sql["char"]->result($sql["char"]->query("SELECT COUNT(*) FROM gm_tickets WHERE closedBy=0"), 0); } // show gm tickets $output .= ' <br />'; if ($user_lvl >= $action_permission["insert"]) { if ($all_record_m) { $output .= ' <div class="div_lined"> <div class="div_lined_head"> <span>' . lang("index", "tickets") . '</span> </div>'; if ($core == 1) { $result = $sql["char"]->query("SELECT ticketid, level, message, name, deleted,\r\n timestamp, gm_tickets.playerGuid, acct\r\n FROM gm_tickets\r\n LEFT JOIN characters ON characters.guid=gm_tickets.playerGuid\r\n ORDER BY ticketid DESC LIMIT " . $start_m . ", 3"); } elseif ($core == 2) { $result = $sql["char"]->query("SELECT character_ticket.ticket_id AS ticketid, characters.level,\r\n ticket_text AS message, characters.name, UNIX_TIMESTAMP(ticket_lastchange) AS timestamp,\r\n character_ticket.guid AS playerGuid, account AS acct\r\n FROM character_ticket\r\n LEFT JOIN characters ON characters.guid=character_ticket.guid\r\n ORDER BY ticketid DESC LIMIT " . $start_m . ", 3"); } else { $result = $sql["char"]->query("SELECT gm_tickets.guid AS ticketid, characters.level, message,\r\n gm_tickets.name, closedBy AS deleted, lastModifiedTime AS timestamp, gm_tickets.guid AS playerGuid, account AS acct\r\n FROM gm_tickets\r\n LEFT JOIN characters ON characters.guid=gm_tickets.guid\r\n ORDER BY ticketid DESC LIMIT " . $start_m . ", 3"); } while ($post = $sql["char"]->fetch_assoc($result)) { if (!$post["deleted"]) { if ($core == 1) { $login_result = $sql["logon"]->query("SELECT * FROM accounts WHERE acct='" . $post["acct"] . "'"); } else { $login_result = $sql["logon"]->query("SELECT *, username AS login FROM account WHERE id='" . $post["acct"] . "'"); } $login = $sql["logon"]->fetch_assoc($login_result); $gm_result = $sql["mgr"]->query("SELECT SecurityLevel FROM config_accounts WHERE Login='******'"); $gm = $sql["mgr"]->fetch_assoc($gm_result); $gm = $gm["SecurityLevel"]; if ($user_lvl > 0 && ($user_lvl >= gmlevel($gm) || $user_lvl == $action_permission["delete"])) { $output .= ' <div class="div_lined_line left_text"> <a href="char.php?id=' . $post["playerGuid"] . '"> <span onmousemove="oldtoolTip(\'' . htmlspecialchars($login["username"]) . ' (' . id_get_gm_level($gm) . ')' . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()">' . htmlentities($post["name"], ENT_COMPAT, $site_encoding) . '</span> </a> </div> <div class="div_lined_line left_text"> <span>' . htmlspecialchars($post["message"]) . '</span> </div> <div class="div_lined_line right_text">'; } $output .= ' <span>' . lang("index", "submitted") . ": " . date('G:i:s m-d-Y', $post["timestamp"]) . '</span>'; $output .= ' </div> <div class="div_lined_line right_text">'; if ($user_lvl >= $action_permission["update"]) { $output .= ' <a href="ticket.php?action=edit_ticket&error=4&id=' . $post["ticketid"] . '"> <img src="img/edit.png" width="16" height="16" alt="" /> </a>'; } $output .= ' </div> <br />'; } } $output .= ' </div>'; } } // Character Changes // count pending character changes $char_change_count = $sql["mgr"]->result($sql["mgr"]->query("SELECT COUNT(*) FROM char_changes"), 0); // show pending character changes $output .= ' <br />'; if ($user_lvl >= $action_permission["update"]) { if ($char_change_count) { $output .= ' <div class="div_lined"> <div class="div_lined_head"> <span>' . lang("index", "pendingchanges") . '</span> </div>'; $result = $sql["mgr"]->query("SELECT * FROM char_changes"); while ($change = $sql["mgr"]->fetch_assoc($result)) { if ($core == 1) { $change_char_query = "SELECT * FROM characters WHERE guid='" . $change["guid"] . "'"; } else { $change_char_query = "SELECT *, account AS acct FROM characters WHERE guid='" . $change["guid"] . "'"; } $change_char = $sql["char"]->fetch_assoc($sql["char"]->query($change_char_query)); if ($core == 1) { $change_acct_query = "SELECT * FROM accounts WHERE acct='" . $change_char["acct"] . "'"; } else { $change_acct_query = "SELECT *, username AS login FROM account WHERE id='" . $change_char["acct"] . "'"; } $change_acct = $sql["logon"]->fetch_assoc($sql["logon"]->query($change_acct_query)); if (isset($change["new_name"])) { // Localization $namechange = lang("xname", "playerhasreq"); $namechange = str_replace("%1", htmlspecialchars($change_acct["login"]), $namechange); $namechange = str_replace("%2", htmlspecialchars($change_char["name"]), $namechange); $namechange = str_replace("%3", htmlspecialchars($change["new_name"]), $namechange); $output .= ' <div class="div_lined_line left_text large"> <span>' . $namechange . '</span>'; } if (isset($change["new_race"])) { // Localization $racechange = lang("xrace", "playerhasreq"); $racechange = str_replace("%1", htmlspecialchars($change_acct["login"]), $racechange); $racechange = str_replace("%2", htmlspecialchars($change_char["name"]), $racechange); $racechange = str_replace("%3", char_get_race_name($change["new_race"]), $racechange); $output .= ' <div class="div_lined_line left_text large"> <span>' . $racechange . '</span>'; } if (isset($change["new_acct"])) { if ($core == 1) { $new_acct_query = "SELECT login FROM accounts WHERE acct='" . $change["new_acct"] . "'"; } else { $new_acct_query = "SELECT username AS login FROM account WHERE id='" . $change["new_acct"] . "'"; } $new_acct_result = $sql["logon"]->query($new_acct_query); $new_acct_result = $sql["logon"]->fetch_assoc($new_acct_result); $new_acct_name = $new_acct_result["login"]; // Localization $acctchange = lang("xacct", "playerhasreq"); $acctchange = str_replace("%1", htmlspecialchars($change_acct["login"]), $acctchange); $acctchange = str_replace("%2", htmlspecialchars($change_char["name"]), $acctchange); $acctchange = str_replace("%3", $new_acct_name, $acctchange); $output .= ' <div class="div_lined_line left_text large"> <span>' . $acctchange . '</span>'; } if ($change_char["online"]) { $output .= ' <br /> <br /> <img src="img/aff_warn.gif" alt="warn" /> <span class="error">' . lang("xname", "online") . '</span>'; } $output .= ' </div>'; if (isset($change["new_name"])) { $file = "change_char_name.php"; } elseif (isset($change["new_race"])) { $file = "change_char_race.php"; } else { $file = "change_char_account.php"; } $output .= ' <div class="div_lined_line right_text"> <a href="' . $file . '?action=denied&guid=' . $change["guid"] . '"> <img src="img/cross.png" width="12" height="12" alt="" /> </a>'; if (!$change_char["online"]) { $output .= ' <a href="' . $file . '?action=approve&guid=' . $change["guid"] . '"> <img src="img/aff_tick.png" width="14" height="14" alt="" /> </a>'; } $output .= ' </div> <br />'; } $output .= ' </div>'; } } //print online chars if ($online && $user_lvl >= $player_online) { //==========================$_GET and SECURE================================= $start = isset($_GET["start"]) ? $sql["char"]->quote_smart($_GET["start"]) : 0; if (!is_numeric($start)) { $start = 0; } $order_by = isset($_GET["order_by"]) ? $sql["char"]->quote_smart($_GET["order_by"]) : "name"; if (!preg_match("/^[_[:lower:]]{1,12}\$/", $order_by)) { $order_by = "name"; } $dir = isset($_GET["dir"]) ? $sql["char"]->quote_smart($_GET["dir"]) : 1; if (!preg_match("/^[01]{1}\$/", $dir)) { $dir = 1; } $order_dir = $dir ? "ASC" : "DESC"; $dir = $dir ? 0 : 1; //==========================$_GET and SECURE end============================= if ($order_by === "mapid") { $order_by = "mapid, zoneid "; $order_hold = "mapid"; } elseif ($order_by === "zoneid") { $order_by = "zoneid, mapid "; $order_hold = "zoneid"; } else { $order_hold = $order_by; } $order_side = ""; if (!($user_lvl || $server[$realm_id]["both_factions"])) { if ($core == 1) { $result = $sql["char"]->query("SELECT race FROM characters WHERE acct=" . $user_id . "\r\n AND SUBSTRING_INDEX(SUBSTRING_INDEX(playedtime, ' ', 2), ' ', -1)=(SELECT MAX(SUBSTRING_INDEX(SUBSTRING_INDEX(playedtime, ' ', 2), ' ', -1)) FROM characters WHERE acct=" . $user_id . ") LIMIT 1"); } else { $result = $sql["char"]->query("SELECT race FROM characters WHERE account=" . $user_id . "\r\n AND totaltime=(SELECT MAX(totaltime) FROM characters WHERE account=" . $user_id . ") LIMIT 1"); } if ($sql["char"]->num_rows($result)) { $order_side = in_array($sql["char"]->result($result, 0), array(2, 5, 6, 8, 10)) ? " AND race IN (2, 5, 6, 8, 10) " : " AND race IN (1, 3, 4, 7, 11) "; } } if ($core == 1) { $result = $sql["char"]->query("SELECT guid, name, race, class, zoneid, mapid, level, characters.acct, gender,\r\n CAST( SUBSTRING_INDEX( SUBSTRING_INDEX( data, ';', " . (PLAYER_FIELD_HONOR_CURRENCY + 1) . " ), ';', -1 ) AS UNSIGNED ) AS highest_rank, lastip\r\n FROM characters\r\n LEFT JOIN `" . $logon_db["name"] . "`.accounts ON characters.acct=`" . $logon_db["name"] . "`.accounts.acct\r\n WHERE characters.online=1 " . $order_side . " ORDER BY " . $order_by . " " . $order_dir . " LIMIT " . $start . ", " . $itemperpage); } elseif ($core == 2) { $result = $sql["char"]->query("SELECT guid, name, race, class, zone AS zoneid, map AS mapid, level, account AS acct, gender,\r\n totalHonorPoints AS highest_rank, last_ip AS lastip\r\n FROM characters\r\n LEFT JOIN `" . $logon_db["name"] . "`.account ON characters.account=`" . $logon_db["name"] . "`.account.id\r\n WHERE characters.online=1 " . $order_side . " ORDER BY " . $order_by . " " . $order_dir . " LIMIT " . $start . ", " . $itemperpage); } else { $result = $sql["char"]->query("SELECT characters.guid, characters.name, race, class, zone AS zoneid, map AS mapid, level, account AS acct, gender,\r\n totalHonorPoints AS highest_rank, latency, last_ip AS lastip, guild.name AS gname\r\n FROM characters\r\n LEFT JOIN `" . $logon_db["name"] . "`.account ON characters.account=`" . $logon_db["name"] . "`.account.id\r\n LEFT JOIN guild_member ON characters.guid=guild_member.guid\r\n LEFT JOIN guild ON guild_member.guildid=guild.guildid\r\n WHERE characters.online=1 " . $order_side . " ORDER BY " . $order_by . " " . $order_dir . " LIMIT " . $start . ", " . $itemperpage); } $total_online = $sql["char"]->result($sql["char"]->query("SELECT count(*) FROM characters WHERE online= 1"), 0); $output .= ' <div class="div_lined center_text"> <span class="bold">' . lang("index", "tot_users_online") . ': ' . $total_online . '</span> </div>'; if ($total_online) { $output .= ' <table class="lined"> <tr> <td colspan="' . (9 - $showcountryflag) . '" align="right" class="hidden" style="width: 25%;">'; $output .= generate_pagination("index.php?start_m=" . $start_m . "&order_by=" . $order_hold . "&dir=" . ($dir ? 0 : 1), $total_online, $itemperpage, $start); $output .= ' </td> </tr> <tr> <th style="width: 15%;"> <a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=name&dir=' . $dir . '"' . ($order_by === "name" ? ' class="' . $order_dir . '"' : '') . '>' . lang("index", "name") . '</a> </th> <th style="width: 1%;"> <a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=race&dir=' . $dir . '"' . ($order_by === "race" ? ' class="' . $order_dir . '"' : '') . '>' . lang("index", "race") . '</a> </th> <th style="width: 1%;"> <a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=class&dir=' . $dir . '"' . ($order_by === "class" ? ' class="' . $order_dir . '"' : '') . '>' . lang("index", "class") . '</a> </th> <th style="width: 5%;"> <a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=level&dir=' . $dir . '"' . ($order_by === "level" ? ' class="' . $order_dir . '"' : '') . '>' . lang("index", "level") . '</a> </th> <th style="width: 1%;"> <a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=highest_rank&dir=' . $dir . '"' . ($order_by === "highest_rank" ? ' class="' . $order_dir . '"' : '') . '>' . lang("index", "rank") . '</a> </th> <th style="width: 15%;"> <a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=gname&dir=' . $dir . '"' . ($order_by === "gname" ? ' class="' . $order_dir . '"' : '') . '>' . lang("index", "guild") . '</a> </th> <th style="width: 20%;"> <a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=mapid&dir=' . $dir . '"' . ($order_by === "mapid, zoneid " ? ' class="' . $order_dir . '"' : '') . '>' . lang("index", "map") . '</a> </th> <th style="width: 25%;"> <a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=zoneid&dir=' . $dir . '"' . ($order_by === "zoneid, mapid " ? ' class="' . $order_dir . '"' : '') . '>' . lang("index", "zone") . '</a> </th>'; if ($core == 1) { $output .= ' <th style="width: 25%;"> <span>' . lang("index", "area") . '</span> </th>'; } // this_is_junk: MaNGOS doesn't store player latency if ($core != 2) { if (!$hide_plr_latency) { // this_is_junk: Trinity is the only core which can sort by Player Latency if ($core == 3) { $output .= ' <th style="width: 1%;"> <a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=latency&dir=' . $dir . '"' . ($order_by === "latency" ? ' class="' . $order_dir . '"' : '') . '> <img src="img/time.png" onmousemove="oldtoolTip(\'' . lang("index", "latency") . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt=""' . ($order_by === "latency" ? '' : ' style="position: relative; top: 7px;"') . ' /> </a> </th>'; } else { $output .= ' <th style="width: 1%;"> <img src="img/time.png" onmousemove="oldtoolTip(\'' . lang("index", "latency") . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" style="position: relative; top: 7px;" /> </th>'; } } } if ($showcountryflag) { require_once "libs/misc_lib.php"; $output .= ' <th style="width: 1%;"> <a href="index.php?start=' . $start . '&start_m=' . $start_m . '&order_by=lastip&dir=' . $dir . '"' . ($order_by === "lastip" ? ' class="' . $order_dir . '"' : '') . '> <img src="img/world.png" onmousemove="oldtoolTip(\'' . lang("global", "country") . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt=""' . ($order_by === "lastip" ? '' : ' style="position: relative; top: 7px;"') . ' /> </a> </th>'; } $output .= ' </tr>'; } while ($char = $sql["char"]->fetch_assoc($result)) { if ($core == 1) { $ca_query = "SELECT accounts.login AS name FROM `" . $logon_db["name"] . "`.accounts LEFT JOIN `" . $corem_db["name"] . "`.config_accounts ON accounts.login=`" . $corem_db["name"] . "`.config_accounts.Login COLLATE utf8_unicode_ci WHERE acct='" . $char["acct"] . "'"; } else { $ca_query = "SELECT *, username AS name FROM `" . $logon_db["name"] . "`.account LEFT JOIN `" . $corem_db["name"] . "`.config_accounts ON account.username=`" . $corem_db["name"] . "`.config_accounts.Login WHERE id='" . $char["acct"] . "'"; } $ca_result = $sql["mgr"]->query($ca_query); $char_acct = $sql["mgr"]->fetch_assoc($ca_result); $gm = $char_acct["SecurityLevel"]; if (!isset($gm)) { $gm = 0; } if ($core == 1) { $guild_id = $sql["char"]->result($sql["char"]->query("SELECT guildid FROM guild_data WHERE playerid='" . $char["guid"] . "'"), 0); } else { $guild_id = $sql["char"]->result($sql["char"]->query("SELECT guildid FROM guild_member WHERE guid='" . $char["guid"] . "'"), 0); } if ($core == 1) { $guild_name_query = "SELECT guildName FROM guilds WHERE guildid='" . $guild_id . "'"; } else { $guild_name_query = "SELECT name AS guildName FROM guild WHERE guildid='" . $guild_id . "'"; } $guild_name_result = $sql["char"]->query($guild_name_query); $guild_name = $sql["char"]->fetch_assoc($guild_name_result); $guild_name = $guild_name["guildName"]; $output .= ' <tr> <td>'; if ($user_lvl > 0 && ($user_lvl >= gmlevel($gm) || $user_lvl == $action_permission["delete"])) { $output .= ' <a href="char.php?id=' . $char["guid"] . '"> <span onmousemove="oldtoolTip(\'' . htmlspecialchars($char_acct["name"]) . ' (' . id_get_gm_level($gm) . ')' . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()">' . htmlentities($char["name"], ENT_COMPAT, $site_encoding) . '</span> </a>'; } else { $output .= ' <span>' . htmlentities($char["name"], ENT_COMPAT, $site_encoding) . '</span>'; } $output .= ' </td> <td> <img src="img/c_icons/' . $char["race"] . '-' . $char["gender"] . '.gif" onmousemove="oldtoolTip(\'' . char_get_race_name($char["race"]) . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> </td> <td> <img src="img/c_icons/' . $char["class"] . '.gif" onmousemove="oldtoolTip(\'' . char_get_class_name($char["class"]) . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> </td> <td>' . char_get_level_color($char["level"]) . '</td> <td> <span onmouseover="oldtoolTip(\'' . char_get_pvp_rank_name($char["highest_rank"], char_get_side_id($char["race"])) . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" id="index_delete_cursor"><img src="img/ranks/rank' . char_get_pvp_rank_id($char["highest_rank"], char_get_side_id($char["race"])) . '.gif" alt="" /></span> </td> <td> <a href="guild.php?action=view_guild&error=3&id=' . $guild_id . '">' . htmlentities($guild_name, ENT_COMPAT, $site_encoding) . '</a> </td> <td> <span onmousemove="oldtoolTip(\'MapID:' . $char["mapid"] . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()">' . get_map_name($char["mapid"]) . '</span> </td> <td> <span onmousemove="oldtoolTip(\'ZoneID:' . $char["zoneid"] . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()">' . get_zone_name($char["zoneid"]) . '</span> </td>'; // display player area, if available if ($core == 1) { for ($i = 0; $i < count($stats["plrs_area"]); $i++) { if ($stats["plrs_area"][$i][0] == $char["name"]) { $output .= ' <td> <span onmousemove="toolTip(\'AreaID:' . $stats["plrs_area"][$i][1] . '\', \'item_tooltip\')" onmouseout="toolTip()">' . get_zone_name($stats["plrs_area"][$i][1]) . '</span> </td>'; } if (!isset($stats["plrs_lat"][$i][1])) { $output .= ' <td>-</td>'; } } } // display player latency, if enabled, and if available if (!$hide_plr_latency) { if ($core == 1) { for ($i = 0; $i < count($stats["plrs_lat"]); $i++) { if ($stats["plrs_lat"][$i][0] == $char["name"]) { $output .= ' <td>' . $stats["plrs_lat"][$i][1] . '</td>'; } if (!isset($stats["plrs_lat"][$i][1])) { $output .= ' <td>-</td>'; } } } else { // this_is_junk: MaNGOS doesn't store player latency if ($core == 3) { $output .= ' <td>' . $char["latency"] . '</td>'; } } } if ($showcountryflag) { $country = misc_get_country_by_ip($char["lastip"]); $output .= ' <td>' . ($country["code"] ? '<img src="img/flags/' . $country["code"] . '.png" onmousemove="oldtoolTip(\'' . $country["country"] . ($user_lvl >= $action_permission["update"] ? '<br />' . $country["actualip"] : '') . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" />' : '-') . '</td>'; } $output .= ' </tr>'; } if ($total_online) { $output .= ' <tr>'; $output .= ' <td colspan="' . (9 - $showcountryflag) . '" align="right" class="hidden" style="width: 25%;">'; $output .= generate_pagination("index.php?start_m=" . $start_m . "&order_by=" . $order_by . "&dir=" . ($dir ? 0 : 1), $total_online, $itemperpage, $start); $output .= ' </td> </tr> </table>'; } $output .= ' <br />'; unset($total_online); } }
function do_cookie_login() { global $corem_db, $sql, $core; if (empty($_COOKIE["corem_login"]) || empty($_COOKIE["corem_password"]) || empty($_COOKIE["corem_realm_id"])) { redirect("login.php?error=2"); } $user_name = $sql["logon"]->quote_smart($_COOKIE["corem_login"]); $user_pass = $sql["logon"]->quote_smart($_COOKIE["corem_password"]); // see if our login & password cookies are old or new form... if (!preg_match("/^([A-Fa-f0-9]{2})*\$/", $user_name)) { // we have old form cookies, we'll rebuild them to new form and go from there setcookie("corem_login", bin2hex(gzcompress($user_name)), time() + 60 * 60 * 24 * 30); setcookie("corem_password", bin2hex(gzcompress($user_pass)), time() + 60 * 60 * 24 * 30); redirect("login.php"); } else { // we have new form cookies $user_name = isset($_COOKIE["corem_login"]) ? gzuncompress(pack("H*", $_COOKIE["corem_login"])) : NULL; $user_pass = isset($_COOKIE["corem_password"]) ? gzuncompress(pack("H*", $_COOKIE["corem_password"])) : NULL; } // Users may log in using either their username or screen name // check for matching login if ($core == 1) { $query = "SELECT * FROM accounts WHERE login='******'"; } else { $query = "SELECT * FROM account WHERE username='******'"; } $name_result = $sql["logon"]->query($query); if (!$sql["logon"]->num_rows($name_result)) { // if we didn't find one, check for matching screen name $query = "SELECT * FROM config_accounts WHERE ScreenName='" . $user_name . "'"; $name_result = $sql["mgr"]->query($query); if ($sql["mgr"]->num_rows($name_result)) { $name = $sql["mgr"]->fetch_assoc($name_result); $user_name = $name["Login"]; } } else { // we'll still need the screen name if we have one $query = "SELECT * FROM config_accounts WHERE Login='******'"; $name_result = $sql["mgr"]->query($query); $name = $sql["mgr"]->fetch_assoc($name_result); } // if we didn't find the name given for either entries, then the name will come up bad below // ArcEmu: Detect whether account uses clear or encrypted password 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 ($core == 1) { if ($arc_encrypted) { $query = "SELECT * FROM accounts WHERE login='******' AND encrypted_password='******'"; } else { $query = "SELECT * FROM accounts WHERE login='******' AND SHA(CONCAT(UPPER(login), ':', UPPER(password)))='" . $user_pass . "'"; } } else { $query = "SELECT *, username AS login FROM account WHERE username='******' AND sha_pass_hash='" . $user_pass . "'"; } $result = $sql["logon"]->query($query); $s_result = $sql["mgr"]->query("SELECT SecurityLevel AS gm FROM config_accounts WHERE Login='******'"); $temp = $sql["mgr"]->fetch_assoc($s_result); if ($temp["gm"] == NULL) { $temp["gm"] = 0; } if ($temp["gm"] >= 1073741824) { $temp["gm"] -= 1073741824; } $_SESSION["gm_lvl"] = $temp["gm"]; if ($sql["logon"]->num_rows($result)) { if ($core == 1) { $acct = $sql["logon"]->result($result, 0, "acct"); } else { $acct = $sql["logon"]->result($result, 0, "id"); } if ($core == 1) { $ban_query = "SELECT COUNT(*) FROM accounts WHERE acct='" . $acct . "' AND banned='1'"; } else { $ban_query = "SELECT COUNT(*) FROM account_banned WHERE id='" . $acct . "' AND active='1'"; } if ($sql["logon"]->result($sql["logon"]->query($ban_query), 0)) { redirect("login.php?error=3"); } else { $_SESSION["user_id"] = $acct; $_SESSION["login"] = $sql["logon"]->result($result, 0, 'login'); // if we got a screen name, we'll want it later. $_SESSION["screenname"] = $name["ScreenName"]; //gets our numerical level based on ArcEmu level. $_SESSION["user_lvl"] = gmlevel($temp["gm"]); $_SESSION["realm_id"] = $sql["logon"]->quote_smart($_COOKIE["corem_realm_id"]); $_SESSION["client_ip"] = isset($_SERVER["REMOTE_ADDR"]) ? $_SERVER["REMOTE_ADDR"] : getenv("REMOTE_ADDR"); $_SESSION["logged_in"] = true; redirect("index.php"); } } else { setcookie("corem_login", "", time() - 3600); setcookie("corem_realm_id", "", time() - 3600); setcookie("corem_password", "", time() - 3600); redirect("login.php?error=1"); } }
function edit_user() { global $output, $logon_db, $characters_db, $realm_id, $corem_db, $corem_db, $realm_id, $user_lvl, $user_name, $gm_level_arr, $action_permission, $expansion_select, $developer_test_mode, $multi_realm_mode, $server, $timezone_offset, $recruit_reward_auto, $sql, $core; if (empty($_GET["acct"])) { redirect("user.php?error=10"); } $acct = $sql["logon"]->quote_smart($_GET["acct"]); if ($core == 1) { $a_query = "SELECT acct, login, gm, email, lastip, muted, UNIX_TIMESTAMP(lastlogin) AS lastlogin, flags\r\n FROM accounts\r\n WHERE acct='" . $acct . "'"; } elseif ($core == 2) { $a_query = "SELECT account.id AS acct, username AS login, gmlevel AS gm, email, last_ip AS lastip, locked AS muted, UNIX_TIMESTAMP(last_login) AS lastlogin, expansion AS flags\r\n FROM account\r\n WHERE account.id='" . $acct . "'"; } else { $a_query = "SELECT account.id AS acct, username AS login, IFNULL(account_access.gmlevel, 0) AS gm, email, last_ip AS lastip, locked AS muted, UNIX_TIMESTAMP(last_login) AS lastlogin, expansion AS flags\r\n FROM account\r\n LEFT JOIN account_access ON account.id=account_access.id\r\n WHERE account.id='" . $acct . "'"; } $result = $sql["logon"]->query($a_query); $data = $sql["logon"]->fetch_assoc($result); $o_temp = 0; foreach ($characters_db as $db) { $sqlt = new SQL(); $sqlt->connect($db["addr"], $db["user"], $db["pass"], $db["name"], $db["encoding"]); if ($core == 1) { $online_res = $sqlt->query("SELECT SUM(online) FROM characters WHERE acct='" . $data["acct"] . "'"); } else { $online_res = $sqlt->query("SELECT SUM(online) FROM characters WHERE account='" . $data["acct"] . "'"); } $online_fields = $sqlt->fetch_assoc($online_res); $o_temp += $online_fields["SUM(online)"]; } if ($o_temp != 0) { $acct_online = 1; } else { $acct_online = 0; } $query = "SELECT *,\r\n SUBSTRING_INDEX(SUBSTRING_INDEX(Avatar, ' ', 1), ' ', -1) AS avatarsex,\r\n SUBSTRING_INDEX(SUBSTRING_INDEX(Avatar, ' ', 2), ' ', -1) AS avatarrace,\r\n SUBSTRING_INDEX(SUBSTRING_INDEX(Avatar, ' ', 3), ' ', -1) AS avatarclass,\r\n SUBSTRING_INDEX(SUBSTRING_INDEX(Avatar, ' ', 4), ' ', -1) AS avatarlevel\r\n FROM config_accounts WHERE Login='******'"; $sn_result = $sql["mgr"]->query($query); $screenname = $sql["mgr"]->fetch_assoc($sn_result); if ($screenname["SecurityLevel"] == NULL) { $screenname["SecurityLevel"] = 0; } $refguid = $sql["mgr"]->fetch_assoc($sql["mgr"]->query("SELECT InvitedBy FROM point_system_invites WHERE PlayersAccount='" . $data["acct"] . "'")); $refguid = $refguid["InvitedBy"]; $referred_by = $sql["char"]->fetch_assoc($sql["char"]->query("SELECT name FROM characters WHERE guid='" . $refguid . "'")); unset($refguid); $referred_by = $referred_by["name"]; $time_offset = $timezone_offset * 3600; if ($data["lastlogin"] != 0) { $lastlog = date("F j, Y @ Hi", $data["lastlogin"] + $time_offset); } else { $lastlog = '-'; } // only display an Avatar if the player has specified one or if they're a GM. if ($screenname["Avatar"] != '' || $screenname["SecurityLevel"]) { $avatar = gen_avatar_panel($screenname["avatarlevel"], $screenname["avatarsex"], $screenname["avatarrace"], $screenname["avatarclass"], 0, $screenname["SecurityLevel"], 1); } else { $avatar = ''; } $info = $screenname["Info"]; if ($info == '' || $info == NULL) { $info = '...'; } // ArcEmu: find out if we're using an encrypted password for this account if ($core == 1) { $pass_query = "SELECT * FROM accounts WHERE login='******' AND encrypted_password<>''"; $pass_result = $sql["logon"]->query($pass_query); $arc_encrypted = $sql["logon"]->num_rows($pass_result); } if ($sql["logon"]->num_rows($result)) { $output .= ' <center> <script type="text/javascript" src="libs/js/sha1.js"></script> <script type="text/javascript"> // <![CDATA[ function do_submit_data () { var myForm = document.getElementById("form");'; if ($core == 1) { if ($arc_encrypted) { $output .= ' if ( myForm.new_pass.value != "******" ) myForm.pass.value = hex_sha1(myForm.login.value.toUpperCase() + ":" + myFormnew_pass.value.toUpperCase()); else myForm.pass.value = "******";'; } else { $output .= ' myForm.pass.value = myForm.new_pass.value;'; } } else { $output .= ' if ( myForm.new_pass.value != "******" ) myForm.pass.value = hex_sha1(myForm.login.value.toUpperCase() + ":" + myForm.new_pass.value.toUpperCase()); else myForm.pass.value = "******";'; } $output .= ' myForm.new_pass.value = "******"; do_submit(); } // ]]> </script> <div class="user_edit_account fieldset_border"> <span class="legend">' . lang("edit", "profile_info") . '</span> <table class="flat user_edit_account">'; if ($avatar != '') { $output .= ' <tr> <td id="forum_topic_header_info"> <center>' . $avatar . '</center> </td> <td> </td> </tr> <tr> <td colspan="2"> <hr /> </td> </tr>'; } $output .= ' <tr> <td colspan="2">' . $info . '</td> </tr> </table> </div> <br /> <div class="user_edit_account fieldset_border"> <span class="legend">' . lang("user", "edit_acc") . '</span> <form method="post" action="user.php?action=doedit_user" id="form"> <input type="hidden" name="pass" value="" maxlength="256" /> <input type="hidden" name="acct" value="' . $acct . '" /> <input type="hidden" name="oldscreenname" value="' . $screenname["ScreenName"] . '" /> <input type="hidden" name="oldlogin" value="' . $data["login"] . '" /> <input type="hidden" name="webadmin" value="' . ($screenname["SecurityLevel"] & 1073741824) . '" /> <table class="flat"> <tr> <td>' . lang("user", "acct") . ':</td> <td colspan="2">' . $data["acct"] . '</td> </tr> <tr> <td>' . lang("user", "login") . ':</td>'; if ($user_lvl >= $action_permission["update"]) { $output .= ' <td colspan="2"><input type="text" name="login" size="42" maxlength="15" value="' . $data["login"] . '" /></td>'; } else { if ($screenname["ScreenName"]) { $output .= ' <td colspan="2">********</td>'; } else { $output .= ' <td colspan="2">' . $data["login"] . '</td>'; } } $output .= ' </tr> <tr> <td>' . lang("user", "screenname") . ':</td>'; if ($user_lvl >= $action_permission["update"]) { $output .= ' <td colspan="2"><input type="text" name="screenname" size="42" maxlength="15" value="' . $screenname["ScreenName"] . '" /></td>'; } else { $output .= ' <td colspan="2">' . $screenname["ScreenName"] . '</td>'; } $output .= ' </tr> <tr> <td>' . lang("user", "password") . ':</td>'; if ($user_lvl >= $action_permission["update"]) { $output .= ' <td colspan="2"><input type="text" name="new_pass" size="42" maxlength="40" value="******" /></td>'; } else { $output .= ' <td colspan="2">********</td>'; } $output .= ' </tr> <tr> <td>' . lang("user", "email") . ':</td>'; if ($user_lvl >= $action_permission["update"]) { if ($screenname["TempEmail"]) { $output .= ' <td colspan="2"> <a href="user.php?action=cancel_email_change&username='******'&acct=' . $data["acct"] . '" > <img src="img/aff_warn.gif" onmousemove="oldtoolTip(\'' . lang("edit", "email_changed") . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" /> </a> <input type="text" name="mail" size="39" maxlength="225" value="' . $data["email"] . '" /> </td>'; } else { $output .= ' <td colspan="2"><input type="text" name="mail" size="42" maxlength="225" value="' . $data["email"] . '" /></td>'; } } else { $output .= ' <td colspan="2">***@***.***</td>'; } $output .= ' </tr> <tr> <td>' . lang("user", "invited_by") . ':</td> <td colspan="2">'; if ($user_lvl >= $action_permission["update"] && !$referred_by != NULL) { $output .= ' <input type="text" name="referredby" size="20" maxlength="12" value="' . $referred_by . '" /> (' . lang("user", "charname") . ')'; } else { $output .= $referred_by; } $output .= ' </td> </tr> <tr> <td>' . lang("user", "gm_level_long") . ':</td>'; if ($user_lvl >= $action_permission["update"]) { $output .= ' <td colspan="2"> <input type="text" name="gm" value="' . $data["gm"] . '" /> </td>'; } else { $output .= ' <td colspan="2">' . $data["gm"] . '</td>'; } $output .= ' </tr> <tr> <td>' . lang("user", "sec_level_long") . ':</td>'; $sec_lvl_only = $screenname["SecurityLevel"]; if ($sec_lvl_only >= 1073741824) { $sec_lvl_only -= 1073741824; } if ($user_lvl >= $action_permission["update"]) { $output .= ' <td colspan="2"> <!-- input type="text" name="seclvl" value="' . $screenname["SecurityLevel"] . '" --> <select name="seclvl">'; $s_query = "SELECT * FROM config_gm_level_names"; $s_result = $sql["mgr"]->query($s_query); while ($level = $sql["mgr"]->fetch_assoc($s_result)) { if ($level["Security_Level"] > -1 && $level["Security_Level"] <= $user_lvl) { $output .= ' <option value="' . $level["Security_Level"] . '"'; if (gmlevel($sec_lvl_only) == $level["Security_Level"]) { $output .= ' selected="selected"'; } $output .= '>' . $level["Full_Name"] . '</option>'; } } $output .= ' </select> </td>'; } else { $output .= ' <td colspan="2">' . id_get_gm_level($screenname["SecurityLevel"]) . '</td>'; } $output .= ' </tr> <tr> <td>' . lang("user", "last_ip") . ':</td>'; if ($user_lvl >= $action_permission["update"]) { $output .= ' <td colspan="2">' . $data["lastip"] . '<a href="banned.php?action=do_add_entry&entry=' . $data["lastip"] . '&bantime=3600&ban_type=ipbans"> <- ' . lang("user", "ban_this_ip") . '</a></td>'; } else { $output .= ' <td colspan="2">***.***.***.***</td>'; } $output .= ' </tr> <tr> <td>' . lang("user", "banned") . ':</td>'; if ($core == 1) { $que = $sql["logon"]->query("SELECT banned, banreason FROM accounts WHERE banned<>0 AND acct=" . $acct); } else { $que = $sql["logon"]->query("SELECT bandate, unbandate, bannedby, banreason FROM account_banned WHERE active=1 AND id=" . $acct); } if ($sql["logon"]->num_rows($que)) { $banned = $sql["logon"]->fetch_row($que); if ($core == 1) { $ban_info = ' ' . lang("user", "ban_until") . ': ' . date("d-m-Y G:i", $banned[0]); } else { $ban_info = ' ' . lang("user", "ban_from") . ': ' . date("d-m-Y G:i", $banned[0]) . ', ' . lang("user", "ban_until") . ': ' . date("d-m-Y G:i", $banned[1]) . ',<br />' . lang("user", "ban_by") . ': ' . $banned[2]; } $ban_checked = ' checked="checked"'; } else { $ban_checked = ""; $ban_info = ""; $banned[3] = ""; } if ($user_lvl >= $action_permission["update"]) { $output .= ' <td colspan="2"><input type="checkbox" name="banned" value="1" ' . $ban_checked . ' />' . $ban_info . '</td>'; } else { $output .= ' <td colspan="2">' . $ban_info . '</td>'; } $output .= ' </tr> <tr> <td>' . lang("user", "banned_reason") . ':</td>'; if ($user_lvl >= $action_permission["update"]) { $output .= ' <td colspan="2"><input type="text" name="banreason" size="42" maxlength="255" value="' . $banned[3] . '" /></td>'; } else { $output .= ' <td colspan="2">' . $banned[3] . '</td>'; } if ($expansion_select) { $output .= ' </tr> <tr>'; if ($user_lvl >= $action_permission["update"]) { $output .= ' <td>' . lang("user", "client_type") . ':</td>'; $output .= ' <td colspan="2"> <select name="expansion">'; if ($core == 1) { $output .= ' <option value="0" ' . ($data["flags"] == 0 ? 'selected="selected" ' : '') . '>' . lang("user", "classic") . '</option> <option value="8" ' . ($data["flags"] == 8 ? 'selected="selected" ' : '') . '>' . lang("user", "tbc") . '</option> <option value="16" ' . ($data["flags"] == 16 ? 'selected="selected" ' : '') . '>' . lang("user", "wotlk") . '</option> <option value="24" ' . ($data["flags"] == 24 ? 'selected="selected" ' : '') . '>' . lang("user", "wotlktbc") . '</option>'; } else { $output .= ' <option value="0" ' . ($data["flags"] == 0 ? 'selected="selected" ' : '') . '>' . lang("user", "classic") . '</option> <option value="1" ' . ($data["flags"] == 1 ? 'selected="selected" ' : '') . '>' . lang("user", "tbc") . '</option> <option value="2" ' . ($data["flags"] == 2 ? 'selected="selected" ' : '') . '>' . lang("user", "wotlktbc") . '</option>'; } $output .= ' </select> </td>'; } else { $output .= ' <td>' . lang("user", "client_type") . ':</td>'; if ($core == 1) { switch ($data["flags"]) { case 0: $output .= ' <td colspan="2">' . lang("user", "classic") . '</td>'; break; case 8: $output .= ' <td colspan="2">' . lang("user", "tbc") . '</td>'; break; case 16: $output .= ' <td colspan="2">' . lang("user", "wotlk") . '</td>'; break; case 24: $output .= ' <td colspan="2">' . lang("user", "wotlktbc") . '</td>'; break; } } else { switch ($data["flags"]) { case 0: $output .= ' <td colspan="2">' . lang("user", "classic") . '</td>'; break; case 1: $output .= ' <td colspan="2">' . lang("user", "tbc") . '</td>'; break; case 2: $output .= ' <td colspan="2">' . lang("user", "wotlktbc") . '</td>'; break; } } } } $output .= ' </tr> <tr> <td>' . lang("user", "locked") . ':</td>'; if ($user_lvl >= $action_permission["update"]) { $output .= ' <td colspan="2"> <input type="checkbox" name="locked" value="1" ' . ($data["muted"] ? ' checked="checked"' : '') . ' /> </td>'; } else { $output .= ' <td colspan="2"></td>'; } $output .= ' </tr> <tr> <td>' . lang("user", "last_login") . ':</td> <td colspan="2">' . $lastlog . '</td> </tr> <tr> <td>' . lang("user", "online") . ':</td> <td colspan="2"><img src="img/' . ($acct_online ? 'up' : 'down') . '.gif" alt="" /></td> </tr>'; if ($user_lvl >= $action_permission["update"]) { $output .= ' <tr> <td>' . lang("user", "credits") . ':</td> <td colspan="2"> <input type="text" name="credits" value="' . (double) $screenname["Credits"] . '" /> <img src="img/information.png" onmousemove="oldtoolTip(\'' . lang("user", "credits_info") . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> </td> </tr>'; } //$realms = $sql["mgr"]->query('SELECT id, name FROM realmlist'); //while ( $realm = $sql["mgr"]->fetch_assoc($realms) ) foreach ($characters_db as $db) { $sqlt = new SQL(); $sqlt->connect($db["addr"], $db["user"], $db["pass"], $db["name"], $db["encoding"]); if ($core == 1) { $query = "SELECT COUNT(*) FROM characters WHERE acct='" . $acct . "'"; } else { $query = "SELECT COUNT(*) FROM characters WHERE account='" . $acct . "'"; } $result = $sqlt->query($query); $fields = $sqlt->fetch_assoc($result); $tot_chars += $fields["COUNT(*)"]; } if ($core == 1) { $query = $sql["char"]->query("SELECT COUNT(*) FROM `characters` WHERE acct=" . $acct); } else { $query = $sql["char"]->query("SELECT COUNT(*) FROM `characters` WHERE account=" . $acct); } $chars_on_realm = $sql["char"]->result($query, 0); $output .= ' <tr> <td>' . lang("user", "tot_chars") . ':</td> <td colspan="2">' . $tot_chars . '</td> </tr>'; $realms = $sql["mgr"]->query("SELECT `Index` AS id, Name AS name FROM config_servers"); if ($sql["mgr"]->num_rows($realms) > 1 && count($server) > 1 && count($characters_db) > 1) { require_once "libs/get_lib.php"; while ($realm = $sql["mgr"]->fetch_array($realms)) { $sql["char"]->connect($characters_db[$realm[0]]['addr'], $characters_db[$realm[0]]['user'], $characters_db[$realm[0]]['pass'], $characters_db[$realm[0]]['name'], $characters_db[$realm[0]]['encoding']); if ($core == 1) { $query = $sql["char"]->query("SELECT COUNT(*) FROM `characters` WHERE acct=" . $acct); } else { $query = $sql["char"]->query("SELECT COUNT(*) FROM `characters` WHERE account=" . $acct); } $chars_on_realm = $sql["char"]->result($query, 0); $output .= ' <tr> <td colspan="3"> </td> </tr> <tr> <td colspan="3">' . lang("index", "realm") . ': ' . get_realm_name($realm[0]) . '</td> </tr> <tr> <td>' . lang("user", "chars_on_realm") . ':</td> <td colspan="2">' . $chars_on_realm . '</td> </tr>'; if ($chars_on_realm) { if ($core == 1) { $char_array = $sql["char"]->query("SELECT guid, name, race, class, level, gender, timestamp\r\n FROM `characters` WHERE acct=" . $acct); } else { $char_array = $sql["char"]->query("SELECT guid, name, race, class, level, gender, logout_time AS timestamp\r\n FROM `characters` WHERE account=" . $acct); } // calculate timezone offset $time_offset = $timezone_offset * 3600; while ($char = $sql["char"]->fetch_array($char_array)) { if ($char["timestamp"] != 0) { $lastseen = date("F j, Y @ Hi", $char["timestamp"] + $time_offset); } else { $lastseen = '-'; } $output .= ' <tr> <td> \'---></td> <td> <a href="char.php?id=' . $char[0] . '&realm=' . $realm[0] . '">' . $char[1] . '</a> - <img src="img/c_icons/' . $char[2] . '-' . $char[5] . '.gif" onmousemove="oldtoolTip(\'' . char_get_race_name($char[2]) . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> <img src="img/c_icons/' . $char[3] . '.gif" onmousemove="oldtoolTip(\'' . char_get_class_name($char[3]) . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt=""/> - ' . lang("char", "level_short") . char_get_level_color($char[4]) . ' </td> <td>' . $lastseen . '</td> </tr>'; } } } } else { if ($core == 1) { $query = $sql["char"]->query("SELECT COUNT(*) FROM `characters` WHERE acct=" . $acct); } else { $query = $sql["char"]->query("SELECT COUNT(*) FROM `characters` WHERE account=" . $acct); } $chars_on_realm = $sql["char"]->result($query, 0); $output .= ' <!-- tr> <td>' . lang("user", "chars_on_realm") . ':</td> <td colspan="2">' . $chars_on_realm . '</td> </tr -->'; if ($chars_on_realm) { if ($core == 1) { $char_array = $sql["char"]->query("SELECT guid, name, race, class, level, gender, timestamp\r\n FROM `characters` WHERE acct=" . $acct); } else { $char_array = $sql["char"]->query("SELECT guid, name, race, class, level, gender, logout_time AS timestamp\r\n FROM `characters` WHERE account=" . $acct); } // calculate timezone offset $time_offset = $timezone_offset * 3600; while ($char = $sql["char"]->fetch_array($char_array)) { if ($char["timestamp"] != 0) { $lastseen = date("F j, Y @ Hi", $char["timestamp"] + $time_offset); } else { $lastseen = '-'; } $output .= ' <tr> <td> \'---></td> <td> <a href="char.php?id=' . $char[0] . '">' . $char[1] . '</a> - <img src="img/c_icons/' . $char[2] . '-' . $char[5] . '.gif" onmousemove="oldtoolTip(\'' . char_get_race_name($char[2]) . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> <img src="img/c_icons/' . $char[3] . '.gif" onmousemove="oldtoolTip(\'' . char_get_class_name($char[3]) . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt=""/> - ' . lang("char", "level_short") . char_get_level_color($char[4]) . ' </td> <td>' . $lastseen . '</td> </tr>'; } } } $output .= ' <tr> <td>'; if ($user_lvl >= $action_permission["delete"]) { makebutton(lang("user", "del_acc"), "user.php?action=del_user&check%5B%5D=" . $acct . "\" type=\"wrn", 130); } $output .= ' </td> <td>'; if ($user_lvl >= $action_permission["update"]) { makebutton(lang("user", "update_data"), "javascript:do_submit_data()", 130); } $output .= ' </td> <td>'; makebutton(lang("global", "back"), "javascript:window.history.back()\" type=\"def", 130); $output .= ' </td> </tr> </table> </form> </div> <br />'; $query = "SELECT * FROM point_system_invites WHERE InviterAccount='" . $acct . "'"; $result = $sql["mgr"]->query($query); if ($sql["mgr"]->num_rows($result) > 0) { $output .= ' <div id="user_recruits" class="fieldset_border"> <span class="legend">' . lang("user", "recruits") . '</span> <table class="lined" style="width: 95%"> <tr> <th>' . lang("user", "login") . '</th> <th>' . lang("user", "last_ip") . '</th> <th>' . lang("user", "reward") . '</th> </tr>'; while ($row = $sql["mgr"]->fetch_assoc($result)) { if ($core == 1) { $recruit_query = "SELECT *, acct AS id, login AS username, lastip AS last_ip FROM accounts WHERE acct='" . $row["PlayersAccount"] . "'"; } else { $recruit_query = "SELECT * FROM account WHERE id='" . $row["PlayersAccount"] . "'"; } $recruit_result = $sql["logon"]->query($recruit_query); $recruit = $sql["logon"]->fetch_assoc($recruit_result); if ($recruit != NULL) { $output .= ' <tr> <td><a href="user.php?action=edit_user&acct=' . $recruit["id"] . '">' . $recruit["username"] . '</a></td> <td>' . $recruit["last_ip"] . '</td> <td>'; if ($row["Rewarded"] == 0) { // if the recruitment hasn't been rewarded if ($user_lvl >= $action_permission["update"]) { if ($screenname["Credits"] >= 0) { // if the recruiter can gain Credits $output .= ' <a href="user.php?action=reward&acct=' . $recruit["id"] . '&recruiter=' . $acct . '"> <img src="img/aff_tick.png" alt="" /> </a>'; } else { // if the recruiter cannot gain Credits (Unlimited) $output .= ' <a href="" onmouseover="oldtoolTip(\'' . lang("user", "no_reward") . '\', \'info_tooltip\')" onmouseout="oldtoolTip()"> <img src="img/lock.png" alt="" /> </a>'; } } else { // if the user viewing the recruiter does not have permissions $output .= ' <a href="" onmouseover="oldtoolTip(\'' . lang("user", "you_have_no_permission") . '\', \'info_tooltip\')" onmouseout="oldtoolTip()"> <img src="img/lock.png" alt="" /> </a>'; } } else { $output .= ' <span>' . lang("user", "rewarded") . '</span>'; } $output .= ' </td> </tr>'; } } $output .= ' </table> </div>'; } $output .= ' <br /> </center>'; } else { error(lang("global", "err_no_user")); } }