BP_REST_Group_Settings_Endpoint::update_settings_fields( WP_REST_Request $request )
Update Group 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_settings_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 ( empty( $post_fields ) ) {
return array(
'error' => '',
'notice' => '',
);
}
// Checked against a whitelist for security.
/** This filter is documented in bp-groups/bp-groups-admin.php */
$allowed_status = apply_filters( 'groups_allowed_status', array( 'public', 'private', 'hidden' ) );
$status = ( array_key_exists( 'group-status', (array) $post_fields ) && ! empty( $post_fields['group-status'] ) ) ? $post_fields['group-status'] : ( ! bp_get_new_group_status() ? 'public' : bp_get_new_group_status() );
// Checked against a whitelist for security.
/** This filter is documented in bp-groups/bp-groups-admin.php */
$allowed_invite_status = apply_filters( 'groups_allowed_invite_status', array( 'members', 'mods', 'admins' ) );
$invite_status = ( array_key_exists( 'group-invite-status', (array) $post_fields ) && ! empty( $post_fields['group-invite-status'] ) ) ? $post_fields['group-invite-status'] : bp_group_get_invite_status( $group->id );
// Checked against a whitelist for security.
/** This filter is documented in bp-groups/bp-groups-admin.php */
$allowed_activity_feed_status = apply_filters( 'groups_allowed_activity_feed_status', array( 'members', 'mods', 'admins' ) );
$activity_feed_status = ( array_key_exists( 'group-activity-feed-status', (array) $post_fields ) && ! empty( $post_fields['group-activity-feed-status'] ) ) ? $post_fields['group-activity-feed-status'] : bp_group_get_activity_feed_status( $group->id );
// Checked against a whitelist for security.
/** This filter is documented in bp-groups/bp-groups-admin.php */
$allowed_media_status = apply_filters( 'groups_allowed_media_status', array( 'members', 'mods', 'admins' ) );
$media_status = ( array_key_exists( 'group-media-status', (array) $post_fields ) && ! empty( $post_fields['group-media-status'] ) ) ? $post_fields['group-media-status'] : bp_group_get_media_status( $group->id );
// Checked against a whitelist for security.
/** This filter is documented in bp-groups/bp-groups-admin.php */
$allowed_album_status = apply_filters( 'groups_allowed_album_status', array( 'members', 'mods', 'admins' ) );
$album_status = ( array_key_exists( 'group-album-status', (array) $post_fields ) && ! empty( $post_fields['group-album-status'] ) ) ? $post_fields['group-album-status'] : bp_group_get_album_status( $group->id );
// Checked against a whitelist for security.
/** This filter is documented in bp-groups/bp-groups-admin.php */
$allowed_message_status = apply_filters( 'groups_allowed_message_status', array( 'mods', 'admins', 'members' ) );
$message_status = ( array_key_exists( 'group-message-status', (array) $post_fields ) && ! empty( $post_fields['group-message-status'] ) ) ? $post_fields['group-message-status'] : bp_group_get_message_status( $group->id );
/*
* Save group types.
*
* Ensure we keep types that have 'show_in_create_screen' set to false.
*/
$current_types = bp_groups_get_group_type( $group_id, false );
$current_types = array_intersect( bp_groups_get_group_types( array( 'show_in_create_screen' => false ) ), (array) $current_types );
if ( isset( $post_fields['group-types'] ) ) {
$current_types = array_merge( $current_types, (array) $post_fields['group-types'] );
// Set group types.
bp_groups_set_group_type( $group_id, $current_types );
// No group types checked, so this means we want to wipe out all group types.
} else {
/*
* Passing a blank string will wipe out all types for the group.
*
* Ensure we keep types that have 'show_in_create_screen' set to false.
*/
$current_types = empty( $current_types ) ? '' : $current_types;
// Set group types.
bp_groups_set_group_type( $group_id, $current_types );
}
$parent_id = isset( $post_fields['bp-groups-parent'] ) && array_key_exists( 'bp-groups-parent', (array) $post_fields ) ? $post_fields['bp-groups-parent'] : '0';
$enable_forum = ( isset( $group->enable_forum ) ? $group->enable_forum : false );
$error = '';
$notice = '';
if ( ! groups_edit_group_settings( $group_id, $enable_forum, $status, $invite_status, $activity_feed_status, $parent_id, $media_status, $album_status, $message_status ) ) {
$error = __( 'There was an error updating group settings. Please try again.', 'buddyboss' );
} else {
$notice = __( 'Group settings were successfully updated.', 'buddyboss' );
}
return array(
'error' => $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.