Make WordPress Core

Ticket #41101: 41101.diff

File 41101.diff, 1.8 KB (added by jmdodd, 7 years ago)

Proposed filter and 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                wpmu_delete_blog( $site_id );
     410
     411                $this->assertWPError( $result );
     412        }
     413
     414        /**
     415         * @ticket 41101
     416         */
     417        public function test_should_succeed_pre_add_user_to_blog_filter() {
     418                $site_id = self::factory()->blog->create();
     419                $user_id = self::factory()->user->create();
     420
     421                add_filter( 'pre_add_user_to_blog', '__return_true', 10, 4 );
     422                $result = add_user_to_blog( $site_id, $user_id, 'subscriber' );
     423                wpmu_delete_blog( $site_id );
     424
     425                $this->assertTrue( $result );
     426        }
     427
     428        /**
    401429         * @ticket 23016
    402430         */
    403431        public function test_wp_roles_global_is_reset() {