PluginProbe ʕ •ᴥ•ʔ
Advanced Access Manager – Access Governance for WordPress / 5.3
Advanced Access Manager – Access Governance for WordPress v5.3
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 8 years ago View 8 years ago Widget 8 years ago phtml 8 years ago Authorization.php 8 years ago Feature.php 8 years ago Filter.php 8 years ago Manager.php 8 years ago Subject.php 8 years ago View.php 8 years ago
Subject.php
172 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 $this->setSubject(new $classname(stripslashes($id)));
74 }
75 }
76
77 /**
78 * Initialize default subject
79 *
80 * Based on user permissions, pick the first available subject that current user
81 * can manage with AAM UI
82 *
83 * @return void
84 *
85 * @access protected
86 */
87 protected function initDefaultSubject() {
88 $user = intval(AAM_Core_Request::get('user'));
89
90 if ($user && current_user_can('list_users')) {
91 $this->initRequestedSubject(AAM_Core_Subject_User::UID, $user);
92 } elseif (current_user_can('aam_list_roles')) {
93 $roles = array_keys(get_editable_roles());
94 $this->initRequestedSubject(AAM_Core_Subject_Role::UID, array_shift($roles));
95 } elseif (current_user_can('aam_manage_visitors')) {
96 $this->initRequestedSubject(AAM_Core_Subject_Visitor::UID, null);
97 } elseif (current_user_can('aam_manage_default')) {
98 $this->initRequestedSubject(AAM_Core_Subject_Default::UID, null);
99 }
100 }
101
102 /**
103 * Set subject
104 *
105 * @param AAM_Core_Subject $subject
106 *
107 * @access protected
108 */
109 protected function setSubject(AAM_Core_Subject $subject) {
110 $this->subject = $subject;
111 }
112
113 /**
114 * Get subject property
115 *
116 * @return mixed
117 *
118 * @access public
119 */
120 public function __get($name) {
121 return (!empty($this->subject->$name) ? $this->subject->$name : null);
122 }
123
124 /**
125 * Call subject's method
126 *
127 * @param string $name
128 * @param array $args
129 *
130 * @return mized
131 *
132 * @access public
133 */
134 public function __call($name, $args) {
135 //make sure that method is callable
136 if (method_exists($this->subject, $name)) {
137 $response = call_user_func_array(array($this->subject, $name), $args);
138 } else {
139 $response = null;
140 }
141
142 return $response;
143 }
144
145 /**
146 * Get AAM subject
147 *
148 * @return AAM_Core_Subject
149 *
150 * @access public
151 */
152 public function get() {
153 return $this->subject;
154 }
155
156 /**
157 * Get single instance of the subject
158 *
159 * @return AAM_Backend_Subject
160 *
161 * @access public
162 * @static
163 */
164 public static function getInstance() {
165 if (is_null(self::$instance)) {
166 self::$instance = new self;
167 }
168
169 return self::$instance;
170 }
171
172 }