bbp_save_forum_extras( int $forum_id )

Handle the saving of core forum metadata (Status, Visibility, and Type)


Description Description


Parameters Parameters

$forum_id

(Required)


Top ↑

Return Return

(If) forum ID is empty


Top ↑

Source Source

File: includes/forums/functions.php

function bbp_save_forum_extras( $forum_id = 0 ) {

	// Validate the forum ID
	$forum_id = bbp_get_forum_id( $forum_id );

	// Bail if forum ID is empty
	if ( empty( $forum_id ) || ! bbp_is_forum( $forum_id ) ) {
		return;
	}

	/** Forum Status **********************************************************/

	if ( ! empty( $_POST['bbp_forum_status'] ) && in_array( $_POST['bbp_forum_status'], array( 'open', 'closed' ), true ) ) {
		if ( 'closed' === $_POST['bbp_forum_status'] && ! bbp_is_forum_closed( $forum_id, false ) ) {
			bbp_close_forum( $forum_id );
		} elseif ( 'open' === $_POST['bbp_forum_status'] && bbp_is_forum_open( $forum_id, false ) ) {
			bbp_open_forum( $forum_id );
		} elseif ( 'open' === $_POST['bbp_forum_status'] && bbp_is_forum_closed( $forum_id, false ) ) {
			bbp_open_forum( $forum_id );
		}
	}

	/** Forum Type ************************************************************/

	if ( ! empty( $_POST['bbp_forum_type'] ) && in_array( $_POST['bbp_forum_type'], array( 'forum', 'category' ), true ) ) {
		if ( 'category' === $_POST['bbp_forum_type'] && ! bbp_is_forum_category( $forum_id ) ) {
			bbp_categorize_forum( $forum_id );
		} elseif ( 'forum' === $_POST['bbp_forum_type'] && ! bbp_is_forum_category( $forum_id ) ) {
			bbp_normalize_forum( $forum_id );
		} elseif ( 'forum' === $_POST['bbp_forum_type'] && bbp_is_forum_category( $forum_id ) ) {
			bbp_normalize_forum( $forum_id );
		}
	}

	/** Forum Visibility ******************************************************/

	if ( ! empty( $_POST['bbp_forum_visibility'] ) && in_array( $_POST['bbp_forum_visibility'], array_keys( bbp_get_forum_visibilities() ), true ) ) {

		// Get forums current visibility
		$old_visibility = bbp_get_forum_visibility( $forum_id );

		// Sanitize the new visibility
		$new_visibility = sanitize_key( $_POST['bbp_forum_visibility'] );

		// What is the new forum visibility setting?
		switch ( $new_visibility ) {

			// Hidden
			case bbp_get_hidden_status_id()  :
				bbp_hide_forum( $forum_id, $old_visibility );
				break;

			// Private
			case bbp_get_private_status_id() :
				bbp_privatize_forum( $forum_id, $old_visibility );
				break;

			// Publish (default)
			case bbp_get_public_status_id()  :
			default :
				bbp_publicize_forum( $forum_id, $old_visibility );
				break;
		}

		/**
		 * Allow custom forum visibility save actions
		 *
		 * @since 2.6.0 bbPress (r5855)
		 *
		 * @param int    $forum_id       The forum ID
		 * @param string $old_visibility The current forum visibility
		 * @param string $new_visibility The new forum visibility
		 */
		do_action( 'bbp_update_forum_visibility', $forum_id, $old_visibility, $new_visibility );
	}

	/** Forum Moderators ******************************************************/

	// Either replace terms
	if ( bbp_allow_forum_mods() ) {
		if ( current_user_can( 'assign_moderators' ) && ! empty( $_POST['bbp_moderators'] ) ) {

			// Escape tag input
			$users    = sanitize_text_field( $_POST['bbp_moderators'] );
			$user_ids = bbp_get_user_ids_from_nicenames( $users );

			// Update forum moderators
			if ( ! empty( $user_ids ) ) {

				// Remove all moderators
				bbp_remove_moderator( $forum_id, null );

				// Add moderators
				foreach ( $user_ids as $user_id ) {
					bbp_add_moderator( $forum_id, $user_id );
				}
			}

		// ...or remove them.
		} elseif ( isset( $_POST['bbp_moderators'] ) ) {
			bbp_remove_moderator( $forum_id, null );
		}
	}
}

Top ↑

Changelog Changelog

Changelog
Version Description
2.1.0 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

You must log in before being able to contribute a note or feedback.