BP_Members_Admin::users_table_process_bulk_type_change()
Process bulk profile type change submission from the WP admin users list table.
Description
Source
File: bp-members/classes/class-bp-members-admin.php
public function users_table_process_bulk_type_change() { // Output the admin notice. $this->users_type_change_notice(); // Flag for custom error message. $bp_error_message = false; // Bail if no users are specified or if this isn't a BuddyPress action. if ( empty( $_REQUEST['users'] ) || ( empty( $_REQUEST['bp_change_type'] ) && empty( $_REQUEST['bp_change_type2'] ) ) || empty( $_REQUEST['bp_change_member_type'] ) ) { return; } // Bail if nonce check fails. check_admin_referer( 'bp-bulk-users-change-type-' . bp_loggedin_user_id(), 'bp-bulk-users-change-type-nonce' ); // Bail if current user cannot promote users. if ( ! bp_current_user_can( 'promote_users' ) ) { return; } $new_type = ''; if ( ! empty( $_REQUEST['bp_change_type2'] ) ) { $new_type = sanitize_text_field( $_REQUEST['bp_change_type2'] ); } elseif ( ! empty( $_REQUEST['bp_change_type'] ) ) { $new_type = sanitize_text_field( $_REQUEST['bp_change_type'] ); } // Check that the selected type actually exists. if ( 'remove_member_type' != $new_type && null === bp_get_member_type_object( $new_type ) ) { $error = true; } else { // Run through user ids. $error = false; foreach ( (array) $_REQUEST['users'] as $user_id ) { $user_id = (int) $user_id; // Get the old profile type to check against. $member_type = bp_get_member_type( $user_id ); if ( 'remove_member_type' === $new_type ) { // Remove the current profile type, if there's one to remove. if ( $member_type ) { $removed = bp_remove_member_type( $user_id, $member_type ); if ( false === $removed || is_wp_error( $removed ) ) { $error = true; } } } else { if ( $user_id === get_current_user_id() ) { // Set the new profile type. if ( $new_type !== $member_type ) { // Get post id of selected profile type. $post_id = bp_member_type_post_by_type( $new_type ); // Get selected profile type role. $selected_member_type_wp_roles = get_post_meta( $post_id, '_bp_member_type_wp_roles', true ); if ( empty( $selected_member_type_wp_roles ) ) { $set = bp_set_member_type( $user_id, $new_type ); if ( false === $set || is_wp_error( $set ) ) { $error = true; } } else { if ( 'administrator' !== $selected_member_type_wp_roles[0] ) { $bp_error_message = true; $error = true; } else { $set = bp_set_member_type( $user_id, $new_type ); if ( false === $set || is_wp_error( $set ) ) { $error = true; } } } } } else { // Set the new profile type. if ( $new_type !== $member_type ) { $set = bp_set_member_type( $user_id, $new_type ); if ( false === $set || is_wp_error( $set ) ) { $error = true; } } } } } } // If there were any errors, show the error message. if ( $error ) { if ( true === $bp_error_message ) { $redirect = add_query_arg( array( 'updated' => 'member-type-change-owner-error' ), wp_get_referer() ); } else { $redirect = add_query_arg( array( 'updated' => 'member-type-change-error' ), wp_get_referer() ); } } else { $redirect = add_query_arg( array( 'updated' => 'member-type-change-success' ), wp_get_referer() ); } wp_redirect( $redirect ); exit(); }
Changelog
Version | Description |
---|---|
BuddyPress 2.7.0 | 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.