BBP_Forums_Group_Extension::display_forums( $offset )

Output the forums for a group in the edit screens

Description

As of right now, Forums only supports 1-to-1 group forum relationships. In the future, many-to-many should be allowed.

Source

File: bp-forums/groups.php

	public function display_forums( $offset = 0 ) {
		global $wp_query;

		// Allow actions immediately before group forum output
		do_action( 'bbp_before_group_forum_display' );

		// Load up Forums 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"> // *** Removed Due to duplicate id *** //-->

			<?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(); ?>

						<?php bbp_get_template_part( 'content', 'single-forum' );

					// No forums found
					else : ?>

						<div class="info bp-feedback">
							<span class="bp-icon" aria-hidden="true"></span>
							<p><?php esc_html_e( 'This group does not currently have a forum.', 'buddyboss' ); ?></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 ) ); ?>
						<h3 class="bbp-forum-title"><?php bbp_forum_title(); ?></h3>
						<?php bbp_get_template_part( 'feedback', 'no-topics' );
						return;
					}

					// Setup the topic
					bbp_the_topic(); ?>

					<h3 class="bbp-topic-title"><?php bbp_topic_title(); ?></h3>

					<?php

					// Topic edit
					if ( bp_action_variable( $offset + 2 ) === bbp_get_edit_rewrite_id() ) :

						// Unset the super sticky link on edit topic template
						add_filter( 'bbp_get_topic_types', array( $this, 'unset_super_sticky' ), 10, 1 );

						// 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 ) ); ?>
						<h3><?php bbp_forum_title(); ?></h3>
						<?php bbp_get_template_part( 'feedback', 'no-replies' );
						return;
					}

					// Setup the reply
					bbp_the_reply(); ?>

					<h3><?php bbp_reply_title(); ?></h3>

					<?php if ( bp_action_variable( $offset + 2 ) === bbp_get_edit_rewrite_id() ) :

						// 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>-->

		<?php

		// Allow actions immediately after group forum output
		do_action( 'bbp_after_group_forum_display' );
	}

Changelog

Changelog
Version Description
bbPress (r3653) Introduced.

Questions?

We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.