PluginProbe ʕ •ᴥ•ʔ
Advanced Access Manager – Access Governance for WordPress / 5.8.2
Advanced Access Manager – Access Governance for WordPress v5.8.2
6.8.4 6.8.5 6.9.0 6.9.1 6.9.10 6.9.11 6.9.12 6.9.13 6.9.14 6.9.15 6.9.16 6.9.17 6.9.18 6.9.19 6.9.2 6.9.20 6.9.21 6.9.22 6.9.23 6.9.24 6.9.25 6.9.26 6.9.27 6.9.28 6.9.29 6.9.3 6.9.30 6.9.31 6.9.32 6.9.33 6.9.34 6.9.35 6.9.36 6.9.37 6.9.38 6.9.39 6.9.4 6.9.41 6.9.42 6.9.43 6.9.44 6.9.45 6.9.46 6.9.47 6.9.48 6.9.49 6.9.5 6.9.51 6.9.6 6.9.7 6.9.8 6.9.9 7.0.0 7.0.0-alpha.6 7.0.0-alpha.7 7.0.0-beta.1 7.0.0-rc1 7.0.0-rc2 7.0.0-rc3 7.0.1 7.0.10 7.0.11 7.0.2 7.0.3 7.0.4 7.0.5 7.0.6 7.0.7 7.0.8 7.0.9 7.1.0 7.1.1 trunk 3.0 4.0 4.0.1 4.1 4.2 4.3 4.4 4.4.1 4.5 4.6 4.6.1 4.6.2 4.7 4.7.1 4.7.2 4.7.5 4.7.6 4.8 4.8.1 4.9 4.9.1 4.9.2 4.9.3 4.9.4 4.9.5 4.9.5.1 4.9.5.2 5.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1 5.1.1 5.10 5.11 5.2 5.2.1 5.2.5 5.2.6 5.2.7 5.3 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.4 5.4.1 5.4.2 5.4.3 5.4.3.1 5.4.3.2 5.5 5.5.1 5.5.2 5.6 5.6.1 5.6.1.1 5.7 5.7.1 5.7.2 5.7.3 5.8 5.8.1 5.8.2 5.8.3 5.9 5.9.1 5.9.1.1 5.9.2 5.9.2.1 5.9.3 5.9.4 5.9.5 5.9.6 5.9.6.1 5.9.6.2 5.9.6.3 5.9.7 5.9.7.1 5.9.7.2 5.9.7.3 5.9.8 5.9.8.1 5.9.9 5.9.9.1 6.0.0 6.0.1 6.0.2 6.0.3 6.0.4 6.0.5 6.1.0 6.1.1 6.2.0 6.2.1 6.2.2 6.3.0 6.3.1 6.3.2 6.3.3 6.4.0 6.4.1 6.4.2 6.4.3 6.5.0 6.5.1 6.5.2 6.5.3 6.5.4 6.6.0 6.6.1 6.6.2 6.6.3 6.6.4 6.7.0 6.7.1 6.7.2 6.7.3 6.7.4 6.7.5 6.7.6 6.7.7 6.7.8 6.7.9 6.8.0 6.8.1 6.8.2 6.8.3
advanced-access-manager / Application / Core / Object / Capability.php
advanced-access-manager / Application / Core / Object Last commit date
Cache.php 7 years ago Capability.php 7 years ago LoginRedirect.php 7 years ago LogoutRedirect.php 7 years ago Menu.php 7 years ago Metabox.php 7 years ago Policy.php 7 years ago Post.php 7 years ago Redirect.php 7 years ago Route.php 7 years ago Toolbar.php 7 years ago Uri.php 7 years ago Visibility.php 7 years ago
Capability.php
116 lines
1 <?php
2
3 /**
4 * ======================================================================
5 * LICENSE: This file is subject to the terms and conditions defined in *
6 * file 'license.txt', which is part of this source code package. *
7 * ======================================================================
8 */
9
10 /**
11 * Capability object
12 *
13 * @package AAM
14 * @author Vasyl Martyniuk <vasyl@vasyltech.com>
15 */
16 class AAM_Core_Object_Capability extends AAM_Core_Object {
17
18 /**
19 * Constructor
20 *
21 * @param AAM_Core_Subject $subject
22 *
23 * @return void
24 *
25 * @access public
26 */
27 public function __construct(AAM_Core_Subject $subject) {
28 parent::__construct($subject);
29
30 $caps = $this->getSubject()->getCapabilities();
31
32 // Load Capabilities from the policy
33 $stms = AAM_Core_Policy_Manager::getInstance()->find(
34 "/^Capability:/i", $subject
35 );
36
37 foreach($stms as $key => $stm) {
38 $chunks = explode(':', $key);
39 if (count($chunks) === 2) {
40 $caps[$chunks[1]] = ($stm['Effect'] === 'allow' ? 1 : 0);
41 }
42 }
43
44 //check if capabilities are overwritten but only for user subject
45 if (is_a($this->getSubject(), 'AAM_Core_Subject_User')) {
46 $userCaps = get_user_option(
47 AAM_Core_Subject_User::AAM_CAPKEY, $this->getSubject()->getId()
48 );
49 if (!empty($userCaps)) {
50 $caps = array_merge($caps, $userCaps);
51 $this->setOverwritten(true);
52 }
53 }
54
55 $this->setOption($caps);
56 }
57
58 /**
59 * Update subject's capability
60 *
61 * @param string $capability
62 * @param bool $granted
63 *
64 * @return bool
65 *
66 * @access public
67 */
68 public function save($capability, $granted) {
69 if (intval($granted)) {
70 $result = $this->getSubject()->addCapability($capability);
71 } else {
72 $result = $this->getSubject()->removeCapability($capability);
73 }
74
75 return $result;
76 }
77
78 /**
79 * Check if subject has specified capability
80 *
81 * @param string $capability
82 *
83 * @return bool
84 *
85 * @access public
86 */
87 public function has($capability) {
88 return $this->getSubject()->hasCapability($capability);
89 }
90
91 /**
92 * Assign capability to user
93 *
94 * @param string $capability
95 *
96 * @return boolean
97 *
98 * @access public
99 */
100 public function add($capability) {
101 return $this->save($capability, 1);
102 }
103
104 /**
105 * Remove capability from user
106 *
107 * @param string $capability
108 *
109 * @return boolean
110 *
111 * @access public
112 */
113 public function remove($capability) {
114 return $this->save($capability, 0);
115 }
116 }