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">&nbsp;</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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\'---></td>
                      <td>
                        <a href="char.php?id=' . $char["guid"] . '&amp;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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\'---></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 . '&nbsp;' . 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) . '&nbsp;' . 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"' : '') . ' />&nbsp;' . 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>&nbsp;</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&amp;bag_id=' . $bag["entry"] . '">
                      <img src="' . get_item_icon(1725) . '" alt="" />
                    </a>
                  </td>
                  <td align="left">
                    <span>&nbsp;' . $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"));
    }
}
Exemplo n.º 2
0
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&amp;id={$fid}\">{$forum["name"]}</a> -> <a href=\"forum.php?action=view_topic&amp;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&amp;id={$post[0]}&amp;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&amp;id={$post[0]}&amp;state=0\"><img src=\"img/forums/down.gif\" border=\"0\" alt=\"{$forum_lang["down"]}\" /></a>\r\n                  <a href=\"forum.php?action=edit_announce&amp;id={$post[0]}&amp;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&amp;id={$post[0]}&amp;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&amp;id={$post[0]}&amp;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&amp;id={$post[0]}&amp;state=0\"><img src=\"img/forums/lock.gif\" border=\"0\" alt=\"{$forum_lang["open"]}\" /></a>";
            } else {
                $output .= " <a href=\"forum.php?action=edit_close&amp;id={$post[0]}&amp;state=1\"><img src=\"img/forums/unlock.gif\" border=\"0\" alt=\"{$forum_lang["close"]}\" /></a>";
            }
            $output .= " <a href=\"forum.php?action=move_topic&amp;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&amp;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&amp;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&amp;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&amp;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&amp;id={$id}&amp;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
}
Exemplo n.º 3
0
function edit_user()
{
    global $output, $logon_db, $characters_db, $realm_id, $corem_db, $corem_db, $realm_id, $user_lvl, $user_name, $gm_level_arr, $action_permission, $expansion_select, $developer_test_mode, $multi_realm_mode, $server, $timezone_offset, $recruit_reward_auto, $sql, $core;
    if (empty($_GET["acct"])) {
        redirect("user.php?error=10");
    }
    $acct = $sql["logon"]->quote_smart($_GET["acct"]);
    if ($core == 1) {
        $a_query = "SELECT acct, login, gm, email, lastip, muted, UNIX_TIMESTAMP(lastlogin) AS lastlogin, flags\r\n      FROM accounts\r\n      WHERE acct='" . $acct . "'";
    } elseif ($core == 2) {
        $a_query = "SELECT account.id AS acct, username AS login, gmlevel AS gm, email, last_ip AS lastip, locked AS muted, UNIX_TIMESTAMP(last_login) AS lastlogin, expansion AS flags\r\n      FROM account\r\n      WHERE account.id='" . $acct . "'";
    } else {
        $a_query = "SELECT account.id AS acct, username AS login, IFNULL(account_access.gmlevel, 0) AS gm, email, last_ip AS lastip, locked AS muted, UNIX_TIMESTAMP(last_login) AS lastlogin, expansion AS flags\r\n      FROM account\r\n        LEFT JOIN account_access ON account.id=account_access.id\r\n      WHERE account.id='" . $acct . "'";
    }
    $result = $sql["logon"]->query($a_query);
    $data = $sql["logon"]->fetch_assoc($result);
    $o_temp = 0;
    foreach ($characters_db as $db) {
        $sqlt = new SQL();
        $sqlt->connect($db["addr"], $db["user"], $db["pass"], $db["name"], $db["encoding"]);
        if ($core == 1) {
            $online_res = $sqlt->query("SELECT SUM(online) FROM characters WHERE acct='" . $data["acct"] . "'");
        } else {
            $online_res = $sqlt->query("SELECT SUM(online) FROM characters WHERE account='" . $data["acct"] . "'");
        }
        $online_fields = $sqlt->fetch_assoc($online_res);
        $o_temp += $online_fields["SUM(online)"];
    }
    if ($o_temp != 0) {
        $acct_online = 1;
    } else {
        $acct_online = 0;
    }
    $query = "SELECT *,\r\n        SUBSTRING_INDEX(SUBSTRING_INDEX(Avatar, ' ', 1), ' ', -1) AS avatarsex,\r\n        SUBSTRING_INDEX(SUBSTRING_INDEX(Avatar, ' ', 2), ' ', -1) AS avatarrace,\r\n        SUBSTRING_INDEX(SUBSTRING_INDEX(Avatar, ' ', 3), ' ', -1) AS avatarclass,\r\n        SUBSTRING_INDEX(SUBSTRING_INDEX(Avatar, ' ', 4), ' ', -1) AS avatarlevel\r\n        FROM config_accounts WHERE Login='******'";
    $sn_result = $sql["mgr"]->query($query);
    $screenname = $sql["mgr"]->fetch_assoc($sn_result);
    if ($screenname["SecurityLevel"] == NULL) {
        $screenname["SecurityLevel"] = 0;
    }
    $refguid = $sql["mgr"]->fetch_assoc($sql["mgr"]->query("SELECT InvitedBy FROM point_system_invites WHERE PlayersAccount='" . $data["acct"] . "'"));
    $refguid = $refguid["InvitedBy"];
    $referred_by = $sql["char"]->fetch_assoc($sql["char"]->query("SELECT name FROM characters WHERE guid='" . $refguid . "'"));
    unset($refguid);
    $referred_by = $referred_by["name"];
    $time_offset = $timezone_offset * 3600;
    if ($data["lastlogin"] != 0) {
        $lastlog = date("F j, Y @ Hi", $data["lastlogin"] + $time_offset);
    } else {
        $lastlog = '-';
    }
    // only display an Avatar if the player has specified one or if they're a GM.
    if ($screenname["Avatar"] != '' || $screenname["SecurityLevel"]) {
        $avatar = gen_avatar_panel($screenname["avatarlevel"], $screenname["avatarsex"], $screenname["avatarrace"], $screenname["avatarclass"], 0, $screenname["SecurityLevel"], 1);
    } else {
        $avatar = '';
    }
    $info = $screenname["Info"];
    if ($info == '' || $info == NULL) {
        $info = '...';
    }
    // ArcEmu: find out if we're using an encrypted password for this account
    if ($core == 1) {
        $pass_query = "SELECT * FROM accounts WHERE login='******' AND encrypted_password<>''";
        $pass_result = $sql["logon"]->query($pass_query);
        $arc_encrypted = $sql["logon"]->num_rows($pass_result);
    }
    if ($sql["logon"]->num_rows($result)) {
        $output .= '
        <center>
          <script type="text/javascript" src="libs/js/sha1.js"></script>
          <script type="text/javascript">
            // <![CDATA[
              function do_submit_data ()
              {
                var myForm = document.getElementById("form");';
        if ($core == 1) {
            if ($arc_encrypted) {
                $output .= '
                if ( myForm.new_pass.value != "******" )
                  myForm.pass.value = hex_sha1(myForm.login.value.toUpperCase() + ":" + myFormnew_pass.value.toUpperCase());
                else
                  myForm.pass.value = "******";';
            } else {
                $output .= '
                myForm.pass.value = myForm.new_pass.value;';
            }
        } else {
            $output .= '
                if ( myForm.new_pass.value != "******" )
                  myForm.pass.value = hex_sha1(myForm.login.value.toUpperCase() + ":" + myForm.new_pass.value.toUpperCase());
                else
                  myForm.pass.value = "******";';
        }
        $output .= '
                myForm.new_pass.value = "******";
                do_submit();
              }
            // ]]>
          </script>
          <div class="user_edit_account fieldset_border">
            <span class="legend">' . lang("edit", "profile_info") . '</span>
            <table class="flat user_edit_account">';
        if ($avatar != '') {
            $output .= '
              <tr>
                <td id="forum_topic_header_info">
                  <center>' . $avatar . '</center>
                </td>
                <td>&nbsp;</td>
              </tr>
              <tr>
                <td colspan="2">
                  <hr />
                </td>
              </tr>';
        }
        $output .= '
              <tr>
                <td colspan="2">' . $info . '</td>
              </tr>
            </table>
          </div>
          <br />
          <div class="user_edit_account fieldset_border">
            <span class="legend">' . lang("user", "edit_acc") . '</span>
            <form method="post" action="user.php?action=doedit_user" id="form">
            <input type="hidden" name="pass" value="" maxlength="256" />
            <input type="hidden" name="acct" value="' . $acct . '" />
            <input type="hidden" name="oldscreenname" value="' . $screenname["ScreenName"] . '" />
            <input type="hidden" name="oldlogin" value="' . $data["login"] . '" />
            <input type="hidden" name="webadmin" value="' . ($screenname["SecurityLevel"] & 1073741824) . '" />
            <table class="flat">
              <tr>
                <td>' . lang("user", "acct") . ':</td>
                <td colspan="2">' . $data["acct"] . '</td>
              </tr>
              <tr>
                <td>' . lang("user", "login") . ':</td>';
        if ($user_lvl >= $action_permission["update"]) {
            $output .= '
                <td colspan="2"><input type="text" name="login" size="42" maxlength="15" value="' . $data["login"] . '" /></td>';
        } else {
            if ($screenname["ScreenName"]) {
                $output .= '
                <td colspan="2">********</td>';
            } else {
                $output .= '
                <td colspan="2">' . $data["login"] . '</td>';
            }
        }
        $output .= '
              </tr>
              <tr>
                <td>' . lang("user", "screenname") . ':</td>';
        if ($user_lvl >= $action_permission["update"]) {
            $output .= '
                <td colspan="2"><input type="text" name="screenname" size="42" maxlength="15" value="' . $screenname["ScreenName"] . '" /></td>';
        } else {
            $output .= '
                <td colspan="2">' . $screenname["ScreenName"] . '</td>';
        }
        $output .= '
              </tr>
              <tr>
                <td>' . lang("user", "password") . ':</td>';
        if ($user_lvl >= $action_permission["update"]) {
            $output .= '
                <td colspan="2"><input type="text" name="new_pass" size="42" maxlength="40" value="******" /></td>';
        } else {
            $output .= '
                <td colspan="2">********</td>';
        }
        $output .= '
              </tr>
              <tr>
                <td>' . lang("user", "email") . ':</td>';
        if ($user_lvl >= $action_permission["update"]) {
            if ($screenname["TempEmail"]) {
                $output .= '
                <td colspan="2">
                  <a href="user.php?action=cancel_email_change&username='******'&acct=' . $data["acct"] . '" >
                    <img src="img/aff_warn.gif" onmousemove="oldtoolTip(\'' . lang("edit", "email_changed") . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" />
                  </a>
                  <input type="text" name="mail" size="39" maxlength="225" value="' . $data["email"] . '" />
                </td>';
            } else {
                $output .= '
                <td colspan="2"><input type="text" name="mail" size="42" maxlength="225" value="' . $data["email"] . '" /></td>';
            }
        } else {
            $output .= '
                <td colspan="2">***@***.***</td>';
        }
        $output .= '
              </tr>
              <tr>
                <td>' . lang("user", "invited_by") . ':</td>
                <td colspan="2">';
        if ($user_lvl >= $action_permission["update"] && !$referred_by != NULL) {
            $output .= '
                  <input type="text" name="referredby" size="20" maxlength="12" value="' . $referred_by . '" /> (' . lang("user", "charname") . ')';
        } else {
            $output .= $referred_by;
        }
        $output .= '
                </td>
              </tr>
              <tr>
                <td>' . lang("user", "gm_level_long") . ':</td>';
        if ($user_lvl >= $action_permission["update"]) {
            $output .= '
                <td colspan="2">
                  <input type="text" name="gm" value="' . $data["gm"] . '" />
                </td>';
        } else {
            $output .= '
                <td colspan="2">' . $data["gm"] . '</td>';
        }
        $output .= '
              </tr>
              <tr>
                <td>' . lang("user", "sec_level_long") . ':</td>';
        $sec_lvl_only = $screenname["SecurityLevel"];
        if ($sec_lvl_only >= 1073741824) {
            $sec_lvl_only -= 1073741824;
        }
        if ($user_lvl >= $action_permission["update"]) {
            $output .= '
                <td colspan="2">
                  <!-- input type="text" name="seclvl" value="' . $screenname["SecurityLevel"] . '" -->
                  <select name="seclvl">';
            $s_query = "SELECT * FROM config_gm_level_names";
            $s_result = $sql["mgr"]->query($s_query);
            while ($level = $sql["mgr"]->fetch_assoc($s_result)) {
                if ($level["Security_Level"] > -1 && $level["Security_Level"] <= $user_lvl) {
                    $output .= '
                    <option value="' . $level["Security_Level"] . '"';
                    if (gmlevel($sec_lvl_only) == $level["Security_Level"]) {
                        $output .= ' selected="selected"';
                    }
                    $output .= '>' . $level["Full_Name"] . '</option>';
                }
            }
            $output .= '
                  </select>
                </td>';
        } else {
            $output .= '
                <td colspan="2">' . id_get_gm_level($screenname["SecurityLevel"]) . '</td>';
        }
        $output .= '
              </tr>
              <tr>
                <td>' . lang("user", "last_ip") . ':</td>';
        if ($user_lvl >= $action_permission["update"]) {
            $output .= '
                <td colspan="2">' . $data["lastip"] . '<a href="banned.php?action=do_add_entry&amp;entry=' . $data["lastip"] . '&amp;bantime=3600&amp;ban_type=ipbans"> &lt;- ' . lang("user", "ban_this_ip") . '</a></td>';
        } else {
            $output .= '
                <td colspan="2">***.***.***.***</td>';
        }
        $output .= '
              </tr>
              <tr>
                <td>' . lang("user", "banned") . ':</td>';
        if ($core == 1) {
            $que = $sql["logon"]->query("SELECT banned, banreason FROM accounts WHERE banned<>0 AND acct=" . $acct);
        } else {
            $que = $sql["logon"]->query("SELECT bandate, unbandate, bannedby, banreason FROM account_banned WHERE active=1 AND id=" . $acct);
        }
        if ($sql["logon"]->num_rows($que)) {
            $banned = $sql["logon"]->fetch_row($que);
            if ($core == 1) {
                $ban_info = ' ' . lang("user", "ban_until") . ': ' . date("d-m-Y G:i", $banned[0]);
            } else {
                $ban_info = ' ' . lang("user", "ban_from") . ': ' . date("d-m-Y G:i", $banned[0]) . ', ' . lang("user", "ban_until") . ': ' . date("d-m-Y G:i", $banned[1]) . ',<br />' . lang("user", "ban_by") . ': ' . $banned[2];
            }
            $ban_checked = ' checked="checked"';
        } else {
            $ban_checked = "";
            $ban_info = "";
            $banned[3] = "";
        }
        if ($user_lvl >= $action_permission["update"]) {
            $output .= '
                <td colspan="2"><input type="checkbox" name="banned" value="1" ' . $ban_checked . ' />' . $ban_info . '</td>';
        } else {
            $output .= '
                <td colspan="2">' . $ban_info . '</td>';
        }
        $output .= '
              </tr>
              <tr>
                <td>' . lang("user", "banned_reason") . ':</td>';
        if ($user_lvl >= $action_permission["update"]) {
            $output .= '
                <td colspan="2"><input type="text" name="banreason" size="42" maxlength="255" value="' . $banned[3] . '" /></td>';
        } else {
            $output .= '
                <td colspan="2">' . $banned[3] . '</td>';
        }
        if ($expansion_select) {
            $output .= '
              </tr>
              <tr>';
            if ($user_lvl >= $action_permission["update"]) {
                $output .= '
                <td>' . lang("user", "client_type") . ':</td>';
                $output .= '
                <td colspan="2">
                  <select name="expansion">';
                if ($core == 1) {
                    $output .= '
                    <option value="0" ' . ($data["flags"] == 0 ? 'selected="selected" ' : '') . '>' . lang("user", "classic") . '</option>
                    <option value="8" ' . ($data["flags"] == 8 ? 'selected="selected" ' : '') . '>' . lang("user", "tbc") . '</option>
                    <option value="16" ' . ($data["flags"] == 16 ? 'selected="selected" ' : '') . '>' . lang("user", "wotlk") . '</option>
                    <option value="24" ' . ($data["flags"] == 24 ? 'selected="selected" ' : '') . '>' . lang("user", "wotlktbc") . '</option>';
                } else {
                    $output .= '
                    <option value="0" ' . ($data["flags"] == 0 ? 'selected="selected" ' : '') . '>' . lang("user", "classic") . '</option>
                    <option value="1" ' . ($data["flags"] == 1 ? 'selected="selected" ' : '') . '>' . lang("user", "tbc") . '</option>
                    <option value="2" ' . ($data["flags"] == 2 ? 'selected="selected" ' : '') . '>' . lang("user", "wotlktbc") . '</option>';
                }
                $output .= '
                  </select>
                </td>';
            } else {
                $output .= '
                <td>' . lang("user", "client_type") . ':</td>';
                if ($core == 1) {
                    switch ($data["flags"]) {
                        case 0:
                            $output .= '
                <td colspan="2">' . lang("user", "classic") . '</td>';
                            break;
                        case 8:
                            $output .= '
                <td colspan="2">' . lang("user", "tbc") . '</td>';
                            break;
                        case 16:
                            $output .= '
                <td colspan="2">' . lang("user", "wotlk") . '</td>';
                            break;
                        case 24:
                            $output .= '
                <td colspan="2">' . lang("user", "wotlktbc") . '</td>';
                            break;
                    }
                } else {
                    switch ($data["flags"]) {
                        case 0:
                            $output .= '
                <td colspan="2">' . lang("user", "classic") . '</td>';
                            break;
                        case 1:
                            $output .= '
                <td colspan="2">' . lang("user", "tbc") . '</td>';
                            break;
                        case 2:
                            $output .= '
                <td colspan="2">' . lang("user", "wotlktbc") . '</td>';
                            break;
                    }
                }
            }
        }
        $output .= '
              </tr>
              <tr>
                <td>' . lang("user", "locked") . ':</td>';
        if ($user_lvl >= $action_permission["update"]) {
            $output .= '
                <td colspan="2">
                  <input type="checkbox" name="locked" value="1" ' . ($data["muted"] ? ' checked="checked"' : '') . ' />
                </td>';
        } else {
            $output .= '
                <td colspan="2"></td>';
        }
        $output .= '
              </tr>
              <tr>
                <td>' . lang("user", "last_login") . ':</td>
                <td colspan="2">' . $lastlog . '</td>
              </tr>
              <tr>
                <td>' . lang("user", "online") . ':</td>
                <td colspan="2"><img src="img/' . ($acct_online ? 'up' : 'down') . '.gif" alt="" /></td>
              </tr>';
        if ($user_lvl >= $action_permission["update"]) {
            $output .= '
              <tr>
                <td>' . lang("user", "credits") . ':</td>
                <td colspan="2">
                  <input type="text" name="credits" value="' . (double) $screenname["Credits"] . '" />
                  <img src="img/information.png" onmousemove="oldtoolTip(\'' . lang("user", "credits_info") . '\', \'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" />
                </td>
              </tr>';
        }
        //$realms = $sql["mgr"]->query('SELECT id, name FROM realmlist');
        //while ( $realm = $sql["mgr"]->fetch_assoc($realms) )
        foreach ($characters_db as $db) {
            $sqlt = new SQL();
            $sqlt->connect($db["addr"], $db["user"], $db["pass"], $db["name"], $db["encoding"]);
            if ($core == 1) {
                $query = "SELECT COUNT(*) FROM characters WHERE acct='" . $acct . "'";
            } else {
                $query = "SELECT COUNT(*) FROM characters WHERE account='" . $acct . "'";
            }
            $result = $sqlt->query($query);
            $fields = $sqlt->fetch_assoc($result);
            $tot_chars += $fields["COUNT(*)"];
        }
        if ($core == 1) {
            $query = $sql["char"]->query("SELECT COUNT(*) FROM `characters` WHERE acct=" . $acct);
        } else {
            $query = $sql["char"]->query("SELECT COUNT(*) FROM `characters` WHERE account=" . $acct);
        }
        $chars_on_realm = $sql["char"]->result($query, 0);
        $output .= '
              <tr>
                <td>' . lang("user", "tot_chars") . ':</td>
                <td colspan="2">' . $tot_chars . '</td>
              </tr>';
        $realms = $sql["mgr"]->query("SELECT `Index` AS id, Name AS name FROM config_servers");
        if ($sql["mgr"]->num_rows($realms) > 1 && count($server) > 1 && count($characters_db) > 1) {
            require_once "libs/get_lib.php";
            while ($realm = $sql["mgr"]->fetch_array($realms)) {
                $sql["char"]->connect($characters_db[$realm[0]]['addr'], $characters_db[$realm[0]]['user'], $characters_db[$realm[0]]['pass'], $characters_db[$realm[0]]['name'], $characters_db[$realm[0]]['encoding']);
                if ($core == 1) {
                    $query = $sql["char"]->query("SELECT COUNT(*) FROM `characters` WHERE acct=" . $acct);
                } else {
                    $query = $sql["char"]->query("SELECT COUNT(*) FROM `characters` WHERE account=" . $acct);
                }
                $chars_on_realm = $sql["char"]->result($query, 0);
                $output .= '
              <tr>
                <td colspan="3">&nbsp;</td>
              </tr>
              <tr>
                <td colspan="3">' . lang("index", "realm") . ': ' . get_realm_name($realm[0]) . '</td>
              </tr>
              <tr>
                <td>' . lang("user", "chars_on_realm") . ':</td>
                <td colspan="2">' . $chars_on_realm . '</td>
              </tr>';
                if ($chars_on_realm) {
                    if ($core == 1) {
                        $char_array = $sql["char"]->query("SELECT guid, name, race, class, level, gender, timestamp\r\n              FROM `characters` WHERE acct=" . $acct);
                    } else {
                        $char_array = $sql["char"]->query("SELECT guid, name, race, class, level, gender, logout_time AS timestamp\r\n              FROM `characters` WHERE account=" . $acct);
                    }
                    // calculate timezone offset
                    $time_offset = $timezone_offset * 3600;
                    while ($char = $sql["char"]->fetch_array($char_array)) {
                        if ($char["timestamp"] != 0) {
                            $lastseen = date("F j, Y @ Hi", $char["timestamp"] + $time_offset);
                        } else {
                            $lastseen = '-';
                        }
                        $output .= '
              <tr>
                <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\'---></td>
                <td>
                      <a href="char.php?id=' . $char[0] . '&amp;realm=' . $realm[0] . '">' . $char[1] . '</a> - <img src="img/c_icons/' . $char[2] . '-' . $char[5] . '.gif" onmousemove="oldtoolTip(\'' . char_get_race_name($char[2]) . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" />
                      <img src="img/c_icons/' . $char[3] . '.gif" onmousemove="oldtoolTip(\'' . char_get_class_name($char[3]) . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt=""/> - ' . lang("char", "level_short") . char_get_level_color($char[4]) . '
                </td>
                <td>' . $lastseen . '</td>
              </tr>';
                    }
                }
            }
        } else {
            if ($core == 1) {
                $query = $sql["char"]->query("SELECT COUNT(*) FROM `characters` WHERE acct=" . $acct);
            } else {
                $query = $sql["char"]->query("SELECT COUNT(*) FROM `characters` WHERE account=" . $acct);
            }
            $chars_on_realm = $sql["char"]->result($query, 0);
            $output .= '
              <!-- tr>
                <td>' . lang("user", "chars_on_realm") . ':</td>
                <td colspan="2">' . $chars_on_realm . '</td>
              </tr -->';
            if ($chars_on_realm) {
                if ($core == 1) {
                    $char_array = $sql["char"]->query("SELECT guid, name, race, class, level, gender, timestamp\r\n          FROM `characters` WHERE acct=" . $acct);
                } else {
                    $char_array = $sql["char"]->query("SELECT guid, name, race, class, level, gender, logout_time AS timestamp\r\n          FROM `characters` WHERE account=" . $acct);
                }
                // calculate timezone offset
                $time_offset = $timezone_offset * 3600;
                while ($char = $sql["char"]->fetch_array($char_array)) {
                    if ($char["timestamp"] != 0) {
                        $lastseen = date("F j, Y @ Hi", $char["timestamp"] + $time_offset);
                    } else {
                        $lastseen = '-';
                    }
                    $output .= '
              <tr>
                <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\'---></td>
                <td>
                  <a href="char.php?id=' . $char[0] . '">' . $char[1] . '</a> - <img src="img/c_icons/' . $char[2] . '-' . $char[5] . '.gif" onmousemove="oldtoolTip(\'' . char_get_race_name($char[2]) . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt="" />
                  <img src="img/c_icons/' . $char[3] . '.gif" onmousemove="oldtoolTip(\'' . char_get_class_name($char[3]) . '\',\'old_item_tooltip\')" onmouseout="oldtoolTip()" alt=""/> - ' . lang("char", "level_short") . char_get_level_color($char[4]) . '
                </td>
                <td>' . $lastseen . '</td>
              </tr>';
                }
            }
        }
        $output .= '
              <tr>
                <td>';
        if ($user_lvl >= $action_permission["delete"]) {
            makebutton(lang("user", "del_acc"), "user.php?action=del_user&amp;check%5B%5D=" . $acct . "\" type=\"wrn", 130);
        }
        $output .= '
                </td>
                <td>';
        if ($user_lvl >= $action_permission["update"]) {
            makebutton(lang("user", "update_data"), "javascript:do_submit_data()", 130);
        }
        $output .= '
                </td>
                <td>';
        makebutton(lang("global", "back"), "javascript:window.history.back()\" type=\"def", 130);
        $output .= '
                </td>
                </tr>
              </table>
            </form>
          </div>
          <br />';
        $query = "SELECT * FROM point_system_invites WHERE InviterAccount='" . $acct . "'";
        $result = $sql["mgr"]->query($query);
        if ($sql["mgr"]->num_rows($result) > 0) {
            $output .= '
          <div id="user_recruits" class="fieldset_border">
            <span class="legend">' . lang("user", "recruits") . '</span>
            <table class="lined" style="width: 95%">
              <tr>
                <th>' . lang("user", "login") . '</th>
                <th>' . lang("user", "last_ip") . '</th>
                <th>' . lang("user", "reward") . '</th>
              </tr>';
            while ($row = $sql["mgr"]->fetch_assoc($result)) {
                if ($core == 1) {
                    $recruit_query = "SELECT *, acct AS id, login AS username, lastip AS last_ip FROM accounts WHERE acct='" . $row["PlayersAccount"] . "'";
                } else {
                    $recruit_query = "SELECT * FROM account WHERE id='" . $row["PlayersAccount"] . "'";
                }
                $recruit_result = $sql["logon"]->query($recruit_query);
                $recruit = $sql["logon"]->fetch_assoc($recruit_result);
                if ($recruit != NULL) {
                    $output .= '
                <tr>
                  <td><a href="user.php?action=edit_user&amp;acct=' . $recruit["id"] . '">' . $recruit["username"] . '</a></td>
                  <td>' . $recruit["last_ip"] . '</td>
                  <td>';
                    if ($row["Rewarded"] == 0) {
                        // if the recruitment hasn't been rewarded
                        if ($user_lvl >= $action_permission["update"]) {
                            if ($screenname["Credits"] >= 0) {
                                // if the recruiter can gain Credits
                                $output .= '
                        <a href="user.php?action=reward&amp;acct=' . $recruit["id"] . '&amp;recruiter=' . $acct . '">
                          <img src="img/aff_tick.png" alt="" />
                        </a>';
                            } else {
                                // if the recruiter cannot gain Credits (Unlimited)
                                $output .= '
                        <a href="" onmouseover="oldtoolTip(\'' . lang("user", "no_reward") . '\', \'info_tooltip\')" onmouseout="oldtoolTip()">
                          <img src="img/lock.png" alt="" />
                        </a>';
                            }
                        } else {
                            // if the user viewing the recruiter does not have permissions
                            $output .= '
                      <a href="" onmouseover="oldtoolTip(\'' . lang("user", "you_have_no_permission") . '\', \'info_tooltip\')" onmouseout="oldtoolTip()">
                        <img src="img/lock.png" alt="" />
                      </a>';
                        }
                    } else {
                        $output .= '
                  <span>' . lang("user", "rewarded") . '</span>';
                    }
                    $output .= '
                  </td>
                </tr>';
                }
            }
            $output .= '
            </table>
          </div>';
        }
        $output .= '
          <br />
        </center>';
    } else {
        error(lang("global", "err_no_user"));
    }
}
Exemplo n.º 4
0
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&amp;id=' . $forum['forum'] . '">' . $forum['name'] . '</a> -> 
		<a href="forum.php?action=view_topic&amp;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&amp;id=' . $post['id'] . '&amp;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&amp;id=' . $post['id'] . '&amp;state=0"><img src="img/forums/unstick.png" border="0" alt="' . $forum_lang['down'] . '" /></a>
			<a href="forum.php?action=edit_announce&amp;id=' . $post['id'] . '&amp;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&amp;id=' . $post['id'] . '&amp;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&amp;id=' . $post['id'] . '&amp;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&amp;id=' . $post['id'] . '&amp;state=0"><img src="img/forums/lock.png" border="0" alt=\\"' . $forum_lang['open'] . '" /></a>';
            } else {
                $output .= '
			<a href="forum.php?action=edit_close&amp;id=' . $post['id'] . '&amp;state=1"><img src="img/forums/unlock.png" border="0" alt="' . $forum_lang['close'] . '" /></a>';
            }
            $output .= '
			<a href="forum.php?action=move_topic&amp;id=' . $post['id'] . '"><img src="img/forums/move.png" border="0" alt="' . $forum_lang['move'] . '" /></a>
			<a href="forum.php?action=edit_post&amp;id=' . $post['id'] . '"><img src="img/forums/edit.png" border="0" alt="' . $forum_lang["edit"] . '" /></a>
			<a href="forum.php?action=delete_post&amp;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&amp;id=' . $post['id'] . '"><img src="img/forums/edit.png" border="0" alt="' . $forum_lang['edit'] . '"></a>
						<a href="forum.php?action=delete_post&amp;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&amp;id=' . $id . '&amp;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
}
Exemplo n.º 5
0
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&amp;id=' . $fid . '">' . $forum["name"] . '</a> -> <a href="forum.php?action=view_topic&amp;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&amp;id=' . $post[0] . '&amp;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&amp;id=' . $post[0] . '&amp;state=0">
                <img src="img/forums/down.gif" border="0" alt="' . lang("forum", "down") . '" />
              </a>
              <a href="forum.php?action=edit_announce&amp;id=' . $post[0] . '&amp;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&amp;id=' . $post[0] . '&amp;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&amp;id=' . $post[0] . '&amp;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&amp;id=' . $post[0] . '&amp;state=0">
                <img src="img/forums/lock.gif" border="0" alt="' . lang("forum", "open") . '" />
              </a>';
            } else {
                $output .= '
              <a href="forum.php?action=edit_close&amp;id=' . $post[0] . '&amp;state=1">
                <img src="img/forums/unlock.gif" border="0" alt="' . lang("forum", "close") . '" />
              </a>';
            }
            $output .= '
              <a href="forum.php?action=move_topic&amp;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&amp;id=' . $post[0] . '">
                  <img src="img/forums/edit.gif" border="0" alt="' . lang("forum", "edit") . '" />
                </a>
                <a href="forum.php?action=delete_post&amp;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&amp;id=' . $post[0] . '">
                  <img src="img/forums/edit.gif" border="0" alt="' . lang("forum", "edit") . '" />
                </a>
                <a href="forum.php?action=delete_post&amp;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&amp;id=' . $id . '&amp;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
}