diff -r 490d5cc509ed -r cf61fcea0001 wp/wp-includes/class-wp-role.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wp/wp-includes/class-wp-role.php Mon Oct 14 17:39:30 2019 +0200 @@ -0,0 +1,109 @@ +name = $role; + $this->capabilities = $capabilities; + } + + /** + * Assign role a capability. + * + * @since 2.0.0 + * + * @param string $cap Capability name. + * @param bool $grant Whether role has capability privilege. + */ + public function add_cap( $cap, $grant = true ) { + $this->capabilities[$cap] = $grant; + wp_roles()->add_cap( $this->name, $cap, $grant ); + } + + /** + * Removes a capability from a role. + * + * This is a container for WP_Roles::remove_cap() to remove the + * capability from the role. That is to say, that WP_Roles::remove_cap() + * implements the functionality, but it also makes sense to use this class, + * because you don't need to enter the role name. + * + * @since 2.0.0 + * + * @param string $cap Capability name. + */ + public function remove_cap( $cap ) { + unset( $this->capabilities[$cap] ); + wp_roles()->remove_cap( $this->name, $cap ); + } + + /** + * Determines whether the role has the given capability. + * + * The capabilities is passed through the {@see 'role_has_cap'} filter. + * The first parameter for the hook is the list of capabilities the class + * has assigned. The second parameter is the capability name to look for. + * The third and final parameter for the hook is the role name. + * + * @since 2.0.0 + * + * @param string $cap Capability name. + * @return bool True if the role has the given capability. False otherwise. + */ + public function has_cap( $cap ) { + /** + * Filters which capabilities a role has. + * + * @since 2.0.0 + * + * @param array $capabilities Array of role capabilities. + * @param string $cap Capability name. + * @param string $name Role name. + */ + $capabilities = apply_filters( 'role_has_cap', $this->capabilities, $cap, $this->name ); + + if ( !empty( $capabilities[$cap] ) ) + return $capabilities[$cap]; + else + return false; + } + +}