PluginProbe ʕ •ᴥ•ʔ
Advanced Access Manager – Access Governance for WordPress / 5.4
Advanced Access Manager – Access Governance for WordPress v5.4
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 / Metabox.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 Post.php 7 years ago Redirect.php 7 years ago Route.php 7 years ago Toolbar.php 7 years ago Visibility.php 7 years ago
Metabox.php
201 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 * Metabox object
12 *
13 * @package AAM
14 * @author Vasyl Martyniuk <vasyl@vasyltech.com>
15 */
16 class AAM_Core_Object_Metabox 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 $option = $this->getSubject()->readOption('metabox');
31
32 if (empty($option)) {
33 $option = $this->getSubject()->inheritFromParent('metabox');
34 } else {
35 $this->setOverwritten(true);
36 }
37
38 $this->setOption($option);
39 }
40
41 /**
42 *
43 * @global type $wp_registered_widgets
44 * @param type $sidebar_widgets
45 * @return type
46 */
47 public function filterFrontend($sidebar_widgets) {
48 global $wp_registered_widgets;
49
50 if (is_array($wp_registered_widgets)) {
51 foreach ($wp_registered_widgets as $id => $widget) {
52 $callback = $this->getWidgetCallback($widget);
53 if ($this->has('widgets', $callback)) {
54 unregister_widget($callback);
55 //remove it from registered widget global var!!
56 //INFORM: Why Unregister Widget does not clear global var?
57 unset($wp_registered_widgets[$id]);
58 }
59 }
60 }
61
62 return $sidebar_widgets;
63 }
64
65 /**
66 *
67 * @param type $widget
68 * @return type
69 */
70 protected function getWidgetCallback($widget) {
71 if (is_object($widget['callback'][0])) {
72 $callback = get_class($widget['callback'][0]);
73 } elseif (is_string($widget['callback'][0])) {
74 $callback = $widget['callback'][0];
75 } else {
76 $callback = isset($widget['classname']) ? $widget['classname'] : null;
77 }
78
79 return $callback;
80 }
81
82 /**
83 *
84 * @global type $wp_meta_boxes
85 * @param type $screen
86 */
87 public function filterBackend($screen) {
88 global $wp_meta_boxes;
89
90 if (is_array($wp_meta_boxes)) {
91 foreach ($wp_meta_boxes as $screen_id => $zones) {
92 if ($screen == $screen_id) {
93 $this->filterZones($zones, $screen_id);
94 }
95 }
96 }
97 }
98
99 /**
100 *
101 * @global type $wp_registered_widgets
102 */
103 public function filterAppearanceWidgets() {
104 global $wp_registered_widgets;
105
106 foreach($wp_registered_widgets as $id => $widget) {
107 $callback = $this->getWidgetCallback($widget);
108 if ($this->has('widgets', $callback)) {
109 unregister_widget($callback);
110 unset($wp_registered_widgets[$id]);
111 }
112 }
113 }
114
115 /**
116 *
117 * @param type $zones
118 * @param type $screen_id
119 */
120 protected function filterZones($zones, $screen_id) {
121 foreach ($zones as $zone => $priorities) {
122 foreach ($priorities as $metaboxes) {
123 $this->filterMetaboxes($zone, $metaboxes, $screen_id);
124 }
125 }
126 }
127
128 /**
129 *
130 * @param type $zone
131 * @param type $metaboxes
132 * @param type $screen_id
133 */
134 protected function filterMetaboxes($zone, $metaboxes, $screen_id) {
135 foreach (array_keys($metaboxes) as $metabox) {
136 if ($this->has($screen_id, $metabox)) {
137 remove_meta_box($metabox, $screen_id, $zone);
138 }
139 }
140 }
141
142 /**
143 * @inheritdoc
144 */
145 public function save($metabox, $granted) {
146 $param = explode('|', $metabox);
147 $option = $this->getOption();
148
149 $option[$param[0]][$param[1]] = $granted;
150
151 return $this->getSubject()->updateOption($option, 'metabox');
152 }
153
154 /**
155 *
156 */
157 public function reset() {
158 return $this->getSubject()->deleteOption('metabox');
159 }
160
161 /**
162 *
163 * @param type $screen
164 * @param type $metabox
165 * @return type
166 */
167 public function has($screen, $metabox) {
168 $options = $this->getOption();
169
170 return !empty($options[$screen][$metabox]);
171 }
172
173 /**
174 * Allow access to a specific metabox
175 *
176 * @param string $screen
177 * @param string $metabox
178 *
179 * @return boolean
180 *
181 * @access public
182 */
183 public function allow($screen, $metabox) {
184 $this->save("{$screen}|{$metabox}", 0);
185 }
186
187 /**
188 * Deny access to a specific metabox
189 *
190 * @param string $screen
191 * @param string $metabox
192 *
193 * @return boolean
194 *
195 * @access public
196 */
197 public function deny($screen, $metabox) {
198 return $this->save("{$screen}|{$metabox}", 1);
199 }
200
201 }