1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
<?php /** * User API: WP_Role class * * @package WordPress * @subpackage Users * @since 4.4.0 */
/** * Core class used to extend the user roles API. * * @since 2.0.0 */ class WP_Role { /** * Role name. * * @since 2.0.0 * @var string */ public $name;
/** * List of capabilities the role contains. * * @since 2.0.0 * @var array */ public $capabilities;
/** * Constructor - Set up object properties. * * The list of capabilities, must have the key as the name of the capability * and the value a boolean of whether it is granted to the role. * * @since 2.0.0 * * @param string $role Role name. * @param array $capabilities List of capabilities. */ public function __construct( $role, $capabilities ) { $this->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 bool[] $capabilities Associative array of capabilities for the role. * @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; } }
}
|