BBP_Forums_Group_Extension::edit_screen_save( int $group_id )
Save the Group Forum data on edit
Description
Parameters
- $group_id
-
(Required) (to handle Group Admin UI hook bp_group_admin_edit_after )
Source
File: bp-forums/groups.php
public function edit_screen_save( $group_id = 0 ) { // Bail if not a POST action if ( ! bbp_is_post_request() ) return; // Admin Nonce check if ( is_admin() ) { check_admin_referer( 'groups_edit_save_' . $this->slug, 'forum_group_admin_ui' ); // Theme-side Nonce check } elseif ( ! bbp_verify_nonce_request( 'groups_edit_save_' . $this->slug ) ) { bbp_add_error( 'bbp_edit_group_forum_screen_save', __( '<strong>ERROR</strong>: Are you sure you wanted to do that?', 'buddyboss' ) ); return; } $edit_forum = !empty( $_POST['bbp-edit-group-forum'] ) ? true : false; $forum_id = 0; $group_id = !empty( $group_id ) ? $group_id : bp_get_current_group_id(); // Keymasters have the ability to reconfigure forums if ( bbp_is_user_keymaster() ) { $forum_ids = ! empty( $_POST['bbp_group_forum_id'] ) ? (array) (int) $_POST['bbp_group_forum_id'] : array(); // Use the existing forum IDs } else { $forum_ids = array_values( bbp_get_group_forum_ids( $group_id ) ); } // Normalize group forum relationships now if ( !empty( $forum_ids ) ) { // Loop through forums, and make sure they exist foreach ( $forum_ids as $forum_id ) { // Look for forum $forum = bbp_get_forum( $forum_id ); // No forum exists, so break the relationship if ( empty( $forum ) ) { $this->remove_forum( array( 'forum_id' => $forum_id ) ); unset( $forum_ids[$forum_id] ); } } // No support for multiple forums yet $forum_id = (int) ( is_array( $forum_ids ) ? $forum_ids[0] : $forum_ids ); } // Update the group ID and forum ID relationships bbp_update_group_forum_ids( $group_id, (array) $forum_ids ); bbp_update_forum_group_ids( $forum_id, (array) $group_id ); // Update the group forum setting $group = $this->toggle_group_forum( $group_id, $edit_forum ); // Create a new forum if ( empty( $forum_id ) && ( true === $edit_forum ) ) { // Set the default forum status switch ( $group->status ) { case 'hidden' : $status = bbp_get_hidden_status_id(); break; case 'private' : $status = bbp_get_private_status_id(); break; case 'public' : default : $status = bbp_get_public_status_id(); break; } // Create the initial forum $forum_id = bbp_insert_forum( array( 'post_parent' => bbp_get_group_forums_root_id(), 'post_title' => $group->name, 'post_content' => $group->description, 'post_status' => $status ) ); // Setup forum args with forum ID $new_forum_args = array( 'forum_id' => $forum_id ); // If in admin, also include the group ID if ( is_admin() && !empty( $group_id ) ) { $new_forum_args['group_id'] = $group_id; } // Run the BP-specific functions for new groups $this->new_forum( $new_forum_args ); } // Redirect after save when not in admin if ( !is_admin() ) { bp_core_redirect( trailingslashit( bp_get_group_permalink( buddypress()->groups->current_group ) . '/admin/' . $this->slug ) ); } }
Changelog
Version | Description |
---|---|
bbPress (r3465) | 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.