Make WordPress Core

Ticket #28374: 28374.patch

File 28374.patch, 1.4 KB (added by rachelbaker, 9 years ago)

patch with unit test

  • src/wp-includes/capabilities.php

     
    931931        public function add_cap( $cap, $grant = true ) {
    932932                $this->caps[$cap] = $grant;
    933933                update_user_meta( $this->ID, $this->cap_key, $this->caps );
     934                $this->get_role_caps();
     935                $this->update_user_level_from_caps();
    934936        }
    935937
    936938        /**
     
    946948                        return;
    947949                unset( $this->caps[$cap] );
    948950                update_user_meta( $this->ID, $this->cap_key, $this->caps );
     951                $this->get_role_caps();
     952                $this->update_user_level_from_caps();
    949953        }
    950954
    951955        /**
  • tests/phpunit/tests/user/capabilities.php

     
    694694
    695695                wp_set_current_user( $old_uid );
    696696        }
     697
     698        /**
     699         * @ticket 28374
     700         */
     701        function test_current_user_edit_caps() {
     702                $user = new WP_User( $this->factory->user->create( array( 'role' => 'contributor' ) ) );
     703                wp_set_current_user( $user->ID );
     704
     705                $user->add_cap( 'publish_posts' );
     706                $user->add_cap( 'publish_pages' );
     707                $this->assertTrue( $user->has_cap( 'publish_posts' ) );
     708                $this->assertTrue( $user->has_cap( 'publish_pages' ) );
     709
     710                $user->remove_cap( 'publish_pages' );
     711                $this->assertFalse( $user->has_cap( 'publish_pages' ) );
     712        }
    697713}