PluginProbe ʕ •ᴥ•ʔ
Advanced Access Manager – Access Governance for WordPress / 4.0
Advanced Access Manager – Access Governance for WordPress v4.0
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 / Menu.php
advanced-access-manager / Application / Core / Object Last commit date
Capability.php 9 years ago LoginRedirect.php 9 years ago Menu.php 9 years ago Metabox.php 9 years ago Post.php 9 years ago Redirect.php 9 years ago Teaser.php 9 years ago
Menu.php
126 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 * Menu object
12 *
13 * @package AAM
14 * @author Vasyl Martyniuk <vasyl@vasyltech.com>
15 */
16 class AAM_Core_Object_Menu 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('menu');
31
32 if (empty($option)) {
33 $option = $this->getSubject()->inheritFromParent('menu');
34 } else {
35 $this->setOverwritten(true);
36 }
37
38 $this->setOption($option);
39 }
40
41 /**
42 * Filter Menu List
43 *
44 * Keep in mind that this funciton only filter the menu items but do not
45 * restrict access to them. You have to explore roles and capabilities to
46 * control the full access to menus.
47 *
48 * @global array $menu
49 * @global array $submenu
50 *
51 * @return void
52 *
53 * @access public
54 */
55 public function filter() {
56 global $menu, $submenu;
57
58 foreach ($menu as $id => $item) {
59 if ($this->has('menu-' . $item[2])) {
60 unset($menu[$id]);
61 }
62
63 if (!empty($submenu[$item[2]])) {
64 $this->filterSubmenu($item[2]);
65 }
66 }
67 }
68
69 /**
70 * Filter submenu
71 *
72 * @param string $parent
73 *
74 * @return void
75 *
76 * @access protected
77 * @global array $menu
78 * @global array $submenu
79 */
80 protected function filterSubmenu($parent) {
81 global $submenu;
82
83 foreach ($submenu[$parent] as $id => $item) {
84 if ($this->has($item[2])) {
85 unset($submenu[$parent][$id]);
86 }
87 }
88 }
89
90 /**
91 * Check is menu defined
92 *
93 * Check if menu defined in options based on the id
94 *
95 * @param string $menu
96 *
97 * @return boolean
98 *
99 * @access public
100 */
101 public function has($menu) {
102 //decode URL in case of any special characters like &amp;
103 $decoded = htmlspecialchars_decode($menu);
104 $options = $this->getOption();
105
106 return !empty($options[$decoded]);
107 }
108
109 /**
110 * @inheritdoc
111 */
112 public function save($menu, $granted) {
113 $option = $this->getOption();
114 $option[$menu] = $granted;
115
116 return $this->getSubject()->updateOption($option, 'menu');
117 }
118
119 /**
120 *
121 */
122 public function reset() {
123 return $this->getSubject()->deleteOption('menu');
124 }
125
126 }