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 / Backend / Subject.php
advanced-access-manager / Application / Backend Last commit date
Feature 7 years ago View 7 years ago Widget 7 years ago phtml 7 years ago Authorization.php 7 years ago Feature.php 7 years ago Filter.php 7 years ago Manager.php 7 years ago Subject.php 7 years ago View.php 7 years ago
Subject.php
184 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 * Backend subject
12 *
13 * Currently managed subject. Based on the HTTP request critiria, define what subject
14 * is currently managed with AAM UI.
15 *
16 * @package AAM
17 * @author Vasyl Martyniuk <vasyl@vasyltech.com>
18 */
19 class AAM_Backend_Subject {
20
21 /**
22 * Single instance of itself
23 *
24 * @var AAM_Backend_Subject
25 *
26 * @access protected
27 * @static
28 */
29 protected static $instance = null;
30
31 /**
32 * Subject information
33 *
34 * @var AAM_Core_Subject
35 *
36 * @access protected
37 */
38 protected $subject = null;
39
40 /**
41 * Constructor
42 *
43 * @return void
44 *
45 * @access protected
46 */
47 protected function __construct() {
48 $subject = AAM_Core_Request::request('subject');
49
50 if ($subject) {
51 $this->initRequestedSubject(
52 $subject, AAM_Core_Request::request('subjectId')
53 );
54 } else {
55 $this->initDefaultSubject();
56 }
57 }
58
59 /**
60 * Initialize requested subject
61 *
62 * @param string $type
63 * @param string $id
64 *
65 * @return void
66 *
67 * @access protected
68 */
69 protected function initRequestedSubject($type, $id) {
70 $classname = 'AAM_Core_Subject_' . ucfirst($type);
71
72 if (class_exists($classname)) {
73 $subject = new $classname(stripslashes($id));
74
75 // Load access policy
76 $subject->getObject('policy');
77
78 $this->setSubject($subject);
79 }
80 }
81
82 /**
83 * Initialize default subject
84 *
85 * Based on user permissions, pick the first available subject that current user
86 * can manage with AAM UI
87 *
88 * @return void
89 *
90 * @access protected
91 */
92 protected function initDefaultSubject() {
93 // This cover the scenario when we directly go to user e.g. ?page=aam&user=38
94 $forceUser = AAM_Core_Request::get('user');
95
96 // TODO: The aam_list_roles is legacy and can be removed in Oct 2021
97 if (!$forceUser && (current_user_can('aam_manage_roles') || current_user_can('aam_list_roles'))) {
98 $roles = array_keys(get_editable_roles());
99 $this->initRequestedSubject(AAM_Core_Subject_Role::UID, array_shift($roles));
100 // TODO: The list_users is legacy and can be removed in Oct 2021
101 } elseif (current_user_can('aam_manage_users') || current_user_can('list_users')) {
102 $this->initRequestedSubject(
103 AAM_Core_Subject_User::UID,
104 ($forceUser ? intval($forceUser) : get_current_user_id())
105 );
106 // TODO: The aam_list_roles is legacy and can be removed in Oct 2021
107 } elseif (current_user_can('aam_manage_visitors')) {
108 $this->initRequestedSubject(AAM_Core_Subject_Visitor::UID, null);
109 } elseif (current_user_can('aam_manage_default')) {
110 $this->initRequestedSubject(AAM_Core_Subject_Default::UID, null);
111 }
112 }
113
114 /**
115 * Set subject
116 *
117 * @param AAM_Core_Subject $subject
118 *
119 * @access protected
120 */
121 protected function setSubject(AAM_Core_Subject $subject) {
122 $this->subject = $subject;
123 }
124
125 /**
126 * Get subject property
127 *
128 * @return mixed
129 *
130 * @access public
131 */
132 public function __get($name) {
133 return (!empty($this->subject->$name) ? $this->subject->$name : null);
134 }
135
136 /**
137 * Call subject's method
138 *
139 * @param string $name
140 * @param array $args
141 *
142 * @return mized
143 *
144 * @access public
145 */
146 public function __call($name, $args) {
147 //make sure that method is callable
148 if (method_exists($this->subject, $name)) {
149 $response = call_user_func_array(array($this->subject, $name), $args);
150 } else {
151 $response = null;
152 }
153
154 return $response;
155 }
156
157 /**
158 * Get AAM subject
159 *
160 * @return AAM_Core_Subject
161 *
162 * @access public
163 */
164 public function get() {
165 return $this->subject;
166 }
167
168 /**
169 * Get single instance of the subject
170 *
171 * @return AAM_Backend_Subject
172 *
173 * @access public
174 * @static
175 */
176 public static function getInstance() {
177 if (is_null(self::$instance)) {
178 self::$instance = new self;
179 }
180
181 return self::$instance;
182 }
183
184 }