PluginProbe ʕ •ᴥ•ʔ
Advanced Access Manager – Access Governance for WordPress / trunk
Advanced Access Manager – Access Governance for WordPress vtrunk
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 / Restful / Configs.php
advanced-access-manager / application / Restful Last commit date
AccessDeniedRedirect.php 1 year ago AdminToolbar.php 1 year ago ApiRoute.php 1 year ago BackendMenu.php 1 year ago BackwardCompatibility.php 1 year ago Capability.php 1 year ago Configs.php 5 months ago Content.php 1 year ago Identity.php 1 year ago Jwt.php 5 months ago LoginRedirect.php 1 year ago LogoutRedirect.php 1 year ago Metabox.php 1 year ago Mu.php 1 year ago NotFoundRedirect.php 1 year ago Policies.php 1 year ago Roles.php 1 year ago SecureLogin.php 1 year ago SecurityAudit.php 1 year ago ServiceTrait.php 1 year ago Settings.php 1 year ago Urls.php 1 year ago Users.php 1 year ago Widgets.php 1 year ago
Configs.php
315 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 * RESTful API for the Configurations service
12 *
13 * @package AAM
14 * @version 7.0.0
15 */
16 class AAM_Restful_Configs
17 {
18
19 use AAM_Restful_ServiceTrait;
20
21 /**
22 * Necessary permissions to access endpoint
23 *
24 * @version 7.0.0
25 */
26 const PERMISSIONS = [
27 'aam_manager',
28 'aam_manage_configs'
29 ];
30
31 /**
32 * Constructor
33 *
34 * @return void
35 * @access protected
36 *
37 * @version 7.0.0
38 */
39 protected function __construct()
40 {
41 // Register API endpoint
42 add_action('rest_api_init', function() {
43 // Get list of all AAM configurations explicitly defined
44 $this->_register_route('/configs', array(
45 'methods' => WP_REST_Server::READABLE,
46 'callback' => array($this, 'get_configurations'),
47 ), self::PERMISSIONS, false);
48
49 // Get a single configuration
50 $this->_register_route('/config/(?P<key>[\w\.]+)', array(
51 'methods' => WP_REST_Server::READABLE,
52 'callback' => array($this, 'get_configuration'),
53 'args' => array(
54 'key' => array(
55 'description' => 'Configuration key',
56 'type' => 'string',
57 'required' => true
58 )
59 )
60 ), self::PERMISSIONS, false);
61
62 // Get ConfigPress
63 $this->_register_route('/configpress', array(
64 'methods' => WP_REST_Server::READABLE,
65 'callback' => array($this, 'get_configpress')
66 ), self::PERMISSIONS, false);
67
68 // Set config
69 $this->_register_route('/config/(?P<key>[\w\.]+)', array(
70 'methods' => WP_REST_Server::CREATABLE,
71 'callback' => array($this, 'set_configuration'),
72 'args' => array(
73 'key' => array(
74 'description' => 'Configuration key',
75 'type' => 'string',
76 'required' => true
77 ),
78 'value' => array(
79 'description' => 'Configuration value',
80 'type' => [
81 'string',
82 'number',
83 'boolean'
84 ],
85 'required' => true
86 )
87 )
88 ), self::PERMISSIONS, false);
89
90 // Set ConfigPress
91 $this->_register_route('/configpress', array(
92 'methods' => WP_REST_Server::CREATABLE,
93 'callback' => array($this, 'set_configpress'),
94 'args' => array(
95 'ini' => array(
96 'description' => 'ConfigPress INI',
97 'type' => 'string',
98 'required' => false
99 )
100 )
101 ), self::PERMISSIONS, false);
102
103 // Reset AAM configurations
104 $this->_register_route('/configs', array(
105 'methods' => WP_REST_Server::DELETABLE,
106 'callback' => array($this, 'reset_configurations')
107 ), self::PERMISSIONS, false);
108
109 // Reset AAM ConfigPress
110 $this->_register_route('/configpress', array(
111 'methods' => WP_REST_Server::DELETABLE,
112 'callback' => array($this, 'reset_configpress')
113 ), self::PERMISSIONS, false);
114 });
115 }
116
117 /**
118 * Get all defined configurations
119 *
120 * @return WP_REST_Response
121 * @access public
122 *
123 * @version 7.0.0
124 */
125 public function get_configurations()
126 {
127 try {
128 $result = AAM::api()->config->get();
129 } catch (Exception $e) {
130 $result = $this->_prepare_error_response($e);
131 }
132
133 return rest_ensure_response($result);
134 }
135
136 /**
137 * Get a single configuration
138 *
139 * @param WP_REST_Request $request
140 *
141 * @return WP_REST_Response
142 * @access public
143 *
144 * @version 7.0.0
145 */
146 public function get_configuration(WP_REST_Request $request)
147 {
148 try {
149 $key = $request->get_param('key');
150 $result = [
151 $key => AAM::api()->config->get($key)
152 ];
153 } catch (Exception $e) {
154 $result = $this->_prepare_error_response($e);
155 }
156
157 return rest_ensure_response($result);
158 }
159
160 /**
161 * Get ConfigPress
162 *
163 * @return WP_REST_Response
164 * @access public
165 *
166 * @version 7.0.0
167 */
168 public function get_configpress()
169 {
170 try {
171 // Read stored ConfigPress from DB
172 $raw = AAM::api()->db->read(AAM_Service_Core::DB_OPTION);
173
174 if (!empty($raw)) {
175 $parsed = parse_ini_string($raw, true, INI_SCANNER_TYPED);
176 $parsed = !empty($parsed['aam']) ? $parsed['aam'] : [];
177 } else {
178 $parsed = [];
179 }
180
181 $result = [
182 'ini' => empty($raw) ? '[aam]' : $raw,
183 'parsed' => $parsed
184 ];
185 } catch (Exception $e) {
186 $result = $this->_prepare_error_response($e);
187 }
188
189 return rest_ensure_response($result);
190 }
191
192 /**
193 * Set configuration
194 *
195 * @param WP_REST_Request $request
196 *
197 * @return WP_REST_Response
198 * @access public
199 *
200 * @version 7.0.0
201 */
202 public function set_configuration(WP_REST_Request $request)
203 {
204 try {
205 $key = $request->get_param('key');
206 $value = $request->get_param('value');
207
208 // Normalize the configuration value
209 if (in_array($value, [ 'true', 'false' ], true)) {
210 $value = filter_var($value, FILTER_VALIDATE_BOOLEAN);
211 } elseif (is_numeric($value)) {
212 $value = intval($value);
213 }
214
215 $status = AAM::api()->config->set($key, $value);
216
217 if ($status) {
218 $result = [
219 $key => AAM::api()->config->get($key)
220 ];
221 }
222 } catch (Exception $e) {
223 $result = $this->_prepare_error_response($e);
224 }
225
226 return rest_ensure_response($result);
227 }
228
229 /**
230 * Set ConfigPress
231 *
232 * @param WP_REST_Request $request
233 *
234 * @return WP_REST_Response
235 * @access public
236 *
237 * @version 7.1.0
238 */
239 public function set_configpress(WP_REST_Request $request)
240 {
241 try {
242 $raw = $request->get_param('ini');
243
244 if (!empty($raw)) {
245 $parsed = parse_ini_string($raw, true, INI_SCANNER_TYPED);
246 } else {
247 $parsed = [];
248 }
249
250 if (empty($parsed)) { // If empty - delete ConfigPress settings
251 $result = AAM::api()->db->delete(AAM_Service_Core::DB_OPTION);
252 } else {
253 $result = AAM::api()->db->write(
254 AAM_Service_Core::DB_OPTION, $raw
255 );
256 }
257
258 if ($result) {
259 $result = [
260 'ini' => $raw,
261 'parsed' => $parsed
262 ];
263 }
264 } catch (Exception $e) {
265 $result = $this->_prepare_error_response($e);
266 }
267
268 return rest_ensure_response($result);
269 }
270
271 /**
272 * Reset all configurations
273 *
274 * @return WP_REST_Response
275 * @access public
276 *
277 * @version 7.0.0
278 */
279 public function reset_configurations()
280 {
281 try {
282 $result = [
283 'success' => AAM::api()->config->reset()
284 ];
285 } catch (Exception $e) {
286 $result = $this->_prepare_error_response($e);
287 }
288
289 return rest_ensure_response($result);
290 }
291
292 /**
293 * Reset all configurations
294 *
295 * @return WP_REST_Response
296 * @access public
297 *
298 * @version 7.0.0
299 */
300 public function reset_configpress()
301 {
302 try {
303 $result = [
304 'success' => AAM::api()->db->delete(
305 AAM_Service_Core::DB_OPTION
306 )
307 ];
308 } catch (Exception $e) {
309 $result = $this->_prepare_error_response($e);
310 }
311
312 return rest_ensure_response($result);
313 }
314
315 }