groups_screen_group_admin_settings()
Handle the display of a group’s admin/group-settings page.
Description Description
Source Source
File: bp-groups/screens/single/admin/group-settings.php
function groups_screen_group_admin_settings() {
if ( 'group-settings' != bp_get_group_current_admin_tab() )
return false;
if ( ! bp_is_item_admin() )
return false;
$bp = buddypress();
// If the edit form has been submitted, save the edited details.
if ( isset( $_POST['save'] ) ) {
$enable_forum = ( isset($_POST['group-show-forum'] ) ) ? 1 : 0;
// 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 = ( in_array( $_POST['group-status'], (array) $allowed_status ) ) ? $_POST['group-status'] : 'public';
// 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 = isset( $_POST['group-invite-status'] ) && in_array( $_POST['group-invite-status'], (array) $allowed_invite_status ) ? $_POST['group-invite-status'] : 'members';
// Check the nonce.
if ( !check_admin_referer( 'groups_edit_group_settings' ) )
return false;
$group_id = bp_get_current_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['group-types'] ) ) {
$current_types = array_merge( $current_types, $_POST['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 );
}
if ( ! groups_edit_group_settings( $group_id, $enable_forum, $status, $invite_status ) ) {
bp_core_add_message( __( 'There was an error updating group settings. Please try again.', 'buddypress' ), 'error' );
} else {
bp_core_add_message( __( 'Group settings were successfully updated.', 'buddypress' ) );
}
/**
* Fires before the redirect if a group settings has been edited and saved.
*
* @since 1.0.0
*
* @param int $id ID of the group that was edited.
*/
do_action( 'groups_group_settings_edited', $bp->groups->current_group->id );
bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/group-settings/' );
}
/**
* Fires before the loading of the group admin/group-settings page template.
*
* @since 1.0.0
*
* @param int $id ID of the group that is being displayed.
*/
do_action( 'groups_screen_group_admin_settings', $bp->groups->current_group->id );
/**
* Filters the template to load for a group's admin/group-settings page.
*
* @since 1.0.0
*
* @param string $value Path to a group's admin/group-settings template.
*/
bp_core_load_template( apply_filters( 'groups_template_group_admin_settings', 'groups/single/home' ) );
}
Changelog Changelog
| Version | Description |
|---|---|
| 1.0.0 | Introduced. |