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 / Core / Object / Uri.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 Policy.php 7 years ago Post.php 7 years ago Redirect.php 7 years ago Route.php 7 years ago Toolbar.php 7 years ago Uri.php 7 years ago Visibility.php 7 years ago
Uri.php
185 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 * URI object
12 *
13 * @package AAM
14 * @author Vasyl Martyniuk <vasyl@vasyltech.com>
15 */
16 class AAM_Core_Object_Uri 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('uri');
31
32 if (!empty($option)) {
33 $this->setOverwritten(true);
34 }
35
36 if (empty($option)) {
37 $stms = AAM_Core_Policy_Manager::getInstance()->find(
38 "/^URI:/i", $subject
39 );
40
41 foreach($stms as $key => $stm) {
42 $chunks = explode(':', $key);
43 $effect = ($stm['Effect'] === 'deny' ? 1 : 0);
44 $type = $stm['Effect'];
45 $destination = null;
46
47 if ($effect === 1 && !empty($stm['Metadata']['Redirect'])) {
48 $type = strtolower($stm['Metadata']['Redirect']['Type']);
49
50 switch($type) {
51 case 'message':
52 $destination = $stm['Metadata']['Redirect']['Message'];
53 break;
54
55 case 'page':
56 if (isset($stm['Metadata']['Redirect']['Id'])) {
57 $destination = intval($stm['Metadata']['Redirect']['Id']);
58 } elseif (isset($stm['Metadata']['Redirect']['Slug'])) {
59 $page = $post = get_page_by_path(
60 $stm['Metadata']['Redirect']['Slug'], OBJECT
61 );
62 $destination = (is_a($page, 'WP_Post') ? $page->ID : 0);
63 }
64 break;
65
66 case 'url':
67 $destination = filter_var(
68 $stm['Metadata']['Redirect']['URL'],
69 FILTER_VALIDATE_URL
70 );
71 if (empty($destination)) {
72 $type = 'message';
73 $destination = "Invalid URL: [{$stm['Metadata']['Redirect']['URL']}]";
74 }
75 break;
76
77 case 'callback':
78 $destination = $stm['Metadata']['Redirect']['Callback'];
79 break;
80 }
81 }
82
83 $option[crc32($chunks[1] . $type. $destination)] = array(
84 'uri' => $chunks[1],
85 'type' => $type,
86 'action' => $destination
87 );
88 }
89 }
90
91 if (empty($option)) {
92 $option = $this->getSubject()->inheritFromParent('uri');
93 }
94
95 $this->setOption($option);
96 }
97
98 /**
99 *
100 * @param type $uri
101 *
102 * @return null|array
103 */
104 public function findMatch($s, $params = array()) {
105 $match = null;
106 $options = $this->getOption();
107
108 if (!empty($options)) {
109 foreach($options as $rule) {
110 $uri = wp_parse_url($rule['uri']);
111 $out = array();
112
113 if (!empty($uri['query'])) {
114 parse_str($uri['query'], $out);
115 }
116
117 $regex = '@^' . preg_quote($uri['path']) . '$@';
118
119 if (apply_filters('aam-uri-match-filter', preg_match($regex, $s), $uri, $s)
120 && (empty($out) || count(array_intersect_assoc($params, $out)) === count($out))) {
121 $match = $rule;
122 break;
123 }
124 }
125 }
126
127 return $match;
128 }
129
130 /**
131 * Save menu option
132 *
133 * @return bool
134 *
135 * @access public
136 */
137 public function save($id, $uri, $type, $action = null) {
138 $option = $this->getOption();
139 $option[$id] = array(
140 'uri' => $uri,
141 'type' => $type,
142 'action' => $action
143 );
144 $this->setOption($option);
145
146 return $this->getSubject()->updateOption($this->getOption(), 'uri');
147 }
148
149 /**
150 *
151 * @param type $id
152 *
153 * @return type
154 */
155 public function delete($id) {
156 $option = $this->getOption();
157 if (isset($option[$id])) {
158 unset($option[$id]);
159 }
160 $this->setOption($option);
161
162 return $this->getSubject()->updateOption($this->getOption(), 'uri');
163 }
164
165 /**
166 * Reset default settings
167 *
168 * @return bool
169 *
170 * @access public
171 */
172 public function reset() {
173 return $this->getSubject()->deleteOption('uri');
174 }
175
176 /**
177 *
178 * @param type $external
179 * @return type
180 */
181 public function mergeOption($external) {
182 return array_merge($external, $this->getOption());
183 }
184
185 }