Version Description
- Fixed the bug with multi-lingual support
- Fixed the bug with LIMIT option that escaped quotes in the message
- Fixed the bug with managing access to Access Policies
- Added support for aam_edit_policy, aam_read_policy, aam_delete_policy, aam_delete_policies, aam_edit_policies, aam_edit_other_policies, aam_publish_policies capabilities
- Refactored Default Category functionality (moved it to Plus Package extension)
- Added support for the nav_menu_meta_box_object hook to filter posts on Menu Builder page
- Extend Access Policy with more features
Download this release
Release Info
Developer | vasyltech |
Plugin | Advanced Access Manager |
Version | 5.8.3 |
Comparing to | |
See all releases |
Code changes from version 5.8.2 to 5.8.3
- Application/Backend/Feature/Main/Capability.php +8 -50
- Application/Backend/Feature/Main/Post.php +1 -1
- Application/Backend/Filter.php +0 -29
- Application/Backend/Manager.php +15 -0
- Application/Backend/Subject.php +1 -3
- Application/Core/API.php +2 -4
- Application/Core/Compatibility.php +29 -21
- Application/Core/Gateway.php +35 -38
- Application/Core/JwtAuth.php +2 -2
- Application/Core/Object.php +1 -3
- Application/Core/Object/Cache.php +0 -19
- Application/Core/Object/Capability.php +1 -3
- Application/Core/Object/Menu.php +1 -3
- Application/Core/Object/Metabox.php +1 -3
- Application/Core/Object/Policy.php +2 -356
- Application/Core/Object/Post.php +3 -3
- Application/Core/Object/Route.php +1 -3
- Application/Core/Object/Toolbar.php +1 -3
- Application/Core/Object/Uri.php +1 -3
- Application/Core/Object/Visibility.php +2 -3
- Application/Core/Policy/Condition.php +49 -34
- Application/Core/Policy/Factory.php +54 -0
- Application/Core/Policy/Manager.php +228 -34
- Application/Core/Policy/Token.php +31 -11
- Application/Core/Subject/Role.php +4 -4
- Application/Core/Subject/User.php +70 -66
- Application/Extension/List.php +2 -2
- Application/Shared/Manager.php +14 -9
- Lang/advanced-access-manager-en_US.mo +0 -0
- Lang/advanced-access-manager-en_US.po +683 -372
- aam.php +2 -5
- media/font/fontello.eot +0 -0
- media/font/fontello.svg +3 -1
- media/font/fontello.ttf +0 -0
- media/font/fontello.woff +0 -0
- media/font/fontello.woff2 +0 -0
- readme.txt +10 -1
Application/Backend/Feature/Main/Capability.php
CHANGED
@@ -55,7 +55,8 @@ class AAM_Backend_Feature_Main_Capability extends AAM_Backend_Feature_Abstract {
|
|
55 |
'aam_manage_default', 'aam_manage_visitors', 'aam_manage_roles', 'aam_manage_users',
|
56 |
'aam_edit_roles', 'aam_delete_roles', 'aam_toggle_users', 'aam_switch_users',
|
57 |
'aam_manage_configpress', 'aam_manage_api_routes', 'aam_manage_uri', 'aam_manage_policy',
|
58 |
-
'aam_view_help_btn'
|
|
|
59 |
)
|
60 |
);
|
61 |
|
@@ -154,7 +155,7 @@ class AAM_Backend_Feature_Main_Capability extends AAM_Backend_Feature_Abstract {
|
|
154 |
|
155 |
$toggle = ($subject->hasCapability($cap) ? 'checked' : 'unchecked');
|
156 |
|
157 |
-
if (AAM::api()->isAllowed("Capability:{$cap}:AAM:toggle") === false) {
|
158 |
$toggle = 'no-' . $toggle;
|
159 |
}
|
160 |
|
@@ -192,7 +193,7 @@ class AAM_Backend_Feature_Main_Capability extends AAM_Backend_Feature_Abstract {
|
|
192 |
}
|
193 |
|
194 |
// Access & Security policy has higher priority
|
195 |
-
if (AAM::api()->isAllowed("Capability:{$cap}:AAM:update") === false) {
|
196 |
$allowed = false;
|
197 |
}
|
198 |
|
@@ -213,66 +214,23 @@ class AAM_Backend_Feature_Main_Capability extends AAM_Backend_Feature_Abstract {
|
|
213 |
}
|
214 |
|
215 |
// Access & Security policy has higher priority
|
216 |
-
if (AAM::api()->isAllowed("Capability:{$cap}:AAM:delete") === false) {
|
217 |
$allowed = false;
|
218 |
}
|
219 |
|
220 |
return $allowed;
|
221 |
}
|
222 |
|
223 |
-
/**
|
224 |
-
* Get list of user roles
|
225 |
-
*
|
226 |
-
* @param array $roles
|
227 |
-
*
|
228 |
-
* @return array
|
229 |
-
*
|
230 |
-
* @access protected
|
231 |
-
*/
|
232 |
-
protected function getUserRoles($roles) {
|
233 |
-
$response = array();
|
234 |
-
|
235 |
-
$names = AAM_Core_API::getRoles()->get_names();
|
236 |
-
|
237 |
-
if (is_array($roles)) {
|
238 |
-
foreach($roles as $role) {
|
239 |
-
if (is_array($names) && array_key_exists($role, $names)) {
|
240 |
-
$response[] = translate_user_role($names[$role]);
|
241 |
-
}
|
242 |
-
}
|
243 |
-
}
|
244 |
-
|
245 |
-
return $response;
|
246 |
-
}
|
247 |
-
|
248 |
/**
|
249 |
*
|
250 |
* @return type
|
251 |
*/
|
252 |
protected function retrieveAllCaps() {
|
253 |
$response = array();
|
|
|
254 |
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
// Load also capabilities defined in policy
|
259 |
-
$stms = AAM_Core_Policy_Manager::getInstance()->find(
|
260 |
-
"/^Capability:/i", $subject
|
261 |
-
);
|
262 |
-
|
263 |
-
$policyCaps = array();
|
264 |
-
|
265 |
-
foreach($stms as $key => $stm) {
|
266 |
-
$chunks = explode(':', $key);
|
267 |
-
if (count($chunks) === 2) {
|
268 |
-
$policyCaps[$chunks[1]] = ($stm['Effect'] === 'allow' ? 1 : 0);
|
269 |
-
}
|
270 |
-
}
|
271 |
-
|
272 |
-
$caps = array_merge(AAM_Core_API::getAllCapabilities(), $policyCaps);
|
273 |
-
|
274 |
-
foreach (array_keys($caps) as $cap) {
|
275 |
-
if (AAM::api()->isAllowed("Capability:{$cap}:AAM:list") !== false) {
|
276 |
$response[] = array(
|
277 |
$cap,
|
278 |
$this->getGroup($cap),
|
55 |
'aam_manage_default', 'aam_manage_visitors', 'aam_manage_roles', 'aam_manage_users',
|
56 |
'aam_edit_roles', 'aam_delete_roles', 'aam_toggle_users', 'aam_switch_users',
|
57 |
'aam_manage_configpress', 'aam_manage_api_routes', 'aam_manage_uri', 'aam_manage_policy',
|
58 |
+
'aam_view_help_btn', 'aam_edit_policy', 'aam_read_policy', 'aam_delete_policy',
|
59 |
+
'aam_delete_policies', 'aam_edit_policies', 'aam_edit_other_policies', 'aam_publish_policies'
|
60 |
)
|
61 |
);
|
62 |
|
155 |
|
156 |
$toggle = ($subject->hasCapability($cap) ? 'checked' : 'unchecked');
|
157 |
|
158 |
+
if (AAM::api()->getPolicyManager()->isAllowed("Capability:{$cap}:AAM:toggle") === false) {
|
159 |
$toggle = 'no-' . $toggle;
|
160 |
}
|
161 |
|
193 |
}
|
194 |
|
195 |
// Access & Security policy has higher priority
|
196 |
+
if (AAM::api()->getPolicyManager()->isAllowed("Capability:{$cap}:AAM:update") === false) {
|
197 |
$allowed = false;
|
198 |
}
|
199 |
|
214 |
}
|
215 |
|
216 |
// Access & Security policy has higher priority
|
217 |
+
if (AAM::api()->getPolicyManager()->isAllowed("Capability:{$cap}:AAM:delete") === false) {
|
218 |
$allowed = false;
|
219 |
}
|
220 |
|
221 |
return $allowed;
|
222 |
}
|
223 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
224 |
/**
|
225 |
*
|
226 |
* @return type
|
227 |
*/
|
228 |
protected function retrieveAllCaps() {
|
229 |
$response = array();
|
230 |
+
$manager = AAM::api()->getPolicyManager();
|
231 |
|
232 |
+
foreach (array_keys(AAM_Core_API::getAllCapabilities()) as $cap) {
|
233 |
+
if ($manager->isAllowed("Capability:{$cap}:AAM:list") !== false) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
234 |
$response[] = array(
|
235 |
$cap,
|
236 |
$this->getGroup($cap),
|
Application/Backend/Feature/Main/Post.php
CHANGED
@@ -517,7 +517,7 @@ class AAM_Backend_Feature_Main_Post extends AAM_Backend_Feature_Abstract {
|
|
517 |
$id = AAM_Core_Request::post('objectId', null);
|
518 |
|
519 |
$param = AAM_Core_Request::post('param');
|
520 |
-
$value =
|
521 |
|
522 |
//clear cache
|
523 |
AAM_Core_API::clearCache();
|
517 |
$id = AAM_Core_Request::post('objectId', null);
|
518 |
|
519 |
$param = AAM_Core_Request::post('param');
|
520 |
+
$value = filter_input(INPUT_POST, 'value');
|
521 |
|
522 |
//clear cache
|
523 |
AAM_Core_API::clearCache();
|
Application/Backend/Filter.php
CHANGED
@@ -50,10 +50,6 @@ class AAM_Backend_Filter {
|
|
50 |
add_filter('page_row_actions', array($this, 'postRowActions'), 10, 2);
|
51 |
add_filter('post_row_actions', array($this, 'postRowActions'), 10, 2);
|
52 |
|
53 |
-
//default category filder
|
54 |
-
// TODO - THIS HAS TO GO TO THE PLUS PACKAGE EXTENSION
|
55 |
-
add_filter('pre_option_default_category', array($this, 'filterDefaultCategory'));
|
56 |
-
|
57 |
add_action('pre_post_update', array($this, 'prePostUpdate'), 10, 2);
|
58 |
|
59 |
//user/role filters
|
@@ -165,31 +161,6 @@ class AAM_Backend_Filter {
|
|
165 |
return $actions;
|
166 |
}
|
167 |
|
168 |
-
/**
|
169 |
-
* Override default category if defined
|
170 |
-
*
|
171 |
-
* @param type $category
|
172 |
-
*
|
173 |
-
* @return int
|
174 |
-
*
|
175 |
-
* @access public
|
176 |
-
* @staticvar type $default
|
177 |
-
*/
|
178 |
-
public function filterDefaultCategory($category) {
|
179 |
-
//check if user category is defined
|
180 |
-
$id = get_current_user_id();
|
181 |
-
$default = AAM_Core_Config::get('feature.post.defaultTerm.user.' . $id , null);
|
182 |
-
$roles = AAM::getUser()->roles;
|
183 |
-
|
184 |
-
if (is_null($default) && count($roles)) {
|
185 |
-
$default = AAM_Core_Config::get(
|
186 |
-
'feature.post.defaultTerm.role.' . array_shift($roles), false
|
187 |
-
);
|
188 |
-
}
|
189 |
-
|
190 |
-
return ($default ? $default : $category);
|
191 |
-
}
|
192 |
-
|
193 |
/**
|
194 |
* Post update hook
|
195 |
*
|
50 |
add_filter('page_row_actions', array($this, 'postRowActions'), 10, 2);
|
51 |
add_filter('post_row_actions', array($this, 'postRowActions'), 10, 2);
|
52 |
|
|
|
|
|
|
|
|
|
53 |
add_action('pre_post_update', array($this, 'prePostUpdate'), 10, 2);
|
54 |
|
55 |
//user/role filters
|
161 |
return $actions;
|
162 |
}
|
163 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
164 |
/**
|
165 |
* Post update hook
|
166 |
*
|
Application/Backend/Manager.php
CHANGED
@@ -96,6 +96,10 @@ class AAM_Backend_Manager {
|
|
96 |
//manager WordPress metaboxes
|
97 |
add_action("in_admin_header", array($this, 'initMetaboxes'), 999);
|
98 |
|
|
|
|
|
|
|
|
|
99 |
if (AAM_Core_Config::get('ui.settings.renderAccessActionLink', true)) {
|
100 |
//extend post inline actions
|
101 |
add_filter('page_row_actions', array($this, 'postRowActions'), 10, 2);
|
@@ -143,6 +147,17 @@ class AAM_Backend_Manager {
|
|
143 |
}
|
144 |
}
|
145 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
146 |
/**
|
147 |
*
|
148 |
* @param boolean $result
|
96 |
//manager WordPress metaboxes
|
97 |
add_action("in_admin_header", array($this, 'initMetaboxes'), 999);
|
98 |
|
99 |
+
// manage Navigation Menu page to support
|
100 |
+
// https://forum.aamplugin.com/d/61-restrict-role-from-updating-or-deleting-specific-navigation-menus
|
101 |
+
add_filter('nav_menu_meta_box_object', array($this, 'manageNavMenuMetabox'));
|
102 |
+
|
103 |
if (AAM_Core_Config::get('ui.settings.renderAccessActionLink', true)) {
|
104 |
//extend post inline actions
|
105 |
add_filter('page_row_actions', array($this, 'postRowActions'), 10, 2);
|
147 |
}
|
148 |
}
|
149 |
|
150 |
+
/**
|
151 |
+
*
|
152 |
+
* @param type $postType
|
153 |
+
* @return type
|
154 |
+
*/
|
155 |
+
public function manageNavMenuMetabox($postType) {
|
156 |
+
$postType->_default_query['suppress_filters'] = false;
|
157 |
+
|
158 |
+
return $postType;
|
159 |
+
}
|
160 |
+
|
161 |
/**
|
162 |
*
|
163 |
* @param boolean $result
|
Application/Backend/Subject.php
CHANGED
@@ -71,9 +71,7 @@ class AAM_Backend_Subject {
|
|
71 |
|
72 |
if (class_exists($classname)) {
|
73 |
$subject = new $classname(stripslashes($id));
|
74 |
-
|
75 |
-
// Load access policy
|
76 |
-
$subject->getObject('policy');
|
77 |
|
78 |
$this->setSubject($subject);
|
79 |
}
|
71 |
|
72 |
if (class_exists($classname)) {
|
73 |
$subject = new $classname(stripslashes($id));
|
74 |
+
$subject->initialize();
|
|
|
|
|
75 |
|
76 |
$this->setSubject($subject);
|
77 |
}
|
Application/Core/API.php
CHANGED
@@ -240,12 +240,10 @@ final class AAM_Core_API {
|
|
240 |
* @static
|
241 |
*/
|
242 |
public static function capabilityExists($cap) {
|
243 |
-
$caps
|
244 |
-
|
245 |
$exists = array_key_exists($cap, $caps) ? true : false;
|
246 |
-
$policy = (AAM::api()->isAllowed("Capability:{$cap}") !== null);
|
247 |
|
248 |
-
return (is_string($cap) &&
|
249 |
}
|
250 |
|
251 |
/**
|
240 |
* @static
|
241 |
*/
|
242 |
public static function capabilityExists($cap) {
|
243 |
+
$caps = self::getAllCapabilities();
|
|
|
244 |
$exists = array_key_exists($cap, $caps) ? true : false;
|
|
|
245 |
|
246 |
+
return (is_string($cap) && $exists);
|
247 |
}
|
248 |
|
249 |
/**
|
Application/Core/Compatibility.php
CHANGED
@@ -16,6 +16,35 @@
|
|
16 |
*/
|
17 |
class AAM_Core_Compatibility {
|
18 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
/**
|
20 |
*
|
21 |
*/
|
@@ -35,27 +64,6 @@ class AAM_Core_Compatibility {
|
|
35 |
return $key;
|
36 |
}
|
37 |
|
38 |
-
/**
|
39 |
-
*
|
40 |
-
* @param type $list
|
41 |
-
* @return type
|
42 |
-
* @since v5.7.3
|
43 |
-
*
|
44 |
-
* @todo Remove Jan 2020
|
45 |
-
*/
|
46 |
-
public static function preparePolicyList($list) {
|
47 |
-
if (!is_null($list)) {
|
48 |
-
if (empty($list['Statements'])) {
|
49 |
-
$list = array(
|
50 |
-
'Statements' => $list,
|
51 |
-
'Features' => array()
|
52 |
-
);
|
53 |
-
}
|
54 |
-
}
|
55 |
-
|
56 |
-
return $list;
|
57 |
-
}
|
58 |
-
|
59 |
/**
|
60 |
* Converting metabox options from 2 dimensional to 1
|
61 |
*
|
16 |
*/
|
17 |
class AAM_Core_Compatibility {
|
18 |
|
19 |
+
/**
|
20 |
+
* Convert config to the Policy Config
|
21 |
+
*
|
22 |
+
* @param string $option
|
23 |
+
* @param mixed $value
|
24 |
+
*
|
25 |
+
* @return mixed
|
26 |
+
*
|
27 |
+
* @access public
|
28 |
+
* @static
|
29 |
+
* @since v5.9
|
30 |
+
*/
|
31 |
+
public static function convertConfig($option, $value) {
|
32 |
+
if (strpos($option, '.defaultTerm.') !== false && empty($value)) {
|
33 |
+
$param = AAM_Core_Policy_Factory::get()->getParam(
|
34 |
+
'post:default:category'
|
35 |
+
);
|
36 |
+
if (!empty($param)) {
|
37 |
+
if (!is_numeric($param)) {
|
38 |
+
$term = get_term_by('slug', $param, 'category');
|
39 |
+
$param = (is_wp_error($term) || empty($term) ? null : $term->term_id);
|
40 |
+
}
|
41 |
+
}
|
42 |
+
$value = (is_null($param) ? $value : $param);
|
43 |
+
}
|
44 |
+
|
45 |
+
return $value;
|
46 |
+
}
|
47 |
+
|
48 |
/**
|
49 |
*
|
50 |
*/
|
64 |
return $key;
|
65 |
}
|
66 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
/**
|
68 |
* Converting metabox options from 2 dimensional to 1
|
69 |
*
|
Application/Core/Gateway.php
CHANGED
@@ -29,6 +29,22 @@ final class AAM_Core_Gateway {
|
|
29 |
*/
|
30 |
protected function __construct() {}
|
31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
/**
|
33 |
* Get AAM configuration option
|
34 |
*
|
@@ -40,7 +56,9 @@ final class AAM_Core_Gateway {
|
|
40 |
* @access public
|
41 |
*/
|
42 |
public function getConfig($option, $default = null) {
|
43 |
-
|
|
|
|
|
44 |
}
|
45 |
|
46 |
/**
|
@@ -57,6 +75,7 @@ final class AAM_Core_Gateway {
|
|
57 |
public function getUser($id = null) {
|
58 |
if (!empty($id)) {
|
59 |
$user = new AAM_Core_Subject_User($id);
|
|
|
60 |
} elseif (get_current_user_id()) {
|
61 |
$user = AAM::getUser();
|
62 |
} else {
|
@@ -91,41 +110,6 @@ final class AAM_Core_Gateway {
|
|
91 |
AAM_Core_API::reject(AAM_Core_Api_Area::get(), $params);
|
92 |
}
|
93 |
|
94 |
-
/**
|
95 |
-
* Check if current user has access to specified resource
|
96 |
-
*
|
97 |
-
* Apply all access/security policies and identify if user has access to specified
|
98 |
-
* resource.
|
99 |
-
*
|
100 |
-
* @param string $resource
|
101 |
-
* @param string $action
|
102 |
-
*
|
103 |
-
* @return mixed Boolean true|false if explicit access is defined or null if no
|
104 |
-
* exact match found
|
105 |
-
*/
|
106 |
-
public function isAllowed($resource, $action = null) {
|
107 |
-
$policy = AAM::api()->getUser()->getObject('policy');
|
108 |
-
|
109 |
-
return $policy->isAllowed($resource, $action);
|
110 |
-
}
|
111 |
-
|
112 |
-
/**
|
113 |
-
* Check if feature is enabled
|
114 |
-
*
|
115 |
-
* @param string $feature
|
116 |
-
* @param string $plugin
|
117 |
-
*
|
118 |
-
* @return boolean|null
|
119 |
-
*
|
120 |
-
* @access public
|
121 |
-
* @since v5.7.3
|
122 |
-
*/
|
123 |
-
public function isEnabled($feature, $plugin = 'advanced-access-manager') {
|
124 |
-
$policy = AAM::api()->getUser()->getObject('policy');
|
125 |
-
|
126 |
-
return $policy->isEnabled($feature, $plugin);
|
127 |
-
}
|
128 |
-
|
129 |
/**
|
130 |
* Get policy manager
|
131 |
*
|
@@ -133,8 +117,10 @@ final class AAM_Core_Gateway {
|
|
133 |
*
|
134 |
* @access public
|
135 |
*/
|
136 |
-
public function getPolicyManager() {
|
137 |
-
return
|
|
|
|
|
138 |
}
|
139 |
|
140 |
/**
|
@@ -191,6 +177,17 @@ final class AAM_Core_Gateway {
|
|
191 |
exit; // Halt the execution
|
192 |
}
|
193 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
194 |
/**
|
195 |
* Check if capability exists
|
196 |
*
|
29 |
*/
|
30 |
protected function __construct() {}
|
31 |
|
32 |
+
/**
|
33 |
+
* Prevent from fatals
|
34 |
+
*
|
35 |
+
* @param string $name
|
36 |
+
* @param array $arguments
|
37 |
+
*
|
38 |
+
* @return void
|
39 |
+
*
|
40 |
+
* @access public
|
41 |
+
*/
|
42 |
+
public function __call($name, $arguments) {
|
43 |
+
trigger_error(
|
44 |
+
esc_js(__("The method {$name} is not defined in the AAM API", AAM_KEY))
|
45 |
+
);
|
46 |
+
}
|
47 |
+
|
48 |
/**
|
49 |
* Get AAM configuration option
|
50 |
*
|
56 |
* @access public
|
57 |
*/
|
58 |
public function getConfig($option, $default = null) {
|
59 |
+
$value = AAM_Core_Config::get($option, $default);
|
60 |
+
|
61 |
+
return AAM_Core_Compatibility::convertConfig($option, $value);
|
62 |
}
|
63 |
|
64 |
/**
|
75 |
public function getUser($id = null) {
|
76 |
if (!empty($id)) {
|
77 |
$user = new AAM_Core_Subject_User($id);
|
78 |
+
$user->initialize();
|
79 |
} elseif (get_current_user_id()) {
|
80 |
$user = AAM::getUser();
|
81 |
} else {
|
110 |
AAM_Core_API::reject(AAM_Core_Api_Area::get(), $params);
|
111 |
}
|
112 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
113 |
/**
|
114 |
* Get policy manager
|
115 |
*
|
117 |
*
|
118 |
* @access public
|
119 |
*/
|
120 |
+
public function getPolicyManager(AAM_Core_Subject $subject = null) {
|
121 |
+
return AAM_Core_Policy_Factory::get(
|
122 |
+
(is_null($subject) ? $this->getUser() : $subject)
|
123 |
+
);
|
124 |
}
|
125 |
|
126 |
/**
|
177 |
exit; // Halt the execution
|
178 |
}
|
179 |
|
180 |
+
/**
|
181 |
+
* Get current post
|
182 |
+
*
|
183 |
+
* @return WP_Post
|
184 |
+
*
|
185 |
+
* @access public
|
186 |
+
*/
|
187 |
+
public function getCurrentPost() {
|
188 |
+
return AAM_Core_API::getCurrentPost();
|
189 |
+
}
|
190 |
+
|
191 |
/**
|
192 |
* Check if capability exists
|
193 |
*
|
Application/Core/JwtAuth.php
CHANGED
@@ -116,7 +116,7 @@ class AAM_Core_JwtAuth {
|
|
116 |
);
|
117 |
}
|
118 |
} else {
|
119 |
-
$response->data = $result['
|
120 |
$response->status = 403;
|
121 |
}
|
122 |
|
@@ -144,7 +144,7 @@ class AAM_Core_JwtAuth {
|
|
144 |
$response->status = 200;
|
145 |
$response->data = array(
|
146 |
'status' => 'valid',
|
147 |
-
'token_expires' =>
|
148 |
);
|
149 |
} catch (Exception $ex) {
|
150 |
$response->data['reason'] = $ex->getMessage();
|
116 |
);
|
117 |
}
|
118 |
} else {
|
119 |
+
$response->data = $result['reason'];
|
120 |
$response->status = 403;
|
121 |
}
|
122 |
|
144 |
$response->status = 200;
|
145 |
$response->data = array(
|
146 |
'status' => 'valid',
|
147 |
+
'token_expires' => $claims->exp
|
148 |
);
|
149 |
} catch (Exception $ex) {
|
150 |
$response->data['reason'] = $ex->getMessage();
|
Application/Core/Object.php
CHANGED
@@ -74,9 +74,7 @@ abstract class AAM_Core_Object {
|
|
74 |
*
|
75 |
* @access public
|
76 |
*/
|
77 |
-
public function initialize() {
|
78 |
-
|
79 |
-
}
|
80 |
|
81 |
/**
|
82 |
* Set current subject
|
74 |
*
|
75 |
* @access public
|
76 |
*/
|
77 |
+
public function initialize() {}
|
|
|
|
|
78 |
|
79 |
/**
|
80 |
* Set current subject
|
Application/Core/Object/Cache.php
CHANGED
@@ -125,23 +125,4 @@ class AAM_Core_Object_Cache extends AAM_Core_Object {
|
|
125 |
return $this->getSubject()->deleteOption('cache');
|
126 |
}
|
127 |
|
128 |
-
/**
|
129 |
-
* Read object from parent subject
|
130 |
-
*
|
131 |
-
* @return mixed
|
132 |
-
*
|
133 |
-
* @access public
|
134 |
-
*/
|
135 |
-
public function inheritFromParent(){
|
136 |
-
$subject = $this->getParent();
|
137 |
-
|
138 |
-
if (is_a($subject, 'AAM_Core_Subject')){
|
139 |
-
$option = $subject->getObject('cache')->getOption();
|
140 |
-
} else {
|
141 |
-
$option = array();
|
142 |
-
}
|
143 |
-
|
144 |
-
return $option;
|
145 |
-
}
|
146 |
-
|
147 |
}
|
125 |
return $this->getSubject()->deleteOption('cache');
|
126 |
}
|
127 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
}
|
Application/Core/Object/Capability.php
CHANGED
@@ -30,9 +30,7 @@ class AAM_Core_Object_Capability extends AAM_Core_Object {
|
|
30 |
$caps = $this->getSubject()->getCapabilities();
|
31 |
|
32 |
// Load Capabilities from the policy
|
33 |
-
$stms =
|
34 |
-
"/^Capability:/i", $subject
|
35 |
-
);
|
36 |
|
37 |
foreach($stms as $key => $stm) {
|
38 |
$chunks = explode(':', $key);
|
30 |
$caps = $this->getSubject()->getCapabilities();
|
31 |
|
32 |
// Load Capabilities from the policy
|
33 |
+
$stms = AAM_Core_Policy_Factory::get($subject)->find("/^Capability:/i");
|
|
|
|
|
34 |
|
35 |
foreach($stms as $key => $stm) {
|
36 |
$chunks = explode(':', $key);
|
Application/Core/Object/Menu.php
CHANGED
@@ -35,9 +35,7 @@ class AAM_Core_Object_Menu extends AAM_Core_Object {
|
|
35 |
|
36 |
// Load settings from Access & Security Policy
|
37 |
if (empty($option)) {
|
38 |
-
$stms =
|
39 |
-
"/^BackendMenu:/i", $subject
|
40 |
-
);
|
41 |
|
42 |
foreach($stms as $key => $stm) {
|
43 |
$chunks = explode(':', $key);
|
35 |
|
36 |
// Load settings from Access & Security Policy
|
37 |
if (empty($option)) {
|
38 |
+
$stms = AAM_Core_Policy_Factory::get($subject)->find("/^BackendMenu:/i");
|
|
|
|
|
39 |
|
40 |
foreach($stms as $key => $stm) {
|
41 |
$chunks = explode(':', $key);
|
Application/Core/Object/Metabox.php
CHANGED
@@ -37,9 +37,7 @@ class AAM_Core_Object_Metabox extends AAM_Core_Object {
|
|
37 |
|
38 |
// Load settings from Access & Security Policy
|
39 |
if (empty($option)) {
|
40 |
-
$stms =
|
41 |
-
"/^(Metabox|Widget):/i", $subject
|
42 |
-
);
|
43 |
|
44 |
foreach($stms as $key => $stm) {
|
45 |
$chunks = explode(':', $key);
|
37 |
|
38 |
// Load settings from Access & Security Policy
|
39 |
if (empty($option)) {
|
40 |
+
$stms = AAM_Core_Policy_Factory::get($subject)->find("/^(Metabox|Widget):/i");
|
|
|
|
|
41 |
|
42 |
foreach($stms as $key => $stm) {
|
43 |
$chunks = explode(':', $key);
|
Application/Core/Object/Policy.php
CHANGED
@@ -15,30 +15,6 @@
|
|
15 |
*/
|
16 |
class AAM_Core_Object_Policy extends AAM_Core_Object {
|
17 |
|
18 |
-
/**
|
19 |
-
* Resource tree
|
20 |
-
*
|
21 |
-
* Shared resource tree across all the policy instances
|
22 |
-
*
|
23 |
-
* @var array
|
24 |
-
*
|
25 |
-
* @access protected
|
26 |
-
* @static
|
27 |
-
*/
|
28 |
-
protected static $resources = array();
|
29 |
-
|
30 |
-
/**
|
31 |
-
* Feature tree
|
32 |
-
*
|
33 |
-
* Shared features tree across all the policy instances
|
34 |
-
*
|
35 |
-
* @var array
|
36 |
-
*
|
37 |
-
* @access protected
|
38 |
-
* @static
|
39 |
-
*/
|
40 |
-
protected static $features = array();
|
41 |
-
|
42 |
/**
|
43 |
* Constructor
|
44 |
*
|
@@ -65,7 +41,8 @@ class AAM_Core_Object_Policy extends AAM_Core_Object {
|
|
65 |
$subject = $this->getSubject();
|
66 |
$parent = $subject->inheritFromParent('policy');
|
67 |
|
68 |
-
|
|
|
69 |
$parent = array();
|
70 |
}
|
71 |
|
@@ -81,241 +58,6 @@ class AAM_Core_Object_Policy extends AAM_Core_Object {
|
|
81 |
}
|
82 |
|
83 |
$this->setOption($parent);
|
84 |
-
|
85 |
-
// Load statements for policies
|
86 |
-
$subjectId = $subject->getUID();
|
87 |
-
$subjectId .= ($subject->getId() ? ".{$subject->getId()}" : '');
|
88 |
-
|
89 |
-
$this->load($subjectId, $option);
|
90 |
-
}
|
91 |
-
|
92 |
-
/**
|
93 |
-
* Load all defined policies for specified subject
|
94 |
-
*
|
95 |
-
* @param string $subjectId
|
96 |
-
* @param array $policies
|
97 |
-
*
|
98 |
-
* @return void
|
99 |
-
*
|
100 |
-
* @access public
|
101 |
-
*/
|
102 |
-
public function load($subjectId, $policies) {
|
103 |
-
$resources = array();
|
104 |
-
$features = array();
|
105 |
-
$list = $this->parsePolicy($subjectId, $policies);
|
106 |
-
|
107 |
-
// Evaluate all Statements first
|
108 |
-
foreach($list['Statements'] as $statement) {
|
109 |
-
if (isset($statement['Resource']) && $this->applicable($statement)) {
|
110 |
-
$this->evaluateStatement($statement, $resources);
|
111 |
-
}
|
112 |
-
}
|
113 |
-
self::$resources[$subjectId] = $resources;
|
114 |
-
|
115 |
-
// Evaluate all Features then
|
116 |
-
foreach($list['Features'] as $feature) {
|
117 |
-
if ($this->applicable($feature)) {
|
118 |
-
$this->evaluateFeature($feature, $features);
|
119 |
-
}
|
120 |
-
}
|
121 |
-
|
122 |
-
self::$features[$subjectId] = $features;
|
123 |
-
}
|
124 |
-
|
125 |
-
/**
|
126 |
-
*
|
127 |
-
* @return type
|
128 |
-
*/
|
129 |
-
protected function parsePolicy($subjectId, $policies) {
|
130 |
-
$cache = AAM::api()->getUser()->getObject('cache');
|
131 |
-
$list = AAM_Core_Compatibility::preparePolicyList(
|
132 |
-
$cache->get('policy', $subjectId, null)
|
133 |
-
);
|
134 |
-
|
135 |
-
if (is_null($list)) {
|
136 |
-
$list = array(
|
137 |
-
'Statements' => array(),
|
138 |
-
'Features' => array()
|
139 |
-
);
|
140 |
-
|
141 |
-
foreach($policies as $id => $effect) {
|
142 |
-
$policy = get_post($id);
|
143 |
-
|
144 |
-
if (is_a($policy, 'WP_Post')) {
|
145 |
-
$obj = json_decode($policy->post_content, true);
|
146 |
-
if (json_last_error() === JSON_ERROR_NONE) {
|
147 |
-
$list['Statements'] = array_merge(
|
148 |
-
$list['Statements'], $this->extractStatements($obj, empty($effect))
|
149 |
-
);
|
150 |
-
$list['Features'] = array_merge(
|
151 |
-
$list['Features'], $this->extractFeatures($obj, empty($effect))
|
152 |
-
);
|
153 |
-
}
|
154 |
-
}
|
155 |
-
}
|
156 |
-
$cache->add('policy', $subjectId, $list);
|
157 |
-
}
|
158 |
-
|
159 |
-
return $list;
|
160 |
-
}
|
161 |
-
|
162 |
-
/**
|
163 |
-
*
|
164 |
-
* @param type $policy
|
165 |
-
* @return type
|
166 |
-
*/
|
167 |
-
protected function extractStatements($policy, $unset = false) {
|
168 |
-
$statements = array();
|
169 |
-
|
170 |
-
if (isset($policy['Statement'])) {
|
171 |
-
if (is_array($policy['Statement'])) {
|
172 |
-
$statements = $policy['Statement'];
|
173 |
-
} else {
|
174 |
-
$statements = array($policy['Statement']);
|
175 |
-
}
|
176 |
-
}
|
177 |
-
|
178 |
-
// normalize each statement
|
179 |
-
foreach(array('Action', 'Condition') as $prop) {
|
180 |
-
foreach($statements as $i => $statement) {
|
181 |
-
if (isset($statement[$prop])) {
|
182 |
-
$statements[$i][$prop] = (array) $statement[$prop];
|
183 |
-
}
|
184 |
-
}
|
185 |
-
}
|
186 |
-
|
187 |
-
if ($unset === true) {
|
188 |
-
foreach($statements as &$statement) {
|
189 |
-
$statement['Unset'] = true;
|
190 |
-
}
|
191 |
-
}
|
192 |
-
|
193 |
-
return $statements;
|
194 |
-
}
|
195 |
-
|
196 |
-
/**
|
197 |
-
* Extract list of policy features
|
198 |
-
*
|
199 |
-
* @param array $policy
|
200 |
-
*
|
201 |
-
* @return array
|
202 |
-
*
|
203 |
-
* @access protected
|
204 |
-
* @since v5.7.3
|
205 |
-
*/
|
206 |
-
protected function extractFeatures($policy, $unset = false) {
|
207 |
-
$features = array();
|
208 |
-
|
209 |
-
if (isset($policy['Feature'])) {
|
210 |
-
if (is_array($policy['Feature'])) {
|
211 |
-
$features = $policy['Feature'];
|
212 |
-
} else {
|
213 |
-
$features = array($policy['Feature']);
|
214 |
-
}
|
215 |
-
}
|
216 |
-
|
217 |
-
if ($unset === true) {
|
218 |
-
foreach($features as &$feature) {
|
219 |
-
$feature['Unset'] = true;
|
220 |
-
}
|
221 |
-
}
|
222 |
-
|
223 |
-
return $features;
|
224 |
-
}
|
225 |
-
|
226 |
-
/**
|
227 |
-
*
|
228 |
-
* @param type $statement
|
229 |
-
* @param type $resources
|
230 |
-
*/
|
231 |
-
protected function evaluateStatement($statement, &$resources) {
|
232 |
-
$actions = (array)(!empty($statement['Action']) ? $statement['Action'] : '');
|
233 |
-
|
234 |
-
foreach((array)$statement['Resource'] as $resource) {
|
235 |
-
foreach($actions as $action) {
|
236 |
-
$id = strtolower($resource . (!empty($action) ? ":{$action}" : ''));
|
237 |
-
|
238 |
-
// Add new statement
|
239 |
-
if (!isset($resources[$id])) {
|
240 |
-
$resources[$id] = $statement;
|
241 |
-
// Merge statement unless the first one is marked as Enforced
|
242 |
-
} elseif (empty($resources[$id]['Enforce'])) {
|
243 |
-
$resources[$id] = $this->mergeStatements(
|
244 |
-
$resources[$id], $statement
|
245 |
-
);
|
246 |
-
}
|
247 |
-
|
248 |
-
$this->normalizeResource($resources, $id);
|
249 |
-
}
|
250 |
-
}
|
251 |
-
}
|
252 |
-
|
253 |
-
/**
|
254 |
-
*
|
255 |
-
* @param type $feature
|
256 |
-
* @param type $features
|
257 |
-
*/
|
258 |
-
protected function evaluateFeature($feature, &$features) {
|
259 |
-
$id = strtolower("{$feature['Plugin']}:{$feature['Feature']}");
|
260 |
-
|
261 |
-
// Add new statement
|
262 |
-
if (!isset($features[$id])) {
|
263 |
-
$features[$id] = $feature;
|
264 |
-
// Override feature unless the first one is marked as Enforced
|
265 |
-
} elseif (empty($features[$id]['Enforce'])) {
|
266 |
-
$features[$id] = $feature;
|
267 |
-
}
|
268 |
-
}
|
269 |
-
|
270 |
-
/**
|
271 |
-
*
|
272 |
-
* @param type $resources
|
273 |
-
* @param type $id
|
274 |
-
*/
|
275 |
-
protected function normalizeResource(&$resources, $id) {
|
276 |
-
// cleanup fields
|
277 |
-
foreach(array('Resource', 'Action', 'Condition') as $field) {
|
278 |
-
if (isset($resources[$id][$field])) {
|
279 |
-
unset($resources[$id][$field]);
|
280 |
-
}
|
281 |
-
}
|
282 |
-
}
|
283 |
-
|
284 |
-
/**
|
285 |
-
*
|
286 |
-
* @param type $statement
|
287 |
-
* @return boolean
|
288 |
-
*/
|
289 |
-
protected function applicable($statement) {
|
290 |
-
$result = true;
|
291 |
-
|
292 |
-
if (!empty($statement['Condition']) && !is_scalar($statement['Condition'])) {
|
293 |
-
$result = AAM_Core_Policy_Condition::getInstance()->evaluate(
|
294 |
-
$statement['Condition']
|
295 |
-
);
|
296 |
-
}
|
297 |
-
|
298 |
-
return $result;
|
299 |
-
}
|
300 |
-
|
301 |
-
/**
|
302 |
-
*
|
303 |
-
* @param type $left
|
304 |
-
* @param type $right
|
305 |
-
* @return type
|
306 |
-
*/
|
307 |
-
protected function mergeStatements($left, $right) {
|
308 |
-
if (isset($right['Resource'])) {
|
309 |
-
unset($right['Resource']);
|
310 |
-
}
|
311 |
-
|
312 |
-
$merged = array_merge($left, $right);
|
313 |
-
|
314 |
-
if (!isset($merged['Effect'])) {
|
315 |
-
$merged['Effect'] = 'deny';
|
316 |
-
}
|
317 |
-
|
318 |
-
return $merged;
|
319 |
}
|
320 |
|
321 |
/**
|
@@ -344,43 +86,6 @@ class AAM_Core_Object_Policy extends AAM_Core_Object {
|
|
344 |
return !empty($option[$id]);
|
345 |
}
|
346 |
|
347 |
-
/**
|
348 |
-
*
|
349 |
-
* @param type $resource
|
350 |
-
* @return type
|
351 |
-
*/
|
352 |
-
public function isAllowed($resource, $action = null) {
|
353 |
-
$allowed = null;
|
354 |
-
|
355 |
-
$id = strtolower($resource . (!empty($action) ? ":{$action}" : ''));
|
356 |
-
$res = $this->getResources();
|
357 |
-
|
358 |
-
if (isset($res[$id])) {
|
359 |
-
$allowed = ($res[$id]['Effect'] === 'allow');
|
360 |
-
}
|
361 |
-
|
362 |
-
return $allowed;
|
363 |
-
}
|
364 |
-
|
365 |
-
/**
|
366 |
-
*
|
367 |
-
* @param type $feature
|
368 |
-
* @param type $plugin
|
369 |
-
* @return type
|
370 |
-
*/
|
371 |
-
public function isEnabled($feature, $plugin) {
|
372 |
-
$enabled = null;
|
373 |
-
|
374 |
-
$id = strtolower("{$plugin}:{$feature}");
|
375 |
-
$res = $this->getFeatures();
|
376 |
-
|
377 |
-
if (isset($res[$id])) {
|
378 |
-
$enabled = in_array($res[$id]['Effect'], array('allow', 'enable'), true);
|
379 |
-
}
|
380 |
-
|
381 |
-
return $enabled;
|
382 |
-
}
|
383 |
-
|
384 |
/**
|
385 |
*
|
386 |
* @param type $id
|
@@ -406,63 +111,4 @@ class AAM_Core_Object_Policy extends AAM_Core_Object {
|
|
406 |
return AAM::api()->mergeSettings($external, $this->getOption(), 'policy');
|
407 |
}
|
408 |
|
409 |
-
/**
|
410 |
-
*
|
411 |
-
* @return type
|
412 |
-
*/
|
413 |
-
public function getResources(AAM_Core_Subject $subject = null) {
|
414 |
-
return $this->getList(self::$resources, $subject);
|
415 |
-
}
|
416 |
-
|
417 |
-
/**
|
418 |
-
*
|
419 |
-
* @return type
|
420 |
-
*/
|
421 |
-
public function getFeatures(AAM_Core_Subject $subject = null) {
|
422 |
-
return $this->getList(self::$features, $subject);
|
423 |
-
}
|
424 |
-
|
425 |
-
/**
|
426 |
-
* Get list from source
|
427 |
-
*
|
428 |
-
* @param array $source
|
429 |
-
* @param AAM_Core_Subject $subject
|
430 |
-
*
|
431 |
-
* @return array
|
432 |
-
*
|
433 |
-
* @access protected
|
434 |
-
* @since v5.8.2
|
435 |
-
*/
|
436 |
-
protected function getList(&$source, AAM_Core_Subject $subject = null) {
|
437 |
-
$response = array();
|
438 |
-
|
439 |
-
if (is_null($subject)) {
|
440 |
-
if (!isset($source['__combined'])) {
|
441 |
-
foreach($source as $resources) {
|
442 |
-
foreach ($resources as $id => $props) {
|
443 |
-
if (!empty($props['Unset'])) {
|
444 |
-
if (isset($response[$id])) { // Clear the entire chain
|
445 |
-
unset($response[$id]);
|
446 |
-
}
|
447 |
-
} else {
|
448 |
-
$response[$id] = $props;
|
449 |
-
}
|
450 |
-
}
|
451 |
-
}
|
452 |
-
$source['__combined'] = $response;
|
453 |
-
} else {
|
454 |
-
$response = $source['__combined'];
|
455 |
-
}
|
456 |
-
} else {
|
457 |
-
$subjectId = $subject->getUID();
|
458 |
-
$subjectId .= ($subject->getId() ? ".{$subject->getId()}" : '');
|
459 |
-
|
460 |
-
if (isset($source[$subjectId])) {
|
461 |
-
$response = $source[$subjectId];
|
462 |
-
}
|
463 |
-
}
|
464 |
-
|
465 |
-
return $response;
|
466 |
-
}
|
467 |
-
|
468 |
}
|
15 |
*/
|
16 |
class AAM_Core_Object_Policy extends AAM_Core_Object {
|
17 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
/**
|
19 |
* Constructor
|
20 |
*
|
41 |
$subject = $this->getSubject();
|
42 |
$parent = $subject->inheritFromParent('policy');
|
43 |
|
44 |
+
// Prevent from any kind of surprises
|
45 |
+
if(empty($parent) || !is_array($parent)) {
|
46 |
$parent = array();
|
47 |
}
|
48 |
|
58 |
}
|
59 |
|
60 |
$this->setOption($parent);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
}
|
62 |
|
63 |
/**
|
86 |
return !empty($option[$id]);
|
87 |
}
|
88 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
/**
|
90 |
*
|
91 |
* @param type $id
|
111 |
return AAM::api()->mergeSettings($external, $this->getOption(), 'policy');
|
112 |
}
|
113 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
114 |
}
|
Application/Core/Object/Post.php
CHANGED
@@ -95,9 +95,9 @@ class AAM_Core_Object_Post extends AAM_Core_Object {
|
|
95 |
|
96 |
// Read settings from access policy
|
97 |
if (empty($option)) {
|
98 |
-
$stms =
|
99 |
-
"/^post:{$post->post_type}:({$post->post_name}|{$post->ID}):/",
|
100 |
-
$
|
101 |
);
|
102 |
$option = array();
|
103 |
|
95 |
|
96 |
// Read settings from access policy
|
97 |
if (empty($option)) {
|
98 |
+
$stms = AAM_Core_Policy_Factory::get($subject)->find(
|
99 |
+
"/^post:{$post->post_type}:({$post->post_name}|{$post->ID}):/",
|
100 |
+
array('post' => $post)
|
101 |
);
|
102 |
$option = array();
|
103 |
|
Application/Core/Object/Route.php
CHANGED
@@ -37,9 +37,7 @@ class AAM_Core_Object_Route extends AAM_Core_Object {
|
|
37 |
|
38 |
// Load settings from Access & Security Policy
|
39 |
if (empty($option)) {
|
40 |
-
$stms =
|
41 |
-
"/^Route:/i", $subject
|
42 |
-
);
|
43 |
|
44 |
foreach($stms as $key => $stm) {
|
45 |
$chunks = explode(':', $key);
|
37 |
|
38 |
// Load settings from Access & Security Policy
|
39 |
if (empty($option)) {
|
40 |
+
$stms = AAM_Core_Policy_Factory::get($subject)->find("/^Route:/i");
|
|
|
|
|
41 |
|
42 |
foreach($stms as $key => $stm) {
|
43 |
$chunks = explode(':', $key);
|
Application/Core/Object/Toolbar.php
CHANGED
@@ -35,9 +35,7 @@ class AAM_Core_Object_Toolbar extends AAM_Core_Object {
|
|
35 |
|
36 |
// Load settings from Access & Security Policy
|
37 |
if (empty($option)) {
|
38 |
-
$stms =
|
39 |
-
"/^Toolbar:/i", $subject
|
40 |
-
);
|
41 |
|
42 |
foreach($stms as $key => $stm) {
|
43 |
$chunks = explode(':', $key);
|
35 |
|
36 |
// Load settings from Access & Security Policy
|
37 |
if (empty($option)) {
|
38 |
+
$stms = AAM_Core_Policy_Factory::get($subject)->find("/^Toolbar:/i");
|
|
|
|
|
39 |
|
40 |
foreach($stms as $key => $stm) {
|
41 |
$chunks = explode(':', $key);
|
Application/Core/Object/Uri.php
CHANGED
@@ -34,9 +34,7 @@ class AAM_Core_Object_Uri extends AAM_Core_Object {
|
|
34 |
}
|
35 |
|
36 |
if (empty($option)) {
|
37 |
-
$stms =
|
38 |
-
"/^URI:/i", $subject
|
39 |
-
);
|
40 |
|
41 |
foreach($stms as $key => $stm) {
|
42 |
$chunks = explode(':', $key);
|
34 |
}
|
35 |
|
36 |
if (empty($option)) {
|
37 |
+
$stms = AAM_Core_Policy_Factory::get($subject)->find("/^URI:/i");
|
|
|
|
|
38 |
|
39 |
foreach($stms as $key => $stm) {
|
40 |
$chunks = explode(':', $key);
|
Application/Core/Object/Visibility.php
CHANGED
@@ -59,9 +59,8 @@ class AAM_Core_Object_Visibility extends AAM_Core_Object {
|
|
59 |
|
60 |
// Read all the settings from the Access & Security Policies
|
61 |
$area = AAM_Core_Api_Area::get();
|
62 |
-
$stms =
|
63 |
-
"/^post:(.*):(list|listtoothers)$/"
|
64 |
-
$subject
|
65 |
);
|
66 |
|
67 |
foreach($stms as $key => $stm) {
|
59 |
|
60 |
// Read all the settings from the Access & Security Policies
|
61 |
$area = AAM_Core_Api_Area::get();
|
62 |
+
$stms = AAM_Core_Policy_Factory::get($subject)->find(
|
63 |
+
"/^post:(.*):(list|listtoothers)$/"
|
|
|
64 |
);
|
65 |
|
66 |
foreach($stms as $key => $stm) {
|
Application/Core/Policy/Condition.php
CHANGED
@@ -61,13 +61,14 @@ final class AAM_Core_Policy_Condition {
|
|
61 |
/**
|
62 |
* Evaluate the group of conditions based on type
|
63 |
*
|
64 |
-
* @param array $conditions
|
|
|
65 |
*
|
66 |
* @return boolean
|
67 |
*
|
68 |
* @access public
|
69 |
*/
|
70 |
-
public function evaluate($conditions) {
|
71 |
$result = true;
|
72 |
|
73 |
foreach($conditions as $type => $conditions) {
|
@@ -75,7 +76,7 @@ final class AAM_Core_Policy_Condition {
|
|
75 |
|
76 |
if (isset($this->map[$type])) {
|
77 |
$callback = array($this, $this->map[$type]);
|
78 |
-
$result = $result && call_user_func($callback, $conditions);
|
79 |
} else {
|
80 |
$result = false;
|
81 |
}
|
@@ -88,15 +89,16 @@ final class AAM_Core_Policy_Condition {
|
|
88 |
* Evaluate group of BETWEEN conditions
|
89 |
*
|
90 |
* @param array $conditions
|
|
|
91 |
*
|
92 |
* @return boolean
|
93 |
*
|
94 |
* @access protected
|
95 |
*/
|
96 |
-
protected function evaluateBetweenConditions($conditions) {
|
97 |
$result = false;
|
98 |
|
99 |
-
foreach($this->prepareConditions($conditions) as $left => $right) {
|
100 |
foreach((array)$right as $subset) {
|
101 |
$min = (is_array($subset) ? array_shift($subset) : $subset);
|
102 |
$max = (is_array($subset) ? end($subset) : $subset);
|
@@ -114,15 +116,16 @@ final class AAM_Core_Policy_Condition {
|
|
114 |
* The values have to be identical
|
115 |
*
|
116 |
* @param array $conditions
|
|
|
117 |
*
|
118 |
* @return boolean
|
119 |
*
|
120 |
* @access protected
|
121 |
*/
|
122 |
-
protected function evaluateEqualsConditions($conditions) {
|
123 |
$result = false;
|
124 |
|
125 |
-
foreach($this->prepareConditions($conditions) as $left => $right) {
|
126 |
$result = $result || ($left === $right);
|
127 |
}
|
128 |
|
@@ -133,28 +136,30 @@ final class AAM_Core_Policy_Condition {
|
|
133 |
* Evaluate group of NOT EQUALs conditions
|
134 |
*
|
135 |
* @param array $conditions
|
|
|
136 |
*
|
137 |
* @return boolean
|
138 |
*
|
139 |
* @access protected
|
140 |
*/
|
141 |
-
protected function evaluateNotEqualsConditions($conditions) {
|
142 |
-
return !$this->evaluateEqualsConditions($conditions);
|
143 |
}
|
144 |
|
145 |
/**
|
146 |
* Evaluate group of GREATER THEN conditions
|
147 |
*
|
148 |
* @param array $conditions
|
|
|
149 |
*
|
150 |
* @return boolean
|
151 |
*
|
152 |
* @access protected
|
153 |
*/
|
154 |
-
protected function evaluateGreaterConditions($conditions) {
|
155 |
$result = false;
|
156 |
|
157 |
-
foreach($this->prepareConditions($conditions) as $left => $right) {
|
158 |
$result = $result || ($left > $right);
|
159 |
}
|
160 |
|
@@ -165,15 +170,16 @@ final class AAM_Core_Policy_Condition {
|
|
165 |
* Evaluate group of LESS THEN conditions
|
166 |
*
|
167 |
* @param array $conditions
|
|
|
168 |
*
|
169 |
* @return boolean
|
170 |
*
|
171 |
* @access protected
|
172 |
*/
|
173 |
-
protected function evaluateLessConditions($conditions) {
|
174 |
$result = false;
|
175 |
|
176 |
-
foreach($this->prepareConditions($conditions) as $left => $right) {
|
177 |
$result = $result || ($left < $right);
|
178 |
}
|
179 |
|
@@ -184,15 +190,16 @@ final class AAM_Core_Policy_Condition {
|
|
184 |
* Evaluate group of GREATER OR EQUALS THEN conditions
|
185 |
*
|
186 |
* @param array $conditions
|
|
|
187 |
*
|
188 |
* @return boolean
|
189 |
*
|
190 |
* @access protected
|
191 |
*/
|
192 |
-
protected function evaluateGreaterOrEqualsConditions($conditions) {
|
193 |
$result = false;
|
194 |
|
195 |
-
foreach($this->prepareConditions($conditions) as $left => $right) {
|
196 |
$result = $result || ($left >= $right);
|
197 |
}
|
198 |
|
@@ -203,15 +210,16 @@ final class AAM_Core_Policy_Condition {
|
|
203 |
* Evaluate group of LESS OR EQUALS THEN conditions
|
204 |
*
|
205 |
* @param array $conditions
|
|
|
206 |
*
|
207 |
* @return boolean
|
208 |
*
|
209 |
* @access protected
|
210 |
*/
|
211 |
-
protected function evaluateLessOrEqualsConditions($conditions) {
|
212 |
$result = false;
|
213 |
|
214 |
-
foreach($this->prepareConditions($conditions) as $left => $right) {
|
215 |
$result = $result || ($left <= $right);
|
216 |
}
|
217 |
|
@@ -222,15 +230,16 @@ final class AAM_Core_Policy_Condition {
|
|
222 |
* Evaluate group of IN conditions
|
223 |
*
|
224 |
* @param array $conditions
|
|
|
225 |
*
|
226 |
* @return boolean
|
227 |
*
|
228 |
* @access protected
|
229 |
*/
|
230 |
-
protected function evaluateInConditions($conditions) {
|
231 |
$result = false;
|
232 |
|
233 |
-
foreach($this->prepareConditions($conditions) as $left => $right) {
|
234 |
$result = $result || in_array($left, (array) $right, true);
|
235 |
}
|
236 |
|
@@ -241,28 +250,30 @@ final class AAM_Core_Policy_Condition {
|
|
241 |
* Evaluate group of NOT IN conditions
|
242 |
*
|
243 |
* @param array $conditions
|
|
|
244 |
*
|
245 |
* @return boolean
|
246 |
*
|
247 |
* @access protected
|
248 |
*/
|
249 |
-
protected function evaluateNotInConditions($conditions) {
|
250 |
-
return !$this->evaluateInConditions($conditions);
|
251 |
}
|
252 |
|
253 |
/**
|
254 |
* Evaluate group of LIKE conditions
|
255 |
*
|
256 |
* @param array $conditions
|
|
|
257 |
*
|
258 |
* @return boolean
|
259 |
*
|
260 |
* @access protected
|
261 |
*/
|
262 |
-
protected function evaluateLikeConditions($conditions) {
|
263 |
$result = false;
|
264 |
|
265 |
-
foreach($this->prepareConditions($conditions) as $left => $right) {
|
266 |
foreach((array)$right as $el) {
|
267 |
$sub = str_replace('\*', '.*', preg_quote($el));
|
268 |
$result = $result || preg_match('@^' . $sub . '$@', $left);
|
@@ -276,28 +287,30 @@ final class AAM_Core_Policy_Condition {
|
|
276 |
* Evaluate group of NOT LIKE conditions
|
277 |
*
|
278 |
* @param array $conditions
|
|
|
279 |
*
|
280 |
* @return boolean
|
281 |
*
|
282 |
* @access protected
|
283 |
*/
|
284 |
-
protected function evaluateNotLikeConditions($conditions) {
|
285 |
-
return !$this->evaluateLikeConditions($conditions);
|
286 |
}
|
287 |
|
288 |
/**
|
289 |
* Evaluate group of REGEX conditions
|
290 |
*
|
291 |
* @param array $conditions
|
|
|
292 |
*
|
293 |
* @return boolean
|
294 |
*
|
295 |
* @access protected
|
296 |
*/
|
297 |
-
protected function evaluateRegexConditions($conditions) {
|
298 |
$result = false;
|
299 |
|
300 |
-
foreach($this->prepareConditions($conditions) as $left => $right) {
|
301 |
$result = $result || preg_match($right, $left);
|
302 |
}
|
303 |
|
@@ -308,18 +321,19 @@ final class AAM_Core_Policy_Condition {
|
|
308 |
* Prepare conditions by replacing all defined tokens
|
309 |
*
|
310 |
* @param array $conditions
|
|
|
311 |
*
|
312 |
* @return array
|
313 |
*
|
314 |
* @access protected
|
315 |
*/
|
316 |
-
protected function prepareConditions($conditions) {
|
317 |
$result = array();
|
318 |
|
319 |
if (is_array($conditions)) {
|
320 |
foreach($conditions as $left => $right) {
|
321 |
-
$left = $this->parseExpression($left);
|
322 |
-
$right = $this->parseExpression($right);
|
323 |
|
324 |
if ($left !== false) { // Do not include any failed conditions
|
325 |
$result[$left] = $right;
|
@@ -333,16 +347,17 @@ final class AAM_Core_Policy_Condition {
|
|
333 |
/**
|
334 |
* Parse condition and try to replace all defined tokens
|
335 |
*
|
336 |
-
* @param mixed $exp
|
|
|
337 |
*
|
338 |
* @return mixed Prepared part of the condition or false on failure
|
339 |
*
|
340 |
* @access protected
|
341 |
*/
|
342 |
-
protected function parseExpression($exp) {
|
343 |
if (is_scalar($exp)) {
|
344 |
if (preg_match_all('/(\$\{[^}]+\})/', $exp, $match)) {
|
345 |
-
$exp = AAM_Core_Policy_Token::evaluate($exp, $match[1]);
|
346 |
}
|
347 |
// If there is type scaling, perform it too
|
348 |
if (preg_match('/^\(\*(string|ip|int|boolean|bool)\)(.*)/i', $exp, $scale)) {
|
@@ -352,7 +367,7 @@ final class AAM_Core_Policy_Condition {
|
|
352 |
}
|
353 |
} elseif (is_array($exp) || is_object($exp)) {
|
354 |
foreach($exp as &$value) {
|
355 |
-
$value = $this->parseExpression($value);
|
356 |
}
|
357 |
} else {
|
358 |
$exp = false;
|
61 |
/**
|
62 |
* Evaluate the group of conditions based on type
|
63 |
*
|
64 |
+
* @param array $conditions List of conditions
|
65 |
+
* @param array $args Since 5.9 - Inline args for evaluation
|
66 |
*
|
67 |
* @return boolean
|
68 |
*
|
69 |
* @access public
|
70 |
*/
|
71 |
+
public function evaluate($conditions, $args = array()) {
|
72 |
$result = true;
|
73 |
|
74 |
foreach($conditions as $type => $conditions) {
|
76 |
|
77 |
if (isset($this->map[$type])) {
|
78 |
$callback = array($this, $this->map[$type]);
|
79 |
+
$result = $result && call_user_func($callback, $conditions, $args);
|
80 |
} else {
|
81 |
$result = false;
|
82 |
}
|
89 |
* Evaluate group of BETWEEN conditions
|
90 |
*
|
91 |
* @param array $conditions
|
92 |
+
* @param array $args
|
93 |
*
|
94 |
* @return boolean
|
95 |
*
|
96 |
* @access protected
|
97 |
*/
|
98 |
+
protected function evaluateBetweenConditions($conditions, $args) {
|
99 |
$result = false;
|
100 |
|
101 |
+
foreach($this->prepareConditions($conditions, $args) as $left => $right) {
|
102 |
foreach((array)$right as $subset) {
|
103 |
$min = (is_array($subset) ? array_shift($subset) : $subset);
|
104 |
$max = (is_array($subset) ? end($subset) : $subset);
|
116 |
* The values have to be identical
|
117 |
*
|
118 |
* @param array $conditions
|
119 |
+
* @param array $args
|
120 |
*
|
121 |
* @return boolean
|
122 |
*
|
123 |
* @access protected
|
124 |
*/
|
125 |
+
protected function evaluateEqualsConditions($conditions, $args) {
|
126 |
$result = false;
|
127 |
|
128 |
+
foreach($this->prepareConditions($conditions, $args) as $left => $right) {
|
129 |
$result = $result || ($left === $right);
|
130 |
}
|
131 |
|
136 |
* Evaluate group of NOT EQUALs conditions
|
137 |
*
|
138 |
* @param array $conditions
|
139 |
+
* @param array $args
|
140 |
*
|
141 |
* @return boolean
|
142 |
*
|
143 |
* @access protected
|
144 |
*/
|
145 |
+
protected function evaluateNotEqualsConditions($conditions, $args) {
|
146 |
+
return !$this->evaluateEqualsConditions($conditions, $args);
|
147 |
}
|
148 |
|
149 |
/**
|
150 |
* Evaluate group of GREATER THEN conditions
|
151 |
*
|
152 |
* @param array $conditions
|
153 |
+
* @param array $args
|
154 |
*
|
155 |
* @return boolean
|
156 |
*
|
157 |
* @access protected
|
158 |
*/
|
159 |
+
protected function evaluateGreaterConditions($conditions, $args) {
|
160 |
$result = false;
|
161 |
|
162 |
+
foreach($this->prepareConditions($conditions, $args) as $left => $right) {
|
163 |
$result = $result || ($left > $right);
|
164 |
}
|
165 |
|
170 |
* Evaluate group of LESS THEN conditions
|
171 |
*
|
172 |
* @param array $conditions
|
173 |
+
* @param array $args
|
174 |
*
|
175 |
* @return boolean
|
176 |
*
|
177 |
* @access protected
|
178 |
*/
|
179 |
+
protected function evaluateLessConditions($conditions, $args) {
|
180 |
$result = false;
|
181 |
|
182 |
+
foreach($this->prepareConditions($conditions, $args) as $left => $right) {
|
183 |
$result = $result || ($left < $right);
|
184 |
}
|
185 |
|
190 |
* Evaluate group of GREATER OR EQUALS THEN conditions
|
191 |
*
|
192 |
* @param array $conditions
|
193 |
+
* @param array $args
|
194 |
*
|
195 |
* @return boolean
|
196 |
*
|
197 |
* @access protected
|
198 |
*/
|
199 |
+
protected function evaluateGreaterOrEqualsConditions($conditions, $args) {
|
200 |
$result = false;
|
201 |
|
202 |
+
foreach($this->prepareConditions($conditions, $args) as $left => $right) {
|
203 |
$result = $result || ($left >= $right);
|
204 |
}
|
205 |
|
210 |
* Evaluate group of LESS OR EQUALS THEN conditions
|
211 |
*
|
212 |
* @param array $conditions
|
213 |
+
* @param array $args
|
214 |
*
|
215 |
* @return boolean
|
216 |
*
|
217 |
* @access protected
|
218 |
*/
|
219 |
+
protected function evaluateLessOrEqualsConditions($conditions, $args) {
|
220 |
$result = false;
|
221 |
|
222 |
+
foreach($this->prepareConditions($conditions, $args) as $left => $right) {
|
223 |
$result = $result || ($left <= $right);
|
224 |
}
|
225 |
|
230 |
* Evaluate group of IN conditions
|
231 |
*
|
232 |
* @param array $conditions
|
233 |
+
* @param array $args
|
234 |
*
|
235 |
* @return boolean
|
236 |
*
|
237 |
* @access protected
|
238 |
*/
|
239 |
+
protected function evaluateInConditions($conditions, $args) {
|
240 |
$result = false;
|
241 |
|
242 |
+
foreach($this->prepareConditions($conditions, $args) as $left => $right) {
|
243 |
$result = $result || in_array($left, (array) $right, true);
|
244 |
}
|
245 |
|
250 |
* Evaluate group of NOT IN conditions
|
251 |
*
|
252 |
* @param array $conditions
|
253 |
+
* @param array $args
|
254 |
*
|
255 |
* @return boolean
|
256 |
*
|
257 |
* @access protected
|
258 |
*/
|
259 |
+
protected function evaluateNotInConditions($conditions, $args) {
|
260 |
+
return !$this->evaluateInConditions($conditions, $args);
|
261 |
}
|
262 |
|
263 |
/**
|
264 |
* Evaluate group of LIKE conditions
|
265 |
*
|
266 |
* @param array $conditions
|
267 |
+
* @param array $args
|
268 |
*
|
269 |
* @return boolean
|
270 |
*
|
271 |
* @access protected
|
272 |
*/
|
273 |
+
protected function evaluateLikeConditions($conditions, $args) {
|
274 |
$result = false;
|
275 |
|
276 |
+
foreach($this->prepareConditions($conditions, $args) as $left => $right) {
|
277 |
foreach((array)$right as $el) {
|
278 |
$sub = str_replace('\*', '.*', preg_quote($el));
|
279 |
$result = $result || preg_match('@^' . $sub . '$@', $left);
|
287 |
* Evaluate group of NOT LIKE conditions
|
288 |
*
|
289 |
* @param array $conditions
|
290 |
+
* @param array $args
|
291 |
*
|
292 |
* @return boolean
|
293 |
*
|
294 |
* @access protected
|
295 |
*/
|
296 |
+
protected function evaluateNotLikeConditions($conditions, $args) {
|
297 |
+
return !$this->evaluateLikeConditions($conditions, $args);
|
298 |
}
|
299 |
|
300 |
/**
|
301 |
* Evaluate group of REGEX conditions
|
302 |
*
|
303 |
* @param array $conditions
|
304 |
+
* @param array $args
|
305 |
*
|
306 |
* @return boolean
|
307 |
*
|
308 |
* @access protected
|
309 |
*/
|
310 |
+
protected function evaluateRegexConditions($conditions, $args) {
|
311 |
$result = false;
|
312 |
|
313 |
+
foreach($this->prepareConditions($conditions, $args) as $left => $right) {
|
314 |
$result = $result || preg_match($right, $left);
|
315 |
}
|
316 |
|
321 |
* Prepare conditions by replacing all defined tokens
|
322 |
*
|
323 |
* @param array $conditions
|
324 |
+
* @param array $args
|
325 |
*
|
326 |
* @return array
|
327 |
*
|
328 |
* @access protected
|
329 |
*/
|
330 |
+
protected function prepareConditions($conditions, $args) {
|
331 |
$result = array();
|
332 |
|
333 |
if (is_array($conditions)) {
|
334 |
foreach($conditions as $left => $right) {
|
335 |
+
$left = $this->parseExpression($left, $args);
|
336 |
+
$right = $this->parseExpression($right, $args);
|
337 |
|
338 |
if ($left !== false) { // Do not include any failed conditions
|
339 |
$result[$left] = $right;
|
347 |
/**
|
348 |
* Parse condition and try to replace all defined tokens
|
349 |
*
|
350 |
+
* @param mixed $exp Part of the condition (either left or right)
|
351 |
+
* @param array $args Inline arguments
|
352 |
*
|
353 |
* @return mixed Prepared part of the condition or false on failure
|
354 |
*
|
355 |
* @access protected
|
356 |
*/
|
357 |
+
protected function parseExpression($exp, $args) {
|
358 |
if (is_scalar($exp)) {
|
359 |
if (preg_match_all('/(\$\{[^}]+\})/', $exp, $match)) {
|
360 |
+
$exp = AAM_Core_Policy_Token::evaluate($exp, $match[1], $args);
|
361 |
}
|
362 |
// If there is type scaling, perform it too
|
363 |
if (preg_match('/^\(\*(string|ip|int|boolean|bool)\)(.*)/i', $exp, $scale)) {
|
367 |
}
|
368 |
} elseif (is_array($exp) || is_object($exp)) {
|
369 |
foreach($exp as &$value) {
|
370 |
+
$value = $this->parseExpression($value, $args);
|
371 |
}
|
372 |
} else {
|
373 |
$exp = false;
|
Application/Core/Policy/Factory.php
ADDED
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
* AAM core policy manager factory
|
12 |
+
*
|
13 |
+
* @package AAM
|
14 |
+
* @author Vasyl Martyniuk <vasyl@vasyltech.com>
|
15 |
+
* @since AAM v5.7.2
|
16 |
+
*/
|
17 |
+
final class AAM_Core_Policy_Factory {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Collection of instances
|
21 |
+
*
|
22 |
+
* @var array
|
23 |
+
*
|
24 |
+
* @access private
|
25 |
+
* @static
|
26 |
+
*/
|
27 |
+
private static $_instances = array();
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Get single instance of itself
|
31 |
+
*
|
32 |
+
* @param AAM_Core_Subject $subject
|
33 |
+
*
|
34 |
+
* @return AAM_Core_Policy_Manager
|
35 |
+
*
|
36 |
+
* @access public
|
37 |
+
* @static
|
38 |
+
*/
|
39 |
+
public static function get(AAM_Core_Subject $subject = null) {
|
40 |
+
if (is_null($subject)) {
|
41 |
+
$subject = AAM::getUser();
|
42 |
+
}
|
43 |
+
|
44 |
+
$id = $subject->getId();
|
45 |
+
$sid = $subject->getUID() . (empty($id) ? '' : '_' . $id);
|
46 |
+
|
47 |
+
if (!isset(self::$_instances[$sid])) {
|
48 |
+
self::$_instances[$sid] = new AAM_Core_Policy_Manager($subject);
|
49 |
+
}
|
50 |
+
|
51 |
+
return self::$_instances[$sid];
|
52 |
+
}
|
53 |
+
|
54 |
+
}
|
Application/Core/Policy/Manager.php
CHANGED
@@ -17,23 +17,31 @@
|
|
17 |
final class AAM_Core_Policy_Manager {
|
18 |
|
19 |
/**
|
20 |
-
*
|
21 |
*
|
22 |
-
* @var
|
23 |
*
|
24 |
-
* @access
|
25 |
-
* @static
|
26 |
*/
|
27 |
-
|
28 |
|
29 |
/**
|
30 |
-
*
|
31 |
*
|
32 |
-
* @var
|
33 |
*
|
34 |
* @access protected
|
35 |
*/
|
36 |
-
protected $
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
|
38 |
/**
|
39 |
* Constructor
|
@@ -42,32 +50,47 @@ final class AAM_Core_Policy_Manager {
|
|
42 |
*
|
43 |
* @return void
|
44 |
*/
|
45 |
-
|
46 |
-
$this->policyObject =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
}
|
48 |
|
49 |
/**
|
50 |
* Find all the matching policies
|
51 |
*
|
52 |
-
* @param string
|
53 |
-
* @param
|
54 |
*
|
55 |
* @return array
|
56 |
*
|
57 |
* @access public
|
58 |
*/
|
59 |
-
public function find($s,
|
60 |
$statements = array();
|
|
|
61 |
|
62 |
-
|
63 |
-
|
64 |
-
$policies = $this->policyObject;
|
65 |
-
} else {
|
66 |
-
$policies = $subject->getObject('policy');
|
67 |
-
}
|
68 |
-
|
69 |
-
foreach($policies->getResources($subject) as $key => $stm) {
|
70 |
-
if (preg_match($s, $key)) {
|
71 |
$statements[strtolower($key)] = $stm;
|
72 |
}
|
73 |
}
|
@@ -76,30 +99,201 @@ final class AAM_Core_Policy_Manager {
|
|
76 |
}
|
77 |
|
78 |
/**
|
79 |
-
*
|
|
|
|
|
|
|
|
|
|
|
80 |
*
|
81 |
-
* @return
|
82 |
*
|
83 |
* @access public
|
84 |
-
* @static
|
85 |
*/
|
86 |
-
public
|
87 |
-
|
88 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
}
|
90 |
|
91 |
-
return
|
92 |
}
|
93 |
|
94 |
/**
|
95 |
-
*
|
96 |
*
|
97 |
-
* @
|
|
|
|
|
|
|
98 |
*
|
99 |
* @access public
|
100 |
-
* @static
|
101 |
*/
|
102 |
-
public
|
103 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
}
|
17 |
final class AAM_Core_Policy_Manager {
|
18 |
|
19 |
/**
|
20 |
+
* Policy core object
|
21 |
*
|
22 |
+
* @var AAM_Core_Object_Policy
|
23 |
*
|
24 |
+
* @access protected
|
|
|
25 |
*/
|
26 |
+
protected $policyObject;
|
27 |
|
28 |
/**
|
29 |
+
* Current subject
|
30 |
*
|
31 |
+
* @var AAM_Core_Subject
|
32 |
*
|
33 |
* @access protected
|
34 |
*/
|
35 |
+
protected $subject;
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Parsed policy tree
|
39 |
+
*
|
40 |
+
* @var array
|
41 |
+
*
|
42 |
+
* @access protected
|
43 |
+
*/
|
44 |
+
protected $tree = null;
|
45 |
|
46 |
/**
|
47 |
* Constructor
|
50 |
*
|
51 |
* @return void
|
52 |
*/
|
53 |
+
public function __construct(AAM_Core_Subject $subject) {
|
54 |
+
$this->policyObject = $subject->getObject('policy');
|
55 |
+
$this->subject = $subject;
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Call policy object public methods
|
60 |
+
*
|
61 |
+
* @param string $name
|
62 |
+
* @param array $args
|
63 |
+
*
|
64 |
+
* @return mixed
|
65 |
+
*
|
66 |
+
* @access public
|
67 |
+
*/
|
68 |
+
public function __call($name, $args) {
|
69 |
+
$result = null;
|
70 |
+
|
71 |
+
if (method_exists($this->policyObject, $name)) {
|
72 |
+
$result = call_user_func_array(array($this->policyObject, $name), $args);
|
73 |
+
}
|
74 |
+
|
75 |
+
return $result;
|
76 |
}
|
77 |
|
78 |
/**
|
79 |
* Find all the matching policies
|
80 |
*
|
81 |
+
* @param string $s RegEx
|
82 |
+
* @param array $args Inline arguments
|
83 |
*
|
84 |
* @return array
|
85 |
*
|
86 |
* @access public
|
87 |
*/
|
88 |
+
public function find($s, $args = array()) {
|
89 |
$statements = array();
|
90 |
+
$tree = $this->preparePolicyTree();
|
91 |
|
92 |
+
foreach($tree['Statement'] as $key => $stm) {
|
93 |
+
if (preg_match($s, $key) && $this->isApplicable($stm, $args)) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
$statements[strtolower($key)] = $stm;
|
95 |
}
|
96 |
}
|
99 |
}
|
100 |
|
101 |
/**
|
102 |
+
* Check if specified action is allowed for resource
|
103 |
+
*
|
104 |
+
* This method is working with "Statement" array.
|
105 |
+
*
|
106 |
+
* @param string $resource Resource name
|
107 |
+
* @param array $args Args that will be injected during condition evaluation
|
108 |
*
|
109 |
+
* @return boolean|null
|
110 |
*
|
111 |
* @access public
|
|
|
112 |
*/
|
113 |
+
public function isAllowed($resource, $args = array()) {
|
114 |
+
$allowed = null;
|
115 |
+
$tree = $this->preparePolicyTree();
|
116 |
+
$id = strtolower($resource);
|
117 |
+
|
118 |
+
if (isset($tree['Statement'][$id])) {
|
119 |
+
$stm = $tree['Statement'][$id];
|
120 |
+
|
121 |
+
if ($this->isApplicable($stm, $args)) {
|
122 |
+
$effect = strtolower($stm['Effect']);
|
123 |
+
$allowed = ($effect === 'allow');
|
124 |
+
}
|
125 |
}
|
126 |
|
127 |
+
return $allowed;
|
128 |
}
|
129 |
|
130 |
/**
|
131 |
+
* Get Policy Param
|
132 |
*
|
133 |
+
* @param string $name
|
134 |
+
* @param array $args
|
135 |
+
*
|
136 |
+
* @return mixed
|
137 |
*
|
138 |
* @access public
|
|
|
139 |
*/
|
140 |
+
public function getParam($name, $args = array()) {
|
141 |
+
$value = null;
|
142 |
+
$id = strtolower($name);
|
143 |
+
|
144 |
+
if (isset($this->tree['Param'][$id])) {
|
145 |
+
$param = $this->tree['Param'][$id];
|
146 |
+
|
147 |
+
if ($this->isApplicable($param, $args)) {
|
148 |
+
$value = $param['Value'];
|
149 |
+
}
|
150 |
+
}
|
151 |
+
|
152 |
+
return $value;
|
153 |
}
|
154 |
+
|
155 |
+
/**
|
156 |
+
* Check if policy block is applicable
|
157 |
+
*
|
158 |
+
* @param array $block
|
159 |
+
* @param array $args
|
160 |
+
*
|
161 |
+
* @return boolean
|
162 |
+
*
|
163 |
+
* @access protected
|
164 |
+
*/
|
165 |
+
protected function isApplicable($block, $args) {
|
166 |
+
$result = true;
|
167 |
+
|
168 |
+
if (!empty($block['Condition']) && !is_scalar($block['Condition'])) {
|
169 |
+
$result = AAM_Core_Policy_Condition::getInstance()->evaluate(
|
170 |
+
$block['Condition'], $args
|
171 |
+
);
|
172 |
+
}
|
173 |
+
|
174 |
+
return $result;
|
175 |
+
}
|
176 |
+
|
177 |
+
/**
|
178 |
+
* Prepare policy tree
|
179 |
+
*
|
180 |
+
* This is the lazy load for the policy tree. If tree has not been initialized,
|
181 |
+
* trigger the process of parsing and merging statements and settings.
|
182 |
+
*
|
183 |
+
* @return array
|
184 |
+
*
|
185 |
+
* @access protected
|
186 |
+
*/
|
187 |
+
protected function preparePolicyTree() {
|
188 |
+
if (is_null($this->tree)) {
|
189 |
+
$cache = $this->subject->getObject('cache')->get('policyTree');
|
190 |
+
|
191 |
+
if (empty($cache)) {
|
192 |
+
$this->tree = array(
|
193 |
+
'Statement' => array(),
|
194 |
+
'Param' => array()
|
195 |
+
);
|
196 |
+
|
197 |
+
foreach($this->policyObject->getOption() as $id => $effect) {
|
198 |
+
if (!empty($effect)) { // Load policy only if it is attached
|
199 |
+
$this->extendTree(
|
200 |
+
$this->tree, $this->parsePolicy(get_post($id))
|
201 |
+
);
|
202 |
+
}
|
203 |
+
}
|
204 |
+
|
205 |
+
$this->subject->getObject('cache')->add('policyTree', 0, $this->tree);
|
206 |
+
} else {
|
207 |
+
$this->tree = $cache;
|
208 |
+
}
|
209 |
+
}
|
210 |
+
|
211 |
+
return $this->tree;
|
212 |
+
}
|
213 |
+
|
214 |
+
/**
|
215 |
+
* Parse policy post and extract Statements and Params
|
216 |
+
*
|
217 |
+
* @param WP_Post $policy
|
218 |
+
*
|
219 |
+
* @return array
|
220 |
+
*
|
221 |
+
* @access protected
|
222 |
+
*/
|
223 |
+
protected function parsePolicy($policy) {
|
224 |
+
$tree = array('Statement' => array(), 'Param' => array());
|
225 |
+
// Only parse if policy is valid WP post and is published (active)
|
226 |
+
if (is_a($policy, 'WP_Post') && ($policy->post_status === 'publish')) {
|
227 |
+
$val = json_decode($policy->post_content, true);
|
228 |
+
|
229 |
+
// Do not load the policy if any errors
|
230 |
+
if (json_last_error() === JSON_ERROR_NONE) {
|
231 |
+
$tree = array(
|
232 |
+
'Statement' => isset($val['Statement']) ? (array) $val['Statement'] : array(),
|
233 |
+
'Param' => isset($val['Param']) ? (array) $val['Param'] : array(),
|
234 |
+
);
|
235 |
+
}
|
236 |
+
}
|
237 |
+
|
238 |
+
return $tree;
|
239 |
+
}
|
240 |
+
|
241 |
+
/**
|
242 |
+
* Extend tree with additional statements and params
|
243 |
+
*
|
244 |
+
* @param array &$tree
|
245 |
+
* @param array $addition
|
246 |
+
*
|
247 |
+
* @return array
|
248 |
+
*
|
249 |
+
* @access protected
|
250 |
+
*/
|
251 |
+
protected function extendTree(&$tree, $addition) {
|
252 |
+
// Step #1. If there are any statements, let's index them by resource:action
|
253 |
+
// and insert into the list of statements
|
254 |
+
foreach($addition['Statement'] as $stm) {
|
255 |
+
$ress = (isset($stm['Resource']) ? (array) $stm['Resource'] : array());
|
256 |
+
$acts = (isset($stm['Action']) ? (array) $stm['Action'] : array(''));
|
257 |
+
|
258 |
+
foreach($ress as $res) {
|
259 |
+
foreach($acts as $act) {
|
260 |
+
$id = strtolower($res . (!empty($act) ? ":{$act}" : ''));
|
261 |
+
|
262 |
+
if (!isset($tree['Statement'][$id]) || empty($tree['Statement'][$id]['Enforce'])) {
|
263 |
+
$tree['Statement'][$id] = $this->removeKeys($stm, array('Resource', 'Action'));
|
264 |
+
}
|
265 |
+
}
|
266 |
+
}
|
267 |
+
}
|
268 |
+
|
269 |
+
// Step #2. If there are any params, let's index them and insert into the list
|
270 |
+
foreach($addition['Param'] as $param) {
|
271 |
+
$id = (isset($param['Key']) ? $param['Key'] : '__none');
|
272 |
+
|
273 |
+
if (!isset($tree['Param'][$id]) || empty($tree['Param'][$id]['Enforce'])) {
|
274 |
+
$tree['Param'][$id] = $this->removeKeys($param, array('Key'));
|
275 |
+
}
|
276 |
+
}
|
277 |
+
}
|
278 |
+
|
279 |
+
/**
|
280 |
+
* Remove unnecessary keys from array
|
281 |
+
*
|
282 |
+
* @param array $arr
|
283 |
+
* @param array $keys
|
284 |
+
*
|
285 |
+
* @return array
|
286 |
+
*
|
287 |
+
* @access private
|
288 |
+
*/
|
289 |
+
private function removeKeys($arr, $keys) {
|
290 |
+
foreach($keys as $key) {
|
291 |
+
if (isset($arr[$key])) {
|
292 |
+
unset($arr[$key]);
|
293 |
+
}
|
294 |
+
}
|
295 |
+
|
296 |
+
return $arr;
|
297 |
+
}
|
298 |
+
|
299 |
}
|
Application/Core/Policy/Token.php
CHANGED
@@ -25,11 +25,13 @@ final class AAM_Core_Policy_Token {
|
|
25 |
* @static
|
26 |
*/
|
27 |
protected static $map = array(
|
28 |
-
'USER'
|
29 |
-
'DATETIME'
|
30 |
-
'GET'
|
31 |
-
'POST'
|
32 |
-
'COOKIE'
|
|
|
|
|
33 |
);
|
34 |
|
35 |
/**
|
@@ -43,11 +45,14 @@ final class AAM_Core_Policy_Token {
|
|
43 |
* @access public
|
44 |
* @static
|
45 |
*/
|
46 |
-
public static function evaluate($part, array $tokens) {
|
47 |
foreach($tokens as $token) {
|
48 |
$part = str_replace(
|
49 |
$token,
|
50 |
-
self::getValue(
|
|
|
|
|
|
|
51 |
$part
|
52 |
);
|
53 |
}
|
@@ -59,20 +64,20 @@ final class AAM_Core_Policy_Token {
|
|
59 |
* Get token value
|
60 |
*
|
61 |
* @param string $token
|
62 |
-
* @param
|
63 |
*
|
64 |
* @return mixed
|
65 |
*
|
66 |
* @access protected
|
67 |
* @static
|
68 |
*/
|
69 |
-
protected static function getValue($token, $
|
70 |
$parts = explode('.', $token);
|
71 |
|
72 |
if (isset(self::$map[$parts[0]])) {
|
73 |
-
$value = call_user_func(self::$map[$parts[0]], $parts[1], $
|
74 |
} elseif ($parts[0] === 'CALLBACK' && is_callable($parts[1])) {
|
75 |
-
$value = call_user_func($parts[1], $
|
76 |
}
|
77 |
|
78 |
return $value;
|
@@ -109,6 +114,21 @@ final class AAM_Core_Policy_Token {
|
|
109 |
return $value;
|
110 |
}
|
111 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
/**
|
113 |
* Get current datetime value
|
114 |
*
|
25 |
* @static
|
26 |
*/
|
27 |
protected static $map = array(
|
28 |
+
'USER' => 'AAM_Core_Policy_Token::getUserValue',
|
29 |
+
'DATETIME' => 'AAM_Core_Policy_Token::getDateTimeValue',
|
30 |
+
'GET' => 'AAM_Core_Request::get',
|
31 |
+
'POST' => 'AAM_Core_Request::post',
|
32 |
+
'COOKIE' => 'AAM_Core_Request::cookie',
|
33 |
+
'SERVER' => 'AAM_Core_Request::server',
|
34 |
+
'ARGS' => 'AAM_Core_Policy_Token::getArgValue'
|
35 |
);
|
36 |
|
37 |
/**
|
45 |
* @access public
|
46 |
* @static
|
47 |
*/
|
48 |
+
public static function evaluate($part, array $tokens, array $args = array()) {
|
49 |
foreach($tokens as $token) {
|
50 |
$part = str_replace(
|
51 |
$token,
|
52 |
+
self::getValue(
|
53 |
+
preg_replace('/^\$\{([^}]+)\}$/', '${1}', $token),
|
54 |
+
$args
|
55 |
+
),
|
56 |
$part
|
57 |
);
|
58 |
}
|
64 |
* Get token value
|
65 |
*
|
66 |
* @param string $token
|
67 |
+
* @param array $args
|
68 |
*
|
69 |
* @return mixed
|
70 |
*
|
71 |
* @access protected
|
72 |
* @static
|
73 |
*/
|
74 |
+
protected static function getValue($token, $args) {
|
75 |
$parts = explode('.', $token);
|
76 |
|
77 |
if (isset(self::$map[$parts[0]])) {
|
78 |
+
$value = call_user_func(self::$map[$parts[0]], $parts[1], $args);
|
79 |
} elseif ($parts[0] === 'CALLBACK' && is_callable($parts[1])) {
|
80 |
+
$value = call_user_func($parts[1], $args);
|
81 |
}
|
82 |
|
83 |
return $value;
|
114 |
return $value;
|
115 |
}
|
116 |
|
117 |
+
/**
|
118 |
+
* Get inline argument
|
119 |
+
*
|
120 |
+
* @param string $prop
|
121 |
+
* @param array $args
|
122 |
+
*
|
123 |
+
* @return mixed
|
124 |
+
*
|
125 |
+
* @access protected
|
126 |
+
* @static
|
127 |
+
*/
|
128 |
+
protected static function getArgValue($prop, $args) {
|
129 |
+
return (isset($args[$prop]) ? $args[$prop] : null);
|
130 |
+
}
|
131 |
+
|
132 |
/**
|
133 |
* Get current datetime value
|
134 |
*
|
Application/Core/Subject/Role.php
CHANGED
@@ -141,10 +141,10 @@ class AAM_Core_Subject_Role extends AAM_Core_Subject {
|
|
141 |
$has = $this->getSubject()->has_cap($cap);
|
142 |
|
143 |
// Override by policy if is set
|
144 |
-
$
|
145 |
-
|
146 |
-
|
147 |
-
$has =
|
148 |
}
|
149 |
|
150 |
return $has;
|
141 |
$has = $this->getSubject()->has_cap($cap);
|
142 |
|
143 |
// Override by policy if is set
|
144 |
+
$manager = AAM::api()->getPolicyManager($this);
|
145 |
+
|
146 |
+
if ($manager->isAllowed("Capability:{$cap}") === false) {
|
147 |
+
$has = false;
|
148 |
}
|
149 |
|
150 |
return $has;
|
Application/Core/Subject/User.php
CHANGED
@@ -30,26 +30,40 @@ class AAM_Core_Subject_User extends AAM_Core_Subject {
|
|
30 |
const AAM_CAPKEY = 'aam_capability';
|
31 |
|
32 |
/**
|
33 |
-
*
|
34 |
-
*
|
|
|
|
|
|
|
35 |
*/
|
36 |
protected $aamCaps = array();
|
37 |
|
38 |
/**
|
39 |
-
*
|
40 |
-
*
|
|
|
|
|
|
|
41 |
*/
|
42 |
protected $parent = null;
|
43 |
|
44 |
/**
|
45 |
-
*
|
46 |
-
*
|
|
|
|
|
|
|
47 |
*/
|
48 |
protected $maxLevel = null;
|
49 |
|
50 |
/**
|
|
|
51 |
*
|
52 |
-
* @param
|
|
|
|
|
|
|
|
|
53 |
*/
|
54 |
public function __construct($id = '') {
|
55 |
parent::__construct($id);
|
@@ -62,6 +76,55 @@ class AAM_Core_Subject_User extends AAM_Core_Subject {
|
|
62 |
}
|
63 |
}
|
64 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
/**
|
66 |
*
|
67 |
*/
|
@@ -223,65 +286,6 @@ class AAM_Core_Subject_User extends AAM_Core_Subject {
|
|
223 |
return $subject;
|
224 |
}
|
225 |
|
226 |
-
/**
|
227 |
-
*
|
228 |
-
*/
|
229 |
-
public function initialize($isolated = false) {
|
230 |
-
$subject = $this->getSubject();
|
231 |
-
|
232 |
-
// Retrieve all capabilities set in Access Policy
|
233 |
-
// Load Capabilities from the policy
|
234 |
-
$stms = AAM_Core_Policy_Manager::getInstance()->find(
|
235 |
-
"/^Capability:/i", ($isolated ? $this : null)
|
236 |
-
);
|
237 |
-
|
238 |
-
$policyCaps = array();
|
239 |
-
|
240 |
-
foreach($stms as $key => $stm) {
|
241 |
-
$chunks = explode(':', $key);
|
242 |
-
if (count($chunks) === 2) {
|
243 |
-
$policyCaps[$chunks[1]] = ($stm['Effect'] === 'allow' ? 1 : 0);
|
244 |
-
}
|
245 |
-
}
|
246 |
-
|
247 |
-
// Load Roles from the policy
|
248 |
-
$stms = AAM_Core_Policy_Manager::getInstance()->find(
|
249 |
-
"/^Role:/i", ($isolated ? $this : null)
|
250 |
-
);
|
251 |
-
|
252 |
-
$roles = (array) $subject->roles;
|
253 |
-
|
254 |
-
$allRoles = AAM_Core_API::getRoles();
|
255 |
-
$roleCaps = array();
|
256 |
-
|
257 |
-
foreach($stms as $key => $stm) {
|
258 |
-
$chunks = explode(':', $key);
|
259 |
-
|
260 |
-
if ($stm['Effect'] === 'allow') {
|
261 |
-
if (!in_array($chunks[1], $roles, true)) {
|
262 |
-
if ($allRoles->is_role($chunks[1])) {
|
263 |
-
$roleCaps = array_merge($roleCaps, $allRoles->get_role($chunks[1])->capabilities);
|
264 |
-
$roleCaps[] = $chunks[1];
|
265 |
-
}
|
266 |
-
$roles[] = $chunks[1];
|
267 |
-
}
|
268 |
-
} elseif (in_array($chunks[1], $roles, true)) {
|
269 |
-
// Make sure that we delete all instanses of the role
|
270 |
-
foreach($roles as $i => $role){
|
271 |
-
if ($role === $chunks[1]) {
|
272 |
-
unset($roles[$i]);
|
273 |
-
}
|
274 |
-
}
|
275 |
-
}
|
276 |
-
}
|
277 |
-
|
278 |
-
$subject->roles = $roles;
|
279 |
-
|
280 |
-
//reset the user capabilities
|
281 |
-
$subject->allcaps = array_merge($subject->allcaps, $roleCaps, $policyCaps, $this->aamCaps);
|
282 |
-
$subject->caps = array_merge($subject->caps, $roleCaps, $policyCaps, $this->aamCaps);
|
283 |
-
}
|
284 |
-
|
285 |
/**
|
286 |
* Get user capabilities
|
287 |
*
|
30 |
const AAM_CAPKEY = 'aam_capability';
|
31 |
|
32 |
/**
|
33 |
+
* List of all user specific capabilities
|
34 |
+
*
|
35 |
+
* @var array
|
36 |
+
*
|
37 |
+
* @access protected
|
38 |
*/
|
39 |
protected $aamCaps = array();
|
40 |
|
41 |
/**
|
42 |
+
* Parent subject
|
43 |
+
*
|
44 |
+
* @var AAM_Core_Subject
|
45 |
+
*
|
46 |
+
* @access protected
|
47 |
*/
|
48 |
protected $parent = null;
|
49 |
|
50 |
/**
|
51 |
+
* Max user level
|
52 |
+
*
|
53 |
+
* @var int
|
54 |
+
*
|
55 |
+
* @access protected
|
56 |
*/
|
57 |
protected $maxLevel = null;
|
58 |
|
59 |
/**
|
60 |
+
* Constructor
|
61 |
*
|
62 |
+
* @param int $id
|
63 |
+
*
|
64 |
+
* @return void
|
65 |
+
*
|
66 |
+
* @access public
|
67 |
*/
|
68 |
public function __construct($id = '') {
|
69 |
parent::__construct($id);
|
76 |
}
|
77 |
}
|
78 |
|
79 |
+
/**
|
80 |
+
*
|
81 |
+
*/
|
82 |
+
public function initialize() {
|
83 |
+
$subject = $this->getSubject();
|
84 |
+
$manager = AAM_Core_Policy_Factory::get($this);
|
85 |
+
|
86 |
+
// Retrieve all capabilities set in Access Policy
|
87 |
+
// Load Capabilities from the policy
|
88 |
+
$policyCaps = array();
|
89 |
+
|
90 |
+
foreach($manager->find("/^Capability:[\w]+/i") as $key => $stm) {
|
91 |
+
$chunks = explode(':', $key);
|
92 |
+
$policyCaps[$chunks[1]] = ($stm['Effect'] === 'allow' ? 1 : 0);
|
93 |
+
}
|
94 |
+
|
95 |
+
// Load Roles from the policy
|
96 |
+
$roles = (array) $subject->roles;
|
97 |
+
$allRoles = AAM_Core_API::getRoles();
|
98 |
+
$roleCaps = array();
|
99 |
+
|
100 |
+
foreach($manager->find("/^Role:/i") as $key => $stm) {
|
101 |
+
$chunks = explode(':', $key);
|
102 |
+
|
103 |
+
if ($stm['Effect'] === 'allow') {
|
104 |
+
if (!in_array($chunks[1], $roles, true)) {
|
105 |
+
if ($allRoles->is_role($chunks[1])) {
|
106 |
+
$roleCaps = array_merge($roleCaps, $allRoles->get_role($chunks[1])->capabilities);
|
107 |
+
$roleCaps[] = $chunks[1];
|
108 |
+
}
|
109 |
+
$roles[] = $chunks[1];
|
110 |
+
}
|
111 |
+
} elseif (in_array($chunks[1], $roles, true)) {
|
112 |
+
// Make sure that we delete all instanses of the role
|
113 |
+
foreach($roles as $i => $role){
|
114 |
+
if ($role === $chunks[1]) {
|
115 |
+
unset($roles[$i]);
|
116 |
+
}
|
117 |
+
}
|
118 |
+
}
|
119 |
+
}
|
120 |
+
|
121 |
+
$subject->roles = $roles;
|
122 |
+
|
123 |
+
//reset the user capabilities
|
124 |
+
$subject->allcaps = array_merge($subject->allcaps, $roleCaps, $policyCaps, $this->aamCaps);
|
125 |
+
$subject->caps = array_merge($subject->caps, $roleCaps, $policyCaps, $this->aamCaps);
|
126 |
+
}
|
127 |
+
|
128 |
/**
|
129 |
*
|
130 |
*/
|
286 |
return $subject;
|
287 |
}
|
288 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
289 |
/**
|
290 |
* Get user capabilities
|
291 |
*
|
Application/Extension/List.php
CHANGED
@@ -22,7 +22,7 @@ class AAM_Extension_List {
|
|
22 |
'description' => 'Get the complete list of all premium AAM extensions in one package and all future premium extensions already included for now additional cost.',
|
23 |
'url' => 'https://aamplugin.com/complete-package',
|
24 |
'version' => (defined('AAM_COMPLETE_PACKAGE') ? constant('AAM_COMPLETE_PACKAGE') : null),
|
25 |
-
'latest' => '3.8.
|
26 |
),
|
27 |
'AAM_PLUS_PACKAGE' => array(
|
28 |
'title' => 'Plus Package',
|
@@ -31,7 +31,7 @@ class AAM_Extension_List {
|
|
31 |
'description' => 'Manage access to your WordPress website posts, pages, media, custom post types, categories and hierarchical taxonomies for any role, individual user, visitors or even define default access for everybody; and do this separately for frontend, backend or API levels. As the bonus, define more granular access to how comments can be managed on the backend by other users.',
|
32 |
'url' => 'https://aamplugin.com/extension/plus-package',
|
33 |
'version' => (defined('AAM_PLUS_PACKAGE') ? constant('AAM_PLUS_PACKAGE') : null),
|
34 |
-
'latest' => '3.9'
|
35 |
),
|
36 |
'AAM_IP_CHECK' => array(
|
37 |
'title' => 'IP Check',
|
22 |
'description' => 'Get the complete list of all premium AAM extensions in one package and all future premium extensions already included for now additional cost.',
|
23 |
'url' => 'https://aamplugin.com/complete-package',
|
24 |
'version' => (defined('AAM_COMPLETE_PACKAGE') ? constant('AAM_COMPLETE_PACKAGE') : null),
|
25 |
+
'latest' => '3.8.14'
|
26 |
),
|
27 |
'AAM_PLUS_PACKAGE' => array(
|
28 |
'title' => 'Plus Package',
|
31 |
'description' => 'Manage access to your WordPress website posts, pages, media, custom post types, categories and hierarchical taxonomies for any role, individual user, visitors or even define default access for everybody; and do this separately for frontend, backend or API levels. As the bonus, define more granular access to how comments can be managed on the backend by other users.',
|
32 |
'url' => 'https://aamplugin.com/extension/plus-package',
|
33 |
'version' => (defined('AAM_PLUS_PACKAGE') ? constant('AAM_PLUS_PACKAGE') : null),
|
34 |
+
'latest' => '3.9.2'
|
35 |
),
|
36 |
'AAM_IP_CHECK' => array(
|
37 |
'title' => 'IP Check',
|
Application/Shared/Manager.php
CHANGED
@@ -139,13 +139,13 @@ class AAM_Shared_Manager {
|
|
139 |
'supports' => array('title', 'excerpt', 'revisions'),
|
140 |
'delete_with_user' => false,
|
141 |
'capabilities' => array(
|
142 |
-
'edit_post' => '
|
143 |
-
'read_post' => '
|
144 |
-
'delete_post' => '
|
145 |
-
'delete_posts' => '
|
146 |
-
'edit_posts' => '
|
147 |
-
'edit_others_posts' => '
|
148 |
-
'publish_posts' => '
|
149 |
)
|
150 |
));
|
151 |
}
|
@@ -450,20 +450,24 @@ class AAM_Shared_Manager {
|
|
450 |
|
451 |
case 'edit_post':
|
452 |
case 'edit_page':
|
|
|
453 |
$caps = $this->authorizePostEdit($caps, $args[0]);
|
454 |
break;
|
455 |
|
456 |
case 'delete_post':
|
457 |
case 'delete_page':
|
|
|
458 |
$caps = $this->authorizePostDelete($caps, $args[0]);
|
459 |
break;
|
460 |
|
461 |
case 'read_post':
|
462 |
case 'read_page':
|
|
|
463 |
$caps = $this->authorizePostRead($caps, $args[0]);
|
464 |
break;
|
465 |
|
466 |
case 'publish_post':
|
|
|
467 |
$caps = $this->authorizePublishPost($caps, $args[0]);
|
468 |
break;
|
469 |
|
@@ -472,6 +476,7 @@ class AAM_Shared_Manager {
|
|
472 |
break;
|
473 |
|
474 |
case 'publish_posts':
|
|
|
475 |
// There is a bug in WP core that instead of checking if user has
|
476 |
// ability to publish_post, it checks for edit_post
|
477 |
if (is_a($post, 'WP_Post')) {
|
@@ -518,7 +523,7 @@ class AAM_Shared_Manager {
|
|
518 |
* @return type
|
519 |
*/
|
520 |
protected function checkPluginsAction($action, $caps, $cap) {
|
521 |
-
$allow = AAM::api()->isAllowed("Plugin:WP:{$action}");
|
522 |
|
523 |
if ($allow !== null) {
|
524 |
$caps[] = $allow ? $cap : 'do_not_allow';
|
@@ -539,7 +544,7 @@ class AAM_Shared_Manager {
|
|
539 |
$parts = explode('/', $plugin);
|
540 |
$slug = (!empty($parts[0]) ? $parts[0] : null);
|
541 |
|
542 |
-
$allow = AAM::api()->isAllowed("Plugin:{$slug}:WP:{$action}");
|
543 |
if ($allow !== null) {
|
544 |
$caps[] = $allow ? $cap : 'do_not_allow';
|
545 |
}
|
139 |
'supports' => array('title', 'excerpt', 'revisions'),
|
140 |
'delete_with_user' => false,
|
141 |
'capabilities' => array(
|
142 |
+
'edit_post' => 'aam_edit_policy',
|
143 |
+
'read_post' => 'aam_read_policy',
|
144 |
+
'delete_post' => 'aam_delete_policy',
|
145 |
+
'delete_posts' => 'aam_delete_policies',
|
146 |
+
'edit_posts' => 'aam_edit_policies',
|
147 |
+
'edit_others_posts' => 'aam_edit_other_policies',
|
148 |
+
'publish_posts' => 'aam_publish_policies',
|
149 |
)
|
150 |
));
|
151 |
}
|
450 |
|
451 |
case 'edit_post':
|
452 |
case 'edit_page':
|
453 |
+
case 'aam_edit_policy':
|
454 |
$caps = $this->authorizePostEdit($caps, $args[0]);
|
455 |
break;
|
456 |
|
457 |
case 'delete_post':
|
458 |
case 'delete_page':
|
459 |
+
case 'aam_delete_policy':
|
460 |
$caps = $this->authorizePostDelete($caps, $args[0]);
|
461 |
break;
|
462 |
|
463 |
case 'read_post':
|
464 |
case 'read_page':
|
465 |
+
case 'aam_read_policy':
|
466 |
$caps = $this->authorizePostRead($caps, $args[0]);
|
467 |
break;
|
468 |
|
469 |
case 'publish_post':
|
470 |
+
case 'aam_publish_policy':
|
471 |
$caps = $this->authorizePublishPost($caps, $args[0]);
|
472 |
break;
|
473 |
|
476 |
break;
|
477 |
|
478 |
case 'publish_posts':
|
479 |
+
case 'aam_publish_policies':
|
480 |
// There is a bug in WP core that instead of checking if user has
|
481 |
// ability to publish_post, it checks for edit_post
|
482 |
if (is_a($post, 'WP_Post')) {
|
523 |
* @return type
|
524 |
*/
|
525 |
protected function checkPluginsAction($action, $caps, $cap) {
|
526 |
+
$allow = AAM::api()->getPolicyManager()->isAllowed("Plugin:WP:{$action}");
|
527 |
|
528 |
if ($allow !== null) {
|
529 |
$caps[] = $allow ? $cap : 'do_not_allow';
|
544 |
$parts = explode('/', $plugin);
|
545 |
$slug = (!empty($parts[0]) ? $parts[0] : null);
|
546 |
|
547 |
+
$allow = AAM::api()->getPolicyManager()->isAllowed("Plugin:{$slug}:WP:{$action}");
|
548 |
if ($allow !== null) {
|
549 |
$caps[] = $allow ? $cap : 'do_not_allow';
|
550 |
}
|
Lang/advanced-access-manager-en_US.mo
CHANGED
Binary file
|
Lang/advanced-access-manager-en_US.po
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: Advanced Access Manager\n"
|
4 |
-
"POT-Creation-Date:
|
5 |
"PO-Revision-Date: \n"
|
6 |
"Last-Translator: \n"
|
7 |
"Language-Team: AAMPlugin <support@aamplugin.com>\n"
|
@@ -9,72 +9,71 @@ msgstr ""
|
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"X-Generator: Poedit 2.
|
13 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
14 |
"X-Poedit-SourceCharset: UTF-8\n"
|
15 |
"X-Poedit-KeywordsList: __;preparePhrase\n"
|
16 |
"X-Poedit-Basepath: ..\n"
|
17 |
"X-Poedit-SearchPath-0: .\n"
|
18 |
|
19 |
-
#: Application/Api/Manager.php:
|
20 |
msgid "Access denied"
|
21 |
msgstr ""
|
22 |
|
23 |
-
#: Application/Backend/Feature/Extension/Manager.php:
|
24 |
-
msgid "
|
25 |
msgstr ""
|
26 |
|
27 |
-
#: Application/Backend/Feature/Extension/Manager.php:
|
28 |
-
msgid "
|
29 |
-
msgstr ""
|
30 |
-
|
31 |
-
#: Application/Backend/Feature/Extension/Manager.php:119
|
32 |
-
msgid "Enter license key to update extension."
|
33 |
msgstr ""
|
34 |
|
35 |
#: Application/Backend/Feature/Main/404Redirect.php:53
|
36 |
msgid "404 Redirect"
|
37 |
msgstr ""
|
38 |
|
39 |
-
#: Application/Backend/Feature/Main/Capability.php:
|
|
|
|
|
|
|
|
|
40 |
msgid "Capability already exists"
|
41 |
msgstr ""
|
42 |
|
43 |
-
#: Application/Backend/Feature/Main/Capability.php:
|
44 |
-
msgid "
|
45 |
msgstr ""
|
46 |
|
47 |
-
#: Application/Backend/Feature/Main/Capability.php:
|
48 |
-
#: Application/Backend/Feature/Main/Capability.php:
|
49 |
msgid "System"
|
50 |
msgstr ""
|
51 |
|
52 |
-
#: Application/Backend/Feature/Main/Capability.php:
|
53 |
-
#: Application/Backend/Feature/Main/Capability.php:
|
54 |
msgid "Posts & Pages"
|
55 |
msgstr ""
|
56 |
|
57 |
-
#: Application/Backend/Feature/Main/Capability.php:
|
58 |
-
#: Application/Backend/Feature/Main/Capability.php:
|
59 |
msgid "Backend"
|
60 |
msgstr ""
|
61 |
|
62 |
-
#: Application/Backend/Feature/Main/Capability.php:
|
63 |
-
#: Application/Backend/Feature/Main/Capability.php:
|
64 |
msgid "AAM Interface"
|
65 |
msgstr ""
|
66 |
|
67 |
-
#: Application/Backend/Feature/Main/Capability.php:
|
68 |
-
#: Application/Backend/Feature/Main/Capability.php:
|
69 |
msgid "Miscellaneous"
|
70 |
msgstr ""
|
71 |
|
72 |
-
#: Application/Backend/Feature/Main/Capability.php:
|
73 |
msgid "Capabilities"
|
74 |
msgstr ""
|
75 |
|
76 |
#: Application/Backend/Feature/Main/GetStarted.php:36
|
77 |
-
#: Application/Backend/phtml/main/get-started.phtml:11
|
78 |
msgid "Get Started"
|
79 |
msgstr ""
|
80 |
|
@@ -86,7 +85,7 @@ msgstr ""
|
|
86 |
msgid "Logout Redirect"
|
87 |
msgstr ""
|
88 |
|
89 |
-
#: Application/Backend/Feature/Main/Menu.php:
|
90 |
msgid "Backend Menu"
|
91 |
msgstr ""
|
92 |
|
@@ -94,25 +93,39 @@ msgstr ""
|
|
94 |
msgid "Metaboxes & Widgets"
|
95 |
msgstr ""
|
96 |
|
97 |
-
#: Application/Backend/Feature/Main/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
98 |
#: Application/Backend/phtml/main/404redirect.phtml:36
|
99 |
#: Application/Backend/phtml/main/login-redirect.phtml:43
|
100 |
#: Application/Backend/phtml/main/logout-redirect.phtml:43
|
101 |
#: Application/Backend/phtml/main/redirect.phtml:67
|
102 |
#: Application/Backend/phtml/main/redirect.phtml:119
|
|
|
103 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:89
|
104 |
msgid "Existing Page"
|
105 |
msgstr ""
|
106 |
|
107 |
-
#: Application/Backend/Feature/Main/Post.php:
|
108 |
msgid "Valid URL"
|
109 |
msgstr ""
|
110 |
|
111 |
-
#: Application/Backend/Feature/Main/Post.php:
|
112 |
msgid "Custom Callback"
|
113 |
msgstr ""
|
114 |
|
115 |
-
#: Application/Backend/Feature/Main/Post.php:
|
116 |
msgid "Posts & Terms"
|
117 |
msgstr ""
|
118 |
|
@@ -128,6 +141,10 @@ msgstr ""
|
|
128 |
msgid "Admin Toolbar"
|
129 |
msgstr ""
|
130 |
|
|
|
|
|
|
|
|
|
131 |
#: Application/Backend/Feature/Settings/ConfigPress.php:53
|
132 |
msgid "ConfigPress"
|
133 |
msgstr ""
|
@@ -281,10 +298,23 @@ msgid ""
|
|
281 |
msgstr ""
|
282 |
|
283 |
#: Application/Backend/Feature/Settings/Core.php:87
|
284 |
-
msgid "
|
285 |
msgstr ""
|
286 |
|
287 |
#: Application/Backend/Feature/Settings/Core.php:88
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
288 |
msgid ""
|
289 |
"AAM comes with the limited list of premium and free extensions that "
|
290 |
"significantly enhance AAM behavior. You can disable support for AAM "
|
@@ -293,18 +323,18 @@ msgid ""
|
|
293 |
"able to install new extensions."
|
294 |
msgstr ""
|
295 |
|
296 |
-
#: Application/Backend/Feature/Settings/Core.php:
|
297 |
msgid "AAM Cron Job"
|
298 |
msgstr ""
|
299 |
|
300 |
-
#: Application/Backend/Feature/Settings/Core.php:
|
301 |
msgid ""
|
302 |
"AAM cron job executes periodically (typically once a day) to check for "
|
303 |
"available updates for already installed extensions. Cron job is not executed "
|
304 |
"if there are no installed extensions."
|
305 |
msgstr ""
|
306 |
|
307 |
-
#: Application/Backend/Feature/Settings/Core.php:
|
308 |
msgid "Core Settings"
|
309 |
msgstr ""
|
310 |
|
@@ -352,87 +382,93 @@ msgstr ""
|
|
352 |
msgid "Security Settings"
|
353 |
msgstr ""
|
354 |
|
355 |
-
#: Application/Backend/Feature/
|
356 |
-
msgid "Tools"
|
357 |
-
msgstr ""
|
358 |
-
|
359 |
-
#: Application/Backend/Feature/Subject/User.php:63
|
360 |
msgid "Operation is not permitted"
|
361 |
msgstr ""
|
362 |
|
363 |
-
#: Application/Backend/Feature/Subject/User.php:
|
364 |
msgid "You cannot set expiration to yourself"
|
365 |
msgstr ""
|
366 |
|
367 |
-
#: Application/Backend/Manager.php:
|
368 |
msgid "Access Manager"
|
369 |
msgstr ""
|
370 |
|
371 |
-
#: Application/Backend/Manager.php:
|
372 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
373 |
msgid "Access"
|
374 |
msgstr ""
|
375 |
|
376 |
-
#: Application/Backend/Manager.php:
|
377 |
-
#: Application/Core/API.php:
|
378 |
msgid "Access Denied"
|
379 |
msgstr ""
|
380 |
|
381 |
-
#: Application/Backend/View/Localization.php:26 media/js/aam.js:
|
382 |
msgid "Search Capability"
|
383 |
msgstr ""
|
384 |
|
385 |
-
#: Application/Backend/View/Localization.php:27 media/js/aam.js:
|
386 |
msgid "_TOTAL_ capability(s)"
|
387 |
msgstr ""
|
388 |
|
389 |
-
#: Application/Backend/View/Localization.php:28 media/js/aam.js:
|
390 |
-
#: media/js/aam.js:
|
391 |
-
#: media/js/aam.js:
|
|
|
392 |
msgid "Saving..."
|
393 |
msgstr ""
|
394 |
|
395 |
-
#: Application/Backend/View/Localization.php:29 media/js/aam.js:
|
396 |
msgid "Failed to add new capability"
|
397 |
msgstr ""
|
398 |
|
399 |
-
#: Application/Backend/View/Localization.php:30 media/js/aam.js:46
|
400 |
-
#: media/js/aam.js:
|
401 |
-
#: media/js/aam.js:
|
402 |
-
#: media/js/aam.js:
|
403 |
-
#: media/js/aam.js:
|
404 |
-
#: media/js/aam.js:
|
405 |
-
#: media/js/aam.js:
|
406 |
-
#: media/js/aam.js:
|
407 |
-
#: media/js/aam.js:
|
|
|
408 |
msgid "Application error"
|
409 |
msgstr ""
|
410 |
|
411 |
-
#: Application/Backend/View/Localization.php:31 media/js/aam.js:
|
412 |
msgid "Add Capability"
|
413 |
msgstr ""
|
414 |
|
415 |
-
#: Application/Backend/View/Localization.php:32 media/js/aam.js:
|
416 |
-
#: media/js/aam.js:
|
417 |
-
#: Application/Backend/phtml/main/toolbar.phtml:
|
418 |
msgid "Show Menu"
|
419 |
msgstr ""
|
420 |
|
421 |
-
#: Application/Backend/View/Localization.php:33 media/js/aam.js:
|
422 |
-
#: media/js/aam.js:
|
423 |
-
#: Application/Backend/phtml/main/toolbar.phtml:
|
424 |
msgid "Restrict Menu"
|
425 |
msgstr ""
|
426 |
|
427 |
-
#: Application/Backend/View/Localization.php:34 media/js/aam.js:
|
428 |
msgid "Failed to retrieve mataboxes"
|
429 |
msgstr ""
|
430 |
|
431 |
-
#: Application/Backend/View/Localization.php:35 media/js/aam.js:
|
432 |
msgid "Search"
|
433 |
msgstr ""
|
434 |
|
435 |
-
#: Application/Backend/View/Localization.php:36 media/js/aam.js:
|
436 |
msgid "_TOTAL_ object(s)"
|
437 |
msgstr ""
|
438 |
|
@@ -440,53 +476,53 @@ msgstr ""
|
|
440 |
msgid "Failed"
|
441 |
msgstr ""
|
442 |
|
443 |
-
#: Application/Backend/View/Localization.php:38 media/js/aam.js:
|
444 |
-
#: media/js/aam.js:
|
445 |
msgid "Loading..."
|
446 |
msgstr ""
|
447 |
|
448 |
-
#: Application/Backend/View/Localization.php:39 media/js/aam.js:
|
449 |
msgid "No Role"
|
450 |
msgstr ""
|
451 |
|
452 |
-
#: Application/Backend/View/Localization.php:40 media/js/aam.js:
|
453 |
msgid "Search Role"
|
454 |
msgstr ""
|
455 |
|
456 |
-
#: Application/Backend/View/Localization.php:41 media/js/aam.js:
|
457 |
msgid "_TOTAL_ role(s)"
|
458 |
msgstr ""
|
459 |
|
460 |
-
#: Application/Backend/View/Localization.php:42
|
461 |
-
#: Application/Backend/phtml/index.phtml:
|
462 |
#: Application/Backend/phtml/main/capability.phtml:26
|
463 |
#: Application/Backend/phtml/main/capability.phtml:64
|
464 |
msgid "Create"
|
465 |
msgstr ""
|
466 |
|
467 |
-
#: Application/Backend/View/Localization.php:43 media/js/aam.js:
|
468 |
-
#: Application/Backend/phtml/index.phtml:
|
469 |
-
#: Application/Backend/phtml/index.phtml:
|
470 |
msgid "Users"
|
471 |
msgstr ""
|
472 |
|
473 |
-
#: Application/Backend/View/Localization.php:44
|
474 |
msgid "Failed to add new role"
|
475 |
msgstr ""
|
476 |
|
477 |
-
#: Application/Backend/View/Localization.php:45 media/js/aam.js:
|
478 |
msgid "Add Role"
|
479 |
msgstr ""
|
480 |
|
481 |
-
#: Application/Backend/View/Localization.php:46 media/js/aam.js:
|
482 |
msgid "Failed to update role"
|
483 |
msgstr ""
|
484 |
|
485 |
#: Application/Backend/View/Localization.php:47
|
486 |
-
#: Application/Backend/View/PostOptionList.php:157 media/js/aam.js:
|
487 |
-
#: Application/Backend/phtml/extensions.phtml:
|
488 |
-
#: Application/Backend/phtml/extensions.phtml:
|
489 |
-
#: Application/Backend/phtml/index.phtml:
|
490 |
#: Application/Backend/phtml/main/capability.phtml:86
|
491 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:37
|
492 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:58
|
@@ -495,41 +531,41 @@ msgstr ""
|
|
495 |
msgid "Update"
|
496 |
msgstr ""
|
497 |
|
498 |
-
#: Application/Backend/View/Localization.php:48 media/js/aam.js:
|
499 |
-
#: media/js/aam.js:
|
500 |
msgid "Deleting..."
|
501 |
msgstr ""
|
502 |
|
503 |
-
#: Application/Backend/View/Localization.php:49 media/js/aam.js:
|
504 |
msgid "Failed to delete role"
|
505 |
msgstr ""
|
506 |
|
507 |
#: Application/Backend/View/Localization.php:50
|
508 |
-
#: Application/Backend/View/Localization.php:62 media/js/aam.js:
|
509 |
-
#: media/js/aam.js:
|
510 |
msgid "Delete Role"
|
511 |
msgstr ""
|
512 |
|
513 |
-
#: Application/Backend/View/Localization.php:51 media/js/aam.js:
|
514 |
msgid "Failed to block user"
|
515 |
msgstr ""
|
516 |
|
517 |
-
#: Application/Backend/View/Localization.php:52 media/js/aam.js:
|
518 |
msgid "Search User"
|
519 |
msgstr ""
|
520 |
|
521 |
-
#: Application/Backend/View/Localization.php:53 media/js/aam.js:
|
522 |
msgid "_TOTAL_ user(s)"
|
523 |
msgstr ""
|
524 |
|
525 |
-
#: Application/Backend/View/Localization.php:54 media/js/aam.js:
|
526 |
-
#: Application/Backend/phtml/index.phtml:
|
527 |
-
#: Application/Backend/phtml/metabox/metabox-content.phtml:
|
528 |
msgid "Role"
|
529 |
msgstr ""
|
530 |
|
531 |
#: Application/Backend/View/Localization.php:55
|
532 |
-
#: Application/Core/Subject/Visitor.php:79 media/js/aam.js:
|
533 |
msgid "Anonymous"
|
534 |
msgstr ""
|
535 |
|
@@ -541,38 +577,39 @@ msgstr ""
|
|
541 |
msgid "Current role"
|
542 |
msgstr ""
|
543 |
|
544 |
-
#: Application/Backend/View/Localization.php:58 media/js/aam.js:
|
545 |
msgid "Manage Access"
|
546 |
msgstr ""
|
547 |
|
548 |
#: Application/Backend/View/Localization.php:59
|
549 |
-
#: Application/Backend/View/PostOptionList.php:95 media/js/aam.js:
|
550 |
msgid "Edit"
|
551 |
msgstr ""
|
552 |
|
553 |
-
#: Application/Backend/View/Localization.php:60 media/js/aam.js:
|
554 |
msgid "Manage Role"
|
555 |
msgstr ""
|
556 |
|
557 |
-
#: Application/Backend/View/Localization.php:61 media/js/aam.js:
|
558 |
msgid "Edit Role"
|
559 |
msgstr ""
|
560 |
|
561 |
-
#: Application/Backend/View/Localization.php:63 media/js/aam.js:
|
|
|
562 |
msgid "Manage User"
|
563 |
msgstr ""
|
564 |
|
565 |
-
#: Application/Backend/View/Localization.php:64 media/js/aam.js:
|
566 |
msgid "Edit User"
|
567 |
msgstr ""
|
568 |
|
569 |
-
#: Application/Backend/View/Localization.php:65 media/js/aam.js:
|
570 |
-
#: media/js/aam.js:
|
571 |
msgid "Lock User"
|
572 |
msgstr ""
|
573 |
|
574 |
-
#: Application/Backend/View/Localization.php:66 media/js/aam.js:
|
575 |
-
#: media/js/aam.js:
|
576 |
msgid "Unlock User"
|
577 |
msgstr ""
|
578 |
|
@@ -741,9 +778,10 @@ msgid ""
|
|
741 |
msgstr ""
|
742 |
|
743 |
#: Application/Backend/View/PostOptionList.php:100
|
744 |
-
#: Application/Backend/View/PostOptionList.php:162
|
745 |
-
#: Application/Backend/phtml/index.phtml:
|
746 |
#: Application/Backend/phtml/main/capability.phtml:104
|
|
|
747 |
msgid "Delete"
|
748 |
msgstr ""
|
749 |
|
@@ -823,57 +861,130 @@ msgstr ""
|
|
823 |
msgid "Howdy, %username%"
|
824 |
msgstr ""
|
825 |
|
826 |
-
#: Application/Core/Importer.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
827 |
msgid "Version of exported settings do not match current AAM version"
|
828 |
msgstr ""
|
829 |
|
830 |
-
#: Application/Core/JwtAuth.php:
|
831 |
msgid "Valid username."
|
832 |
msgstr ""
|
833 |
|
834 |
-
#: Application/Core/JwtAuth.php:
|
835 |
msgid "Valid password."
|
836 |
msgstr ""
|
837 |
|
838 |
-
#: Application/Core/JwtAuth.php:
|
839 |
-
msgid "JWT
|
840 |
msgstr ""
|
841 |
|
842 |
-
#: Application/Core/JwtAuth.php:
|
843 |
-
|
844 |
-
msgid "Invalid value %s for property %s"
|
845 |
msgstr ""
|
846 |
|
847 |
-
#: Application/Core/Login.php:
|
848 |
msgid "Access denied. Please login to get access."
|
849 |
msgstr ""
|
850 |
|
851 |
-
#: Application/Core/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
852 |
msgid "All Users, Roles and Visitor"
|
853 |
msgstr ""
|
854 |
|
855 |
-
#: Application/Extension/Repository.php:
|
856 |
#, php-format
|
857 |
-
msgid ""
|
858 |
-
"The [%s] file is missing. Update extension to the latest version. %sRead "
|
859 |
-
"more.%s"
|
860 |
msgstr ""
|
861 |
|
862 |
-
#: Application/Extension/Repository.php:
|
|
|
|
|
|
|
|
|
|
|
863 |
#, php-format
|
864 |
msgid "Failed to create %s"
|
865 |
msgstr ""
|
866 |
|
867 |
-
#: Application/Extension/Repository.php:
|
868 |
#, php-format
|
869 |
msgid "Directory %s is not writable"
|
870 |
msgstr ""
|
871 |
|
872 |
-
#: Application/Shared/Manager.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
873 |
msgid "RESTful API is disabled"
|
874 |
msgstr ""
|
875 |
|
876 |
-
#: Application/Shared/Manager.php:
|
877 |
msgid "[No teaser message provided]"
|
878 |
msgstr ""
|
879 |
|
@@ -881,179 +992,263 @@ msgstr ""
|
|
881 |
msgid "No valid strategy found for the given context"
|
882 |
msgstr ""
|
883 |
|
884 |
-
#:
|
|
|
|
|
|
|
|
|
885 |
msgid "PHP 5.3.0 or higher is required."
|
886 |
msgstr ""
|
887 |
|
888 |
-
#: aam.php:
|
889 |
msgid "WP 4.0 or higher is required."
|
890 |
msgstr ""
|
891 |
|
892 |
-
#: media/js/aam.js:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
893 |
msgid "Create New Role"
|
894 |
msgstr ""
|
895 |
|
896 |
-
#: media/js/aam.js:
|
897 |
msgid "Clone Role"
|
898 |
msgstr ""
|
899 |
|
900 |
-
#: media/js/aam.js:
|
901 |
#: Application/Backend/phtml/partial/role-inheritance.phtml:5
|
902 |
msgid "Select Role"
|
903 |
msgstr ""
|
904 |
|
905 |
-
#: media/js/aam.js:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
906 |
msgid "Create New User"
|
907 |
msgstr ""
|
908 |
|
909 |
-
#: media/js/aam.js:
|
910 |
msgid "Loading roles..."
|
911 |
msgstr ""
|
912 |
|
913 |
-
#: media/js/aam.js:
|
914 |
msgid "Filter By Role"
|
915 |
msgstr ""
|
916 |
|
917 |
-
#: media/js/aam.js:
|
918 |
-
msgid "User Expiration"
|
919 |
-
msgstr ""
|
920 |
-
|
921 |
-
#: media/js/aam.js:841
|
922 |
msgid "Switch To User"
|
923 |
msgstr ""
|
924 |
|
925 |
-
#: media/js/aam.js:
|
|
|
|
|
926 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:16
|
927 |
msgid "Save"
|
928 |
msgstr ""
|
929 |
|
930 |
-
#: media/js/aam.js:
|
931 |
msgid "Reseting..."
|
932 |
msgstr ""
|
933 |
|
934 |
-
#: media/js/aam.js:
|
935 |
msgid "Reset"
|
936 |
msgstr ""
|
937 |
|
938 |
-
#: media/js/aam.
|
939 |
-
|
940 |
-
#: media/js/aam.js:3267
|
941 |
-
msgid "Application Error"
|
942 |
msgstr ""
|
943 |
|
944 |
-
#: media/js/aam.js:
|
945 |
-
#: Application/Backend/phtml/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
946 |
msgid "Uncheck to allow"
|
947 |
msgstr ""
|
948 |
|
949 |
-
#: media/js/aam.js:
|
950 |
-
#: Application/Backend/phtml/main/toolbar.phtml:
|
951 |
msgid "Check to restrict"
|
952 |
msgstr ""
|
953 |
|
954 |
-
#: media/js/aam.js:
|
955 |
-
#: Application/Backend/phtml/main/metabox.phtml:
|
956 |
msgid "Uncheck to show"
|
957 |
msgstr ""
|
958 |
|
959 |
-
#: media/js/aam.js:
|
960 |
-
#: Application/Backend/phtml/main/metabox.phtml:
|
961 |
msgid "Check to hide"
|
962 |
msgstr ""
|
963 |
|
964 |
-
#: media/js/aam.js:
|
965 |
msgid "Processing"
|
966 |
msgstr ""
|
967 |
|
968 |
-
#: media/js/aam.js:
|
969 |
msgid "Initialize"
|
970 |
msgstr ""
|
971 |
|
972 |
-
#: media/js/aam.js:
|
973 |
msgid "WordPress core does not allow to grant this capability"
|
974 |
msgstr ""
|
975 |
|
976 |
-
#: media/js/aam.js:
|
977 |
msgid "Nothing to show"
|
978 |
msgstr ""
|
979 |
|
980 |
-
#: media/js/aam.js:
|
981 |
-
msgid "Failed to update capability"
|
982 |
-
msgstr ""
|
983 |
-
|
984 |
-
#: media/js/aam.js:1751 Application/Backend/phtml/main/capability.phtml:76
|
985 |
msgid "Update Capability"
|
986 |
msgstr ""
|
987 |
|
988 |
-
#: media/js/aam.js:
|
989 |
-
msgid "Failed to delete capability"
|
990 |
-
msgstr ""
|
991 |
-
|
992 |
-
#: media/js/aam.js:1790 Application/Backend/phtml/main/capability.phtml:98
|
993 |
msgid "Delete Capability"
|
994 |
msgstr ""
|
995 |
|
996 |
-
#: media/js/aam.js:
|
997 |
msgid "Settings Customized"
|
998 |
msgstr ""
|
999 |
|
1000 |
-
#: media/js/aam.js:
|
1001 |
-
#: media/js/aam.js:
|
1002 |
msgid "Parent:"
|
1003 |
msgstr ""
|
1004 |
|
1005 |
-
#: media/js/aam.js:
|
1006 |
-
#: Application/Backend/phtml/main/
|
|
|
|
|
1007 |
msgid "ID:"
|
1008 |
msgstr ""
|
1009 |
|
1010 |
-
#: media/js/aam.js:
|
1011 |
msgid "Drill-Down"
|
1012 |
msgstr ""
|
1013 |
|
1014 |
-
#: media/js/aam.js:
|
1015 |
msgid "Resetting..."
|
1016 |
msgstr ""
|
1017 |
|
1018 |
-
#: media/js/aam.js:
|
1019 |
msgid "Search Route"
|
1020 |
msgstr ""
|
1021 |
|
1022 |
-
#: media/js/aam.js:
|
1023 |
msgid "_TOTAL_ route(s)"
|
1024 |
msgstr ""
|
1025 |
|
1026 |
-
#: media/js/aam.js:
|
1027 |
msgid "No API enpoints found. You might have APIs disabled."
|
1028 |
msgstr ""
|
1029 |
|
1030 |
-
#: media/js/aam.js:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1031 |
msgid "Extension status was updated successfully"
|
1032 |
msgstr ""
|
1033 |
|
1034 |
-
#: media/js/aam.js:
|
1035 |
msgid "The issue has been resolved"
|
1036 |
msgstr ""
|
1037 |
|
1038 |
-
#: media/js/aam.js:
|
1039 |
-
|
|
|
|
|
|
|
1040 |
msgid "Wait..."
|
1041 |
msgstr ""
|
1042 |
|
1043 |
-
#: media/js/aam.js:
|
1044 |
msgid "All settings has been cleared successfully"
|
1045 |
msgstr ""
|
1046 |
|
1047 |
-
#: media/js/aam.js:
|
1048 |
-
#: Application/Backend/phtml/
|
1049 |
msgid "Clear"
|
1050 |
msgstr ""
|
1051 |
|
1052 |
-
#: media/js/aam.js:
|
1053 |
msgid "The cache has been cleared successfully"
|
1054 |
msgstr ""
|
1055 |
|
1056 |
-
#: media/js/vendor.js:
|
1057 |
msgid ": "
|
1058 |
msgstr ""
|
1059 |
|
@@ -1087,7 +1282,7 @@ msgid "Premium"
|
|
1087 |
msgstr ""
|
1088 |
|
1089 |
#: Application/Backend/phtml/extensions.phtml:29
|
1090 |
-
#: Application/Backend/phtml/extensions.phtml:
|
1091 |
msgid "Free"
|
1092 |
msgstr ""
|
1093 |
|
@@ -1095,56 +1290,64 @@ msgstr ""
|
|
1095 |
msgid "Check for Updates"
|
1096 |
msgstr ""
|
1097 |
|
1098 |
-
#: Application/Backend/phtml/extensions.phtml:
|
1099 |
-
|
|
|
|
|
|
|
|
|
1100 |
msgid "Deactivate"
|
1101 |
msgstr ""
|
1102 |
|
1103 |
-
#: Application/Backend/phtml/extensions.phtml:
|
1104 |
-
#: Application/Backend/phtml/extensions.phtml:
|
1105 |
msgid "extension is active"
|
1106 |
msgstr ""
|
1107 |
|
1108 |
-
#: Application/Backend/phtml/extensions.phtml:
|
1109 |
-
|
|
|
|
|
|
|
|
|
1110 |
msgid "Activate"
|
1111 |
msgstr ""
|
1112 |
|
1113 |
-
#: Application/Backend/phtml/extensions.phtml:
|
1114 |
-
#: Application/Backend/phtml/extensions.phtml:
|
1115 |
msgid "extension is inactive"
|
1116 |
msgstr ""
|
1117 |
|
1118 |
-
#: Application/Backend/phtml/extensions.phtml:
|
1119 |
-
#: Application/Backend/phtml/index.phtml:
|
1120 |
msgid "Read More"
|
1121 |
msgstr ""
|
1122 |
|
1123 |
-
#: Application/Backend/phtml/extensions.phtml:
|
1124 |
-
#: Application/Backend/phtml/extensions.phtml:
|
1125 |
-
|
1126 |
-
|
1127 |
-
|
1128 |
-
#: Application/Backend/phtml/
|
1129 |
-
#: Application/Backend/phtml/
|
1130 |
-
#: Application/Backend/phtml/
|
1131 |
-
#: Application/Backend/phtml/index.phtml:
|
1132 |
-
#: Application/Backend/phtml/index.phtml:
|
1133 |
-
#: Application/Backend/phtml/index.phtml:
|
1134 |
-
#: Application/Backend/phtml/index.phtml:
|
1135 |
-
#: Application/Backend/phtml/index.phtml:269
|
1136 |
-
#: Application/Backend/phtml/index.phtml:277
|
1137 |
-
#: Application/Backend/phtml/index.phtml:304
|
1138 |
-
#: Application/Backend/phtml/index.phtml:332
|
1139 |
#: Application/Backend/phtml/main/capability.phtml:54
|
1140 |
#: Application/Backend/phtml/main/capability.phtml:65
|
1141 |
#: Application/Backend/phtml/main/capability.phtml:75
|
1142 |
#: Application/Backend/phtml/main/capability.phtml:87
|
1143 |
#: Application/Backend/phtml/main/capability.phtml:97
|
1144 |
#: Application/Backend/phtml/main/capability.phtml:105
|
1145 |
-
#: Application/Backend/phtml/main/menu.phtml:
|
1146 |
-
#: Application/Backend/phtml/main/metabox.phtml:
|
1147 |
-
#: Application/Backend/phtml/main/metabox.phtml:
|
|
|
|
|
|
|
|
|
1148 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:6
|
1149 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:17
|
1150 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:27
|
@@ -1157,56 +1360,55 @@ msgstr ""
|
|
1157 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:136
|
1158 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:146
|
1159 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:158
|
1160 |
-
#: Application/Backend/phtml/settings/tools.phtml:59
|
1161 |
msgid "Close"
|
1162 |
msgstr ""
|
1163 |
|
1164 |
-
#: Application/Backend/phtml/extensions.phtml:
|
1165 |
msgid "Notification"
|
1166 |
msgstr ""
|
1167 |
|
1168 |
-
#: Application/Backend/phtml/extensions.phtml:
|
1169 |
msgid ""
|
1170 |
"Extension requires manual installation. Please follow few simple steps below."
|
1171 |
msgstr ""
|
1172 |
|
1173 |
-
#: Application/Backend/phtml/extensions.phtml:
|
1174 |
msgid "Click [Download] button below and save the zip archive on your computer"
|
1175 |
msgstr ""
|
1176 |
|
1177 |
-
#: Application/Backend/phtml/extensions.phtml:
|
1178 |
msgid "Connect to your website via FTP and navigate to [wp-content] folder"
|
1179 |
msgstr ""
|
1180 |
|
1181 |
-
#: Application/Backend/phtml/extensions.phtml:
|
1182 |
msgid ""
|
1183 |
"Create [aam/extension] folder inside [wp-content] and make sure it is "
|
1184 |
"writable by your server"
|
1185 |
msgstr ""
|
1186 |
|
1187 |
-
#: Application/Backend/phtml/extensions.phtml:
|
1188 |
msgid ""
|
1189 |
"Unzip downloaded archive and upload the folder inside the [wp-content/aam/"
|
1190 |
"extension] folder"
|
1191 |
msgstr ""
|
1192 |
|
1193 |
-
#: Application/Backend/phtml/extensions.phtml:
|
1194 |
msgid ""
|
1195 |
"[PLEASE NOTE!] Your browser may not support the latest HTML5 attribures and "
|
1196 |
"if downloaded file is not .ZIP archive, simply rename the file by adding ."
|
1197 |
"zip extension."
|
1198 |
msgstr ""
|
1199 |
|
1200 |
-
#: Application/Backend/phtml/extensions.phtml:
|
1201 |
-
#: Application/Backend/phtml/
|
1202 |
msgid "Cancel"
|
1203 |
msgstr ""
|
1204 |
|
1205 |
-
#: Application/Backend/phtml/extensions.phtml:
|
1206 |
msgid "Install Extension"
|
1207 |
msgstr ""
|
1208 |
|
1209 |
-
#: Application/Backend/phtml/extensions.phtml:
|
1210 |
msgid ""
|
1211 |
"Insert license key that you recieved after the payment (find the email "
|
1212 |
"example below). It might take up to 2 hours to process the payment. Please "
|
@@ -1230,22 +1432,38 @@ msgstr ""
|
|
1230 |
msgid "Notifications"
|
1231 |
msgstr ""
|
1232 |
|
1233 |
-
#: Application/Backend/phtml/index.phtml:
|
1234 |
-
msgid "
|
1235 |
msgstr ""
|
1236 |
|
1237 |
#: Application/Backend/phtml/index.phtml:84
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1238 |
#, php-format
|
1239 |
msgid ""
|
1240 |
"All AAM extension should be located in [%s] directory however it either does "
|
1241 |
"not exist or is not writable."
|
1242 |
msgstr ""
|
1243 |
|
1244 |
-
#: Application/Backend/phtml/index.phtml:
|
1245 |
msgid "Click To Fix The Issue"
|
1246 |
msgstr ""
|
1247 |
|
1248 |
-
#: Application/Backend/phtml/index.phtml:
|
1249 |
#, php-format
|
1250 |
msgid ""
|
1251 |
"Failed to create a [%s] directory for AAM extension. To create it manually, "
|
@@ -1254,176 +1472,213 @@ msgid ""
|
|
1254 |
"file is located)."
|
1255 |
msgstr ""
|
1256 |
|
1257 |
-
#: Application/Backend/phtml/index.phtml:
|
1258 |
msgid "Ok"
|
1259 |
msgstr ""
|
1260 |
|
1261 |
-
#: Application/Backend/phtml/index.phtml:
|
1262 |
msgid "Premium Licenses"
|
1263 |
msgstr ""
|
1264 |
|
1265 |
-
#: Application/Backend/phtml/index.phtml:
|
1266 |
msgid "Manage License"
|
1267 |
msgstr ""
|
1268 |
|
1269 |
-
#: Application/Backend/phtml/index.phtml:
|
1270 |
msgid "Upgrade License"
|
1271 |
msgstr ""
|
1272 |
|
1273 |
-
#: Application/Backend/phtml/index.phtml:
|
1274 |
msgid ""
|
1275 |
"The [Development Package] allows you to get all premium extensions for "
|
1276 |
"[unlimited number of websites]."
|
1277 |
msgstr ""
|
1278 |
|
1279 |
-
#: Application/Backend/phtml/index.phtml:
|
1280 |
msgid "AAM Multisite"
|
1281 |
msgstr ""
|
1282 |
|
1283 |
-
#: Application/Backend/phtml/index.phtml:
|
1284 |
msgid ""
|
1285 |
"Install free [AAM Multisite extension] in order to manage all your sites "
|
1286 |
"from the Network Admin."
|
1287 |
msgstr ""
|
1288 |
|
1289 |
-
#: Application/Backend/phtml/index.phtml:
|
1290 |
msgid "Users/Roles Manager"
|
1291 |
msgstr ""
|
1292 |
|
1293 |
-
#: Application/Backend/phtml/index.phtml:
|
1294 |
-
#: Application/Backend/phtml/index.phtml:
|
1295 |
msgid "Roles"
|
1296 |
msgstr ""
|
1297 |
|
1298 |
-
#: Application/Backend/phtml/index.phtml:
|
1299 |
-
#: Application/Backend/phtml/index.phtml:
|
1300 |
msgid "Visitor"
|
1301 |
msgstr ""
|
1302 |
|
1303 |
-
#: Application/Backend/phtml/index.phtml:
|
1304 |
-
#: Application/Backend/phtml/index.phtml:
|
1305 |
msgid "Default"
|
1306 |
msgstr ""
|
1307 |
|
1308 |
-
#: Application/Backend/phtml/index.phtml:
|
1309 |
-
#: Application/Backend/phtml/index.phtml:
|
|
|
1310 |
msgid "Action"
|
1311 |
msgstr ""
|
1312 |
|
1313 |
-
#: Application/Backend/phtml/index.phtml:
|
1314 |
msgid "Create Role"
|
1315 |
msgstr ""
|
1316 |
|
1317 |
-
#: Application/Backend/phtml/index.phtml:
|
1318 |
-
#: Application/Backend/phtml/index.phtml:
|
1319 |
msgid "Role Name"
|
1320 |
msgstr ""
|
1321 |
|
1322 |
-
#: Application/Backend/phtml/index.phtml:
|
1323 |
-
#: Application/Backend/phtml/index.phtml:
|
1324 |
msgid "Enter Role Name"
|
1325 |
msgstr ""
|
1326 |
|
1327 |
-
#: Application/Backend/phtml/index.phtml:
|
1328 |
-
#: Application/Backend/phtml/index.phtml:
|
1329 |
msgid "Role Expiration"
|
1330 |
msgstr ""
|
1331 |
|
1332 |
-
#: Application/Backend/phtml/index.phtml:
|
1333 |
-
#: Application/Backend/phtml/index.phtml:
|
1334 |
msgid "Enter Expiration Rule"
|
1335 |
msgstr ""
|
1336 |
|
1337 |
-
#: Application/Backend/phtml/index.phtml:
|
1338 |
msgid "Update Role"
|
1339 |
msgstr ""
|
1340 |
|
1341 |
-
#: Application/Backend/phtml/index.phtml:
|
1342 |
#, php-format
|
1343 |
msgid "Are you sure that you want to delete the %s role?"
|
1344 |
msgstr ""
|
1345 |
|
1346 |
-
#: Application/Backend/phtml/index.phtml:
|
1347 |
-
#: Application/Backend/phtml/metabox/metabox-content.phtml:
|
1348 |
msgid "Username"
|
1349 |
msgstr ""
|
1350 |
|
1351 |
-
#: Application/Backend/phtml/index.phtml:
|
1352 |
-
msgid "
|
|
|
|
|
1353 |
msgstr ""
|
1354 |
|
1355 |
-
#: Application/Backend/phtml/index.phtml:
|
1356 |
msgid "Action After Expiration"
|
1357 |
msgstr ""
|
1358 |
|
1359 |
-
#: Application/Backend/phtml/index.phtml:
|
1360 |
msgid "Select Action"
|
1361 |
msgstr ""
|
1362 |
|
1363 |
-
#: Application/Backend/phtml/index.phtml:
|
|
|
|
|
|
|
|
|
1364 |
msgid "Delete Account"
|
1365 |
msgstr ""
|
1366 |
|
1367 |
-
#: Application/Backend/phtml/index.phtml:
|
1368 |
msgid "Lock Account"
|
1369 |
msgstr ""
|
1370 |
|
1371 |
-
#: Application/Backend/phtml/index.phtml:
|
1372 |
msgid "Change User Role"
|
1373 |
msgstr ""
|
1374 |
|
1375 |
-
#: Application/Backend/phtml/index.phtml:
|
1376 |
msgid "Change To Role"
|
1377 |
msgstr ""
|
1378 |
|
1379 |
-
#: Application/Backend/phtml/index.phtml:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1380 |
msgid ""
|
1381 |
"Manage access to your website for visitors (any user that is not "
|
1382 |
"authenticated)"
|
1383 |
msgstr ""
|
1384 |
|
1385 |
-
#: Application/Backend/phtml/index.phtml:
|
1386 |
-
#: Application/Backend/phtml/metabox/metabox-content.phtml:
|
1387 |
msgid "Manage Visitors"
|
1388 |
msgstr ""
|
1389 |
|
1390 |
-
#: Application/Backend/phtml/index.phtml:
|
1391 |
msgid ""
|
1392 |
"Manage default access to your website resources for all users, roles and "
|
1393 |
"visitor. This includes Administrator role and your user"
|
1394 |
msgstr ""
|
1395 |
|
1396 |
-
#: Application/Backend/phtml/index.phtml:
|
1397 |
-
#: Application/Backend/phtml/metabox/metabox-content.phtml:
|
1398 |
msgid "Manage Default Access"
|
1399 |
msgstr ""
|
1400 |
|
1401 |
-
#: Application/Backend/phtml/index.phtml:
|
1402 |
msgid ""
|
1403 |
"Manage access for your users, roles and visitors. Be careful with "
|
1404 |
"[Administrator] role as well as your admin user. [Database backup is "
|
1405 |
"strongly recommended]."
|
1406 |
msgstr ""
|
1407 |
|
1408 |
-
#: Application/Backend/phtml/index.phtml:
|
1409 |
msgid ""
|
1410 |
"With Roles tab you can manage access for any defined role, edit role's name, "
|
1411 |
"create new role or even delete existing (but only when there is no users "
|
1412 |
"assigned to it). You are not allowed to delete Administrator role."
|
1413 |
msgstr ""
|
1414 |
|
1415 |
-
#: Application/Backend/phtml/index.phtml:
|
1416 |
msgid ""
|
1417 |
"Manage access for any user. As a bonus feature, you can block user. It means "
|
1418 |
"that user will be not able to login to your website anymore."
|
1419 |
msgstr ""
|
1420 |
|
1421 |
-
#: Application/Backend/phtml/index.phtml:
|
1422 |
msgid ""
|
1423 |
"Visitor can be considered any user that is not authenticated to your website."
|
1424 |
msgstr ""
|
1425 |
|
1426 |
-
#: Application/Backend/phtml/index.phtml:
|
1427 |
msgid ""
|
1428 |
"Manage default access settings to your website resources for all users, "
|
1429 |
"roles and visitors."
|
@@ -1445,6 +1700,7 @@ msgstr ""
|
|
1445 |
#: Application/Backend/phtml/main/login-redirect.phtml:31
|
1446 |
#: Application/Backend/phtml/main/logout-redirect.phtml:31
|
1447 |
#: Application/Backend/phtml/main/redirect.phtml:50
|
|
|
1448 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:77
|
1449 |
msgid "Redirected to existing page [(select from the drop-down)]"
|
1450 |
msgstr ""
|
@@ -1452,6 +1708,7 @@ msgstr ""
|
|
1452 |
#: Application/Backend/phtml/main/404redirect.phtml:28
|
1453 |
#: Application/Backend/phtml/main/redirect.phtml:54
|
1454 |
#: Application/Backend/phtml/main/redirect.phtml:106
|
|
|
1455 |
msgid "Redirected to the URL [(enter valid URL starting from http or https)]"
|
1456 |
msgstr ""
|
1457 |
|
@@ -1460,6 +1717,7 @@ msgstr ""
|
|
1460 |
#: Application/Backend/phtml/main/logout-redirect.phtml:39
|
1461 |
#: Application/Backend/phtml/main/redirect.phtml:58
|
1462 |
#: Application/Backend/phtml/main/redirect.phtml:110
|
|
|
1463 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:85
|
1464 |
#, php-format
|
1465 |
msgid "Trigger PHP callback function [(valid %sPHP callback%s is required)]"
|
@@ -1470,6 +1728,7 @@ msgstr ""
|
|
1470 |
#: Application/Backend/phtml/main/logout-redirect.phtml:52
|
1471 |
#: Application/Backend/phtml/main/redirect.phtml:76
|
1472 |
#: Application/Backend/phtml/main/redirect.phtml:128
|
|
|
1473 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:96
|
1474 |
msgid "-- Select Page --"
|
1475 |
msgstr ""
|
@@ -1488,6 +1747,7 @@ msgstr ""
|
|
1488 |
#: Application/Backend/phtml/main/logout-redirect.phtml:63
|
1489 |
#: Application/Backend/phtml/main/redirect.phtml:87
|
1490 |
#: Application/Backend/phtml/main/redirect.phtml:139
|
|
|
1491 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:107
|
1492 |
msgid "PHP Callback Function"
|
1493 |
msgstr ""
|
@@ -1520,10 +1780,12 @@ msgstr ""
|
|
1520 |
#: Application/Backend/phtml/main/capability.phtml:33
|
1521 |
#: Application/Backend/phtml/main/menu.phtml:14
|
1522 |
#: Application/Backend/phtml/main/metabox.phtml:20
|
|
|
1523 |
#: Application/Backend/phtml/main/post.phtml:36
|
1524 |
-
#: Application/Backend/phtml/main/route.phtml:
|
1525 |
-
#: Application/Backend/phtml/main/toolbar.phtml:
|
1526 |
-
#: Application/Backend/phtml/
|
|
|
1527 |
msgid "Reset To Default"
|
1528 |
msgstr ""
|
1529 |
|
@@ -1538,7 +1800,9 @@ msgid "Capability"
|
|
1538 |
msgstr ""
|
1539 |
|
1540 |
#: Application/Backend/phtml/main/capability.phtml:44
|
|
|
1541 |
#: Application/Backend/phtml/main/post.phtml:52
|
|
|
1542 |
msgid "Actions"
|
1543 |
msgstr ""
|
1544 |
|
@@ -1602,9 +1866,7 @@ msgid ""
|
|
1602 |
msgstr ""
|
1603 |
|
1604 |
#: Application/Backend/phtml/main/get-started.phtml:12
|
1605 |
-
msgid ""
|
1606 |
-
"To remove the \"Get Started\" tab you may go to Settings Area and disable "
|
1607 |
-
"\"Get Started Feature\" option."
|
1608 |
msgstr ""
|
1609 |
|
1610 |
#: Application/Backend/phtml/main/login-redirect.phtml:7
|
@@ -1653,31 +1915,37 @@ msgstr ""
|
|
1653 |
#: Application/Backend/phtml/main/menu.phtml:13
|
1654 |
#: Application/Backend/phtml/main/metabox.phtml:19
|
1655 |
#: Application/Backend/phtml/main/post.phtml:35
|
1656 |
-
#: Application/Backend/phtml/main/toolbar.phtml:
|
1657 |
-
#: Application/Backend/phtml/
|
|
|
1658 |
msgid "Settings are customized"
|
1659 |
msgstr ""
|
1660 |
|
1661 |
-
#: Application/Backend/phtml/main/menu.phtml:
|
1662 |
-
#: Application/Backend/phtml/main/
|
|
|
|
|
|
|
|
|
|
|
1663 |
msgid "Cap:"
|
1664 |
msgstr ""
|
1665 |
|
1666 |
-
#: Application/Backend/phtml/main/menu.phtml:
|
1667 |
msgid ""
|
1668 |
"Current user does not have enough capabilities to access any available "
|
1669 |
"dashboard page."
|
1670 |
msgstr ""
|
1671 |
|
1672 |
-
#: Application/Backend/phtml/main/menu.phtml:
|
1673 |
msgid "Dashboard Lockdown"
|
1674 |
msgstr ""
|
1675 |
|
1676 |
-
#: Application/Backend/phtml/main/menu.phtml:
|
1677 |
msgid "You cannot restrict access to Dashboard home page."
|
1678 |
msgstr ""
|
1679 |
|
1680 |
-
#: Application/Backend/phtml/main/menu.phtml:
|
1681 |
#, php-format
|
1682 |
msgid ""
|
1683 |
"The [Home] is the default page every user is redirected after login. To "
|
@@ -1685,7 +1953,7 @@ msgid ""
|
|
1685 |
"WordPress backend%s article."
|
1686 |
msgstr ""
|
1687 |
|
1688 |
-
#: Application/Backend/phtml/main/menu.phtml:
|
1689 |
msgid "OK"
|
1690 |
msgstr ""
|
1691 |
|
@@ -1697,7 +1965,6 @@ msgid ""
|
|
1697 |
msgstr ""
|
1698 |
|
1699 |
#: Application/Backend/phtml/main/metabox.phtml:12
|
1700 |
-
#: Application/Backend/phtml/main/toolbar.phtml:12
|
1701 |
msgid "Refresh"
|
1702 |
msgstr ""
|
1703 |
|
@@ -1713,19 +1980,15 @@ msgstr ""
|
|
1713 |
msgid "Frontend Widgets [(including Appearance->Widgets)]"
|
1714 |
msgstr ""
|
1715 |
|
1716 |
-
#: Application/Backend/phtml/main/metabox.phtml:
|
1717 |
-
msgid "Screen:"
|
1718 |
-
msgstr ""
|
1719 |
-
|
1720 |
-
#: Application/Backend/phtml/main/metabox.phtml:78
|
1721 |
msgid "The list is not initialized. Click Refresh button above."
|
1722 |
msgstr ""
|
1723 |
|
1724 |
-
#: Application/Backend/phtml/main/metabox.phtml:
|
1725 |
msgid "Initialize URL"
|
1726 |
msgstr ""
|
1727 |
|
1728 |
-
#: Application/Backend/phtml/main/metabox.phtml:
|
1729 |
msgid ""
|
1730 |
"Some metaboxes are \"conditional\" and appear on the Edit screen when "
|
1731 |
"certain conditions are met. For example metabox \"Comments\" appears only "
|
@@ -1734,14 +1997,36 @@ msgid ""
|
|
1734 |
"appears."
|
1735 |
msgstr ""
|
1736 |
|
1737 |
-
#: Application/Backend/phtml/main/metabox.phtml:
|
1738 |
msgid "Backend page URL"
|
1739 |
msgstr ""
|
1740 |
|
1741 |
-
#: Application/Backend/phtml/main/metabox.phtml:
|
1742 |
msgid "Insert valid URL"
|
1743 |
msgstr ""
|
1744 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1745 |
#: Application/Backend/phtml/main/post.phtml:7
|
1746 |
#, php-format
|
1747 |
msgid ""
|
@@ -1807,10 +2092,12 @@ msgstr ""
|
|
1807 |
|
1808 |
#: Application/Backend/phtml/main/redirect.phtml:40
|
1809 |
#: Application/Backend/phtml/main/redirect.phtml:98
|
|
|
1810 |
msgid "Show customized message [(plain text or HTML)]"
|
1811 |
msgstr ""
|
1812 |
|
1813 |
#: Application/Backend/phtml/main/redirect.phtml:45
|
|
|
1814 |
msgid ""
|
1815 |
"Redirect to the login page [(after login, user will be redirected back to "
|
1816 |
"the restricted page)]"
|
@@ -1818,11 +2105,13 @@ msgstr ""
|
|
1818 |
|
1819 |
#: Application/Backend/phtml/main/redirect.phtml:62
|
1820 |
#: Application/Backend/phtml/main/redirect.phtml:114
|
|
|
1821 |
msgid "Customized Message"
|
1822 |
msgstr ""
|
1823 |
|
1824 |
#: Application/Backend/phtml/main/redirect.phtml:63
|
1825 |
#: Application/Backend/phtml/main/redirect.phtml:115
|
|
|
1826 |
msgid "Enter message..."
|
1827 |
msgstr ""
|
1828 |
|
@@ -1838,22 +2127,15 @@ msgid ""
|
|
1838 |
"available in AAM."
|
1839 |
msgstr ""
|
1840 |
|
1841 |
-
#: Application/Backend/phtml/main/route.phtml:
|
1842 |
-
msgid ""
|
1843 |
-
"[Please note!] It is the initial version of this feature. It can be "
|
1844 |
-
"significantly enhanced with a lot of useful functionality. Your feedback and "
|
1845 |
-
"suggestions are highly appreciated!"
|
1846 |
-
msgstr ""
|
1847 |
-
|
1848 |
-
#: Application/Backend/phtml/main/route.phtml:17
|
1849 |
msgid "Routes are customized"
|
1850 |
msgstr ""
|
1851 |
|
1852 |
-
#: Application/Backend/phtml/main/route.phtml:
|
1853 |
msgid "Route"
|
1854 |
msgstr ""
|
1855 |
|
1856 |
-
#: Application/Backend/phtml/main/route.phtml:
|
1857 |
msgid "Deny"
|
1858 |
msgstr ""
|
1859 |
|
@@ -1865,28 +2147,100 @@ msgid ""
|
|
1865 |
"or utilize the great power of roles and capabilities."
|
1866 |
msgstr ""
|
1867 |
|
1868 |
-
#: Application/Backend/phtml/main/toolbar.phtml:
|
|
|
|
|
|
|
|
|
1869 |
msgid ""
|
1870 |
"The list of top admin bar items is not initialized. Click \"Refresh\" button "
|
1871 |
"above."
|
1872 |
msgstr ""
|
1873 |
|
1874 |
-
#: Application/Backend/phtml/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1875 |
#, php-format
|
1876 |
msgid "Manage access to %s for visitors (any user that is not authenticated)"
|
1877 |
msgstr ""
|
1878 |
|
1879 |
-
#: Application/Backend/phtml/metabox/metabox-content.phtml:
|
|
|
|
|
|
|
|
|
|
|
|
|
1880 |
#, php-format
|
1881 |
msgid ""
|
1882 |
"Manage default access to %s for all users, roles and visitor. This includes "
|
1883 |
"Administrator role and yourself"
|
1884 |
msgstr ""
|
1885 |
|
1886 |
-
#: Application/Backend/phtml/metabox/metabox-content.phtml:
|
|
|
|
|
|
|
|
|
|
|
|
|
1887 |
msgid "This feature is allowed only with [AAM Plus Package] extension."
|
1888 |
msgstr ""
|
1889 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1890 |
#: Application/Backend/phtml/partial/login-redirect.phtml:3
|
1891 |
msgid ""
|
1892 |
"Setup [default] redirect after user logged in successfully for all your "
|
@@ -1898,17 +2252,17 @@ msgstr ""
|
|
1898 |
msgid "Frontend Access Settings"
|
1899 |
msgstr ""
|
1900 |
|
1901 |
-
#: Application/Backend/phtml/partial/post-access-form.phtml:
|
1902 |
-
#: Application/Backend/phtml/partial/post-access-form.phtml:
|
1903 |
-
#: Application/Backend/phtml/partial/post-access-form.phtml:
|
1904 |
msgid "change"
|
1905 |
msgstr ""
|
1906 |
|
1907 |
-
#: Application/Backend/phtml/partial/post-access-form.phtml:
|
1908 |
msgid "Backend Access Settings"
|
1909 |
msgstr ""
|
1910 |
|
1911 |
-
#: Application/Backend/phtml/partial/post-access-form.phtml:
|
1912 |
msgid "API Access Settings"
|
1913 |
msgstr ""
|
1914 |
|
@@ -1997,49 +2351,6 @@ msgid ""
|
|
1997 |
"belong to %s. Consider to purchase [AAM Plus Package] extension."
|
1998 |
msgstr ""
|
1999 |
|
2000 |
-
#: Application/Backend/phtml/settings/tools.phtml:8
|
2001 |
-
msgid "Export AAM Settings"
|
2002 |
-
msgstr ""
|
2003 |
-
|
2004 |
-
#: Application/Backend/phtml/settings/tools.phtml:10
|
2005 |
-
#, php-format
|
2006 |
-
msgid ""
|
2007 |
-
"Export selected AAM settings to the file. For more information about this "
|
2008 |
-
"feature check %sHow to export and import AAM settings%s article."
|
2009 |
-
msgstr ""
|
2010 |
-
|
2011 |
-
#: Application/Backend/phtml/settings/tools.phtml:19
|
2012 |
-
msgid "Import AAM Settings"
|
2013 |
-
msgstr ""
|
2014 |
-
|
2015 |
-
#: Application/Backend/phtml/settings/tools.phtml:21
|
2016 |
-
msgid "Import AAM settings from the file."
|
2017 |
-
msgstr ""
|
2018 |
-
|
2019 |
-
#: Application/Backend/phtml/settings/tools.phtml:31
|
2020 |
-
msgid "Clear Cache"
|
2021 |
-
msgstr ""
|
2022 |
-
|
2023 |
-
#: Application/Backend/phtml/settings/tools.phtml:33
|
2024 |
-
msgid "Clear all AAM cache."
|
2025 |
-
msgstr ""
|
2026 |
-
|
2027 |
-
#: Application/Backend/phtml/settings/tools.phtml:42
|
2028 |
-
msgid "Clear All Settings"
|
2029 |
-
msgstr ""
|
2030 |
-
|
2031 |
-
#: Application/Backend/phtml/settings/tools.phtml:44
|
2032 |
-
msgid "Remove all the settings related to AAM from the database."
|
2033 |
-
msgstr ""
|
2034 |
-
|
2035 |
-
#: Application/Backend/phtml/settings/tools.phtml:60
|
2036 |
-
msgid "Clear all settings"
|
2037 |
-
msgstr ""
|
2038 |
-
|
2039 |
-
#: Application/Backend/phtml/settings/tools.phtml:63
|
2040 |
-
msgid "All AAM settings will be removed."
|
2041 |
-
msgstr ""
|
2042 |
-
|
2043 |
#: Application/Backend/phtml/widget/login-backend.phtml:3
|
2044 |
msgid "Login Title"
|
2045 |
msgstr ""
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: Advanced Access Manager\n"
|
4 |
+
"POT-Creation-Date: 2019-02-07 06:56-0500\n"
|
5 |
"PO-Revision-Date: \n"
|
6 |
"Last-Translator: \n"
|
7 |
"Language-Team: AAMPlugin <support@aamplugin.com>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"X-Generator: Poedit 2.2.1\n"
|
13 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
14 |
"X-Poedit-SourceCharset: UTF-8\n"
|
15 |
"X-Poedit-KeywordsList: __;preparePhrase\n"
|
16 |
"X-Poedit-Basepath: ..\n"
|
17 |
"X-Poedit-SearchPath-0: .\n"
|
18 |
|
19 |
+
#: Application/Api/Manager.php:129
|
20 |
msgid "Access denied"
|
21 |
msgstr ""
|
22 |
|
23 |
+
#: Application/Backend/Feature/Extension/Manager.php:75
|
24 |
+
msgid "Download failure. Try again or contact us."
|
25 |
msgstr ""
|
26 |
|
27 |
+
#: Application/Backend/Feature/Extension/Manager.php:113
|
28 |
+
msgid "No valid license key was found."
|
|
|
|
|
|
|
|
|
29 |
msgstr ""
|
30 |
|
31 |
#: Application/Backend/Feature/Main/404Redirect.php:53
|
32 |
msgid "404 Redirect"
|
33 |
msgstr ""
|
34 |
|
35 |
+
#: Application/Backend/Feature/Main/Capability.php:88
|
36 |
+
msgid "Permission denied to update this capability"
|
37 |
+
msgstr ""
|
38 |
+
|
39 |
+
#: Application/Backend/Feature/Main/Capability.php:105
|
40 |
msgid "Capability already exists"
|
41 |
msgstr ""
|
42 |
|
43 |
+
#: Application/Backend/Feature/Main/Capability.php:128
|
44 |
+
msgid "Permission denied to delete this capability"
|
45 |
msgstr ""
|
46 |
|
47 |
+
#: Application/Backend/Feature/Main/Capability.php:298
|
48 |
+
#: Application/Backend/Feature/Main/Capability.php:339
|
49 |
msgid "System"
|
50 |
msgstr ""
|
51 |
|
52 |
+
#: Application/Backend/Feature/Main/Capability.php:299
|
53 |
+
#: Application/Backend/Feature/Main/Capability.php:341
|
54 |
msgid "Posts & Pages"
|
55 |
msgstr ""
|
56 |
|
57 |
+
#: Application/Backend/Feature/Main/Capability.php:300
|
58 |
+
#: Application/Backend/Feature/Main/Capability.php:343
|
59 |
msgid "Backend"
|
60 |
msgstr ""
|
61 |
|
62 |
+
#: Application/Backend/Feature/Main/Capability.php:301
|
63 |
+
#: Application/Backend/Feature/Main/Capability.php:345
|
64 |
msgid "AAM Interface"
|
65 |
msgstr ""
|
66 |
|
67 |
+
#: Application/Backend/Feature/Main/Capability.php:302
|
68 |
+
#: Application/Backend/Feature/Main/Capability.php:347
|
69 |
msgid "Miscellaneous"
|
70 |
msgstr ""
|
71 |
|
72 |
+
#: Application/Backend/Feature/Main/Capability.php:379
|
73 |
msgid "Capabilities"
|
74 |
msgstr ""
|
75 |
|
76 |
#: Application/Backend/Feature/Main/GetStarted.php:36
|
|
|
77 |
msgid "Get Started"
|
78 |
msgstr ""
|
79 |
|
85 |
msgid "Logout Redirect"
|
86 |
msgstr ""
|
87 |
|
88 |
+
#: Application/Backend/Feature/Main/Menu.php:207
|
89 |
msgid "Backend Menu"
|
90 |
msgstr ""
|
91 |
|
93 |
msgid "Metaboxes & Widgets"
|
94 |
msgstr ""
|
95 |
|
96 |
+
#: Application/Backend/Feature/Main/Policy.php:59
|
97 |
+
msgid "Failed to fetch policy. Please try again."
|
98 |
+
msgstr ""
|
99 |
+
|
100 |
+
#: Application/Backend/Feature/Main/Policy.php:171
|
101 |
+
msgid "(no title)"
|
102 |
+
msgstr ""
|
103 |
+
|
104 |
+
#: Application/Backend/Feature/Main/Policy.php:210
|
105 |
+
#: Application/Shared/Manager.php:127
|
106 |
+
msgid "Access Policies"
|
107 |
+
msgstr ""
|
108 |
+
|
109 |
+
#: Application/Backend/Feature/Main/Post.php:487
|
110 |
#: Application/Backend/phtml/main/404redirect.phtml:36
|
111 |
#: Application/Backend/phtml/main/login-redirect.phtml:43
|
112 |
#: Application/Backend/phtml/main/logout-redirect.phtml:43
|
113 |
#: Application/Backend/phtml/main/redirect.phtml:67
|
114 |
#: Application/Backend/phtml/main/redirect.phtml:119
|
115 |
+
#: Application/Backend/phtml/main/uri.phtml:74
|
116 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:89
|
117 |
msgid "Existing Page"
|
118 |
msgstr ""
|
119 |
|
120 |
+
#: Application/Backend/Feature/Main/Post.php:489
|
121 |
msgid "Valid URL"
|
122 |
msgstr ""
|
123 |
|
124 |
+
#: Application/Backend/Feature/Main/Post.php:491
|
125 |
msgid "Custom Callback"
|
126 |
msgstr ""
|
127 |
|
128 |
+
#: Application/Backend/Feature/Main/Post.php:645
|
129 |
msgid "Posts & Terms"
|
130 |
msgstr ""
|
131 |
|
141 |
msgid "Admin Toolbar"
|
142 |
msgstr ""
|
143 |
|
144 |
+
#: Application/Backend/Feature/Main/Uri.php:130
|
145 |
+
msgid "URI Access"
|
146 |
+
msgstr ""
|
147 |
+
|
148 |
#: Application/Backend/Feature/Settings/ConfigPress.php:53
|
149 |
msgid "ConfigPress"
|
150 |
msgstr ""
|
298 |
msgstr ""
|
299 |
|
300 |
#: Application/Backend/Feature/Settings/Core.php:87
|
301 |
+
msgid "Multiple Roles Support"
|
302 |
msgstr ""
|
303 |
|
304 |
#: Application/Backend/Feature/Settings/Core.php:88
|
305 |
+
#, php-format
|
306 |
+
msgid ""
|
307 |
+
"Enable support for multiple roles per use. The final access settings or "
|
308 |
+
"general settings will be computed based on the mergin preferences. For more "
|
309 |
+
"information check %sWordPress access control for users with multiple roles%s "
|
310 |
+
"article."
|
311 |
+
msgstr ""
|
312 |
+
|
313 |
+
#: Application/Backend/Feature/Settings/Core.php:92
|
314 |
+
msgid "Support AAM Extensions"
|
315 |
+
msgstr ""
|
316 |
+
|
317 |
+
#: Application/Backend/Feature/Settings/Core.php:93
|
318 |
msgid ""
|
319 |
"AAM comes with the limited list of premium and free extensions that "
|
320 |
"significantly enhance AAM behavior. You can disable support for AAM "
|
323 |
"able to install new extensions."
|
324 |
msgstr ""
|
325 |
|
326 |
+
#: Application/Backend/Feature/Settings/Core.php:97
|
327 |
msgid "AAM Cron Job"
|
328 |
msgstr ""
|
329 |
|
330 |
+
#: Application/Backend/Feature/Settings/Core.php:98
|
331 |
msgid ""
|
332 |
"AAM cron job executes periodically (typically once a day) to check for "
|
333 |
"available updates for already installed extensions. Cron job is not executed "
|
334 |
"if there are no installed extensions."
|
335 |
msgstr ""
|
336 |
|
337 |
+
#: Application/Backend/Feature/Settings/Core.php:117
|
338 |
msgid "Core Settings"
|
339 |
msgstr ""
|
340 |
|
382 |
msgid "Security Settings"
|
383 |
msgstr ""
|
384 |
|
385 |
+
#: Application/Backend/Feature/Subject/User.php:64
|
|
|
|
|
|
|
|
|
386 |
msgid "Operation is not permitted"
|
387 |
msgstr ""
|
388 |
|
389 |
+
#: Application/Backend/Feature/Subject/User.php:79
|
390 |
msgid "You cannot set expiration to yourself"
|
391 |
msgstr ""
|
392 |
|
393 |
+
#: Application/Backend/Manager.php:558
|
394 |
msgid "Access Manager"
|
395 |
msgstr ""
|
396 |
|
397 |
+
#: Application/Backend/Manager.php:577
|
398 |
+
msgid "Policy Document"
|
399 |
+
msgstr ""
|
400 |
+
|
401 |
+
#: Application/Backend/Manager.php:585
|
402 |
+
msgid "Policy Principals"
|
403 |
+
msgstr ""
|
404 |
+
|
405 |
+
#: Application/Backend/Manager.php:727 Application/Backend/Manager.php:745
|
406 |
+
#: Application/Backend/Manager.php:769
|
407 |
msgid "Access"
|
408 |
msgstr ""
|
409 |
|
410 |
+
#: Application/Backend/Manager.php:977 Application/Backend/Manager.php:1000
|
411 |
+
#: Application/Core/API.php:331 Application/Core/Gateway.php:201
|
412 |
msgid "Access Denied"
|
413 |
msgstr ""
|
414 |
|
415 |
+
#: Application/Backend/View/Localization.php:26 media/js/aam-5.8.js:2048
|
416 |
msgid "Search Capability"
|
417 |
msgstr ""
|
418 |
|
419 |
+
#: Application/Backend/View/Localization.php:27 media/js/aam-5.8.js:2049
|
420 |
msgid "_TOTAL_ capability(s)"
|
421 |
msgstr ""
|
422 |
|
423 |
+
#: Application/Backend/View/Localization.php:28 media/js/aam-5.8.js:504
|
424 |
+
#: media/js/aam-5.8.js:565 media/js/aam-5.8.js:1135 media/js/aam-5.8.js:2175
|
425 |
+
#: media/js/aam-5.8.js:2219 media/js/aam-5.8.js:2806 media/js/aam-5.8.js:3384
|
426 |
+
#: media/js/aam-5.8.js:3842
|
427 |
msgid "Saving..."
|
428 |
msgstr ""
|
429 |
|
430 |
+
#: Application/Backend/View/Localization.php:29 media/js/aam-5.8.js:2183
|
431 |
msgid "Failed to add new capability"
|
432 |
msgstr ""
|
433 |
|
434 |
+
#: Application/Backend/View/Localization.php:30 media/js/aam-5.8.js:46
|
435 |
+
#: media/js/aam-5.8.js:523 media/js/aam-5.8.js:577 media/js/aam-5.8.js:614
|
436 |
+
#: media/js/aam-5.8.js:741 media/js/aam-5.8.js:779 media/js/aam-5.8.js:1145
|
437 |
+
#: media/js/aam-5.8.js:1178 media/js/aam-5.8.js:1396 media/js/aam-5.8.js:1853
|
438 |
+
#: media/js/aam-5.8.js:1917 media/js/aam-5.8.js:2188 media/js/aam-5.8.js:2231
|
439 |
+
#: media/js/aam-5.8.js:2270 media/js/aam-5.8.js:2356 media/js/aam-5.8.js:2525
|
440 |
+
#: media/js/aam-5.8.js:3135 media/js/aam-5.8.js:3226 media/js/aam-5.8.js:3397
|
441 |
+
#: media/js/aam-5.8.js:3433 media/js/aam-5.8.js:3594 media/js/aam-5.8.js:3636
|
442 |
+
#: media/js/aam-5.8.js:3786 media/js/aam-5.8.js:4013 media/js/aam-5.8.js:4452
|
443 |
+
#: media/js/aam-5.8.js:4487
|
444 |
msgid "Application error"
|
445 |
msgstr ""
|
446 |
|
447 |
+
#: Application/Backend/View/Localization.php:31 media/js/aam-5.8.js:2191
|
448 |
msgid "Add Capability"
|
449 |
msgstr ""
|
450 |
|
451 |
+
#: Application/Backend/View/Localization.php:32 media/js/aam-5.8.js:1639
|
452 |
+
#: media/js/aam-5.8.js:1766 Application/Backend/phtml/main/menu.phtml:84
|
453 |
+
#: Application/Backend/phtml/main/toolbar.phtml:69
|
454 |
msgid "Show Menu"
|
455 |
msgstr ""
|
456 |
|
457 |
+
#: Application/Backend/View/Localization.php:33 media/js/aam-5.8.js:1649
|
458 |
+
#: media/js/aam-5.8.js:1776 Application/Backend/phtml/main/menu.phtml:88
|
459 |
+
#: Application/Backend/phtml/main/toolbar.phtml:73
|
460 |
msgid "Restrict Menu"
|
461 |
msgstr ""
|
462 |
|
463 |
+
#: Application/Backend/View/Localization.php:34 media/js/aam-5.8.js:1911
|
464 |
msgid "Failed to retrieve mataboxes"
|
465 |
msgstr ""
|
466 |
|
467 |
+
#: Application/Backend/View/Localization.php:35 media/js/aam-5.8.js:2569
|
468 |
msgid "Search"
|
469 |
msgstr ""
|
470 |
|
471 |
+
#: Application/Backend/View/Localization.php:36 media/js/aam-5.8.js:2570
|
472 |
msgid "_TOTAL_ object(s)"
|
473 |
msgstr ""
|
474 |
|
476 |
msgid "Failed"
|
477 |
msgstr ""
|
478 |
|
479 |
+
#: Application/Backend/View/Localization.php:38 media/js/aam-5.8.js:156
|
480 |
+
#: media/js/aam-5.8.js:681
|
481 |
msgid "Loading..."
|
482 |
msgstr ""
|
483 |
|
484 |
+
#: Application/Backend/View/Localization.php:39 media/js/aam-5.8.js:161
|
485 |
msgid "No Role"
|
486 |
msgstr ""
|
487 |
|
488 |
+
#: Application/Backend/View/Localization.php:40 media/js/aam-5.8.js:224
|
489 |
msgid "Search Role"
|
490 |
msgstr ""
|
491 |
|
492 |
+
#: Application/Backend/View/Localization.php:41 media/js/aam-5.8.js:225
|
493 |
msgid "_TOTAL_ role(s)"
|
494 |
msgstr ""
|
495 |
|
496 |
+
#: Application/Backend/View/Localization.php:42 media/js/aam-5.8.js:1489
|
497 |
+
#: media/js/aam-5.8.js:3475 Application/Backend/phtml/index.phtml:270
|
498 |
#: Application/Backend/phtml/main/capability.phtml:26
|
499 |
#: Application/Backend/phtml/main/capability.phtml:64
|
500 |
msgid "Create"
|
501 |
msgstr ""
|
502 |
|
503 |
+
#: Application/Backend/View/Localization.php:43 media/js/aam-5.8.js:264
|
504 |
+
#: Application/Backend/phtml/index.phtml:223
|
505 |
+
#: Application/Backend/phtml/index.phtml:440
|
506 |
msgid "Users"
|
507 |
msgstr ""
|
508 |
|
509 |
+
#: Application/Backend/View/Localization.php:44
|
510 |
msgid "Failed to add new role"
|
511 |
msgstr ""
|
512 |
|
513 |
+
#: Application/Backend/View/Localization.php:45 media/js/aam-5.8.js:527
|
514 |
msgid "Add Role"
|
515 |
msgstr ""
|
516 |
|
517 |
+
#: Application/Backend/View/Localization.php:46 media/js/aam-5.8.js:572
|
518 |
msgid "Failed to update role"
|
519 |
msgstr ""
|
520 |
|
521 |
#: Application/Backend/View/Localization.php:47
|
522 |
+
#: Application/Backend/View/PostOptionList.php:157 media/js/aam-5.8.js:581
|
523 |
+
#: Application/Backend/phtml/extensions.phtml:55
|
524 |
+
#: Application/Backend/phtml/extensions.phtml:82
|
525 |
+
#: Application/Backend/phtml/index.phtml:296
|
526 |
#: Application/Backend/phtml/main/capability.phtml:86
|
527 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:37
|
528 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:58
|
531 |
msgid "Update"
|
532 |
msgstr ""
|
533 |
|
534 |
+
#: Application/Backend/View/Localization.php:48 media/js/aam-5.8.js:604
|
535 |
+
#: media/js/aam-5.8.js:2258 media/js/aam-5.8.js:3423
|
536 |
msgid "Deleting..."
|
537 |
msgstr ""
|
538 |
|
539 |
+
#: Application/Backend/View/Localization.php:49 media/js/aam-5.8.js:610
|
540 |
msgid "Failed to delete role"
|
541 |
msgstr ""
|
542 |
|
543 |
#: Application/Backend/View/Localization.php:50
|
544 |
+
#: Application/Backend/View/Localization.php:62 media/js/aam-5.8.js:385
|
545 |
+
#: media/js/aam-5.8.js:618 Application/Backend/phtml/index.phtml:308
|
546 |
msgid "Delete Role"
|
547 |
msgstr ""
|
548 |
|
549 |
+
#: Application/Backend/View/Localization.php:51 media/js/aam-5.8.js:737
|
550 |
msgid "Failed to block user"
|
551 |
msgstr ""
|
552 |
|
553 |
+
#: Application/Backend/View/Localization.php:52 media/js/aam-5.8.js:816
|
554 |
msgid "Search User"
|
555 |
msgstr ""
|
556 |
|
557 |
+
#: Application/Backend/View/Localization.php:53 media/js/aam-5.8.js:817
|
558 |
msgid "_TOTAL_ user(s)"
|
559 |
msgstr ""
|
560 |
|
561 |
+
#: Application/Backend/View/Localization.php:54 media/js/aam-5.8.js:880
|
562 |
+
#: Application/Backend/phtml/index.phtml:241
|
563 |
+
#: Application/Backend/phtml/metabox/metabox-content.phtml:48
|
564 |
msgid "Role"
|
565 |
msgstr ""
|
566 |
|
567 |
#: Application/Backend/View/Localization.php:55
|
568 |
+
#: Application/Core/Subject/Visitor.php:79 media/js/aam-5.8.js:1221
|
569 |
msgid "Anonymous"
|
570 |
msgstr ""
|
571 |
|
577 |
msgid "Current role"
|
578 |
msgstr ""
|
579 |
|
580 |
+
#: Application/Backend/View/Localization.php:58 media/js/aam-5.8.js:2701
|
581 |
msgid "Manage Access"
|
582 |
msgstr ""
|
583 |
|
584 |
#: Application/Backend/View/Localization.php:59
|
585 |
+
#: Application/Backend/View/PostOptionList.php:95 media/js/aam-5.8.js:2713
|
586 |
msgid "Edit"
|
587 |
msgstr ""
|
588 |
|
589 |
+
#: Application/Backend/View/Localization.php:60 media/js/aam-5.8.js:310
|
590 |
msgid "Manage Role"
|
591 |
msgstr ""
|
592 |
|
593 |
+
#: Application/Backend/View/Localization.php:61 media/js/aam-5.8.js:332
|
594 |
msgid "Edit Role"
|
595 |
msgstr ""
|
596 |
|
597 |
+
#: Application/Backend/View/Localization.php:63 media/js/aam-5.8.js:919
|
598 |
+
#: Application/Backend/phtml/index.phtml:343
|
599 |
msgid "Manage User"
|
600 |
msgstr ""
|
601 |
|
602 |
+
#: Application/Backend/View/Localization.php:64 media/js/aam-5.8.js:960
|
603 |
msgid "Edit User"
|
604 |
msgstr ""
|
605 |
|
606 |
+
#: Application/Backend/View/Localization.php:65 media/js/aam-5.8.js:732
|
607 |
+
#: media/js/aam-5.8.js:733 media/js/aam-5.8.js:981
|
608 |
msgid "Lock User"
|
609 |
msgstr ""
|
610 |
|
611 |
+
#: Application/Backend/View/Localization.php:66 media/js/aam-5.8.js:726
|
612 |
+
#: media/js/aam-5.8.js:727 media/js/aam-5.8.js:994
|
613 |
msgid "Unlock User"
|
614 |
msgstr ""
|
615 |
|
778 |
msgstr ""
|
779 |
|
780 |
#: Application/Backend/View/PostOptionList.php:100
|
781 |
+
#: Application/Backend/View/PostOptionList.php:162 media/js/aam-5.8.js:3437
|
782 |
+
#: Application/Backend/phtml/index.phtml:314
|
783 |
#: Application/Backend/phtml/main/capability.phtml:104
|
784 |
+
#: Application/Backend/phtml/main/uri.phtml:119
|
785 |
msgid "Delete"
|
786 |
msgstr ""
|
787 |
|
861 |
msgid "Howdy, %username%"
|
862 |
msgstr ""
|
863 |
|
864 |
+
#: Application/Core/Importer.php:113
|
865 |
+
msgid "Import AAM Settings"
|
866 |
+
msgstr ""
|
867 |
+
|
868 |
+
#: Application/Core/Importer.php:126
|
869 |
+
msgid ""
|
870 |
+
"Howdy! Upload your AAM JSON file and we’ll import the access settings "
|
871 |
+
"into this site."
|
872 |
+
msgstr ""
|
873 |
+
|
874 |
+
#: Application/Core/Importer.php:127
|
875 |
+
msgid ""
|
876 |
+
"Choose a JSON (.json) file to upload, then click Upload file and import."
|
877 |
+
msgstr ""
|
878 |
+
|
879 |
+
#: Application/Core/Importer.php:141 Application/Core/Importer.php:145
|
880 |
+
#: Application/Core/Importer.php:179
|
881 |
+
msgid "Sorry, there has been an error."
|
882 |
+
msgstr ""
|
883 |
+
|
884 |
+
#: Application/Core/Importer.php:146
|
885 |
+
#, php-format
|
886 |
+
msgid ""
|
887 |
+
"The export file could not be found at <code>%s</code>. It is likely that "
|
888 |
+
"this was caused by a permissions problem."
|
889 |
+
msgstr ""
|
890 |
+
|
891 |
+
#: Application/Core/Importer.php:180
|
892 |
+
msgid "The file does not exist, please try again."
|
893 |
+
msgstr ""
|
894 |
+
|
895 |
+
#: Application/Core/Importer.php:188
|
896 |
+
msgid "Sorry, there has been an error. File content is invalid"
|
897 |
+
msgstr ""
|
898 |
+
|
899 |
+
#: Application/Core/Importer.php:202
|
900 |
+
msgid "All done."
|
901 |
+
msgstr ""
|
902 |
+
|
903 |
+
#: Application/Core/Importer.php:202
|
904 |
+
msgid "Have fun!"
|
905 |
+
msgstr ""
|
906 |
+
|
907 |
+
#: Application/Core/Importer.php:227
|
908 |
msgid "Version of exported settings do not match current AAM version"
|
909 |
msgstr ""
|
910 |
|
911 |
+
#: Application/Core/JwtAuth.php:57
|
912 |
msgid "Valid username."
|
913 |
msgstr ""
|
914 |
|
915 |
+
#: Application/Core/JwtAuth.php:61
|
916 |
msgid "Valid password."
|
917 |
msgstr ""
|
918 |
|
919 |
+
#: Application/Core/JwtAuth.php:73
|
920 |
+
msgid "JWT token."
|
921 |
msgstr ""
|
922 |
|
923 |
+
#: Application/Core/JwtAuth.php:221
|
924 |
+
msgid "JWT Authentication is enabled but secret key is not defined"
|
|
|
925 |
msgstr ""
|
926 |
|
927 |
+
#: Application/Core/Login.php:179
|
928 |
msgid "Access denied. Please login to get access."
|
929 |
msgstr ""
|
930 |
|
931 |
+
#: Application/Core/Policy/Validator.php:94
|
932 |
+
msgid "The policy is not valid JSON object"
|
933 |
+
msgstr ""
|
934 |
+
|
935 |
+
#: Application/Core/Policy/Validator.php:111
|
936 |
+
msgid "The policy document is empty"
|
937 |
+
msgstr ""
|
938 |
+
|
939 |
+
#: Application/Core/Subject/Default.php:78 media/js/aam-5.8.js:1294
|
940 |
msgid "All Users, Roles and Visitor"
|
941 |
msgstr ""
|
942 |
|
943 |
+
#: Application/Extension/Repository.php:149
|
944 |
#, php-format
|
945 |
+
msgid "[%s] was not loaded. Update AAM plugin to the latest version."
|
|
|
|
|
946 |
msgstr ""
|
947 |
|
948 |
+
#: Application/Extension/Repository.php:159
|
949 |
+
#, php-format
|
950 |
+
msgid "The [%s] does not appear to be a valid AAM extension. %sRead more.%s"
|
951 |
+
msgstr ""
|
952 |
+
|
953 |
+
#: Application/Extension/Repository.php:385
|
954 |
#, php-format
|
955 |
msgid "Failed to create %s"
|
956 |
msgstr ""
|
957 |
|
958 |
+
#: Application/Extension/Repository.php:389
|
959 |
#, php-format
|
960 |
msgid "Directory %s is not writable"
|
961 |
msgstr ""
|
962 |
|
963 |
+
#: Application/Shared/Manager.php:125
|
964 |
+
msgid "Access Policy"
|
965 |
+
msgstr ""
|
966 |
+
|
967 |
+
#: Application/Shared/Manager.php:128 media/js/aam-5.8.js:1546
|
968 |
+
msgid "Edit Policy"
|
969 |
+
msgstr ""
|
970 |
+
|
971 |
+
#: Application/Shared/Manager.php:129
|
972 |
+
msgid "Add New Policy"
|
973 |
+
msgstr ""
|
974 |
+
|
975 |
+
#: Application/Shared/Manager.php:130
|
976 |
+
msgid "New Policy"
|
977 |
+
msgstr ""
|
978 |
+
|
979 |
+
#: Application/Shared/Manager.php:132
|
980 |
+
msgid "Access and security policy"
|
981 |
+
msgstr ""
|
982 |
+
|
983 |
+
#: Application/Shared/Manager.php:418
|
984 |
msgid "RESTful API is disabled"
|
985 |
msgstr ""
|
986 |
|
987 |
+
#: Application/Shared/Manager.php:609
|
988 |
msgid "[No teaser message provided]"
|
989 |
msgstr ""
|
990 |
|
992 |
msgid "No valid strategy found for the given context"
|
993 |
msgstr ""
|
994 |
|
995 |
+
#: Application/Shortcode/Strategy/LoginRedirect.php:64
|
996 |
+
msgid "Login to continue"
|
997 |
+
msgstr ""
|
998 |
+
|
999 |
+
#: aam.php:216
|
1000 |
msgid "PHP 5.3.0 or higher is required."
|
1001 |
msgstr ""
|
1002 |
|
1003 |
+
#: aam.php:218
|
1004 |
msgid "WP 4.0 or higher is required."
|
1005 |
msgstr ""
|
1006 |
|
1007 |
+
#: media/js/aam-5.8.js:96 media/js/aam-5.8.js:1266 media/js/aam-5.8.js:1338
|
1008 |
+
msgid "Failed to apply policy changes"
|
1009 |
+
msgstr ""
|
1010 |
+
|
1011 |
+
#: media/js/aam-5.8.js:107 media/js/aam-5.8.js:1602 media/js/aam-5.8.js:1729
|
1012 |
+
#: media/js/aam-5.8.js:3850 media/js/aam-5.8.js:3895 media/js/aam-5.8.js:3945
|
1013 |
+
#: media/js/aam-5.8.js:3979
|
1014 |
+
msgid "Application Error"
|
1015 |
+
msgstr ""
|
1016 |
+
|
1017 |
+
#: media/js/aam-5.8.js:241
|
1018 |
msgid "Create New Role"
|
1019 |
msgstr ""
|
1020 |
|
1021 |
+
#: media/js/aam-5.8.js:356
|
1022 |
msgid "Clone Role"
|
1023 |
msgstr ""
|
1024 |
|
1025 |
+
#: media/js/aam-5.8.js:686 Application/Backend/phtml/index.phtml:372
|
1026 |
#: Application/Backend/phtml/partial/role-inheritance.phtml:5
|
1027 |
msgid "Select Role"
|
1028 |
msgstr ""
|
1029 |
|
1030 |
+
#: media/js/aam-5.8.js:764
|
1031 |
+
msgid "Generating token..."
|
1032 |
+
msgstr ""
|
1033 |
+
|
1034 |
+
#: media/js/aam-5.8.js:774
|
1035 |
+
msgid "Failed to generate JWT token"
|
1036 |
+
msgstr ""
|
1037 |
+
|
1038 |
+
#: media/js/aam-5.8.js:832
|
1039 |
msgid "Create New User"
|
1040 |
msgstr ""
|
1041 |
|
1042 |
+
#: media/js/aam-5.8.js:841
|
1043 |
msgid "Loading roles..."
|
1044 |
msgstr ""
|
1045 |
|
1046 |
+
#: media/js/aam-5.8.js:858
|
1047 |
msgid "Filter By Role"
|
1048 |
msgstr ""
|
1049 |
|
1050 |
+
#: media/js/aam-5.8.js:1007
|
|
|
|
|
|
|
|
|
1051 |
msgid "Switch To User"
|
1052 |
msgstr ""
|
1053 |
|
1054 |
+
#: media/js/aam-5.8.js:1149 media/js/aam-5.8.js:3402
|
1055 |
+
#: Application/Backend/phtml/index.phtml:403
|
1056 |
+
#: Application/Backend/phtml/main/uri.phtml:97
|
1057 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:16
|
1058 |
msgid "Save"
|
1059 |
msgstr ""
|
1060 |
|
1061 |
+
#: media/js/aam-5.8.js:1168
|
1062 |
msgid "Reseting..."
|
1063 |
msgstr ""
|
1064 |
|
1065 |
+
#: media/js/aam-5.8.js:1182 Application/Backend/phtml/index.phtml:402
|
1066 |
msgid "Reset"
|
1067 |
msgstr ""
|
1068 |
|
1069 |
+
#: media/js/aam-5.8.js:1247 media/js/aam-5.8.js:1319
|
1070 |
+
msgid "Processing..."
|
|
|
|
|
1071 |
msgstr ""
|
1072 |
|
1073 |
+
#: media/js/aam-5.8.js:1258 media/js/aam-5.8.js:1271
|
1074 |
+
#: Application/Backend/phtml/metabox/metabox-content.phtml:86
|
1075 |
+
msgid "Detach Policy From Visitors"
|
1076 |
+
msgstr ""
|
1077 |
+
|
1078 |
+
#: media/js/aam-5.8.js:1260 media/js/aam-5.8.js:1269
|
1079 |
+
#: Application/Backend/phtml/metabox/metabox-content.phtml:88
|
1080 |
+
msgid "Attach Policy To Visitors"
|
1081 |
+
msgstr ""
|
1082 |
+
|
1083 |
+
#: media/js/aam-5.8.js:1330 media/js/aam-5.8.js:1343
|
1084 |
+
#: Application/Backend/phtml/metabox/metabox-content.phtml:111
|
1085 |
+
msgid "Detach Policy From Everybody"
|
1086 |
+
msgstr ""
|
1087 |
+
|
1088 |
+
#: media/js/aam-5.8.js:1332 media/js/aam-5.8.js:1341
|
1089 |
+
#: Application/Backend/phtml/metabox/metabox-content.phtml:113
|
1090 |
+
msgid "Attach Policy To Everybody"
|
1091 |
+
msgstr ""
|
1092 |
+
|
1093 |
+
#: media/js/aam-5.8.js:1443
|
1094 |
+
msgid "Downloading"
|
1095 |
+
msgstr ""
|
1096 |
+
|
1097 |
+
#: media/js/aam-5.8.js:1447 Application/Backend/phtml/extensions.phtml:86
|
1098 |
+
#: Application/Backend/phtml/extensions.phtml:121
|
1099 |
+
msgid "Download"
|
1100 |
+
msgstr ""
|
1101 |
+
|
1102 |
+
#: media/js/aam-5.8.js:1478
|
1103 |
+
msgid "Search Policy"
|
1104 |
+
msgstr ""
|
1105 |
+
|
1106 |
+
#: media/js/aam-5.8.js:1479
|
1107 |
+
msgid "_TOTAL_ Policies"
|
1108 |
+
msgstr ""
|
1109 |
+
|
1110 |
+
#: media/js/aam-5.8.js:1521
|
1111 |
+
msgid "Apply Policy"
|
1112 |
+
msgstr ""
|
1113 |
+
|
1114 |
+
#: media/js/aam-5.8.js:1535
|
1115 |
+
msgid "Revoke Policy"
|
1116 |
+
msgstr ""
|
1117 |
+
|
1118 |
+
#: media/js/aam-5.8.js:1673 Application/Backend/phtml/main/menu.phtml:70
|
1119 |
+
#: Application/Backend/phtml/main/toolbar.phtml:59
|
1120 |
msgid "Uncheck to allow"
|
1121 |
msgstr ""
|
1122 |
|
1123 |
+
#: media/js/aam-5.8.js:1675 Application/Backend/phtml/main/menu.phtml:70
|
1124 |
+
#: Application/Backend/phtml/main/toolbar.phtml:59
|
1125 |
msgid "Check to restrict"
|
1126 |
msgstr ""
|
1127 |
|
1128 |
+
#: media/js/aam-5.8.js:1805 media/js/aam-5.8.js:1961
|
1129 |
+
#: Application/Backend/phtml/main/metabox.phtml:68
|
1130 |
msgid "Uncheck to show"
|
1131 |
msgstr ""
|
1132 |
|
1133 |
+
#: media/js/aam-5.8.js:1807 media/js/aam-5.8.js:1963
|
1134 |
+
#: Application/Backend/phtml/main/metabox.phtml:68
|
1135 |
msgid "Check to hide"
|
1136 |
msgstr ""
|
1137 |
|
1138 |
+
#: media/js/aam-5.8.js:1933
|
1139 |
msgid "Processing"
|
1140 |
msgstr ""
|
1141 |
|
1142 |
+
#: media/js/aam-5.8.js:1936 Application/Backend/phtml/main/metabox.phtml:104
|
1143 |
msgid "Initialize"
|
1144 |
msgstr ""
|
1145 |
|
1146 |
+
#: media/js/aam-5.8.js:2010
|
1147 |
msgid "WordPress core does not allow to grant this capability"
|
1148 |
msgstr ""
|
1149 |
|
1150 |
+
#: media/js/aam-5.8.js:2051 media/js/aam-5.8.js:3280
|
1151 |
msgid "Nothing to show"
|
1152 |
msgstr ""
|
1153 |
|
1154 |
+
#: media/js/aam-5.8.js:2235 Application/Backend/phtml/main/capability.phtml:76
|
|
|
|
|
|
|
|
|
1155 |
msgid "Update Capability"
|
1156 |
msgstr ""
|
1157 |
|
1158 |
+
#: media/js/aam-5.8.js:2274 Application/Backend/phtml/main/capability.phtml:98
|
|
|
|
|
|
|
|
|
1159 |
msgid "Delete Capability"
|
1160 |
msgstr ""
|
1161 |
|
1162 |
+
#: media/js/aam-5.8.js:2604
|
1163 |
msgid "Settings Customized"
|
1164 |
msgstr ""
|
1165 |
|
1166 |
+
#: media/js/aam-5.8.js:2638 media/js/aam-5.8.js:2641 media/js/aam-5.8.js:2654
|
1167 |
+
#: media/js/aam-5.8.js:2657
|
1168 |
msgid "Parent:"
|
1169 |
msgstr ""
|
1170 |
|
1171 |
+
#: media/js/aam-5.8.js:2644 media/js/aam-5.8.js:2660
|
1172 |
+
#: Application/Backend/phtml/main/menu.phtml:67
|
1173 |
+
#: Application/Backend/phtml/main/metabox.phtml:65
|
1174 |
+
#: Application/Backend/phtml/main/toolbar.phtml:56
|
1175 |
msgid "ID:"
|
1176 |
msgstr ""
|
1177 |
|
1178 |
+
#: media/js/aam-5.8.js:2687
|
1179 |
msgid "Drill-Down"
|
1180 |
msgstr ""
|
1181 |
|
1182 |
+
#: media/js/aam-5.8.js:2766 media/js/aam-5.8.js:4480
|
1183 |
msgid "Resetting..."
|
1184 |
msgstr ""
|
1185 |
|
1186 |
+
#: media/js/aam-5.8.js:3276
|
1187 |
msgid "Search Route"
|
1188 |
msgstr ""
|
1189 |
|
1190 |
+
#: media/js/aam-5.8.js:3277
|
1191 |
msgid "_TOTAL_ route(s)"
|
1192 |
msgstr ""
|
1193 |
|
1194 |
+
#: media/js/aam-5.8.js:3279
|
1195 |
msgid "No API enpoints found. You might have APIs disabled."
|
1196 |
msgstr ""
|
1197 |
|
1198 |
+
#: media/js/aam-5.8.js:3391
|
1199 |
+
msgid "Failed to save URI rule"
|
1200 |
+
msgstr ""
|
1201 |
+
|
1202 |
+
#: media/js/aam-5.8.js:3429
|
1203 |
+
msgid "Failed to delete URI rule"
|
1204 |
+
msgstr ""
|
1205 |
+
|
1206 |
+
#: media/js/aam-5.8.js:3464
|
1207 |
+
msgid "Search URI"
|
1208 |
+
msgstr ""
|
1209 |
+
|
1210 |
+
#: media/js/aam-5.8.js:3465
|
1211 |
+
msgid "_TOTAL_ URI(s)"
|
1212 |
+
msgstr ""
|
1213 |
+
|
1214 |
+
#: media/js/aam-5.8.js:3505
|
1215 |
+
msgid "Edit Rule"
|
1216 |
+
msgstr ""
|
1217 |
+
|
1218 |
+
#: media/js/aam-5.8.js:3517
|
1219 |
+
msgid "Delete Rule"
|
1220 |
+
msgstr ""
|
1221 |
+
|
1222 |
+
#: media/js/aam-5.8.js:3626
|
1223 |
msgid "Extension status was updated successfully"
|
1224 |
msgstr ""
|
1225 |
|
1226 |
+
#: media/js/aam-5.8.js:3779
|
1227 |
msgid "The issue has been resolved"
|
1228 |
msgstr ""
|
1229 |
|
1230 |
+
#: media/js/aam-5.8.js:3853 Application/Backend/phtml/main/get-started.phtml:13
|
1231 |
+
msgid "OK, got it"
|
1232 |
+
msgstr ""
|
1233 |
+
|
1234 |
+
#: media/js/aam-5.8.js:3932 media/js/aam-5.8.js:3966
|
1235 |
msgid "Wait..."
|
1236 |
msgstr ""
|
1237 |
|
1238 |
+
#: media/js/aam-5.8.js:3938
|
1239 |
msgid "All settings has been cleared successfully"
|
1240 |
msgstr ""
|
1241 |
|
1242 |
+
#: media/js/aam-5.8.js:3949 media/js/aam-5.8.js:3983
|
1243 |
+
#: Application/Backend/phtml/index.phtml:101
|
1244 |
msgid "Clear"
|
1245 |
msgstr ""
|
1246 |
|
1247 |
+
#: media/js/aam-5.8.js:3972
|
1248 |
msgid "The cache has been cleared successfully"
|
1249 |
msgstr ""
|
1250 |
|
1251 |
+
#: media/js/vendor.js:600
|
1252 |
msgid ": "
|
1253 |
msgstr ""
|
1254 |
|
1282 |
msgstr ""
|
1283 |
|
1284 |
#: Application/Backend/phtml/extensions.phtml:29
|
1285 |
+
#: Application/Backend/phtml/extensions.phtml:73
|
1286 |
msgid "Free"
|
1287 |
msgstr ""
|
1288 |
|
1290 |
msgid "Check for Updates"
|
1291 |
msgstr ""
|
1292 |
|
1293 |
+
#: Application/Backend/phtml/extensions.phtml:50
|
1294 |
+
msgid "Installed"
|
1295 |
+
msgstr ""
|
1296 |
+
|
1297 |
+
#: Application/Backend/phtml/extensions.phtml:52
|
1298 |
+
#: Application/Backend/phtml/extensions.phtml:80
|
1299 |
msgid "Deactivate"
|
1300 |
msgstr ""
|
1301 |
|
1302 |
+
#: Application/Backend/phtml/extensions.phtml:52
|
1303 |
+
#: Application/Backend/phtml/extensions.phtml:80
|
1304 |
msgid "extension is active"
|
1305 |
msgstr ""
|
1306 |
|
1307 |
+
#: Application/Backend/phtml/extensions.phtml:55
|
1308 |
+
msgid "license is missing"
|
1309 |
+
msgstr ""
|
1310 |
+
|
1311 |
+
#: Application/Backend/phtml/extensions.phtml:57
|
1312 |
+
#: Application/Backend/phtml/extensions.phtml:84
|
1313 |
msgid "Activate"
|
1314 |
msgstr ""
|
1315 |
|
1316 |
+
#: Application/Backend/phtml/extensions.phtml:57
|
1317 |
+
#: Application/Backend/phtml/extensions.phtml:84
|
1318 |
msgid "extension is inactive"
|
1319 |
msgstr ""
|
1320 |
|
1321 |
+
#: Application/Backend/phtml/extensions.phtml:59
|
1322 |
+
#: Application/Backend/phtml/index.phtml:188
|
1323 |
msgid "Read More"
|
1324 |
msgstr ""
|
1325 |
|
1326 |
+
#: Application/Backend/phtml/extensions.phtml:101
|
1327 |
+
#: Application/Backend/phtml/extensions.phtml:132
|
1328 |
+
#: Application/Backend/phtml/extensions.phtml:143
|
1329 |
+
#: Application/Backend/phtml/index.phtml:94
|
1330 |
+
#: Application/Backend/phtml/index.phtml:254
|
1331 |
+
#: Application/Backend/phtml/index.phtml:271
|
1332 |
+
#: Application/Backend/phtml/index.phtml:281
|
1333 |
+
#: Application/Backend/phtml/index.phtml:297
|
1334 |
+
#: Application/Backend/phtml/index.phtml:307
|
1335 |
+
#: Application/Backend/phtml/index.phtml:315
|
1336 |
+
#: Application/Backend/phtml/index.phtml:342
|
1337 |
+
#: Application/Backend/phtml/index.phtml:404
|
|
|
|
|
|
|
|
|
1338 |
#: Application/Backend/phtml/main/capability.phtml:54
|
1339 |
#: Application/Backend/phtml/main/capability.phtml:65
|
1340 |
#: Application/Backend/phtml/main/capability.phtml:75
|
1341 |
#: Application/Backend/phtml/main/capability.phtml:87
|
1342 |
#: Application/Backend/phtml/main/capability.phtml:97
|
1343 |
#: Application/Backend/phtml/main/capability.phtml:105
|
1344 |
+
#: Application/Backend/phtml/main/menu.phtml:113
|
1345 |
+
#: Application/Backend/phtml/main/metabox.phtml:91
|
1346 |
+
#: Application/Backend/phtml/main/metabox.phtml:105
|
1347 |
+
#: Application/Backend/phtml/main/uri.phtml:26
|
1348 |
+
#: Application/Backend/phtml/main/uri.phtml:98
|
1349 |
+
#: Application/Backend/phtml/main/uri.phtml:108
|
1350 |
+
#: Application/Backend/phtml/main/uri.phtml:120
|
1351 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:6
|
1352 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:17
|
1353 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:27
|
1360 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:136
|
1361 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:146
|
1362 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:158
|
|
|
1363 |
msgid "Close"
|
1364 |
msgstr ""
|
1365 |
|
1366 |
+
#: Application/Backend/phtml/extensions.phtml:102
|
1367 |
msgid "Notification"
|
1368 |
msgstr ""
|
1369 |
|
1370 |
+
#: Application/Backend/phtml/extensions.phtml:106
|
1371 |
msgid ""
|
1372 |
"Extension requires manual installation. Please follow few simple steps below."
|
1373 |
msgstr ""
|
1374 |
|
1375 |
+
#: Application/Backend/phtml/extensions.phtml:110
|
1376 |
msgid "Click [Download] button below and save the zip archive on your computer"
|
1377 |
msgstr ""
|
1378 |
|
1379 |
+
#: Application/Backend/phtml/extensions.phtml:111
|
1380 |
msgid "Connect to your website via FTP and navigate to [wp-content] folder"
|
1381 |
msgstr ""
|
1382 |
|
1383 |
+
#: Application/Backend/phtml/extensions.phtml:112
|
1384 |
msgid ""
|
1385 |
"Create [aam/extension] folder inside [wp-content] and make sure it is "
|
1386 |
"writable by your server"
|
1387 |
msgstr ""
|
1388 |
|
1389 |
+
#: Application/Backend/phtml/extensions.phtml:113
|
1390 |
msgid ""
|
1391 |
"Unzip downloaded archive and upload the folder inside the [wp-content/aam/"
|
1392 |
"extension] folder"
|
1393 |
msgstr ""
|
1394 |
|
1395 |
+
#: Application/Backend/phtml/extensions.phtml:117
|
1396 |
msgid ""
|
1397 |
"[PLEASE NOTE!] Your browser may not support the latest HTML5 attribures and "
|
1398 |
"if downloaded file is not .ZIP archive, simply rename the file by adding ."
|
1399 |
"zip extension."
|
1400 |
msgstr ""
|
1401 |
|
1402 |
+
#: Application/Backend/phtml/extensions.phtml:122
|
1403 |
+
#: Application/Backend/phtml/index.phtml:102
|
1404 |
msgid "Cancel"
|
1405 |
msgstr ""
|
1406 |
|
1407 |
+
#: Application/Backend/phtml/extensions.phtml:133
|
1408 |
msgid "Install Extension"
|
1409 |
msgstr ""
|
1410 |
|
1411 |
+
#: Application/Backend/phtml/extensions.phtml:137
|
1412 |
msgid ""
|
1413 |
"Insert license key that you recieved after the payment (find the email "
|
1414 |
"example below). It might take up to 2 hours to process the payment. Please "
|
1432 |
msgid "Notifications"
|
1433 |
msgstr ""
|
1434 |
|
1435 |
+
#: Application/Backend/phtml/index.phtml:81
|
1436 |
+
msgid "Clear AAM Cache"
|
1437 |
msgstr ""
|
1438 |
|
1439 |
#: Application/Backend/phtml/index.phtml:84
|
1440 |
+
msgid "Reset AAM Settings"
|
1441 |
+
msgstr ""
|
1442 |
+
|
1443 |
+
#: Application/Backend/phtml/index.phtml:95
|
1444 |
+
msgid "Clear all settings"
|
1445 |
+
msgstr ""
|
1446 |
+
|
1447 |
+
#: Application/Backend/phtml/index.phtml:98
|
1448 |
+
msgid "All AAM settings will be removed."
|
1449 |
+
msgstr ""
|
1450 |
+
|
1451 |
+
#: Application/Backend/phtml/index.phtml:114
|
1452 |
+
msgid "Warning"
|
1453 |
+
msgstr ""
|
1454 |
+
|
1455 |
+
#: Application/Backend/phtml/index.phtml:119
|
1456 |
#, php-format
|
1457 |
msgid ""
|
1458 |
"All AAM extension should be located in [%s] directory however it either does "
|
1459 |
"not exist or is not writable."
|
1460 |
msgstr ""
|
1461 |
|
1462 |
+
#: Application/Backend/phtml/index.phtml:121
|
1463 |
msgid "Click To Fix The Issue"
|
1464 |
msgstr ""
|
1465 |
|
1466 |
+
#: Application/Backend/phtml/index.phtml:133
|
1467 |
#, php-format
|
1468 |
msgid ""
|
1469 |
"Failed to create a [%s] directory for AAM extension. To create it manually, "
|
1472 |
"file is located)."
|
1473 |
msgstr ""
|
1474 |
|
1475 |
+
#: Application/Backend/phtml/index.phtml:138
|
1476 |
msgid "Ok"
|
1477 |
msgstr ""
|
1478 |
|
1479 |
+
#: Application/Backend/phtml/index.phtml:150
|
1480 |
msgid "Premium Licenses"
|
1481 |
msgstr ""
|
1482 |
|
1483 |
+
#: Application/Backend/phtml/index.phtml:167
|
1484 |
msgid "Manage License"
|
1485 |
msgstr ""
|
1486 |
|
1487 |
+
#: Application/Backend/phtml/index.phtml:169
|
1488 |
msgid "Upgrade License"
|
1489 |
msgstr ""
|
1490 |
|
1491 |
+
#: Application/Backend/phtml/index.phtml:187
|
1492 |
msgid ""
|
1493 |
"The [Development Package] allows you to get all premium extensions for "
|
1494 |
"[unlimited number of websites]."
|
1495 |
msgstr ""
|
1496 |
|
1497 |
+
#: Application/Backend/phtml/index.phtml:198
|
1498 |
msgid "AAM Multisite"
|
1499 |
msgstr ""
|
1500 |
|
1501 |
+
#: Application/Backend/phtml/index.phtml:201
|
1502 |
msgid ""
|
1503 |
"Install free [AAM Multisite extension] in order to manage all your sites "
|
1504 |
"from the Network Admin."
|
1505 |
msgstr ""
|
1506 |
|
1507 |
+
#: Application/Backend/phtml/index.phtml:212
|
1508 |
msgid "Users/Roles Manager"
|
1509 |
msgstr ""
|
1510 |
|
1511 |
+
#: Application/Backend/phtml/index.phtml:220
|
1512 |
+
#: Application/Backend/phtml/index.phtml:435
|
1513 |
msgid "Roles"
|
1514 |
msgstr ""
|
1515 |
|
1516 |
+
#: Application/Backend/phtml/index.phtml:226
|
1517 |
+
#: Application/Backend/phtml/index.phtml:445
|
1518 |
msgid "Visitor"
|
1519 |
msgstr ""
|
1520 |
|
1521 |
+
#: Application/Backend/phtml/index.phtml:229
|
1522 |
+
#: Application/Backend/phtml/index.phtml:450
|
1523 |
msgid "Default"
|
1524 |
msgstr ""
|
1525 |
|
1526 |
+
#: Application/Backend/phtml/index.phtml:242
|
1527 |
+
#: Application/Backend/phtml/index.phtml:330
|
1528 |
+
#: Application/Backend/phtml/main/uri.phtml:134
|
1529 |
msgid "Action"
|
1530 |
msgstr ""
|
1531 |
|
1532 |
+
#: Application/Backend/phtml/index.phtml:255
|
1533 |
msgid "Create Role"
|
1534 |
msgstr ""
|
1535 |
|
1536 |
+
#: Application/Backend/phtml/index.phtml:259
|
1537 |
+
#: Application/Backend/phtml/index.phtml:286
|
1538 |
msgid "Role Name"
|
1539 |
msgstr ""
|
1540 |
|
1541 |
+
#: Application/Backend/phtml/index.phtml:260
|
1542 |
+
#: Application/Backend/phtml/index.phtml:287
|
1543 |
msgid "Enter Role Name"
|
1544 |
msgstr ""
|
1545 |
|
1546 |
+
#: Application/Backend/phtml/index.phtml:263
|
1547 |
+
#: Application/Backend/phtml/index.phtml:290
|
1548 |
msgid "Role Expiration"
|
1549 |
msgstr ""
|
1550 |
|
1551 |
+
#: Application/Backend/phtml/index.phtml:264
|
1552 |
+
#: Application/Backend/phtml/index.phtml:291
|
1553 |
msgid "Enter Expiration Rule"
|
1554 |
msgstr ""
|
1555 |
|
1556 |
+
#: Application/Backend/phtml/index.phtml:282
|
1557 |
msgid "Update Role"
|
1558 |
msgstr ""
|
1559 |
|
1560 |
+
#: Application/Backend/phtml/index.phtml:311
|
1561 |
#, php-format
|
1562 |
msgid "Are you sure that you want to delete the %s role?"
|
1563 |
msgstr ""
|
1564 |
|
1565 |
+
#: Application/Backend/phtml/index.phtml:329
|
1566 |
+
#: Application/Backend/phtml/metabox/metabox-content.phtml:64
|
1567 |
msgid "Username"
|
1568 |
msgstr ""
|
1569 |
|
1570 |
+
#: Application/Backend/phtml/index.phtml:354
|
1571 |
+
msgid ""
|
1572 |
+
"Define for how long user can access the website and what action needs to be "
|
1573 |
+
"taken after access expires."
|
1574 |
msgstr ""
|
1575 |
|
1576 |
+
#: Application/Backend/phtml/index.phtml:360
|
1577 |
msgid "Action After Expiration"
|
1578 |
msgstr ""
|
1579 |
|
1580 |
+
#: Application/Backend/phtml/index.phtml:362
|
1581 |
msgid "Select Action"
|
1582 |
msgstr ""
|
1583 |
|
1584 |
+
#: Application/Backend/phtml/index.phtml:363
|
1585 |
+
msgid "Logout User"
|
1586 |
+
msgstr ""
|
1587 |
+
|
1588 |
+
#: Application/Backend/phtml/index.phtml:364
|
1589 |
msgid "Delete Account"
|
1590 |
msgstr ""
|
1591 |
|
1592 |
+
#: Application/Backend/phtml/index.phtml:365
|
1593 |
msgid "Lock Account"
|
1594 |
msgstr ""
|
1595 |
|
1596 |
+
#: Application/Backend/phtml/index.phtml:366
|
1597 |
msgid "Change User Role"
|
1598 |
msgstr ""
|
1599 |
|
1600 |
+
#: Application/Backend/phtml/index.phtml:370
|
1601 |
msgid "Change To Role"
|
1602 |
msgstr ""
|
1603 |
|
1604 |
+
#: Application/Backend/phtml/index.phtml:378
|
1605 |
+
#, php-format
|
1606 |
+
msgid ""
|
1607 |
+
"User JWT token to authentication user without a need for entering username/"
|
1608 |
+
"password. To learn more about JWT authentication, please refer to %sHow to "
|
1609 |
+
"authenticate WordPress user with JWT token%s article."
|
1610 |
+
msgstr ""
|
1611 |
+
|
1612 |
+
#: Application/Backend/phtml/index.phtml:380
|
1613 |
+
msgid "JWT Token (for any API calls)"
|
1614 |
+
msgstr ""
|
1615 |
+
|
1616 |
+
#: Application/Backend/phtml/index.phtml:387
|
1617 |
+
msgid "User Login URL (with JWT token)"
|
1618 |
+
msgstr ""
|
1619 |
+
|
1620 |
+
#: Application/Backend/phtml/index.phtml:389
|
1621 |
+
msgid ""
|
1622 |
+
"With this URL user will be automatically logged in until the time defined on "
|
1623 |
+
"the \"Temporary Access\" tab."
|
1624 |
+
msgstr ""
|
1625 |
+
|
1626 |
+
#: Application/Backend/phtml/index.phtml:394
|
1627 |
+
msgid "To manage user profile, click on the button below."
|
1628 |
+
msgstr ""
|
1629 |
+
|
1630 |
+
#: Application/Backend/phtml/index.phtml:396
|
1631 |
+
msgid "Edit User Profile"
|
1632 |
+
msgstr ""
|
1633 |
+
|
1634 |
+
#: Application/Backend/phtml/index.phtml:414
|
1635 |
msgid ""
|
1636 |
"Manage access to your website for visitors (any user that is not "
|
1637 |
"authenticated)"
|
1638 |
msgstr ""
|
1639 |
|
1640 |
+
#: Application/Backend/phtml/index.phtml:415
|
1641 |
+
#: Application/Backend/phtml/metabox/metabox-content.phtml:78
|
1642 |
msgid "Manage Visitors"
|
1643 |
msgstr ""
|
1644 |
|
1645 |
+
#: Application/Backend/phtml/index.phtml:422
|
1646 |
msgid ""
|
1647 |
"Manage default access to your website resources for all users, roles and "
|
1648 |
"visitor. This includes Administrator role and your user"
|
1649 |
msgstr ""
|
1650 |
|
1651 |
+
#: Application/Backend/phtml/index.phtml:423
|
1652 |
+
#: Application/Backend/phtml/metabox/metabox-content.phtml:104
|
1653 |
msgid "Manage Default Access"
|
1654 |
msgstr ""
|
1655 |
|
1656 |
+
#: Application/Backend/phtml/index.phtml:431
|
1657 |
msgid ""
|
1658 |
"Manage access for your users, roles and visitors. Be careful with "
|
1659 |
"[Administrator] role as well as your admin user. [Database backup is "
|
1660 |
"strongly recommended]."
|
1661 |
msgstr ""
|
1662 |
|
1663 |
+
#: Application/Backend/phtml/index.phtml:436
|
1664 |
msgid ""
|
1665 |
"With Roles tab you can manage access for any defined role, edit role's name, "
|
1666 |
"create new role or even delete existing (but only when there is no users "
|
1667 |
"assigned to it). You are not allowed to delete Administrator role."
|
1668 |
msgstr ""
|
1669 |
|
1670 |
+
#: Application/Backend/phtml/index.phtml:441
|
1671 |
msgid ""
|
1672 |
"Manage access for any user. As a bonus feature, you can block user. It means "
|
1673 |
"that user will be not able to login to your website anymore."
|
1674 |
msgstr ""
|
1675 |
|
1676 |
+
#: Application/Backend/phtml/index.phtml:446
|
1677 |
msgid ""
|
1678 |
"Visitor can be considered any user that is not authenticated to your website."
|
1679 |
msgstr ""
|
1680 |
|
1681 |
+
#: Application/Backend/phtml/index.phtml:451
|
1682 |
msgid ""
|
1683 |
"Manage default access settings to your website resources for all users, "
|
1684 |
"roles and visitors."
|
1700 |
#: Application/Backend/phtml/main/login-redirect.phtml:31
|
1701 |
#: Application/Backend/phtml/main/logout-redirect.phtml:31
|
1702 |
#: Application/Backend/phtml/main/redirect.phtml:50
|
1703 |
+
#: Application/Backend/phtml/main/uri.phtml:57
|
1704 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:77
|
1705 |
msgid "Redirected to existing page [(select from the drop-down)]"
|
1706 |
msgstr ""
|
1708 |
#: Application/Backend/phtml/main/404redirect.phtml:28
|
1709 |
#: Application/Backend/phtml/main/redirect.phtml:54
|
1710 |
#: Application/Backend/phtml/main/redirect.phtml:106
|
1711 |
+
#: Application/Backend/phtml/main/uri.phtml:61
|
1712 |
msgid "Redirected to the URL [(enter valid URL starting from http or https)]"
|
1713 |
msgstr ""
|
1714 |
|
1717 |
#: Application/Backend/phtml/main/logout-redirect.phtml:39
|
1718 |
#: Application/Backend/phtml/main/redirect.phtml:58
|
1719 |
#: Application/Backend/phtml/main/redirect.phtml:110
|
1720 |
+
#: Application/Backend/phtml/main/uri.phtml:65
|
1721 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:85
|
1722 |
#, php-format
|
1723 |
msgid "Trigger PHP callback function [(valid %sPHP callback%s is required)]"
|
1728 |
#: Application/Backend/phtml/main/logout-redirect.phtml:52
|
1729 |
#: Application/Backend/phtml/main/redirect.phtml:76
|
1730 |
#: Application/Backend/phtml/main/redirect.phtml:128
|
1731 |
+
#: Application/Backend/phtml/main/uri.phtml:81
|
1732 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:96
|
1733 |
msgid "-- Select Page --"
|
1734 |
msgstr ""
|
1747 |
#: Application/Backend/phtml/main/logout-redirect.phtml:63
|
1748 |
#: Application/Backend/phtml/main/redirect.phtml:87
|
1749 |
#: Application/Backend/phtml/main/redirect.phtml:139
|
1750 |
+
#: Application/Backend/phtml/main/uri.phtml:92
|
1751 |
#: Application/Backend/phtml/partial/post-advanced-settings.phtml:107
|
1752 |
msgid "PHP Callback Function"
|
1753 |
msgstr ""
|
1780 |
#: Application/Backend/phtml/main/capability.phtml:33
|
1781 |
#: Application/Backend/phtml/main/menu.phtml:14
|
1782 |
#: Application/Backend/phtml/main/metabox.phtml:20
|
1783 |
+
#: Application/Backend/phtml/main/policy.phtml:16
|
1784 |
#: Application/Backend/phtml/main/post.phtml:36
|
1785 |
+
#: Application/Backend/phtml/main/route.phtml:17
|
1786 |
+
#: Application/Backend/phtml/main/toolbar.phtml:15
|
1787 |
+
#: Application/Backend/phtml/main/uri.phtml:17
|
1788 |
+
#: Application/Backend/phtml/metabox/metabox-content.phtml:133
|
1789 |
msgid "Reset To Default"
|
1790 |
msgstr ""
|
1791 |
|
1800 |
msgstr ""
|
1801 |
|
1802 |
#: Application/Backend/phtml/main/capability.phtml:44
|
1803 |
+
#: Application/Backend/phtml/main/policy.phtml:28
|
1804 |
#: Application/Backend/phtml/main/post.phtml:52
|
1805 |
+
#: Application/Backend/phtml/main/uri.phtml:135
|
1806 |
msgid "Actions"
|
1807 |
msgstr ""
|
1808 |
|
1866 |
msgstr ""
|
1867 |
|
1868 |
#: Application/Backend/phtml/main/get-started.phtml:12
|
1869 |
+
msgid "Go To \"Get Started\" Page"
|
|
|
|
|
1870 |
msgstr ""
|
1871 |
|
1872 |
#: Application/Backend/phtml/main/login-redirect.phtml:7
|
1915 |
#: Application/Backend/phtml/main/menu.phtml:13
|
1916 |
#: Application/Backend/phtml/main/metabox.phtml:19
|
1917 |
#: Application/Backend/phtml/main/post.phtml:35
|
1918 |
+
#: Application/Backend/phtml/main/toolbar.phtml:14
|
1919 |
+
#: Application/Backend/phtml/main/uri.phtml:16
|
1920 |
+
#: Application/Backend/phtml/metabox/metabox-content.phtml:132
|
1921 |
msgid "Settings are customized"
|
1922 |
msgstr ""
|
1923 |
|
1924 |
+
#: Application/Backend/phtml/main/menu.phtml:47
|
1925 |
+
#: Application/Backend/phtml/main/toolbar.phtml:44
|
1926 |
+
msgid "Menu ID:"
|
1927 |
+
msgstr ""
|
1928 |
+
|
1929 |
+
#: Application/Backend/phtml/main/menu.phtml:59
|
1930 |
+
#: Application/Backend/phtml/main/menu.phtml:66
|
1931 |
msgid "Cap:"
|
1932 |
msgstr ""
|
1933 |
|
1934 |
+
#: Application/Backend/phtml/main/menu.phtml:102
|
1935 |
msgid ""
|
1936 |
"Current user does not have enough capabilities to access any available "
|
1937 |
"dashboard page."
|
1938 |
msgstr ""
|
1939 |
|
1940 |
+
#: Application/Backend/phtml/main/menu.phtml:114
|
1941 |
msgid "Dashboard Lockdown"
|
1942 |
msgstr ""
|
1943 |
|
1944 |
+
#: Application/Backend/phtml/main/menu.phtml:118
|
1945 |
msgid "You cannot restrict access to Dashboard home page."
|
1946 |
msgstr ""
|
1947 |
|
1948 |
+
#: Application/Backend/phtml/main/menu.phtml:119
|
1949 |
#, php-format
|
1950 |
msgid ""
|
1951 |
"The [Home] is the default page every user is redirected after login. To "
|
1953 |
"WordPress backend%s article."
|
1954 |
msgstr ""
|
1955 |
|
1956 |
+
#: Application/Backend/phtml/main/menu.phtml:123
|
1957 |
msgid "OK"
|
1958 |
msgstr ""
|
1959 |
|
1965 |
msgstr ""
|
1966 |
|
1967 |
#: Application/Backend/phtml/main/metabox.phtml:12
|
|
|
1968 |
msgid "Refresh"
|
1969 |
msgstr ""
|
1970 |
|
1980 |
msgid "Frontend Widgets [(including Appearance->Widgets)]"
|
1981 |
msgstr ""
|
1982 |
|
1983 |
+
#: Application/Backend/phtml/main/metabox.phtml:81
|
|
|
|
|
|
|
|
|
1984 |
msgid "The list is not initialized. Click Refresh button above."
|
1985 |
msgstr ""
|
1986 |
|
1987 |
+
#: Application/Backend/phtml/main/metabox.phtml:92
|
1988 |
msgid "Initialize URL"
|
1989 |
msgstr ""
|
1990 |
|
1991 |
+
#: Application/Backend/phtml/main/metabox.phtml:96
|
1992 |
msgid ""
|
1993 |
"Some metaboxes are \"conditional\" and appear on the Edit screen when "
|
1994 |
"certain conditions are met. For example metabox \"Comments\" appears only "
|
1997 |
"appears."
|
1998 |
msgstr ""
|
1999 |
|
2000 |
+
#: Application/Backend/phtml/main/metabox.phtml:99
|
2001 |
msgid "Backend page URL"
|
2002 |
msgstr ""
|
2003 |
|
2004 |
+
#: Application/Backend/phtml/main/metabox.phtml:100
|
2005 |
msgid "Insert valid URL"
|
2006 |
msgstr ""
|
2007 |
|
2008 |
+
#: Application/Backend/phtml/main/policy.phtml:7
|
2009 |
+
#, php-format
|
2010 |
+
msgid ""
|
2011 |
+
"Manage access and security policies for [%s]. For more information check "
|
2012 |
+
"%sAccess & Security Policy%s page."
|
2013 |
+
msgstr ""
|
2014 |
+
|
2015 |
+
#: Application/Backend/phtml/main/policy.phtml:15
|
2016 |
+
msgid "Policies are customized"
|
2017 |
+
msgstr ""
|
2018 |
+
|
2019 |
+
#: Application/Backend/phtml/main/policy.phtml:27
|
2020 |
+
msgid "Policy"
|
2021 |
+
msgstr ""
|
2022 |
+
|
2023 |
+
#: Application/Backend/phtml/main/policy.phtml:40
|
2024 |
+
#, php-format
|
2025 |
+
msgid ""
|
2026 |
+
"%s[AAM Plus Package]%s extension is required in order to apply Access & "
|
2027 |
+
"Security Policies to everybody all together."
|
2028 |
+
msgstr ""
|
2029 |
+
|
2030 |
#: Application/Backend/phtml/main/post.phtml:7
|
2031 |
#, php-format
|
2032 |
msgid ""
|
2092 |
|
2093 |
#: Application/Backend/phtml/main/redirect.phtml:40
|
2094 |
#: Application/Backend/phtml/main/redirect.phtml:98
|
2095 |
+
#: Application/Backend/phtml/main/uri.phtml:47
|
2096 |
msgid "Show customized message [(plain text or HTML)]"
|
2097 |
msgstr ""
|
2098 |
|
2099 |
#: Application/Backend/phtml/main/redirect.phtml:45
|
2100 |
+
#: Application/Backend/phtml/main/uri.phtml:52
|
2101 |
msgid ""
|
2102 |
"Redirect to the login page [(after login, user will be redirected back to "
|
2103 |
"the restricted page)]"
|
2105 |
|
2106 |
#: Application/Backend/phtml/main/redirect.phtml:62
|
2107 |
#: Application/Backend/phtml/main/redirect.phtml:114
|
2108 |
+
#: Application/Backend/phtml/main/uri.phtml:69
|
2109 |
msgid "Customized Message"
|
2110 |
msgstr ""
|
2111 |
|
2112 |
#: Application/Backend/phtml/main/redirect.phtml:63
|
2113 |
#: Application/Backend/phtml/main/redirect.phtml:115
|
2114 |
+
#: Application/Backend/phtml/main/uri.phtml:70
|
2115 |
msgid "Enter message..."
|
2116 |
msgstr ""
|
2117 |
|
2127 |
"available in AAM."
|
2128 |
msgstr ""
|
2129 |
|
2130 |
+
#: Application/Backend/phtml/main/route.phtml:16
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2131 |
msgid "Routes are customized"
|
2132 |
msgstr ""
|
2133 |
|
2134 |
+
#: Application/Backend/phtml/main/route.phtml:27
|
2135 |
msgid "Route"
|
2136 |
msgstr ""
|
2137 |
|
2138 |
+
#: Application/Backend/phtml/main/route.phtml:28
|
2139 |
msgid "Deny"
|
2140 |
msgstr ""
|
2141 |
|
2147 |
"or utilize the great power of roles and capabilities."
|
2148 |
msgstr ""
|
2149 |
|
2150 |
+
#: Application/Backend/phtml/main/toolbar.phtml:55
|
2151 |
+
msgid "URI:"
|
2152 |
+
msgstr ""
|
2153 |
+
|
2154 |
+
#: Application/Backend/phtml/main/toolbar.phtml:86
|
2155 |
msgid ""
|
2156 |
"The list of top admin bar items is not initialized. Click \"Refresh\" button "
|
2157 |
"above."
|
2158 |
msgstr ""
|
2159 |
|
2160 |
+
#: Application/Backend/phtml/main/uri.phtml:8
|
2161 |
+
#, php-format
|
2162 |
+
msgid ""
|
2163 |
+
"Manage access to the website URL(s) for the [%s]. However, note! All entered "
|
2164 |
+
"URLs have to belong to this particular website and processed by the "
|
2165 |
+
"WordPress core. For more information check %sHow to restrict access to any "
|
2166 |
+
"WordPress website URL%s."
|
2167 |
+
msgstr ""
|
2168 |
+
|
2169 |
+
#: Application/Backend/phtml/main/uri.phtml:27
|
2170 |
+
msgid "URI Access Rule"
|
2171 |
+
msgstr ""
|
2172 |
+
|
2173 |
+
#: Application/Backend/phtml/main/uri.phtml:31
|
2174 |
+
msgid "Enter URL [(wildcard * is available with Plus Package extension)]"
|
2175 |
+
msgstr ""
|
2176 |
+
|
2177 |
+
#: Application/Backend/phtml/main/uri.phtml:35
|
2178 |
+
msgid "How to redirect user when match?"
|
2179 |
+
msgstr ""
|
2180 |
+
|
2181 |
+
#: Application/Backend/phtml/main/uri.phtml:39
|
2182 |
+
msgid "Allow Access"
|
2183 |
+
msgstr ""
|
2184 |
+
|
2185 |
+
#: Application/Backend/phtml/main/uri.phtml:43
|
2186 |
+
msgid "Deny Access [(show \"Access Denied\" message)]"
|
2187 |
+
msgstr ""
|
2188 |
+
|
2189 |
+
#: Application/Backend/phtml/main/uri.phtml:87
|
2190 |
+
msgid "The Valid Redirect URL"
|
2191 |
+
msgstr ""
|
2192 |
+
|
2193 |
+
#: Application/Backend/phtml/main/uri.phtml:109
|
2194 |
+
msgid "Delete URI Rule"
|
2195 |
+
msgstr ""
|
2196 |
+
|
2197 |
+
#: Application/Backend/phtml/main/uri.phtml:132
|
2198 |
+
msgid "URI"
|
2199 |
+
msgstr ""
|
2200 |
+
|
2201 |
+
#: Application/Backend/phtml/main/uri.phtml:133
|
2202 |
+
msgid "Type"
|
2203 |
+
msgstr ""
|
2204 |
+
|
2205 |
+
#: Application/Backend/phtml/metabox/metabox-content.phtml:77
|
2206 |
#, php-format
|
2207 |
msgid "Manage access to %s for visitors (any user that is not authenticated)"
|
2208 |
msgstr ""
|
2209 |
|
2210 |
+
#: Application/Backend/phtml/metabox/metabox-content.phtml:80
|
2211 |
+
msgid ""
|
2212 |
+
"Attach current access & security policy to visitors (any user that is "
|
2213 |
+
"not authenticated)"
|
2214 |
+
msgstr ""
|
2215 |
+
|
2216 |
+
#: Application/Backend/phtml/metabox/metabox-content.phtml:98
|
2217 |
#, php-format
|
2218 |
msgid ""
|
2219 |
"Manage default access to %s for all users, roles and visitor. This includes "
|
2220 |
"Administrator role and yourself"
|
2221 |
msgstr ""
|
2222 |
|
2223 |
+
#: Application/Backend/phtml/metabox/metabox-content.phtml:100
|
2224 |
+
msgid ""
|
2225 |
+
"Attach current access & security policy to all users, roles and "
|
2226 |
+
"visitors. This includes Administrator role and yourself"
|
2227 |
+
msgstr ""
|
2228 |
+
|
2229 |
+
#: Application/Backend/phtml/metabox/metabox-content.phtml:118
|
2230 |
msgid "This feature is allowed only with [AAM Plus Package] extension."
|
2231 |
msgstr ""
|
2232 |
|
2233 |
+
#: Application/Backend/phtml/metabox/policy-metabox.phtml:389
|
2234 |
+
#, php-format
|
2235 |
+
msgid ""
|
2236 |
+
"To learn more about Access & Security policy document, please check "
|
2237 |
+
"[%sAccess & Security Policy%s] page."
|
2238 |
+
msgstr ""
|
2239 |
+
|
2240 |
+
#: Application/Backend/phtml/metabox/policy-metabox.phtml:418
|
2241 |
+
msgid "Syntax Error"
|
2242 |
+
msgstr ""
|
2243 |
+
|
2244 |
#: Application/Backend/phtml/partial/login-redirect.phtml:3
|
2245 |
msgid ""
|
2246 |
"Setup [default] redirect after user logged in successfully for all your "
|
2252 |
msgid "Frontend Access Settings"
|
2253 |
msgstr ""
|
2254 |
|
2255 |
+
#: Application/Backend/phtml/partial/post-access-form.phtml:29
|
2256 |
+
#: Application/Backend/phtml/partial/post-access-form.phtml:69
|
2257 |
+
#: Application/Backend/phtml/partial/post-access-form.phtml:109
|
2258 |
msgid "change"
|
2259 |
msgstr ""
|
2260 |
|
2261 |
+
#: Application/Backend/phtml/partial/post-access-form.phtml:53
|
2262 |
msgid "Backend Access Settings"
|
2263 |
msgstr ""
|
2264 |
|
2265 |
+
#: Application/Backend/phtml/partial/post-access-form.phtml:93
|
2266 |
msgid "API Access Settings"
|
2267 |
msgstr ""
|
2268 |
|
2351 |
"belong to %s. Consider to purchase [AAM Plus Package] extension."
|
2352 |
msgstr ""
|
2353 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2354 |
#: Application/Backend/phtml/widget/login-backend.phtml:3
|
2355 |
msgid "Login Title"
|
2356 |
msgstr ""
|
aam.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
/**
|
4 |
Plugin Name: Advanced Access Manager
|
5 |
Description: All you need to manage access to your WordPress website
|
6 |
-
Version: 5.8.
|
7 |
Author: Vasyl Martyniuk <vasyl@vasyltech.com>
|
8 |
Author URI: https://vasyltech.com
|
9 |
|
@@ -133,9 +133,6 @@ class AAM {
|
|
133 |
AAM_Extension_Repository::getInstance()->load();
|
134 |
}
|
135 |
|
136 |
-
// Load Access/Security Policies
|
137 |
-
AAM_Core_Policy_Manager::bootstrap();
|
138 |
-
|
139 |
//load WP Core hooks
|
140 |
AAM_Shared_Manager::bootstrap();
|
141 |
}
|
@@ -175,7 +172,7 @@ class AAM {
|
|
175 |
// Logout user if he/she is blocked
|
176 |
self::$_instance->getUser()->validateUserStatus();
|
177 |
|
178 |
-
load_plugin_textdomain(AAM_KEY);
|
179 |
}
|
180 |
|
181 |
return self::$_instance;
|
3 |
/**
|
4 |
Plugin Name: Advanced Access Manager
|
5 |
Description: All you need to manage access to your WordPress website
|
6 |
+
Version: 5.8.3
|
7 |
Author: Vasyl Martyniuk <vasyl@vasyltech.com>
|
8 |
Author URI: https://vasyltech.com
|
9 |
|
133 |
AAM_Extension_Repository::getInstance()->load();
|
134 |
}
|
135 |
|
|
|
|
|
|
|
136 |
//load WP Core hooks
|
137 |
AAM_Shared_Manager::bootstrap();
|
138 |
}
|
172 |
// Logout user if he/she is blocked
|
173 |
self::$_instance->getUser()->validateUserStatus();
|
174 |
|
175 |
+
load_plugin_textdomain(AAM_KEY, false, 'advanced-access-manager/Lang');
|
176 |
}
|
177 |
|
178 |
return self::$_instance;
|
media/font/fontello.eot
CHANGED
Binary file
|
media/font/fontello.svg
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0" standalone="no"?>
|
2 |
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
3 |
<svg xmlns="http://www.w3.org/2000/svg">
|
4 |
-
<metadata>Copyright (C)
|
5 |
<defs>
|
6 |
<font id="fontello" horiz-adv-x="1000" >
|
7 |
<font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
|
@@ -58,6 +58,8 @@
|
|
58 |
|
59 |
<glyph glyph-name="help-circled" unicode="" d="M500 82v107q0 8-5 13t-13 5h-107q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h107q8 0 13 5t5 13z m143 375q0 49-31 91t-77 65-95 23q-136 0-207-119-9-14 4-24l74-55q4-4 10-4 9 0 14 7 30 38 48 51 19 14 48 14 27 0 48-15t21-33q0-21-11-34t-38-25q-35-16-65-48t-29-70v-20q0-8 5-13t13-5h107q8 0 13 5t5 13q0 10 12 27t30 28q18 10 28 16t25 19 25 27 16 34 7 45z m214-107q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
|
60 |
|
|
|
|
|
61 |
<glyph glyph-name="users" unicode="" d="M331 350q-90-3-148-71h-75q-45 0-77 22t-31 66q0 197 69 197 4 0 25-11t54-24 66-12q38 0 75 13-3-21-3-37 0-78 45-143z m598-356q0-66-41-105t-108-39h-488q-68 0-108 39t-41 105q0 30 2 58t8 61 14 61 24 54 35 45 48 30 62 11q6 0 24-12t41-26 59-27 76-12 75 12 60 27 41 26 23 12q35 0 63-11t47-30 35-45 24-54 15-61 8-61 2-58z m-572 713q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z m393-214q0-89-63-152t-151-62-152 62-63 152 63 151 152 63 151-63 63-151z m321-126q0-43-31-66t-77-22h-75q-57 68-147 71 45 65 45 143 0 16-3 37 37-13 74-13 33 0 67 12t54 24 24 11q69 0 69-197z m-71 340q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z" horiz-adv-x="1071.4" />
|
62 |
|
63 |
<glyph glyph-name="user-plus" unicode="" d="M393 350q-89 0-152 63t-62 151 62 152 152 63 151-63 63-152-63-151-151-63z m536-71h196q7 0 13-6t5-12v-107q0-8-5-13t-13-5h-196v-197q0-7-6-12t-12-6h-107q-8 0-13 6t-5 12v197h-197q-7 0-12 5t-6 13v107q0 7 6 12t12 6h197v196q0 7 5 13t13 5h107q7 0 12-5t6-13v-196z m-411-125q0-29 21-51t50-21h143v-133q-38-28-95-28h-488q-67 0-108 39t-41 106q0 30 2 58t8 61 15 60 24 55 34 45 48 30 62 11q11 0 22-10 44-34 86-51t92-17 92 17 86 51q11 10 22 10 73 0 121-54h-125q-29 0-50-21t-21-50v-107z" horiz-adv-x="1142.9" />
|
1 |
<?xml version="1.0" standalone="no"?>
|
2 |
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
3 |
<svg xmlns="http://www.w3.org/2000/svg">
|
4 |
+
<metadata>Copyright (C) 2019 by original authors @ fontello.com</metadata>
|
5 |
<defs>
|
6 |
<font id="fontello" horiz-adv-x="1000" >
|
7 |
<font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
|
58 |
|
59 |
<glyph glyph-name="help-circled" unicode="" d="M500 82v107q0 8-5 13t-13 5h-107q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h107q8 0 13 5t5 13z m143 375q0 49-31 91t-77 65-95 23q-136 0-207-119-9-14 4-24l74-55q4-4 10-4 9 0 14 7 30 38 48 51 19 14 48 14 27 0 48-15t21-33q0-21-11-34t-38-25q-35-16-65-48t-29-70v-20q0-8 5-13t13-5h107q8 0 13 5t5 13q0 10 12 27t30 28q18 10 28 16t25 19 25 27 16 34 7 45z m214-107q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
|
60 |
|
61 |
+
<glyph glyph-name="pin" unicode="" d="M268 368v250q0 8-5 13t-13 5-13-5-5-13v-250q0-8 5-13t13-5 13 5 5 13z m375-197q0-14-11-25t-25-10h-239l-29-270q-1-7-6-11t-11-5h-1q-15 0-17 15l-43 271h-225q-15 0-25 10t-11 25q0 69 44 124t99 55v286q-29 0-50 21t-22 50 22 50 50 22h357q29 0 50-22t21-50-21-50-50-21v-286q55 0 99-55t44-124z" horiz-adv-x="642.9" />
|
62 |
+
|
63 |
<glyph glyph-name="users" unicode="" d="M331 350q-90-3-148-71h-75q-45 0-77 22t-31 66q0 197 69 197 4 0 25-11t54-24 66-12q38 0 75 13-3-21-3-37 0-78 45-143z m598-356q0-66-41-105t-108-39h-488q-68 0-108 39t-41 105q0 30 2 58t8 61 14 61 24 54 35 45 48 30 62 11q6 0 24-12t41-26 59-27 76-12 75 12 60 27 41 26 23 12q35 0 63-11t47-30 35-45 24-54 15-61 8-61 2-58z m-572 713q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z m393-214q0-89-63-152t-151-62-152 62-63 152 63 151 152 63 151-63 63-151z m321-126q0-43-31-66t-77-22h-75q-57 68-147 71 45 65 45 143 0 16-3 37 37-13 74-13 33 0 67 12t54 24 24 11q69 0 69-197z m-71 340q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z" horiz-adv-x="1071.4" />
|
64 |
|
65 |
<glyph glyph-name="user-plus" unicode="" d="M393 350q-89 0-152 63t-62 151 62 152 152 63 151-63 63-152-63-151-151-63z m536-71h196q7 0 13-6t5-12v-107q0-8-5-13t-13-5h-196v-197q0-7-6-12t-12-6h-107q-8 0-13 6t-5 12v197h-197q-7 0-12 5t-6 13v107q0 7 6 12t12 6h197v196q0 7 5 13t13 5h107q7 0 12-5t6-13v-196z m-411-125q0-29 21-51t50-21h143v-133q-38-28-95-28h-488q-67 0-108 39t-41 106q0 30 2 58t8 61 15 60 24 55 34 45 48 30 62 11q11 0 22-10 44-34 86-51t92-17 92 17 86 51q11 10 22 10 73 0 121-54h-125q-29 0-50-21t-21-50v-107z" horiz-adv-x="1142.9" />
|
media/font/fontello.ttf
CHANGED
Binary file
|
media/font/fontello.woff
CHANGED
Binary file
|
media/font/fontello.woff2
CHANGED
Binary file
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: vasyltech
|
|
3 |
Tags: access control, membership, backend menu, user role, restricted content, security, jwt
|
4 |
Requires at least: 4.0
|
5 |
Tested up to: 5.0.3
|
6 |
-
Stable tag: 5.8.
|
7 |
|
8 |
All you need to manage access to you WordPress websites on frontend, backend and API levels for any role, user or visitors.
|
9 |
|
@@ -79,6 +79,15 @@ https://www.youtube.com/watch?v=mj5Xa_Wc16Y
|
|
79 |
|
80 |
== Changelog ==
|
81 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
= 5.8.2 =
|
83 |
* Fixed numerous bugs with access control for media
|
84 |
* Added support for change_own_password capability
|
3 |
Tags: access control, membership, backend menu, user role, restricted content, security, jwt
|
4 |
Requires at least: 4.0
|
5 |
Tested up to: 5.0.3
|
6 |
+
Stable tag: 5.8.3
|
7 |
|
8 |
All you need to manage access to you WordPress websites on frontend, backend and API levels for any role, user or visitors.
|
9 |
|
79 |
|
80 |
== Changelog ==
|
81 |
|
82 |
+
= 5.8.3 =
|
83 |
+
* Fixed the bug with multi-lingual support
|
84 |
+
* Fixed the bug with LIMIT option that escaped quotes in the message
|
85 |
+
* Fixed the bug with managing access to Access Policies
|
86 |
+
* Added support for aam_edit_policy, aam_read_policy, aam_delete_policy, aam_delete_policies, aam_edit_policies, aam_edit_other_policies, aam_publish_policies capabilities
|
87 |
+
* Refactored Default Category functionality (moved it to Plus Package extension)
|
88 |
+
* Added support for the nav_menu_meta_box_object hook to filter posts on Menu Builder page
|
89 |
+
* Extend Access Policy with more features
|
90 |
+
|
91 |
= 5.8.2 =
|
92 |
* Fixed numerous bugs with access control for media
|
93 |
* Added support for change_own_password capability
|