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 / Settings.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
Settings.php
184 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 Settings service
12 *
13 * @package AAM
14 * @version 7.0.0
15 */
16 class AAM_Restful_Settings
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_settings'
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 settings that are explicitly defined
44 $this->_register_route('/settings', [
45 'methods' => WP_REST_Server::READABLE,
46 'callback' => array($this, 'get_settings')
47 ], self::PERMISSIONS);
48
49 // Set settings in bulk
50 $this->_register_route('/settings', [
51 'methods' => WP_REST_Server::CREATABLE,
52 'callback' => array($this, 'set_settings')
53 ], self::PERMISSIONS);
54
55 // Reset settings
56 $this->_register_route('/settings', [
57 'methods' => WP_REST_Server::DELETABLE,
58 'callback' => array($this, 'reset_settings')
59 ], self::PERMISSIONS);
60 });
61 }
62
63 /**
64 * Get all defined settings for everyone or specific access level
65 *
66 * @param WP_REST_Request $request
67 *
68 * @return WP_REST_Response
69 * @access public
70 *
71 * @version 7.0.0
72 */
73 public function get_settings(WP_REST_Request $request)
74 {
75 try {
76 if ($this->_has_access_level($request)) {
77 $result = $this->_get_service($request)->get_settings();
78 } else {
79 $result = AAM::api()->db->read(
80 AAM_Framework_Service_Settings::DB_OPTION, []
81 );
82 }
83 } catch (Exception $e) {
84 $result = $this->_prepare_error_response($e);
85 }
86
87 return rest_ensure_response($result);
88 }
89
90 /**
91 * Set settings
92 *
93 * @param WP_REST_Request $request
94 *
95 * @return WP_REST_Response
96 * @access public
97 *
98 * @version 7.0.0
99 */
100 public function set_settings(WP_REST_Request $request)
101 {
102 try {
103 if ($this->_has_access_level($request)) {
104 $result = $this->_get_service($request)->set_settings(
105 $request->get_json_params()
106 );
107 } else {
108 $result = AAM::api()->db->write(
109 AAM_Framework_Service_Settings::DB_OPTION,
110 $request->get_json_params()
111 );
112 }
113
114 $result = [ 'success' => $result ];
115 } catch (Exception $e) {
116 $result = $this->_prepare_error_response($e);
117 }
118
119 return rest_ensure_response($result);
120 }
121
122 /**
123 * Reset all settings
124 *
125 * @param WP_REST_Request $request
126 *
127 * @return WP_REST_Response
128 * @access public
129 *
130 * @version 7.0.0
131 */
132 public function reset_settings(WP_REST_Request $request)
133 {
134 try {
135 if ($this->_has_access_level($request)) {
136 $result = $this->_get_service($request)->reset();
137 } else {
138 $result = AAM::api()->db->delete(
139 AAM_Framework_Service_Settings::DB_OPTION
140 );
141 }
142
143 $result = [ 'success' => $result ];
144 } catch (Exception $e) {
145 $result = $this->_prepare_error_response($e);
146 }
147
148 return rest_ensure_response($result);
149 }
150
151 /**
152 * Get service
153 *
154 * @param WP_REST_Request $request
155 * @access private
156 *
157 * @version 7.0.0
158 */
159 private function _get_service(WP_REST_Request $request)
160 {
161 return AAM::api()->settings(
162 $this->_determine_access_level($request),
163 [ 'error_handling' => 'exception' ]
164 );
165 }
166
167 /**
168 * Determine if access level is provided
169 *
170 * @param WP_REST_Request $request
171 *
172 * @return bool
173 * @access private
174 *
175 * @version 7.0.0
176 */
177 private function _has_access_level($request)
178 {
179 $access_level = $this->_determine_access_level($request);
180
181 return !is_null($access_level);
182 }
183
184 }