function edit_user() { global $output, $dbc_db, $corem_db, $logon_db, $characters_db, $corem_db, $realm_id, $invite_only, $timezone_offset, $user_name, $user_id, $expansion_select, $server, $developer_test_mode, $multi_realm_mode, $remember_me_checked, $achievement_point_points, $achievement_point_credits, $credits_fractional, $sql, $core; $refguid = $sql["mgr"]->result($sql["mgr"]->query("SELECT InvitedBy FROM point_system_invites WHERE PlayersAccount='" . $user_id . "'"), 0, 'InvitedBy'); $referred_by = $sql["char"]->result($sql["char"]->query("SELECT name FROM characters WHERE guid='" . $refguid . "'"), 0, 'name'); unset($refguid); if ($core == 1) { $query = "SELECT email, flags, lastip FROM accounts WHERE login='******'"; } else { $query = "SELECT email, expansion AS flags, last_ip AS lastip FROM account WHERE username='******'"; } if ($acc = $sql["logon"]->fetch_assoc($sql["logon"]->query($query))) { // if we have a screen name, we need to use it $screen_name_query = "SELECT *,\n SUBSTRING_INDEX(SUBSTRING_INDEX(Avatar, ' ', 1), ' ', -1) AS avatarsex,\n SUBSTRING_INDEX(SUBSTRING_INDEX(Avatar, ' ', 2), ' ', -1) AS avatarrace,\n SUBSTRING_INDEX(SUBSTRING_INDEX(Avatar, ' ', 3), ' ', -1) AS avatarclass,\n SUBSTRING_INDEX(SUBSTRING_INDEX(Avatar, ' ', 4), ' ', -1) AS avatarlevel\n FROM config_accounts WHERE Login='******'"; $screen_name = $sql["mgr"]->query($screen_name_query); $screen_name = $sql["mgr"]->fetch_assoc($screen_name); if ($screen_name["SecurityLevel"] >= 1073741824) { $screen_name["SecurityLevel"] -= 1073741824; } // ArcEmu: find out if we're using an encrypted password for this account if ($core == 1) { $pass_query = "SELECT * FROM accounts WHERE login='******' AND encrypted_password<>''"; $pass_result = $sql["logon"]->query($pass_query); $arc_encrypted = $sql["logon"]->num_rows($pass_result); } $output .= ' <script type="text/javascript" src="libs/js/sha1.js"></script> <script type="text/javascript"> // <![CDATA[ function do_submit_data () { var myForm = document.getElementById("form")'; if ($core == 1) { if ($arc_encrypted) { $output .= ' myForm.pass.value = hex_sha1("' . strtoupper($user_name) . ':" + myForm.user_pass.value.toUpperCase());'; } else { $output .= ' myForm.pass.value = myForm.user_pass.value;'; } } else { $output .= ' myForm.pass.value = hex_sha1("' . strtoupper($user_name) . ':" + myForm.user_pass.value.toUpperCase());'; } $output .= ' myForm.pass.value = myForm.pass.value.toUpperCase(); do_submit(); } // ]]> </script> <div id="edit_fieldset" class="fieldset_border center"> <span class="legend">' . lang("edit", "edit_acc") . '</span> <form method="post" action="edit.php?action=doedit_user" id="form"> <div> <input type="hidden" name="pass" value="" maxlength="256" /> </div> <table class="flat" id="edit_fieldset_table"> <tr> <td>' . lang("edit", "id") . ':</td> <td colspan="2">' . htmlspecialchars($user_id) . '</td> </tr> <tr> <td>' . lang("edit", "username") . ':</td> <td colspan="2">' . htmlspecialchars($user_name) . '</td> </tr>'; if (!$screen_name["ScreenName"]) { $output .= ' <tr> <td>' . lang("edit", "screenname") . ':</td> <td colspan="2"><input type="text" name="screenname" size="42" maxlength="14" /></td> </tr>'; } else { $output .= ' <tr> <td>' . lang("edit", "screenname") . ':</td> <td colspan="2">' . htmlspecialchars($screen_name["ScreenName"]) . '</td> </tr>'; } $output .= ' <tr> <td>' . lang("edit", "password") . ':</td> <td colspan="2"> <input type="text" name="user_pass" size="39" maxlength="40" value="******" /> <img src="img/information.png" onmousemove="oldtoolTip(\'' . lang("edit", "pass_warning") . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> </td> </tr> <tr> <td>' . lang("edit", "mail") . ':</td>'; if ($screen_name["TempEmail"]) { $output .= ' <td colspan="2"> <a href="edit.php?action=cancel_email_change" > <img src="img/aff_warn.gif" onmousemove="oldtoolTip(\'' . lang("edit", "email_changed") . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> </a> <input type="text" name="mail" size="39" maxlength="225" value="' . $acc["email"] . '" /> </td>'; } else { $output .= ' <td colspan="2"><input type="text" name="mail" size="42" maxlength="225" value="' . $acc["email"] . '" /></td>'; } $output .= ' </tr> <tr> <td>' . lang("edit", "invited_by") . ':</td> <td colspan="2">'; if ($referred_by == NULL) { $output .= ' <input type="text" name="referredby" size="20" maxlength="12" value="' . $referred_by . '" /> (' . lang("user", "charname") . ')'; } else { $output .= ' ' . htmlspecialchars($referred_by) . ''; } $output .= ' </td> </tr> <tr> <td>' . lang("edit", "gm_level") . ':</td> <td colspan="2">' . id_get_gm_level($screen_name["SecurityLevel"]) . ' ( ' . $screen_name["SecurityLevel"] . ' )</td> </tr> <tr> <td>' . lang("edit", "last_ip") . ':</td> <td colspan="2">' . htmlspecialchars($acc["lastip"]) . '</td> </tr>'; if ($expansion_select) { if ($core == 1) { $output .= ' <tr> <td>' . lang("edit", "client_type") . ':</td> <td colspan="2"> <select name="expansion"> <option value="24" ' . ($acc["flags"] == 24 ? 'selected="selected"' : '') . '>' . lang("edit", "wotlktbc") . '</option> <option value="16" ' . ($acc["flags"] == 16 ? 'selected="selected"' : '') . '>' . lang("edit", "wotlk") . '</option> <option value="8" ' . ($acc["flags"] == 8 ? 'selected="selected"' : '') . '>' . lang("edit", "tbc") . '</option> <option value="0" ' . ($acc["flags"] == 0 ? 'selected="selected"' : '') . '>' . lang("edit", "classic") . '</option> </select> </td> </tr>'; } else { $output .= ' <tr> <td>' . lang("edit", "client_type") . ':</td> <td colspan="2"> <select name="expansion"> <option value="2" ' . ($acc["flags"] == 2 ? 'selected="selected"' : '') . '>' . lang("edit", "wotlktbc") . '</option> <option value="1" ' . ($acc["flags"] == 1 ? 'selected="selected"' : '') . '>' . lang("edit", "tbc") . '</option> <option value="0" ' . ($acc["flags"] == 0 ? 'selected="selected"' : '') . '>' . lang("edit", "classic") . '</option> </select> </td> </tr>'; } } $output .= ' <tr> <td>' . lang("edit", "credits") . ':</td> <td colspan="2">' . ($screen_name["Credits"] < 0 ? lang("edit", "unlimited") : (double) $screen_name["Credits"]) . '</td> </tr>'; foreach ($characters_db as $db) { $sqlt = new SQL(); $sqlt->connect($db["addr"], $db["user"], $db["pass"], $db["name"], $db["encoding"]); if ($core == 1) { $query = "SELECT COUNT(*) FROM characters WHERE acct='" . $user_id . "'"; } else { $query = "SELECT COUNT(*) FROM characters WHERE account='" . $user_id . "'"; } $result = $sqlt->query($query); $fields = $sqlt->fetch_assoc($result); $c_count += $fields["COUNT(*)"]; } $output .= ' <tr> <td>' . lang("edit", "tot_chars") . ':</td> <td colspan="2">' . $c_count . '</td> </tr>'; $total_achieve_points = 0; $realms = $sql["mgr"]->query("SELECT * FROM config_servers"); if (1 < $sql["mgr"]->num_rows($realms) && 1 < count($server) && 1 < count($characters_db)) { while ($realm = $sql["mgr"]->fetch_assoc($realms)) { $sql["char"]->connect($characters_db[$realm["Index"]]["addr"], $characters_db[$realm["Index"]]["user"], $characters_db[$realm["Index"]]["pass"], $characters_db[$realm["Index"]]["name"], $characters_db[$realm["Index"]]["encoding"]); if ($core == 1) { $result = $sql["char"]->query("SELECT guid, name, race, class, level, gender, timestamp,\n IFNULL((SELECT SUM(points) FROM character_achievement LEFT JOIN `" . $dbc_db["name"] . "`.achievement ON `" . $dbc_db["name"] . "`.achievement.id=character_achievement.achievement WHERE character_achievement.guid=characters.guid), 0) AS ach_points\n FROM characters WHERE acct='" . $user_id . "'"); } else { $result = $sql["char"]->query("SELECT guid, name, race, class, level, gender, logout_time AS timestamp,\n IFNULL((SELECT SUM(points) FROM character_achievement LEFT JOIN `" . $dbc_db["name"] . "`.achievement ON `" . $dbc_db["name"] . "`.achievement.id=character_achievement.achievement WHERE character_achievement.guid=characters.guid), 0) AS ach_points\n FROM characters WHERE account='" . $user_id . "'"); } // calculate timezone offset $time_offset = $timezone_offset * 3600; $output .= ' <tr> <td colspan="3"> </td> </tr> <tr> <td colspan="3">' . lang("index", "realm") . ': ' . $realm["Name"] . '</td> </tr> <tr> <td>' . lang("edit", "characters") . ':</td> <td>' . $sql["char"]->num_rows($result) . '</td> </tr>'; while ($char = $sql["char"]->fetch_assoc($result)) { if ($char["timestamp"] != 0) { $lastseen = date("F j, Y @ Hi", $char["timestamp"] + $time_offset); } else { $lastseen = '-'; } // add this character's achievement points to our total $total_achieve_points += $char["ach_points"]; $output .= ' <tr> <td> \'---></td> <td> <a href="char.php?id=' . $char["guid"] . '&realm=' . $realm["Index"] . '">' . $char["name"] . '</a> - <img src="img/c_icons/' . $char["race"] . '-' . $char["gender"] . '.gif" onmousemove="oldtoolTip(\'' . char_get_race_name($char["race"]) . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> <img src="img/c_icons/' . $char["class"] . '.gif" onmousemove="oldtoolTip(\'' . char_get_class_name($char["class"]) . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> - ' . lang("char", "level_short") . char_get_level_color($char["level"]) . ' </td> <td>' . $lastseen . '</td> </tr>'; } } unset($realm); } else { if ($core == 1) { $result = $sql["char"]->query("SELECT guid, name, race, class, level, gender, timestamp,\n IFNULL((SELECT SUM(points) FROM character_achievement LEFT JOIN `" . $dbc_db["name"] . "`.achievement ON `" . $dbc_db["name"] . "`.achievement.id=character_achievement.achievement WHERE character_achievement.guid=characters.guid), 0) AS ach_points\n FROM characters WHERE acct='" . $user_id . "'"); } else { $result = $sql["char"]->query("SELECT guid, name, race, class, level, gender, logout_time AS timestamp,\n IFNULL((SELECT SUM(points) FROM character_achievement LEFT JOIN `" . $dbc_db["name"] . "`.achievement ON `" . $dbc_db["name"] . "`.achievement.id=character_achievement.achievement WHERE character_achievement.guid=characters.guid), 0) AS ach_points\n FROM characters WHERE account='" . $user_id . "'"); } // calculate timezone offset $time_offset = $timezone_offset * 3600; $output .= ' <!-- tr> <td>' . lang("edit", "characters") . ':</td> <td>' . $sql["char"]->num_rows($result) . '</td> </tr -->'; while ($char = $sql["char"]->fetch_assoc($result)) { if ($char["timestamp"] != 0) { $lastseen = date("F j, Y @ Hi", $char["timestamp"] + $time_offset); } else { $lastseen = '-'; } // add this character's achievement points to our total $total_achieve_points += $char["ach_points"]; $output .= ' <tr> <td> \'---></td> <td> <a href="char.php?id=' . $char["guid"] . '">' . $char["name"] . '</a> - <img src="img/c_icons/' . $char["race"] . '-' . $char["gender"] . '.gif" onmousemove="oldtoolTip(\'' . char_get_race_name($char["race"]) . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> <img src="img/c_icons/' . $char["class"] . '.gif" onmousemove="oldtoolTip(\'' . char_get_class_name($char["class"]) . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt=""/> - ' . lang("char", "level_short") . char_get_level_color($char["level"]) . ' </td> <td>' . $lastseen . '</td> </tr>'; } } unset($result); unset($realms); // Achievement Point to Credit conversion if ($achievement_point_credits && $screen_name["Credits"] >= 0) { $output .= ' <tr> <td colspan="3"> <hr /> </td> </tr> <tr> <td colspan="3"> <table> <tr> <td>' . lang("edit", "total_achieve_points") . ':</td> <td colspan="2"> <span>' . $total_achieve_points . '</span> </td> </tr> <tr> <td>' . lang("edit", "total_achieve_spent") . ':</td> <td colspan="2"> <span>' . $screen_name["AchievePointsSpent"] . '</span> </td> </tr> <tr> <td>' . lang("edit", "achieve_points_available") . ':</td> <td colspan="2"> <span>' . ($total_achieve_points - $screen_name["AchievePointsSpent"]) . '</span> <img src="img/information.png" style="position: relative; top: 4px;" onmousemove="oldtoolTip(\'' . lang("edit", "achieve_warning") . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> </td> </tr>'; if ($credits_fractional) { $output .= ' <tr> <td>' . lang("edit", "points_to_credits") . ':</td> <td colspan="2"> <span>' . $achievement_point_credits / $achievement_point_points . ' ' . lang("edit", "credits") . '</span> </td> </tr>'; } else { $output .= ' <tr> <td>' . lang("edit", "points_to_credits") . ':</td> <td colspan="2"> <span>' . round($achievement_point_credits / $achievement_point_points) . ' ' . lang("edit", "credits") . '</span> <img src="img/information.png" style="position: relative; top: 4px;" onmousemove="oldtoolTip(\'' . lang("edit", "points_to_credits_round") . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" /> </td> </tr>'; } $output .= ' <tr> <td>' . lang("edit", "points_to_spend") . ':</td> <td colspan="2">'; if ($total_achieve_points - $screen_name["AchievePointsSpent"] > 0) { $output .= ' <input type="text" name="points_to_spend" value="0" />'; } else { $output .= ' <div style="display: none;"> <input type="hidden" name="points_to_spend" value="0" /> </div> <span>' . lang("edit", "insufficient_funds") . '</span>'; } $output .= ' </td> </tr> </table> </td> </tr>'; } $override_remember_me = $_COOKIE["corem_override_remember_me"]; if (!isset($override_remember_me)) { $override_remember_me = 1; } if ($remember_me_checked) { $output .= ' <tr> <td>' . lang("edit", "override") . ':</td> <td><input type="checkbox" name="override" value="1" ' . ($override_remember_me ? 'checked="checked"' : '') . ' /> </tr>'; } $output .= ' <tr> <td>'; makebutton(lang("edit", "update"), 'javascript:do_submit_data()" type="wrn', 130); $output .= ' </td> <td colspan="2">'; makebutton(lang("global", "back"), 'javascript:window.history.back()" type="def', 130); $output .= ' </td> </tr> </table> </form> </div> <br /> <div id="edit_profile_fieldset" class="fieldset_border center"> <span class="legend">' . lang("edit", "profile_options") . '</span> <form action="edit.php" method="get" id="form3"> <div> <input type="hidden" name="action" value="profile_set" /> </div> <table class="hidden" id="edit_profile_table"> <tr> <td align="left" colspan="3">' . lang("edit", "profile_info") . '</td> </tr> <tr> <td align="left" colspan="3"> <textarea name="profileinfo" rows="6" cols="65">' . $screen_name["Info"] . '</textarea> </td> </tr> <tr> <td></td> </tr> <tr> <td></td> </tr> <tr> <td align="left" colspan="3">' . lang("edit", "signature") . '</td> </tr> <tr> <td align="left" colspan="3">'; bbcode_add_editor(); $output .= ' </td> </tr> <tr> <td align="left" colspan="3"> <textarea id="msg" name="signature" rows="6" cols="65">' . $screen_name["Signature"] . '</textarea> </td> </tr> <tr> <td></td> </tr> <tr> <td></td> </tr> <tr> <td align="left" colspan="3">' . lang("edit", "prefavatar") . '</td> </tr>'; if ($screen_name["SecurityLevel"] == 0) { if ($screen_name["Avatar"] == '') { if ($core == 1) { $avatar_query = "SELECT acct, name, gender, race, class, level,\n (SELECT gm FROM `" . $logon_db["name"] . "`.accounts WHERE `" . $logon_db["name"] . "`.accounts.acct=`" . $characters_db[$realm_id]['name'] . "`.characters.acct) AS gmlevel,\n (SELECT login FROM `" . $logon_db["name"] . "`.accounts WHERE `" . $logon_db["name"] . "`.accounts.acct=`" . $characters_db[$realm_id]['name'] . "`.characters.acct) AS login\n FROM `" . $characters_db[$realm_id]['name'] . "`.characters\n WHERE level IN (SELECT MAX(level) FROM `" . $characters_db[$realm_id]['name'] . "`.characters WHERE acct='" . $user_id . "')"; } elseif ($core == 2) { $avatar_query = "SELECT account AS acct, name, gender, race, class, level,\n (SELECT gmlevel FROM `" . $logon_db["name"] . "`.account WHERE `" . $logon_db["name"] . "`.account.id=`" . $characters_db[$realm_id]['name'] . "`.characters.account) AS gmlevel,\n (SELECT username FROM `" . $logon_db["name"] . "`.account WHERE `" . $logon_db["name"] . "`.account.id=`" . $characters_db[$realm_id]['name'] . "`.characters.account) AS login\n FROM `" . $characters_db[$realm_id]['name'] . "`.characters\n WHERE level IN (SELECT MAX(level) FROM `" . $characters_db[$realm_id]['name'] . "`.characters WHERE account='" . $user_id . "') AND account='" . $user_id . "'"; } else { $avatar_query = "SELECT account AS acct, name, gender, race, class, level,\n (SELECT gmlevel FROM `" . $logon_db["name"] . "`.account_access WHERE `" . $logon_db["name"] . "`.account_access.id=`" . $characters_db[$realm_id]['name'] . "`.characters.account) AS gmlevel,\n (SELECT username FROM `" . $logon_db["name"] . "`.account WHERE `" . $logon_db["name"] . "`.account.id=`" . $characters_db[$realm_id]['name'] . "`.characters.account) AS login\n FROM `" . $characters_db[$realm_id]['name'] . "`.characters\n WHERE level IN (SELECT MAX(level) FROM `" . $characters_db[$realm_id]['name'] . "`.characters WHERE account='" . $user_id . "') AND account='" . $user_id . "'"; } $avatar_result = $sql["char"]->query($avatar_query); $avatar_fields = $sql["char"]->fetch_assoc($avatar_result); $avatar = gen_avatar_panel($avatar_fields["level"], $avatar_fields["gender"], $avatar_fields["race"], $avatar_fields["class"], 1, 0); $screen_name["avatarlevel"] = $avatar_fields["level"]; $screen_name["avatarrace"] = $avatar_fields["race"]; $screen_name["avatarclass"] = $avatar_fields["class"]; $screen_name["avatarsex"] = $avatar_fields["gender"]; } else { $avatar = gen_avatar_panel($screen_name["avatarlevel"], $screen_name["avatarsex"], $screen_name["avatarrace"], $screen_name["avatarclass"], 1, $screen_name["SecurityLevel"]); } $output .= ' <tr> <td id="forum_topic_avatar" rowspan="6"> <center>' . $avatar . '</center> </td> <tr> <td>' . lang("edit", "usedefault") . ':</td> <td><input type="checkbox" name="use_default" value="1" ' . ($screen_name["Avatar"] == '' ? 'checked="checked"' : '') . ' /> ' . lang("edit", "usedefaultinfo") . '</td> </tr> <td>' . lang("edit", "gender") . ':</td> <td> <select name="avatargender"> <option value="0" ' . ($screen_name["avatarsex"] == 0 ? 'selected="selected"' : '') . ' >' . lang("edit", "male") . '</option> <option value="1" ' . ($screen_name["avatarsex"] == 1 ? 'selected="selected"' : '') . ' >' . lang("edit", "female") . '</option> </select> </td> </tr> <tr> <td>' . lang("edit", "race") . ':</td> <td> <select name="avatarrace">'; $races = array(1 => array(1, lang("id_tab", "human")), 2 => array(2, lang("id_tab", "orc")), 3 => array(3, lang("id_tab", "dwarf")), 4 => array(4, lang("id_tab", "nightelf")), 5 => array(5, lang("id_tab", "undead")), 6 => array(6, lang("id_tab", "tauren")), 7 => array(7, lang("id_tab", "gnome")), 8 => array(8, lang("id_tab", "troll")), 10 => array(10, lang("id_tab", "bloodelf")), 11 => array(11, lang("id_tab", "draenei"))); foreach ($races as $race) { $output .= ' <option value="' . $race[0] . '" ' . ($screen_name["avatarrace"] == $race[0] ? 'selected="selected"' : '') . ' >' . $race[1] . '</option>'; } $output .= ' </select> </td> </tr> <tr> <td>' . lang("edit", "class") . ':</td> <td> <select name="avatarclass">'; $classes = $class_names = array(1 => array(1, lang("id_tab", "warrior")), 2 => array(2, lang("id_tab", "paladin")), 3 => array(3, lang("id_tab", "hunter")), 4 => array(4, lang("id_tab", "rogue")), 5 => array(5, lang("id_tab", "priest")), 6 => array(6, lang("id_tab", "death_knight")), 7 => array(7, lang("id_tab", "shaman")), 8 => array(8, lang("id_tab", "mage")), 9 => array(9, lang("id_tab", "warlock")), 11 => array(11, lang("id_tab", "druid"))); foreach ($classes as $class) { $output .= ' <option value="' . $class[0] . '" ' . ($screen_name["avatarclass"] == $class[0] ? 'selected="selected"' : '') . ' >' . $class[1] . '</option>'; } $output .= ' </select> </td> </tr> <tr> <td>' . lang("edit", "level") . ':</td> <td> <input type="text" name="avatarlevel" value="' . $screen_name["avatarlevel"] . '" /> </td> </tr>'; } else { $output .= ' <tr> <td id="forum_topic_avatar" rowspan="4"> <div>' . gen_avatar_panel($screen_name["avatarlevel"], $screen_name["avatarsex"], $screen_name["avatarrace"], $screen_name["avatarclass"], 0, $screen_name["SecurityLevel"]) . '</div> </td> <td>' . lang("edit", "gender") . ':</td> <td>' . lang("edit", "unavailable") . '</td> </tr> <tr> <td>' . lang("edit", "race") . ':</td> <td>' . lang("edit", "unavailable") . '</td> </tr> <tr> <td>' . lang("edit", "class") . ':</td> <td>' . lang("edit", "unavailable") . '</td> </tr> <tr> <td>' . lang("edit", "level") . ':</td> <td>' . lang("edit", "unavailable") . '</td> </tr>'; } $output .= ' <tr> <td></td> </tr> <tr> <td></td> </tr> <tr> <td align="left" colspan="3">' . lang("edit", "viewmods") . '</td> </tr> <tr> <td>' . lang("char", "char_sheet") . ':</td> <td colspan="2"> <select name="viewmod_sheet"> <option value="0" ' . ($screen_name["View_Mod_Sheet"] == 0 ? 'selected="selected" ' : '') . '>' . lang("edit", "onlyme") . '</option> <!-- option value="1" ' . ($screen_name["View_Mod_Sheet"] == 1 ? 'selected="selected" ' : '') . '>' . lang("edit", "friends") . '</option --> <option value="2" ' . ($screen_name["View_Mod_Sheet"] == 2 ? 'selected="selected" ' : '') . '>' . lang("edit", "reg_users") . '</option> </select> </td> </tr> <tr> <td>' . lang("char", "achievements") . ':</td> <td colspan="2"> <select name="viewmod_achieve"> <option value="0" ' . ($screen_name["View_Mod_Achieve"] == 0 ? 'selected="selected" ' : '') . '>' . lang("edit", "onlyme") . '</option> <!-- option value="1" ' . ($screen_name["View_Mod_Achieve"] == 1 ? 'selected="selected" ' : '') . '>' . lang("edit", "friends") . '</option --> <option value="2" ' . ($screen_name["View_Mod_Achieve"] == 2 ? 'selected="selected" ' : '') . '>' . lang("edit", "reg_users") . '</option> </select> </td> </tr> <tr> <td>' . lang("char", "friends") . ':</td> <td colspan="2"> <select name="viewmod_friends"> <option value="0" ' . ($screen_name["View_Mod_Friends"] == 0 ? 'selected="selected" ' : '') . '>' . lang("edit", "onlyme") . '</option> <!-- option value="1" ' . ($screen_name["View_Mod_Friends"] == 1 ? 'selected="selected" ' : '') . '>' . lang("edit", "friends") . '</option --> <option value="2" ' . ($screen_name["View_Mod_Friends"] == 2 ? 'selected="selected" ' : '') . '>' . lang("edit", "reg_users") . '</option> </select> </td> </tr> <tr> <td>' . lang("char", "inventory") . ':</td> <td colspan="2"> <select name="viewmod_inv"> <option value="0" ' . ($screen_name["View_Mod_Inv"] == 0 ? 'selected="selected" ' : '') . '>' . lang("edit", "onlyme") . '</option> <!-- option value="1" ' . ($screen_name["View_Mod_Inv"] == 1 ? 'selected="selected" ' : '') . '>' . lang("edit", "friends") . '</option --> <option value="2" ' . ($screen_name["View_Mod_Inv"] == 2 ? 'selected="selected" ' : '') . '>' . lang("edit", "reg_users") . '</option> </select> </td> </tr> <tr> <td>' . lang("char", "pets") . ':</td> <td colspan="2"> <select name="viewmod_pets"> <option value="0" ' . ($screen_name["View_Mod_Pets"] == 0 ? 'selected="selected" ' : '') . '>' . lang("edit", "onlyme") . '</option> <!-- option value="1" ' . ($screen_name["View_Mod_Pets"] == 1 ? 'selected="selected" ' : '') . '>' . lang("edit", "friends") . '</option --> <option value="2" ' . ($screen_name["View_Mod_Pets"] == 2 ? 'selected="selected" ' : '') . '>' . lang("edit", "reg_users") . '</option> </select> </td> </tr> <tr> <td>' . lang("char", "pvp") . ':</td> <td colspan="2"> <select name="viewmod_pvp"> <option value="0" ' . ($screen_name["View_Mod_PvP"] == 0 ? 'selected="selected" ' : '') . '>' . lang("edit", "onlyme") . '</option> <!-- option value="1" ' . ($screen_name["View_Mod_PvP"] == 1 ? 'selected="selected" ' : '') . '>' . lang("edit", "friends") . '</option --> <option value="2" ' . ($screen_name["View_Mod_PvP"] == 2 ? 'selected="selected" ' : '') . '>' . lang("edit", "reg_users") . '</option> </select> </td> </tr> <tr> <td>' . lang("char", "quests") . ':</td> <td colspan="2"> <select name="viewmod_quests"> <option value="0" ' . ($screen_name["View_Mod_Quest"] == 0 ? 'selected="selected" ' : '') . '>' . lang("edit", "onlyme") . '</option> <!-- option value="1" ' . ($screen_name["View_Mod_Quest"] == 1 ? 'selected="selected" ' : '') . '>' . lang("edit", "friends") . '</option --> <option value="2" ' . ($screen_name["View_Mod_Quest"] == 2 ? 'selected="selected" ' : '') . '>' . lang("edit", "reg_users") . '</option> </select> </td> </tr> <tr> <td>' . lang("char", "reputation") . ':</td> <td colspan="2"> <select name="viewmod_rep"> <option value="0" ' . ($screen_name["View_Mod_Rep"] == 0 ? 'selected="selected" ' : '') . '>' . lang("edit", "onlyme") . '</option> <!-- option value="1" ' . ($screen_name["View_Mod_Rep"] == 1 ? 'selected="selected" ' : '') . '>' . lang("edit", "friends") . '</option --> <option value="2" ' . ($screen_name["View_Mod_Rep"] == 2 ? 'selected="selected" ' : '') . '>' . lang("edit", "reg_users") . '</option> </select> </td> </tr> <tr> <td>' . lang("char", "skills") . ':</td> <td colspan="2"> <select name="viewmod_skills"> <option value="0" ' . ($screen_name["View_Mod_Skill"] == 0 ? 'selected="selected" ' : '') . '>' . lang("edit", "onlyme") . '</option> <!-- option value="1" ' . ($screen_name["View_Mod_Skill"] == 1 ? 'selected="selected" ' : '') . '>' . lang("edit", "friends") . '</option --> <option value="2" ' . ($screen_name["View_Mod_Skill"] == 2 ? 'selected="selected" ' : '') . '>' . lang("edit", "reg_users") . '</option> </select> </td> </tr> <tr> <td>' . lang("char", "talents") . ':</td> <td colspan="2"> <select name="viewmod_talents"> <option value="0" ' . ($screen_name["View_Mod_Talent"] == 0 ? 'selected="selected" ' : '') . '>' . lang("edit", "onlyme") . '</option> <!-- option value="1" ' . ($screen_name["View_Mod_Talent"] == 1 ? 'selected="selected" ' : '') . '>' . lang("edit", "friends") . '</option --> <option value="2" ' . ($screen_name["View_Mod_Talent"] == 2 ? 'selected="selected" ' : '') . '>' . lang("edit", "reg_users") . '</option> </select> </td> </tr> <tr> <td>' . lang("char", "view") . ':</td> <td colspan="2"> <select name="viewmod_view"> <option value="0" ' . ($screen_name["View_Mod_View"] == 0 ? 'selected="selected" ' : '') . '>' . lang("edit", "onlyme") . '</option> <!-- option value="1" ' . ($screen_name["View_Mod_View"] == 1 ? 'selected="selected" ' : '') . '>' . lang("edit", "friends") . '</option --> <option value="2" ' . ($screen_name["View_Mod_View"] == 2 ? 'selected="selected" ' : '') . '>' . lang("edit", "reg_users") . '</option> </select> </td> </tr> <tr> <td></td> </tr> <tr> <td>'; makebutton(lang("edit", "save"), 'javascript:do_submit(\'form3\', 0)', 130); $output .= ' </td> </tr> </table> </form> </div> <div id="edit_invites_fieldset" class="fieldset_border center"> <span class="legend">' . lang("edit", "invite_options") . '</span> <table class="hidden" id="edit_invites_table"> <tr> <td align="left">' . lang("edit", "invite_email") . ': </td> <td align="right"> <form action="edit.php" method="get" id="form4"> <div> <input type="hidden" name="action" value="send_invite" /> <input type="text" name="invite_email" value="" size="30" /> </div> </form> </td> </tr> <tr> <td colspan="2">'; makebutton(lang("edit", "sendinvite"), 'javascript:do_submit(\'form4\', 0)', 130); $output .= ' </td> </tr> <tr> <td> </td> </tr> <tr> <td align="left" colspan="2">' . lang("edit", "active_invites") . ': </td> </tr> <tr> <td colspan="2"> <table class="lined" id="active_invites_table"> <tr> <th style="width: 15%;">Delete</th> <th>Email</th> <th style="width: 15%">Resend</th> </tr>'; $invites_query = "SELECT * FROM invitations WHERE issuer_acct_id='" . $user_id . "'"; $invites_result = $sql["mgr"]->query($invites_query); while ($row = $sql["mgr"]->fetch_assoc($invites_result)) { $output .= ' <tr> <td> <a href="edit.php?action=delete_invite&key=' . $row["invitation_key"] . '"> <img src="img/aff_cross.png" alt="Delete" /> </a> </td> <td>' . $row["invited_email"] . '</td> <td> <a href="edit.php?action=resend_invite&key=' . $row["invitation_key"] . '"> <img src="img/add.png" alt="Resend" /> </a> </td> </tr>'; } $output .= ' </table> </td> </tr> </table> </div> <br /> <div id="edit_prizebags_fieldset" class="fieldset_border center"> <span class="legend">' . lang("edit", "my_bags") . '</span> <table class="hidden" id="edit_prizebags_table">'; // $bag_query = "SELECT * FROM point_system_prize_bags WHERE owner='" . $user_id . "'"; $bag_result = $sql["mgr"]->query($bag_query); $output_temp = '<tr><td style="display: none;"></td></tr>'; while ($bag = $sql["mgr"]->fetch_assoc($bag_result)) { $output_temp .= ' <tr> <td align="right"> <a href="point_system.php?action=view_bag&bag_id=' . $bag["entry"] . '"> <img src="' . get_item_icon(1725) . '" alt="" /> </a> </td> <td align="left"> <span> ' . $bag["slots"] . ' ' . lang("edit", "bag_slots") . '</span> </td> </tr>'; } $output .= $output_temp; $output .= ' </table> </div> <br /> <div id="edit_theme_fieldset" class="fieldset_border center"> <span class="legend">' . lang("edit", "theme_options") . '</span> <table class="hidden" id="edit_theme_table"> <tr> <td align="left">' . lang("edit", "select_layout_lang") . ': </td> <td align="right"> <form action="edit.php" method="get" id="form1"> <div> <input type="hidden" name="action" value="lang_set" /> <select name="lang"> <optgroup label="' . lang("edit", "language") . '">'; if (is_dir('./lang')) { if ($dh = opendir('./lang')) { while (($file = readdir($dh)) == true) { $lang = explode('.', $file); if (isset($lang[1]) && $lang[1] == 'php') { $output .= ' <option value="' . $lang[0] . '"' . (isset($_COOKIE["corem_lang"]) && $_COOKIE["corem_lang"] == $lang[0] ? ' selected="selected" ' : '') . '>' . lang("edit", $lang[0]) . '</option>'; } } closedir($dh); } } $output .= ' </optgroup> </select> </div> </form> </td> <td>'; makebutton(lang("edit", "save"), 'javascript:do_submit(\'form1\', 0)', 130); $output .= ' </td> </tr> <tr> <td align="left">' . lang("edit", "select_theme") . ': </td> <td align="right"> <form action="edit.php" method="get" id="form2"> <div> <input type="hidden" name="action" value="theme_set" /> <select name="theme"> <optgroup label="' . lang("edit", "theme") . '">'; if (is_dir('./themes')) { if ($dh = opendir('./themes')) { while (($file = readdir($dh)) == true) { if ($file == '.' || $file == '..' || $file == '.htaccess' || $file == 'index.html' || $file == '.svn') { } else { $output .= ' <option value="' . $file . '"' . (isset($_COOKIE["corem_theme"]) && $_COOKIE["corem_theme"] == $file ? ' selected="selected" ' : '') . '>' . $file . '</option>'; } } closedir($dh); } } $output .= ' </optgroup> </select> </div> </form> </td> <td>'; makebutton(lang("edit", "save"), 'javascript:do_submit(\'form2\',0)', 130); $output .= ' </td> </tr> </table> </div> <br />'; } else { error(lang("global", "err_no_records_found")); } }
function forum_view_topic() { global $enablesidecheck, $forum_skeleton, $forum_lang, $maxqueries, $user_lvl, $user_id, $output, $realm_db, $characters_db, $realm_id, $mmfpm_db; if ($enablesidecheck) { $side = get_side(); } // Better to use it here instead of call it many time in the loop :) $mysql = new SQL(); $link = $mysql->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); if (isset($_GET["id"])) { $id = $mysql->quote_smart($_GET["id"]); $post = false; } else { if (isset($_GET["postid"])) { $id = $mysql->quote_smart($_GET["postid"]); $post = true; } else { error($forum_lang["no_such_topic"]); } } if (!isset($_GET["page"])) { $page = 0; } else { $page = $mysql->quote_smart($_GET["page"]); } // Fok you mathafoker haxorz $start = $maxqueries * $page; if (!$post) { $posts = $mysql->query("SELECT id,authorid,authorname,forum,name,text,time,annouced,sticked,closed FROM mm_forum_posts WHERE topic = '{$id}' ORDER BY id ASC LIMIT {$start}, {$maxqueries};"); // Thx qsa for the query structure $link = $mysql->connect($realm_db['addr'], $realm_db['user'], $realm_db['pass'], $realm_db['name']); $query = "SELECT account,name,gender,race,class,\r\n level,(SELECT gmlevel FROM `{$realm_db['name']}`.account_access WHERE `{$realm_db['name']}`.account_access.id = `{$characters_db[$realm_id]['name']}`.characters.account) as gmlevel\r\nFROM `{$characters_db[$realm_id]['name']}`.characters WHERE totaltime IN ( SELECT MAX(totaltime) FROM `{$characters_db[$realm_id]['name']}`.characters WHERE account IN ("; while ($post = $mysql->fetch_row($posts)) { $query .= "{$post['1']},"; } mysql_data_seek($posts, 0); $query .= "0) GROUP BY account);"; $link = $mysql->connect($characters_db[$realm_id]['addr'], $characters_db[$realm_id]['user'], $characters_db[$realm_id]['pass'], $characters_db[$realm_id]['name']); $results = $mysql->query($query); while ($avatar = $mysql->fetch_row($results)) { $char_gender = str_pad(dechex($avatar[2]), 8, 0, STR_PAD_LEFT); $avatars[$avatar[0]]["name"] = $avatar[1]; $avatars[$avatar[0]]["sex"] = $char_gender[3]; $avatars[$avatar[0]]["race"] = $avatar[3]; $avatars[$avatar[0]]["class"] = $avatar[4]; $avatars[$avatar[0]]["level"] = $avatar[5]; $avatars[$avatar[0]]["gm"] = $avatar[6]; } // $link = $mysql->connect($realm_db['addr'], $realm_db['user'], $realm_db['pass'], $realm_db['name']); $replies = $mysql->num_rows($posts); if ($replies == 0) { error($forum_lang["no_such_topic"]); } $post = $mysql->fetch_row($posts); $fid = $post[3]; $cat = 0; foreach ($forum_skeleton as $cid => $category) { foreach ($category["forums"] as $fid_ => $forum) { if ($fid_ == $fid) { $cat = $cid; } } } if (empty($forum_skeleton[$cat]["forums"][$fid])) { error($forum_lang["no_such_forum"]); } $forum = $forum_skeleton[$cat]["forums"][$fid]; if ($forum_skeleton[$cat]["level_read"] > $user_lvl || $forum["level_read"] > $user_lvl) { error($forum_lang["no_access"]); } if ($user_lvl == 0 && $enablesidecheck) { if ($forum_skeleton[$cat]["side_access"] != "ALL") { // Not an all side forum if ($side == "NO") { // No char continue; } else { if ($forum_skeleton[$cat]["side_access"] != $side) { // Forumside different of the user side continue; } } } if ($forum["side_access"] != "ALL") { // Not an all side forum if ($side == "NO") { // No char continue; } else { if ($forum["side_access"] != $side) { // Forumside different of the user side continue; } } } } $post[4] = htmlspecialchars($post[4]); $post[5] = htmlspecialchars($post[5]); $post[5] = bbcode_parse($post[5]); $output .= "<div class=\"top\"><h1>{$forum_lang["forums"]}</h1>{$forum_lang["you_are_here"]} : <a href=\"forum.php\">{$forum_lang["forum_index"]}</a> -> <a href=\"forum.php?action=view_forum&id={$fid}\">{$forum["name"]}</a> -> <a href=\"forum.php?action=view_topic&id={$id}\">{$post[4]}</a></div>\r\n <center><table class=\"lined\">\r\n <tr>\r\n <td style=\"width:15%;\">{$forum_lang["info"]}</td>\r\n <td style=\"text-align:left;\">{$forum_lang["text"]}</td>\r\n <td style=\"width:50%;text-align:right;\">"; if ($user_lvl > 0) { if ($post[8] == "1") { if ($post[7] == "1") { // Annoucement $output .= "{$forum_lang["annoucement"]}\r\n <a href=\"forum.php?action=edit_announce&id={$post[0]}&state=0\"><img src=\"img/forums/down.gif\" border=\"0\" alt=\"{$forum_lang["down"]}\" /></a>"; } else { // Sticky $output .= "{$forum_lang["sticky"]}\r\n <a href=\"forum.php?action=edit_stick&id={$post[0]}&state=0\"><img src=\"img/forums/down.gif\" border=\"0\" alt=\"{$forum_lang["down"]}\" /></a>\r\n <a href=\"forum.php?action=edit_announce&id={$post[0]}&state=1\"><img src=\"img/forums/up.gif\" border=\"0\" alt=\"{$forum_lang["up"]}\" /></a>"; } } else { if ($post[7] == "1") { // Annoucement $output .= "{$forum_lang["annoucement"]}\r\n <a href=\"forum.php?action=edit_announce&id={$post[0]}&state=0\"><img src=\"img/forums/down.gif\" border=\"0\" alt=\"{$forum_lang["down"]}\" /></a>"; } else { // Normal Topic $output .= "{$forum_lang["normal"]}\r\n <a href=\"forum.php?action=edit_stick&id={$post[0]}&state=1\"><img src=\"img/forums/up.gif\" border=\"0\" alt=\"{$forum_lang["up"]}\" /></a>"; } } if ($post[9] == "1") { $output .= " <a href=\"forum.php?action=edit_close&id={$post[0]}&state=0\"><img src=\"img/forums/lock.gif\" border=\"0\" alt=\"{$forum_lang["open"]}\" /></a>"; } else { $output .= " <a href=\"forum.php?action=edit_close&id={$post[0]}&state=1\"><img src=\"img/forums/unlock.gif\" border=\"0\" alt=\"{$forum_lang["close"]}\" /></a>"; } $output .= " <a href=\"forum.php?action=move_topic&id={$post[0]}\"><img src=\"img/forums/move.gif\" border=\"0\" alt=\"{$forum_lang["move"]}\" /></a>"; } if (isset($avatars[$post[1]])) { $avatar = gen_avatar_panel($avatars[$post[1]]["level"], $avatars[$post[1]]["sex"], $avatars[$post[1]]["race"], $avatars[$post[1]]["class"], 1, $avatars[$post[1]]["gm"]); } else { $avatar = ""; } $output .= "<tr><td style=\"width:15%;text-align:center;\"><center>{$avatar}</center>{$forum_lang["author"]} : "; if ($user_lvl > 0) { $output .= "<a href=\"user.php?action=edit_user&error=11&id={$post[1]}\">"; } if (isset($avatars[$post[1]])) { $output .= $avatars[$post[1]]["name"]; } else { $output .= $post[2]; } if ($user_lvl > 0) { $output .= "</a>"; } $output .= "<br /> {$forum_lang["at"]} : {$post[6]}</td>\r\n <td colspan=\"2\" style=\"text-align:left\">{$post[5]}<br /><div style=\"text-align:right;\">"; if ($user_lvl > 0 || $user_id == $post[1]) { $output .= "<a href=\"forum.php?action=edit_post&id={$post[0]}\"><img src=\"img/forums/edit.gif\" border=\"0\" alt=\"{$forum_lang["edit"]}\" /></a>\r\n <a href=\"forum.php?action=delete_post&id={$post[0]}\"><img src=\"img/forums/delete.gif\" border=\"0\" alt=\"{$forum_lang["delete"]}\" /></a>"; } $output .= "</div></td></tr>"; $closed = $post[9]; while ($post = $mysql->fetch_row($posts)) { $post[5] = htmlspecialchars($post[5]); $post[5] = bbcode_parse($post[5]); if (isset($avatars[$post[1]])) { $avatar = gen_avatar_panel($avatars[$post[1]]["level"], $avatars[$post[1]]["sex"], $avatars[$post[1]]["race"], $avatars[$post[1]]["class"], 1, $avatars[$post[1]]["gm"]); } else { $avatar = ""; } $output .= "<tr><td style=\"width:15%;text-align:center;\"><center>{$avatar}</center>{$forum_lang["author"]} : "; if ($user_lvl > 0) { $output .= "<a href=\"user.php?action=edit_user&error=11&id={$post[1]}\">"; } if (isset($avatars[$post[1]])) { $output .= $avatars[$post[1]]["name"]; } else { $output .= $post[2]; } if ($user_lvl > 0) { $output .= "</a>"; } $output .= "<br /> {$forum_lang["at"]} : {$post[6]}</td>\r\n <td colspan=\"2\" style=\"text-align:left;\">{$post[5]}<br />"; if ($user_lvl > 0 || $user_id == $post[1]) { $output .= "<div style=\"text-align:right;\"><a href=\"forum.php?action=edit_post&id={$post[0]}\"><img src=\"img/forums/edit.gif\" border=\"0\" alt=\"{$forum_lang["edit"]}\" /></a>\r\n <a href=\"forum.php?action=delete_post&id={$post[0]}\"><img src=\"img/forums/delete.gif\" border=\"0\" alt=\"{$forum_lang["delete"]}\" /></a></div>"; } $output .= "</td></tr>"; } $link = $mysql->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); $totalposts = $mysql->query("SELECT id FROM mm_forum_posts WHERE topic = '{$id}';"); $totalposts = $mysql->num_rows($totalposts); $pages = ceil($totalposts / $maxqueries); $output .= "<tr><td align=\"right\" colspan=\"3\">{$forum_lang["pages"]} : "; for ($x = 1; $x <= $pages; $x++) { $y = $x - 1; $output .= "<a href=\"forum.php?action=view_topic&id={$id}&page={$y}\">{$x}</a> "; } $output .= "</td></tr><tr><td align=\"right\" class=\"hidden\"></td></tr></table>"; // Quick reply form if (($user_lvl > 0 || !$closed) && ($forum_skeleton[$cat]["level_post"] <= $user_lvl && $forum["level_post"] <= $user_lvl)) { $output .= "<form action=\"forum.php?action=do_add_post\" method=\"POST\" name=\"form\">\r\n <table class=\"top_hidden\">\r\n <tr>\r\n <td align=\"left\">"; makebutton($forum_lang["post"], "javascript:do_submit()", 100); $output .= "</td><td align=\"right\">{$forum_lang["quick_reply"]}</td></tr>\r\n <tr><td colspan=\"2\">" . bbcode_editor_js() . "\r\n <a href=\"javascript:ajtBBCode('[b]','[/b]')\">{$forum_lang["bold"]}</a>,\r\n <a href=\"javascript:ajtBBCode('[i]','[/i]')\">{$forum_lang["italic"]}</a>,\r\n <a href=\"javascript:ajtBBCode('[u]','[/u]')\">{$forum_lang["underline"]}</a>,\r\n <a href=\"javascript:ajtBBCode('[img]','[/img]')\">{$forum_lang["image"]}</a>,\r\n <a href=\"javascript:ajtBBCode('[url]','[/url]')\">{$forum_lang["url"]}</a>,\r\n <a href=\"javascript:ajtBBCode('[url=Click here]','[/url]')\">{$forum_lang["url2"]}</a>,\r\n <a href=\"javascript:ajtBBCode('[code]','[/code]')\">{$forum_lang["code"]}</a>,\r\n <a href=\"javascript:ajtBBCode('[quote]','[/quote]')\">{$forum_lang["quote"]}</a>,\r\n <a href=\"javascript:ajtBBCode('[quote=Someone]','[/quote]')\">{$forum_lang["quote2"]}</a>,\r\n <a href=\"javascript:ajtBBCode('[media]','[/media]')\">{$forum_lang["media"]}</a>\r\n <a href=\"javascript:ajtBBCode('[youtube]','[/youtube]')\">{$forum_lang["YouTube"]}</a>\r\n {$forum_lang["color"]} : <select name=\"fontcolor\" onChange=\"ajtBBCode('[color=' + this.form.fontcolor.options[this.form.fontcolor.selectedIndex].value + ']', '[/color]'); this.selectedIndex=0;\" onMouseOver=\"helpline('fontcolor')\" style=\"background-color:#D7D7D7\">\r\n <option value=\"black\" style=\"color:black\">Black</option>\r\n <option value=\"silver\" style=\"color:silver\">Silver</option>\r\n <option value=\"gray\" style=\"color:gray\">Gray</option>\r\n <option value=\"maroon\" style=\"color:maroon\">Maroon</option>\r\n <option value=\"red\" style=\"color:red\">Red</option>\r\n <option value=\"purple\" style=\"color:purple\">Purple</option>\r\n <option value=\"fuchsia\" style=\"color:fuchsia\">Fuchsia</option>\r\n <option value=\"navy\" style=\"color:navy\">Navy</option>\r\n <option value=\"blue\" style=\"color:blue\">Blue</option>\r\n <option value=\"aqua\" style=\"color:aqua\">Aqua</option>\r\n <option value=\"teal\" style=\"color:teal\">Teal</option>\r\n <option value=\"lime\" style=\"color:lime\">Lime</option>\r\n <option value=\"green\" style=\"color:green\">Green</option>\r\n <option value=\"olive\" style=\"color:olive\">Olive</option>\r\n <option value=\"yellow\" style=\"color:yellow\">Yellow</option>\r\n <option value=\"white\" style=\"color:white\">White</option>\r\n </select>\r\n </td></tr><tr><td colspan=\"2\">\r\n <a href=\"javascript:ajtTexte(':)')\"><img style=\"border:0px;\" src=\"img/emoticons/smile.gif\"></a><a href=\"javascript:ajtTexte(':|')\"><img style=\"border:0px;\" src=\"img/emoticons/neutral.gif\"></a><a href=\"javascript:ajtTexte(':(')\"><img style=\"border:0px;\" src=\"img/emoticons/sad.gif\"></a><a href=\"javascript:ajtTexte(':D')\"><img style=\"border:0px;\" src=\"img/emoticons/razz.gif\"></a><a href=\"javascript:ajtTexte(':o')\"><img style=\"border:0px;\" src=\"img/emoticons/yikes.gif\"></a><a href=\"javascript:ajtTexte(';)')\"><img style=\"border:0px;\" src=\"img/emoticons/wink.gif\"></a><a href=\"javascript:ajtTexte(':/')\"><img style=\"border:0px;\" src=\"img/emoticons/hmm.gif\" /></a><a href=\"javascript:ajtTexte(':p')\"><img style=\"border:0px;\" src=\"img/emoticons/tongue.gif\"></a><a href=\"javascript:ajtTexte(':lol:')\"><img style=\"border:0px;\" src=\"img/emoticons/lol.gif\"></a><a href=\"javascript:ajtTexte(':mad:')\"><img style=\"border:0px;\" src=\"img/emoticons/angry.gif\"></a><a href=\"javascript:ajtTexte(':rolleyes:')\"><img style=\"border:0px;\" src=\"img/emoticons/roll.gif\"></a><a href=\"javascript:ajtTexte(':cool:')\"><img style=\"border:0px;\" src=\"img/emoticons/cool.gif\"></a>\r\n </td></tr></table><TEXTAREA NAME=\"msg\" ROWS=8 COLS=93></TEXTAREA><br/>\r\n <input type=\"hidden\" name=\"forum\" value=\"{$fid}\" />\r\n <input type=\"hidden\" name=\"topic\" value=\"{$id}\" />\r\n </form>"; } $output .= "</center>"; $mysql->close(); } else { $output .= "<div class=\"top\"><h1>Stand by...</h1></div>"; $post = $mysql->query("SELECT topic, id FROM mm_forum_posts WHERE id = '{$id}'"); // Get our post id if ($mysql->num_rows($post) == 0) { error($forum_lang["no_such_topic"]); } $post = $mysql->fetch_row($post); if ($post[0] == $post[1]) { redirect("forum.php?action=view_topic&id={$id}"); } $topic = $post[0]; $posts = $mysql->query("SELECT id FROM mm_forum_posts WHERE topic = '{$topic}';"); // Get posts in our topic $replies = $mysql->num_rows($posts); if ($replies == 0) { error($forum_lang["no_such_topic"]); } $row = 0; while ($post = $mysql->fetch_row($posts)) { // Find the row of our post, so we could have his ratio (topic x/total topics) and knew the page to show $row++; if ($topic == $id) { break; } } $page = 0; while ($page * $maxqueries < $row) { $page++; } $page--; $mysql->close(); redirect("forum.php?action=view_topic&id={$topic}&page={$page}"); } // Queries : 2 with id || 2 (+2) with postid }
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")); } }
function forum_view_topic(&$sqlr, &$sqlc, &$sqlm) { global $enablesidecheck, $forum_skeleton, $maxqueries, $forum_lang, $user_lvl, $user_id, $output, $realm_db, $characters_db, $mmfpm_db, $realm_id; if ($enablesidecheck) { $side = get_side(); } // Better to use it here instead of call it many time in the loop :) $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); //==========================$_GET and SECURE================================= if (isset($_GET['id'])) { $id = $sqlm->quote_smart($_GET['id']); $post = false; } else { if (isset($_GET['postid'])) { $id = $sqlm->quote_smart($_GET['postid']); $post = true; } else { error($forum_lang['no_such_topic']); } } if (!isset($_GET['page'])) { $page = 0; } else { $page = $sqlm->quote_smart($_GET['page']); } // Fok you mathafoker haxorz //==========================$_GET and SECURE end============================= $start = $maxqueries * $page; if (!$post) { $posts = $sqlm->query(' SELECT id, authorid, authorname, forum, name, text, time, annouced, sticked, closed FROM mm_forum_posts WHERE topic = ' . $id . ' ORDER BY id ASC LIMIT ' . $start . ', ' . $maxqueries . ''); $sqlr = new SQL(); $sqlr->connect($realm_db['addr'], $realm_db['user'], $realm_db['pass'], $realm_db['name']); // need to update this query to use ' instead of " $query = "\r\n\t\t\tSELECT account, name, gender, race, class, level,\r\n\t\t\t\t(SELECT gmlevel\r\n\t\t\t\tFROM `{$realm_db['name']}`.account\r\n\t\t\t\tWHERE `{$realm_db['name']}`.account.id = `{$characters_db[$realm_id]['name']}`.characters.account) as gmlevel\r\n\t\t\tFROM `{$characters_db[$realm_id]['name']}`.characters\r\n\t\t\tWHERE totaltime IN \r\n\t\t\t\t(SELECT MAX(totaltime)\r\n\t\t\t\tFROM `{$characters_db[$realm_id]['name']}`.characters\r\n\t\t\t\tWHERE account IN ("; while ($post = $sqlm->fetch_row($posts)) { $query .= "{$post['1']},"; } mysql_data_seek($posts, 0); $query .= "\r\n\t\t\t\t\t0)\r\n\t\t\t\tGROUP BY account);"; $sqlc = new SQL(); $sqlc->connect($characters_db[$realm_id]['addr'], $characters_db[$realm_id]['user'], $characters_db[$realm_id]['pass'], $characters_db[$realm_id]['name']); $results = $sqlc->query($query); while ($avatar = $sqlc->fetch_assoc($results)) { $char_gender = str_pad(dechex($avatar['gender']), 8, 0, STR_PAD_LEFT); $avatars[$avatar['account']]['name'] = $avatar['name']; $avatars[$avatar['account']]['sex'] = $char_gender['race']; $avatars[$avatar['account']]['race'] = $avatar['race']; $avatars[$avatar['account']]['class'] = $avatar['class']; $avatars[$avatar['account']]['level'] = $avatar['level']; $avatars[$avatar['account']]['gm'] = $avatar['gmlevel']; } $replies = $sqlm->num_rows($posts); if ($replies == 0) { error($forum_lang['no_such_topic']); } $post = $sqlm->fetch_assoc($posts); $fid = $post['forum']; $cat = 0; $cid = $sqlm->query(' SELECT category, name, description, side_access, level_post_topic, level_read, level_post FROM mm_forum_categories'); while ($category = $sqlm->fetch_assoc($cid)) { $fid_ = $sqlm->query(' SELECT forum, category, name, description, side_access, level_post_topic, level_read, level_post FROM mm_forum_forums WHERE category = ' . $category['category'] . ''); while ($forum = $sqlm->fetch_assoc($fid_)) { if ($forum['forum'] == $fid) { $cat = $forum['category']; } if (empty($forum['forum'])) { error($forum_lang['no_such_forum']); } if ($category['level_read'] > $user_lvl || $forum['level_read'] > $user_lvl) { error($forum_lang['no_access']); } if ($user_lvl == 0 && $enablesidecheck) { if ($category['side_access'] != 'ALL') { // Not an all side forum if ($side == 'NO') { // No char continue; } else { if ($category['side_access'] != $side) { // Forumside different of the user side continue; } } } if ($forum['side_access'] != 'ALL') { // Not an all side forum if ($side == 'NO') { // No char continue; } else { if ($forum['side_access'] != $side) { // Forumside different of the user side continue; } } } } } } $post['name'] = htmlspecialchars($post['name']); $post['text'] = htmlspecialchars($post['text']); $post['text'] = bbcode_parse1($post['text']); $output .= ' <div class="top"> <h1>' . $forum_lang['forums'] . '</h1> </div> <center> <fieldset> <legend> <a href="forum.php">' . $forum_lang['forum_index'] . '</a> -> <a href="forum.php?action=view_forum&id=' . $forum['forum'] . '">' . $forum['name'] . '</a> -> <a href="forum.php?action=view_topic&id=' . $id . '">' . $post['name'] . '</a> </legend> <table class="lined"> <tr> <th style="width:15%;">' . $forum_lang['info'] . '</th> <th style="text-align:left;">' . $forum_lang['text'] . '</th>'; if ($user_lvl > 0) { $output .= ' <th style="width:50%;text-align:right;">'; if ($post['sticked'] == "1") { if ($post['annouced'] == "1") { // Annoucement $output .= ' ' . $forum_lang['annoucement'] . ''; } else { // Sticky $output .= ' ' . $forum_lang['sticky'] . ''; } } else { if ($post['annouced'] == "1") { // Annoucement $output .= ' ' . $forum_lang['annoucement'] . ''; } else { // Normal Topic $output .= ' ' . $forum_lang['normal'] . ''; } } if ($post['closed'] == "1") { $output .= ' </th>'; } } if (isset($avatars[$post['authorid']])) { $avatar = gen_avatar_panel($avatars[$post['authorid']]['level'], $avatars[$post['authorid']]['sex'], $avatars[$post['authorid']]['race'], $avatars[$post['authorid']]['class'], 1, $avatars[$post['authorid']]['gm']); } else { $avatar = ""; } $output .= ' <tr> <td colspan="3" align="left"> ' . $post['time'] . ' </td> </tr> </tr>'; $output .= ' <tr> <td style="width:15%;text-align:center;"><center>' . $avatar . '</center>' . $forum_lang['author'] . ' : '; if ($user_lvl > 0) { $output .= ' <a href="user.php?action=edit_user&error=11&id=' . $post['authorid'] . '">'; } if (isset($avatars[$post['authorid']])) { $output .= $avatars[$post['authorid']]['name']; } else { $output .= $post['authorname']; } if ($user_lvl > 0) { $output .= ' </a>'; } $output .= ' </td> <td colspan="2" style="text-align:left">' . $post['text'] . '<br /> <div style="text-align:right\\"> </td> </tr>'; if ($user_lvl > 0) { $output .= ' <tr> <th colspan="3" align="right">'; if ($post['sticked'] == "1") { if ($post['annouced'] == "1") { // Annoucement $output .= ' <a href="forum.php?action=edit_announce&id=' . $post['id'] . '&state=0"><img src="img/forums/unannounce.png" border="0" alt="' . $forum_lang['down'] . '" /></a>'; } else { // Sticky $output .= ' <a href="forum.php?action=edit_stick&id=' . $post['id'] . '&state=0"><img src="img/forums/unstick.png" border="0" alt="' . $forum_lang['down'] . '" /></a> <a href="forum.php?action=edit_announce&id=' . $post['id'] . '&state=1"><img src="img/forums/announce.png" border="0" alt="' . $forum_lang["up"] . '" /></a>'; } } else { if ($post['annouced'] == "1") { // Annoucement $output .= ' <a href="forum.php?action=edit_announce&id=' . $post['id'] . '&state=0"><img src="img/forums/unannounce.png" border="0" alt="' . $forum_lang['down'] . '" /></a>'; } else { // Normal Topic $output .= ' <a href="forum.php?action=edit_stick&id=' . $post['id'] . '&state=1"><img src="img/forums/stick.png" border="0" alt="' . $forum_lang['up'] . '" /></a>'; } } if ($post['closed'] == "1") { $output .= ' <a href="forum.php?action=edit_close&id=' . $post['id'] . '&state=0"><img src="img/forums/lock.png" border="0" alt=\\"' . $forum_lang['open'] . '" /></a>'; } else { $output .= ' <a href="forum.php?action=edit_close&id=' . $post['id'] . '&state=1"><img src="img/forums/unlock.png" border="0" alt="' . $forum_lang['close'] . '" /></a>'; } $output .= ' <a href="forum.php?action=move_topic&id=' . $post['id'] . '"><img src="img/forums/move.png" border="0" alt="' . $forum_lang['move'] . '" /></a> <a href="forum.php?action=edit_post&id=' . $post['id'] . '"><img src="img/forums/edit.png" border="0" alt="' . $forum_lang["edit"] . '" /></a> <a href="forum.php?action=delete_post&id=' . $post['id'] . '"><img src="img/forums/delete.png" border="0" alt="' . $forum_lang["delete"] . '" /></a> </th> </tr>'; } $closed = $post['closed']; while ($post = $sqlm->fetch_assoc($posts)) { $post['text'] = htmlspecialchars($post['text']); $post['text'] = bbcode_parse1($post['text']); if (isset($avatars[$post['authorid']])) { $avatar = gen_avatar_panel($avatars[$post['authorid']]['level'], $avatars[$post['authorid']]['sex'], $avatars[$post['authorid']]['race'], $avatars[$post['authorid']]['class'], 1, $avatars[$post['authorid']]['gm']); } else { $avatar = ""; } $output .= ' <tr> <td colspan="3" align="left"> ' . $post['time'] . ' </td> </tr> <tr> <td style="width:15%;text-align:center;"> <center>' . $avatar . '</center>' . $forum_lang['author'] . ' : '; if ($user_lvl > 0) { $output .= ' <a href="user.php?action=edit_user&error=11&id=' . $post['authorid'] . '">'; } if (isset($avatars[$post['authorid']])) { $output .= $avatars[$post['authorid']]['name']; } else { $output .= $post['authorname']; } $output .= ' </a>'; $output .= ' </td> <td colspan="2" style="text-align:left;">' . $post['text'] . '<br />'; $output .= ' </td> </tr>'; if ($user_lvl > 0 || $user_id == $post['authorid']) { $output .= ' <tr> <th colspan="3" align="right"> <a href="forum.php?action=edit_post&id=' . $post['id'] . '"><img src="img/forums/edit.png" border="0" alt="' . $forum_lang['edit'] . '"></a> <a href="forum.php?action=delete_post&id=' . $post['id'] . '"><img src="img/forums/delete.png" border="0" alt="' . $forum_lang['delete'] . '"></a> </th> </tr>'; } } $totalposts = $sqlm->query(' SELECT id FROM mm_forum_posts WHERE topic = ' . $id . ''); $totalposts = $sqlm->num_rows($totalposts); $pages = ceil($totalposts / $maxqueries); $output .= ' <tr> <td align="right" colspan="3">' . $forum_lang['pages'] . ' : '; for ($x = 1; $x <= $pages; $x++) { $y = $x - 1; $output .= ' <a href="forum.php?action=view_topic&id=' . $id . '&page=' . $y . '">' . $x . '</a>'; } $output .= ' </td> </tr> </table> </fieldset> <br />'; $category = $sqlm->query(' SELECT category, name, description, side_access, level_post_topic, level_read, level_post FROM mm_forum_categories'); // Quick reply form if (($user_lvl > 0 || !$closed) && ($category['level_post'] <= $user_lvl && $forum['level_post'] <= $user_lvl)) { $output .= ' <form action="forum.php?action=do_add_post" method="POST" name="form"> <fieldset> <legend> ' . $forum_lang['quick_reply'] . ' </legend> <table class="lined"> <tr> <td align="left" colspan="3">'; bbcode_add_editor(); $output .= ' </td> </tr> <tr> <td colspan="3"> <TEXTAREA ID="msg" NAME="msg" ROWS=8 COLS=93></TEXTAREA><br/> <input type="hidden" name="forum" value="' . $fid . '"> <input type="hidden" name="topic" value="' . $id . '"> </td> </tr> <tr> <td align="left">'; makebutton($forum_lang['post'], "javascript:do_submit()", 100); $output .= ' </td> </tr> </table> </fieldset> </form>'; } $output .= ' </center>'; $sqlm->close(); } else { $output .= ' <div class="top"> <h1>Stand by...</h1> </div>'; // Get post id $post = $sqlm->query(' SELECT topic, id FROM mm_forum_posts WHERE id = ' . $id . ''); if ($sqlm->num_rows($post) == 0) { error($forum_lang['no_such_topic']); } $post = $sqlm->fetch_assoc($post); if ($post['id'] == $post['authorid']) { redirect('forum.php?action=view_topic&id=' . $id . ''); } $topic = $post['id']; // Get posts in topic $posts = $sqlm->query(' SELECT id FROM mm_forum_posts WHERE topic = ' . $topic . ''); $replies = $sqlm->num_rows($posts); if ($replies == 0) { error($forum_lang['no_such_topic']); } $row = 0; // Find the row of our post, so we could have his ratio (topic x/total topics) and knew the page to show while ($post = $sqlm->fetch_row($posts)) { $row++; if ($topic == $id) { break; } } $page = 0; while ($page * $maxqueries < $row) { $page++; } $page--; $sqlm->close(); redirect('forum.php?action=view_topic&id=' . $topic . '&page=' . $page . ''); } // Queries : 2 with id || 2 (+2) with postid }
function forum_view_topic() { global $enablesidecheck, $forum_skeleton, $maxqueries, $user_lvl, $user_id, $output, $realm_db, $characters_db, $realm_id, $corem_db, $logon_db, $corem_db, $sql, $core; if ($enablesidecheck) { $side = get_side(); } // Better to use it here instead of call it many time in the loop :) if (isset($_GET["id"])) { $id = $sql["mgr"]->quote_smart($_GET["id"]); $post = false; } else { if (isset($_GET["postid"])) { $id = $sql["mgr"]->quote_smart($_GET["postid"]); $post = true; } else { error(lang("forum", "no_such_topic")); } } if (!isset($_GET["page"])) { $page = 0; } else { $page = $sql["mgr"]->quote_smart($_GET["page"]); } // Fok you mathafoker haxorz $start = $maxqueries * $page; if (!$post) { $posts = $sql["mgr"]->query("SELECT id, authorid, authorname, forum, name, text, time, announced, sticked, closed FROM forum_posts WHERE topic='" . $id . "' ORDER BY id ASC LIMIT " . $start . ", " . $maxqueries . ";"); // Thx qsa for the query structure if ($core == 1) { $query = "SELECT acct, name, gender, race, class, level,\r\n (SELECT gm FROM `" . $logon_db["name"] . "`.accounts WHERE `" . $logon_db["name"] . "`.accounts.acct=`" . $characters_db[$realm_id]['name'] . "`.characters.acct) AS gmlevel,\r\n (SELECT login FROM `" . $logon_db["name"] . "`.accounts WHERE `" . $logon_db["name"] . "`.accounts.acct=`" . $characters_db[$realm_id]['name'] . "`.characters.acct) AS login\r\n FROM `" . $characters_db[$realm_id]['name'] . "`.characters\r\n WHERE level IN (SELECT MAX(level) FROM `" . $characters_db[$realm_id]['name'] . "`.characters WHERE acct IN ("; } elseif ($core == 2) { $query = "SELECT account AS acct, name, gender, race, class, level,\r\n (SELECT gmlevel FROM `" . $logon_db["name"] . "`.account WHERE `" . $logon_db["name"] . "`.account.id=`" . $characters_db[$realm_id]['name'] . "`.characters.account) AS gmlevel,\r\n (SELECT username FROM `" . $logon_db["name"] . "`.account WHERE `" . $logon_db["name"] . "`.account.id=`" . $characters_db[$realm_id]['name'] . "`.characters.account) AS login\r\n FROM `" . $characters_db[$realm_id]['name'] . "`.characters\r\n WHERE level IN (SELECT MAX(level) FROM `" . $characters_db[$realm_id]['name'] . "`.characters WHERE account IN ("; } elseif ($core == 3) { $query = "SELECT account AS acct, name, gender, race, class, level,\r\n (SELECT gmlevel FROM `" . $logon_db["name"] . "`.account_access WHERE `" . $logon_db["name"] . "`.account_access.id=`" . $characters_db[$realm_id]['name'] . "`.characters.account) AS gmlevel,\r\n (SELECT username FROM `" . $logon_db["name"] . "`.account WHERE `" . $logon_db["name"] . "`.account.id=`" . $characters_db[$realm_id]['name'] . "`.characters.account) AS login\r\n FROM `" . $characters_db[$realm_id]['name'] . "`.characters\r\n WHERE level IN (SELECT MAX(level) FROM `" . $characters_db[$realm_id]['name'] . "`.characters WHERE account IN ("; } while ($post = $sql["mgr"]->fetch_row($posts)) { $query .= $post[1] . ","; } mysql_data_seek($posts, 0); if ($core == 1) { $query .= "0) GROUP BY acct);"; } else { $query .= "0) GROUP BY account);"; } $results = $sql["mgr"]->query($query); while ($avatar = $sql["mgr"]->fetch_row($results)) { // get the post's author's prefered avatar $avatar_query = "SELECT Avatar, SecurityLevel,\r\n SUBSTRING_INDEX(SUBSTRING_INDEX(Avatar, ' ', 1), ' ', -1) AS sex,\r\n SUBSTRING_INDEX(SUBSTRING_INDEX(Avatar, ' ', 2), ' ', -1) AS race,\r\n SUBSTRING_INDEX(SUBSTRING_INDEX(Avatar, ' ', 3), ' ', -1) AS class,\r\n SUBSTRING_INDEX(SUBSTRING_INDEX(Avatar, ' ', 4), ' ', -1) AS level\r\n FROM config_accounts WHERE Login='******'"; $avatar_result = $sql["mgr"]->query($avatar_query); $avatar_fields = $sql["mgr"]->fetch_assoc($avatar_result); if ($avatar_fields["Avatar"] == '') { // if the user doesn't have a prefered avatar we go with the generated one $avatars[$avatar[0]]["name"] = $avatar[7]; $avatars[$avatar[0]]["sex"] = $avatar[2]; $avatars[$avatar[0]]["race"] = $avatar[3]; $avatars[$avatar[0]]["class"] = $avatar[4]; $avatars[$avatar[0]]["level"] = $avatar[5]; $avatars[$avatar[0]]["gm"] = $avatar_fields["SecurityLevel"]; } else { // otherwise we use the prefered one $avatars[$avatar[0]]["name"] = $avatar[7]; $avatars[$avatar[0]]["sex"] = $avatar_fields["sex"]; $avatars[$avatar[0]]["race"] = $avatar_fields["race"]; $avatars[$avatar[0]]["class"] = $avatar_fields["class"]; $avatars[$avatar[0]]["level"] = $avatar_fields["level"]; $avatars[$avatar[0]]["gm"] = $avatar_fields["SecurityLevel"]; } } $replies = $sql["mgr"]->num_rows($posts); if ($replies == 0) { error(lang("forum", "no_such_topic")); } $post = $sql["mgr"]->fetch_row($posts); $fid = $post[3]; $cat = 0; foreach ($forum_skeleton as $cid => $category) { foreach ($category["forums"] as $fid_ => $forum) { if ($fid_ == $fid) { $cat = $cid; } } } if (empty($forum_skeleton[$cat]["forums"][$fid])) { error(lang("forum", "no_such_forum")); } $forum = $forum_skeleton[$cat]["forums"][$fid]; if ($forum_skeleton[$cat]["level_read"] > $user_lvl || $forum["level_read"] > $user_lvl) { error(lang("forum", "no_access")); } if ($user_lvl == 0 && $enablesidecheck) { if ($forum_skeleton[$cat]["side_access"] != "ALL") { // Not an all side forum if ($side == "NO") { // No char continue; } elseif ($forum_skeleton[$cat]["side_access"] != $side) { // Forumside different of the user side continue; } } if ($forum["side_access"] != "ALL") { // Not an all side forum if ($side == "NO") { // No char continue; } elseif ($forum["side_access"] != $side) { // Forumside different of the user side continue; } } } $post[4] = htmlspecialchars($post[4]); // get our user's signature if ($core == 1) { $sig_user_query = "SELECT login FROM `" . $logon_db["name"] . "`.accounts WHERE acct='" . $post[1] . "'"; } else { $sig_user_query = "SELECT username AS login FROM `" . $logon_db["name"] . "`.account WHERE id='" . $post[1] . "'"; } $sig_query = "SELECT Signature FROM config_accounts WHERE Login=(" . $sig_user_query . ")"; $sig_result = $sql["mgr"]->query($sig_query); $sig_fields = $sql["mgr"]->fetch_assoc($sig_result); // append the signature to the post if (!($sig_fields["Signature"] == '' || $sig_fields["Signature"] == NULL)) { $post[5] .= "\n\n" . $sig_fields["Signature"]; } $post[5] = bb2html($post[5]); $output .= ' <div class="top"> <h1>' . lang("forum", "forums") . '</h1>' . lang("forum", "you_are_here") . ': <a href="forum.php">' . lang("forum", "forum_index") . '</a> -> <a href="forum.php?action=view_forum&id=' . $fid . '">' . $forum["name"] . '</a> -> <a href="forum.php?action=view_topic&id=' . $id . '">' . $post[4] . '</a> </div> <table class="lined"> <tr> <td id="forum_topic_header_info">' . lang("forum", "info") . '</td> <td id="forum_topic_header_text">' . lang("forum", "text") . '</td> <td id="forum_topic_header_misc">'; if ($user_lvl > 0) { if ($post[8] == "1") { if ($post[7] == "1") { // Announcement $output .= lang("forum", "announcement") . ' <a href="forum.php?action=edit_announce&id=' . $post[0] . '&state=0"> <img src="img/forums/down.gif" border="0" alt="' . lang("forum", "down") . '" /> </a>'; } else { // Sticky $output .= lang("forum", "sticky") . ' <a href="forum.php?action=edit_stick&id=' . $post[0] . '&state=0"> <img src="img/forums/down.gif" border="0" alt="' . lang("forum", "down") . '" /> </a> <a href="forum.php?action=edit_announce&id=' . $post[0] . '&state=1"> <img src="img/forums/up.gif" border="0" alt="' . lang("forum", "up") . '" /> </a>'; } } else { if ($post[7] == "1") { // Announcement $output .= lang("forum", "announcement") . ' <a href="forum.php?action=edit_announce&id=' . $post[0] . '&state=0"> <img src="img/forums/down.gif" border="0" alt="' . lang("forum", "down") . '" /> </a>'; } else { // Normal Topic $output .= lang("forum", "normal") . ' <a href="forum.php?action=edit_stick&id=' . $post[0] . '&state=1"> <img src="img/forums/up.gif" border="0" alt="' . lang("forum", "up") . '" /> </a>'; } } if ($post[9] == "1") { $output .= ' <a href="forum.php?action=edit_close&id=' . $post[0] . '&state=0"> <img src="img/forums/lock.gif" border="0" alt="' . lang("forum", "open") . '" /> </a>'; } else { $output .= ' <a href="forum.php?action=edit_close&id=' . $post[0] . '&state=1"> <img src="img/forums/unlock.gif" border="0" alt="' . lang("forum", "close") . '" /> </a>'; } $output .= ' <a href="forum.php?action=move_topic&id=' . $post[0] . '"> <img src="img/forums/move.gif" border="0" alt="' . lang("forum", "move") . '" /> </a>'; } if (isset($avatars[$post[1]])) { $avatar = gen_avatar_panel($avatars[$post[1]]["level"], $avatars[$post[1]]["sex"], $avatars[$post[1]]["race"], $avatars[$post[1]]["class"], $avatars[$post[1]]["gm"] ? 0 : 1, $avatars[$post[1]]["gm"]); } else { $avatar = ""; } $output .= ' </td> </tr> <tr> <td id="forum_topic_avatar"> <div>' . $avatar . '</div>' . lang("forum", "author") . ': '; if ($user_lvl > 0) { $output .= ' <a href="user.php?action=edit_user&error=11&acct=' . $post[1] . '">'; } // Use screen name if available // we have to get the actual login name first here if ($core == 1) { $un_query = "SELECT * FROM accounts WHERE acct='" . $post[1]["name"] . "'"; } else { $un_query = "SELECT * FROM account WHERE id='" . $post[1]["name"] . "'"; } $un_results = $sql["logon"]->query($un_query); $un = $sql["logon"]->fetch_assoc($un_results); $sn_query = "SELECT * FROM config_accounts WHERE Login='******'"; $sn_result = $sql["mgr"]->query($sn_query); if ($sql["mgr"]->num_rows($sn_result)) { $sn = $sql["mgr"]->fetch_assoc($sn_result); $post[1]["name"] = $sn["ScreenName"]; $post[2] = $sn["ScreenName"]; } if (isset($avatars[$post[1]])) { $output .= $avatars[$post[1]]["name"]; } else { $output .= $post[2]; } if ($user_lvl > 0) { $output .= ' </a>'; } $output .= ' <br /> ' . lang("forum", "at") . ': ' . $post[6] . ' </td> <td colspan="2" id="forum_topic_text">' . $post[5] . ' <br /> <div id="forum_topic_controls">'; if ($user_lvl > 0 || $user_id == $post[1]) { $output .= ' <a href="forum.php?action=edit_post&id=' . $post[0] . '"> <img src="img/forums/edit.gif" border="0" alt="' . lang("forum", "edit") . '" /> </a> <a href="forum.php?action=delete_post&id=' . $post[0] . '"> <img src="img/forums/delete.gif" border="0" alt="' . lang("forum", "delete") . '" /> </a>'; } $output .= ' </div> </td> </tr>'; $closed = $post[9]; while ($post = $sql["mgr"]->fetch_row($posts)) { // get our user's signature if ($core == 1) { $sig_user_query = "SELECT login FROM `" . $logon_db["name"] . "`.accounts WHERE acct='" . $post[1] . "'"; } else { $sig_user_query = "SELECT username AS login FROM `" . $logon_db["name"] . "`.account WHERE id='" . $post[1] . "'"; } $sig_query = "SELECT Signature FROM config_accounts WHERE Login=(" . $sig_user_query . ")"; $sig_result = $sql["mgr"]->query($sig_query); $sig_fields = $sql["mgr"]->fetch_assoc($sig_result); // append the signature to the post if (!($sig_fields["Signature"] == '' || $sig_fields["Signature"] == NULL)) { $post[5] .= "\n\n" . $sig_fields["Signature"]; } $post[5] = bb2html($post[5]); if (isset($avatars[$post[1]])) { $avatar = gen_avatar_panel($avatars[$post[1]]["level"], $avatars[$post[1]]["sex"], $avatars[$post[1]]["race"], $avatars[$post[1]]["class"], $avatars[$post[1]]["gm"] ? 0 : 1, $avatars[$post[1]]["gm"]); } else { $avatar = ""; } $output .= ' <tr> <td id="forum_topic_reply_avatar"> <div class="center">' . $avatar . '</div>' . lang("forum", "author") . ': '; if ($user_lvl > 0) { $output .= ' <a href="user.php?action=edit_user&error=11&acct=' . $post[1] . '">'; } // Use screen name if available // we have to get the actual login name first here if ($core == 1) { $un_query = "SELECT * FROM accounts WHERE acct='" . $post[1]["name"] . "'"; } else { $un_query = "SELECT * FROM account WHERE id='" . $post[1]["name"] . "'"; } $un_results = $sql["logon"]->query($un_query); $un = $sql["logon"]->fetch_assoc($un_results); $sn_query = "SELECT * FROM config_accounts WHERE Login='******'"; $sn_result = $sql["mgr"]->query($sn_query); if ($sql["mgr"]->num_rows($sn_result)) { $sn = $sql["mgr"]->fetch_assoc($sn_result); $post[1]["name"] = $sn["ScreenName"]; $post[2] = $sn["ScreenName"]; } if (isset($avatars[$post[1]])) { $output .= $avatars[$post[1]]["name"]; } else { $output .= $post[2]; } if ($user_lvl > 0) { $output .= ' </a>'; } $output .= ' <br /> ' . lang("forum", "at") . ': ' . $post[6] . ' </td> <td colspan="2" id="forum_topic_reply_text">' . $post[5] . ' <br />'; if ($user_lvl > 0 || $user_id == $post[1]) { $output .= ' <div id="forum_topic_reply_controls"> <a href="forum.php?action=edit_post&id=' . $post[0] . '"> <img src="img/forums/edit.gif" border="0" alt="' . lang("forum", "edit") . '" /> </a> <a href="forum.php?action=delete_post&id=' . $post[0] . '"> <img src="img/forums/delete.gif" border="0" alt="' . lang("forum", "delete") . '" /> </a> </div>'; } $output .= ' </td> </tr>'; } $totalposts = $sql["mgr"]->query("SELECT id FROM forum_posts WHERE topic='" . $id . "';"); $totalposts = $sql["mgr"]->num_rows($totalposts); $pages = ceil($totalposts / $maxqueries); $output .= ' <tr> <td align="right" colspan="3">' . lang("forum", "pages") . ': '; for ($x = 1; $x <= $pages; $x++) { $y = $x - 1; $output .= ' <a href="forum.php?action=view_topic&id=' . $id . '&page=' . $y . '">' . $x . '</a> '; } $output .= ' </td> </tr> <tr> <td align="right" class="hidden"></td> </tr> </table>'; // Quick reply form if (($user_lvl > 0 || !$closed) && ($forum_skeleton[$cat]["level_post"] <= $user_lvl && $forum["level_post"] <= $user_lvl)) { $output .= ' <form action="forum.php?action=do_add_post" method="POST" id="form"> <table class="top_hidden"> <tr> <td> <center>' . lang("forum", "quick_reply") . '</center> </td> </tr> <tr> <td colspan="2">'; bbcode_add_editor(); $output .= ' <textarea id="msg" name="msg" rows=8 cols=93></textarea> </td> </tr> <tr> <td align="left">'; makebutton(lang("forum", "post"), "javascript:do_submit()", 100); $output .= ' </td> </tr> </table> <br/> <input type="hidden" name="forum" value="' . $fid . '" /> <input type="hidden" name="topic" value="' . $id . '" /> </form>'; } } else { $output .= ' <div class="top"> <h1>Stand by...</h1> </div>'; $post = $sql["mgr"]->query("SELECT topic, id FROM forum_posts WHERE id='" . $id . "'"); // Get our post id if ($sql["mgr"]->num_rows($post) == 0) { error(lang("forum", "no_such_topic")); } $post = $sql["mgr"]->fetch_row($post); if ($post[0] == $post[1]) { redirect("forum.php?action=view_topic&id=" . $id); } $topic = $post[0]; $posts = $sql["mgr"]->query("SELECT id FROM forum_posts WHERE topic='" . $topic . "';"); // Get posts in our topic $replies = $sql["mgr"]->num_rows($posts); if ($replies == 0) { error(lang("forum", "no_such_topic")); } $row = 0; while ($post = $sql["mgr"]->fetch_row($posts)) { // Find the row of our post, so we could have his ratio (topic x/total topics) and knew the page to show $row++; if ($topic == $id) { break; } } $page = 0; while ($page * $maxqueries < $row) { $page++; } $page--; redirect("forum.php?action=view_topic&id=" . $topic . "&page=" . $page); } // Queries: 2 with id || 2 (+2) with postid }