function bmt_remove_member_type_to_roles($wp_roles, $member_type) { $users = bmt_get_users_by_roles($wp_roles); if (isset($users) && !empty($users)) { foreach ($users as $single) { bp_remove_member_type($single, $member_type); } } }
/** * Process bulk member type change submission from the WP admin users list table. * * @since 2.7.0 */ public function users_table_process_bulk_type_change() { // Output the admin notice. $this->users_type_change_notice(); // 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 member type to check against. $member_type = bp_get_member_type($user_id); if ('remove_member_type' === $new_type) { // Remove the current member 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 { // Set the new member 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) { $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; }
/** * @group BP6188 */ public function test_bp_remove_member_type_should_return_true_for_successful_deletion() { $u1 = $this->factory->user->create(); bp_register_member_type('foo'); bp_register_member_type('bar'); bp_set_member_type($u1, 'foo'); bp_set_member_type($u1, 'bar', true); $this->assertTrue(bp_remove_member_type($u1, 'foo')); $types = bp_get_member_type($u1, false); $this->assertEquals(array('bar'), $types); }