function forum_check_access_level() { $forum_access_ignore_files_preg = implode("|^", array_map('preg_quote_callback', get_forum_access_ignore_files())); if (preg_match("/^{$forum_access_ignore_files_preg}/u", basename($_SERVER['PHP_SELF'])) > 0) { return true; } if (!($db = db::get())) { return false; } if (!($table_prefix = get_table_prefix())) { return false; } if (!($forum_fid = get_forum_fid())) { return false; } if (!isset($_SESSION['UID']) || !is_numeric($_SESSION['UID'])) { return false; } $sql = "SELECT FORUMS.FID, FORUMS.ACCESS_LEVEL, USER_FORUM.ALLOWED FROM FORUMS "; $sql .= "LEFT JOIN USER_FORUM ON (USER_FORUM.FID = FORUMS.FID "; $sql .= "AND USER_FORUM.UID = '{$_SESSION['UID']}') WHERE FORUMS.FID = '{$forum_fid}' "; $sql .= "AND FORUMS.ACCESS_LEVEL < 3"; if (!($result = $db->query($sql))) { return false; } if ($result->num_rows == 0) { return false; } if (!($forum_data = $result->fetch_assoc())) { return false; } if (!isset($forum_data['ACCESS_LEVEL'])) { return true; } if ($forum_data['ACCESS_LEVEL'] == FORUM_CLOSED) { forum_closed_message(); } else { if ($forum_data['ACCESS_LEVEL'] == FORUM_RESTRICTED && $forum_data['ALLOWED'] != FORUM_USER_ALLOWED) { forum_restricted_message(); } else { if ($forum_data['ACCESS_LEVEL'] == FORUM_PASSWD_PROTECTED) { forum_check_password($forum_data['FID']); } } } return true; }
function forum_check_access_level() { $result = forum_check_access_level_ignore(); if (!($db = db::get())) { return $result; } if (!($table_prefix = get_table_prefix())) { return $result; } if (!($forum_fid = get_forum_fid())) { return $result; } $uid = session::get_value('UID'); $sql = "SELECT FORUMS.FID, FORUMS.ACCESS_LEVEL, USER_FORUM.ALLOWED FROM FORUMS "; $sql .= "LEFT JOIN USER_FORUM ON (USER_FORUM.FID = FORUMS.FID "; $sql .= "AND USER_FORUM.UID = '{$uid}') WHERE FORUMS.FID = '{$forum_fid}' "; $sql .= "AND FORUMS.ACCESS_LEVEL < 3"; if (!($result = $db->query($sql))) { return $result; } if ($result->num_rows == 0) { return $result; } if (!($forum_data = $result->fetch_assoc())) { return $result; } if (!isset($forum_data['ACCESS_LEVEL'])) { return true; } if ($forum_data['ACCESS_LEVEL'] == FORUM_CLOSED) { return forum_closed_message(); } else { if ($forum_data['ACCESS_LEVEL'] == FORUM_RESTRICTED && $forum_data['ALLOWED'] != FORUM_USER_ALLOWED) { return forum_restricted_message(); } else { if ($forum_data['ACCESS_LEVEL'] == FORUM_PASSWD_PROTECTED) { return forum_check_password($forum_data['FID']); } } } return true; }
function forum_check_access_level() { static $forum_data = false; if (!($db_forum_check_access_level = db_connect())) { return false; } if (($uid = bh_session_get_value('UID')) === false) { return false; } if (!($table_data = get_table_prefix())) { return true; } $forum_fid = $table_data['FID']; if (!is_array($forum_data) || !isset($forum_data['ACCESS_LEVEL']) || !isset($forum_data['ALLOWED'])) { $sql = "SELECT FORUMS.FID, FORUMS.ACCESS_LEVEL, USER_FORUM.ALLOWED FROM FORUMS "; $sql .= "LEFT JOIN USER_FORUM ON (USER_FORUM.FID = FORUMS.FID "; $sql .= "AND USER_FORUM.UID = '{$uid}') WHERE FORUMS.FID = '{$forum_fid}'"; if (!($result = db_query($sql, $db_forum_check_access_level))) { return false; } if (db_num_rows($result) > 0) { $forum_data = db_fetch_array($result); } } if (isset($forum_data['ACCESS_LEVEL'])) { if ($forum_data['ACCESS_LEVEL'] < FORUM_UNRESTRICTED) { return forum_closed_message(); } elseif ($forum_data['ACCESS_LEVEL'] == FORUM_RESTRICTED && $forum_data['ALLOWED'] != FORUM_USER_ALLOWED) { return forum_restricted_message(); } elseif ($forum_data['ACCESS_LEVEL'] == FORUM_PASSWD_PROTECTED) { return forum_check_password($forum_data['FID']); } } return true; }