Make WordPress Core

Ticket #41101: 41101.1.diff

File 41101.1.diff, 2.0 KB (added by jmdodd, 7 years ago)

Proposed filter and updated unit tests

  • src/wp-includes/ms-functions.php

     
    160160                return new WP_Error( 'user_does_not_exist', __( 'The requested user does not exist.' ) );
    161161        }
    162162
     163        if ( ! apply_filters( 'pre_add_user_to_blog', true, $user_id, $role, $blog_id ) ) {
     164                restore_current_blog();
     165                return new WP_Error( 'user_cannot_be_added', __( 'The user cannot be added to the blog.' ) );
     166        }
     167
    163168        if ( !get_user_meta($user_id, 'primary_blog', true) ) {
    164169                update_user_meta($user_id, 'primary_blog', $blog_id);
    165170                $site = get_site( $blog_id );
  • tests/phpunit/tests/user/multisite.php

     
    398398        }
    399399
    400400        /**
     401         * @ticket 41101
     402         */
     403        public function test_should_fail_pre_add_user_to_blog_filter() {
     404                $site_id = self::factory()->blog->create();
     405                $user_id = self::factory()->user->create();
     406
     407                add_filter( 'pre_add_user_to_blog', '__return_false', 10, 4 );
     408                $result = add_user_to_blog( $site_id, $user_id, 'subscriber' );
     409
     410                remove_filter( 'pre_add_user_to_blog', '__return_false', 10 );
     411                wpmu_delete_blog( $site_id );
     412                wpmu_delete_user( $user_id );
     413
     414                $this->assertWPError( $result );
     415        }
     416
     417        /**
     418         * @ticket 41101
     419         */
     420        public function test_should_succeed_pre_add_user_to_blog_filter() {
     421                $site_id = self::factory()->blog->create();
     422                $user_id = self::factory()->user->create();
     423
     424                add_filter( 'pre_add_user_to_blog', '__return_true', 10, 4 );
     425                $result = add_user_to_blog( $site_id, $user_id, 'subscriber' );
     426
     427                remove_filter( 'pre_add_user_to_blog', '__return_true', 10 );
     428                wpmu_delete_blog( $site_id );
     429                wpmu_delete_user( $user_id );
     430
     431                $this->assertTrue( $result );
     432        }
     433
     434        /**
    401435         * @ticket 23016
    402436         */
    403437        public function test_wp_roles_global_is_reset() {