BBP_Forums_Group_Extension::display_forums( $offset )
Output the forums for a group in the edit screens
Description Description
As of right now, bbPress only supports 1-to-1 group forum relationships. In the future, many-to-many should be allowed.
Source Source
File: includes/extend/buddypress/groups.php
public function display_forums( $offset = 0 ) { // Allow actions immediately before group forum output do_action( 'bbp_before_group_forum_display' ); // Load up bbPress once $bbp = bbpress(); /** Query Resets ******************************************************/ // Forum data $forum_action = bp_action_variable( $offset ); $forum_ids = bbp_get_group_forum_ids( bp_get_current_group_id() ); $forum_id = array_shift( $forum_ids ); // Always load up the group forum bbp_has_forums( array( 'p' => $forum_id, 'post_parent' => null ) ); // Set the global forum ID $bbp->current_forum_id = $forum_id; // Assume forum query bbp_set_query_name( 'bbp_single_forum' ); ?> <div id="bbpress-forums" class="bbpress-wrapper"> <?php switch ( $forum_action ) : /** Single Forum **********************************************/ case false : case 'page' : // Strip the super stickies from topic query add_filter( 'bbp_get_super_stickies', array( $this, 'no_super_stickies' ), 10, 1 ); // Unset the super sticky option on topic form add_filter( 'bbp_get_topic_types', array( $this, 'unset_super_sticky' ), 10, 1 ); // Query forums and show them if they exist if ( bbp_forums() ) : // Setup the forum bbp_the_forum(); // Only wrap title in H2 if not empty $title = bbp_get_forum_title(); if ( ! empty( $title ) ) { echo '<h2>' . $title . '</h2>'; } // Output forum bbp_get_template_part( 'content', 'single-forum' ); // No forums found else : ?> <div id="message" class="info"> <p><?php esc_html_e( 'This group does not currently have a forum.', 'bbpress' ); ?></p> </div> <?php endif; break; /** Single Topic **********************************************/ case $this->topic_slug : // hide the 'to front' admin links add_filter( 'bbp_get_topic_stick_link', array( $this, 'hide_super_sticky_admin_link' ), 10, 2 ); // Get the topic bbp_has_topics( array( 'name' => bp_action_variable( $offset + 1 ), 'posts_per_page' => 1, 'show_stickies' => false ) ); // If no topic, 404 if ( ! bbp_topics() ) { bp_do_404( bbp_get_forum_permalink( $forum_id ) ); // Only wrap title in H2 if not empty $title = bbp_get_forum_title(); if ( ! empty( $title ) ) { echo '<h2>' . $title . '</h2>'; } // No topics bbp_get_template_part( 'feedback', 'no-topics' ); break; } // Setup the topic bbp_the_topic(); // Only wrap title in H2 if not empty $title = bbp_get_topic_title(); if ( ! empty( $title ) ) { echo '<h2>' . $title . '</h2>'; } // Topic edit if ( bp_action_variable( $offset + 2 ) === bbp_get_edit_slug() ) : // Unset the super sticky link on edit topic template add_filter( 'bbp_get_topic_types', array( $this, 'unset_super_sticky' ), 10, 1 ); // Get the main query object $wp_query = bbp_get_wp_query(); // Set the edit switches $wp_query->bbp_is_edit = true; $wp_query->bbp_is_topic_edit = true; // Setup the global forum ID $bbp->current_topic_id = get_the_ID(); // Merge if ( ! empty( $_GET['action'] ) && 'merge' === $_GET['action'] ) : bbp_set_query_name( 'bbp_topic_merge' ); bbp_get_template_part( 'form', 'topic-merge' ); // Split elseif ( ! empty( $_GET['action'] ) && 'split' === $_GET['action'] ) : bbp_set_query_name( 'bbp_topic_split' ); bbp_get_template_part( 'form', 'topic-split' ); // Edit else : bbp_set_query_name( 'bbp_topic_form' ); bbp_get_template_part( 'form', 'topic' ); endif; // Single Topic else : bbp_set_query_name( 'bbp_single_topic' ); bbp_get_template_part( 'content', 'single-topic' ); endif; break; /** Single Reply **********************************************/ case $this->reply_slug : // Get the reply bbp_has_replies( array( 'name' => bp_action_variable( $offset + 1 ), 'posts_per_page' => 1 ) ); // If no topic, 404 if ( ! bbp_replies() ) { bp_do_404( bbp_get_forum_permalink( $forum_id ) ); // Only wrap title in H2 if not empty $title = bbp_get_forum_title(); if ( ! empty( $title ) ) { echo '<h2>' . $title . '</h2>'; } // No replies bbp_get_template_part( 'feedback', 'no-replies' ); break; } // Setup the reply bbp_the_reply(); // Only wrap title in H2 if not empty $title = bbp_get_reply_title(); if ( ! empty( $title ) ) { echo '<h2>' . $title . '</h2>'; } if ( bp_action_variable( $offset + 2 ) === bbp_get_edit_slug() ) : // Get the main query object $wp_query = bbp_get_wp_query(); // Set the edit switches $wp_query->bbp_is_edit = true; $wp_query->bbp_is_reply_edit = true; // Setup the global reply ID $bbp->current_reply_id = get_the_ID(); // Move if ( ! empty( $_GET['action'] ) && ( 'move' === $_GET['action'] ) ) : bbp_set_query_name( 'bbp_reply_move' ); bbp_get_template_part( 'form', 'reply-move' ); // Edit else : bbp_set_query_name( 'bbp_reply_form' ); bbp_get_template_part( 'form', 'reply' ); endif; endif; break; endswitch; // Reset the query wp_reset_query(); ?> </div><!-- #bbpress-forums --> <?php // Allow actions immediately after group forum output do_action( 'bbp_after_group_forum_display' ); }
Changelog Changelog
Version | Description |
---|---|
2.1.0 | Introduced. |