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;
 }
Exemple #3
0
 /**
  * @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);
 }