PluginProbe ʕ •ᴥ•ʔ
Advanced Access Manager – Access Governance for WordPress / 5.9
Advanced Access Manager – Access Governance for WordPress v5.9
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 / Feature.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
Feature.php
156 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 * AAM Backend Feature
12 *
13 * This class is used to hold the list of all registered UI features with few neat
14 * methods to manipulate it.
15 *
16 * @author Vasyl Martyniuk <vasyl@vasyltech.com>
17 */
18 class AAM_Backend_Feature {
19
20 /**
21 * Collection of features
22 *
23 * @var array
24 *
25 * @access private
26 * @static
27 */
28 static private $_features = array();
29
30 /**
31 * Register UI Feature
32 *
33 * @param stdClass $feature
34 *
35 * @return boolean
36 *
37 * @access public
38 * @static
39 */
40 public static function registerFeature(stdClass $feature) {
41 $response = false;
42
43 if (empty($feature->capability)){
44 $cap = 'aam_manager';
45 } else {
46 $cap = $feature->capability;
47 }
48
49 if (isset($feature->option)) {
50 $show = self::isVisible($feature->option);
51 } else {
52 $show = true;
53 }
54
55 if ($show && current_user_can($cap)) {
56 self::$_features[] = $feature;
57 $response = true;
58 }
59
60 return $response;
61 }
62
63 /**
64 * Check if feature is visible
65 *
66 * There is a way to show/hide feature based on the option. For example some
67 * features should be visible only when Backend Access options is enabled.
68 *
69 * @param string $options
70 *
71 * @return boolean
72 *
73 * @access protected
74 */
75 protected static function isVisible($options) {
76 $count = 0;
77
78 foreach(explode(',', $options) as $option) {
79 $count += AAM_Core_Config::get($option, true);
80 }
81
82 return ($count > 0);
83 }
84
85 /**
86 * Initiate the Controller
87 *
88 * @param stdClass $feature
89 *
90 * @return stdClass
91 *
92 * @access public
93 * @static
94 */
95 public static function initView(stdClass $feature){
96 if (is_string($feature->view)){
97 $feature->view = new $feature->view(AAM_Backend_Subject::getInstance());
98 }
99
100 return $feature;
101 }
102
103 /**
104 * Retrieve list of features
105 *
106 * Retrieve sorted list of featured based on current subject
107 *
108 * @param string $type
109 *
110 * @return array
111 *
112 * @access public
113 * @static
114 */
115 public static function retrieveList($type) {
116 $response = array();
117
118 $subject = AAM_Backend_Subject::getInstance()->getUID();
119 foreach (self::$_features as $feature) {
120 $ftype = (!empty($feature->type) ? $feature->type : 'main'); //TODO - legacy Nov 2018
121 if ($ftype === $type
122 && (empty($feature->subjects) || in_array($subject, $feature->subjects, true))) {
123 $response[] = self::initView($feature);
124 }
125 }
126 usort($response, 'AAM_Backend_Feature::reorder');
127
128 return $response;
129 }
130
131 /**
132 * Order list of features
133 *
134 * Reorganize the list based on "position" attribute
135 *
136 * @param array $features
137 *
138 * @return array
139 *
140 * @access public
141 * @static
142 */
143 public static function reorder($feature_a, $feature_b){
144 $pos_a = (empty($feature_a->position) ? 9999 : $feature_a->position);
145 $pos_b = (empty($feature_b->position) ? 9999 : $feature_b->position);
146
147 if ($pos_a === $pos_b){
148 $response = 0;
149 } else {
150 $response = ($pos_a < $pos_b ? -1 : 1);
151 }
152
153 return $response;
154 }
155
156 }