Private Forums

forum_id,($priv_forums) ? $priv_forums : array())) ? ' checked ' : '') ; ?> > forum_name; ?>

Privacy Options

/> Hide Private Forums and Posts

/> Mark Private Forums and Posts with

Error Options

When a user tries to access a private forum without having access he will be redirected to a error page with the following text.

Usage:

  1. Use '<br/>' for line breaks.
  2. Use '%s' for the context of the error. If the error occurs when the user tries to access a private forum, '%s' will be replaces by 'forum'.
  3. Word 'login' will be replaced by a link to the login page.

path . 'bb-login.php'; if ($_SERVER['PHP_SELF'] != $login_page) { $priv_forums = forum_access_get_option('forum_access_private_forums'); if ( !bb_current_user() && !empty($priv_forums)) { add_action( 'bb_forum.php_pre_db', 'forum_access_forum_init' ); add_action( 'bb_topic.php_pre_db', 'forum_access_topic_init' ); add_action( 'bb_tag-single.php', 'forum_access_tag_single_init' ); if (bb_get_option('forum_access_private_forums_option') == 'SHOW_PRIVATE') { add_filter( 'get_forum_name', 'forum_access_add_private_name_to_forums', 10,2); add_filter( 'get_topic_title', 'forum_access_add_private_name_to_topics', 10,2); } else { add_action( 'bb_head', 'forum_access_head_init' ); add_filter( 'get_forums','forum_access_filter_forums'); } $forum_access_failure_msg = forum_access_format_error(bb_get_option('forum_access_failure_msg')); } } } function forum_access_process_post() { if(isset($_POST['submit'])) { if ('priv_forum_update' == $_POST['action']) { //Private Forums Update $priv_forums = (isset($_POST['priv_forum'])) ? $_POST['priv_forum'] : array(); bb_update_option('forum_access_private_forums',$priv_forums); //Error Message Update $err_msg = $_POST['failure_msg']; bb_update_option('forum_access_failure_msg',$err_msg); //Privacy Option Update bb_update_option('forum_access_private_forums_option',$_POST['priv_forum_option']); if ('SHOW_PRIVATE'== bb_get_option('forum_access_private_forums_option')) { $text = empty($_POST['priv_forum_private_text']) ? 'private' : $_POST['priv_forum_private_text']; bb_update_option('forum_access_private_text',$text); } } } } function forum_access_format_error($err_msg){ global $bb; if(empty($err_msg)) $err_msg = "This %s requires access to private forum. \r\nPlease login to access it."; $err_msg = trim($err_msg); $err_msg = strip_tags ( $err_msg ); $order = array("\r\n", "\n", "\r"); $replace = '
'; $err_msg = str_replace($order, $replace, $err_msg); $replace = 'login'; $err_msg = str_replace('login', $replace, $err_msg); return $err_msg; } function forum_access_head_init() { global $forum_access_failure_msg, $forums, $topics, $super_stickies, $stickies, $topic, $topic_id; $topics = forum_access_filter_topics($topics); $stickies = forum_access_filter_topics($stickies); $super_stickies = forum_access_filter_topics($super_stickies); } function forum_access_forum_init($forum_id) { global $forum_access_failure_msg; $priv_forums = forum_access_get_option('forum_access_private_forums'); if(array_key_exists($forum_id,$priv_forums)) { bb_die(__(sprintf($forum_access_failure_msg, 'forum'))); } } function forum_access_topic_init($topic_id) { global $topic, $forum_access_failure_msg; $priv_forums = forum_access_get_option('forum_access_private_forums'); if(array_key_exists($topic->forum_id,$priv_forums)) { bb_die(__(sprintf($forum_access_failure_msg, 'topic'))); } } function forum_access_tag_single_init($tag_id) { global $topics, $forum_access_failure_msg; $topics = forum_access_filter_topics($topics); if (empty($topics)) { bb_die(__(sprintf($forum_access_failure_msg, 'tag'))); } } function forum_access_filter_forums($forums) { $new_forums = array(); if ($forums) { $priv_forums = forum_access_get_option('forum_access_private_forums'); foreach($forums as $forum) { if(!array_key_exists($forum->forum_id,$priv_forums)) { $new_forums[] = $forum; } else { //$new_forums[] = $forum; } } return $new_forums ; } return $forums; } function forum_access_add_private_name_to_forums($text, $id) { $priv_forums = forum_access_get_option('forum_access_private_forums'); if(array_key_exists($id,$priv_forums)) { return '[' . bb_get_option('forum_access_private_text') . '] ' . $text; } else { return $text; } } function forum_access_add_private_name_to_topics($text, $id) { $topic = get_topic( $id ); $id = $topic->forum_id; $priv_forums = forum_access_get_option('forum_access_private_forums'); if(array_key_exists($id,$priv_forums)) { return '[' . bb_get_option('forum_access_private_text') . '] ' . $text; } else { return $text; } } function forum_access_filter_topics($topics) { $new_topics = array(); if ($topics) { $priv_forums = forum_access_get_option('forum_access_private_forums'); foreach($topics as $topic) { if(!array_key_exists($topic->forum_id,$priv_forums)) { $new_topics[] = $topic; } } return $new_topics ; } return $topics; } ?>