BP_REST_Group_Settings_Endpoint::update_forum_fields( WP_REST_Request $request )
Update Group Forum settings.
Description
Parameters
- $request
-
(Required) Request used to generate the response.
Return
(array)
Source
File: bp-groups/classes/class-bp-rest-group-settings-endpoint.php
protected function update_forum_fields( $request ) { $post_fields = $request->get_param( 'fields' ); $group_id = $request->get_param( 'id' ); $group = groups_get_group( $group_id ); buddypress()->groups->current_group = $group; if ( ! bp_is_active( 'forums' ) || ! function_exists( 'bbp_is_group_forums_active' ) || ! bbp_is_group_forums_active() || ! class_exists( 'BBP_Forums_Group_Extension' ) ) { return new WP_Error( 'bp_rest_invalid_group_setting_nav', __( 'Sorry, you are not allowed to update the forum group settings options.', 'buddyboss' ), array( 'status' => 400, ) ); } if ( empty( $post_fields ) ) { return array( 'error' => '', 'notice' => '', ); } $edit_forum = ( array_key_exists( 'bbp-edit-group-forum', (array) $post_fields ) && ! empty( $post_fields['bbp-edit-group-forum'] ) ) ? true : false; $forum_id = 0; $group_forum_extention = new BBP_Forums_Group_Extension(); // Keymasters have the ability to reconfigure forums. if ( bbp_is_user_keymaster() ) { $forum_ids = ( array_key_exists( 'bbp_group_forum_id', (array) $post_fields ) && ! empty( $post_fields['bbp_group_forum_id'] ) ) ? (array) (int) $post_fields['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 ) ) { $group_forum_extention->remove_forum( array( 'forum_id' => $forum_id, 'group_id' => $group_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 = $group_forum_extention->toggle_group_forum( $group_id, $edit_forum, $forum_id ); // 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. $group_forum_extention->new_forum( $new_forum_args ); } $notice = __( 'Group settings were successfully updated.', 'buddyboss' ); return array( 'error' => '', 'notice' => $notice, ); }
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.