Make WordPress Core

Ticket #32935: 32935.diff

File 32935.diff, 1.6 KB (added by jeremyfelt, 10 years ago)
  • src/wp-admin/includes/ms.php

     
    190190
    191191        if ( !$user->exists() )
    192192                return false;
     193
     194        // Global super-administrators are protected, and cannot be deleted.
     195        $_super_admins = get_super_admins();
     196        if ( in_array( $user->user_login, $_super_admins, true ) ) {
     197                return false;
     198        }
     199
    193200        /**
    194201         * Fires before a user is deleted from the network.
    195202         *
  • tests/phpunit/tests/user/multisite.php

     
    229229                $this->assertQueryTrue( 'is_author', 'is_archive' );
    230230        }
    231231
     232        function test_super_admin_cannot_be_deleted() {
     233                $user_id = $this->factory->user->create();
     234                grant_super_admin( $user_id );
     235                $this->assertFalse( wpmu_delete_user( $user_id ) );
     236        }
     237
     238        function test_revoked_super_admin_can_be_deleted() {
     239                $user_id = $this->factory->user->create();
     240                grant_super_admin( $user_id );
     241                revoke_super_admin( $user_id );
     242                $this->assertTrue( wpmu_delete_user( $user_id ) );
     243        }
     244
     245        function test_revoked_super_admin_is_deleted() {
     246                $user_id = $this->factory->user->create();
     247                grant_super_admin( $user_id );
     248                revoke_super_admin( $user_id );
     249                wpmu_delete_user( $user_id );
     250                $user = new WP_User( $user_id );
     251                $this->assertFalse( $user->exists(), 'WP_User->exists' );
     252        }
     253
    232254        /**
    233255         * @ticket 27205
    234256         */