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)
Return Return
(If) forum ID is empty
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 ); } } }
Changelog Changelog
Version | Description |
---|---|
2.1.0 | Introduced. |