Version Description
- Added link Access to category list
- Added shortcode [aam] to manage access to the post's content
- Moved AAM Redirect extension to the basic AAM package
- Moved AAM Login Redirect extension to the basic AAM package
- Moved AAM Content Teaser extension to the basic AAM package
- Set single password for any post or posts in any category or post type
- Added two protection mechanism from login brute force attacks
- Added double authentication mechanism
- Few minor core bug fixings
- Improved multisite support
- Improved caching mechanism
Download this release
Release Info
Developer | vasyl_m |
Plugin | Advanced Access Manager |
Version | 4.0 |
Comparing to | |
See all releases |
Code changes from version 3.9.5.1 to 4.0
- Application/Backend/Feature/Extension.php +40 -96
- Application/Backend/Feature/LoginRedirect.php +23 -18
- Application/Backend/Feature/Post.php +17 -11
- Application/Backend/Feature/Redirect.php +23 -18
- Application/Backend/Feature/Role.php +5 -1
- Application/Backend/Feature/Security.php +83 -0
- Application/Backend/Feature/Teaser.php +23 -18
- Application/Backend/Feature/Utility.php +25 -12
- Application/Backend/Filter.php +23 -10
- Application/Backend/Manager.php +37 -39
- Application/Backend/View.php +2 -1
- Application/Backend/View/CodePinch.php +16 -17
- Application/Backend/View/PostOptionList.php +5 -0
- Application/Backend/View/ProductList.php +0 -117
- Application/Backend/View/SecurityOptionList.php +26 -0
- Application/Backend/View/UtilityOptionList.php +41 -0
- Application/Backend/phtml/contact.phtml +1 -1
- Application/Backend/phtml/extension.phtml +10 -33
- Application/Backend/phtml/index.phtml +28 -25
- Application/Backend/phtml/main-panel.phtml +1 -0
- Application/Backend/phtml/object/login-redirect.phtml +54 -50
- Application/Backend/phtml/object/menu.phtml +0 -8
- Application/Backend/phtml/object/metabox.phtml +1 -1
- Application/Backend/phtml/object/post.phtml +33 -18
- Application/Backend/phtml/object/redirect.phtml +97 -93
- Application/Backend/phtml/object/teaser.phtml +23 -19
- Application/Backend/phtml/security.phtml +40 -0
- Application/Backend/phtml/utility.phtml +16 -65
- Application/Core/API.php +32 -23
- Application/Core/Cache.php +13 -6
- Application/Core/Compatibility.php +124 -0
- Application/Core/Config.php +29 -3
- Application/Core/Object/LoginRedirect.php +106 -0
- Application/Core/Object/Post.php +33 -5
- Application/Core/Object/Redirect.php +127 -0
- Application/Core/Object/Teaser.php +124 -0
- Application/Core/Repository.php +0 -321
- Application/Core/Subject.php +3 -3
- Application/Core/Subject/Default.php +19 -1
- Application/Core/Subject/Role.php +1 -1
- Application/Core/Subject/User.php +1 -8
- Application/Core/Subject/Visitor.php +8 -0
- Application/Extension/Compatibility.php +78 -0
- Application/Extension/List.php +78 -0
- Application/Extension/Repository.php +295 -0
- Application/{Core → Extension}/Server.php +21 -13
- Application/Frontend/Manager.php +203 -60
- Application/Shortcode/Factory.php +58 -0
- Application/Shortcode/Strategy/Content.php +125 -0
- Application/Shortcode/Strategy/Interface.php +31 -0
- Application/Shortcode/Strategy/Login.php +81 -0
- Lang/advanced-access-manager-en_US.mo +0 -0
- Lang/advanced-access-manager-en_US.po +481 -276
- Lang/advanced-access-manager.pot +479 -274
- aam.php +4 -7
- media/css/aam.css +115 -100
- media/js/aam-ui.js +224 -32
- media/js/vendor.js +1 -11
- readme.txt +54 -28
Application/Backend/Feature/Extension.php
CHANGED
@@ -29,33 +29,6 @@ class AAM_Backend_Feature_Extension extends AAM_Backend_Feature_Abstract {
|
|
29 |
return 'extension.phtml';
|
30 |
}
|
31 |
|
32 |
-
/**
|
33 |
-
* Get Product List
|
34 |
-
*
|
35 |
-
* @return array
|
36 |
-
*
|
37 |
-
* @access protected
|
38 |
-
*/
|
39 |
-
protected function getProductList($filter) {
|
40 |
-
static $products = null;
|
41 |
-
|
42 |
-
if (is_null($products)) {
|
43 |
-
$products = require(dirname(__FILE__) . '/../View/ProductList.php');
|
44 |
-
}
|
45 |
-
|
46 |
-
$filtered = array();
|
47 |
-
foreach($products as $product) {
|
48 |
-
if ($product['type'] == $filter) {
|
49 |
-
if (!isset($product['license'])) {
|
50 |
-
$product['license'] = $this->retrieveLicense($product['id']);
|
51 |
-
}
|
52 |
-
$filtered[] = $product;
|
53 |
-
}
|
54 |
-
}
|
55 |
-
|
56 |
-
return $filtered;
|
57 |
-
}
|
58 |
-
|
59 |
/**
|
60 |
* Install an extension
|
61 |
*
|
@@ -66,11 +39,11 @@ class AAM_Backend_Feature_Extension extends AAM_Backend_Feature_Abstract {
|
|
66 |
* @access public
|
67 |
*/
|
68 |
public function install($storedLicense = null) {
|
69 |
-
$repo
|
70 |
$license = AAM_Core_Request::post('license', $storedLicense);
|
71 |
|
72 |
//download the extension from the server first
|
73 |
-
$package =
|
74 |
|
75 |
if (is_wp_error($package)) {
|
76 |
$response = array(
|
@@ -78,14 +51,14 @@ class AAM_Backend_Feature_Extension extends AAM_Backend_Feature_Abstract {
|
|
78 |
);
|
79 |
}elseif ($error = $repo->checkDirectory()) {
|
80 |
$response = $this->installFailureResponse($error, $package);
|
81 |
-
$
|
82 |
} elseif (empty($package->content)) { //any unpredictable scenario
|
83 |
$response = array(
|
84 |
'status' => 'failure',
|
85 |
-
'error' => '
|
86 |
);
|
87 |
} else { //otherwise install the extension
|
88 |
-
$result = $repo->
|
89 |
if (is_wp_error($result)) {
|
90 |
$response = $this->installFailureResponse(
|
91 |
$result->get_error_message(), $package
|
@@ -93,7 +66,7 @@ class AAM_Backend_Feature_Extension extends AAM_Backend_Feature_Abstract {
|
|
93 |
} else {
|
94 |
$response = array('status' => 'success');
|
95 |
}
|
96 |
-
$
|
97 |
}
|
98 |
|
99 |
return json_encode($response);
|
@@ -108,10 +81,10 @@ class AAM_Backend_Feature_Extension extends AAM_Backend_Feature_Abstract {
|
|
108 |
*/
|
109 |
public function update() {
|
110 |
$extension = AAM_Core_Request::post('extension');
|
|
|
111 |
|
112 |
-
$list
|
113 |
-
|
114 |
-
$response = $this->install($list[$extension]);
|
115 |
} else {
|
116 |
$response = json_encode(array(
|
117 |
'status' => 'failure',
|
@@ -127,15 +100,23 @@ class AAM_Backend_Feature_Extension extends AAM_Backend_Feature_Abstract {
|
|
127 |
* @return type
|
128 |
*/
|
129 |
public function check() {
|
130 |
-
|
131 |
-
$response = AAM_Core_Server::check();
|
132 |
-
if (!empty($response)) {
|
133 |
-
AAM_Core_API::updateOption('aam-extension-repository', $response);
|
134 |
-
}
|
135 |
|
136 |
return json_encode(array('status' => 'success'));
|
137 |
}
|
138 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
139 |
/**
|
140 |
* Install extension failure response
|
141 |
*
|
@@ -158,39 +139,6 @@ class AAM_Backend_Feature_Extension extends AAM_Backend_Feature_Abstract {
|
|
158 |
);
|
159 |
}
|
160 |
|
161 |
-
/**
|
162 |
-
* Store the license key
|
163 |
-
*
|
164 |
-
* This is important to have just for the update extension purposes
|
165 |
-
*
|
166 |
-
* @param string $title
|
167 |
-
* @param string $license
|
168 |
-
*
|
169 |
-
* @return void
|
170 |
-
*
|
171 |
-
* @access protected
|
172 |
-
*/
|
173 |
-
protected function storeLicense($title, $license) {
|
174 |
-
//retrieve the installed list of extensions
|
175 |
-
$list = AAM_Core_API::getOption('aam-extension-license', array());
|
176 |
-
$list[$title] = $license;
|
177 |
-
|
178 |
-
//update the extension list
|
179 |
-
AAM_Core_API::updateOption('aam-extension-license', $list);
|
180 |
-
}
|
181 |
-
|
182 |
-
/**
|
183 |
-
*
|
184 |
-
* @param type $title
|
185 |
-
* @return type
|
186 |
-
*/
|
187 |
-
protected function retrieveLicense($title) {
|
188 |
-
//retrieve the installed list of extensions
|
189 |
-
$list = AAM_Core_API::getOption('aam-extension-license', array());
|
190 |
-
|
191 |
-
return (isset($list[$title]) ? $list[$title] : null);
|
192 |
-
}
|
193 |
-
|
194 |
/**
|
195 |
* Register Extension feature
|
196 |
*
|
@@ -199,19 +147,21 @@ class AAM_Backend_Feature_Extension extends AAM_Backend_Feature_Abstract {
|
|
199 |
* @access public
|
200 |
*/
|
201 |
public static function register() {
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
'
|
212 |
-
|
213 |
-
|
214 |
-
|
|
|
|
|
215 |
}
|
216 |
|
217 |
/**
|
@@ -219,21 +169,15 @@ class AAM_Backend_Feature_Extension extends AAM_Backend_Feature_Abstract {
|
|
219 |
* @return int
|
220 |
*/
|
221 |
protected static function getNotification() {
|
222 |
-
$list = AAM_Core_API::getOption('aam-extension-repository', array());
|
223 |
-
$repo = AAM_Core_Repository::getInstance();
|
224 |
$count = 0;
|
225 |
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
foreach($list as $extension) {
|
230 |
-
$status = $repo->extensionStatus($extension->title);
|
231 |
-
if ($status == AAM_Core_Repository::STATUS_UPDATE) {
|
232 |
$count++;
|
233 |
}
|
234 |
}
|
235 |
|
236 |
-
return ($count ? $count : '
|
237 |
}
|
238 |
|
239 |
}
|
29 |
return 'extension.phtml';
|
30 |
}
|
31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
/**
|
33 |
* Install an extension
|
34 |
*
|
39 |
* @access public
|
40 |
*/
|
41 |
public function install($storedLicense = null) {
|
42 |
+
$repo = AAM_Extension_Repository::getInstance();
|
43 |
$license = AAM_Core_Request::post('license', $storedLicense);
|
44 |
|
45 |
//download the extension from the server first
|
46 |
+
$package = AAM_Extension_Server::download($license);
|
47 |
|
48 |
if (is_wp_error($package)) {
|
49 |
$response = array(
|
51 |
);
|
52 |
}elseif ($error = $repo->checkDirectory()) {
|
53 |
$response = $this->installFailureResponse($error, $package);
|
54 |
+
$repo->storeLicense($package, $license);
|
55 |
} elseif (empty($package->content)) { //any unpredictable scenario
|
56 |
$response = array(
|
57 |
'status' => 'failure',
|
58 |
+
'error' => 'Download failure. Please try again or contact us.'
|
59 |
);
|
60 |
} else { //otherwise install the extension
|
61 |
+
$result = $repo->add(base64_decode($package->content));
|
62 |
if (is_wp_error($result)) {
|
63 |
$response = $this->installFailureResponse(
|
64 |
$result->get_error_message(), $package
|
66 |
} else {
|
67 |
$response = array('status' => 'success');
|
68 |
}
|
69 |
+
$repo->storeLicense($package, $license);
|
70 |
}
|
71 |
|
72 |
return json_encode($response);
|
81 |
*/
|
82 |
public function update() {
|
83 |
$extension = AAM_Core_Request::post('extension');
|
84 |
+
$list = AAM_Core_Compatibility::getExtensionList();
|
85 |
|
86 |
+
if (!empty($list[$extension]['license'])) {
|
87 |
+
$response = $this->install($list[$extension]['license']);
|
|
|
88 |
} else {
|
89 |
$response = json_encode(array(
|
90 |
'status' => 'failure',
|
100 |
* @return type
|
101 |
*/
|
102 |
public function check() {
|
103 |
+
AAM_Extension_Repository::getInstance()->check();
|
|
|
|
|
|
|
|
|
104 |
|
105 |
return json_encode(array('status' => 'success'));
|
106 |
}
|
107 |
|
108 |
+
public function getList($type) {
|
109 |
+
$response = array();
|
110 |
+
|
111 |
+
foreach(AAM_Extension_Repository::getInstance()->getList() as $item) {
|
112 |
+
if ($item['type'] == $type) {
|
113 |
+
$response[] = $item;
|
114 |
+
}
|
115 |
+
}
|
116 |
+
|
117 |
+
return $response;
|
118 |
+
}
|
119 |
+
|
120 |
/**
|
121 |
* Install extension failure response
|
122 |
*
|
139 |
);
|
140 |
}
|
141 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
142 |
/**
|
143 |
* Register Extension feature
|
144 |
*
|
147 |
* @access public
|
148 |
*/
|
149 |
public static function register() {
|
150 |
+
if (is_main_site()) {
|
151 |
+
$cap = AAM_Core_Config::get(self::getAccessOption(), 'administrator');
|
152 |
+
|
153 |
+
AAM_Backend_Feature::registerFeature((object) array(
|
154 |
+
'uid' => 'extension',
|
155 |
+
'position' => 999,
|
156 |
+
'title' => __('Extensions', AAM_KEY),
|
157 |
+
'capability' => $cap,
|
158 |
+
'notification' => self::getNotification(),
|
159 |
+
'subjects' => array(
|
160 |
+
'AAM_Core_Subject_Role'
|
161 |
+
),
|
162 |
+
'view' => __CLASS__
|
163 |
+
));
|
164 |
+
}
|
165 |
}
|
166 |
|
167 |
/**
|
169 |
* @return int
|
170 |
*/
|
171 |
protected static function getNotification() {
|
|
|
|
|
172 |
$count = 0;
|
173 |
|
174 |
+
foreach(AAM_Extension_Repository::getInstance()->getList() as $extension) {
|
175 |
+
if ($extension['status'] == AAM_Extension_Repository::STATUS_UPDATE) {
|
|
|
|
|
|
|
|
|
176 |
$count++;
|
177 |
}
|
178 |
}
|
179 |
|
180 |
+
return ($count ? $count : '');
|
181 |
}
|
182 |
|
183 |
}
|
Application/Backend/Feature/LoginRedirect.php
CHANGED
@@ -19,15 +19,10 @@ class AAM_Backend_Feature_LoginRedirect extends AAM_Backend_Feature_Abstract {
|
|
19 |
*
|
20 |
*/
|
21 |
public function save() {
|
22 |
-
$param
|
23 |
-
$value
|
24 |
-
$subject = AAM_Backend_View::getSubject();
|
25 |
|
26 |
-
|
27 |
-
AAM_Core_Config::set($param, $value);
|
28 |
-
} else {
|
29 |
-
do_action('aam-login-redirect-save-action', $subject, $param, $value);
|
30 |
-
}
|
31 |
|
32 |
return json_encode(array('status' => 'success'));
|
33 |
}
|
@@ -37,7 +32,8 @@ class AAM_Backend_Feature_LoginRedirect extends AAM_Backend_Feature_Abstract {
|
|
37 |
* @return type
|
38 |
*/
|
39 |
public function reset() {
|
40 |
-
|
|
|
41 |
|
42 |
return json_encode(array('status' => 'success'));
|
43 |
}
|
@@ -50,22 +46,31 @@ class AAM_Backend_Feature_LoginRedirect extends AAM_Backend_Feature_Abstract {
|
|
50 |
return (AAM_Backend_View::getSubject()->getUID() == 'default');
|
51 |
}
|
52 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
/**
|
54 |
*
|
55 |
* @param type $option
|
56 |
* @return type
|
57 |
*/
|
58 |
public function getOption($option, $default = null) {
|
59 |
-
$
|
60 |
-
|
61 |
-
if (!$this->isDefault()) {
|
62 |
-
$subject = AAM_Backend_View::getSubject();
|
63 |
-
$value = apply_filters(
|
64 |
-
'aam-login-redirect-option-filter', $value, $option, $subject
|
65 |
-
);
|
66 |
-
}
|
67 |
|
68 |
-
return $value;
|
69 |
}
|
70 |
|
71 |
/**
|
19 |
*
|
20 |
*/
|
21 |
public function save() {
|
22 |
+
$param = AAM_Core_Request::post('param');
|
23 |
+
$value = AAM_Core_Request::post('value');
|
|
|
24 |
|
25 |
+
AAM_Backend_View::getSubject()->getObject('loginRedirect')->save($param, $value);
|
|
|
|
|
|
|
|
|
26 |
|
27 |
return json_encode(array('status' => 'success'));
|
28 |
}
|
32 |
* @return type
|
33 |
*/
|
34 |
public function reset() {
|
35 |
+
$subject = AAM_Backend_View::getSubject();
|
36 |
+
$subject->getObject('loginRedirect')->reset();
|
37 |
|
38 |
return json_encode(array('status' => 'success'));
|
39 |
}
|
46 |
return (AAM_Backend_View::getSubject()->getUID() == 'default');
|
47 |
}
|
48 |
|
49 |
+
/**
|
50 |
+
* Check inheritance status
|
51 |
+
*
|
52 |
+
* Check if redirect settings are overwritten
|
53 |
+
*
|
54 |
+
* @return boolean
|
55 |
+
*
|
56 |
+
* @access protected
|
57 |
+
*/
|
58 |
+
protected function isOverwritten() {
|
59 |
+
$object = AAM_Backend_View::getSubject()->getObject('loginRedirect');
|
60 |
+
|
61 |
+
return $object->isOverwritten();
|
62 |
+
}
|
63 |
+
|
64 |
/**
|
65 |
*
|
66 |
* @param type $option
|
67 |
* @return type
|
68 |
*/
|
69 |
public function getOption($option, $default = null) {
|
70 |
+
$object = AAM_Backend_View::getSubject()->getObject('loginRedirect');
|
71 |
+
$value = $object->get($option);
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
|
73 |
+
return (!is_null($value) ? $value : $default);
|
74 |
}
|
75 |
|
76 |
/**
|
Application/Backend/Feature/Post.php
CHANGED
@@ -55,7 +55,7 @@ class AAM_Backend_Feature_Post extends AAM_Backend_Feature_Abstract {
|
|
55 |
null,
|
56 |
'type',
|
57 |
$type->labels->name,
|
58 |
-
'drilldown,manage'
|
59 |
);
|
60 |
}
|
61 |
|
@@ -115,7 +115,7 @@ class AAM_Backend_Feature_Post extends AAM_Backend_Feature_Abstract {
|
|
115 |
get_edit_post_link($record->ID, 'link'),
|
116 |
'post',
|
117 |
$record->post_title,
|
118 |
-
'manage,edit'
|
119 |
);
|
120 |
} else { //term
|
121 |
$response['data'][] = array(
|
@@ -123,7 +123,7 @@ class AAM_Backend_Feature_Post extends AAM_Backend_Feature_Abstract {
|
|
123 |
get_edit_term_link($record->term_id, $record->taxonomy),
|
124 |
'term',
|
125 |
$record->name,
|
126 |
-
'manage,edit'
|
127 |
);
|
128 |
}
|
129 |
}
|
@@ -255,9 +255,7 @@ class AAM_Backend_Feature_Post extends AAM_Backend_Feature_Abstract {
|
|
255 |
$id = AAM_Core_Request::post('objectId', null);
|
256 |
|
257 |
$param = AAM_Core_Request::post('param');
|
258 |
-
$value =
|
259 |
-
AAM_Core_Request::post('value'), FILTER_VALIDATE_BOOLEAN
|
260 |
-
);
|
261 |
|
262 |
//clear cache
|
263 |
AAM_Core_Cache::clear();
|
@@ -353,14 +351,22 @@ class AAM_Backend_Feature_Post extends AAM_Backend_Feature_Abstract {
|
|
353 |
*
|
354 |
* @return type
|
355 |
*/
|
356 |
-
public function
|
357 |
-
$
|
|
|
|
|
|
|
358 |
|
359 |
-
if ($id) {
|
360 |
-
|
|
|
|
|
|
|
|
|
|
|
361 |
}
|
362 |
|
363 |
-
return
|
364 |
}
|
365 |
|
366 |
/**
|
55 |
null,
|
56 |
'type',
|
57 |
$type->labels->name,
|
58 |
+
apply_filters('aam-type-row-actions-filter', 'drilldown,manage', $type)
|
59 |
);
|
60 |
}
|
61 |
|
115 |
get_edit_post_link($record->ID, 'link'),
|
116 |
'post',
|
117 |
$record->post_title,
|
118 |
+
apply_filters('aam-post-row-actions-filter', 'manage,edit', $record)
|
119 |
);
|
120 |
} else { //term
|
121 |
$response['data'][] = array(
|
123 |
get_edit_term_link($record->term_id, $record->taxonomy),
|
124 |
'term',
|
125 |
$record->name,
|
126 |
+
apply_filters('aam-term-row-actions-filter', 'manage,edit', $record)
|
127 |
);
|
128 |
}
|
129 |
}
|
255 |
$id = AAM_Core_Request::post('objectId', null);
|
256 |
|
257 |
$param = AAM_Core_Request::post('param');
|
258 |
+
$value = AAM_Core_Request::post('value');
|
|
|
|
|
259 |
|
260 |
//clear cache
|
261 |
AAM_Core_Cache::clear();
|
351 |
*
|
352 |
* @return type
|
353 |
*/
|
354 |
+
public function getCurrentObject() {
|
355 |
+
$object = (object) array(
|
356 |
+
'id' => urldecode(AAM_Core_Request::post('oid')),
|
357 |
+
'type' => AAM_Core_Request::post('otype')
|
358 |
+
);
|
359 |
|
360 |
+
if ($object->id) {
|
361 |
+
if (strpos($object->id, '|') !== false) { //term
|
362 |
+
$part = explode('|', $object->id);
|
363 |
+
$object->term = get_term($part[0], $part[1]);
|
364 |
+
} else {
|
365 |
+
$object->post = get_post($object->id);
|
366 |
+
}
|
367 |
}
|
368 |
|
369 |
+
return $object;
|
370 |
}
|
371 |
|
372 |
/**
|
Application/Backend/Feature/Redirect.php
CHANGED
@@ -19,15 +19,10 @@ class AAM_Backend_Feature_Redirect extends AAM_Backend_Feature_Abstract {
|
|
19 |
*
|
20 |
*/
|
21 |
public function save() {
|
22 |
-
$param
|
23 |
-
$value
|
24 |
-
$subject = AAM_Backend_View::getSubject();
|
25 |
|
26 |
-
|
27 |
-
AAM_Core_Config::set($param, $value);
|
28 |
-
} else {
|
29 |
-
do_action('aam-action-redirect-save', $subject, $param, $value);
|
30 |
-
}
|
31 |
|
32 |
return json_encode(array('status' => 'success'));
|
33 |
}
|
@@ -37,7 +32,8 @@ class AAM_Backend_Feature_Redirect extends AAM_Backend_Feature_Abstract {
|
|
37 |
* @return type
|
38 |
*/
|
39 |
public function reset() {
|
40 |
-
|
|
|
41 |
|
42 |
return json_encode(array('status' => 'success'));
|
43 |
}
|
@@ -50,22 +46,31 @@ class AAM_Backend_Feature_Redirect extends AAM_Backend_Feature_Abstract {
|
|
50 |
return AAM_Backend_View::getSubject()->getUID() == 'default';
|
51 |
}
|
52 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
/**
|
54 |
*
|
55 |
* @param type $option
|
56 |
* @return type
|
57 |
*/
|
58 |
public function getOption($option, $default = null) {
|
59 |
-
$
|
60 |
-
|
61 |
-
if (!$this->isDefault()) {
|
62 |
-
$subject = AAM_Backend_View::getSubject();
|
63 |
-
$value = apply_filters(
|
64 |
-
'aam-filter-redirect-option', $value, $option, $subject
|
65 |
-
);
|
66 |
-
}
|
67 |
|
68 |
-
return $value;
|
69 |
}
|
70 |
|
71 |
/**
|
19 |
*
|
20 |
*/
|
21 |
public function save() {
|
22 |
+
$param = AAM_Core_Request::post('param');
|
23 |
+
$value = AAM_Core_Request::post('value');
|
|
|
24 |
|
25 |
+
AAM_Backend_View::getSubject()->getObject('redirect')->save($param, $value);
|
|
|
|
|
|
|
|
|
26 |
|
27 |
return json_encode(array('status' => 'success'));
|
28 |
}
|
32 |
* @return type
|
33 |
*/
|
34 |
public function reset() {
|
35 |
+
$subject = AAM_Backend_View::getSubject();
|
36 |
+
$subject->getObject('redirect')->reset();
|
37 |
|
38 |
return json_encode(array('status' => 'success'));
|
39 |
}
|
46 |
return AAM_Backend_View::getSubject()->getUID() == 'default';
|
47 |
}
|
48 |
|
49 |
+
/**
|
50 |
+
* Check inheritance status
|
51 |
+
*
|
52 |
+
* Check if redirect settings are overwritten
|
53 |
+
*
|
54 |
+
* @return boolean
|
55 |
+
*
|
56 |
+
* @access protected
|
57 |
+
*/
|
58 |
+
protected function isOverwritten() {
|
59 |
+
$object = AAM_Backend_View::getSubject()->getObject('redirect');
|
60 |
+
|
61 |
+
return $object->isOverwritten();
|
62 |
+
}
|
63 |
+
|
64 |
/**
|
65 |
*
|
66 |
* @param type $option
|
67 |
* @return type
|
68 |
*/
|
69 |
public function getOption($option, $default = null) {
|
70 |
+
$object = AAM_Backend_View::getSubject()->getObject('redirect');
|
71 |
+
$value = $object->get($option);
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
|
73 |
+
return (!is_null($value) ? $value : $default);
|
74 |
}
|
75 |
|
76 |
/**
|
Application/Backend/Feature/Role.php
CHANGED
@@ -61,7 +61,11 @@ class AAM_Backend_Feature_Role {
|
|
61 |
$id,
|
62 |
$uc,
|
63 |
translate_user_role($data['name']),
|
64 |
-
|
|
|
|
|
|
|
|
|
65 |
AAM_Core_API::maxLevel($data['capabilities'])
|
66 |
);
|
67 |
}
|
61 |
$id,
|
62 |
$uc,
|
63 |
translate_user_role($data['name']),
|
64 |
+
apply_filters(
|
65 |
+
'aam-role-row-actions-filter',
|
66 |
+
'manage,edit,clone' . ($uc || !$allow ? '' : ',delete'),
|
67 |
+
$data
|
68 |
+
),
|
69 |
AAM_Core_API::maxLevel($data['capabilities'])
|
70 |
);
|
71 |
}
|
Application/Backend/Feature/Security.php
ADDED
@@ -0,0 +1,83 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
* Backend security manager
|
12 |
+
*
|
13 |
+
* @package AAM
|
14 |
+
* @author Vasyl Martyniuk <vasyl@vasyltech.com>
|
15 |
+
*/
|
16 |
+
class AAM_Backend_Feature_Security extends AAM_Backend_Feature_Abstract {
|
17 |
+
|
18 |
+
/**
|
19 |
+
* @inheritdoc
|
20 |
+
*/
|
21 |
+
public static function getAccessOption() {
|
22 |
+
return 'feature.security.capability';
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* @inheritdoc
|
27 |
+
*/
|
28 |
+
public static function getTemplate() {
|
29 |
+
return 'security.phtml';
|
30 |
+
}
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Save AAM utility options
|
34 |
+
*
|
35 |
+
* @return string
|
36 |
+
*
|
37 |
+
* @access public
|
38 |
+
*/
|
39 |
+
public function save() {
|
40 |
+
$param = AAM_Core_Request::post('param');
|
41 |
+
$value = stripslashes(AAM_Core_Request::post('value'));
|
42 |
+
|
43 |
+
AAM_Core_Config::set($param, $value);
|
44 |
+
|
45 |
+
return json_encode(array('status' => 'success'));
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
*
|
50 |
+
* @return type
|
51 |
+
*/
|
52 |
+
public function getOptionList() {
|
53 |
+
$filename = dirname(__FILE__) . '/../View/SecurityOptionList.php';
|
54 |
+
$options = include $filename;
|
55 |
+
|
56 |
+
return apply_filters('aam-security-option-list-filter', $options);
|
57 |
+
}
|
58 |
+
|
59 |
+
/**
|
60 |
+
* Register Contact/Hire feature
|
61 |
+
*
|
62 |
+
* @return void
|
63 |
+
*
|
64 |
+
* @access public
|
65 |
+
*/
|
66 |
+
public static function register() {
|
67 |
+
if (is_main_site()) {
|
68 |
+
$cap = AAM_Core_Config::get(self::getAccessOption(), 'administrator');
|
69 |
+
|
70 |
+
AAM_Backend_Feature::registerFeature((object) array(
|
71 |
+
'uid' => 'security',
|
72 |
+
'position' => 90,
|
73 |
+
'title' => __('Security', AAM_KEY),
|
74 |
+
'capability' => $cap,
|
75 |
+
'subjects' => array(
|
76 |
+
'AAM_Core_Subject_Role'
|
77 |
+
),
|
78 |
+
'view' => __CLASS__
|
79 |
+
));
|
80 |
+
}
|
81 |
+
}
|
82 |
+
|
83 |
+
}
|
Application/Backend/Feature/Teaser.php
CHANGED
@@ -19,15 +19,10 @@ class AAM_Backend_Feature_Teaser extends AAM_Backend_Feature_Abstract {
|
|
19 |
*
|
20 |
*/
|
21 |
public function save() {
|
22 |
-
$param
|
23 |
-
$value
|
24 |
-
$subject = AAM_Backend_View::getSubject();
|
25 |
|
26 |
-
|
27 |
-
AAM_Core_Config::set($param, $value);
|
28 |
-
} else {
|
29 |
-
do_action('aam-action-teaser-save', $subject, $param, $value);
|
30 |
-
}
|
31 |
|
32 |
return json_encode(array('status' => 'success'));
|
33 |
}
|
@@ -37,7 +32,8 @@ class AAM_Backend_Feature_Teaser extends AAM_Backend_Feature_Abstract {
|
|
37 |
* @return type
|
38 |
*/
|
39 |
public function reset() {
|
40 |
-
|
|
|
41 |
|
42 |
return json_encode(array('status' => 'success'));
|
43 |
}
|
@@ -50,22 +46,31 @@ class AAM_Backend_Feature_Teaser extends AAM_Backend_Feature_Abstract {
|
|
50 |
return (AAM_Backend_View::getSubject()->getUID() == 'default');
|
51 |
}
|
52 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
/**
|
54 |
*
|
55 |
* @param type $option
|
56 |
* @return type
|
57 |
*/
|
58 |
public function getOption($option, $default = null) {
|
59 |
-
$
|
60 |
-
|
61 |
-
if (!$this->isDefault()) {
|
62 |
-
$subject = AAM_Backend_View::getSubject();
|
63 |
-
$value = apply_filters(
|
64 |
-
'aam-filter-teaser-option', $value, $option, $subject
|
65 |
-
);
|
66 |
-
}
|
67 |
|
68 |
-
return $value;
|
69 |
}
|
70 |
|
71 |
/**
|
19 |
*
|
20 |
*/
|
21 |
public function save() {
|
22 |
+
$param = AAM_Core_Request::post('param');
|
23 |
+
$value = AAM_Core_Request::post('value');
|
|
|
24 |
|
25 |
+
AAM_Backend_View::getSubject()->getObject('teaser')->save($param, $value);
|
|
|
|
|
|
|
|
|
26 |
|
27 |
return json_encode(array('status' => 'success'));
|
28 |
}
|
32 |
* @return type
|
33 |
*/
|
34 |
public function reset() {
|
35 |
+
$subject = AAM_Backend_View::getSubject();
|
36 |
+
$subject->getObject('teaser')->reset();
|
37 |
|
38 |
return json_encode(array('status' => 'success'));
|
39 |
}
|
46 |
return (AAM_Backend_View::getSubject()->getUID() == 'default');
|
47 |
}
|
48 |
|
49 |
+
/**
|
50 |
+
* Check inheritance status
|
51 |
+
*
|
52 |
+
* Check if teaser settings are overwritten
|
53 |
+
*
|
54 |
+
* @return boolean
|
55 |
+
*
|
56 |
+
* @access protected
|
57 |
+
*/
|
58 |
+
protected function isOverwritten() {
|
59 |
+
$object = AAM_Backend_View::getSubject()->getObject('teaser');
|
60 |
+
|
61 |
+
return $object->isOverwritten();
|
62 |
+
}
|
63 |
+
|
64 |
/**
|
65 |
*
|
66 |
* @param type $option
|
67 |
* @return type
|
68 |
*/
|
69 |
public function getOption($option, $default = null) {
|
70 |
+
$object = AAM_Backend_View::getSubject()->getObject('teaser');
|
71 |
+
$value = $object->get($option);
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
|
73 |
+
return (!is_null($value) ? $value : $default);
|
74 |
}
|
75 |
|
76 |
/**
|
Application/Backend/Feature/Utility.php
CHANGED
@@ -29,6 +29,17 @@ class AAM_Backend_Feature_Utility extends AAM_Backend_Feature_Abstract {
|
|
29 |
return 'utility.phtml';
|
30 |
}
|
31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
/**
|
33 |
* Save AAM utility options
|
34 |
*
|
@@ -83,18 +94,20 @@ class AAM_Backend_Feature_Utility extends AAM_Backend_Feature_Abstract {
|
|
83 |
* @access public
|
84 |
*/
|
85 |
public static function register() {
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
'
|
95 |
-
|
96 |
-
|
97 |
-
|
|
|
|
|
98 |
}
|
99 |
|
100 |
}
|
29 |
return 'utility.phtml';
|
30 |
}
|
31 |
|
32 |
+
/**
|
33 |
+
*
|
34 |
+
* @return type
|
35 |
+
*/
|
36 |
+
public function getUtilityOptionList() {
|
37 |
+
$filename = dirname(__FILE__) . '/../View/UtilityOptionList.php';
|
38 |
+
$options = include $filename;
|
39 |
+
|
40 |
+
return apply_filters('aam-utility-option-list-filter', $options);
|
41 |
+
}
|
42 |
+
|
43 |
/**
|
44 |
* Save AAM utility options
|
45 |
*
|
94 |
* @access public
|
95 |
*/
|
96 |
public static function register() {
|
97 |
+
if (is_main_site()) {
|
98 |
+
$cap = AAM_Core_Config::get(self::getAccessOption(), 'administrator');
|
99 |
+
|
100 |
+
AAM_Backend_Feature::registerFeature((object) array(
|
101 |
+
'uid' => 'utilities',
|
102 |
+
'position' => 100,
|
103 |
+
'title' => __('Utilities', AAM_KEY),
|
104 |
+
'capability' => $cap,
|
105 |
+
'subjects' => array(
|
106 |
+
'AAM_Core_Subject_Role'
|
107 |
+
),
|
108 |
+
'view' => __CLASS__
|
109 |
+
));
|
110 |
+
}
|
111 |
}
|
112 |
|
113 |
}
|
Application/Backend/Filter.php
CHANGED
@@ -55,9 +55,11 @@ class AAM_Backend_Filter {
|
|
55 |
add_filter('wp_die_handler', array($this, 'backendDie'));
|
56 |
|
57 |
//add post filter for LIST restriction
|
58 |
-
|
59 |
-
|
60 |
-
|
|
|
|
|
61 |
}
|
62 |
|
63 |
//some additional filter for user capabilities
|
@@ -302,10 +304,19 @@ class AAM_Backend_Filter {
|
|
302 |
if ($this->skip === false) {
|
303 |
$filtered = array();
|
304 |
|
305 |
-
|
306 |
-
|
307 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
308 |
}
|
|
|
309 |
}
|
310 |
|
311 |
if (isset($query->query_vars['post__not_in'])) {
|
@@ -370,10 +381,12 @@ class AAM_Backend_Filter {
|
|
370 |
switch($args[0]) {
|
371 |
case 'edit_post':
|
372 |
$object = AAM::getUser()->getObject('post', $args[2]);
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
$
|
|
|
|
|
377 |
}
|
378 |
break;
|
379 |
|
55 |
add_filter('wp_die_handler', array($this, 'backendDie'));
|
56 |
|
57 |
//add post filter for LIST restriction
|
58 |
+
if (!AAM::isAAM()) {
|
59 |
+
add_filter('the_posts', array($this, 'thePosts'), 999, 2);
|
60 |
+
if (AAM_Core_Config::get('large-post-number', false)) {
|
61 |
+
add_action('pre_get_posts', array($this, 'preparePostQuery'));
|
62 |
+
}
|
63 |
}
|
64 |
|
65 |
//some additional filter for user capabilities
|
304 |
if ($this->skip === false) {
|
305 |
$filtered = array();
|
306 |
|
307 |
+
if (AAM_Core_Cache::has('post__not_in')) {
|
308 |
+
$filtered = AAM_Core_Cache::get('post__not_in');
|
309 |
+
} else {
|
310 |
+
foreach ($this->fetchPosts($query) as $id) {
|
311 |
+
$object = AAM::getUser()->getObject('post', $id);
|
312 |
+
$list = $object->has('backend.list');
|
313 |
+
$others = $object->has('backend.list_others');
|
314 |
+
|
315 |
+
if ($list || ($others && !$this->isAuthor($object->getPost()))) {
|
316 |
+
$filtered[] = $id;
|
317 |
+
}
|
318 |
}
|
319 |
+
AAM_Core_Cache::set(AAM::getUser(), 'post__not_in', $filtered);
|
320 |
}
|
321 |
|
322 |
if (isset($query->query_vars['post__not_in'])) {
|
381 |
switch($args[0]) {
|
382 |
case 'edit_post':
|
383 |
$object = AAM::getUser()->getObject('post', $args[2]);
|
384 |
+
if ($object->getPost()->post_status != 'auto-draft') {
|
385 |
+
$edit = $object->has('backend.edit');
|
386 |
+
$others = $object->has('backend.edit_others');
|
387 |
+
if ($edit || ($others && !$this->isAuthor($object->getPost()))) {
|
388 |
+
$allCaps = $this->restrictPostActions($allCaps, $metaCaps);
|
389 |
+
}
|
390 |
}
|
391 |
break;
|
392 |
|
Application/Backend/Manager.php
CHANGED
@@ -70,14 +70,19 @@ class AAM_Backend_Manager {
|
|
70 |
add_action('profile_update', 'AAM_Core_Cache::clear');
|
71 |
|
72 |
//term & post CRUD hooks
|
73 |
-
|
74 |
-
|
75 |
-
|
|
|
|
|
76 |
|
77 |
//extend post inline actions
|
78 |
add_filter('page_row_actions', array($this, 'postRowActions'), 10, 2);
|
79 |
add_filter('post_row_actions', array($this, 'postRowActions'), 10, 2);
|
80 |
|
|
|
|
|
|
|
81 |
//check extension version
|
82 |
$this->checkExtensionList();
|
83 |
|
@@ -129,52 +134,25 @@ class AAM_Backend_Manager {
|
|
129 |
*
|
130 |
*/
|
131 |
protected function checkExtensionList() {
|
132 |
-
$list =
|
133 |
|
134 |
-
foreach($list as $
|
135 |
-
if ($
|
136 |
AAM_Core_Console::add(
|
137 |
sprintf(
|
138 |
__('Extension %s has new update available for download.'),
|
139 |
-
$
|
140 |
)
|
141 |
);
|
142 |
-
}
|
143 |
-
if (!empty($extension->violation) && ($extension->status != AAM_Core_Repository::STATUS_DOWNLOAD)) {
|
144 |
AAM_Core_Console::add(
|
145 |
sprintf(
|
146 |
-
__('
|
147 |
-
$
|
148 |
)
|
149 |
);
|
150 |
}
|
151 |
}
|
152 |
-
|
153 |
-
//TODO - Remove in Dec 2016
|
154 |
-
$this->checkRedundantExtensions();
|
155 |
-
}
|
156 |
-
|
157 |
-
/**
|
158 |
-
* @todo Remove in Feb 2016
|
159 |
-
*/
|
160 |
-
protected function checkRedundantExtensions() {
|
161 |
-
$basedir = AAM_Core_Repository::getInstance()->getBasedir();
|
162 |
-
|
163 |
-
//iterate through each active extension and load it
|
164 |
-
if (file_exists($basedir)) {
|
165 |
-
foreach (scandir($basedir) as $extension) {
|
166 |
-
if (!in_array($extension, array('.', '..'))) {
|
167 |
-
if (!preg_match('/^[a-z]{1}[a-z\-]+$/', $extension)) {
|
168 |
-
AAM_Core_Console::add(
|
169 |
-
sprintf(
|
170 |
-
AAM_Backend_View_Helper::preparePhrase('Please manually remove [%s] and re-install the extension if necessary', 'b'),
|
171 |
-
$basedir . '/' . $extension
|
172 |
-
)
|
173 |
-
);
|
174 |
-
}
|
175 |
-
}
|
176 |
-
}
|
177 |
-
}
|
178 |
}
|
179 |
|
180 |
/**
|
@@ -280,7 +258,27 @@ class AAM_Backend_Manager {
|
|
280 |
$cap = AAM_Core_Config::get('page.capability', 'administrator');
|
281 |
|
282 |
if (AAM::getUser()->hasCapability($cap)) {
|
283 |
-
$url = admin_url('admin.php?page=aam&oid=' . $post->ID . '#post');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
284 |
|
285 |
$actions['aam'] = '<a href="' . $url . '" target="_blank">';
|
286 |
$actions['aam'] .= __('Access', AAM_KEY) . '</a>';
|
@@ -486,7 +484,7 @@ class AAM_Backend_Manager {
|
|
486 |
|
487 |
//clean buffer to make sure that nothing messing around with system
|
488 |
while (@ob_end_clean()){}
|
489 |
-
|
490 |
//process ajax request
|
491 |
$cap = AAM_Core_Config::get('page.capability', 'administrator');
|
492 |
|
70 |
add_action('profile_update', 'AAM_Core_Cache::clear');
|
71 |
|
72 |
//term & post CRUD hooks
|
73 |
+
if (AAM_Core_Config::get('cache-auto-clear', true)) {
|
74 |
+
add_action('delete_term', 'AAM_Core_Cache::clear');
|
75 |
+
add_action('edited_term', 'AAM_Core_Cache::clear');
|
76 |
+
add_action('save_post', 'AAM_Core_Cache::clear');
|
77 |
+
}
|
78 |
|
79 |
//extend post inline actions
|
80 |
add_filter('page_row_actions', array($this, 'postRowActions'), 10, 2);
|
81 |
add_filter('post_row_actions', array($this, 'postRowActions'), 10, 2);
|
82 |
|
83 |
+
//extend term inline actions
|
84 |
+
add_filter('tag_row_actions', array($this, 'tagRowActions'), 10, 2);
|
85 |
+
|
86 |
//check extension version
|
87 |
$this->checkExtensionList();
|
88 |
|
134 |
*
|
135 |
*/
|
136 |
protected function checkExtensionList() {
|
137 |
+
$list = AAM_Extension_Repository::getInstance()->getList();
|
138 |
|
139 |
+
foreach($list as $item) {
|
140 |
+
if ($item['status'] == AAM_Extension_Repository::STATUS_UPDATE) {
|
141 |
AAM_Core_Console::add(
|
142 |
sprintf(
|
143 |
__('Extension %s has new update available for download.'),
|
144 |
+
$item['title']
|
145 |
)
|
146 |
);
|
147 |
+
}elseif ($item['status'] == AAM_Extension_Repository::STATUS_INACTIVE) {
|
|
|
148 |
AAM_Core_Console::add(
|
149 |
sprintf(
|
150 |
+
__('License violation for %s extension. Enter valid license on the Extensions tab or contact us immediately.'),
|
151 |
+
$item['title']
|
152 |
)
|
153 |
);
|
154 |
}
|
155 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
156 |
}
|
157 |
|
158 |
/**
|
258 |
$cap = AAM_Core_Config::get('page.capability', 'administrator');
|
259 |
|
260 |
if (AAM::getUser()->hasCapability($cap)) {
|
261 |
+
$url = admin_url('admin.php?page=aam&oid=' . $post->ID . '&otype=post#post');
|
262 |
+
|
263 |
+
$actions['aam'] = '<a href="' . $url . '" target="_blank">';
|
264 |
+
$actions['aam'] .= __('Access', AAM_KEY) . '</a>';
|
265 |
+
}
|
266 |
+
|
267 |
+
return $actions;
|
268 |
+
}
|
269 |
+
|
270 |
+
/**
|
271 |
+
*
|
272 |
+
* @param type $actions
|
273 |
+
* @param type $term
|
274 |
+
* @return string
|
275 |
+
*/
|
276 |
+
public function tagRowActions($actions, $term) {
|
277 |
+
$cap = AAM_Core_Config::get('page.capability', 'administrator');
|
278 |
+
|
279 |
+
if (AAM::getUser()->hasCapability($cap)) {
|
280 |
+
$oid = $term->term_id . '|' . $term->taxonomy;
|
281 |
+
$url = admin_url('admin.php?page=aam&oid=' . $oid . '&otype=term#post');
|
282 |
|
283 |
$actions['aam'] = '<a href="' . $url . '" target="_blank">';
|
284 |
$actions['aam'] .= __('Access', AAM_KEY) . '</a>';
|
484 |
|
485 |
//clean buffer to make sure that nothing messing around with system
|
486 |
while (@ob_end_clean()){}
|
487 |
+
|
488 |
//process ajax request
|
489 |
$cap = AAM_Core_Config::get('page.capability', 'administrator');
|
490 |
|
Application/Backend/View.php
CHANGED
@@ -59,6 +59,7 @@ class AAM_Backend_View {
|
|
59 |
AAM_Backend_Feature_Teaser::register();
|
60 |
AAM_Backend_Feature_LoginRedirect::register();
|
61 |
AAM_Backend_Feature_Extension::register();
|
|
|
62 |
AAM_Backend_Feature_Utility::register();
|
63 |
AAM_Backend_Feature_Contact::register();
|
64 |
|
@@ -198,7 +199,7 @@ class AAM_Backend_View {
|
|
198 |
$user = new WP_User(AAM_Core_Request::post('user'));
|
199 |
$max = AAM_Core_API::maxLevel(wp_get_current_user()->allcaps);
|
200 |
|
201 |
-
if ($max
|
202 |
AAM_Core_API::updateOption(
|
203 |
'aam-user-switch-' . $user->ID, get_current_user_id()
|
204 |
);
|
59 |
AAM_Backend_Feature_Teaser::register();
|
60 |
AAM_Backend_Feature_LoginRedirect::register();
|
61 |
AAM_Backend_Feature_Extension::register();
|
62 |
+
AAM_Backend_Feature_Security::register();
|
63 |
AAM_Backend_Feature_Utility::register();
|
64 |
AAM_Backend_Feature_Contact::register();
|
65 |
|
199 |
$user = new WP_User(AAM_Core_Request::post('user'));
|
200 |
$max = AAM_Core_API::maxLevel(wp_get_current_user()->allcaps);
|
201 |
|
202 |
+
if ($max >= AAM_Core_API::maxLevel($user->allcaps)) {
|
203 |
AAM_Core_API::updateOption(
|
204 |
'aam-user-switch-' . $user->ID, get_current_user_id()
|
205 |
);
|
Application/Backend/View/CodePinch.php
CHANGED
@@ -24,11 +24,6 @@
|
|
24 |
*/
|
25 |
class AAM_Backend_View_CodePinch {
|
26 |
|
27 |
-
/**
|
28 |
-
* Plugin's slug
|
29 |
-
*/
|
30 |
-
const SLUG = 'WP Error Fix';
|
31 |
-
|
32 |
/**
|
33 |
* Single instance of itself
|
34 |
*
|
@@ -119,10 +114,7 @@ class AAM_Backend_View_CodePinch {
|
|
119 |
* @static
|
120 |
*/
|
121 |
public static function isInstalled() {
|
122 |
-
return
|
123 |
-
self::getStatus(),
|
124 |
-
array('latest_installed', 'update_available')
|
125 |
-
);
|
126 |
}
|
127 |
|
128 |
/**
|
@@ -133,17 +125,24 @@ class AAM_Backend_View_CodePinch {
|
|
133 |
* @access protected
|
134 |
* @static
|
135 |
*/
|
136 |
-
protected static function
|
137 |
static $status = null;
|
138 |
|
139 |
if (is_null($status)) {
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
147 |
}
|
148 |
|
149 |
return $status;
|
24 |
*/
|
25 |
class AAM_Backend_View_CodePinch {
|
26 |
|
|
|
|
|
|
|
|
|
|
|
27 |
/**
|
28 |
* Single instance of itself
|
29 |
*
|
114 |
* @static
|
115 |
*/
|
116 |
public static function isInstalled() {
|
117 |
+
return self::find();
|
|
|
|
|
|
|
118 |
}
|
119 |
|
120 |
/**
|
125 |
* @access protected
|
126 |
* @static
|
127 |
*/
|
128 |
+
protected static function find() {
|
129 |
static $status = null;
|
130 |
|
131 |
if (is_null($status)) {
|
132 |
+
$status = false;
|
133 |
+
|
134 |
+
if (file_exists(ABSPATH . 'wp-admin/includes/plugin.php')) {
|
135 |
+
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
136 |
+
}
|
137 |
+
|
138 |
+
if (function_exists('get_plugin_data')) {
|
139 |
+
foreach(get_plugins() as $plugin) {
|
140 |
+
if ($plugin['Name'] == 'CodePinch') {
|
141 |
+
$status = true;
|
142 |
+
break;
|
143 |
+
}
|
144 |
+
}
|
145 |
+
}
|
146 |
}
|
147 |
|
148 |
return $status;
|
Application/Backend/View/PostOptionList.php
CHANGED
@@ -32,6 +32,11 @@ return array(
|
|
32 |
'comment' => array(
|
33 |
'title' => __('Comment', AAM_KEY),
|
34 |
'descr' => __('Restrict access to comment on %s if commenting feature is enabled.', AAM_KEY)
|
|
|
|
|
|
|
|
|
|
|
35 |
)
|
36 |
),
|
37 |
'backend' => array(
|
32 |
'comment' => array(
|
33 |
'title' => __('Comment', AAM_KEY),
|
34 |
'descr' => __('Restrict access to comment on %s if commenting feature is enabled.', AAM_KEY)
|
35 |
+
),
|
36 |
+
'protected' => array(
|
37 |
+
'title' => __('Password Protected', AAM_KEY),
|
38 |
+
'sub' => '<small>' . sprintf(__('Password: %s', AAM_KEY), '<b data-preview="frontend.password" id="post-password"></b>' ) . ' <a href="#" class="change-password" data-ref="frontend.password" data-preview-id="post-password">' . __('change', AAM_KEY) . '</a></small>',
|
39 |
+
'descr' => __('Add a password protection for the %s.', AAM_KEY)
|
40 |
)
|
41 |
),
|
42 |
'backend' => array(
|
Application/Backend/View/ProductList.php
DELETED
@@ -1,117 +0,0 @@
|
|
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 |
-
return array(
|
11 |
-
array(
|
12 |
-
'title' => '<span class="aam-highlight">AAM Plus Package</span>',
|
13 |
-
'id' => 'AAM Plus Package',
|
14 |
-
'type' => 'commercial',
|
15 |
-
'price' => '$30 <small>USD</small>',
|
16 |
-
'description' => 'Our best selling extension that allows you to manage access to unlimited number of posts, pages or custom post types and define default access to ALL posts, pages, custom post types, categories or custom taxonomies. <a href="https://vasyltech.com/blog/manage-access-to-posts-and-pages" target="_blank">Read more.</a>',
|
17 |
-
'storeURL' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=FGAHULDEFZV4U',
|
18 |
-
'status' => AAM_Core_Repository::getInstance()->extensionStatus('AAM Plus Package'),
|
19 |
-
'version' => AAM_Core_Repository::getInstance()->getExtensionVersion('AAM Plus Package')
|
20 |
-
),
|
21 |
-
array(
|
22 |
-
'title' => 'AAM Redirect',
|
23 |
-
'id' => 'AAM Redirect',
|
24 |
-
'type' => 'commercial',
|
25 |
-
'price' => '$10 <small>USD</small>',
|
26 |
-
'new' => true,
|
27 |
-
'description' => 'Setup customized redirect or "Access Denied" message for each role, individual user or visitors. <a href="http://vasyltech.com/blog/aam-redirect-extension" target="_blank">Read more.</a>',
|
28 |
-
'storeURL' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QAM3P45X6PKUU',
|
29 |
-
'status' => AAM_Core_Repository::getInstance()->extensionStatus('AAM Redirect'),
|
30 |
-
'version' => AAM_Core_Repository::getInstance()->getExtensionVersion('AAM Redirect')
|
31 |
-
),
|
32 |
-
array(
|
33 |
-
'title' => 'AAM Content Teaser',
|
34 |
-
'id' => 'AAM Content Teaser',
|
35 |
-
'type' => 'commercial',
|
36 |
-
'price' => '$10 <small>USD</small>',
|
37 |
-
'new' => true,
|
38 |
-
'description' => 'Setup customized teaser message for any user role, individual user or visitors. <a href="http://vasyltech.com/blog/aam-content-teaser" target="_blank">Read more.</a>',
|
39 |
-
'storeURL' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3NG4CZX3WEH7L',
|
40 |
-
'status' => AAM_Core_Repository::getInstance()->extensionStatus('AAM Content Teaser'),
|
41 |
-
'version' => AAM_Core_Repository::getInstance()->getExtensionVersion('AAM Content Teaser')
|
42 |
-
),
|
43 |
-
array(
|
44 |
-
'title' => 'AAM Login Redirect',
|
45 |
-
'id' => 'AAM Login Redirect',
|
46 |
-
'type' => 'commercial',
|
47 |
-
'price' => '$10 <small>USD</small>',
|
48 |
-
'new' => true,
|
49 |
-
'description' => 'Setup customized login redirect for any user or user role. <a href="http://vasyltech.com/blog/aam-login-redirect" target="_blank">Read more.</a>',
|
50 |
-
'storeURL' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=PQCF4AEK856TG',
|
51 |
-
'status' => AAM_Core_Repository::getInstance()->extensionStatus('AAM Login Redirect'),
|
52 |
-
'version' => AAM_Core_Repository::getInstance()->getExtensionVersion('AAM Login Redirect')
|
53 |
-
),
|
54 |
-
array(
|
55 |
-
'title' => 'AAM Role Hierarchy',
|
56 |
-
'id' => 'AAM Role Hierarchy',
|
57 |
-
'type' => 'commercial',
|
58 |
-
'price' => '$15 <small>USD</small>',
|
59 |
-
'new' => true,
|
60 |
-
'description' => 'Create complex role hierarchy and automatically inherit access settings from parent roles. <a href="https://vasyltech.com/blog/aam-role-hierarchy" target="_blank">Read more.</a>',
|
61 |
-
'storeURL' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=K8DMZ66SAW8VG',
|
62 |
-
'status' => AAM_Core_Repository::getInstance()->extensionStatus('AAM Role Hierarchy'),
|
63 |
-
'version' => AAM_Core_Repository::getInstance()->getExtensionVersion('AAM Role Hierarchy')
|
64 |
-
),
|
65 |
-
array(
|
66 |
-
'title' => 'AAM Role Filter',
|
67 |
-
'id' => 'AAM Role Filter',
|
68 |
-
'type' => 'commercial',
|
69 |
-
'price' => '$5 <small>USD</small>',
|
70 |
-
'description' => 'More advanced user and role administration. Based on user capabilities level, filter list of roles that user can manage. Also prevent from editing, promoting or deleting higher level users.',
|
71 |
-
'storeURL' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=G9V4BT3T8WJSN',
|
72 |
-
'status' => AAM_Core_Repository::getInstance()->extensionStatus('AAM Role Filter'),
|
73 |
-
'version' => AAM_Core_Repository::getInstance()->getExtensionVersion('AAM Role Filter')
|
74 |
-
),
|
75 |
-
array(
|
76 |
-
'title' => 'AAM Complete Package',
|
77 |
-
'id' => 'AAM Complete Package',
|
78 |
-
'type' => 'commercial',
|
79 |
-
'price' => '$70 <small>USD</small>',
|
80 |
-
'description' => 'Get list of all available premium extensions in one package and <strong>save $10 USD</strong>.',
|
81 |
-
'storeURL' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=THJWEJR3URR8L',
|
82 |
-
'status' => AAM_Core_Repository::getInstance()->extensionStatus('AAM Complete Package'),
|
83 |
-
'version' => AAM_Core_Repository::getInstance()->getExtensionVersion('AAM Complete Package')
|
84 |
-
),
|
85 |
-
array(
|
86 |
-
'title' => 'AAM Multisite',
|
87 |
-
'id' => 'AAM Multisite',
|
88 |
-
'type' => 'GNU',
|
89 |
-
'license' => 'AAMMULTISITE',
|
90 |
-
'description' => 'Convenient way to navigate between different sites in the Network Admin Panel.',
|
91 |
-
'status' => AAM_Core_Repository::getInstance()->extensionStatus('AAM Multisite'),
|
92 |
-
'version' => AAM_Core_Repository::getInstance()->getExtensionVersion('AAM Multisite')
|
93 |
-
),
|
94 |
-
array(
|
95 |
-
'title' => 'AAM ConfigPress',
|
96 |
-
'id' => 'AAM ConfigPress',
|
97 |
-
'type' => 'GNU',
|
98 |
-
'license' => 'AAMCONFIGPRESS',
|
99 |
-
'description' => 'Extension to manage AAM core functionality with advanced configuration settings.',
|
100 |
-
'status' => AAM_Core_Repository::getInstance()->extensionStatus('AAM ConfigPress'),
|
101 |
-
'version' => AAM_Core_Repository::getInstance()->getExtensionVersion('AAM ConfigPress')
|
102 |
-
),
|
103 |
-
array(
|
104 |
-
'title' => 'CodePinch',
|
105 |
-
'id' => 'WP Error Fix',
|
106 |
-
'type' => 'plugin',
|
107 |
-
'description' => '<span class="aam-highlight">Highly recommended!</span> Patent-pending technology that provides solutions to PHP errors within hours, preventing costly maintenance time and keeping your WordPress site error. <a href="http://codepinch.io" target="_blank">Read more.</a>',
|
108 |
-
'status' => AAM_Core_Repository::getInstance()->pluginStatus('WP Error Fix')
|
109 |
-
),
|
110 |
-
array(
|
111 |
-
'title' => 'ConfigPress',
|
112 |
-
'id' => 'ConfigPress',
|
113 |
-
'type' => 'plugin',
|
114 |
-
'description' => 'Development tool with an easy way to manage all your website custom settings. <a href="https://vasyltech.com/config-press" target="_blank">Read more.</a>',
|
115 |
-
'status' => AAM_Core_Repository::getInstance()->pluginStatus('ConfigPress')
|
116 |
-
)
|
117 |
-
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Application/Backend/View/SecurityOptionList.php
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
return array(
|
11 |
+
'login-timeout' => array(
|
12 |
+
'title' => __('Login Timeout', AAM_KEY),
|
13 |
+
'descr' => sprintf(__('Delay the login process for %s second to significantly reduce the chance for brute force or dictionary attack.', AAM_KEY), AAM_Core_Config::get('security.login.timeout', 1)),
|
14 |
+
'value' => AAM_Core_Config::get('login-timeout', false)
|
15 |
+
),
|
16 |
+
'login-ip-track' => array(
|
17 |
+
'title' => __('Track IP Address', AAM_KEY),
|
18 |
+
'descr' => __('Track the IP address for the last successful user login and trigger double authentication via email when the same username/password combination is used to login from a different IP address.', AAM_KEY),
|
19 |
+
'value' => AAM_Core_Config::get('login-ip-track', false),
|
20 |
+
),
|
21 |
+
'brute-force-lockout' => array(
|
22 |
+
'title' => __('Brute Force Lockout', AAM_KEY),
|
23 |
+
'descr' => sprintf(__('Automatically reject login attempts if number of unsuccessful login attempts is more than %s over the period of %s.', AAM_KEY), AAM_Core_Config::get('security.login.attempts', 20), AAM_Core_Config::get('security.login.period', '2 minutes')),
|
24 |
+
'value' => AAM_Core_Config::get('brute-force-lockout', false),
|
25 |
+
)
|
26 |
+
);
|
Application/Backend/View/UtilityOptionList.php
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
return array(
|
11 |
+
'manage-capability' => array(
|
12 |
+
'title' => __('Edit/Delete Capabilities', AAM_KEY),
|
13 |
+
'descr' => AAM_Backend_View_Helper::preparePhrase('[Please note!] For experienced users only. Allow to edit or delete capabilities', 'b'),
|
14 |
+
'value' => AAM_Core_Config::get('manage-capability', false)
|
15 |
+
),
|
16 |
+
'backend-access-control' => array(
|
17 |
+
'title' => __('Backend Access Control', AAM_KEY),
|
18 |
+
'descr' => __('Allow AAM to manage access to backend resources like backend menu, categories or posts.', AAM_KEY),
|
19 |
+
'value' => AAM_Core_Config::get('backend-access-control', true),
|
20 |
+
),
|
21 |
+
'frontend-access-control' => array(
|
22 |
+
'title' => __('Frontend Access Control', AAM_KEY),
|
23 |
+
'descr' => __('Allow AAM to manage access to frontend resources like pages, categories or posts.', AAM_KEY),
|
24 |
+
'value' => AAM_Core_Config::get('frontend-access-control', true),
|
25 |
+
),
|
26 |
+
'media-access-control' => array(
|
27 |
+
'title' => __('Media Files Access Control', AAM_KEY),
|
28 |
+
'descr' => AAM_Backend_View_Helper::preparePhrase('Allow AAM to manage a physically access to all media files located in the [uploads] folder.', 'strong'),
|
29 |
+
'value' => AAM_Core_Config::get('media-access-control', false),
|
30 |
+
),
|
31 |
+
'cache-auto-clear' => array(
|
32 |
+
'title' => __('Clear cache automatically', AAM_KEY),
|
33 |
+
'descr' => __('Clear AAM cache automatically during post saving or when any category is updated or deleted', AAM_KEY),
|
34 |
+
'value' => AAM_Core_Config::get('cache-auto-clear', true),
|
35 |
+
),
|
36 |
+
'large-post-number' => array(
|
37 |
+
'title' => __('Enhance post filtering', AAM_KEY),
|
38 |
+
'descr' => AAM_Backend_View_Helper::preparePhrase('[Warning!] This may significantly reduce your website load with large amount of posts and categories until AAM caches results. Modify database query to exclude posts that have LIST or LIST TO OTHERS options checked.', 'b'),
|
39 |
+
'value' => AAM_Core_Config::get('large-post-number', false),
|
40 |
+
)
|
41 |
+
);
|
Application/Backend/phtml/contact.phtml
CHANGED
@@ -13,7 +13,7 @@
|
|
13 |
<li>Be patient. It might take up to 3 business days for us to response.</li>
|
14 |
</ol>
|
15 |
<h3 class="aam-info text-center">
|
16 |
-
e-mail: <a href="mailto:
|
17 |
</h3>
|
18 |
</div>
|
19 |
</div>
|
13 |
<li>Be patient. It might take up to 3 business days for us to response.</li>
|
14 |
</ol>
|
15 |
<h3 class="aam-info text-center">
|
16 |
+
e-mail: <a href="mailto:support@aamplugin.com" class="aam-highlight">support@aamplugin.com</a>
|
17 |
</h3>
|
18 |
</div>
|
19 |
</div>
|
Application/Backend/phtml/extension.phtml
CHANGED
@@ -20,15 +20,13 @@
|
|
20 |
</div>
|
21 |
</div>
|
22 |
|
23 |
-
<?php $commercial = $this->
|
24 |
-
<?php $free = $this->
|
25 |
-
<?php $plugins = $this->getProductList('plugin'); ?>
|
26 |
|
27 |
<div>
|
28 |
<ul class="nav nav-tabs" role="tablist">
|
29 |
<?php if(count($commercial)) { ?><li role="presentation" class="active"><a href="#premium-extensions" aria-controls="premium-extensions" role="tab" data-toggle="tab"><i class='icon-basket'></i> <?php echo __('Premium', AAM_KEY); ?></a></li><?php } ?>
|
30 |
<?php if(count($free)) { ?><li role="presentation" <?php echo (!count($commercial) ? 'class="active"' : ''); ?>><a href="#free-extensions" aria-controls="free-extensions" role="tab" data-toggle="tab"><i class='icon-download-cloud'></i> <?php echo __('Free', AAM_KEY); ?></a></li><?php } ?>
|
31 |
-
<?php if(count($plugins)) { ?><li role="presentation" <?php echo (!count($commercial) && !count($free) ? 'class="active"' : ''); ?>><a href="#useful-plugins" aria-controls="help-plugins" role="tab" data-toggle="tab"><i class='icon-thumbs-up-alt'></i> <?php echo __('Useful Plugins', AAM_KEY); ?></a></li><?php } ?>
|
32 |
<li style="float:right;"><a href="#" id="update-check" data-toggle="tooltip" title="<?php echo __('Check For Updates', AAM_KEY); ?>"><small><i class="icon-arrows-cw"></i> <?php echo __('Check', AAM_KEY); ?></small></a></li>
|
33 |
</ul>
|
34 |
|
@@ -40,17 +38,19 @@
|
|
40 |
<?php foreach ($commercial as $product) { ?>
|
41 |
<tr>
|
42 |
<td>
|
43 |
-
<span class='aam-setting-title'><?php echo $product['title'], (!empty($product['new']) ? ' <span class="badge">NEW</span> ' : ''), (!empty($product['version']) ? ' <small class="text-muted">v' . $product['version'] . '</small>' : ''), ' - ' . ($product['price']); ?></span>
|
44 |
<?php if (!empty($product['license'])) { ?><small class="aam-license-key"><b>License Key:</b> <?php echo $product['license']; ?></small><?php } ?>
|
45 |
<p class="aam-extension-description">
|
46 |
<?php echo $product['description']; ?>
|
47 |
</p>
|
48 |
</td>
|
49 |
<td>
|
50 |
-
<?php if ($product['status'] ==
|
51 |
<span class="aam-extension-installed"><i class="icon-check"></i> <?php echo __('Installed', AAM_KEY); ?></span>
|
52 |
-
<?php } elseif ($product['status'] ==
|
53 |
<a href="#" class="btn btn-sm btn-warning btn-block aam-update-extension" data-product="<?php echo $product['id']; ?>"><i class="icon-arrows-cw"></i> <?php echo __('Update', AAM_KEY); ?></a>
|
|
|
|
|
54 |
<?php } else { ?>
|
55 |
<a href="<?php echo $product['storeURL']; ?>" target="_blank" class="btn btn-sm btn-success btn-block"><i class="icon-basket"></i> <?php echo __('Purchase', AAM_KEY); ?></a>
|
56 |
<?php } ?>
|
@@ -72,9 +72,9 @@
|
|
72 |
</p>
|
73 |
</td>
|
74 |
<td>
|
75 |
-
<?php if ($product['status'] ==
|
76 |
<span class="aam-extension-installed"><i class="icon-check"></i> <?php echo __('Installed', AAM_KEY); ?></span>
|
77 |
-
<?php } elseif ($product['status'] ==
|
78 |
<a href="#" class="btn btn-sm btn-warning btn-block aam-update-extension" data-product="<?php echo $product['id']; ?>"><i class="icon-arrows-cw"></i> <?php echo __('Update', AAM_KEY); ?></a>
|
79 |
<?php } else { ?>
|
80 |
<a href="#" class="btn btn-sm btn-success btn-block aam-download-extension" data-license="<?php echo $product['license']; ?>"><i class="icon-download-cloud"></i> <?php echo __('Download', AAM_KEY); ?></a>
|
@@ -85,29 +85,6 @@
|
|
85 |
</tbody>
|
86 |
</table>
|
87 |
</div>
|
88 |
-
<div role="tabpanel" class="tab-pane" id="useful-plugins">
|
89 |
-
<table class="table table-striped table-bordered">
|
90 |
-
<tbody>
|
91 |
-
<?php foreach ($plugins as $product) { ?>
|
92 |
-
<tr>
|
93 |
-
<td>
|
94 |
-
<span class='aam-setting-title'><?php echo $product['title'], ' - ' . ('<span class="text-success">' . __('Free', AAM_KEY) . '</span>'); ?></span>
|
95 |
-
<p class="aam-extension-description">
|
96 |
-
<?php echo $product['description']; ?>
|
97 |
-
</p>
|
98 |
-
</td>
|
99 |
-
<td>
|
100 |
-
<?php if ($product['status']['status'] == 'install') { ?>
|
101 |
-
<a href="<?php echo $product['status']['url']; ?>" class="btn btn-sm btn-success btn-block"><i class="icon-plus"></i> <?php echo __('Install', AAM_KEY); ?></a>
|
102 |
-
<?php } else { ?>
|
103 |
-
<span class="aam-extension-installed"><i class="icon-check"></i> <?php echo __('Installed', AAM_KEY); ?></span>
|
104 |
-
<?php } ?>
|
105 |
-
</td>
|
106 |
-
</tr>
|
107 |
-
<?php } ?>
|
108 |
-
</tbody>
|
109 |
-
</table>
|
110 |
-
</div>
|
111 |
</div>
|
112 |
</div>
|
113 |
|
@@ -149,7 +126,7 @@
|
|
149 |
<p>
|
150 |
<?php echo __('Insert license key that you recieved after the payment (find the email example below). It might take up to 2 hours to process the payment. Please remember that license key is limited only to one life domain.', AAM_KEY); ?>
|
151 |
<br /> <br />
|
152 |
-
<img src="https://
|
153 |
</p>
|
154 |
</div>
|
155 |
<div class="modal-footer">
|
20 |
</div>
|
21 |
</div>
|
22 |
|
23 |
+
<?php $commercial = $this->getList('commercial'); ?>
|
24 |
+
<?php $free = $this->getList('GNU'); ?>
|
|
|
25 |
|
26 |
<div>
|
27 |
<ul class="nav nav-tabs" role="tablist">
|
28 |
<?php if(count($commercial)) { ?><li role="presentation" class="active"><a href="#premium-extensions" aria-controls="premium-extensions" role="tab" data-toggle="tab"><i class='icon-basket'></i> <?php echo __('Premium', AAM_KEY); ?></a></li><?php } ?>
|
29 |
<?php if(count($free)) { ?><li role="presentation" <?php echo (!count($commercial) ? 'class="active"' : ''); ?>><a href="#free-extensions" aria-controls="free-extensions" role="tab" data-toggle="tab"><i class='icon-download-cloud'></i> <?php echo __('Free', AAM_KEY); ?></a></li><?php } ?>
|
|
|
30 |
<li style="float:right;"><a href="#" id="update-check" data-toggle="tooltip" title="<?php echo __('Check For Updates', AAM_KEY); ?>"><small><i class="icon-arrows-cw"></i> <?php echo __('Check', AAM_KEY); ?></small></a></li>
|
31 |
</ul>
|
32 |
|
38 |
<?php foreach ($commercial as $product) { ?>
|
39 |
<tr>
|
40 |
<td>
|
41 |
+
<span class='aam-setting-title'><?php echo $product['title'], (!empty($product['new']) ? ' <span class="badge">NEW</span> ' : ''), (!empty($product['version']) ? ' <small class="text-muted">v' . $product['version'] . '</small>' : ''), ' - ' . ($product['price'] . ' <small>' . $product['currency'] . '</small>'); ?></span>
|
42 |
<?php if (!empty($product['license'])) { ?><small class="aam-license-key"><b>License Key:</b> <?php echo $product['license']; ?></small><?php } ?>
|
43 |
<p class="aam-extension-description">
|
44 |
<?php echo $product['description']; ?>
|
45 |
</p>
|
46 |
</td>
|
47 |
<td>
|
48 |
+
<?php if ($product['status'] == AAM_Extension_Repository::STATUS_INSTALLED) { ?>
|
49 |
<span class="aam-extension-installed"><i class="icon-check"></i> <?php echo __('Installed', AAM_KEY); ?></span>
|
50 |
+
<?php } elseif ($product['status'] == AAM_Extension_Repository::STATUS_UPDATE) { ?>
|
51 |
<a href="#" class="btn btn-sm btn-warning btn-block aam-update-extension" data-product="<?php echo $product['id']; ?>"><i class="icon-arrows-cw"></i> <?php echo __('Update', AAM_KEY); ?></a>
|
52 |
+
<?php } elseif ($product['status'] == AAM_Extension_Repository::STATUS_INACTIVE) { ?>
|
53 |
+
<span class="aam-extension-inactive"><i class="icon-stop"></i> <?php echo __('Inactive', AAM_KEY); ?></span>
|
54 |
<?php } else { ?>
|
55 |
<a href="<?php echo $product['storeURL']; ?>" target="_blank" class="btn btn-sm btn-success btn-block"><i class="icon-basket"></i> <?php echo __('Purchase', AAM_KEY); ?></a>
|
56 |
<?php } ?>
|
72 |
</p>
|
73 |
</td>
|
74 |
<td>
|
75 |
+
<?php if ($product['status'] == AAM_Extension_Repository::STATUS_INSTALLED) { ?>
|
76 |
<span class="aam-extension-installed"><i class="icon-check"></i> <?php echo __('Installed', AAM_KEY); ?></span>
|
77 |
+
<?php } elseif ($product['status'] == AAM_Extension_Repository::STATUS_UPDATE) { ?>
|
78 |
<a href="#" class="btn btn-sm btn-warning btn-block aam-update-extension" data-product="<?php echo $product['id']; ?>"><i class="icon-arrows-cw"></i> <?php echo __('Update', AAM_KEY); ?></a>
|
79 |
<?php } else { ?>
|
80 |
<a href="#" class="btn btn-sm btn-success btn-block aam-download-extension" data-license="<?php echo $product['license']; ?>"><i class="icon-download-cloud"></i> <?php echo __('Download', AAM_KEY); ?></a>
|
85 |
</tbody>
|
86 |
</table>
|
87 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
</div>
|
89 |
</div>
|
90 |
|
126 |
<p>
|
127 |
<?php echo __('Insert license key that you recieved after the payment (find the email example below). It might take up to 2 hours to process the payment. Please remember that license key is limited only to one life domain.', AAM_KEY); ?>
|
128 |
<br /> <br />
|
129 |
+
<img src="https://aamplugin.com/media/img/email-confirmation.jpg" class="img-responsive" />
|
130 |
</p>
|
131 |
</div>
|
132 |
<div class="modal-footer">
|
Application/Backend/phtml/index.phtml
CHANGED
@@ -19,16 +19,9 @@
|
|
19 |
<div class="aam-help-context" >
|
20 |
<div class="text-justify aam-large-padding">
|
21 |
<p class="text-larger"><?php echo __('Appreciate your interest in Advanced Access Manager (aka AAM). With strong knowledge and experience in WordPress, AAM becomes a very powerful tool to manage access to your frontend and backend.', AAM_KEY); ?></p>
|
22 |
-
<p class="text-larger"><span class="aam-highlight"><?php echo __('Please
|
23 |
<p class="text-larger"><?php echo __('AAM was thoroughly tested on the fresh installation of WordPress and in the latest versions of Chrome, Safari, IE and Firefox. If you have any issues, the most typical case is the conflict with other plugins or themes.', AAM_KEY); ?></p>
|
24 |
-
<p class="text-larger"><?php echo sprintf(__('
|
25 |
-
</div>
|
26 |
-
|
27 |
-
<div class="aam-info aam-social">
|
28 |
-
<a target="_blank" href="https://vasyltech.com/advanced-access-manager"><i class="icon-home"></i></a>
|
29 |
-
<a target="_blank" href="https://twitter.com/vasyltech"><i class="icon-twitter"></i></a>
|
30 |
-
<a target="_blank" href="https://www.facebook.com/vasyltech"><i class="icon-facebook"></i></a>
|
31 |
-
<a target="_blank" href="https://wordpress.org/support/view/plugin-reviews/advanced-access-manager"><i class="icon-star"></i></a>
|
32 |
</div>
|
33 |
</div>
|
34 |
</div>
|
@@ -55,6 +48,31 @@
|
|
55 |
</div>
|
56 |
</div>
|
57 |
<?php } ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
|
59 |
<?php if (is_network_admin() && !defined('AAM_MULTISITE')) { ?>
|
60 |
<div class="metabox-holder">
|
@@ -186,7 +204,7 @@
|
|
186 |
<div role="tabpanel" class="tab-pane" id="default">
|
187 |
<div class="visitor-message">
|
188 |
<span class="aam-bordered"><?php echo __('Manage default access to your website resources for all users, roles and visitor. This includes Administrator role and your user', AAM_KEY); ?>.</span>
|
189 |
-
<button class="btn btn-danger btn-block" id="manage-default"><i class="icon-cog"></i> <?php echo __('Manage Default', AAM_KEY); ?></button>
|
190 |
</div>
|
191 |
</div>
|
192 |
</div>
|
@@ -220,21 +238,6 @@
|
|
220 |
</div>
|
221 |
<?php do_action('aam-sidebar-ui-action', 'bottom'); ?>
|
222 |
</div>
|
223 |
-
|
224 |
-
<?php if (AAM_Backend_View_CodePinch::isInstalled() === false) { ?>
|
225 |
-
<div class="metabox-holder">
|
226 |
-
<div class="postbox">
|
227 |
-
<div class="inside text-center">
|
228 |
-
<div class="inner-sm">
|
229 |
-
<p class="text-muted text-larger"><?php echo __('Improve your website security and track all PHP errors for free.', AAM_KEY); ?></p>
|
230 |
-
<a href="<?php echo AAM_Backend_View_CodePinch::getUrl(AAM_CODEPINCH_AFFILIATE_CODE); ?>" class="btn btn-lg btn-success" target="_blank">
|
231 |
-
<img src="http://codepinch.io/frontend/img/codepinch-icon.svg" /> Install CodePinch
|
232 |
-
</a>
|
233 |
-
</div>
|
234 |
-
</div>
|
235 |
-
</div>
|
236 |
-
</div>
|
237 |
-
<?php } ?>
|
238 |
</div>
|
239 |
</div>
|
240 |
</div>
|
19 |
<div class="aam-help-context" >
|
20 |
<div class="text-justify aam-large-padding">
|
21 |
<p class="text-larger"><?php echo __('Appreciate your interest in Advanced Access Manager (aka AAM). With strong knowledge and experience in WordPress, AAM becomes a very powerful tool to manage access to your frontend and backend.', AAM_KEY); ?></p>
|
22 |
+
<p class="text-larger"><span class="aam-highlight"><?php echo __('Please note!', AAM_KEY); ?></span> <?php echo AAM_Backend_View_Helper::preparePhrase('Power comes with responsibility. Make sure you have enough knowledge in WordPress Roles & Capabilities because AAM is very closely intergrated with WordPress core. It is also very important [to have backup of your database before you start working with AAM] (there is no need to backup your files, AAM does not modify any physical files on your server and never did).', 'b'); ?></p>
|
23 |
<p class="text-larger"><?php echo __('AAM was thoroughly tested on the fresh installation of WordPress and in the latest versions of Chrome, Safari, IE and Firefox. If you have any issues, the most typical case is the conflict with other plugins or themes.', AAM_KEY); ?></p>
|
24 |
+
<p class="text-larger"><?php echo sprintf(__('Refer to our %sHelp%s section when there is any question.', AAM_KEY), '<a href="https://aamplugin.com/help" target="_blank">', '</a>'); ?></p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
</div>
|
26 |
</div>
|
27 |
</div>
|
48 |
</div>
|
49 |
</div>
|
50 |
<?php } ?>
|
51 |
+
|
52 |
+
<div class="metabox-holder">
|
53 |
+
<div class="postbox">
|
54 |
+
<div class="inside">
|
55 |
+
<div class="aam-social">
|
56 |
+
<a href="https://aamplugin.com/help" title="Help" target="_blank">
|
57 |
+
<i class="icon-help-circled"></i>
|
58 |
+
<span>Help</span>
|
59 |
+
</a>
|
60 |
+
<a target="_blank" href="https://twitter.com/aamplugin">
|
61 |
+
<i class="icon-twitter"></i>
|
62 |
+
<span>Twitter</span>
|
63 |
+
</a>
|
64 |
+
<a target="_blank" href="https://aamplugin.com">
|
65 |
+
<i class="icon-home"></i>
|
66 |
+
<span>Website</span>
|
67 |
+
</a>
|
68 |
+
<a target="_blank" href="mailto:support@aamplugin.com">
|
69 |
+
<i class="icon-mail-alt"></i>
|
70 |
+
<span>Email</span>
|
71 |
+
</a>
|
72 |
+
</div>
|
73 |
+
</div>
|
74 |
+
</div>
|
75 |
+
</div>
|
76 |
|
77 |
<?php if (is_network_admin() && !defined('AAM_MULTISITE')) { ?>
|
78 |
<div class="metabox-holder">
|
204 |
<div role="tabpanel" class="tab-pane" id="default">
|
205 |
<div class="visitor-message">
|
206 |
<span class="aam-bordered"><?php echo __('Manage default access to your website resources for all users, roles and visitor. This includes Administrator role and your user', AAM_KEY); ?>.</span>
|
207 |
+
<button class="btn btn-danger btn-block" id="manage-default"><i class="icon-cog"></i> <?php echo __('Manage Default Access', AAM_KEY); ?></button>
|
208 |
</div>
|
209 |
</div>
|
210 |
</div>
|
238 |
</div>
|
239 |
<?php do_action('aam-sidebar-ui-action', 'bottom'); ?>
|
240 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
241 |
</div>
|
242 |
</div>
|
243 |
</div>
|
Application/Backend/phtml/main-panel.phtml
CHANGED
@@ -17,6 +17,7 @@
|
|
17 |
foreach (AAM_Backend_Feature::retriveList() as $feature) {
|
18 |
echo $feature->view->getContent();
|
19 |
}
|
|
|
20 |
?>
|
21 |
</div>
|
22 |
</div>
|
17 |
foreach (AAM_Backend_Feature::retriveList() as $feature) {
|
18 |
echo $feature->view->getContent();
|
19 |
}
|
20 |
+
do_action('aam-content-action');
|
21 |
?>
|
22 |
</div>
|
23 |
</div>
|
Application/Backend/phtml/object/login-redirect.phtml
CHANGED
@@ -2,64 +2,68 @@
|
|
2 |
<div class="aam-feature" id="login_redirect-content">
|
3 |
<div class="row">
|
4 |
<div class="col-xs-12">
|
5 |
-
<?php if ($this->isDefault()
|
6 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
<?php } ?>
|
|
|
|
|
|
|
|
|
8 |
</div>
|
9 |
</div>
|
10 |
|
11 |
-
|
12 |
-
<div class="
|
13 |
-
|
14 |
-
<?php $type = $this->getOption('login.redirect.type', 'default'); ?>
|
15 |
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
</div>
|
58 |
</div>
|
59 |
-
|
60 |
-
<p class="aam-notification">
|
61 |
-
<?php echo AAM_Backend_View_Helper::preparePhrase('You are allowed to setup only the [default] login redirect for all users and roles. With [AAM Login Redirect] extension you can customize the redirect for any user, role.', 'b', 'b'); ?>
|
62 |
-
</p>
|
63 |
-
<?php } ?>
|
64 |
</div>
|
65 |
<?php }
|
2 |
<div class="aam-feature" id="login_redirect-content">
|
3 |
<div class="row">
|
4 |
<div class="col-xs-12">
|
5 |
+
<?php if ($this->isDefault()) { ?>
|
6 |
+
<p class="aam-info">
|
7 |
+
<?php echo AAM_Backend_View_Helper::preparePhrase('Setup [default] login redirect for all users, roles when the authentication completed successfully.', 'strong'); ?>
|
8 |
+
</p>
|
9 |
+
<?php } else { ?>
|
10 |
+
<p class="aam-info">
|
11 |
+
<?php echo sprintf(AAM_Backend_View_Helper::preparePhrase('Setup customized login redirect for the [%s] when the authentication completed successfully.', 'strong'), AAM_Backend_View::getSubject()->getUID()); ?>
|
12 |
+
</p>
|
13 |
<?php } ?>
|
14 |
+
<div class="aam-overwrite" id="aam-login-redirect-overwrite" style="display: <?php echo ($this->isOverwritten() ? 'block' : 'none'); ?>">
|
15 |
+
<span><i class="icon-check"></i> Settings are customized</span>
|
16 |
+
<span><a href="#" id="login-redirect-reset" class="btn btn-xs btn-primary">Reset To Default</a></span>
|
17 |
+
</div>
|
18 |
</div>
|
19 |
</div>
|
20 |
|
21 |
+
<div class="row">
|
22 |
+
<div class="col-xs-12">
|
23 |
+
<?php $type = $this->getOption('login.redirect.type', 'default'); ?>
|
|
|
24 |
|
25 |
+
<div class="radio">
|
26 |
+
<input type="radio" name="login.redirect.type" id="login-redirect-default" data-action="#default-redirect-action" value="default"<?php echo ($type == 'default' ? ' checked' : ''); ?> />
|
27 |
+
<label for="login-redirect-default"><?php echo __('WordPress default behavior', AAM_KEY); ?></label>
|
28 |
+
</div>
|
29 |
+
<div class="radio">
|
30 |
+
<input type="radio" name="login.redirect.type" id="login-redirect-page" data-action="#page-redirect-action" value="page"<?php echo ($type == 'page' ? ' checked' : ''); ?> />
|
31 |
+
<label for="login-redirect-page"><?php echo AAM_Backend_View_Helper::preparePhrase('Redirected to existing page [(select from the drop-down)]', 'small'); ?></label>
|
32 |
+
</div>
|
33 |
+
<div class="radio">
|
34 |
+
<input type="radio" name="login.redirect.type" id="login-redirect-url" data-action="#url-redirect-action" value="url"<?php echo ($type == 'url' ? ' checked' : ''); ?> />
|
35 |
+
<label for="login-redirect-url"><?php echo AAM_Backend_View_Helper::preparePhrase('Redirected to the URL [(enter full URL starting from http or https)]', 'small'); ?></label>
|
36 |
+
</div>
|
37 |
+
<div class="radio">
|
38 |
+
<input type="radio" name="login.redirect.type" id="login-redirect-callback" data-action="#callback-redirect-action" value="callback"<?php echo ($type == 'callback' ? ' checked' : ''); ?> />
|
39 |
+
<label for="login-redirect-callback"><?php echo sprintf(AAM_Backend_View_Helper::preparePhrase('Trigger PHP callback function [(valid %sPHP callback%s is required)]', 'small'), '<a href="http://php.net/manual/en/language.types.callable.php" target="_blank">', '</a>'); ?></label>
|
40 |
+
</div>
|
41 |
|
42 |
+
<div class="form-group login-redirect-action" id="page-redirect-action" style="display: <?php echo ($type == 'page' ? 'block' : 'none'); ?>;">
|
43 |
+
<label><?php echo __('Existing Page', AAM_KEY); ?></label>
|
44 |
+
<?php
|
45 |
+
wp_dropdown_pages(array(
|
46 |
+
'depth' => 99,
|
47 |
+
'selected' => $this->getOption('login.redirect.page'),
|
48 |
+
'echo' => 1,
|
49 |
+
'name' => 'login.redirect.page',
|
50 |
+
'id' => 'page-redirect', // string
|
51 |
+
'class' => 'form-control', // string
|
52 |
+
'show_option_none' => __('-- Select Page --', AAM_KEY) // string
|
53 |
+
));
|
54 |
+
?>
|
55 |
+
</div>
|
56 |
|
57 |
+
<div class="form-group login-redirect-action" id="url-redirect-action" style="display: <?php echo ($type == 'url' ? 'block' : 'none'); ?>;">
|
58 |
+
<label><?php echo __('The URL', AAM_KEY); ?></label>
|
59 |
+
<input type="text" class="form-control" name="login.redirect.url" placeholder="http://" value="<?php echo $this->getOption('login.redirect.url'); ?>" />
|
60 |
+
</div>
|
61 |
|
62 |
+
<div class="form-group login-redirect-action" id="callback-redirect-action" style="display: <?php echo ($type == 'callback' ? 'block' : 'none'); ?>;">
|
63 |
+
<label><?php echo __('PHP Callback Function', AAM_KEY); ?></label>
|
64 |
+
<input type="text" class="form-control" placeholder="Enter valid callback" name="login.redirect.callback" value="<?php echo $this->getOption('login.redirect.callback'); ?>" />
|
65 |
+
</div>
|
|
|
66 |
</div>
|
67 |
+
</div>
|
|
|
|
|
|
|
|
|
68 |
</div>
|
69 |
<?php }
|
Application/Backend/phtml/object/menu.phtml
CHANGED
@@ -1,13 +1,5 @@
|
|
1 |
<?php if (defined('AAM_KEY')) { ?>
|
2 |
<div class="aam-feature" id="admin_menu-content">
|
3 |
-
<div class="row">
|
4 |
-
<div class="col-xs-12">
|
5 |
-
<p class="aam-info">
|
6 |
-
<?php echo sprintf(__('Learn how to manage access to the backend menu from %sthis article%s', AAM_KEY),'<a href="https://vasyltech.com/blog/manage-access-to-wordpress-backend-menu" target="_blank">', '</a>'); ?>
|
7 |
-
</p>
|
8 |
-
</div>
|
9 |
-
</div>
|
10 |
-
|
11 |
<?php if ($this->isOverwritten()) { ?>
|
12 |
<div class="row">
|
13 |
<div class="col-xs-12">
|
1 |
<?php if (defined('AAM_KEY')) { ?>
|
2 |
<div class="aam-feature" id="admin_menu-content">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
<?php if ($this->isOverwritten()) { ?>
|
4 |
<div class="row">
|
5 |
<div class="col-xs-12">
|
Application/Backend/phtml/object/metabox.phtml
CHANGED
@@ -68,7 +68,7 @@
|
|
68 |
<?php } else { ?>
|
69 |
<div class="row">
|
70 |
<div class="col-xs-12 text-center">
|
71 |
-
<p class="aam-notification-message"><?php echo __('The list
|
72 |
</div>
|
73 |
</div>
|
74 |
<?php } ?>
|
68 |
<?php } else { ?>
|
69 |
<div class="row">
|
70 |
<div class="col-xs-12 text-center">
|
71 |
+
<p class="aam-notification-message"><?php echo __('The list is not initialized. Click Refresh button above.'); ?></p>
|
72 |
</div>
|
73 |
</div>
|
74 |
<?php } ?>
|
Application/Backend/phtml/object/post.phtml
CHANGED
@@ -4,40 +4,33 @@
|
|
4 |
<div class="row">
|
5 |
<div class="col-xs-12">
|
6 |
<p class="aam-notification">
|
7 |
-
<?php echo sprintf(AAM_Backend_View_Helper::preparePhrase('You are allowed to manage access up to 10 posts, pages or custom post types but only on role, user or visitor levels. Consider to purchase [AAM Plus Package] extension to unlock this limitation. For more information about post access control check %sthis article%s.', 'b'), '<a href="https://
|
8 |
-
</p>
|
9 |
-
</div>
|
10 |
-
</div>
|
11 |
-
<?php } else { ?>
|
12 |
-
<div class="row">
|
13 |
-
<div class="col-xs-12">
|
14 |
-
<p class="aam-info">
|
15 |
-
<?php echo sprintf(__('Learn more about post & pages access control from %sthis article%s.'), '<a href="https://vasyltech.com/blog/manage-access-to-posts-and-pages" target="_blank">', '</a>'); ?>
|
16 |
</p>
|
17 |
</div>
|
18 |
</div>
|
19 |
<?php } ?>
|
20 |
|
21 |
<?php if (defined('AAM_PLUS_PACKAGE') || AAM_Backend_View::getSubject()->getUID() != 'default') { ?>
|
22 |
-
<?php $current = $this->
|
23 |
|
24 |
<div class="aam-post-breadcrumb">
|
25 |
<a href="#" data-level="root"><i class="icon-home"></i> <?php echo __('Root', AAM_KEY); ?></a>
|
26 |
-
<?php if (
|
27 |
<span>
|
28 |
<i class="icon-angle-double-right"></i>
|
29 |
-
<?php echo $current->post_title; ?>
|
30 |
</span>
|
31 |
<?php } ?>
|
32 |
</div>
|
33 |
|
34 |
<div class="aam-overwrite hidden" id="post-overwritten">
|
35 |
<span><i class="icon-check"></i> <?php echo __('Settings are customized', AAM_KEY); ?></span>
|
36 |
-
<span><a href="#" id="post-reset" class="btn btn-xs btn-
|
37 |
</div>
|
38 |
|
39 |
-
<?php if (
|
40 |
-
<input type="hidden" id="load-post" value="<?php echo $current->ID; ?>" />
|
|
|
41 |
<?php } ?>
|
42 |
|
43 |
<div class="aam-container">
|
@@ -77,6 +70,7 @@
|
|
77 |
<tr>
|
78 |
<td width="90%">
|
79 |
<strong class="aam-block aam-highlight text-uppercase"><?php echo $data['title']; ?></strong>
|
|
|
80 |
<p class="aam-hint" data-dynamic-post-label="<?php echo $data['descr']; ?>"></p>
|
81 |
</td>
|
82 |
<td>
|
@@ -99,6 +93,7 @@
|
|
99 |
<tr class="aam-backend-post-access">
|
100 |
<td width="90%">
|
101 |
<strong class="aam-block aam-highlight text-uppercase"><?php echo $data['title']; ?></strong>
|
|
|
102 |
<p class="aam-hint" data-dynamic-post-label="<?php echo $data['descr']; ?>"></p>
|
103 |
</td>
|
104 |
<td>
|
@@ -117,7 +112,27 @@
|
|
117 |
<a href="#" class="btn btn-xs btn-primary post-back">≪ <?php echo __('Go Back', AAM_KEY); ?></a>
|
118 |
</div>
|
119 |
</div>
|
120 |
-
<?php } ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
121 |
</div>
|
122 |
-
<?php
|
123 |
-
}
|
4 |
<div class="row">
|
5 |
<div class="col-xs-12">
|
6 |
<p class="aam-notification">
|
7 |
+
<?php echo sprintf(AAM_Backend_View_Helper::preparePhrase('You are allowed to manage access up to 10 posts, pages or custom post types but only on role, user or visitor levels. Consider to purchase [AAM Plus Package] extension to unlock this limitation. For more information about post access control check %sthis article%s.', 'b'), '<a href="https://aamplugin.com/help/how-to-manage-wordpress-post-and-category-access" target="_blank">', '</a>'); ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
</p>
|
9 |
</div>
|
10 |
</div>
|
11 |
<?php } ?>
|
12 |
|
13 |
<?php if (defined('AAM_PLUS_PACKAGE') || AAM_Backend_View::getSubject()->getUID() != 'default') { ?>
|
14 |
+
<?php $current = $this->getCurrentObject(); ?>
|
15 |
|
16 |
<div class="aam-post-breadcrumb">
|
17 |
<a href="#" data-level="root"><i class="icon-home"></i> <?php echo __('Root', AAM_KEY); ?></a>
|
18 |
+
<?php if ($current->id) { ?>
|
19 |
<span>
|
20 |
<i class="icon-angle-double-right"></i>
|
21 |
+
<?php echo ($current->type == 'post' ? $current->post->post_title : $current->term->name); ?>
|
22 |
</span>
|
23 |
<?php } ?>
|
24 |
</div>
|
25 |
|
26 |
<div class="aam-overwrite hidden" id="post-overwritten">
|
27 |
<span><i class="icon-check"></i> <?php echo __('Settings are customized', AAM_KEY); ?></span>
|
28 |
+
<span><a href="#" id="post-reset" class="btn btn-xs btn-primary"><?php echo __('Reset To Default', AAM_KEY); ?></a></span>
|
29 |
</div>
|
30 |
|
31 |
+
<?php if ($current->id) { ?>
|
32 |
+
<input type="hidden" id="load-post-object" value="<?php echo ($current->type == 'post' ? $current->post->ID : $current->term->term_id); ?>" />
|
33 |
+
<input type="hidden" id="load-post-object-type" value="<?php echo $current->type; ?>" />
|
34 |
<?php } ?>
|
35 |
|
36 |
<div class="aam-container">
|
70 |
<tr>
|
71 |
<td width="90%">
|
72 |
<strong class="aam-block aam-highlight text-uppercase"><?php echo $data['title']; ?></strong>
|
73 |
+
<?php if (!empty($data['sub'])) { echo $data['sub']; } ?>
|
74 |
<p class="aam-hint" data-dynamic-post-label="<?php echo $data['descr']; ?>"></p>
|
75 |
</td>
|
76 |
<td>
|
93 |
<tr class="aam-backend-post-access">
|
94 |
<td width="90%">
|
95 |
<strong class="aam-block aam-highlight text-uppercase"><?php echo $data['title']; ?></strong>
|
96 |
+
<?php if (!empty($data['sub'])) { echo $data['sub']; } ?>
|
97 |
<p class="aam-hint" data-dynamic-post-label="<?php echo $data['descr']; ?>"></p>
|
98 |
</td>
|
99 |
<td>
|
112 |
<a href="#" class="btn btn-xs btn-primary post-back">≪ <?php echo __('Go Back', AAM_KEY); ?></a>
|
113 |
</div>
|
114 |
</div>
|
115 |
+
<?php } ?>
|
116 |
+
|
117 |
+
<div class="modal fade" id="password-modal" tabindex="-1" role="dialog">
|
118 |
+
<div class="modal-dialog modal-sm" role="document">
|
119 |
+
<div class="modal-content">
|
120 |
+
<div class="modal-header">
|
121 |
+
<button type="button" class="close" data-dismiss="modal" aria-label="<?php echo __('Close', AAM_KEY); ?>"><span aria-hidden="true">×</span></button>
|
122 |
+
<h4 class="modal-title"><?php echo __('Change Password', AAM_KEY); ?></h4>
|
123 |
+
</div>
|
124 |
+
<div class="modal-body">
|
125 |
+
<div class="form-group">
|
126 |
+
<label for="new-role-name"><?php echo __('Password', AAM_KEY); ?></label>
|
127 |
+
<input type="text" class="form-control" id="password-value" placeholder="<?php echo __('Enter Password', AAM_KEY); ?>" />
|
128 |
+
</div>
|
129 |
+
</div>
|
130 |
+
<div class="modal-footer">
|
131 |
+
<button type="button" class="btn btn-success" id="change-password-btn"><?php echo __('Change', AAM_KEY); ?></button>
|
132 |
+
<button type="button" class="btn btn-default" data-dismiss="modal"><?php echo __('Close', AAM_KEY); ?></button>
|
133 |
+
</div>
|
134 |
+
</div>
|
135 |
+
</div>
|
136 |
+
</div>
|
137 |
</div>
|
138 |
+
<?php }
|
|
Application/Backend/phtml/object/redirect.phtml
CHANGED
@@ -2,116 +2,120 @@
|
|
2 |
<div class="aam-feature" id="redirect-content">
|
3 |
<div class="row">
|
4 |
<div class="col-xs-12">
|
5 |
-
<?php if ($this->isDefault()
|
6 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
<?php } ?>
|
|
|
|
|
|
|
|
|
8 |
</div>
|
9 |
</div>
|
10 |
|
11 |
<div class="row">
|
12 |
<div class="col-xs-12">
|
13 |
-
|
14 |
-
<
|
15 |
-
<
|
16 |
-
|
17 |
-
|
18 |
-
</ul>
|
19 |
|
20 |
-
|
21 |
-
|
22 |
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
</div>
|
107 |
</div>
|
108 |
</div>
|
109 |
</div>
|
110 |
-
|
111 |
-
<p class="aam-notification">
|
112 |
-
<?php echo AAM_Backend_View_Helper::preparePhrase('You are allowed to setup only the [default] access denied redirect for all users, roles and visitor. With [AAM Redirect] extension you can customize redirect for any user, role or visitors.', 'b', 'b'); ?>
|
113 |
-
</p>
|
114 |
-
<?php } ?>
|
115 |
</div>
|
116 |
</div>
|
117 |
</div>
|
2 |
<div class="aam-feature" id="redirect-content">
|
3 |
<div class="row">
|
4 |
<div class="col-xs-12">
|
5 |
+
<?php if ($this->isDefault()) { ?>
|
6 |
+
<p class="aam-info">
|
7 |
+
<?php echo AAM_Backend_View_Helper::preparePhrase('Setup [default] redirect for all users, roles and visitors when access is denied to any restricted resources on your website.', 'strong'); ?>
|
8 |
+
</p>
|
9 |
+
<?php } else { ?>
|
10 |
+
<p class="aam-info">
|
11 |
+
<?php echo sprintf(AAM_Backend_View_Helper::preparePhrase('Setup customized redirect for the [%s] when access is denied to the restricted resources like posts, categories, menus, etc.', 'strong'), AAM_Backend_View::getSubject()->getUID()); ?>
|
12 |
+
</p>
|
13 |
<?php } ?>
|
14 |
+
<div class="aam-overwrite" id="aam-redirect-overwrite" style="display: <?php echo ($this->isOverwritten() ? 'block' : 'none'); ?>">
|
15 |
+
<span><i class="icon-check"></i> Settings are customized</span>
|
16 |
+
<span><a href="#" id="redirect-reset" class="btn btn-xs btn-primary">Reset To Default</a></span>
|
17 |
+
</div>
|
18 |
</div>
|
19 |
</div>
|
20 |
|
21 |
<div class="row">
|
22 |
<div class="col-xs-12">
|
23 |
+
<div>
|
24 |
+
<ul class="nav nav-tabs" role="tablist">
|
25 |
+
<li role="presentation" class="active"><a href="#frontend-redirect" aria-controls="frontend-redirect" role="tab" data-toggle="tab"><i class="icon-home"></i> <?php echo __('Frontend Redirect', AAM_KEY); ?></a></li>
|
26 |
+
<li role="presentation"><a href="#backend-redirect" aria-controls="backend-redirect" role="tab" data-toggle="tab"><i class="icon-circle"></i> <?php echo __('Backend Redirect', AAM_KEY); ?></a></li>
|
27 |
+
</ul>
|
|
|
28 |
|
29 |
+
<?php $frontendType = $this->getOption('frontend.redirect.type', 'default'); ?>
|
30 |
+
<?php $backendType = $this->getOption('backend.redirect.type', 'default'); ?>
|
31 |
|
32 |
+
<div class="tab-content">
|
33 |
+
<div role="tabpanel" class="tab-pane active" id="frontend-redirect">
|
34 |
+
<div class="radio">
|
35 |
+
<input type="radio" name="frontend.redirect.type" id="frontend-redirect-default" value="default" data-action="none" data-group="frontend-redirect"<?php echo ($frontendType == 'default' ? ' checked' : ''); ?> />
|
36 |
+
<label for="frontend-redirect-default"><?php echo AAM_Backend_View_Helper::preparePhrase('Default [("Access Denied" message)]', 'small'); ?></label>
|
37 |
+
</div>
|
38 |
+
<div class="radio">
|
39 |
+
<input type="radio" name="frontend.redirect.type" id="frontend-redirect-message" data-action="#frontend-message-action" value="message" data-group="frontend-redirect"<?php echo ($frontendType == 'message' ? ' checked' : ''); ?> />
|
40 |
+
<label for="frontend-redirect-message"><?php echo AAM_Backend_View_Helper::preparePhrase('Show customized message [(plain text or HTML)]', 'small'); ?></label>
|
41 |
+
</div>
|
42 |
+
<div class="radio">
|
43 |
+
<input type="radio" name="frontend.redirect.type" id="frontend-redirect-page" data-action="#frontend-page-action" value="page" data-group="frontend-redirect"<?php echo ($frontendType == 'page' ? ' checked' : ''); ?> />
|
44 |
+
<label for="frontend-redirect-page"><?php echo AAM_Backend_View_Helper::preparePhrase('Redirected to existing page [(select from the drop-down)]', 'small'); ?></label>
|
45 |
+
</div>
|
46 |
+
<div class="radio">
|
47 |
+
<input type="radio" name="frontend.redirect.type" id="frontend-redirect-url" data-action="#frontend-url-action" value="url" data-group="frontend-redirect"<?php echo ($frontendType == 'url' ? ' checked' : ''); ?> />
|
48 |
+
<label for="frontend-redirect-url"><?php echo AAM_Backend_View_Helper::preparePhrase('Redirected to the URL [(enter valid URL starting from http or https)]', 'small'); ?></label>
|
49 |
+
</div>
|
50 |
+
<div class="radio">
|
51 |
+
<input type="radio" name="frontend.redirect.type" id="frontend-redirect-callback" data-action="#frontend-callback-action" value="callback" data-group="frontend-redirect"<?php echo ($frontendType == 'callback' ? ' checked' : ''); ?> />
|
52 |
+
<label for="frontend-redirect-callback"><?php echo sprintf(AAM_Backend_View_Helper::preparePhrase('Trigger PHP callback function [(valid %sPHP callback%s is required)]', 'small'), '<a href="http://php.net/manual/en/language.types.callable.php" target="_blank">', '</a>'); ?></label>
|
53 |
+
</div>
|
54 |
|
55 |
+
<div class="form-group aam-redirect-action frontend-redirect" id="frontend-message-action" style="display: <?php echo ($frontendType == 'message' ? 'block' : 'none'); ?>;">
|
56 |
+
<label for="frontend-message"><?php echo __('Customized Message', AAM_KEY); ?></label>
|
57 |
+
<textarea class="form-control" name="frontend.redirect.message" rows="3" placeholder="<?php echo __('Enter message...', AAM_KEY); ?>"><?php echo stripslashes($this->getOption('frontend.redirect.message')); ?></textarea>
|
58 |
+
</div>
|
59 |
|
60 |
+
<div class="form-group aam-redirect-action frontend-redirect" id="frontend-page-action" style="display: <?php echo ($frontendType == 'page' ? 'block' : 'none'); ?>;">
|
61 |
+
<label for="frontend-page"><?php echo __('Existing Page', AAM_KEY); ?></label>
|
62 |
+
<?php
|
63 |
+
wp_dropdown_pages(array(
|
64 |
+
'depth' => 99,
|
65 |
+
'selected' => $this->getOption('frontend.redirect.page'),
|
66 |
+
'echo' => 1,
|
67 |
+
'name' => 'frontend.redirect.page',
|
68 |
+
'id' => 'frontend-page', // string
|
69 |
+
'class' => 'form-control', // string
|
70 |
+
'show_option_none' => __('-- Select Page --', AAM_KEY) // string
|
71 |
+
));
|
72 |
+
?>
|
73 |
+
</div>
|
74 |
|
75 |
+
<div class="form-group aam-redirect-action frontend-redirect" id="frontend-url-action" style="display: <?php echo ($frontendType == 'url' ? 'block' : 'none'); ?>;">
|
76 |
+
<label for="frontend-url"><?php echo __('The URL', AAM_KEY); ?></label>
|
77 |
+
<input type="text" class="form-control" name="frontend.redirect.url" placeholder="http://" value="<?php echo $this->getOption('frontend.redirect.url'); ?>" />
|
78 |
+
</div>
|
79 |
|
80 |
+
<div class="form-group aam-redirect-action frontend-redirect" id="frontend-callback-action" style="display: <?php echo ($frontendType == 'callback' ? 'block' : 'none'); ?>;">
|
81 |
+
<label for="frontend-url"><?php echo __('PHP Callback Function', AAM_KEY); ?></label>
|
82 |
+
<input type="text" class="form-control" placeholder="Enter valid callback" name="frontend.redirect.callback" value="<?php echo $this->getOption('frontend.redirect.callback'); ?>" />
|
83 |
+
</div>
|
84 |
+
</div>
|
85 |
+
<div role="tabpanel" class="tab-pane" id="backend-redirect">
|
86 |
+
<div class="radio">
|
87 |
+
<input type="radio" name="backend.redirect.type" id="backend-redirect-default" data-action="none" value="default" data-group="backend-redirect"<?php echo ($backendType == 'default' ? ' checked' : ''); ?> />
|
88 |
+
<label for="backend-redirect-default"><?php echo AAM_Backend_View_Helper::preparePhrase('Default [("Access Denied" message)]', 'small'); ?></label>
|
89 |
+
</div>
|
90 |
+
<div class="radio">
|
91 |
+
<input type="radio" name="backend.redirect.type" id="backend-redirect-message" data-action="#backend-message" value="message" data-group="backend-redirect"<?php echo ($backendType == 'message' ? ' checked' : ''); ?> />
|
92 |
+
<label for="backend-redirect-message"><?php echo AAM_Backend_View_Helper::preparePhrase('Show customized message [(plain text or HTML)]', 'small'); ?></label>
|
93 |
+
</div>
|
94 |
+
<div class="radio">
|
95 |
+
<input type="radio" name="backend.redirect.type" id="backend-redirect-url" data-action="#backend-url" value="url" data-group="backend-redirect"<?php echo ($backendType == 'url' ? ' checked' : ''); ?> />
|
96 |
+
<label for="backend-redirect-url"><?php echo AAM_Backend_View_Helper::preparePhrase('Redirected to the URL [(enter valid URL starting from http or https)]', 'small'); ?></label>
|
97 |
+
</div>
|
98 |
+
<div class="radio">
|
99 |
+
<input type="radio" name="backend.redirect.type" id="backend-redirect-callback" data-action="#backend-callback-action" value="callback" data-group="backend-redirect"<?php echo ($backendType == 'callback' ? ' checked' : ''); ?> />
|
100 |
+
<label for="backend-redirect-callback"><?php echo sprintf(AAM_Backend_View_Helper::preparePhrase('Trigger PHP callback function [(valid %sPHP callback%s is required)]', 'small'), '<a href="http://php.net/manual/en/language.types.callable.php" target="_blank">', '</a>'); ?></label>
|
101 |
+
</div>
|
102 |
|
103 |
+
<div class="form-group aam-redirect-action backend-redirect" id="backend-message" style="display: <?php echo ($backendType == 'message' ? 'block' : 'none'); ?>;">
|
104 |
+
<label for="backend-message"><?php echo __('Customized Message', AAM_KEY); ?></label>
|
105 |
+
<textarea class="form-control" rows="3" placeholder="<?php echo __('Enter message...', AAM_KEY); ?>" name="backend.redirect.message"><?php echo $this->getOption('backend.redirect.message'); ?></textarea>
|
106 |
+
</div>
|
107 |
|
108 |
+
<div class="form-group aam-redirect-action backend-redirect" id="backend-url" style="display: <?php echo ($backendType == 'url' ? 'block' : 'none'); ?>;">
|
109 |
+
<label for="backend-url"><?php echo __('The URL', AAM_KEY); ?></label>
|
110 |
+
<input type="text" class="form-control" placeholder="http://" name="backend.redirect.url" value="<?php echo $this->getOption('backend.redirect.url'); ?>" />
|
111 |
+
</div>
|
112 |
+
<div class="form-group aam-redirect-action backend-redirect" id="backend-callback-action" style="display: <?php echo ($backendType == 'callback' ? 'block' : 'none'); ?>;">
|
113 |
+
<label for="frontend-url"><?php echo __('PHP Callback Function', AAM_KEY); ?></label>
|
114 |
+
<input type="text" class="form-control" placeholder="Enter valid callback" name="backend.redirect.callback" value="<?php echo $this->getOption('backend.redirect.callback'); ?>" />
|
|
|
115 |
</div>
|
116 |
</div>
|
117 |
</div>
|
118 |
+
</div>
|
|
|
|
|
|
|
|
|
119 |
</div>
|
120 |
</div>
|
121 |
</div>
|
Application/Backend/phtml/object/teaser.phtml
CHANGED
@@ -2,32 +2,36 @@
|
|
2 |
<div class="aam-feature" id="teaser-content">
|
3 |
<div class="row">
|
4 |
<div class="col-xs-12">
|
5 |
-
<?php if ($this->isDefault()
|
6 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
<?php } ?>
|
|
|
|
|
|
|
|
|
8 |
</div>
|
9 |
</div>
|
10 |
|
11 |
<div class="row">
|
12 |
<div class="col-xs-12">
|
13 |
-
|
14 |
-
<div>
|
15 |
-
<
|
16 |
-
|
17 |
-
<textarea class="form-control" name="frontend.teaser.message" rows="3" placeholder="<?php echo __('Enter teaser message...', AAM_KEY); ?>"><?php echo stripslashes($this->getOption('frontend.teaser.message')); ?></textarea>
|
18 |
-
</div>
|
19 |
-
<div class="checkbox">
|
20 |
-
<label>
|
21 |
-
<input type="checkbox" name="frontend.teaser.excerpt" value="1" <?php echo intval($this->getOption('frontend.teaser.excerpt')) ? 'checked' : ''; ?> />
|
22 |
-
<?php echo __('Add excerpt before teaser message', AAM_KEY); ?>
|
23 |
-
</label>
|
24 |
-
</div>
|
25 |
</div>
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
|
|
|
|
31 |
</div>
|
32 |
</div>
|
33 |
</div>
|
2 |
<div class="aam-feature" id="teaser-content">
|
3 |
<div class="row">
|
4 |
<div class="col-xs-12">
|
5 |
+
<?php if ($this->isDefault()) { ?>
|
6 |
+
<p class="aam-info">
|
7 |
+
<?php echo AAM_Backend_View_Helper::preparePhrase('Setup [default] teaser message for all users, roles and visitors when access is limited to any post on your website.', 'strong'); ?>
|
8 |
+
</p>
|
9 |
+
<?php } else { ?>
|
10 |
+
<p class="aam-info">
|
11 |
+
<?php echo sprintf(AAM_Backend_View_Helper::preparePhrase('Setup customized teaser message for the [%s] when access is limited to post on your website.', 'strong'), AAM_Backend_View::getSubject()->getUID()); ?>
|
12 |
+
</p>
|
13 |
<?php } ?>
|
14 |
+
<div class="aam-overwrite" id="aam-teaser-overwrite" style="display: <?php echo ($this->isOverwritten() ? 'block' : 'none'); ?>">
|
15 |
+
<span><i class="icon-check"></i> Settings are customized</span>
|
16 |
+
<span><a href="#" id="teaser-reset" class="btn btn-xs btn-primary">Reset To Default</a></span>
|
17 |
+
</div>
|
18 |
</div>
|
19 |
</div>
|
20 |
|
21 |
<div class="row">
|
22 |
<div class="col-xs-12">
|
23 |
+
<div>
|
24 |
+
<div class="form-group">
|
25 |
+
<label><?php echo __('Teaser Message', AAM_KEY); ?></label>
|
26 |
+
<textarea class="form-control" name="frontend.teaser.message" rows="3" placeholder="<?php echo __('Enter teaser message...', AAM_KEY); ?>"><?php echo stripslashes($this->getOption('frontend.teaser.message')); ?></textarea>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
</div>
|
28 |
+
<div class="checkbox">
|
29 |
+
<label>
|
30 |
+
<input type="checkbox" name="frontend.teaser.excerpt" value="1" <?php echo intval($this->getOption('frontend.teaser.excerpt')) ? 'checked' : ''; ?> />
|
31 |
+
<?php echo __('Add excerpt before teaser message', AAM_KEY); ?>
|
32 |
+
</label>
|
33 |
+
</div>
|
34 |
+
</div>
|
35 |
</div>
|
36 |
</div>
|
37 |
</div>
|
Application/Backend/phtml/security.phtml
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php if (defined('AAM_KEY')) { ?>
|
2 |
+
<div class="aam-feature" id="security-content">
|
3 |
+
<table class="table table-striped table-bordered">
|
4 |
+
<tbody>
|
5 |
+
<?php do_action('aam-pre-security-content-action'); ?>
|
6 |
+
|
7 |
+
<?php foreach($this->getOptionList() as $id => $option) { ?>
|
8 |
+
<tr>
|
9 |
+
<td>
|
10 |
+
<span class='aam-setting-title'><?php echo $option['title']; ?></span>
|
11 |
+
<p class="aam-setting-description">
|
12 |
+
<?php echo $option['descr']; ?>
|
13 |
+
</p>
|
14 |
+
</td>
|
15 |
+
<td class="text-center">
|
16 |
+
<input type="checkbox" name="<?php echo $id; ?>" id="security-<?php echo $id; ?>" <?php echo ($option['value'] ? 'checked' : ''); ?> /> <label for="security-<?php echo $id; ?>"></label>
|
17 |
+
</td>
|
18 |
+
</tr>
|
19 |
+
<?php } ?>
|
20 |
+
|
21 |
+
<?php do_action('aam-post-security-content-action'); ?>
|
22 |
+
</tbody>
|
23 |
+
</table>
|
24 |
+
|
25 |
+
<?php if (AAM_Backend_View_CodePinch::isInstalled() === false) { ?>
|
26 |
+
<div class="metabox-holder">
|
27 |
+
<div class="postbox">
|
28 |
+
<div class="inside text-center">
|
29 |
+
<div class="inner-sm">
|
30 |
+
<p class="text-muted text-larger"><?php echo __('Improve your website security and keep your website error free with CodePinch.', AAM_KEY); ?></p>
|
31 |
+
<a href="<?php echo AAM_Backend_View_CodePinch::getUrl(AAM_CODEPINCH_AFFILIATE_CODE); ?>" class="btn btn-lg btn-success" target="_blank">
|
32 |
+
Install Free Plugin
|
33 |
+
</a>
|
34 |
+
</div>
|
35 |
+
</div>
|
36 |
+
</div>
|
37 |
+
</div>
|
38 |
+
<?php } ?>
|
39 |
+
</div>
|
40 |
+
<?php }
|
Application/Backend/phtml/utility.phtml
CHANGED
@@ -1,73 +1,24 @@
|
|
1 |
<?php if (defined('AAM_KEY')) { ?>
|
2 |
<div class="aam-feature" id="utilities-content">
|
3 |
-
<div class="row">
|
4 |
-
<div class="col-xs-12">
|
5 |
-
<p class="aam-info">
|
6 |
-
<?php echo sprintf(__('To learn more about AAM Utilities check %sAAM Utilities%s article.', AAM_KEY), '<a href="https://vasyltech.com/blog/aam-utilities" target="_blank">', '</a>'); ?><br/>
|
7 |
-
</p>
|
8 |
-
</div>
|
9 |
-
</div>
|
10 |
-
|
11 |
<table class="table table-striped table-bordered">
|
12 |
<tbody>
|
13 |
<?php do_action('aam-pre-utilities-setting'); ?>
|
14 |
-
<tr>
|
15 |
-
<td>
|
16 |
-
<span class='aam-setting-title'><?php echo __('Edit/Delete Capabilities', AAM_KEY); ?></span>
|
17 |
-
<p class="aam-setting-description">
|
18 |
-
<?php echo AAM_Backend_View_Helper::preparePhrase('[Please note!] This feature should be used only by experienced users. Toggle an ability to edit or delete capabilities.', 'strong'); ?>
|
19 |
-
</p>
|
20 |
-
</td>
|
21 |
-
<td>
|
22 |
-
<input data-toggle="toggle" data-on="<?php echo __('Enabled', AAM_KEY); ?>" data-off="<?php echo __('Disabled', AAM_KEY); ?>" type="checkbox" name="manage-capability" <?php echo (AAM_Core_Config::get('manage-capability', false) ? 'checked' : ''); ?> />
|
23 |
-
</td>
|
24 |
-
</tr>
|
25 |
-
<tr>
|
26 |
-
<td>
|
27 |
-
<span class='aam-setting-title'><?php echo __('Backend Access Control', AAM_KEY); ?></span>
|
28 |
-
<p class="aam-setting-description">
|
29 |
-
<?php echo __('Use AAM to control access to posts, pages, categories, menus and metaboxes etc. Disable this setting to stop AAM from controling access for backend.', AAM_KEY); ?>
|
30 |
-
</p>
|
31 |
-
</td>
|
32 |
-
<td>
|
33 |
-
<input data-toggle="toggle" data-on="<?php echo __('Enabled', AAM_KEY); ?>" data-off="<?php echo __('Disabled', AAM_KEY); ?>" type="checkbox" name="backend-access-control" <?php echo (AAM_Core_Config::get('backend-access-control', true) ? 'checked' : ''); ?> />
|
34 |
-
</td>
|
35 |
-
</tr>
|
36 |
-
<tr>
|
37 |
-
<td>
|
38 |
-
<span class='aam-setting-title'><?php echo __('Frontend Access Control', AAM_KEY); ?></span>
|
39 |
-
<p class="aam-setting-description">
|
40 |
-
<?php echo __('Use AAM to control access to posts, pages, categories, menus and widgets. Disable this setting to stop AAM from controling access for frontend.', AAM_KEY); ?>
|
41 |
-
</p>
|
42 |
-
</td>
|
43 |
-
<td>
|
44 |
-
<input data-toggle="toggle" data-on="<?php echo __('Enabled', AAM_KEY); ?>" data-off="<?php echo __('Disabled', AAM_KEY); ?>" type="checkbox" name="frontend-access-control" <?php echo (AAM_Core_Config::get('frontend-access-control', true) ? 'checked' : ''); ?> />
|
45 |
-
</td>
|
46 |
-
</tr>
|
47 |
-
<tr>
|
48 |
-
<td>
|
49 |
-
<span class='aam-setting-title'><?php echo __('Media Files Access Control', AAM_KEY); ?></span>
|
50 |
-
<p class="aam-setting-description">
|
51 |
-
<?php echo sprintf(AAM_Backend_View_Helper::preparePhrase('When enabled, AAM will physically control access to all media files located in [uploads] folder. For more information check %sthis tutorial%s.', 'strong'), '<a href="https://vasyltech.com/blog/wordpress-media-access-control" target="_blank">', '</a>'); ?>
|
52 |
-
</p>
|
53 |
-
</td>
|
54 |
-
<td>
|
55 |
-
<input data-toggle="toggle" data-on="<?php echo __('Enabled', AAM_KEY); ?>" data-off="<?php echo __('Disabled', AAM_KEY); ?>" type="checkbox" name="media-access-control" <?php echo (AAM_Core_Config::get('media-access-control', false) ? 'checked' : ''); ?> />
|
56 |
-
</td>
|
57 |
-
</tr>
|
58 |
-
<tr>
|
59 |
-
<td>
|
60 |
-
<span class='aam-setting-title'><?php echo __('Large Post Number Support', AAM_KEY); ?></span>
|
61 |
-
<p class="aam-setting-description">
|
62 |
-
<?php echo AAM_Backend_View_Helper::preparePhrase('[Use cautiously!] With large amount of posts, a native WordPress pagination does not take in consideration AAM access settings. Enable this option if you restrict posts from LISTing on frontend or backend.', 'strong'); ?>
|
63 |
-
</p>
|
64 |
-
</td>
|
65 |
-
<td>
|
66 |
-
<input data-toggle="toggle" data-on="<?php echo __('Enabled', AAM_KEY); ?>" data-off="<?php echo __('Disabled', AAM_KEY); ?>" type="checkbox" name="large-post-number" <?php echo (AAM_Core_Config::get('large-post-number', false) ? 'checked' : ''); ?> />
|
67 |
-
</td>
|
68 |
-
</tr>
|
69 |
|
70 |
-
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
|
72 |
<tr><td colspan="2"></td></tr>
|
73 |
<tr>
|
@@ -78,7 +29,7 @@
|
|
78 |
</p>
|
79 |
</td>
|
80 |
<td>
|
81 |
-
<a href="#clear-settings-modal" data-toggle="modal" class="btn btn-danger btn-block">
|
82 |
</td>
|
83 |
</tr>
|
84 |
</tbody>
|
1 |
<?php if (defined('AAM_KEY')) { ?>
|
2 |
<div class="aam-feature" id="utilities-content">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
<table class="table table-striped table-bordered">
|
4 |
<tbody>
|
5 |
<?php do_action('aam-pre-utilities-setting'); ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
|
7 |
+
<?php foreach($this->getUtilityOptionList() as $id => $option) { ?>
|
8 |
+
<tr>
|
9 |
+
<td>
|
10 |
+
<span class='aam-setting-title'><?php echo $option['title']; ?></span>
|
11 |
+
<p class="aam-setting-description">
|
12 |
+
<?php echo $option['descr']; ?>
|
13 |
+
</p>
|
14 |
+
</td>
|
15 |
+
<td class="text-center">
|
16 |
+
<input type="checkbox" name="<?php echo $id; ?>" id="utility-<?php echo $id; ?>" <?php echo ($option['value'] ? 'checked' : ''); ?> /> <label for="utility-<?php echo $id; ?>"></label>
|
17 |
+
</td>
|
18 |
+
</tr>
|
19 |
+
<?php } ?>
|
20 |
+
|
21 |
+
<?php do_action('aam-post-utilities-setting'); ?>
|
22 |
|
23 |
<tr><td colspan="2"></td></tr>
|
24 |
<tr>
|
29 |
</p>
|
30 |
</td>
|
31 |
<td>
|
32 |
+
<a href="#clear-settings-modal" data-toggle="modal" class="btn btn-danger btn-block">OK</a>
|
33 |
</td>
|
34 |
</tr>
|
35 |
</tbody>
|
Application/Core/API.php
CHANGED
@@ -16,7 +16,7 @@
|
|
16 |
final class AAM_Core_API {
|
17 |
|
18 |
/**
|
19 |
-
* Get
|
20 |
*
|
21 |
* @param string $option
|
22 |
* @param mixed $default
|
@@ -29,7 +29,13 @@ final class AAM_Core_API {
|
|
29 |
*/
|
30 |
public static function getOption($option, $default = FALSE, $blog_id = null) {
|
31 |
if (is_multisite()) {
|
32 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
$response = get_blog_option($blog, $option, $default);
|
34 |
} else {
|
35 |
$response = get_option($option, $default);
|
@@ -39,7 +45,7 @@ final class AAM_Core_API {
|
|
39 |
}
|
40 |
|
41 |
/**
|
42 |
-
* Update
|
43 |
*
|
44 |
* @param string $option
|
45 |
* @param mixed $data
|
@@ -52,7 +58,13 @@ final class AAM_Core_API {
|
|
52 |
*/
|
53 |
public static function updateOption($option, $data, $blog_id = null) {
|
54 |
if (is_multisite()) {
|
55 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
$response = update_blog_option($blog, $option, $data);
|
57 |
} else {
|
58 |
$response = update_option($option, $data);
|
@@ -62,7 +74,7 @@ final class AAM_Core_API {
|
|
62 |
}
|
63 |
|
64 |
/**
|
65 |
-
* Delete
|
66 |
*
|
67 |
* @param string $option
|
68 |
* @param int $blog_id
|
@@ -74,7 +86,13 @@ final class AAM_Core_API {
|
|
74 |
*/
|
75 |
public static function deleteOption($option, $blog_id = null) {
|
76 |
if (is_multisite()) {
|
77 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
78 |
$response = delete_blog_option($blog, $option);
|
79 |
} else {
|
80 |
$response = delete_option($option);
|
@@ -114,7 +132,7 @@ final class AAM_Core_API {
|
|
114 |
'method' => 'POST',
|
115 |
'body' => $params,
|
116 |
'cookies' => $requestCookies,
|
117 |
-
'timeout' =>
|
118 |
));
|
119 |
}
|
120 |
|
@@ -123,7 +141,7 @@ final class AAM_Core_API {
|
|
123 |
*
|
124 |
* @global WP_Roles $wp_roles
|
125 |
*
|
126 |
-
* @return
|
127 |
*/
|
128 |
public static function getRoles() {
|
129 |
global $wp_roles;
|
@@ -183,7 +201,7 @@ final class AAM_Core_API {
|
|
183 |
|
184 |
return $caps;
|
185 |
}
|
186 |
-
|
187 |
/**
|
188 |
* Reject the request
|
189 |
*
|
@@ -197,21 +215,12 @@ final class AAM_Core_API {
|
|
197 |
* @access public
|
198 |
*/
|
199 |
public static function reject($area = 'frontend', $args = array()) {
|
200 |
-
$
|
201 |
-
|
202 |
-
AAM_Core_Config::get("{$area}.redirect.type"),
|
203 |
-
"{$area}.redirect.type",
|
204 |
-
AAM::getUser()
|
205 |
-
);
|
206 |
|
207 |
if (!empty($type)) {
|
208 |
-
$redirect =
|
209 |
-
|
210 |
-
AAM_Core_Config::get("{$area}.redirect.{$type}"),
|
211 |
-
"{$area}.redirect.{$type}",
|
212 |
-
AAM::getUser()
|
213 |
-
);
|
214 |
-
} else {
|
215 |
$redirect = AAM_Core_Config::get("{$area}.access.deny.redirect");
|
216 |
}
|
217 |
|
@@ -228,7 +237,7 @@ final class AAM_Core_API {
|
|
228 |
if (filter_var($location, FILTER_VALIDATE_URL)) {
|
229 |
wp_redirect($location);
|
230 |
} elseif (preg_match('/^[\d]+$/', $location)) {
|
231 |
-
|
232 |
} elseif (is_callable($location)) {
|
233 |
call_user_func($location, $args);
|
234 |
} elseif (!empty($args['callback']) && is_callable($args['callback'])) {
|
16 |
final class AAM_Core_API {
|
17 |
|
18 |
/**
|
19 |
+
* Get option
|
20 |
*
|
21 |
* @param string $option
|
22 |
* @param mixed $default
|
29 |
*/
|
30 |
public static function getOption($option, $default = FALSE, $blog_id = null) {
|
31 |
if (is_multisite()) {
|
32 |
+
if (is_null($blog_id)) {
|
33 |
+
$blog = get_current_blog_id();
|
34 |
+
} elseif ($blog_id == 'site') {
|
35 |
+
$blog = (defined('SITE_ID_CURRENT_SITE') ? SITE_ID_CURRENT_SITE : 1);
|
36 |
+
} else {
|
37 |
+
$blog = $blog_id;
|
38 |
+
}
|
39 |
$response = get_blog_option($blog, $option, $default);
|
40 |
} else {
|
41 |
$response = get_option($option, $default);
|
45 |
}
|
46 |
|
47 |
/**
|
48 |
+
* Update option
|
49 |
*
|
50 |
* @param string $option
|
51 |
* @param mixed $data
|
58 |
*/
|
59 |
public static function updateOption($option, $data, $blog_id = null) {
|
60 |
if (is_multisite()) {
|
61 |
+
if (is_null($blog_id)) {
|
62 |
+
$blog = get_current_blog_id();
|
63 |
+
} elseif ($blog_id == 'site') {
|
64 |
+
$blog = (defined('SITE_ID_CURRENT_SITE') ? SITE_ID_CURRENT_SITE : 1);
|
65 |
+
} else {
|
66 |
+
$blog = $blog_id;
|
67 |
+
}
|
68 |
$response = update_blog_option($blog, $option, $data);
|
69 |
} else {
|
70 |
$response = update_option($option, $data);
|
74 |
}
|
75 |
|
76 |
/**
|
77 |
+
* Delete option
|
78 |
*
|
79 |
* @param string $option
|
80 |
* @param int $blog_id
|
86 |
*/
|
87 |
public static function deleteOption($option, $blog_id = null) {
|
88 |
if (is_multisite()) {
|
89 |
+
if (is_null($blog_id)) {
|
90 |
+
$blog = get_current_blog_id();
|
91 |
+
} elseif ($blog_id == 'site') {
|
92 |
+
$blog = (defined('SITE_ID_CURRENT_SITE') ? SITE_ID_CURRENT_SITE : 1);
|
93 |
+
} else {
|
94 |
+
$blog = $blog_id;
|
95 |
+
}
|
96 |
$response = delete_blog_option($blog, $option);
|
97 |
} else {
|
98 |
$response = delete_option($option);
|
132 |
'method' => 'POST',
|
133 |
'body' => $params,
|
134 |
'cookies' => $requestCookies,
|
135 |
+
'timeout' => 10
|
136 |
));
|
137 |
}
|
138 |
|
141 |
*
|
142 |
* @global WP_Roles $wp_roles
|
143 |
*
|
144 |
+
* @return WP_Roles
|
145 |
*/
|
146 |
public static function getRoles() {
|
147 |
global $wp_roles;
|
201 |
|
202 |
return $caps;
|
203 |
}
|
204 |
+
|
205 |
/**
|
206 |
* Reject the request
|
207 |
*
|
215 |
* @access public
|
216 |
*/
|
217 |
public static function reject($area = 'frontend', $args = array()) {
|
218 |
+
$object = AAM::getUser()->getObject('redirect');
|
219 |
+
$type = $object->get("{$area}.redirect.type");
|
|
|
|
|
|
|
|
|
220 |
|
221 |
if (!empty($type)) {
|
222 |
+
$redirect = $object->get("{$area}.redirect.{$type}");
|
223 |
+
} else { //ConfigPress setup
|
|
|
|
|
|
|
|
|
|
|
224 |
$redirect = AAM_Core_Config::get("{$area}.access.deny.redirect");
|
225 |
}
|
226 |
|
237 |
if (filter_var($location, FILTER_VALIDATE_URL)) {
|
238 |
wp_redirect($location);
|
239 |
} elseif (preg_match('/^[\d]+$/', $location)) {
|
240 |
+
wp_safe_redirect(get_post_permalink($location));
|
241 |
} elseif (is_callable($location)) {
|
242 |
call_user_func($location, $args);
|
243 |
} elseif (!empty($args['callback']) && is_callable($args['callback'])) {
|
Application/Core/Cache.php
CHANGED
@@ -54,7 +54,7 @@ class AAM_Core_Cache {
|
|
54 |
/**
|
55 |
* Set cache option
|
56 |
*
|
57 |
-
* @param
|
58 |
* @param string $option
|
59 |
* @param mixed $data
|
60 |
*
|
@@ -63,14 +63,21 @@ class AAM_Core_Cache {
|
|
63 |
* @access public
|
64 |
*/
|
65 |
public static function set($subject, $option, $data) {
|
66 |
-
if ($
|
67 |
-
|
68 |
-
|
69 |
-
self::$updated = true;
|
70 |
-
}
|
71 |
}
|
72 |
}
|
73 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
/**
|
75 |
* Clear cache
|
76 |
*
|
54 |
/**
|
55 |
* Set cache option
|
56 |
*
|
57 |
+
* @param string $subject
|
58 |
* @param string $option
|
59 |
* @param mixed $data
|
60 |
*
|
63 |
* @access public
|
64 |
*/
|
65 |
public static function set($subject, $option, $data) {
|
66 |
+
if (!isset(self::$cache[$option]) || (self::$cache[$option] != $data)) {
|
67 |
+
self::$cache[$option] = $data;
|
68 |
+
self::$updated = true;
|
|
|
|
|
69 |
}
|
70 |
}
|
71 |
|
72 |
+
/**
|
73 |
+
*
|
74 |
+
* @param type $option
|
75 |
+
* @return type
|
76 |
+
*/
|
77 |
+
public static function has($option) {
|
78 |
+
return (isset(self::$cache[$option]));
|
79 |
+
}
|
80 |
+
|
81 |
/**
|
82 |
* Clear cache
|
83 |
*
|
Application/Core/Compatibility.php
ADDED
@@ -0,0 +1,124 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
* Core compatibility with older versions
|
12 |
+
*
|
13 |
+
* @package AAM
|
14 |
+
* @author Vasyl Martyniuk <vasyl@vasyltech.com>
|
15 |
+
* @todo Remove Feb 2018
|
16 |
+
*/
|
17 |
+
class AAM_Core_Compatibility {
|
18 |
+
|
19 |
+
/**
|
20 |
+
*
|
21 |
+
*/
|
22 |
+
public static function initExtensions() {
|
23 |
+
//block deprecated extensions from loading
|
24 |
+
define('AAM_UTILITIES', '99');
|
25 |
+
define('AAM_POST_FILTER', '99');
|
26 |
+
define('AAM_REDIRECT', '99');
|
27 |
+
define('AAM_CONTENT_TEASER', '99');
|
28 |
+
define('AAM_LOGIN_REDIRECT', '99');
|
29 |
+
//TODO - Remove this in Jul 2018
|
30 |
+
|
31 |
+
//caching filter & action
|
32 |
+
add_filter(
|
33 |
+
'aam-read-cache-filter', 'AAM_Core_Compatibility::readCache', 10, 3
|
34 |
+
);
|
35 |
+
|
36 |
+
//utilities option
|
37 |
+
add_filter('aam-utility-property', 'AAM_Core_Config::get', 10, 2);
|
38 |
+
}
|
39 |
+
|
40 |
+
/**
|
41 |
+
*
|
42 |
+
* @param type $value
|
43 |
+
* @param type $option
|
44 |
+
* @param type $subject
|
45 |
+
* @return type
|
46 |
+
*/
|
47 |
+
public static function readCache($value, $option, $subject) {
|
48 |
+
return AAM_Core_Cache::get($option);
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
*
|
53 |
+
* @return type
|
54 |
+
*/
|
55 |
+
public static function getExtensionList() {
|
56 |
+
$extensions = AAM_Core_API::getOption('aam-extensions', array(), 'site');
|
57 |
+
|
58 |
+
if (empty($extensions)) {
|
59 |
+
$extensions = AAM_Core_API::getOption('aam-extension-license', array(), 'site');
|
60 |
+
if (!empty($extensions)) {
|
61 |
+
$converted = array();
|
62 |
+
|
63 |
+
foreach($extensions as $title => $license) {
|
64 |
+
$id = strtoupper(str_replace(' ', '_', $title));
|
65 |
+
if (defined($id)) { //include only installed
|
66 |
+
$converted[$id] = array(
|
67 |
+
'license' => $license,
|
68 |
+
'status' => AAM_Extension_Repository::STATUS_INSTALLED
|
69 |
+
);
|
70 |
+
}
|
71 |
+
}
|
72 |
+
|
73 |
+
AAM_Core_API::updateOption('aam-extensions', $converted);
|
74 |
+
AAM_Core_API::deleteOption('aam-extension-license');
|
75 |
+
}
|
76 |
+
}
|
77 |
+
|
78 |
+
return $extensions;
|
79 |
+
}
|
80 |
+
|
81 |
+
/**
|
82 |
+
*
|
83 |
+
* @return type
|
84 |
+
*/
|
85 |
+
public static function getConfig() {
|
86 |
+
$config = AAM_Core_API::getOption('aam-utilities', array());
|
87 |
+
|
88 |
+
foreach(array_keys($config) as $option) {
|
89 |
+
if (strpos($option, 'frontend.redirect') !== false) {
|
90 |
+
self::convertConfigOption('redirect', $config, $option);
|
91 |
+
} elseif (strpos($option, 'backend.redirect') !== false) {
|
92 |
+
self::convertConfigOption('redirect', $config, $option);
|
93 |
+
} elseif (strpos($option, 'login.redirect') !== false) {
|
94 |
+
self::convertConfigOption('loginRedirect', $config, $option);
|
95 |
+
} elseif (strpos($option, 'frontend.teaser') !== false) {
|
96 |
+
self::convertConfigOption('teaser', $config, $option);
|
97 |
+
}
|
98 |
+
}
|
99 |
+
|
100 |
+
return $config;
|
101 |
+
}
|
102 |
+
|
103 |
+
/**
|
104 |
+
*
|
105 |
+
* @staticvar type $subject
|
106 |
+
* @param type $oid
|
107 |
+
* @param type &$config
|
108 |
+
* @param type $option
|
109 |
+
*
|
110 |
+
* @todo Legacy remove Jul 2018
|
111 |
+
*/
|
112 |
+
protected static function convertConfigOption($oid, &$config, $option) {
|
113 |
+
static $subject = null;
|
114 |
+
|
115 |
+
if (is_null($subject)) {
|
116 |
+
$subject = new AAM_Core_Subject_Default;
|
117 |
+
}
|
118 |
+
|
119 |
+
$subject->getObject($oid)->save($option, $config[$option]);
|
120 |
+
unset($config[$option]);
|
121 |
+
AAM_Core_API::updateOption('aam-utilities', $config);
|
122 |
+
}
|
123 |
+
|
124 |
+
}
|
Application/Core/Config.php
CHANGED
@@ -21,7 +21,7 @@ class AAM_Core_Config {
|
|
21 |
* aam-utilities slug is used because AAM Utilities with v3.4 became a core
|
22 |
* feature instead of independent extension.
|
23 |
*/
|
24 |
-
const
|
25 |
|
26 |
/**
|
27 |
* Core config
|
@@ -40,7 +40,11 @@ class AAM_Core_Config {
|
|
40 |
* @access public
|
41 |
*/
|
42 |
public static function bootstrap() {
|
43 |
-
|
|
|
|
|
|
|
|
|
44 |
}
|
45 |
|
46 |
/**
|
@@ -76,7 +80,29 @@ class AAM_Core_Config {
|
|
76 |
self::$config[$option] = $value;
|
77 |
|
78 |
//save config to database
|
79 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
80 |
}
|
81 |
|
82 |
/**
|
21 |
* aam-utilities slug is used because AAM Utilities with v3.4 became a core
|
22 |
* feature instead of independent extension.
|
23 |
*/
|
24 |
+
const OPTION = 'aam-utilities';
|
25 |
|
26 |
/**
|
27 |
* Core config
|
40 |
* @access public
|
41 |
*/
|
42 |
public static function bootstrap() {
|
43 |
+
if (is_multisite()) {
|
44 |
+
self::$config = AAM_Core_API::getOption(self::OPTION, array(), 'site');
|
45 |
+
} else {
|
46 |
+
self::$config = AAM_Core_Compatibility::getConfig();
|
47 |
+
}
|
48 |
}
|
49 |
|
50 |
/**
|
80 |
self::$config[$option] = $value;
|
81 |
|
82 |
//save config to database
|
83 |
+
if (is_multisite()) {
|
84 |
+
$result = AAM_Core_API::updateOption(self::OPTION, self::$config, 'site');
|
85 |
+
} else {
|
86 |
+
$result = AAM_Core_API::updateOption(self::OPTION, self::$config);
|
87 |
+
}
|
88 |
+
|
89 |
+
|
90 |
+
return $result;
|
91 |
+
}
|
92 |
+
|
93 |
+
/**
|
94 |
+
*
|
95 |
+
* @param type $option
|
96 |
+
*/
|
97 |
+
public static function delete($option) {
|
98 |
+
if (isset(self::$config[$option])) {
|
99 |
+
unset(self::$config[$option]);
|
100 |
+
if (is_multisite()) {
|
101 |
+
AAM_Core_API::updateOption(self::OPTION, self::$config, 'site');
|
102 |
+
} else {
|
103 |
+
AAM_Core_API::updateOption(self::OPTION, self::$config);
|
104 |
+
}
|
105 |
+
}
|
106 |
}
|
107 |
|
108 |
/**
|
Application/Core/Object/LoginRedirect.php
ADDED
@@ -0,0 +1,106 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
* Login redirect object
|
12 |
+
*
|
13 |
+
* @package AAM
|
14 |
+
* @author Vasyl Martyniuk <vasyl@vasyltech.com>
|
15 |
+
*/
|
16 |
+
class AAM_Core_Object_LoginRedirect extends AAM_Core_Object {
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Constructor
|
20 |
+
*
|
21 |
+
* @param AAM_Core_Subject $subject
|
22 |
+
*
|
23 |
+
* @return void
|
24 |
+
*
|
25 |
+
* @access public
|
26 |
+
*/
|
27 |
+
public function __construct(AAM_Core_Subject $subject) {
|
28 |
+
parent::__construct($subject);
|
29 |
+
|
30 |
+
$this->read();
|
31 |
+
}
|
32 |
+
|
33 |
+
/**
|
34 |
+
*
|
35 |
+
* @return void
|
36 |
+
*
|
37 |
+
* @access public
|
38 |
+
*/
|
39 |
+
public function read() {
|
40 |
+
$option = $this->getSubject()->readOption('loginredirect');
|
41 |
+
|
42 |
+
//inherit from default Administrator role
|
43 |
+
if (empty($option)) {
|
44 |
+
//inherit from parent subject
|
45 |
+
$option = $this->getSubject()->inheritFromParent('loginredirect');
|
46 |
+
} elseif (method_exists($this, 'setOverwritten')) { //TODO - Support legacy
|
47 |
+
$this->setOverwritten(true);
|
48 |
+
}
|
49 |
+
|
50 |
+
$this->setOption($option);
|
51 |
+
}
|
52 |
+
|
53 |
+
/**
|
54 |
+
* Save options
|
55 |
+
*
|
56 |
+
* @param string $property
|
57 |
+
* @param boolean $value
|
58 |
+
*
|
59 |
+
* @return boolean
|
60 |
+
*
|
61 |
+
* @access public
|
62 |
+
*/
|
63 |
+
public function save($property, $value) {
|
64 |
+
$option = $this->getOption();
|
65 |
+
$option[$property] = $value;
|
66 |
+
|
67 |
+
return $this->getSubject()->updateOption($option, 'loginredirect');
|
68 |
+
}
|
69 |
+
|
70 |
+
/**
|
71 |
+
*
|
72 |
+
* @return type
|
73 |
+
*/
|
74 |
+
public function reset() {
|
75 |
+
return $this->getSubject()->deleteOption('loginredirect');
|
76 |
+
}
|
77 |
+
|
78 |
+
/**
|
79 |
+
*
|
80 |
+
* @param string $param
|
81 |
+
*
|
82 |
+
* @return boolean
|
83 |
+
*
|
84 |
+
* @access public
|
85 |
+
*/
|
86 |
+
public function has($param) {
|
87 |
+
$option = $this->getOption();
|
88 |
+
|
89 |
+
return !empty($option[$param]);
|
90 |
+
}
|
91 |
+
|
92 |
+
/**
|
93 |
+
*
|
94 |
+
* @param string $param
|
95 |
+
*
|
96 |
+
* @return boolean
|
97 |
+
*
|
98 |
+
* @access public
|
99 |
+
*/
|
100 |
+
public function get($param) {
|
101 |
+
$option = $this->getOption();
|
102 |
+
|
103 |
+
return !empty($option[$param]) ? $option[$param] : null;
|
104 |
+
}
|
105 |
+
|
106 |
+
}
|
Application/Core/Object/Post.php
CHANGED
@@ -23,6 +23,8 @@ class AAM_Core_Object_Post extends AAM_Core_Object {
|
|
23 |
* @access private
|
24 |
*/
|
25 |
private $_post;
|
|
|
|
|
26 |
|
27 |
/**
|
28 |
* Constructor
|
@@ -38,7 +40,7 @@ class AAM_Core_Object_Post extends AAM_Core_Object {
|
|
38 |
parent::__construct($subject);
|
39 |
|
40 |
//make sure that we are dealing with WP_Post object
|
41 |
-
if ($post
|
42 |
$this->setPost($post);
|
43 |
} elseif (intval($post)) {
|
44 |
$this->setPost(get_post($post));
|
@@ -96,14 +98,18 @@ class AAM_Core_Object_Post extends AAM_Core_Object {
|
|
96 |
if (empty($option)) {
|
97 |
$option = $subject->inheritFromParent('post', $this->getPost()->ID);
|
98 |
}
|
|
|
|
|
|
|
|
|
99 |
}
|
100 |
|
101 |
$this->setOption($option);
|
102 |
-
|
103 |
//if result is empty, simply cache the false to speed-up
|
104 |
AAM_Core_Cache::set($subject, $chname, (empty($option) ? false : $option));
|
105 |
}
|
106 |
-
|
107 |
/**
|
108 |
* Save options
|
109 |
*
|
@@ -116,9 +122,15 @@ class AAM_Core_Object_Post extends AAM_Core_Object {
|
|
116 |
|
117 |
$option[$property] = $checked;
|
118 |
|
119 |
-
|
120 |
$this->getPost()->ID, $this->getOptionName(), $option
|
121 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
122 |
}
|
123 |
|
124 |
/**
|
@@ -169,7 +181,7 @@ class AAM_Core_Object_Post extends AAM_Core_Object {
|
|
169 |
}
|
170 |
|
171 |
/**
|
172 |
-
* Check if
|
173 |
*
|
174 |
* @param string $area
|
175 |
* @param string $action
|
@@ -184,6 +196,22 @@ class AAM_Core_Object_Post extends AAM_Core_Object {
|
|
184 |
return (isset($option[$action]) && $option[$action]);
|
185 |
}
|
186 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
187 |
/**
|
188 |
* Get Post
|
189 |
*
|
23 |
* @access private
|
24 |
*/
|
25 |
private $_post;
|
26 |
+
|
27 |
+
private $_default = null;
|
28 |
|
29 |
/**
|
30 |
* Constructor
|
40 |
parent::__construct($subject);
|
41 |
|
42 |
//make sure that we are dealing with WP_Post object
|
43 |
+
if (is_a($post, 'WP_Post')) {
|
44 |
$this->setPost($post);
|
45 |
} elseif (intval($post)) {
|
46 |
$this->setPost(get_post($post));
|
98 |
if (empty($option)) {
|
99 |
$option = $subject->inheritFromParent('post', $this->getPost()->ID);
|
100 |
}
|
101 |
+
|
102 |
+
if (empty($option)) {
|
103 |
+
$option = $subject->inheritFromDefault('post', $this->getPost()->ID);
|
104 |
+
}
|
105 |
}
|
106 |
|
107 |
$this->setOption($option);
|
108 |
+
|
109 |
//if result is empty, simply cache the false to speed-up
|
110 |
AAM_Core_Cache::set($subject, $chname, (empty($option) ? false : $option));
|
111 |
}
|
112 |
+
|
113 |
/**
|
114 |
* Save options
|
115 |
*
|
122 |
|
123 |
$option[$property] = $checked;
|
124 |
|
125 |
+
$result = update_post_meta(
|
126 |
$this->getPost()->ID, $this->getOptionName(), $option
|
127 |
);
|
128 |
+
|
129 |
+
if ($result) {
|
130 |
+
$this->setOption($option);
|
131 |
+
}
|
132 |
+
|
133 |
+
return $result;
|
134 |
}
|
135 |
|
136 |
/**
|
181 |
}
|
182 |
|
183 |
/**
|
184 |
+
* Check if option is set
|
185 |
*
|
186 |
* @param string $area
|
187 |
* @param string $action
|
196 |
return (isset($option[$action]) && $option[$action]);
|
197 |
}
|
198 |
|
199 |
+
/**
|
200 |
+
* Get option
|
201 |
+
*
|
202 |
+
* @param string $area
|
203 |
+
* @param string $action
|
204 |
+
*
|
205 |
+
* @return boolean
|
206 |
+
*
|
207 |
+
* @access public
|
208 |
+
*/
|
209 |
+
public function get($action) {
|
210 |
+
$option = $this->getOption();
|
211 |
+
|
212 |
+
return (isset($option[$action]) ? $option[$action] : null);
|
213 |
+
}
|
214 |
+
|
215 |
/**
|
216 |
* Get Post
|
217 |
*
|
Application/Core/Object/Redirect.php
ADDED
@@ -0,0 +1,127 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
* Access denied redirect object
|
12 |
+
*
|
13 |
+
* @package AAM
|
14 |
+
* @author Vasyl Martyniuk <vasyl@vasyltech.com>
|
15 |
+
*/
|
16 |
+
class AAM_Core_Object_Redirect extends AAM_Core_Object {
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Constructor
|
20 |
+
*
|
21 |
+
* @param AAM_Core_Subject $subject
|
22 |
+
*
|
23 |
+
* @return void
|
24 |
+
*
|
25 |
+
* @access public
|
26 |
+
*/
|
27 |
+
public function __construct(AAM_Core_Subject $subject) {
|
28 |
+
parent::__construct($subject);
|
29 |
+
|
30 |
+
$this->read();
|
31 |
+
}
|
32 |
+
|
33 |
+
/**
|
34 |
+
*
|
35 |
+
* @return void
|
36 |
+
*
|
37 |
+
* @access public
|
38 |
+
*/
|
39 |
+
public function read() {
|
40 |
+
$option = $this->getSubject()->readOption('redirect');
|
41 |
+
|
42 |
+
//inherit from default Administrator role
|
43 |
+
if (empty($option)) {
|
44 |
+
//inherit from parent subject
|
45 |
+
$option = $this->getSubject()->inheritFromParent('redirect');
|
46 |
+
|
47 |
+
if (empty($option)) {
|
48 |
+
$option = array();
|
49 |
+
$this->readByArea('frontend', $option);
|
50 |
+
$this->readByArea('backend', $option);
|
51 |
+
}
|
52 |
+
} elseif (method_exists($this, 'setOverwritten')) { //TODO - Support legacy
|
53 |
+
$this->setOverwritten(true);
|
54 |
+
}
|
55 |
+
|
56 |
+
$this->setOption($option);
|
57 |
+
}
|
58 |
+
|
59 |
+
/**
|
60 |
+
*
|
61 |
+
* @param type $area
|
62 |
+
* @param type $option
|
63 |
+
*/
|
64 |
+
protected function readByArea($area, &$option) {
|
65 |
+
$type = AAM_Core_Config::get("{$area}.redirect.type");
|
66 |
+
if ($type) {
|
67 |
+
$option["{$area}.redirect.type"] = $type;
|
68 |
+
$option["{$area}.redirect.{$type}"] = AAM_Core_Config::get(
|
69 |
+
"{$area}.redirect.{$type}"
|
70 |
+
);
|
71 |
+
}
|
72 |
+
}
|
73 |
+
|
74 |
+
/**
|
75 |
+
* Save options
|
76 |
+
*
|
77 |
+
* @param string $property
|
78 |
+
* @param boolean $value
|
79 |
+
*
|
80 |
+
* @return boolean
|
81 |
+
*
|
82 |
+
* @access public
|
83 |
+
*/
|
84 |
+
public function save($property, $value) {
|
85 |
+
$option = $this->getOption();
|
86 |
+
$option[$property] = $value;
|
87 |
+
|
88 |
+
return $this->getSubject()->updateOption($option, 'redirect');
|
89 |
+
}
|
90 |
+
|
91 |
+
/**
|
92 |
+
*
|
93 |
+
* @return type
|
94 |
+
*/
|
95 |
+
public function reset() {
|
96 |
+
return $this->getSubject()->deleteOption('redirect');
|
97 |
+
}
|
98 |
+
|
99 |
+
/**
|
100 |
+
*
|
101 |
+
* @param string $param
|
102 |
+
*
|
103 |
+
* @return boolean
|
104 |
+
*
|
105 |
+
* @access public
|
106 |
+
*/
|
107 |
+
public function has($param) {
|
108 |
+
$option = $this->getOption();
|
109 |
+
|
110 |
+
return !empty($option[$param]);
|
111 |
+
}
|
112 |
+
|
113 |
+
/**
|
114 |
+
*
|
115 |
+
* @param string $param
|
116 |
+
*
|
117 |
+
* @return boolean
|
118 |
+
*
|
119 |
+
* @access public
|
120 |
+
*/
|
121 |
+
public function get($param) {
|
122 |
+
$option = $this->getOption();
|
123 |
+
|
124 |
+
return !empty($option[$param]) ? $option[$param] : null;
|
125 |
+
}
|
126 |
+
|
127 |
+
}
|
Application/Core/Object/Teaser.php
ADDED
@@ -0,0 +1,124 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
* Teaser object
|
12 |
+
*
|
13 |
+
* @package AAM
|
14 |
+
* @author Vasyl Martyniuk <vasyl@vasyltech.com>
|
15 |
+
*/
|
16 |
+
class AAM_Core_Object_Teaser extends AAM_Core_Object {
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Constructor
|
20 |
+
*
|
21 |
+
* @param AAM_Core_Subject $subject
|
22 |
+
*
|
23 |
+
* @return void
|
24 |
+
*
|
25 |
+
* @access public
|
26 |
+
*/
|
27 |
+
public function __construct(AAM_Core_Subject $subject) {
|
28 |
+
parent::__construct($subject);
|
29 |
+
|
30 |
+
$this->read();
|
31 |
+
}
|
32 |
+
|
33 |
+
/**
|
34 |
+
*
|
35 |
+
* @return void
|
36 |
+
*
|
37 |
+
* @access public
|
38 |
+
*/
|
39 |
+
public function read() {
|
40 |
+
$option = $this->getSubject()->readOption('teaser');
|
41 |
+
|
42 |
+
//inherit from default Administrator role
|
43 |
+
if (empty($option)) {
|
44 |
+
//inherit from parent subject
|
45 |
+
$option = $this->getSubject()->inheritFromParent('teaser');
|
46 |
+
if (empty($option)) {
|
47 |
+
$option = array();
|
48 |
+
$this->readByArea('frontend', $option);
|
49 |
+
}
|
50 |
+
} elseif (method_exists($this, 'setOverwritten')) { //TODO - Support legacy
|
51 |
+
$this->setOverwritten(true);
|
52 |
+
}
|
53 |
+
|
54 |
+
$this->setOption($option);
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
*
|
59 |
+
* @param type $area
|
60 |
+
* @param type $option
|
61 |
+
*/
|
62 |
+
protected function readByArea($area, &$option) {
|
63 |
+
$message = AAM_Core_Config::get("{$area}.teaser.message");
|
64 |
+
$excerpt = AAM_Core_Config::get("{$area}.teaser.excerpt");
|
65 |
+
if ($message || $excerpt) {
|
66 |
+
$option["{$area}.teaser.message"] = $message;
|
67 |
+
$option["{$area}.teaser.excerpt"] = $excerpt;
|
68 |
+
}
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Save options
|
73 |
+
*
|
74 |
+
* @param string $property
|
75 |
+
* @param boolean $value
|
76 |
+
*
|
77 |
+
* @return boolean
|
78 |
+
*
|
79 |
+
* @access public
|
80 |
+
*/
|
81 |
+
public function save($property, $value) {
|
82 |
+
$option = $this->getOption();
|
83 |
+
$option[$property] = $value;
|
84 |
+
|
85 |
+
return $this->getSubject()->updateOption($option, 'teaser');
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
*
|
90 |
+
* @return type
|
91 |
+
*/
|
92 |
+
public function reset() {
|
93 |
+
return $this->getSubject()->deleteOption('teaser');
|
94 |
+
}
|
95 |
+
|
96 |
+
/**
|
97 |
+
*
|
98 |
+
* @param string $param
|
99 |
+
*
|
100 |
+
* @return boolean
|
101 |
+
*
|
102 |
+
* @access public
|
103 |
+
*/
|
104 |
+
public function has($param) {
|
105 |
+
$option = $this->getOption();
|
106 |
+
|
107 |
+
return isset($option[$param]);
|
108 |
+
}
|
109 |
+
|
110 |
+
/**
|
111 |
+
*
|
112 |
+
* @param string $param
|
113 |
+
*
|
114 |
+
* @return boolean
|
115 |
+
*
|
116 |
+
* @access public
|
117 |
+
*/
|
118 |
+
public function get($param) {
|
119 |
+
$option = $this->getOption();
|
120 |
+
|
121 |
+
return !empty($option[$param]) ? $option[$param] : null;
|
122 |
+
}
|
123 |
+
|
124 |
+
}
|
Application/Core/Repository.php
DELETED
@@ -1,321 +0,0 @@
|
|
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 |
-
* Extension Repository
|
12 |
-
*
|
13 |
-
* @package AAM
|
14 |
-
* @author Vasyl Martyniuk <vasyl@vasyltech.com>
|
15 |
-
*/
|
16 |
-
class AAM_Core_Repository {
|
17 |
-
|
18 |
-
/**
|
19 |
-
* Extension status: installed
|
20 |
-
*
|
21 |
-
* Extension has been installed and is up to date
|
22 |
-
*/
|
23 |
-
const STATUS_INSTALLED = 'installed';
|
24 |
-
|
25 |
-
/**
|
26 |
-
* Extension status: download
|
27 |
-
*
|
28 |
-
* Extension is not installed and either needs to be purchased or
|
29 |
-
* downloaded for free.
|
30 |
-
*/
|
31 |
-
const STATUS_DOWNLOAD = 'download';
|
32 |
-
|
33 |
-
/**
|
34 |
-
* Extension status: update
|
35 |
-
*
|
36 |
-
* New version of the extension has been detected.
|
37 |
-
*/
|
38 |
-
const STATUS_UPDATE = 'update';
|
39 |
-
|
40 |
-
/**
|
41 |
-
* Single instance of itself
|
42 |
-
*
|
43 |
-
* @var AAM_Core_Repository
|
44 |
-
*
|
45 |
-
* @access private
|
46 |
-
* @static
|
47 |
-
*/
|
48 |
-
private static $_instance = null;
|
49 |
-
|
50 |
-
/**
|
51 |
-
* Extension cache
|
52 |
-
*
|
53 |
-
* @var array
|
54 |
-
*
|
55 |
-
* @access protected
|
56 |
-
*/
|
57 |
-
protected $cache = array();
|
58 |
-
|
59 |
-
/**
|
60 |
-
* Consturctor
|
61 |
-
*
|
62 |
-
* @return void
|
63 |
-
*
|
64 |
-
* @access protected
|
65 |
-
*/
|
66 |
-
protected function __construct() {}
|
67 |
-
|
68 |
-
/**
|
69 |
-
* Get single instance of itself
|
70 |
-
*
|
71 |
-
* @param AAM $parent
|
72 |
-
*
|
73 |
-
* @return AAM_Core_Repository
|
74 |
-
*
|
75 |
-
* @access public
|
76 |
-
* @static
|
77 |
-
*/
|
78 |
-
public static function getInstance() {
|
79 |
-
if (is_null(self::$_instance)) {
|
80 |
-
self::$_instance = new self;
|
81 |
-
}
|
82 |
-
|
83 |
-
return self::$_instance;
|
84 |
-
}
|
85 |
-
|
86 |
-
/**
|
87 |
-
* Load active extensions
|
88 |
-
*
|
89 |
-
* @return void
|
90 |
-
*
|
91 |
-
* @access public
|
92 |
-
*/
|
93 |
-
public function load($dir = null) {
|
94 |
-
$basedir = (is_null($dir) ? $this->getBasedir() : $dir);
|
95 |
-
|
96 |
-
//since release 3.4 Utilities are intergreated into core as Settings
|
97 |
-
$this->integrateUtility();
|
98 |
-
|
99 |
-
if (file_exists($basedir)) {
|
100 |
-
//iterate through each active extension and load it
|
101 |
-
foreach (scandir($basedir) as $extension) {
|
102 |
-
if (!in_array($extension, array('.', '..'))) {
|
103 |
-
$this->bootstrapExtension($basedir . '/' . $extension);
|
104 |
-
}
|
105 |
-
}
|
106 |
-
//Very important hook for cases when there is extensions dependancy.
|
107 |
-
//For example AAM Plus Package depends on AAM Utitlities properties
|
108 |
-
do_action('aam-post-extensions-load');
|
109 |
-
}
|
110 |
-
}
|
111 |
-
|
112 |
-
/**
|
113 |
-
*
|
114 |
-
*/
|
115 |
-
protected function integrateUtility() {
|
116 |
-
//block AAM Utilities and Post Filter Extension from load
|
117 |
-
define('AAM_UTILITIES', '99');
|
118 |
-
define('AAM_POST_FILTER', '99');
|
119 |
-
//TODO - Remove this in Jul 2017
|
120 |
-
|
121 |
-
//caching filter & action
|
122 |
-
add_filter('aam-read-cache-filter', array($this, 'readCache'), 10, 3);
|
123 |
-
|
124 |
-
//utilities option
|
125 |
-
add_filter('aam-utility-property', 'AAM_Core_Config::get', 10, 2);
|
126 |
-
}
|
127 |
-
|
128 |
-
/**
|
129 |
-
*
|
130 |
-
* @param type $value
|
131 |
-
* @param type $option
|
132 |
-
* @param type $subject
|
133 |
-
* @return type
|
134 |
-
*/
|
135 |
-
public function readCache($value, $option, $subject) {
|
136 |
-
return AAM_Core_Cache::get($option);
|
137 |
-
}
|
138 |
-
|
139 |
-
/**
|
140 |
-
* Bootstrap the Extension
|
141 |
-
*
|
142 |
-
* In case of any errors, the output can be found in console
|
143 |
-
*
|
144 |
-
* @param string $path
|
145 |
-
*
|
146 |
-
* @return void
|
147 |
-
* @access protected
|
148 |
-
*/
|
149 |
-
protected function bootstrapExtension($path) {
|
150 |
-
$bootstrap = "{$path}/bootstrap.php";
|
151 |
-
|
152 |
-
if (file_exists($bootstrap)) { //bootstrap the extension
|
153 |
-
require($bootstrap);
|
154 |
-
}
|
155 |
-
}
|
156 |
-
|
157 |
-
/**
|
158 |
-
* Add new extension
|
159 |
-
*
|
160 |
-
* @param blob $content
|
161 |
-
*
|
162 |
-
* @return boolean|WP_Error
|
163 |
-
* @access public
|
164 |
-
* @global type $wp_filesystem
|
165 |
-
*/
|
166 |
-
public function addExtension($content) {
|
167 |
-
$filepath = $this->getBasedir() . '/' . uniqid('aam_');
|
168 |
-
|
169 |
-
$response = file_put_contents($filepath, $content);
|
170 |
-
if (!is_wp_error($response)) { //unzip the archive
|
171 |
-
WP_Filesystem(false, false, true); //init filesystem
|
172 |
-
$response = unzip_file($filepath, $this->getBasedir());
|
173 |
-
if (!is_wp_error($response)) {
|
174 |
-
$response = true;
|
175 |
-
}
|
176 |
-
@unlink($filepath); //remove the working archive
|
177 |
-
}
|
178 |
-
|
179 |
-
return $response;
|
180 |
-
}
|
181 |
-
|
182 |
-
/**
|
183 |
-
* Check extension status
|
184 |
-
*
|
185 |
-
* The list of extensions is comming from the external server. This list is
|
186 |
-
* updated daily by the registered cron-job.
|
187 |
-
* Each extension is following by next naming convension and stardard - the
|
188 |
-
* title of an extension contains only latin letters and spaces and name is
|
189 |
-
* no longer than 50 characters. As a standard, each extension defines the
|
190 |
-
* global contant that indicates an extension version. The name of the
|
191 |
-
* contants derives from the extension title by transforming all letters to
|
192 |
-
* upper case and replacing the white spaces with underscore "_"
|
193 |
-
* (e.g AAM Plus Package defines the contant AAM_PLUS_PACKAGE).
|
194 |
-
*
|
195 |
-
* @param string $id
|
196 |
-
*
|
197 |
-
* @return string
|
198 |
-
*
|
199 |
-
* @access public
|
200 |
-
*/
|
201 |
-
public function extensionStatus($id) {
|
202 |
-
static $cache = null;
|
203 |
-
|
204 |
-
$status = self::STATUS_INSTALLED;
|
205 |
-
$const = str_replace(' ', '_', strtoupper($id));
|
206 |
-
|
207 |
-
if (is_null($cache)) {
|
208 |
-
$cache = $this->getExtensionList();
|
209 |
-
}
|
210 |
-
|
211 |
-
if (!defined($const)) { //extension does not exist
|
212 |
-
$status = self::STATUS_DOWNLOAD;
|
213 |
-
} elseif (!empty($cache[$id])) {
|
214 |
-
//Check if user has the latest extension. Also ignore if there is no
|
215 |
-
//license stored for this extension
|
216 |
-
$version = version_compare(constant($const), $cache[$id]->version);
|
217 |
-
if ($version == -1 && !empty($cache[$id]->license)) {
|
218 |
-
$status = self::STATUS_UPDATE;
|
219 |
-
}
|
220 |
-
}
|
221 |
-
|
222 |
-
return $status;
|
223 |
-
}
|
224 |
-
|
225 |
-
/**
|
226 |
-
*
|
227 |
-
* @param type $title
|
228 |
-
* @return type
|
229 |
-
*/
|
230 |
-
public function getExtensionVersion($title) {
|
231 |
-
$const = str_replace(' ', '_', strtoupper($title));
|
232 |
-
|
233 |
-
return (defined($const) ? constant($const) : '');
|
234 |
-
}
|
235 |
-
|
236 |
-
/**
|
237 |
-
*
|
238 |
-
* @param type $slug
|
239 |
-
*
|
240 |
-
* @return type
|
241 |
-
*/
|
242 |
-
public function pluginStatus($slug) {
|
243 |
-
require_once( ABSPATH . 'wp-admin/includes/plugin-install.php' );
|
244 |
-
|
245 |
-
$plugin = plugins_api('plugin_information', array('slug' => $slug));
|
246 |
-
|
247 |
-
return install_plugin_install_status( $plugin);
|
248 |
-
}
|
249 |
-
|
250 |
-
/**
|
251 |
-
*
|
252 |
-
* @return type
|
253 |
-
*/
|
254 |
-
public function getExtensionList() {
|
255 |
-
if (empty($this->cache)) {
|
256 |
-
$list = AAM_Core_API::getOption('aam-extension-repository', array());
|
257 |
-
$licenses = AAM_Core_API::getOption('aam-extension-license', array());
|
258 |
-
|
259 |
-
//WP Error Fix bug report
|
260 |
-
$list = (is_array($list) ? $list : array());
|
261 |
-
|
262 |
-
$this->cache = array();
|
263 |
-
foreach ($list as $row) {
|
264 |
-
$this->cache[$row->title] = $row;
|
265 |
-
if (isset($licenses[$row->title])) {
|
266 |
-
$this->cache[$row->title]->license = $licenses[$row->title];
|
267 |
-
}
|
268 |
-
$this->cache[$row->title]->status = $this->extensionStatus($row->title);
|
269 |
-
}
|
270 |
-
}
|
271 |
-
|
272 |
-
return $this->cache;
|
273 |
-
}
|
274 |
-
|
275 |
-
/**
|
276 |
-
*
|
277 |
-
* @param type $title
|
278 |
-
* @return type
|
279 |
-
*/
|
280 |
-
public function hasViolation($title) {
|
281 |
-
$list = $this->getExtensionList();
|
282 |
-
|
283 |
-
return (!empty($list[$title]->violation));
|
284 |
-
}
|
285 |
-
|
286 |
-
/**
|
287 |
-
* Check extension directory
|
288 |
-
*
|
289 |
-
* @return boolean|sstring
|
290 |
-
*
|
291 |
-
* @access public
|
292 |
-
*
|
293 |
-
* @global type $wp_filesystem
|
294 |
-
*/
|
295 |
-
public function checkDirectory() {
|
296 |
-
$error = false;
|
297 |
-
|
298 |
-
//create a directory if does not exist
|
299 |
-
$basedir = $this->getBasedir();
|
300 |
-
if (!file_exists($basedir)) {
|
301 |
-
if (!@mkdir($basedir, fileperms(ABSPATH) & 0777 | 0755, true)) {
|
302 |
-
$error = sprintf(__('Failed to create %s', AAM_KEY), $basedir);
|
303 |
-
}
|
304 |
-
} elseif (!is_writable($basedir)) {
|
305 |
-
$error = sprintf(
|
306 |
-
__('Directory %s is not writable', AAM_KEY), $basedir
|
307 |
-
);
|
308 |
-
}
|
309 |
-
|
310 |
-
return $error;
|
311 |
-
}
|
312 |
-
|
313 |
-
/**
|
314 |
-
*
|
315 |
-
* @return type
|
316 |
-
*/
|
317 |
-
public function getBasedir() {
|
318 |
-
return AAM_Core_Config::get('extentionDir', AAM_EXTENSION_BASE);
|
319 |
-
}
|
320 |
-
|
321 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Application/Core/Subject.php
CHANGED
@@ -38,7 +38,7 @@ abstract class AAM_Core_Subject {
|
|
38 |
private $_subject;
|
39 |
|
40 |
/**
|
41 |
-
* List of Objects to be access
|
42 |
*
|
43 |
* All access control objects like Admin Menu, Metaboxes, Posts etc
|
44 |
*
|
@@ -78,7 +78,7 @@ abstract class AAM_Core_Subject {
|
|
78 |
$subject = $this->getSubject();
|
79 |
|
80 |
//make sure that method is callable
|
81 |
-
if (
|
82 |
$response = call_user_func_array(array($subject, $name), $args);
|
83 |
} else {
|
84 |
$response = null;
|
@@ -284,7 +284,7 @@ abstract class AAM_Core_Subject {
|
|
284 |
}
|
285 |
|
286 |
/**
|
287 |
-
*
|
288 |
*
|
289 |
* If there is no parent subject, return null
|
290 |
*
|
38 |
private $_subject;
|
39 |
|
40 |
/**
|
41 |
+
* List of Objects to be access controlled for current subject
|
42 |
*
|
43 |
* All access control objects like Admin Menu, Metaboxes, Posts etc
|
44 |
*
|
78 |
$subject = $this->getSubject();
|
79 |
|
80 |
//make sure that method is callable
|
81 |
+
if (method_exists($subject, $name)) {
|
82 |
$response = call_user_func_array(array($subject, $name), $args);
|
83 |
} else {
|
84 |
$response = null;
|
284 |
}
|
285 |
|
286 |
/**
|
287 |
+
* Retrieve parent subject
|
288 |
*
|
289 |
* If there is no parent subject, return null
|
290 |
*
|
Application/Core/Subject/Default.php
CHANGED
@@ -19,7 +19,13 @@ class AAM_Core_Subject_Default extends AAM_Core_Subject {
|
|
19 |
* Subject UID: DEFAULT
|
20 |
*/
|
21 |
const UID = 'default';
|
22 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
/**
|
24 |
*
|
25 |
* @param type $value
|
@@ -63,5 +69,17 @@ class AAM_Core_Subject_Default extends AAM_Core_Subject {
|
|
63 |
public function getUID() {
|
64 |
return self::UID;
|
65 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
|
67 |
}
|
19 |
* Subject UID: DEFAULT
|
20 |
*/
|
21 |
const UID = 'default';
|
22 |
+
|
23 |
+
/**
|
24 |
+
*
|
25 |
+
* @var type
|
26 |
+
*/
|
27 |
+
protected static $instance = null;
|
28 |
+
|
29 |
/**
|
30 |
*
|
31 |
* @param type $value
|
69 |
public function getUID() {
|
70 |
return self::UID;
|
71 |
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
*
|
75 |
+
* @return type
|
76 |
+
*/
|
77 |
+
public static function getInstance() {
|
78 |
+
if (is_null(self::$instance)) {
|
79 |
+
self::$instance = new self;
|
80 |
+
}
|
81 |
+
|
82 |
+
return self::$instance;
|
83 |
+
}
|
84 |
|
85 |
}
|
Application/Core/Subject/Role.php
CHANGED
@@ -181,7 +181,7 @@ class AAM_Core_Subject_Role extends AAM_Core_Subject {
|
|
181 |
public function getParent() {
|
182 |
return apply_filters(
|
183 |
'aam-parent-role-filter',
|
184 |
-
|
185 |
$this
|
186 |
);
|
187 |
}
|
181 |
public function getParent() {
|
182 |
return apply_filters(
|
183 |
'aam-parent-role-filter',
|
184 |
+
AAM_Core_Subject_Default::getInstance(),
|
185 |
$this
|
186 |
);
|
187 |
}
|
Application/Core/Subject/User.php
CHANGED
@@ -66,14 +66,7 @@ class AAM_Core_Subject_User extends AAM_Core_Subject {
|
|
66 |
* @access protected
|
67 |
*/
|
68 |
protected function retrieveSubject() {
|
69 |
-
|
70 |
-
|
71 |
-
$user = $current_user;
|
72 |
-
if (is_a($user, 'WP_User') && ($user->ID == $this->getId())) {
|
73 |
-
$subject = $user;
|
74 |
-
} else {
|
75 |
-
$subject = new WP_User($this->getId());
|
76 |
-
}
|
77 |
|
78 |
//retrieve aam capabilities if are not retrieved yet
|
79 |
$caps = get_user_option(self::AAM_CAPKEY, $this->getId());
|
66 |
* @access protected
|
67 |
*/
|
68 |
protected function retrieveSubject() {
|
69 |
+
$subject = new WP_User($this->getId());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
|
71 |
//retrieve aam capabilities if are not retrieved yet
|
72 |
$caps = get_user_option(self::AAM_CAPKEY, $this->getId());
|
Application/Core/Subject/Visitor.php
CHANGED
@@ -62,5 +62,13 @@ class AAM_Core_Subject_Visitor extends AAM_Core_Subject {
|
|
62 |
public function getUID() {
|
63 |
return self::UID;
|
64 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
|
66 |
}
|
62 |
public function getUID() {
|
63 |
return self::UID;
|
64 |
}
|
65 |
+
|
66 |
+
/**
|
67 |
+
*
|
68 |
+
* @return type
|
69 |
+
*/
|
70 |
+
public function getParent() {
|
71 |
+
return AAM_Core_Subject_Default::getInstance();
|
72 |
+
}
|
73 |
|
74 |
}
|
Application/Extension/Compatibility.php
ADDED
@@ -0,0 +1,78 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
* Extension compatibility with older versions
|
12 |
+
*
|
13 |
+
* @package AAM
|
14 |
+
* @author Vasyl Martyniuk <vasyl@vasyltech.com>
|
15 |
+
* @todo Remove Feb 2018
|
16 |
+
*/
|
17 |
+
class AAM_Extension_Compatibility {
|
18 |
+
|
19 |
+
/**
|
20 |
+
*
|
21 |
+
*/
|
22 |
+
public static function init() {
|
23 |
+
//block deprecated extensions from loading
|
24 |
+
define('AAM_UTILITIES', '99');
|
25 |
+
define('AAM_POST_FILTER', '99');
|
26 |
+
define('AAM_REDIRECT', '99');
|
27 |
+
define('AAM_CONTENT_TEASER', '99');
|
28 |
+
define('AAM_LOGIN_REDIRECT', '99');
|
29 |
+
//TODO - Remove this in Jul 2018
|
30 |
+
|
31 |
+
//caching filter & action
|
32 |
+
add_filter(
|
33 |
+
'aam-read-cache-filter', 'AAM_Extension_Compatibility::readCache', 10, 3
|
34 |
+
);
|
35 |
+
|
36 |
+
//utilities option
|
37 |
+
add_filter('aam-utility-property', 'AAM_Core_Config::get', 10, 2);
|
38 |
+
}
|
39 |
+
|
40 |
+
/**
|
41 |
+
*
|
42 |
+
* @param type $value
|
43 |
+
* @param type $option
|
44 |
+
* @param type $subject
|
45 |
+
* @return type
|
46 |
+
*/
|
47 |
+
public static function readCache($value, $option, $subject) {
|
48 |
+
return AAM_Core_Cache::get($option);
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
*
|
53 |
+
* @return type
|
54 |
+
*/
|
55 |
+
public static function getExtensionList() {
|
56 |
+
$extensions = AAM_Core_API::getOption('aam-extensions', array());
|
57 |
+
|
58 |
+
if (empty($extensions)) {
|
59 |
+
$extensions = AAM_Core_API::getOption('aam-extension-license', array());
|
60 |
+
if (!empty($extensions)) {
|
61 |
+
$converted = array();
|
62 |
+
|
63 |
+
foreach($extensions as $title => $license) {
|
64 |
+
$converted[strtoupper(str_replace(' ', '_', $title))] = array(
|
65 |
+
'license' => $license,
|
66 |
+
'status' => AAM_Extension_Repository::STATUS_INSTALLED
|
67 |
+
);
|
68 |
+
}
|
69 |
+
|
70 |
+
AAM_Core_API::updateOption('aam-extensions', $converted);
|
71 |
+
AAM_Core_API::deleteOption('aam-extension-license');
|
72 |
+
}
|
73 |
+
}
|
74 |
+
|
75 |
+
return $extensions;
|
76 |
+
}
|
77 |
+
|
78 |
+
}
|
Application/Extension/List.php
ADDED
@@ -0,0 +1,78 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
return array(
|
11 |
+
array(
|
12 |
+
'title' => 'AAM Plus Package',
|
13 |
+
'id' => 'AAM_PLUS_PACKAGE',
|
14 |
+
'type' => 'commercial',
|
15 |
+
'price' => '$30',
|
16 |
+
'currency' => 'USD',
|
17 |
+
'description' => 'Our best selling extension that allows you to manage access to unlimited number of posts, pages or custom post types and define default access to ALL posts, pages, custom post types, categories or custom taxonomies. <a href="https://aamplugin.com/help/aam-plus-package-extension" target="_blank">Read more.</a>',
|
18 |
+
'storeURL' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=FGAHULDEFZV4U',
|
19 |
+
'version' => (defined('AAM_PLUS_PACKAGE') ? constant('AAM_PLUS_PACKAGE') : null)
|
20 |
+
),
|
21 |
+
array(
|
22 |
+
'title' => 'AAM Role Hierarchy',
|
23 |
+
'id' => 'AAM_ROLE_HIERARCHY',
|
24 |
+
'type' => 'commercial',
|
25 |
+
'price' => '$15',
|
26 |
+
'currency' => 'USD',
|
27 |
+
'description' => 'Create complex role hierarchy and automatically inherit access settings from parent roles. <a href="https://aamplugin.com/help/aam-role-hierarchy-extension" target="_blank">Read more.</a>',
|
28 |
+
'storeURL' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=K8DMZ66SAW8VG',
|
29 |
+
'version' => (defined('AAM_ROLE_HIERARCHY') ? constant('AAM_ROLE_HIERARCHY') : null)
|
30 |
+
),
|
31 |
+
array(
|
32 |
+
'title' => 'AAM Role Filter',
|
33 |
+
'id' => 'AAM_ROLE_FILTER',
|
34 |
+
'type' => 'commercial',
|
35 |
+
'price' => '$5',
|
36 |
+
'currency' => 'USD',
|
37 |
+
'description' => 'Based on user levels, restrict access to manage list of roles and users that have higher user level. <a href="https://aamplugin.com/help/aam-role-filter-extension" target="_blank">Read more.</a>',
|
38 |
+
'storeURL' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=G9V4BT3T8WJSN',
|
39 |
+
'version' => (defined('AAM_ROLE_FILTER') ? constant('AAM_ROLE_FILTER') : null)
|
40 |
+
),
|
41 |
+
array(
|
42 |
+
'title' => 'AAM Payment',
|
43 |
+
'id' => 'AAM_PAYMENT',
|
44 |
+
'type' => 'commercial',
|
45 |
+
'price' => '$20',
|
46 |
+
"new" => true,
|
47 |
+
'currency' => 'USD',
|
48 |
+
'description' => 'Start selling access to your posts, categories or user levels. <a href="https://aamplugin.com/help/aam-payment-extension" target="_blank">Read more.</a>',
|
49 |
+
'storeURL' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=FF3VE7B3YC3K6',
|
50 |
+
'version' => (defined('AAM_PAYMENT') ? constant('AAM_PAYMENT') : null)
|
51 |
+
),
|
52 |
+
array(
|
53 |
+
'title' => 'AAM Complete Package',
|
54 |
+
'id' => 'AAM_COMPLETE_PACKAGE',
|
55 |
+
'type' => 'commercial',
|
56 |
+
'price' => '$70',
|
57 |
+
'currency' => 'USD',
|
58 |
+
'description' => 'Get list of all available premium extensions in one package. Any additional premium extensions in the future will be included in this package.',
|
59 |
+
'storeURL' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=THJWEJR3URR8L',
|
60 |
+
'version' => (defined('AAM_COMPLETE_PACKAGE') ? constant('AAM_COMPLETE_PACKAGE') : null)
|
61 |
+
),
|
62 |
+
array(
|
63 |
+
'title' => 'AAM Multisite',
|
64 |
+
'id' => 'AAM_MULTISITE',
|
65 |
+
'type' => 'GNU',
|
66 |
+
'license' => 'AAMMULTISITE',
|
67 |
+
'description' => 'Convenient way to navigate between different sites in the Network Admin Panel.',
|
68 |
+
'version' => (defined('AAM_MULTISITE') ? constant('AAM_MULTISITE') : null)
|
69 |
+
),
|
70 |
+
array(
|
71 |
+
'title' => 'AAM ConfigPress',
|
72 |
+
'id' => 'AAM_CONFIGPRESS',
|
73 |
+
'type' => 'GNU',
|
74 |
+
'license' => 'AAMCONFIGPRESS',
|
75 |
+
'description' => 'Extension to manage AAM core functionality with advanced configuration settings.',
|
76 |
+
'version' => (defined('AAM_CONFIGPRESS') ? constant('AAM_CONFIGPRESS') : null)
|
77 |
+
)
|
78 |
+
);
|
Application/Extension/Repository.php
ADDED
@@ -0,0 +1,295 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
* Extension Repository
|
12 |
+
*
|
13 |
+
* @package AAM
|
14 |
+
* @author Vasyl Martyniuk <vasyl@vasyltech.com>
|
15 |
+
*/
|
16 |
+
class AAM_Extension_Repository {
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Extension status: installed
|
20 |
+
*
|
21 |
+
* Extension has been installed and is up to date
|
22 |
+
*/
|
23 |
+
const STATUS_INSTALLED = 'installed';
|
24 |
+
|
25 |
+
/**
|
26 |
+
* License violation
|
27 |
+
*
|
28 |
+
* Extension is inactive
|
29 |
+
*/
|
30 |
+
const STATUS_INACTIVE = 'inactive';
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Extension status: download
|
34 |
+
*
|
35 |
+
* Extension is not installed and either needs to be purchased or
|
36 |
+
* downloaded for free.
|
37 |
+
*/
|
38 |
+
const STATUS_DOWNLOAD = 'download';
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Extension status: update
|
42 |
+
*
|
43 |
+
* New version of the extension has been detected.
|
44 |
+
*/
|
45 |
+
const STATUS_UPDATE = 'update';
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Single instance of itself
|
49 |
+
*
|
50 |
+
* @var AAM_Extension_Repository
|
51 |
+
*
|
52 |
+
* @access private
|
53 |
+
* @static
|
54 |
+
*/
|
55 |
+
private static $_instance = null;
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Extension list
|
59 |
+
*
|
60 |
+
* @var array
|
61 |
+
*
|
62 |
+
* @access protected
|
63 |
+
*/
|
64 |
+
protected $list = array();
|
65 |
+
|
66 |
+
/**
|
67 |
+
* Constructor
|
68 |
+
*
|
69 |
+
* @return void
|
70 |
+
*
|
71 |
+
* @access protected
|
72 |
+
*/
|
73 |
+
protected function __construct() {}
|
74 |
+
|
75 |
+
/**
|
76 |
+
* Get single instance of itself
|
77 |
+
*
|
78 |
+
* @param AAM $parent
|
79 |
+
*
|
80 |
+
* @return AAM_Extension_Repository
|
81 |
+
*
|
82 |
+
* @access public
|
83 |
+
* @static
|
84 |
+
*/
|
85 |
+
public static function getInstance() {
|
86 |
+
if (is_null(self::$_instance)) {
|
87 |
+
self::$_instance = new self;
|
88 |
+
}
|
89 |
+
|
90 |
+
return self::$_instance;
|
91 |
+
}
|
92 |
+
|
93 |
+
/**
|
94 |
+
* Load active extensions
|
95 |
+
*
|
96 |
+
* @return void
|
97 |
+
*
|
98 |
+
* @access public
|
99 |
+
*/
|
100 |
+
public function load($dir = null) {
|
101 |
+
$basedir = (is_null($dir) ? $this->getBasedir() : $dir);
|
102 |
+
|
103 |
+
//since release 3.4 some extensions get intergreated into core
|
104 |
+
AAM_Core_Compatibility::initExtensions();
|
105 |
+
|
106 |
+
if (file_exists($basedir)) {
|
107 |
+
//iterate through each active extension and load it
|
108 |
+
foreach (scandir($basedir) as $extension) {
|
109 |
+
if (!in_array($extension, array('.', '..'))) {
|
110 |
+
$this->bootstrapExtension($basedir . '/' . $extension);
|
111 |
+
}
|
112 |
+
}
|
113 |
+
//Very important hook for cases when there is extensions dependancy.
|
114 |
+
//For example AAM Plus Package depends on AAM Utitlities properties
|
115 |
+
do_action('aam-post-extensions-load');
|
116 |
+
}
|
117 |
+
}
|
118 |
+
|
119 |
+
/**
|
120 |
+
* Bootstrap the Extension
|
121 |
+
*
|
122 |
+
* In case of any errors, the output can be found in console
|
123 |
+
*
|
124 |
+
* @param string $path
|
125 |
+
*
|
126 |
+
* @return void
|
127 |
+
* @access protected
|
128 |
+
*/
|
129 |
+
protected function bootstrapExtension($path) {
|
130 |
+
$bootstrap = "{$path}/bootstrap.php";
|
131 |
+
|
132 |
+
if (file_exists($bootstrap)) { //bootstrap the extension
|
133 |
+
require($bootstrap);
|
134 |
+
}
|
135 |
+
}
|
136 |
+
|
137 |
+
/**
|
138 |
+
* Check extension list
|
139 |
+
*
|
140 |
+
*/
|
141 |
+
public function check() {
|
142 |
+
$list = AAM_Core_Compatibility::getExtensionList();
|
143 |
+
|
144 |
+
foreach(AAM_Extension_Server::check() as $id => $item) {
|
145 |
+
if ($item->violation === true) {
|
146 |
+
$list[$id]['status'] = self::STATUS_INACTIVE;
|
147 |
+
} elseif (version_compare(constant($id), $item->version) === -1) {
|
148 |
+
$list[$id]['status'] = self::STATUS_UPDATE;
|
149 |
+
} else {
|
150 |
+
$list[$id]['status'] = self::STATUS_INSTALLED;
|
151 |
+
}
|
152 |
+
}
|
153 |
+
|
154 |
+
AAM_Core_API::updateOption('aam-extensions', $list);
|
155 |
+
}
|
156 |
+
|
157 |
+
/**
|
158 |
+
* Store the license key
|
159 |
+
*
|
160 |
+
* This is important to have just for the update extension purposes
|
161 |
+
*
|
162 |
+
* @param stdClass $package
|
163 |
+
* @param string $license
|
164 |
+
*
|
165 |
+
* @return void
|
166 |
+
*
|
167 |
+
* @access public
|
168 |
+
*/
|
169 |
+
public function storeLicense($package, $license) {
|
170 |
+
//retrieve the installed list of extensions
|
171 |
+
$list = AAM_Core_Compatibility::getExtensionList();
|
172 |
+
|
173 |
+
$list[$package->id] = array(
|
174 |
+
'license' => $license,
|
175 |
+
'status' => self::STATUS_INSTALLED,
|
176 |
+
);
|
177 |
+
|
178 |
+
//update the extension list
|
179 |
+
AAM_Core_API::updateOption('aam-extensions', $list);
|
180 |
+
}
|
181 |
+
|
182 |
+
|
183 |
+
/**
|
184 |
+
* Add new extension
|
185 |
+
*
|
186 |
+
* @param blob $zip
|
187 |
+
*
|
188 |
+
* @return boolean
|
189 |
+
* @access public
|
190 |
+
*/
|
191 |
+
public function add($zip) {
|
192 |
+
$filepath = $this->getBasedir() . '/' . uniqid('aam_');
|
193 |
+
$result = false;
|
194 |
+
|
195 |
+
if (file_put_contents($filepath, $zip)) { //unzip the archive
|
196 |
+
WP_Filesystem(false, false, true); //init filesystem
|
197 |
+
$result = unzip_file($filepath, $this->getBasedir());
|
198 |
+
if (!is_wp_error($result)) {
|
199 |
+
$result = true;
|
200 |
+
}
|
201 |
+
@unlink($filepath); //remove the working archive
|
202 |
+
}
|
203 |
+
|
204 |
+
return $result;
|
205 |
+
}
|
206 |
+
|
207 |
+
/**
|
208 |
+
* Get extension version
|
209 |
+
*
|
210 |
+
* @param string $id
|
211 |
+
*
|
212 |
+
* @return string|null
|
213 |
+
*
|
214 |
+
* @access public
|
215 |
+
*/
|
216 |
+
public function getVersion($id) {
|
217 |
+
return (defined($id) ? constant($id) : null);
|
218 |
+
}
|
219 |
+
|
220 |
+
/**
|
221 |
+
* Get extension list
|
222 |
+
*
|
223 |
+
* @return array
|
224 |
+
*
|
225 |
+
* @access public
|
226 |
+
*/
|
227 |
+
public function getList() {
|
228 |
+
if (empty($this->list)) {
|
229 |
+
$list = require dirname(__FILE__) . '/List.php';
|
230 |
+
$index = AAM_Core_Compatibility::getExtensionList();
|
231 |
+
|
232 |
+
foreach ($list as &$item) {
|
233 |
+
$id = $item['id'];
|
234 |
+
|
235 |
+
if (isset($index[$id])) {
|
236 |
+
$item['status'] = $index[$id]['status'];
|
237 |
+
} elseif (defined($id)) {
|
238 |
+
$item['status'] = self::STATUS_INSTALLED;
|
239 |
+
} else {
|
240 |
+
$item['status'] = self::STATUS_DOWNLOAD;
|
241 |
+
}
|
242 |
+
|
243 |
+
if (empty($item['license'])) {
|
244 |
+
if (!empty($index[$id]['license'])) {
|
245 |
+
$item['license'] = $index[$id]['license'];
|
246 |
+
} else {
|
247 |
+
$item['license'] = 0;
|
248 |
+
}
|
249 |
+
}
|
250 |
+
}
|
251 |
+
|
252 |
+
$this->list = $list;
|
253 |
+
}
|
254 |
+
|
255 |
+
return $this->list;
|
256 |
+
}
|
257 |
+
|
258 |
+
/**
|
259 |
+
* Check extension directory
|
260 |
+
*
|
261 |
+
* @return boolean|sstring
|
262 |
+
*
|
263 |
+
* @access public
|
264 |
+
*
|
265 |
+
* @global type $wp_filesystem
|
266 |
+
*/
|
267 |
+
public function checkDirectory() {
|
268 |
+
$error = false;
|
269 |
+
$basedir = $this->getBasedir();
|
270 |
+
|
271 |
+
if (!file_exists($basedir)) {
|
272 |
+
if (!@mkdir($basedir, fileperms(ABSPATH) & 0777 | 0755, true)) {
|
273 |
+
$error = sprintf(__('Failed to create %s', AAM_KEY), $basedir);
|
274 |
+
}
|
275 |
+
} elseif (!is_writable($basedir)) {
|
276 |
+
$error = sprintf(
|
277 |
+
__('Directory %s is not writable', AAM_KEY), $basedir
|
278 |
+
);
|
279 |
+
}
|
280 |
+
|
281 |
+
return $error;
|
282 |
+
}
|
283 |
+
|
284 |
+
/**
|
285 |
+
* Get base directory
|
286 |
+
*
|
287 |
+
* @return string
|
288 |
+
*
|
289 |
+
* @access public
|
290 |
+
*/
|
291 |
+
public function getBasedir() {
|
292 |
+
return AAM_Core_Config::get('extention.directory', AAM_EXTENSION_BASE);
|
293 |
+
}
|
294 |
+
|
295 |
+
}
|
Application/{Core → Extension}/Server.php
RENAMED
@@ -15,12 +15,12 @@
|
|
15 |
* @package AAM
|
16 |
* @author Vasyl Martyniuk <vasyl@vasyltech.com>
|
17 |
*/
|
18 |
-
final class
|
19 |
|
20 |
/**
|
21 |
* Server endpoint
|
22 |
*/
|
23 |
-
const SERVER_URL = '
|
24 |
|
25 |
/**
|
26 |
* Fetch the extension list
|
@@ -32,16 +32,19 @@ final class AAM_Core_Server {
|
|
32 |
* @access public
|
33 |
*/
|
34 |
public static function check() {
|
35 |
-
$domain
|
36 |
|
37 |
//prepare check params
|
38 |
-
$params = array(
|
|
|
|
|
|
|
|
|
39 |
|
40 |
//add list of all premium installed extensions
|
41 |
-
foreach(
|
42 |
-
if ($
|
43 |
-
|
44 |
-
$params['extensions'][$ext->title] = (isset($ext->license) ? $ext->license : null);
|
45 |
}
|
46 |
}
|
47 |
|
@@ -50,8 +53,8 @@ final class AAM_Core_Server {
|
|
50 |
|
51 |
if (!is_wp_error($response)) {
|
52 |
//WP Error Fix bug report
|
53 |
-
if ($response->error !== true && !empty($response->
|
54 |
-
$result = $response->
|
55 |
}
|
56 |
}
|
57 |
|
@@ -68,11 +71,11 @@ final class AAM_Core_Server {
|
|
68 |
* @access public
|
69 |
*/
|
70 |
public static function download($license) {
|
71 |
-
$
|
72 |
|
73 |
$response = self::send(
|
74 |
self::SERVER_URL . '/download',
|
75 |
-
array('license' => $license, 'domain' => $
|
76 |
);
|
77 |
|
78 |
if (!is_wp_error($response)) {
|
@@ -98,10 +101,15 @@ final class AAM_Core_Server {
|
|
98 |
* @access protected
|
99 |
*/
|
100 |
protected static function send($request, $params) {
|
|
|
|
|
|
|
101 |
$response = AAM_Core_API::cURL($request, false, $params);
|
102 |
-
|
103 |
if (!is_wp_error($response)) {
|
104 |
$response = json_decode($response['body']);
|
|
|
|
|
|
|
105 |
}
|
106 |
|
107 |
return $response;
|
15 |
* @package AAM
|
16 |
* @author Vasyl Martyniuk <vasyl@vasyltech.com>
|
17 |
*/
|
18 |
+
final class AAM_Extension_Server {
|
19 |
|
20 |
/**
|
21 |
* Server endpoint
|
22 |
*/
|
23 |
+
const SERVER_URL = 'https://aamplugin.com/api/v1';
|
24 |
|
25 |
/**
|
26 |
* Fetch the extension list
|
32 |
* @access public
|
33 |
*/
|
34 |
public static function check() {
|
35 |
+
$domain = parse_url(site_url(), PHP_URL_HOST);
|
36 |
|
37 |
//prepare check params
|
38 |
+
$params = array(
|
39 |
+
'domain' => $domain,
|
40 |
+
'version' => AAM_Core_API::version(),
|
41 |
+
'extensions' => array()
|
42 |
+
);
|
43 |
|
44 |
//add list of all premium installed extensions
|
45 |
+
foreach(AAM_Extension_Repository::getInstance()->getList() as $item) {
|
46 |
+
if ($item['status'] !== AAM_Extension_Repository::STATUS_DOWNLOAD) {
|
47 |
+
$params['extensions'][$item['title']] = $item['license'];
|
|
|
48 |
}
|
49 |
}
|
50 |
|
53 |
|
54 |
if (!is_wp_error($response)) {
|
55 |
//WP Error Fix bug report
|
56 |
+
if ($response->error !== true && !empty($response->extensions)) {
|
57 |
+
$result = $response->extensions;
|
58 |
}
|
59 |
}
|
60 |
|
71 |
* @access public
|
72 |
*/
|
73 |
public static function download($license) {
|
74 |
+
$domain = parse_url(site_url(), PHP_URL_HOST);
|
75 |
|
76 |
$response = self::send(
|
77 |
self::SERVER_URL . '/download',
|
78 |
+
array('license' => $license, 'domain' => $domain)
|
79 |
);
|
80 |
|
81 |
if (!is_wp_error($response)) {
|
101 |
* @access protected
|
102 |
*/
|
103 |
protected static function send($request, $params) {
|
104 |
+
//add AAM UID
|
105 |
+
$params['uid'] = AAM_Core_API::getOption('aam-uid', null, 'site');
|
106 |
+
|
107 |
$response = AAM_Core_API::cURL($request, false, $params);
|
|
|
108 |
if (!is_wp_error($response)) {
|
109 |
$response = json_decode($response['body']);
|
110 |
+
if (empty($params['uid']) && isset($response->uid)) {
|
111 |
+
AAM_Core_API::updateOption('aam-uid', $response->uid, 'site');
|
112 |
+
}
|
113 |
}
|
114 |
|
115 |
return $response;
|
Application/Frontend/Manager.php
CHANGED
@@ -39,7 +39,7 @@ class AAM_Frontend_Manager {
|
|
39 |
public function __construct() {
|
40 |
if (AAM_Core_Config::get('frontend-access-control', true)) {
|
41 |
//login hook
|
42 |
-
add_action('wp_login', array($this, 'login'),
|
43 |
|
44 |
//control WordPress frontend
|
45 |
add_action('wp', array($this, 'wp'), 999);
|
@@ -58,11 +58,41 @@ class AAM_Frontend_Manager {
|
|
58 |
if (AAM_Core_Config::get('large-post-number', false)) {
|
59 |
add_action('pre_get_posts', array($this, 'preparePostQuery'));
|
60 |
}
|
|
|
|
|
|
|
|
|
61 |
//filter post content
|
62 |
add_filter('the_content', array($this, 'theContent'), 999);
|
|
|
|
|
|
|
|
|
63 |
//admin bar
|
64 |
$this->checkAdminBar();
|
65 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
}
|
67 |
|
68 |
/**
|
@@ -70,32 +100,161 @@ class AAM_Frontend_Manager {
|
|
70 |
* @param type $login
|
71 |
* @param type $user
|
72 |
*/
|
73 |
-
public function login() {
|
74 |
-
$user = wp_get_current_user();
|
75 |
-
|
76 |
if (is_a($user, 'WP_User')) {
|
|
|
|
|
77 |
AAM_Core_API::deleteOption('aam-user-switch-' . $user->ID);
|
78 |
|
79 |
$subject = new AAM_Core_Subject_User($user->ID);
|
|
|
80 |
|
81 |
//if Login redirect is defined
|
82 |
-
$type
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
87 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
|
89 |
-
if ($
|
90 |
-
$
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
95 |
);
|
96 |
-
AAM_Core_API::redirect($redirect);
|
97 |
}
|
98 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
99 |
}
|
100 |
|
101 |
/**
|
@@ -108,7 +267,6 @@ class AAM_Frontend_Manager {
|
|
108 |
*/
|
109 |
public function wp() {
|
110 |
$post = $this->getCurrentPost();
|
111 |
-
|
112 |
if (is_a($post, 'WP_Post')) {
|
113 |
$this->checkPostReadAccess($post);
|
114 |
}
|
@@ -306,31 +464,6 @@ class AAM_Frontend_Manager {
|
|
306 |
}
|
307 |
}
|
308 |
|
309 |
-
/**
|
310 |
-
* Control User Block flag
|
311 |
-
*
|
312 |
-
* @param WP_Error $user
|
313 |
-
*
|
314 |
-
* @return WP_Error|WP_User
|
315 |
-
*
|
316 |
-
* @access public
|
317 |
-
*/
|
318 |
-
public function authenticate($user) {
|
319 |
-
if ($user->user_status == 1) {
|
320 |
-
$user = new WP_Error();
|
321 |
-
|
322 |
-
$message = '[ERROR]: User is locked. Please contact your website ';
|
323 |
-
$message .= 'administrator.';
|
324 |
-
|
325 |
-
$user->add(
|
326 |
-
'authentication_failed',
|
327 |
-
AAM_Backend_View_Helper::preparePhrase($message, 'strong')
|
328 |
-
);
|
329 |
-
}
|
330 |
-
|
331 |
-
return $user;
|
332 |
-
}
|
333 |
-
|
334 |
/**
|
335 |
*
|
336 |
* @param type $query
|
@@ -339,12 +472,20 @@ class AAM_Frontend_Manager {
|
|
339 |
if ($this->skip === false) {
|
340 |
$filtered = array();
|
341 |
|
342 |
-
|
343 |
-
|
344 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
345 |
}
|
|
|
346 |
}
|
347 |
-
|
348 |
if (isset($query->query_vars['post__not_in'])) {
|
349 |
$query->query_vars['post__not_in'] = array_merge(
|
350 |
$query->query_vars['post__not_in'], $filtered
|
@@ -396,21 +537,11 @@ class AAM_Frontend_Manager {
|
|
396 |
|
397 |
if (is_a($post, 'WP_Post')) {
|
398 |
$object = AAM::getUser()->getObject('post', $post->ID);
|
399 |
-
|
400 |
if ($object->has('frontend.limit')) {
|
401 |
-
$
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
AAM::getUser()
|
406 |
-
);
|
407 |
-
$excerpt = apply_filters(
|
408 |
-
'aam-filter-teaser-option',
|
409 |
-
AAM_Core_Config::get("frontend.teaser.excerpt"),
|
410 |
-
"frontend.teaser.excerpt",
|
411 |
-
AAM::getUser()
|
412 |
-
);
|
413 |
-
|
414 |
$html = (intval($excerpt) ? $post->post_excerpt : '');
|
415 |
$html .= stripslashes($message);
|
416 |
$content = do_shortcode($html);
|
@@ -420,6 +551,18 @@ class AAM_Frontend_Manager {
|
|
420 |
return $content;
|
421 |
}
|
422 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
423 |
/**
|
424 |
* Check if user is post author
|
425 |
*
|
39 |
public function __construct() {
|
40 |
if (AAM_Core_Config::get('frontend-access-control', true)) {
|
41 |
//login hook
|
42 |
+
add_action('wp_login', array($this, 'login'), 10, 2);
|
43 |
|
44 |
//control WordPress frontend
|
45 |
add_action('wp', array($this, 'wp'), 999);
|
58 |
if (AAM_Core_Config::get('large-post-number', false)) {
|
59 |
add_action('pre_get_posts', array($this, 'preparePostQuery'));
|
60 |
}
|
61 |
+
|
62 |
+
//password protected filter
|
63 |
+
add_filter('post_password_required', array($this, 'isProtected'), 10, 2);
|
64 |
+
|
65 |
//filter post content
|
66 |
add_filter('the_content', array($this, 'theContent'), 999);
|
67 |
+
|
68 |
+
//manage AAM shortcode
|
69 |
+
add_shortcode('aam', array($this, 'processShortcode'));
|
70 |
+
|
71 |
//admin bar
|
72 |
$this->checkAdminBar();
|
73 |
}
|
74 |
+
|
75 |
+
if (AAM_Core_Request::get('action') == 'aam-auth') {
|
76 |
+
$this->doubleAuthentication();
|
77 |
+
}
|
78 |
+
|
79 |
+
//security controls
|
80 |
+
add_action('login_form_login', array($this, 'loginSubmit'), 1);
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
*
|
85 |
+
*/
|
86 |
+
public function loginSubmit() {
|
87 |
+
//Login Timeout
|
88 |
+
if (AAM_Core_Config::get('login-timeout', false)) {
|
89 |
+
@sleep(intval(AAM_Core_Config::get('security.login.timeout', 1)));
|
90 |
+
}
|
91 |
+
|
92 |
+
//Brute Force Lockout
|
93 |
+
if (AAM_Core_Config::get('brute-force-lockout', false)) {
|
94 |
+
$this->updateLoginCounter(1);
|
95 |
+
}
|
96 |
}
|
97 |
|
98 |
/**
|
100 |
* @param type $login
|
101 |
* @param type $user
|
102 |
*/
|
103 |
+
public function login($username, $user) {
|
|
|
|
|
104 |
if (is_a($user, 'WP_User')) {
|
105 |
+
$this->updateLoginCounter(-1);
|
106 |
+
|
107 |
AAM_Core_API::deleteOption('aam-user-switch-' . $user->ID);
|
108 |
|
109 |
$subject = new AAM_Core_Subject_User($user->ID);
|
110 |
+
$object = $subject->getObject('loginRedirect');
|
111 |
|
112 |
//if Login redirect is defined
|
113 |
+
$type = $object->get('login.redirect.type');
|
114 |
+
$redirect = AAM_Core_Request::request('redirect_to');
|
115 |
+
|
116 |
+
if (empty($redirect) &&!empty($type) && $type !== 'default') {
|
117 |
+
$redirect = $object->get("login.redirect.{$type}");
|
118 |
+
AAM_Core_API::redirect($redirect);
|
119 |
+
}
|
120 |
+
}
|
121 |
+
}
|
122 |
+
|
123 |
+
/**
|
124 |
+
*
|
125 |
+
* @param type $increment
|
126 |
+
*/
|
127 |
+
protected function updateLoginCounter($increment) {
|
128 |
+
$attempts = get_transient('aam-login-attemtps');
|
129 |
+
|
130 |
+
if ($attempts !== false) {
|
131 |
+
$timeout = get_option('_transient_timeout_aam-login-attemtps') - time();
|
132 |
+
$attempts = intval($attempts) + $increment;
|
133 |
+
} else {
|
134 |
+
$attempts = 1;
|
135 |
+
$timeout = strtotime(
|
136 |
+
'+' . AAM_Core_Config::get('security.login.period', '2 minutes')
|
137 |
+
) - time();
|
138 |
+
}
|
139 |
+
|
140 |
+
if ($attempts >= AAM_Core_Config::get('security.login.attempts', 20)) {
|
141 |
+
wp_safe_redirect(site_url('index.php'));
|
142 |
+
exit;
|
143 |
+
} else {
|
144 |
+
set_transient('aam-login-attemtps', $attempts, $timeout);
|
145 |
+
}
|
146 |
+
}
|
147 |
+
|
148 |
+
/**
|
149 |
+
* Control User Block flag
|
150 |
+
*
|
151 |
+
* @param WP_Error $user
|
152 |
+
*
|
153 |
+
* @return WP_Error|WP_User
|
154 |
+
*
|
155 |
+
* @access public
|
156 |
+
*/
|
157 |
+
public function authenticate($user) {
|
158 |
+
if ($user->user_status == 1) {
|
159 |
+
$user = new WP_Error();
|
160 |
+
|
161 |
+
$message = '[ERROR]: User is locked. Please contact your website ';
|
162 |
+
$message .= 'administrator.';
|
163 |
+
|
164 |
+
$user->add(
|
165 |
+
'authentication_failed',
|
166 |
+
AAM_Backend_View_Helper::preparePhrase($message, 'strong')
|
167 |
);
|
168 |
+
} elseif (AAM_Core_Config::get('login-ip-track', false)) {
|
169 |
+
$baseIp = get_user_meta($user->ID, 'aam-login-ip', true);
|
170 |
+
$ip = AAM_Core_Request::server('REMOTE_ADDR');
|
171 |
+
|
172 |
+
if (empty($baseIp)) {
|
173 |
+
update_user_meta($user->ID, 'aam-login-ip', $ip);
|
174 |
+
}
|
175 |
|
176 |
+
if (!empty($baseIp) && ($baseIp != $ip)) {
|
177 |
+
$key = get_password_reset_key($user);
|
178 |
+
update_user_meta($user->ID, 'aam-login-key', $key);
|
179 |
+
|
180 |
+
if ( is_multisite() ) {
|
181 |
+
$blogname = get_network()->site_name;
|
182 |
+
} else {
|
183 |
+
$blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
|
184 |
+
}
|
185 |
+
|
186 |
+
$title = sprintf( __('[%s] Double Authentication'), $blogname );
|
187 |
+
|
188 |
+
$message = sprintf(__('Someone was trying to login from the different IP address %s:'), $ip) . "\r\n\r\n";
|
189 |
+
$message .= sprintf(__('Website: %s'), network_home_url( '/' )) . "\r\n";
|
190 |
+
$message .= sprintf(__('Username: %s'), $user->user_login) . "\r\n\r\n";
|
191 |
+
$message .= __('Visit the following address to authorize the login:') . "\r\n\r\n";
|
192 |
+
$message .= '<' . network_site_url("index.php?action=aam-auth&key={$key}&login={$user->user_login}") . ">\r\n";
|
193 |
+
|
194 |
+
wp_mail($user->user_email, $title, $message);
|
195 |
+
|
196 |
+
$user = new WP_Error();
|
197 |
+
|
198 |
+
$message = '[ERROR]: Double authentication is required. ';
|
199 |
+
$message .= 'Please check your email or enter username and ';
|
200 |
+
$message .= 'password again to resend the email.';
|
201 |
+
|
202 |
+
$user->add(
|
203 |
+
'authentication_failed',
|
204 |
+
AAM_Backend_View_Helper::preparePhrase($message, 'strong')
|
205 |
);
|
|
|
206 |
}
|
207 |
}
|
208 |
+
|
209 |
+
return $user;
|
210 |
+
}
|
211 |
+
|
212 |
+
/**
|
213 |
+
*
|
214 |
+
*/
|
215 |
+
protected function doubleAuthentication() {
|
216 |
+
$login = AAM_Core_Request::get('login');
|
217 |
+
$key = AAM_Core_Request::get('key');
|
218 |
+
$user = get_user_by('login', $login);
|
219 |
+
|
220 |
+
if (is_a($user, 'WP_User')) {
|
221 |
+
$stored = get_user_meta($user->ID, 'aam-login-key', true);
|
222 |
+
|
223 |
+
if ($stored == $key) {
|
224 |
+
update_user_meta($user->ID, 'aam-login-ip', AAM_Core_Request::server('REMOTE_ADDR'));
|
225 |
+
delete_user_meta($user->ID, 'aam-login-key');
|
226 |
+
wp_safe_redirect(site_url('wp-login.php'));
|
227 |
+
exit;
|
228 |
+
}
|
229 |
+
}
|
230 |
+
|
231 |
+
wp_safe_redirect(site_url('index.php'));
|
232 |
+
exit;
|
233 |
+
}
|
234 |
+
|
235 |
+
/**
|
236 |
+
*
|
237 |
+
* @param type $response
|
238 |
+
* @param WP_Post $post
|
239 |
+
* @return type
|
240 |
+
*/
|
241 |
+
public function isProtected($response, $post) {
|
242 |
+
$object = AAM::getUser()->getObject('post', $post->ID);
|
243 |
+
|
244 |
+
if ($object->has('frontend.protected')) {
|
245 |
+
$hasher = new PasswordHash( 8, true );
|
246 |
+
$hash = wp_unslash(AAM_Core_Request::cookie('wp-postpass_' . COOKIEHASH));
|
247 |
+
|
248 |
+
if (empty($hash)) {
|
249 |
+
$response = true;
|
250 |
+
} else {
|
251 |
+
$response = !$hasher->CheckPassword(
|
252 |
+
$object->get('frontend.password'), $hash
|
253 |
+
);
|
254 |
+
}
|
255 |
+
}
|
256 |
+
|
257 |
+
return $response;
|
258 |
}
|
259 |
|
260 |
/**
|
267 |
*/
|
268 |
public function wp() {
|
269 |
$post = $this->getCurrentPost();
|
|
|
270 |
if (is_a($post, 'WP_Post')) {
|
271 |
$this->checkPostReadAccess($post);
|
272 |
}
|
464 |
}
|
465 |
}
|
466 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
467 |
/**
|
468 |
*
|
469 |
* @param type $query
|
472 |
if ($this->skip === false) {
|
473 |
$filtered = array();
|
474 |
|
475 |
+
if (AAM_Core_Cache::has('post__not_in')) {
|
476 |
+
$filtered = AAM_Core_Cache::get('post__not_in');
|
477 |
+
} else {
|
478 |
+
foreach ($this->fetchPosts($query) as $id) {
|
479 |
+
$object = AAM::getUser()->getObject('post', $id);
|
480 |
+
$list = $object->has('frontend.list');
|
481 |
+
$others = $object->has('frontend.list_others');
|
482 |
+
|
483 |
+
if ($list || ($others && !$this->isAuthor($object->getPost()))) {
|
484 |
+
$filtered[] = $id;
|
485 |
+
}
|
486 |
}
|
487 |
+
AAM_Core_Cache::set(AAM::getUser(), 'post__not_in', $filtered);
|
488 |
}
|
|
|
489 |
if (isset($query->query_vars['post__not_in'])) {
|
490 |
$query->query_vars['post__not_in'] = array_merge(
|
491 |
$query->query_vars['post__not_in'], $filtered
|
537 |
|
538 |
if (is_a($post, 'WP_Post')) {
|
539 |
$object = AAM::getUser()->getObject('post', $post->ID);
|
|
|
540 |
if ($object->has('frontend.limit')) {
|
541 |
+
$teaser = AAM::getUser()->getObject('teaser');
|
542 |
+
$message = $teaser->get('frontend.teaser.message');
|
543 |
+
$excerpt = $teaser->get('frontend.teaser.excerpt');
|
544 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
545 |
$html = (intval($excerpt) ? $post->post_excerpt : '');
|
546 |
$html .= stripslashes($message);
|
547 |
$content = do_shortcode($html);
|
551 |
return $content;
|
552 |
}
|
553 |
|
554 |
+
/**
|
555 |
+
*
|
556 |
+
* @param type $args
|
557 |
+
* @param type $content
|
558 |
+
* @return type
|
559 |
+
*/
|
560 |
+
public function processShortcode($args, $content) {
|
561 |
+
$shortcode = new AAM_Shortcode_Factory($args, $content);
|
562 |
+
|
563 |
+
return $shortcode->process();
|
564 |
+
}
|
565 |
+
|
566 |
/**
|
567 |
* Check if user is post author
|
568 |
*
|
Application/Shortcode/Factory.php
ADDED
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 Shortcode
|
12 |
+
*
|
13 |
+
* @package AAM
|
14 |
+
* @author Vasyl Martyniuk <vasyl@vasyltech.com>
|
15 |
+
*/
|
16 |
+
class AAM_Shortcode_Factory {
|
17 |
+
|
18 |
+
/**
|
19 |
+
*
|
20 |
+
* @var type
|
21 |
+
*/
|
22 |
+
protected $strategy = null;
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Initialize shortcode factory
|
26 |
+
*
|
27 |
+
* @param type $args
|
28 |
+
* @param type $content
|
29 |
+
*/
|
30 |
+
public function __construct($args, $content) {
|
31 |
+
$context = !empty($args['context']) ? $args['context'] : null;
|
32 |
+
|
33 |
+
$classname = 'AAM_Shortcode_Strategy_' . ucfirst($context);
|
34 |
+
|
35 |
+
if (class_exists($classname)) {
|
36 |
+
$this->strategy = new $classname($args, $content);
|
37 |
+
} else {
|
38 |
+
$this->strategy = apply_filters(
|
39 |
+
'aam-shortcode-context-filter', null, $args, $content
|
40 |
+
);
|
41 |
+
}
|
42 |
+
}
|
43 |
+
|
44 |
+
/**
|
45 |
+
*
|
46 |
+
* @return string
|
47 |
+
*/
|
48 |
+
public function process() {
|
49 |
+
if (is_a($this->strategy, 'AAM_Shortcode_Strategy_Interface')) {
|
50 |
+
$content = $this->strategy->run();
|
51 |
+
} else {
|
52 |
+
$content = __('No valid strategy found for the given context', AAM_KEY);
|
53 |
+
}
|
54 |
+
|
55 |
+
return $content;
|
56 |
+
}
|
57 |
+
|
58 |
+
}
|
Application/Shortcode/Strategy/Content.php
ADDED
@@ -0,0 +1,125 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 shortcode strategy for content
|
12 |
+
*
|
13 |
+
* Shortcode strategy to manage access to the parts of post's content
|
14 |
+
*
|
15 |
+
* @package AAM
|
16 |
+
* @author Vasyl Martyniuk <vasyl@vasyltech.com>
|
17 |
+
*/
|
18 |
+
class AAM_Shortcode_Strategy_Content implements AAM_Shortcode_Strategy_Interface {
|
19 |
+
|
20 |
+
/**
|
21 |
+
*
|
22 |
+
* @var type
|
23 |
+
*/
|
24 |
+
protected $args;
|
25 |
+
|
26 |
+
/**
|
27 |
+
*
|
28 |
+
* @var type
|
29 |
+
*/
|
30 |
+
protected $content;
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Initialize shortcode decorator
|
34 |
+
*
|
35 |
+
* Expecting attributes in $args are:
|
36 |
+
* "hide" => comma-separated list of role and user IDs to hide content
|
37 |
+
* "show" => comma-separated list of role and user IDs to show content
|
38 |
+
* "limit" => comma-separated list of role and user IDs to limit content
|
39 |
+
* "message" => message to show if "limit" is defined
|
40 |
+
* "callback" => callback function that returns message if "limit" is defined
|
41 |
+
*
|
42 |
+
* @param type $args
|
43 |
+
* @param type $content
|
44 |
+
*/
|
45 |
+
public function __construct($args, $content) {
|
46 |
+
$this->args = $args;
|
47 |
+
$this->content = $content;
|
48 |
+
}
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Process shortcode
|
52 |
+
*
|
53 |
+
*/
|
54 |
+
public function run() {
|
55 |
+
//prepare user
|
56 |
+
if (get_current_user_id()) {
|
57 |
+
$user = array(AAM::getUser()->ID, AAM::getUser()->roles[0]);
|
58 |
+
} else {
|
59 |
+
$user = array('visitor');
|
60 |
+
}
|
61 |
+
|
62 |
+
$show = $this->getAccess('show');
|
63 |
+
$limit = $this->getAccess('limit');
|
64 |
+
$hide = $this->getAccess('hide');
|
65 |
+
$msg = $this->getMessage();
|
66 |
+
|
67 |
+
if (!empty($this->args['callback'])) {
|
68 |
+
$content = call_user_func($this->args['callback'], $this);
|
69 |
+
} else {
|
70 |
+
$content = $this->content;
|
71 |
+
|
72 |
+
//#1. Check if content is restricted for current user
|
73 |
+
if (in_array('all', $hide) || count(array_intersect($user, $hide))) {
|
74 |
+
$content = '';
|
75 |
+
}
|
76 |
+
|
77 |
+
//#2. Check if content is limited for current user
|
78 |
+
if (in_array('all', $limit) || count(array_intersect($user, $limit))) {
|
79 |
+
$content = do_shortcode($msg);
|
80 |
+
}
|
81 |
+
|
82 |
+
//#3. Check if content is allosed for current user
|
83 |
+
if (count(array_intersect($user, $show))) {
|
84 |
+
$content = $this->content;
|
85 |
+
}
|
86 |
+
}
|
87 |
+
|
88 |
+
return $content;
|
89 |
+
}
|
90 |
+
|
91 |
+
/**
|
92 |
+
*
|
93 |
+
* @return type
|
94 |
+
*/
|
95 |
+
public function getAccess($type) {
|
96 |
+
$access = (isset($this->args[$type]) ? $this->args[$type] : null);
|
97 |
+
|
98 |
+
return array_map('trim', explode(',', $access));
|
99 |
+
}
|
100 |
+
|
101 |
+
/**
|
102 |
+
*
|
103 |
+
* @return type
|
104 |
+
*/
|
105 |
+
public function getMessage() {
|
106 |
+
return isset($this->args['message']) ? $this->args['message'] : null;
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
*
|
111 |
+
* @return type
|
112 |
+
*/
|
113 |
+
public function getArgs() {
|
114 |
+
return $this->args;
|
115 |
+
}
|
116 |
+
|
117 |
+
/**
|
118 |
+
*
|
119 |
+
* @return type
|
120 |
+
*/
|
121 |
+
public function getContent() {
|
122 |
+
return $this->content;
|
123 |
+
}
|
124 |
+
|
125 |
+
}
|
Application/Shortcode/Strategy/Interface.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 shortcode strategy interface
|
12 |
+
*
|
13 |
+
* @package AAM
|
14 |
+
* @author Vasyl Martyniuk <vasyl@vasyltech.com>
|
15 |
+
*/
|
16 |
+
interface AAM_Shortcode_Strategy_Interface {
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Initialize shortcode strategy
|
20 |
+
*
|
21 |
+
* @param type $args
|
22 |
+
* @param type $content
|
23 |
+
*/
|
24 |
+
public function __construct($args, $content);
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Process strategy
|
28 |
+
*/
|
29 |
+
public function run();
|
30 |
+
|
31 |
+
}
|
Application/Shortcode/Strategy/Login.php
ADDED
@@ -0,0 +1,81 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 shortcode strategy for login button
|
12 |
+
*
|
13 |
+
* @package AAM
|
14 |
+
* @author Vasyl Martyniuk <vasyl@vasyltech.com>
|
15 |
+
*/
|
16 |
+
class AAM_Shortcode_Strategy_Login implements AAM_Shortcode_Strategy_Interface {
|
17 |
+
|
18 |
+
/**
|
19 |
+
*
|
20 |
+
* @var type
|
21 |
+
*/
|
22 |
+
protected $args;
|
23 |
+
|
24 |
+
/**
|
25 |
+
*
|
26 |
+
* @var type
|
27 |
+
*/
|
28 |
+
protected $content;
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Initialize shortcode decorator
|
32 |
+
*
|
33 |
+
* Expecting attributes in $args are:
|
34 |
+
* "class" => CSS class for login button
|
35 |
+
* "label" => Login button label
|
36 |
+
* "callback" => callback function that returns the login button
|
37 |
+
*
|
38 |
+
* @param type $args
|
39 |
+
* @param type $content
|
40 |
+
*/
|
41 |
+
public function __construct($args, $content) {
|
42 |
+
$this->args = $args;
|
43 |
+
$this->content = $content;
|
44 |
+
}
|
45 |
+
|
46 |
+
/**
|
47 |
+
* Process shortcode
|
48 |
+
*
|
49 |
+
*/
|
50 |
+
public function run() {
|
51 |
+
$redirect = AAM_Core_Request::server('REQUEST_URI');
|
52 |
+
$class = (isset($this->args['class']) ? $this->args['class'] : '');
|
53 |
+
$label = (isset($this->args['label']) ? $this->args['label'] : 'Login');
|
54 |
+
|
55 |
+
if (isset($this->args['callback'])) {
|
56 |
+
$button = call_user_func($this->args['callback'], $this);
|
57 |
+
} else {
|
58 |
+
$button = '<a href="' . wp_login_url($redirect) . '" ';
|
59 |
+
$button .= 'class="' . $class . '">' . $label . '</a>';
|
60 |
+
}
|
61 |
+
|
62 |
+
return $button;
|
63 |
+
}
|
64 |
+
|
65 |
+
/**
|
66 |
+
*
|
67 |
+
* @return type
|
68 |
+
*/
|
69 |
+
public function getArgs() {
|
70 |
+
return $this->args;
|
71 |
+
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
*
|
75 |
+
* @return type
|
76 |
+
*/
|
77 |
+
public function getContent() {
|
78 |
+
return $this->content;
|
79 |
+
}
|
80 |
+
|
81 |
+
}
|
Lang/advanced-access-manager-en_US.mo
CHANGED
Binary file
|
Lang/advanced-access-manager-en_US.po
CHANGED
@@ -1,19 +1,19 @@
|
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: AAM\n"
|
4 |
-
"POT-Creation-Date:
|
5 |
"PO-Revision-Date: \n"
|
|
|
6 |
"Language-Team: WP AAM <vasyl@vasyltech.com>\n"
|
|
|
7 |
"MIME-Version: 1.0\n"
|
8 |
"Content-Type: text/plain; charset=UTF-8\n"
|
9 |
"Content-Transfer-Encoding: 8bit\n"
|
10 |
-
"X-Generator: Poedit 1.8.
|
11 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
12 |
"X-Poedit-SourceCharset: UTF-8\n"
|
13 |
"X-Poedit-KeywordsList: __\n"
|
14 |
"X-Poedit-Basepath: ..\n"
|
15 |
-
"Last-Translator: \n"
|
16 |
-
"Language: en_US\n"
|
17 |
"X-Poedit-SearchPath-0: .\n"
|
18 |
|
19 |
#: media/js/aam-ui.js:44 Application/Backend/View/Localization.php:23
|
@@ -33,17 +33,17 @@ msgstr ""
|
|
33 |
msgid "_TOTAL_ role(s)"
|
34 |
msgstr ""
|
35 |
|
36 |
-
#: media/js/aam-ui.js:98 media/js/aam-ui.js:
|
37 |
#: Application/Backend/View/Localization.php:27
|
38 |
-
#: Application/Backend/phtml/index.phtml:
|
39 |
#: Application/Backend/phtml/object/capability.phtml:27
|
40 |
#: Application/Backend/phtml/object/capability.phtml:57
|
41 |
msgid "Create"
|
42 |
msgstr ""
|
43 |
|
44 |
#: media/js/aam-ui.js:118 Application/Backend/View/Localization.php:28
|
45 |
-
#: Application/Backend/phtml/index.phtml:
|
46 |
-
#: Application/Backend/phtml/index.phtml:
|
47 |
msgid "Users"
|
48 |
msgstr ""
|
49 |
|
@@ -59,196 +59,201 @@ msgstr ""
|
|
59 |
msgid "Clone Role"
|
60 |
msgstr ""
|
61 |
|
62 |
-
#: media/js/aam-ui.js:198 media/js/aam-ui.js:
|
63 |
#: Application/Backend/View/Localization.php:35
|
64 |
#: Application/Backend/View/Localization.php:47
|
65 |
-
#: Application/Backend/phtml/index.phtml:
|
66 |
msgid "Delete Role"
|
67 |
msgstr ""
|
68 |
|
69 |
-
#: media/js/aam-ui.js:
|
70 |
-
#: media/js/aam-ui.js:
|
71 |
msgid "Saving..."
|
72 |
msgstr ""
|
73 |
|
74 |
-
#: media/js/aam-ui.js:
|
75 |
msgid "Failed to add new role"
|
76 |
msgstr ""
|
77 |
|
78 |
-
#: media/js/aam-ui.js:
|
79 |
-
#: media/js/aam-ui.js:
|
80 |
-
#: media/js/aam-ui.js:
|
81 |
-
#: media/js/aam-ui.js:
|
82 |
-
#: media/js/aam-ui.js:
|
83 |
-
#: media/js/aam-ui.js:
|
84 |
-
#: Application/Backend/View/Localization.php:15
|
85 |
msgid "Application error"
|
86 |
msgstr ""
|
87 |
|
88 |
-
#: media/js/aam-ui.js:
|
89 |
msgid "Add Role"
|
90 |
msgstr ""
|
91 |
|
92 |
-
#: media/js/aam-ui.js:
|
93 |
msgid "Failed to update role"
|
94 |
msgstr ""
|
95 |
|
96 |
-
#: media/js/aam-ui.js:
|
97 |
-
#: Application/Backend/phtml/extension.phtml:
|
98 |
-
#: Application/Backend/phtml/extension.phtml:
|
99 |
-
#: Application/Backend/phtml/index.phtml:
|
100 |
#: Application/Backend/phtml/object/capability.phtml:79
|
101 |
msgid "Update"
|
102 |
msgstr ""
|
103 |
|
104 |
-
#: media/js/aam-ui.js:
|
105 |
#: Application/Backend/View/Localization.php:33
|
106 |
msgid "Deleting..."
|
107 |
msgstr ""
|
108 |
|
109 |
-
#: media/js/aam-ui.js:
|
110 |
msgid "Failed to delete role"
|
111 |
msgstr ""
|
112 |
|
113 |
-
#: media/js/aam-ui.js:
|
114 |
#: Application/Backend/View/Localization.php:51
|
115 |
msgid "Unlock User"
|
116 |
msgstr ""
|
117 |
|
118 |
-
#: media/js/aam-ui.js:
|
119 |
#: Application/Backend/View/Localization.php:50
|
120 |
msgid "Lock User"
|
121 |
msgstr ""
|
122 |
|
123 |
-
#: media/js/aam-ui.js:
|
124 |
msgid "Failed to block user"
|
125 |
msgstr ""
|
126 |
|
127 |
-
#: media/js/aam-ui.js:
|
128 |
msgid "Search User"
|
129 |
msgstr ""
|
130 |
|
131 |
-
#: media/js/aam-ui.js:
|
132 |
msgid "_TOTAL_ user(s)"
|
133 |
msgstr ""
|
134 |
|
135 |
-
#: media/js/aam-ui.js:
|
136 |
-
#: Application/Backend/phtml/index.phtml:
|
137 |
msgid "Role"
|
138 |
msgstr ""
|
139 |
|
140 |
-
#: media/js/aam-ui.js:
|
141 |
msgid "Manage User"
|
142 |
msgstr ""
|
143 |
|
144 |
-
#: media/js/aam-ui.js:
|
145 |
msgid "Edit User"
|
146 |
msgstr ""
|
147 |
|
148 |
-
#: media/js/aam-ui.js:
|
149 |
msgid "Switch To User"
|
150 |
msgstr ""
|
151 |
|
152 |
-
#: media/js/aam-ui.js:
|
153 |
msgid "Anonymous"
|
154 |
msgstr ""
|
155 |
|
156 |
-
#: media/js/aam-ui.js:
|
157 |
-
|
|
|
|
|
|
|
|
|
158 |
msgid "Show Menu"
|
159 |
msgstr ""
|
160 |
|
161 |
-
#: media/js/aam-ui.js:
|
162 |
-
#: Application/Backend/phtml/object/menu.phtml:
|
163 |
msgid "Restrict Menu"
|
164 |
msgstr ""
|
165 |
|
166 |
-
#: media/js/aam-ui.js:
|
167 |
msgid "Failed to retrieve mataboxes"
|
168 |
msgstr ""
|
169 |
|
170 |
-
#: media/js/aam-ui.js:
|
171 |
msgid "Processing"
|
172 |
msgstr ""
|
173 |
|
174 |
-
#: media/js/aam-ui.js:
|
175 |
msgid "Failed to initialize URL"
|
176 |
msgstr ""
|
177 |
|
178 |
-
#: media/js/aam-ui.js:
|
179 |
msgid "Initialize"
|
180 |
msgstr ""
|
181 |
|
182 |
-
#: media/js/aam-ui.js:
|
183 |
msgid "Failed to grand capability - WordPress policy"
|
184 |
msgstr ""
|
185 |
|
186 |
-
#: media/js/aam-ui.js:
|
187 |
msgid "Search Capability"
|
188 |
msgstr ""
|
189 |
|
190 |
-
#: media/js/aam-ui.js:
|
191 |
msgid "_TOTAL_ capability(s)"
|
192 |
msgstr ""
|
193 |
|
194 |
-
#: media/js/aam-ui.js:
|
195 |
msgid "Nothing to show"
|
196 |
msgstr ""
|
197 |
|
198 |
-
#: media/js/aam-ui.js:
|
199 |
msgid "Failed to add new capability"
|
200 |
msgstr ""
|
201 |
|
202 |
-
#: media/js/aam-ui.js:
|
203 |
msgid "Add Capability"
|
204 |
msgstr ""
|
205 |
|
206 |
-
#: media/js/aam-ui.js:
|
207 |
msgid "Failed to update capability"
|
208 |
msgstr ""
|
209 |
|
210 |
-
#: media/js/aam-ui.js:
|
211 |
msgid "Update Capability"
|
212 |
msgstr ""
|
213 |
|
214 |
-
#: media/js/aam-ui.js:
|
215 |
msgid "Failed to delete capability"
|
216 |
msgstr ""
|
217 |
|
218 |
-
#: media/js/aam-ui.js:
|
219 |
msgid "Delete Capability"
|
220 |
msgstr ""
|
221 |
|
222 |
-
#: media/js/aam-ui.js:
|
223 |
msgid "Search"
|
224 |
msgstr ""
|
225 |
|
226 |
-
#: media/js/aam-ui.js:
|
227 |
msgid "_TOTAL_ object(s)"
|
228 |
msgstr ""
|
229 |
|
230 |
-
#: media/js/aam-ui.js:
|
231 |
msgid "Drill-Down"
|
232 |
msgstr ""
|
233 |
|
234 |
-
#: media/js/aam-ui.js:
|
235 |
#: Application/Backend/phtml/metabox.phtml:7
|
236 |
msgid "Manage Access"
|
237 |
msgstr ""
|
238 |
|
239 |
-
#: media/js/aam-ui.js:
|
240 |
-
#: Application/Backend/
|
241 |
msgid "Edit"
|
242 |
msgstr ""
|
243 |
|
244 |
-
#: media/js/aam-ui.js:
|
|
|
245 |
msgid "Application Error"
|
246 |
msgstr ""
|
247 |
|
248 |
-
#: Application/Backend/Feature/Abstract.php:
|
249 |
#: Application/Backend/Feature/Role.php:29
|
250 |
-
#: Application/Backend/Feature/User.php:29 Application/Backend/Manager.php:
|
251 |
-
#: Application/Backend/Manager.php:
|
252 |
msgid "Access Denied"
|
253 |
msgstr ""
|
254 |
|
@@ -260,29 +265,29 @@ msgstr ""
|
|
260 |
msgid "Can not remove the capability"
|
261 |
msgstr ""
|
262 |
|
263 |
-
#: Application/Backend/Feature/Capability.php:
|
264 |
-
#: Application/Backend/Feature/Capability.php:
|
265 |
msgid "System"
|
266 |
msgstr ""
|
267 |
|
268 |
-
#: Application/Backend/Feature/Capability.php:
|
269 |
-
#: Application/Backend/Feature/Capability.php:
|
270 |
-
#: Application/Backend/Feature/Post.php:
|
271 |
msgid "Posts & Pages"
|
272 |
msgstr ""
|
273 |
|
274 |
-
#: Application/Backend/Feature/Capability.php:
|
275 |
-
#: Application/Backend/Feature/Capability.php:
|
276 |
-
#: Application/Backend/phtml/object/post.phtml:
|
277 |
msgid "Backend"
|
278 |
msgstr ""
|
279 |
|
280 |
-
#: Application/Backend/Feature/Capability.php:
|
281 |
-
#: Application/Backend/Feature/Capability.php:
|
282 |
msgid "Miscellaneous"
|
283 |
msgstr ""
|
284 |
|
285 |
-
#: Application/Backend/Feature/Capability.php:
|
286 |
msgid "Capabilities"
|
287 |
msgstr ""
|
288 |
|
@@ -290,15 +295,19 @@ msgstr ""
|
|
290 |
msgid "Contact Us"
|
291 |
msgstr ""
|
292 |
|
293 |
-
#: Application/Backend/Feature/Extension.php:
|
294 |
msgid "License key is missing."
|
295 |
msgstr ""
|
296 |
|
297 |
-
#: Application/Backend/Feature/Extension.php:
|
298 |
msgid "Extensions"
|
299 |
msgstr ""
|
300 |
|
301 |
-
#: Application/Backend/Feature/
|
|
|
|
|
|
|
|
|
302 |
msgid "Backend Menu"
|
303 |
msgstr ""
|
304 |
|
@@ -306,32 +315,49 @@ msgstr ""
|
|
306 |
msgid "Metaboxes & Widgets"
|
307 |
msgstr ""
|
308 |
|
309 |
-
#: Application/Backend/Feature/Post.php:
|
310 |
msgid "You reached your limitation."
|
311 |
msgstr ""
|
312 |
|
313 |
-
#: Application/Backend/Feature/Redirect.php:
|
314 |
-
msgid "Redirect"
|
|
|
|
|
|
|
|
|
315 |
msgstr ""
|
316 |
|
317 |
-
#: Application/Backend/Feature/
|
|
|
|
|
|
|
|
|
|
|
318 |
msgid "Content Teaser"
|
319 |
msgstr ""
|
320 |
|
321 |
-
#: Application/Backend/Feature/Utility.php:
|
322 |
msgid "Utilities"
|
323 |
msgstr ""
|
324 |
|
325 |
-
#: Application/Backend/Manager.php:
|
326 |
#, php-format
|
327 |
msgid "Extension %s has new update available for download."
|
328 |
msgstr ""
|
329 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
330 |
#: Application/Backend/Manager.php:194
|
331 |
msgid "Access Manager"
|
332 |
msgstr ""
|
333 |
|
334 |
-
#: Application/Backend/Manager.php:264 Application/Backend/Manager.php:
|
|
|
335 |
msgid "Access"
|
336 |
msgstr ""
|
337 |
|
@@ -347,21 +373,247 @@ msgstr ""
|
|
347 |
msgid "Current role"
|
348 |
msgstr ""
|
349 |
|
350 |
-
#: Application/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
351 |
#, php-format
|
352 |
msgid "Failed to create %s"
|
353 |
msgstr ""
|
354 |
|
355 |
-
#: Application/Core/Repository.php:
|
356 |
#, php-format
|
357 |
msgid "Directory %s is not writable"
|
358 |
msgstr ""
|
359 |
|
360 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
361 |
msgid "PHP 5.2 or higher is required."
|
362 |
msgstr ""
|
363 |
|
364 |
-
#: aam.php:
|
365 |
msgid "WP 3.8 or higher is required."
|
366 |
msgstr ""
|
367 |
|
@@ -383,56 +635,50 @@ msgstr ""
|
|
383 |
msgid "Submit"
|
384 |
msgstr ""
|
385 |
|
386 |
-
#: Application/Backend/phtml/extension.phtml:
|
387 |
msgid "Premium"
|
388 |
msgstr ""
|
389 |
|
390 |
-
#: Application/Backend/phtml/extension.phtml:
|
391 |
-
#: Application/Backend/phtml/extension.phtml:
|
392 |
-
#: Application/Backend/phtml/extension.phtml:93
|
393 |
msgid "Free"
|
394 |
msgstr ""
|
395 |
|
396 |
-
#: Application/Backend/phtml/extension.phtml:
|
397 |
-
msgid "Useful Plugins"
|
398 |
-
msgstr ""
|
399 |
-
|
400 |
-
#: Application/Backend/phtml/extension.phtml:32
|
401 |
msgid "Check For Updates"
|
402 |
msgstr ""
|
403 |
|
404 |
-
#: Application/Backend/phtml/extension.phtml:
|
405 |
msgid "Check"
|
406 |
msgstr ""
|
407 |
|
408 |
-
#: Application/Backend/phtml/extension.phtml:
|
409 |
-
#: Application/Backend/phtml/extension.phtml:
|
410 |
-
#: Application/Backend/phtml/extension.phtml:102
|
411 |
msgid "Installed"
|
412 |
msgstr ""
|
413 |
|
414 |
-
#: Application/Backend/phtml/extension.phtml:
|
415 |
-
msgid "
|
416 |
msgstr ""
|
417 |
|
418 |
-
#: Application/Backend/phtml/extension.phtml:
|
419 |
-
|
420 |
-
msgid "Download"
|
421 |
msgstr ""
|
422 |
|
423 |
-
#: Application/Backend/phtml/extension.phtml:
|
424 |
-
|
|
|
425 |
msgstr ""
|
426 |
|
427 |
-
#: Application/Backend/phtml/extension.phtml:
|
428 |
-
#: Application/Backend/phtml/extension.phtml:
|
429 |
-
#: Application/Backend/phtml/extension.phtml:
|
430 |
-
#: Application/Backend/phtml/index.phtml:
|
431 |
-
#: Application/Backend/phtml/index.phtml:
|
432 |
-
#: Application/Backend/phtml/index.phtml:
|
433 |
-
#: Application/Backend/phtml/index.phtml:
|
434 |
-
#: Application/Backend/phtml/index.phtml:
|
435 |
-
#: Application/Backend/phtml/index.phtml:
|
436 |
#: Application/Backend/phtml/object/capability.phtml:47
|
437 |
#: Application/Backend/phtml/object/capability.phtml:58
|
438 |
#: Application/Backend/phtml/object/capability.phtml:68
|
@@ -441,29 +687,31 @@ msgstr ""
|
|
441 |
#: Application/Backend/phtml/object/capability.phtml:98
|
442 |
#: Application/Backend/phtml/object/metabox.phtml:80
|
443 |
#: Application/Backend/phtml/object/metabox.phtml:94
|
444 |
-
#: Application/Backend/phtml/
|
|
|
|
|
445 |
msgid "Close"
|
446 |
msgstr ""
|
447 |
|
448 |
-
#: Application/Backend/phtml/extension.phtml:
|
449 |
msgid "Notification"
|
450 |
msgstr ""
|
451 |
|
452 |
-
#: Application/Backend/phtml/extension.phtml:
|
453 |
msgid ""
|
454 |
"Extension requires manual installation. Please follow few simple steps below."
|
455 |
msgstr ""
|
456 |
|
457 |
-
#: Application/Backend/phtml/extension.phtml:
|
458 |
-
#: Application/Backend/phtml/utility.phtml:
|
459 |
msgid "Cancel"
|
460 |
msgstr ""
|
461 |
|
462 |
-
#: Application/Backend/phtml/extension.phtml:
|
463 |
msgid "Install Extension"
|
464 |
msgstr ""
|
465 |
|
466 |
-
#: Application/Backend/phtml/extension.phtml:
|
467 |
msgid ""
|
468 |
"Insert license key that you recieved after the payment (find the email "
|
469 |
"example below). It might take up to 2 hours to process the payment. Please "
|
@@ -482,7 +730,7 @@ msgid ""
|
|
482 |
msgstr ""
|
483 |
|
484 |
#: Application/Backend/phtml/index.phtml:22
|
485 |
-
msgid "Please
|
486 |
msgstr ""
|
487 |
|
488 |
#: Application/Backend/phtml/index.phtml:23
|
@@ -494,101 +742,116 @@ msgstr ""
|
|
494 |
|
495 |
#: Application/Backend/phtml/index.phtml:24
|
496 |
#, php-format
|
497 |
-
msgid "
|
498 |
msgstr ""
|
499 |
|
500 |
-
#: Application/Backend/phtml/index.phtml:
|
501 |
msgid "Notifications"
|
502 |
msgstr ""
|
503 |
|
504 |
-
#: Application/Backend/phtml/index.phtml:
|
505 |
msgid "AAM Multisite"
|
506 |
msgstr ""
|
507 |
|
508 |
-
#: Application/Backend/phtml/index.phtml:
|
509 |
msgid "Install AAM Multisite"
|
510 |
msgstr ""
|
511 |
|
512 |
-
#: Application/Backend/phtml/index.phtml:
|
513 |
msgid "Users/Roles Panel"
|
514 |
msgstr ""
|
515 |
|
516 |
-
#: Application/Backend/phtml/index.phtml:
|
517 |
-
#: Application/Backend/phtml/index.phtml:
|
518 |
msgid "Roles"
|
519 |
msgstr ""
|
520 |
|
521 |
-
#: Application/Backend/phtml/index.phtml:
|
522 |
-
#: Application/Backend/phtml/index.phtml:
|
523 |
msgid "Visitor"
|
524 |
msgstr ""
|
525 |
|
526 |
-
#: Application/Backend/phtml/index.phtml:
|
527 |
-
#: Application/Backend/phtml/index.phtml:
|
|
|
|
|
|
|
|
|
|
|
528 |
msgid "Action"
|
529 |
msgstr ""
|
530 |
|
531 |
-
#: Application/Backend/phtml/index.phtml:
|
532 |
msgid "Create Role"
|
533 |
msgstr ""
|
534 |
|
535 |
-
#: Application/Backend/phtml/index.phtml:
|
536 |
-
#: Application/Backend/phtml/index.phtml:
|
537 |
msgid "Role Name"
|
538 |
msgstr ""
|
539 |
|
540 |
-
#: Application/Backend/phtml/index.phtml:
|
541 |
-
#: Application/Backend/phtml/index.phtml:
|
542 |
msgid "Enter Role Name"
|
543 |
msgstr ""
|
544 |
|
545 |
-
#: Application/Backend/phtml/index.phtml:
|
546 |
msgid "Update Role"
|
547 |
msgstr ""
|
548 |
|
549 |
-
#: Application/Backend/phtml/index.phtml:
|
550 |
#, php-format
|
551 |
-
msgid "Are you sure that you want to delete %s role?"
|
552 |
-
msgstr ""
|
553 |
-
|
554 |
-
#: Application/Backend/phtml/index.phtml:158
|
555 |
-
#: Application/Backend/phtml/object/capability.phtml:97
|
556 |
-
#: Application/Backend/phtml/object/post.phtml:151
|
557 |
-
msgid "Delete"
|
558 |
msgstr ""
|
559 |
|
560 |
-
#: Application/Backend/phtml/index.phtml:
|
561 |
msgid "Username"
|
562 |
msgstr ""
|
563 |
|
564 |
-
#: Application/Backend/phtml/index.phtml:
|
565 |
msgid ""
|
566 |
"Manage access to your website for visitors (any user that is not "
|
567 |
"authenticated)"
|
568 |
msgstr ""
|
569 |
|
570 |
-
#: Application/Backend/phtml/index.phtml:
|
571 |
msgid "Manage Visitors"
|
572 |
msgstr ""
|
573 |
|
574 |
-
#: Application/Backend/phtml/index.phtml:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
575 |
msgid ""
|
576 |
"With Roles tab you can manage access for any defined role, edit role's name, "
|
577 |
"create new role or even delete existing (but only when there is no users "
|
578 |
"assigned to it). You are not allowed to delete Administrator role."
|
579 |
msgstr ""
|
580 |
|
581 |
-
#: Application/Backend/phtml/index.phtml:
|
582 |
msgid ""
|
583 |
"Manage access for any user. As a bonus feature, you can block user. It means "
|
584 |
"that user will be not able to login to your website anymore."
|
585 |
msgstr ""
|
586 |
|
587 |
-
#: Application/Backend/phtml/index.phtml:
|
588 |
msgid ""
|
589 |
"Visitor can be considered any user that is not authenticated to your website."
|
590 |
msgstr ""
|
591 |
|
|
|
|
|
|
|
|
|
|
|
|
|
592 |
#: Application/Backend/phtml/object/capability.phtml:16
|
593 |
msgid "Filter"
|
594 |
msgstr ""
|
@@ -608,7 +871,7 @@ msgid "Capability"
|
|
608 |
msgstr ""
|
609 |
|
610 |
#: Application/Backend/phtml/object/capability.phtml:37
|
611 |
-
#: Application/Backend/phtml/object/post.phtml:
|
612 |
msgid "Actions"
|
613 |
msgstr ""
|
614 |
|
@@ -626,22 +889,37 @@ msgstr ""
|
|
626 |
msgid "Are you sure that you want to delete %s capability for all roles?"
|
627 |
msgstr ""
|
628 |
|
629 |
-
#: Application/Backend/phtml/object/
|
630 |
-
|
631 |
-
msgid ""
|
632 |
-
|
633 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
634 |
msgstr ""
|
635 |
|
636 |
-
#: Application/Backend/phtml/object/
|
|
|
|
|
|
|
|
|
|
|
|
|
637 |
#: Application/Backend/phtml/object/metabox.phtml:12
|
638 |
-
#: Application/Backend/phtml/object/post.phtml:
|
639 |
-
msgid "Settings are
|
640 |
msgstr ""
|
641 |
|
642 |
-
#: Application/Backend/phtml/object/menu.phtml:
|
643 |
#: Application/Backend/phtml/object/metabox.phtml:13
|
644 |
-
#: Application/Backend/phtml/object/post.phtml:
|
645 |
msgid "Reset To Default"
|
646 |
msgstr ""
|
647 |
|
@@ -662,9 +940,7 @@ msgid "Frontend Widgets"
|
|
662 |
msgstr ""
|
663 |
|
664 |
#: Application/Backend/phtml/object/metabox.phtml:71
|
665 |
-
msgid ""
|
666 |
-
"The list of metaboxes and widgets is not initialized. Click Refresh button "
|
667 |
-
"above."
|
668 |
msgstr ""
|
669 |
|
670 |
#: Application/Backend/phtml/object/metabox.phtml:81
|
@@ -688,91 +964,67 @@ msgstr ""
|
|
688 |
msgid "Insert valid URL"
|
689 |
msgstr ""
|
690 |
|
691 |
-
#: Application/Backend/phtml/object/post.phtml:
|
692 |
-
#, php-format
|
693 |
-
msgid "Learn more about post & pages access control from %sthis article%s."
|
694 |
-
msgstr ""
|
695 |
-
|
696 |
-
#: Application/Backend/phtml/object/post.phtml:24
|
697 |
msgid "Root"
|
698 |
msgstr ""
|
699 |
|
700 |
-
#: Application/Backend/phtml/object/post.phtml:
|
701 |
msgid "Title"
|
702 |
msgstr ""
|
703 |
|
704 |
-
#: Application/Backend/phtml/object/post.phtml:
|
705 |
-
#: Application/Backend/phtml/object/post.phtml:
|
706 |
-
#: Application/Backend/phtml/object/post.phtml:
|
707 |
msgid "Go Back"
|
708 |
msgstr ""
|
709 |
|
710 |
-
#: Application/Backend/phtml/object/post.phtml:
|
711 |
msgid "Frontend"
|
712 |
msgstr ""
|
713 |
|
714 |
-
#: Application/Backend/phtml/object/post.phtml:
|
715 |
-
|
716 |
-
msgid "List"
|
717 |
msgstr ""
|
718 |
|
719 |
-
#: Application/Backend/phtml/object/post.phtml:
|
720 |
-
msgid "
|
721 |
msgstr ""
|
722 |
|
723 |
-
#: Application/Backend/phtml/object/post.phtml:
|
724 |
-
msgid "
|
725 |
msgstr ""
|
726 |
|
727 |
-
#: Application/Backend/phtml/object/post.phtml:
|
728 |
-
msgid "
|
729 |
msgstr ""
|
730 |
|
731 |
-
#: Application/Backend/phtml/object/redirect.phtml:
|
732 |
msgid "Frontend Redirect"
|
733 |
msgstr ""
|
734 |
|
735 |
-
#: Application/Backend/phtml/object/redirect.phtml:
|
736 |
msgid "Backend Redirect"
|
737 |
msgstr ""
|
738 |
|
739 |
-
#: Application/Backend/phtml/object/redirect.phtml:
|
740 |
-
#: Application/Backend/phtml/object/redirect.phtml:
|
741 |
msgid "Customized Message"
|
742 |
msgstr ""
|
743 |
|
744 |
-
#: Application/Backend/phtml/object/redirect.phtml:
|
745 |
-
#: Application/Backend/phtml/object/redirect.phtml:
|
746 |
msgid "Enter message..."
|
747 |
msgstr ""
|
748 |
|
749 |
-
#: Application/Backend/phtml/object/
|
750 |
-
msgid "Existing Page"
|
751 |
-
msgstr ""
|
752 |
-
|
753 |
-
#: Application/Backend/phtml/object/redirect.phtml:61
|
754 |
-
msgid "-- Select Page --"
|
755 |
-
msgstr ""
|
756 |
-
|
757 |
-
#: Application/Backend/phtml/object/redirect.phtml:67
|
758 |
-
#: Application/Backend/phtml/object/redirect.phtml:100
|
759 |
-
msgid "Custom URL"
|
760 |
-
msgstr ""
|
761 |
-
|
762 |
-
#: Application/Backend/phtml/object/redirect.phtml:72
|
763 |
-
#: Application/Backend/phtml/object/redirect.phtml:104
|
764 |
-
msgid "PHP Callback Function"
|
765 |
-
msgstr ""
|
766 |
-
|
767 |
-
#: Application/Backend/phtml/object/teaser.phtml:16
|
768 |
msgid "Teaser Message"
|
769 |
msgstr ""
|
770 |
|
771 |
-
#: Application/Backend/phtml/object/teaser.phtml:
|
772 |
msgid "Enter teaser message..."
|
773 |
msgstr ""
|
774 |
|
775 |
-
#: Application/Backend/phtml/object/teaser.phtml:
|
776 |
msgid "Add excerpt before teaser message"
|
777 |
msgstr ""
|
778 |
|
@@ -780,76 +1032,29 @@ msgstr ""
|
|
780 |
msgid "Inherit Capabilities From"
|
781 |
msgstr ""
|
782 |
|
783 |
-
#: Application/Backend/phtml/
|
784 |
-
#, php-format
|
785 |
-
msgid "To learn more about AAM Utilities check %sAAM Utilities%s article."
|
786 |
-
msgstr ""
|
787 |
-
|
788 |
-
#: Application/Backend/phtml/utility.phtml:16
|
789 |
-
msgid "Edit/Delete Capabilities"
|
790 |
-
msgstr ""
|
791 |
-
|
792 |
-
#: Application/Backend/phtml/utility.phtml:22
|
793 |
-
#: Application/Backend/phtml/utility.phtml:33
|
794 |
-
#: Application/Backend/phtml/utility.phtml:44
|
795 |
-
#: Application/Backend/phtml/utility.phtml:55
|
796 |
-
#: Application/Backend/phtml/utility.phtml:66
|
797 |
-
msgid "Enabled"
|
798 |
-
msgstr ""
|
799 |
-
|
800 |
-
#: Application/Backend/phtml/utility.phtml:22
|
801 |
-
#: Application/Backend/phtml/utility.phtml:33
|
802 |
-
#: Application/Backend/phtml/utility.phtml:44
|
803 |
-
#: Application/Backend/phtml/utility.phtml:55
|
804 |
-
#: Application/Backend/phtml/utility.phtml:66
|
805 |
-
msgid "Disabled"
|
806 |
-
msgstr ""
|
807 |
-
|
808 |
-
#: Application/Backend/phtml/utility.phtml:27
|
809 |
-
msgid "Backend Access Control"
|
810 |
-
msgstr ""
|
811 |
-
|
812 |
-
#: Application/Backend/phtml/utility.phtml:29
|
813 |
-
msgid ""
|
814 |
-
"Use AAM to control access to posts, pages, categories, menus and metaboxes "
|
815 |
-
"etc. Disable this setting to stop AAM from controling access for backend."
|
816 |
-
msgstr ""
|
817 |
-
|
818 |
-
#: Application/Backend/phtml/utility.phtml:38
|
819 |
-
msgid "Frontend Access Control"
|
820 |
-
msgstr ""
|
821 |
-
|
822 |
-
#: Application/Backend/phtml/utility.phtml:40
|
823 |
msgid ""
|
824 |
-
"
|
825 |
-
"
|
826 |
msgstr ""
|
827 |
|
828 |
-
#: Application/Backend/phtml/utility.phtml:
|
829 |
-
msgid "Media Files Access Control"
|
830 |
-
msgstr ""
|
831 |
-
|
832 |
-
#: Application/Backend/phtml/utility.phtml:60
|
833 |
-
msgid "Large Post Number Support"
|
834 |
-
msgstr ""
|
835 |
-
|
836 |
-
#: Application/Backend/phtml/utility.phtml:75
|
837 |
msgid "Clear All Settings"
|
838 |
msgstr ""
|
839 |
|
840 |
-
#: Application/Backend/phtml/utility.phtml:
|
841 |
msgid ""
|
842 |
"Remove all the settings related to AAM (including all extension licenses)."
|
843 |
msgstr ""
|
844 |
|
845 |
-
#: Application/Backend/phtml/utility.phtml:
|
846 |
msgid "Clear all settings"
|
847 |
msgstr ""
|
848 |
|
849 |
-
#: Application/Backend/phtml/utility.phtml:
|
850 |
msgid "All AAM settings will be removed."
|
851 |
msgstr ""
|
852 |
|
853 |
-
#: Application/Backend/phtml/utility.phtml:
|
854 |
msgid "Clear"
|
855 |
msgstr ""
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: AAM\n"
|
4 |
+
"POT-Creation-Date: 2017-02-04 14:44-0500\n"
|
5 |
"PO-Revision-Date: \n"
|
6 |
+
"Last-Translator: \n"
|
7 |
"Language-Team: WP AAM <vasyl@vasyltech.com>\n"
|
8 |
+
"Language: en_US\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 1.8.11\n"
|
13 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
14 |
"X-Poedit-SourceCharset: UTF-8\n"
|
15 |
"X-Poedit-KeywordsList: __\n"
|
16 |
"X-Poedit-Basepath: ..\n"
|
|
|
|
|
17 |
"X-Poedit-SearchPath-0: .\n"
|
18 |
|
19 |
#: media/js/aam-ui.js:44 Application/Backend/View/Localization.php:23
|
33 |
msgid "_TOTAL_ role(s)"
|
34 |
msgstr ""
|
35 |
|
36 |
+
#: media/js/aam-ui.js:98 media/js/aam-ui.js:540
|
37 |
#: Application/Backend/View/Localization.php:27
|
38 |
+
#: Application/Backend/phtml/index.phtml:137
|
39 |
#: Application/Backend/phtml/object/capability.phtml:27
|
40 |
#: Application/Backend/phtml/object/capability.phtml:57
|
41 |
msgid "Create"
|
42 |
msgstr ""
|
43 |
|
44 |
#: media/js/aam-ui.js:118 Application/Backend/View/Localization.php:28
|
45 |
+
#: Application/Backend/phtml/index.phtml:103
|
46 |
+
#: Application/Backend/phtml/index.phtml:223
|
47 |
msgid "Users"
|
48 |
msgstr ""
|
49 |
|
59 |
msgid "Clone Role"
|
60 |
msgstr ""
|
61 |
|
62 |
+
#: media/js/aam-ui.js:198 media/js/aam-ui.js:380
|
63 |
#: Application/Backend/View/Localization.php:35
|
64 |
#: Application/Backend/View/Localization.php:47
|
65 |
+
#: Application/Backend/phtml/index.phtml:171
|
66 |
msgid "Delete Role"
|
67 |
msgstr ""
|
68 |
|
69 |
+
#: media/js/aam-ui.js:272 media/js/aam-ui.js:327 media/js/aam-ui.js:1132
|
70 |
+
#: media/js/aam-ui.js:1178 Application/Backend/View/Localization.php:13
|
71 |
msgid "Saving..."
|
72 |
msgstr ""
|
73 |
|
74 |
+
#: media/js/aam-ui.js:287 Application/Backend/View/Localization.php:29
|
75 |
msgid "Failed to add new role"
|
76 |
msgstr ""
|
77 |
|
78 |
+
#: media/js/aam-ui.js:292 media/js/aam-ui.js:339 media/js/aam-ui.js:376
|
79 |
+
#: media/js/aam-ui.js:470 media/js/aam-ui.js:502 media/js/aam-ui.js:845
|
80 |
+
#: media/js/aam-ui.js:882 media/js/aam-ui.js:918 media/js/aam-ui.js:1145
|
81 |
+
#: media/js/aam-ui.js:1191 media/js/aam-ui.js:1232 media/js/aam-ui.js:1393
|
82 |
+
#: media/js/aam-ui.js:1441 media/js/aam-ui.js:1731 media/js/aam-ui.js:1826
|
83 |
+
#: media/js/aam-ui.js:1920 media/js/aam-ui.js:2009 media/js/aam-ui.js:2105
|
84 |
+
#: media/js/aam.js:207 Application/Backend/View/Localization.php:15
|
85 |
msgid "Application error"
|
86 |
msgstr ""
|
87 |
|
88 |
+
#: media/js/aam-ui.js:295 Application/Backend/View/Localization.php:30
|
89 |
msgid "Add Role"
|
90 |
msgstr ""
|
91 |
|
92 |
+
#: media/js/aam-ui.js:334 Application/Backend/View/Localization.php:31
|
93 |
msgid "Failed to update role"
|
94 |
msgstr ""
|
95 |
|
96 |
+
#: media/js/aam-ui.js:343 Application/Backend/View/Localization.php:32
|
97 |
+
#: Application/Backend/phtml/extension.phtml:51
|
98 |
+
#: Application/Backend/phtml/extension.phtml:78
|
99 |
+
#: Application/Backend/phtml/index.phtml:159
|
100 |
#: Application/Backend/phtml/object/capability.phtml:79
|
101 |
msgid "Update"
|
102 |
msgstr ""
|
103 |
|
104 |
+
#: media/js/aam-ui.js:366 media/js/aam-ui.js:1219
|
105 |
#: Application/Backend/View/Localization.php:33
|
106 |
msgid "Deleting..."
|
107 |
msgstr ""
|
108 |
|
109 |
+
#: media/js/aam-ui.js:372 Application/Backend/View/Localization.php:34
|
110 |
msgid "Failed to delete role"
|
111 |
msgstr ""
|
112 |
|
113 |
+
#: media/js/aam-ui.js:455 media/js/aam-ui.js:456 media/js/aam-ui.js:620
|
114 |
#: Application/Backend/View/Localization.php:51
|
115 |
msgid "Unlock User"
|
116 |
msgstr ""
|
117 |
|
118 |
+
#: media/js/aam-ui.js:461 media/js/aam-ui.js:462 media/js/aam-ui.js:609
|
119 |
#: Application/Backend/View/Localization.php:50
|
120 |
msgid "Lock User"
|
121 |
msgstr ""
|
122 |
|
123 |
+
#: media/js/aam-ui.js:466 Application/Backend/View/Localization.php:36
|
124 |
msgid "Failed to block user"
|
125 |
msgstr ""
|
126 |
|
127 |
+
#: media/js/aam-ui.js:532 Application/Backend/View/Localization.php:37
|
128 |
msgid "Search User"
|
129 |
msgstr ""
|
130 |
|
131 |
+
#: media/js/aam-ui.js:533 Application/Backend/View/Localization.php:38
|
132 |
msgid "_TOTAL_ user(s)"
|
133 |
msgstr ""
|
134 |
|
135 |
+
#: media/js/aam-ui.js:557 Application/Backend/View/Localization.php:39
|
136 |
+
#: Application/Backend/phtml/index.phtml:114
|
137 |
msgid "Role"
|
138 |
msgstr ""
|
139 |
|
140 |
+
#: media/js/aam-ui.js:585 Application/Backend/View/Localization.php:48
|
141 |
msgid "Manage User"
|
142 |
msgstr ""
|
143 |
|
144 |
+
#: media/js/aam-ui.js:598 Application/Backend/View/Localization.php:49
|
145 |
msgid "Edit User"
|
146 |
msgstr ""
|
147 |
|
148 |
+
#: media/js/aam-ui.js:631
|
149 |
msgid "Switch To User"
|
150 |
msgstr ""
|
151 |
|
152 |
+
#: media/js/aam-ui.js:683 Application/Backend/View/Localization.php:40
|
153 |
msgid "Anonymous"
|
154 |
msgstr ""
|
155 |
|
156 |
+
#: media/js/aam-ui.js:706
|
157 |
+
msgid "All Users, Roles and Visitor"
|
158 |
+
msgstr ""
|
159 |
+
|
160 |
+
#: media/js/aam-ui.js:750 Application/Backend/View/Localization.php:17
|
161 |
+
#: Application/Backend/phtml/object/menu.phtml:49
|
162 |
msgid "Show Menu"
|
163 |
msgstr ""
|
164 |
|
165 |
+
#: media/js/aam-ui.js:765 Application/Backend/View/Localization.php:18
|
166 |
+
#: Application/Backend/phtml/object/menu.phtml:53
|
167 |
msgid "Restrict Menu"
|
168 |
msgstr ""
|
169 |
|
170 |
+
#: media/js/aam-ui.js:877 Application/Backend/View/Localization.php:19
|
171 |
msgid "Failed to retrieve mataboxes"
|
172 |
msgstr ""
|
173 |
|
174 |
+
#: media/js/aam-ui.js:905
|
175 |
msgid "Processing"
|
176 |
msgstr ""
|
177 |
|
178 |
+
#: media/js/aam-ui.js:913
|
179 |
msgid "Failed to initialize URL"
|
180 |
msgstr ""
|
181 |
|
182 |
+
#: media/js/aam-ui.js:921 Application/Backend/phtml/object/metabox.phtml:93
|
183 |
msgid "Initialize"
|
184 |
msgstr ""
|
185 |
|
186 |
+
#: media/js/aam-ui.js:995 Application/Backend/View/Localization.php:52
|
187 |
msgid "Failed to grand capability - WordPress policy"
|
188 |
msgstr ""
|
189 |
|
190 |
+
#: media/js/aam-ui.js:1030 Application/Backend/View/Localization.php:11
|
191 |
msgid "Search Capability"
|
192 |
msgstr ""
|
193 |
|
194 |
+
#: media/js/aam-ui.js:1031 Application/Backend/View/Localization.php:12
|
195 |
msgid "_TOTAL_ capability(s)"
|
196 |
msgstr ""
|
197 |
|
198 |
+
#: media/js/aam-ui.js:1033
|
199 |
msgid "Nothing to show"
|
200 |
msgstr ""
|
201 |
|
202 |
+
#: media/js/aam-ui.js:1140 Application/Backend/View/Localization.php:14
|
203 |
msgid "Failed to add new capability"
|
204 |
msgstr ""
|
205 |
|
206 |
+
#: media/js/aam-ui.js:1148 Application/Backend/View/Localization.php:16
|
207 |
msgid "Add Capability"
|
208 |
msgstr ""
|
209 |
|
210 |
+
#: media/js/aam-ui.js:1186
|
211 |
msgid "Failed to update capability"
|
212 |
msgstr ""
|
213 |
|
214 |
+
#: media/js/aam-ui.js:1194 Application/Backend/phtml/object/capability.phtml:69
|
215 |
msgid "Update Capability"
|
216 |
msgstr ""
|
217 |
|
218 |
+
#: media/js/aam-ui.js:1227
|
219 |
msgid "Failed to delete capability"
|
220 |
msgstr ""
|
221 |
|
222 |
+
#: media/js/aam-ui.js:1235 Application/Backend/phtml/object/capability.phtml:91
|
223 |
msgid "Delete Capability"
|
224 |
msgstr ""
|
225 |
|
226 |
+
#: media/js/aam-ui.js:1480 Application/Backend/View/Localization.php:20
|
227 |
msgid "Search"
|
228 |
msgstr ""
|
229 |
|
230 |
+
#: media/js/aam-ui.js:1481 Application/Backend/View/Localization.php:21
|
231 |
msgid "_TOTAL_ object(s)"
|
232 |
msgstr ""
|
233 |
|
234 |
+
#: media/js/aam-ui.js:1547
|
235 |
msgid "Drill-Down"
|
236 |
msgstr ""
|
237 |
|
238 |
+
#: media/js/aam-ui.js:1565 Application/Backend/View/Localization.php:43
|
239 |
#: Application/Backend/phtml/metabox.phtml:7
|
240 |
msgid "Manage Access"
|
241 |
msgstr ""
|
242 |
|
243 |
+
#: media/js/aam-ui.js:1577 Application/Backend/View/Localization.php:44
|
244 |
+
#: Application/Backend/View/PostOptionList.php:52
|
245 |
msgid "Edit"
|
246 |
msgstr ""
|
247 |
|
248 |
+
#: media/js/aam-ui.js:1781 media/js/aam-ui.js:1876 media/js/aam-ui.js:1962
|
249 |
+
#: media/js/aam-ui.js:2147 media/js/aam-ui.js:2181 media/js/aam-ui.js:2219
|
250 |
msgid "Application Error"
|
251 |
msgstr ""
|
252 |
|
253 |
+
#: Application/Backend/Feature/Abstract.php:30
|
254 |
#: Application/Backend/Feature/Role.php:29
|
255 |
+
#: Application/Backend/Feature/User.php:29 Application/Backend/Manager.php:469
|
256 |
+
#: Application/Backend/Manager.php:494 Application/Core/API.php:267
|
257 |
msgid "Access Denied"
|
258 |
msgstr ""
|
259 |
|
265 |
msgid "Can not remove the capability"
|
266 |
msgstr ""
|
267 |
|
268 |
+
#: Application/Backend/Feature/Capability.php:254
|
269 |
+
#: Application/Backend/Feature/Capability.php:293
|
270 |
msgid "System"
|
271 |
msgstr ""
|
272 |
|
273 |
+
#: Application/Backend/Feature/Capability.php:255
|
274 |
+
#: Application/Backend/Feature/Capability.php:295
|
275 |
+
#: Application/Backend/Feature/Post.php:385
|
276 |
msgid "Posts & Pages"
|
277 |
msgstr ""
|
278 |
|
279 |
+
#: Application/Backend/Feature/Capability.php:256
|
280 |
+
#: Application/Backend/Feature/Capability.php:297
|
281 |
+
#: Application/Backend/phtml/object/post.phtml:88
|
282 |
msgid "Backend"
|
283 |
msgstr ""
|
284 |
|
285 |
+
#: Application/Backend/Feature/Capability.php:257
|
286 |
+
#: Application/Backend/Feature/Capability.php:299
|
287 |
msgid "Miscellaneous"
|
288 |
msgstr ""
|
289 |
|
290 |
+
#: Application/Backend/Feature/Capability.php:320
|
291 |
msgid "Capabilities"
|
292 |
msgstr ""
|
293 |
|
295 |
msgid "Contact Us"
|
296 |
msgstr ""
|
297 |
|
298 |
+
#: Application/Backend/Feature/Extension.php:91
|
299 |
msgid "License key is missing."
|
300 |
msgstr ""
|
301 |
|
302 |
+
#: Application/Backend/Feature/Extension.php:156
|
303 |
msgid "Extensions"
|
304 |
msgstr ""
|
305 |
|
306 |
+
#: Application/Backend/Feature/LoginRedirect.php:103
|
307 |
+
msgid "Login Redirect"
|
308 |
+
msgstr ""
|
309 |
+
|
310 |
+
#: Application/Backend/Feature/Menu.php:190
|
311 |
msgid "Backend Menu"
|
312 |
msgstr ""
|
313 |
|
315 |
msgid "Metaboxes & Widgets"
|
316 |
msgstr ""
|
317 |
|
318 |
+
#: Application/Backend/Feature/Post.php:266
|
319 |
msgid "You reached your limitation."
|
320 |
msgstr ""
|
321 |
|
322 |
+
#: Application/Backend/Feature/Redirect.php:103
|
323 |
+
msgid "Access Denied Redirect"
|
324 |
+
msgstr ""
|
325 |
+
|
326 |
+
#: Application/Backend/Feature/Security.php:73
|
327 |
+
msgid "Security"
|
328 |
msgstr ""
|
329 |
|
330 |
+
#: Application/Backend/Feature/Shortcode.php:45
|
331 |
+
#: Application/Backend/phtml/shortcode.phtml:6
|
332 |
+
msgid "Shortcodes"
|
333 |
+
msgstr ""
|
334 |
+
|
335 |
+
#: Application/Backend/Feature/Teaser.php:103
|
336 |
msgid "Content Teaser"
|
337 |
msgstr ""
|
338 |
|
339 |
+
#: Application/Backend/Feature/Utility.php:103
|
340 |
msgid "Utilities"
|
341 |
msgstr ""
|
342 |
|
343 |
+
#: Application/Backend/Manager.php:143
|
344 |
#, php-format
|
345 |
msgid "Extension %s has new update available for download."
|
346 |
msgstr ""
|
347 |
|
348 |
+
#: Application/Backend/Manager.php:150
|
349 |
+
#, php-format
|
350 |
+
msgid ""
|
351 |
+
"License violation for %s extension. Enter valid license on the Extensions "
|
352 |
+
"tab or contact us immediately."
|
353 |
+
msgstr ""
|
354 |
+
|
355 |
#: Application/Backend/Manager.php:194
|
356 |
msgid "Access Manager"
|
357 |
msgstr ""
|
358 |
|
359 |
+
#: Application/Backend/Manager.php:264 Application/Backend/Manager.php:284
|
360 |
+
#: Application/Backend/Manager.php:309
|
361 |
msgid "Access"
|
362 |
msgstr ""
|
363 |
|
373 |
msgid "Current role"
|
374 |
msgstr ""
|
375 |
|
376 |
+
#: Application/Backend/View/PostOptionList.php:13
|
377 |
+
#: Application/Backend/View/PostOptionList.php:44
|
378 |
+
msgid "List"
|
379 |
+
msgstr ""
|
380 |
+
|
381 |
+
#: Application/Backend/View/PostOptionList.php:14
|
382 |
+
#: Application/Backend/View/PostOptionList.php:45
|
383 |
+
#, php-format
|
384 |
+
msgid "Hide %s."
|
385 |
+
msgstr ""
|
386 |
+
|
387 |
+
#: Application/Backend/View/PostOptionList.php:17
|
388 |
+
#: Application/Backend/View/PostOptionList.php:48
|
389 |
+
msgid "List To Others"
|
390 |
+
msgstr ""
|
391 |
+
|
392 |
+
#: Application/Backend/View/PostOptionList.php:18
|
393 |
+
#: Application/Backend/View/PostOptionList.php:49
|
394 |
+
#, php-format
|
395 |
+
msgid "Hide %s for all except author."
|
396 |
+
msgstr ""
|
397 |
+
|
398 |
+
#: Application/Backend/View/PostOptionList.php:21
|
399 |
+
msgid "Read"
|
400 |
+
msgstr ""
|
401 |
+
|
402 |
+
#: Application/Backend/View/PostOptionList.php:22
|
403 |
+
#, php-format
|
404 |
+
msgid "Restrict access to read %s."
|
405 |
+
msgstr ""
|
406 |
+
|
407 |
+
#: Application/Backend/View/PostOptionList.php:25
|
408 |
+
msgid "Read By Others"
|
409 |
+
msgstr ""
|
410 |
+
|
411 |
+
#: Application/Backend/View/PostOptionList.php:26
|
412 |
+
msgid "Restrict access to read for all except author."
|
413 |
+
msgstr ""
|
414 |
+
|
415 |
+
#: Application/Backend/View/PostOptionList.php:29
|
416 |
+
msgid "Limit"
|
417 |
+
msgstr ""
|
418 |
+
|
419 |
+
#: Application/Backend/View/PostOptionList.php:30
|
420 |
+
#, php-format
|
421 |
+
msgid ""
|
422 |
+
"If checked, show defined in the Content Teaser tab teaser message instead of "
|
423 |
+
"%s content."
|
424 |
+
msgstr ""
|
425 |
+
|
426 |
+
#: Application/Backend/View/PostOptionList.php:33
|
427 |
+
msgid "Comment"
|
428 |
+
msgstr ""
|
429 |
+
|
430 |
+
#: Application/Backend/View/PostOptionList.php:34
|
431 |
+
#, php-format
|
432 |
+
msgid "Restrict access to comment on %s if commenting feature is enabled."
|
433 |
+
msgstr ""
|
434 |
+
|
435 |
+
#: Application/Backend/View/PostOptionList.php:37
|
436 |
+
msgid "Password Protected"
|
437 |
+
msgstr ""
|
438 |
+
|
439 |
+
#: Application/Backend/View/PostOptionList.php:38
|
440 |
+
#, php-format
|
441 |
+
msgid "Password: %s"
|
442 |
+
msgstr ""
|
443 |
+
|
444 |
+
#: Application/Backend/View/PostOptionList.php:38
|
445 |
+
msgid "change"
|
446 |
+
msgstr ""
|
447 |
+
|
448 |
+
#: Application/Backend/View/PostOptionList.php:39
|
449 |
+
#, php-format
|
450 |
+
msgid "Add a password protection for the %s."
|
451 |
+
msgstr ""
|
452 |
+
|
453 |
+
#: Application/Backend/View/PostOptionList.php:53
|
454 |
+
#, php-format
|
455 |
+
msgid "Restrict access to edit %s."
|
456 |
+
msgstr ""
|
457 |
+
|
458 |
+
#: Application/Backend/View/PostOptionList.php:56
|
459 |
+
msgid "Edit By Others"
|
460 |
+
msgstr ""
|
461 |
+
|
462 |
+
#: Application/Backend/View/PostOptionList.php:57
|
463 |
+
#, php-format
|
464 |
+
msgid "Restrict access to edit %s for all except author."
|
465 |
+
msgstr ""
|
466 |
+
|
467 |
+
#: Application/Backend/View/PostOptionList.php:60
|
468 |
+
#: Application/Backend/phtml/index.phtml:177
|
469 |
+
#: Application/Backend/phtml/object/capability.phtml:97
|
470 |
+
msgid "Delete"
|
471 |
+
msgstr ""
|
472 |
+
|
473 |
+
#: Application/Backend/View/PostOptionList.php:61
|
474 |
+
#, php-format
|
475 |
+
msgid "Restrict access to trash or permanently delete %s."
|
476 |
+
msgstr ""
|
477 |
+
|
478 |
+
#: Application/Backend/View/PostOptionList.php:64
|
479 |
+
msgid "Delete By Others"
|
480 |
+
msgstr ""
|
481 |
+
|
482 |
+
#: Application/Backend/View/PostOptionList.php:65
|
483 |
+
#, php-format
|
484 |
+
msgid ""
|
485 |
+
"Restrict access to trash or permanently delete %s for all except author."
|
486 |
+
msgstr ""
|
487 |
+
|
488 |
+
#: Application/Backend/View/PostOptionList.php:68
|
489 |
+
msgid "Publish"
|
490 |
+
msgstr ""
|
491 |
+
|
492 |
+
#: Application/Backend/View/PostOptionList.php:69
|
493 |
+
#, php-format
|
494 |
+
msgid ""
|
495 |
+
"Restrict access to publish %s. Quick Edit inline action is also removed."
|
496 |
+
msgstr ""
|
497 |
+
|
498 |
+
#: Application/Backend/View/PostOptionList.php:72
|
499 |
+
msgid "Publish By Others"
|
500 |
+
msgstr ""
|
501 |
+
|
502 |
+
#: Application/Backend/View/PostOptionList.php:73
|
503 |
+
#, php-format
|
504 |
+
msgid ""
|
505 |
+
"Restrict access to publish %s for all except author. Quick Edit inline "
|
506 |
+
"action is also removed."
|
507 |
+
msgstr ""
|
508 |
+
|
509 |
+
#: Application/Backend/View/SecurityOptionList.php:12
|
510 |
+
msgid "Login Timeout"
|
511 |
+
msgstr ""
|
512 |
+
|
513 |
+
#: Application/Backend/View/SecurityOptionList.php:13
|
514 |
+
#, php-format
|
515 |
+
msgid ""
|
516 |
+
"Delay the login process for %s second to significantly reduce the chance for "
|
517 |
+
"brute force or dictionary attack."
|
518 |
+
msgstr ""
|
519 |
+
|
520 |
+
#: Application/Backend/View/SecurityOptionList.php:17
|
521 |
+
msgid "Track IP Address"
|
522 |
+
msgstr ""
|
523 |
+
|
524 |
+
#: Application/Backend/View/SecurityOptionList.php:18
|
525 |
+
msgid ""
|
526 |
+
"Track the IP address for the last successful user login and trigger double "
|
527 |
+
"authentication via email when the same username/password combination is used "
|
528 |
+
"to login from a different IP address."
|
529 |
+
msgstr ""
|
530 |
+
|
531 |
+
#: Application/Backend/View/SecurityOptionList.php:22
|
532 |
+
msgid "Brute Force Lockout"
|
533 |
+
msgstr ""
|
534 |
+
|
535 |
+
#: Application/Backend/View/SecurityOptionList.php:23
|
536 |
+
#, php-format
|
537 |
+
msgid ""
|
538 |
+
"Automatically reject login attempts if number of unsuccessful login attempts "
|
539 |
+
"is more than %s over the period of %s."
|
540 |
+
msgstr ""
|
541 |
+
|
542 |
+
#: Application/Backend/View/UtilityOptionList.php:12
|
543 |
+
msgid "Edit/Delete Capabilities"
|
544 |
+
msgstr ""
|
545 |
+
|
546 |
+
#: Application/Backend/View/UtilityOptionList.php:17
|
547 |
+
msgid "Backend Access Control"
|
548 |
+
msgstr ""
|
549 |
+
|
550 |
+
#: Application/Backend/View/UtilityOptionList.php:18
|
551 |
+
msgid ""
|
552 |
+
"Allow AAM to manage access to backend resources like backend menu, "
|
553 |
+
"categories or posts."
|
554 |
+
msgstr ""
|
555 |
+
|
556 |
+
#: Application/Backend/View/UtilityOptionList.php:22
|
557 |
+
msgid "Frontend Access Control"
|
558 |
+
msgstr ""
|
559 |
+
|
560 |
+
#: Application/Backend/View/UtilityOptionList.php:23
|
561 |
+
msgid ""
|
562 |
+
"Allow AAM to manage access to frontend resources like pages, categories or "
|
563 |
+
"posts."
|
564 |
+
msgstr ""
|
565 |
+
|
566 |
+
#: Application/Backend/View/UtilityOptionList.php:27
|
567 |
+
msgid "Media Files Access Control"
|
568 |
+
msgstr ""
|
569 |
+
|
570 |
+
#: Application/Backend/View/UtilityOptionList.php:32
|
571 |
+
msgid "Clear cache automatically"
|
572 |
+
msgstr ""
|
573 |
+
|
574 |
+
#: Application/Core/Repository.php:302 Application/Extension/Repository.php:273
|
575 |
#, php-format
|
576 |
msgid "Failed to create %s"
|
577 |
msgstr ""
|
578 |
|
579 |
+
#: Application/Core/Repository.php:306 Application/Extension/Repository.php:277
|
580 |
#, php-format
|
581 |
msgid "Directory %s is not writable"
|
582 |
msgstr ""
|
583 |
|
584 |
+
#: Application/Frontend/Manager.php:184
|
585 |
+
#, php-format
|
586 |
+
msgid "[%s] Double Authentication"
|
587 |
+
msgstr ""
|
588 |
+
|
589 |
+
#: Application/Frontend/Manager.php:186
|
590 |
+
#, php-format
|
591 |
+
msgid "Someone was trying to login from the different IP address %s:"
|
592 |
+
msgstr ""
|
593 |
+
|
594 |
+
#: Application/Frontend/Manager.php:187
|
595 |
+
#, php-format
|
596 |
+
msgid "Website: %s"
|
597 |
+
msgstr ""
|
598 |
+
|
599 |
+
#: Application/Frontend/Manager.php:188
|
600 |
+
#, php-format
|
601 |
+
msgid "Username: %s"
|
602 |
+
msgstr ""
|
603 |
+
|
604 |
+
#: Application/Frontend/Manager.php:189
|
605 |
+
msgid "Visit the following address to authorize the login:"
|
606 |
+
msgstr ""
|
607 |
+
|
608 |
+
#: Application/Shortcode/Factory.php:52
|
609 |
+
msgid "No valid strategy found for the given context"
|
610 |
+
msgstr ""
|
611 |
+
|
612 |
+
#: aam.php:163
|
613 |
msgid "PHP 5.2 or higher is required."
|
614 |
msgstr ""
|
615 |
|
616 |
+
#: aam.php:165
|
617 |
msgid "WP 3.8 or higher is required."
|
618 |
msgstr ""
|
619 |
|
635 |
msgid "Submit"
|
636 |
msgstr ""
|
637 |
|
638 |
+
#: Application/Backend/phtml/extension.phtml:28
|
639 |
msgid "Premium"
|
640 |
msgstr ""
|
641 |
|
642 |
+
#: Application/Backend/phtml/extension.phtml:29
|
643 |
+
#: Application/Backend/phtml/extension.phtml:69
|
|
|
644 |
msgid "Free"
|
645 |
msgstr ""
|
646 |
|
647 |
+
#: Application/Backend/phtml/extension.phtml:30
|
|
|
|
|
|
|
|
|
648 |
msgid "Check For Updates"
|
649 |
msgstr ""
|
650 |
|
651 |
+
#: Application/Backend/phtml/extension.phtml:30
|
652 |
msgid "Check"
|
653 |
msgstr ""
|
654 |
|
655 |
+
#: Application/Backend/phtml/extension.phtml:49
|
656 |
+
#: Application/Backend/phtml/extension.phtml:76
|
|
|
657 |
msgid "Installed"
|
658 |
msgstr ""
|
659 |
|
660 |
+
#: Application/Backend/phtml/extension.phtml:53
|
661 |
+
msgid "Inactive"
|
662 |
msgstr ""
|
663 |
|
664 |
+
#: Application/Backend/phtml/extension.phtml:55
|
665 |
+
msgid "Purchase"
|
|
|
666 |
msgstr ""
|
667 |
|
668 |
+
#: Application/Backend/phtml/extension.phtml:80
|
669 |
+
#: Application/Backend/phtml/extension.phtml:111
|
670 |
+
msgid "Download"
|
671 |
msgstr ""
|
672 |
|
673 |
+
#: Application/Backend/phtml/extension.phtml:95
|
674 |
+
#: Application/Backend/phtml/extension.phtml:122
|
675 |
+
#: Application/Backend/phtml/extension.phtml:133
|
676 |
+
#: Application/Backend/phtml/index.phtml:126
|
677 |
+
#: Application/Backend/phtml/index.phtml:138
|
678 |
+
#: Application/Backend/phtml/index.phtml:148
|
679 |
+
#: Application/Backend/phtml/index.phtml:160
|
680 |
+
#: Application/Backend/phtml/index.phtml:170
|
681 |
+
#: Application/Backend/phtml/index.phtml:178
|
682 |
#: Application/Backend/phtml/object/capability.phtml:47
|
683 |
#: Application/Backend/phtml/object/capability.phtml:58
|
684 |
#: Application/Backend/phtml/object/capability.phtml:68
|
687 |
#: Application/Backend/phtml/object/capability.phtml:98
|
688 |
#: Application/Backend/phtml/object/metabox.phtml:80
|
689 |
#: Application/Backend/phtml/object/metabox.phtml:94
|
690 |
+
#: Application/Backend/phtml/object/post.phtml:121
|
691 |
+
#: Application/Backend/phtml/object/post.phtml:132
|
692 |
+
#: Application/Backend/phtml/utility.phtml:42
|
693 |
msgid "Close"
|
694 |
msgstr ""
|
695 |
|
696 |
+
#: Application/Backend/phtml/extension.phtml:96
|
697 |
msgid "Notification"
|
698 |
msgstr ""
|
699 |
|
700 |
+
#: Application/Backend/phtml/extension.phtml:100
|
701 |
msgid ""
|
702 |
"Extension requires manual installation. Please follow few simple steps below."
|
703 |
msgstr ""
|
704 |
|
705 |
+
#: Application/Backend/phtml/extension.phtml:112
|
706 |
+
#: Application/Backend/phtml/utility.phtml:50
|
707 |
msgid "Cancel"
|
708 |
msgstr ""
|
709 |
|
710 |
+
#: Application/Backend/phtml/extension.phtml:123
|
711 |
msgid "Install Extension"
|
712 |
msgstr ""
|
713 |
|
714 |
+
#: Application/Backend/phtml/extension.phtml:127
|
715 |
msgid ""
|
716 |
"Insert license key that you recieved after the payment (find the email "
|
717 |
"example below). It might take up to 2 hours to process the payment. Please "
|
730 |
msgstr ""
|
731 |
|
732 |
#: Application/Backend/phtml/index.phtml:22
|
733 |
+
msgid "Please note!"
|
734 |
msgstr ""
|
735 |
|
736 |
#: Application/Backend/phtml/index.phtml:23
|
742 |
|
743 |
#: Application/Backend/phtml/index.phtml:24
|
744 |
#, php-format
|
745 |
+
msgid "Refer to our %sHelp%s section when there is any question."
|
746 |
msgstr ""
|
747 |
|
748 |
+
#: Application/Backend/phtml/index.phtml:37
|
749 |
msgid "Notifications"
|
750 |
msgstr ""
|
751 |
|
752 |
+
#: Application/Backend/phtml/index.phtml:81
|
753 |
msgid "AAM Multisite"
|
754 |
msgstr ""
|
755 |
|
756 |
+
#: Application/Backend/phtml/index.phtml:85
|
757 |
msgid "Install AAM Multisite"
|
758 |
msgstr ""
|
759 |
|
760 |
+
#: Application/Backend/phtml/index.phtml:96
|
761 |
msgid "Users/Roles Panel"
|
762 |
msgstr ""
|
763 |
|
764 |
+
#: Application/Backend/phtml/index.phtml:102
|
765 |
+
#: Application/Backend/phtml/index.phtml:218
|
766 |
msgid "Roles"
|
767 |
msgstr ""
|
768 |
|
769 |
+
#: Application/Backend/phtml/index.phtml:104
|
770 |
+
#: Application/Backend/phtml/index.phtml:228
|
771 |
msgid "Visitor"
|
772 |
msgstr ""
|
773 |
|
774 |
+
#: Application/Backend/phtml/index.phtml:105
|
775 |
+
#: Application/Backend/phtml/index.phtml:233
|
776 |
+
msgid "Default"
|
777 |
+
msgstr ""
|
778 |
+
|
779 |
+
#: Application/Backend/phtml/index.phtml:115
|
780 |
+
#: Application/Backend/phtml/index.phtml:191
|
781 |
msgid "Action"
|
782 |
msgstr ""
|
783 |
|
784 |
+
#: Application/Backend/phtml/index.phtml:127
|
785 |
msgid "Create Role"
|
786 |
msgstr ""
|
787 |
|
788 |
+
#: Application/Backend/phtml/index.phtml:131
|
789 |
+
#: Application/Backend/phtml/index.phtml:153
|
790 |
msgid "Role Name"
|
791 |
msgstr ""
|
792 |
|
793 |
+
#: Application/Backend/phtml/index.phtml:132
|
794 |
+
#: Application/Backend/phtml/index.phtml:154
|
795 |
msgid "Enter Role Name"
|
796 |
msgstr ""
|
797 |
|
798 |
+
#: Application/Backend/phtml/index.phtml:149
|
799 |
msgid "Update Role"
|
800 |
msgstr ""
|
801 |
|
802 |
+
#: Application/Backend/phtml/index.phtml:174
|
803 |
#, php-format
|
804 |
+
msgid "Are you sure that you want to delete the %s role?"
|
|
|
|
|
|
|
|
|
|
|
|
|
805 |
msgstr ""
|
806 |
|
807 |
+
#: Application/Backend/phtml/index.phtml:190
|
808 |
msgid "Username"
|
809 |
msgstr ""
|
810 |
|
811 |
+
#: Application/Backend/phtml/index.phtml:200
|
812 |
msgid ""
|
813 |
"Manage access to your website for visitors (any user that is not "
|
814 |
"authenticated)"
|
815 |
msgstr ""
|
816 |
|
817 |
+
#: Application/Backend/phtml/index.phtml:201
|
818 |
msgid "Manage Visitors"
|
819 |
msgstr ""
|
820 |
|
821 |
+
#: Application/Backend/phtml/index.phtml:206
|
822 |
+
msgid ""
|
823 |
+
"Manage default access to your website resources for all users, roles and "
|
824 |
+
"visitor. This includes Administrator role and your user"
|
825 |
+
msgstr ""
|
826 |
+
|
827 |
+
#: Application/Backend/phtml/index.phtml:207
|
828 |
+
msgid "Manage Default Access"
|
829 |
+
msgstr ""
|
830 |
+
|
831 |
+
#: Application/Backend/phtml/index.phtml:219
|
832 |
msgid ""
|
833 |
"With Roles tab you can manage access for any defined role, edit role's name, "
|
834 |
"create new role or even delete existing (but only when there is no users "
|
835 |
"assigned to it). You are not allowed to delete Administrator role."
|
836 |
msgstr ""
|
837 |
|
838 |
+
#: Application/Backend/phtml/index.phtml:224
|
839 |
msgid ""
|
840 |
"Manage access for any user. As a bonus feature, you can block user. It means "
|
841 |
"that user will be not able to login to your website anymore."
|
842 |
msgstr ""
|
843 |
|
844 |
+
#: Application/Backend/phtml/index.phtml:229
|
845 |
msgid ""
|
846 |
"Visitor can be considered any user that is not authenticated to your website."
|
847 |
msgstr ""
|
848 |
|
849 |
+
#: Application/Backend/phtml/index.phtml:234
|
850 |
+
msgid ""
|
851 |
+
"Manage default access settings to your website resources for all users, "
|
852 |
+
"roles and visitors."
|
853 |
+
msgstr ""
|
854 |
+
|
855 |
#: Application/Backend/phtml/object/capability.phtml:16
|
856 |
msgid "Filter"
|
857 |
msgstr ""
|
871 |
msgstr ""
|
872 |
|
873 |
#: Application/Backend/phtml/object/capability.phtml:37
|
874 |
+
#: Application/Backend/phtml/object/post.phtml:44
|
875 |
msgid "Actions"
|
876 |
msgstr ""
|
877 |
|
889 |
msgid "Are you sure that you want to delete %s capability for all roles?"
|
890 |
msgstr ""
|
891 |
|
892 |
+
#: Application/Backend/phtml/object/login-redirect.phtml:43
|
893 |
+
#: Application/Backend/phtml/object/redirect.phtml:61
|
894 |
+
msgid "Existing Page"
|
895 |
+
msgstr ""
|
896 |
+
|
897 |
+
#: Application/Backend/phtml/object/login-redirect.phtml:52
|
898 |
+
#: Application/Backend/phtml/object/redirect.phtml:70
|
899 |
+
msgid "-- Select Page --"
|
900 |
+
msgstr ""
|
901 |
+
|
902 |
+
#: Application/Backend/phtml/object/login-redirect.phtml:58
|
903 |
+
#: Application/Backend/phtml/object/redirect.phtml:76
|
904 |
+
#: Application/Backend/phtml/object/redirect.phtml:109
|
905 |
+
msgid "The URL"
|
906 |
msgstr ""
|
907 |
|
908 |
+
#: Application/Backend/phtml/object/login-redirect.phtml:63
|
909 |
+
#: Application/Backend/phtml/object/redirect.phtml:81
|
910 |
+
#: Application/Backend/phtml/object/redirect.phtml:113
|
911 |
+
msgid "PHP Callback Function"
|
912 |
+
msgstr ""
|
913 |
+
|
914 |
+
#: Application/Backend/phtml/object/menu.phtml:7
|
915 |
#: Application/Backend/phtml/object/metabox.phtml:12
|
916 |
+
#: Application/Backend/phtml/object/post.phtml:27
|
917 |
+
msgid "Settings are customized"
|
918 |
msgstr ""
|
919 |
|
920 |
+
#: Application/Backend/phtml/object/menu.phtml:8
|
921 |
#: Application/Backend/phtml/object/metabox.phtml:13
|
922 |
+
#: Application/Backend/phtml/object/post.phtml:28
|
923 |
msgid "Reset To Default"
|
924 |
msgstr ""
|
925 |
|
940 |
msgstr ""
|
941 |
|
942 |
#: Application/Backend/phtml/object/metabox.phtml:71
|
943 |
+
msgid "The list is not initialized. Click Refresh button above."
|
|
|
|
|
944 |
msgstr ""
|
945 |
|
946 |
#: Application/Backend/phtml/object/metabox.phtml:81
|
964 |
msgid "Insert valid URL"
|
965 |
msgstr ""
|
966 |
|
967 |
+
#: Application/Backend/phtml/object/post.phtml:17
|
|
|
|
|
|
|
|
|
|
|
968 |
msgid "Root"
|
969 |
msgstr ""
|
970 |
|
971 |
+
#: Application/Backend/phtml/object/post.phtml:43
|
972 |
msgid "Title"
|
973 |
msgstr ""
|
974 |
|
975 |
+
#: Application/Backend/phtml/object/post.phtml:52
|
976 |
+
#: Application/Backend/phtml/object/post.phtml:57
|
977 |
+
#: Application/Backend/phtml/object/post.phtml:112
|
978 |
msgid "Go Back"
|
979 |
msgstr ""
|
980 |
|
981 |
+
#: Application/Backend/phtml/object/post.phtml:65
|
982 |
msgid "Frontend"
|
983 |
msgstr ""
|
984 |
|
985 |
+
#: Application/Backend/phtml/object/post.phtml:122
|
986 |
+
msgid "Change Password"
|
|
|
987 |
msgstr ""
|
988 |
|
989 |
+
#: Application/Backend/phtml/object/post.phtml:126
|
990 |
+
msgid "Password"
|
991 |
msgstr ""
|
992 |
|
993 |
+
#: Application/Backend/phtml/object/post.phtml:127
|
994 |
+
msgid "Enter Password"
|
995 |
msgstr ""
|
996 |
|
997 |
+
#: Application/Backend/phtml/object/post.phtml:131
|
998 |
+
msgid "Change"
|
999 |
msgstr ""
|
1000 |
|
1001 |
+
#: Application/Backend/phtml/object/redirect.phtml:25
|
1002 |
msgid "Frontend Redirect"
|
1003 |
msgstr ""
|
1004 |
|
1005 |
+
#: Application/Backend/phtml/object/redirect.phtml:26
|
1006 |
msgid "Backend Redirect"
|
1007 |
msgstr ""
|
1008 |
|
1009 |
+
#: Application/Backend/phtml/object/redirect.phtml:56
|
1010 |
+
#: Application/Backend/phtml/object/redirect.phtml:104
|
1011 |
msgid "Customized Message"
|
1012 |
msgstr ""
|
1013 |
|
1014 |
+
#: Application/Backend/phtml/object/redirect.phtml:57
|
1015 |
+
#: Application/Backend/phtml/object/redirect.phtml:105
|
1016 |
msgid "Enter message..."
|
1017 |
msgstr ""
|
1018 |
|
1019 |
+
#: Application/Backend/phtml/object/teaser.phtml:25
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1020 |
msgid "Teaser Message"
|
1021 |
msgstr ""
|
1022 |
|
1023 |
+
#: Application/Backend/phtml/object/teaser.phtml:26
|
1024 |
msgid "Enter teaser message..."
|
1025 |
msgstr ""
|
1026 |
|
1027 |
+
#: Application/Backend/phtml/object/teaser.phtml:31
|
1028 |
msgid "Add excerpt before teaser message"
|
1029 |
msgstr ""
|
1030 |
|
1032 |
msgid "Inherit Capabilities From"
|
1033 |
msgstr ""
|
1034 |
|
1035 |
+
#: Application/Backend/phtml/security.phtml:30
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1036 |
msgid ""
|
1037 |
+
"Improve your website security and keep your website error free with "
|
1038 |
+
"CodePinch."
|
1039 |
msgstr ""
|
1040 |
|
1041 |
+
#: Application/Backend/phtml/utility.phtml:26
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1042 |
msgid "Clear All Settings"
|
1043 |
msgstr ""
|
1044 |
|
1045 |
+
#: Application/Backend/phtml/utility.phtml:28
|
1046 |
msgid ""
|
1047 |
"Remove all the settings related to AAM (including all extension licenses)."
|
1048 |
msgstr ""
|
1049 |
|
1050 |
+
#: Application/Backend/phtml/utility.phtml:43
|
1051 |
msgid "Clear all settings"
|
1052 |
msgstr ""
|
1053 |
|
1054 |
+
#: Application/Backend/phtml/utility.phtml:46
|
1055 |
msgid "All AAM settings will be removed."
|
1056 |
msgstr ""
|
1057 |
|
1058 |
+
#: Application/Backend/phtml/utility.phtml:49
|
1059 |
msgid "Clear"
|
1060 |
msgstr ""
|
Lang/advanced-access-manager.pot
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
msgid ""
|
3 |
msgstr ""
|
4 |
"Project-Id-Version: AAM\n"
|
5 |
-
"POT-Creation-Date:
|
6 |
"PO-Revision-Date: \n"
|
7 |
"Last-Translator: WPAAM <support@wpaam.com>\n"
|
8 |
"Language-Team: WP AAM <vasyl@vasyltech.com>\n"
|
@@ -10,7 +10,7 @@ msgstr ""
|
|
10 |
"MIME-Version: 1.0\n"
|
11 |
"Content-Type: text/plain; charset=UTF-8\n"
|
12 |
"Content-Transfer-Encoding: 8bit\n"
|
13 |
-
"X-Generator: Poedit 1.8.
|
14 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
15 |
"X-Poedit-SourceCharset: UTF-8\n"
|
16 |
"X-Poedit-KeywordsList: __\n"
|
@@ -34,17 +34,17 @@ msgstr ""
|
|
34 |
msgid "_TOTAL_ role(s)"
|
35 |
msgstr ""
|
36 |
|
37 |
-
#: media/js/aam-ui.js:98 media/js/aam-ui.js:
|
38 |
#: Application/Backend/View/Localization.php:27
|
39 |
-
#: Application/Backend/phtml/index.phtml:
|
40 |
#: Application/Backend/phtml/object/capability.phtml:27
|
41 |
#: Application/Backend/phtml/object/capability.phtml:57
|
42 |
msgid "Create"
|
43 |
msgstr ""
|
44 |
|
45 |
#: media/js/aam-ui.js:118 Application/Backend/View/Localization.php:28
|
46 |
-
#: Application/Backend/phtml/index.phtml:
|
47 |
-
#: Application/Backend/phtml/index.phtml:
|
48 |
msgid "Users"
|
49 |
msgstr ""
|
50 |
|
@@ -60,196 +60,201 @@ msgstr ""
|
|
60 |
msgid "Clone Role"
|
61 |
msgstr ""
|
62 |
|
63 |
-
#: media/js/aam-ui.js:198 media/js/aam-ui.js:
|
64 |
#: Application/Backend/View/Localization.php:35
|
65 |
#: Application/Backend/View/Localization.php:47
|
66 |
-
#: Application/Backend/phtml/index.phtml:
|
67 |
msgid "Delete Role"
|
68 |
msgstr ""
|
69 |
|
70 |
-
#: media/js/aam-ui.js:
|
71 |
-
#: media/js/aam-ui.js:
|
72 |
msgid "Saving..."
|
73 |
msgstr ""
|
74 |
|
75 |
-
#: media/js/aam-ui.js:
|
76 |
msgid "Failed to add new role"
|
77 |
msgstr ""
|
78 |
|
79 |
-
#: media/js/aam-ui.js:
|
80 |
-
#: media/js/aam-ui.js:
|
81 |
-
#: media/js/aam-ui.js:
|
82 |
-
#: media/js/aam-ui.js:
|
83 |
-
#: media/js/aam-ui.js:
|
84 |
-
#: media/js/aam-ui.js:
|
85 |
-
#: Application/Backend/View/Localization.php:15
|
86 |
msgid "Application error"
|
87 |
msgstr ""
|
88 |
|
89 |
-
#: media/js/aam-ui.js:
|
90 |
msgid "Add Role"
|
91 |
msgstr ""
|
92 |
|
93 |
-
#: media/js/aam-ui.js:
|
94 |
msgid "Failed to update role"
|
95 |
msgstr ""
|
96 |
|
97 |
-
#: media/js/aam-ui.js:
|
98 |
-
#: Application/Backend/phtml/extension.phtml:
|
99 |
-
#: Application/Backend/phtml/extension.phtml:
|
100 |
-
#: Application/Backend/phtml/index.phtml:
|
101 |
#: Application/Backend/phtml/object/capability.phtml:79
|
102 |
msgid "Update"
|
103 |
msgstr ""
|
104 |
|
105 |
-
#: media/js/aam-ui.js:
|
106 |
#: Application/Backend/View/Localization.php:33
|
107 |
msgid "Deleting..."
|
108 |
msgstr ""
|
109 |
|
110 |
-
#: media/js/aam-ui.js:
|
111 |
msgid "Failed to delete role"
|
112 |
msgstr ""
|
113 |
|
114 |
-
#: media/js/aam-ui.js:
|
115 |
#: Application/Backend/View/Localization.php:51
|
116 |
msgid "Unlock User"
|
117 |
msgstr ""
|
118 |
|
119 |
-
#: media/js/aam-ui.js:
|
120 |
#: Application/Backend/View/Localization.php:50
|
121 |
msgid "Lock User"
|
122 |
msgstr ""
|
123 |
|
124 |
-
#: media/js/aam-ui.js:
|
125 |
msgid "Failed to block user"
|
126 |
msgstr ""
|
127 |
|
128 |
-
#: media/js/aam-ui.js:
|
129 |
msgid "Search User"
|
130 |
msgstr ""
|
131 |
|
132 |
-
#: media/js/aam-ui.js:
|
133 |
msgid "_TOTAL_ user(s)"
|
134 |
msgstr ""
|
135 |
|
136 |
-
#: media/js/aam-ui.js:
|
137 |
-
#: Application/Backend/phtml/index.phtml:
|
138 |
msgid "Role"
|
139 |
msgstr ""
|
140 |
|
141 |
-
#: media/js/aam-ui.js:
|
142 |
msgid "Manage User"
|
143 |
msgstr ""
|
144 |
|
145 |
-
#: media/js/aam-ui.js:
|
146 |
msgid "Edit User"
|
147 |
msgstr ""
|
148 |
|
149 |
-
#: media/js/aam-ui.js:
|
150 |
msgid "Switch To User"
|
151 |
msgstr ""
|
152 |
|
153 |
-
#: media/js/aam-ui.js:
|
154 |
msgid "Anonymous"
|
155 |
msgstr ""
|
156 |
|
157 |
-
#: media/js/aam-ui.js:
|
158 |
-
|
|
|
|
|
|
|
|
|
159 |
msgid "Show Menu"
|
160 |
msgstr ""
|
161 |
|
162 |
-
#: media/js/aam-ui.js:
|
163 |
-
#: Application/Backend/phtml/object/menu.phtml:
|
164 |
msgid "Restrict Menu"
|
165 |
msgstr ""
|
166 |
|
167 |
-
#: media/js/aam-ui.js:
|
168 |
msgid "Failed to retrieve mataboxes"
|
169 |
msgstr ""
|
170 |
|
171 |
-
#: media/js/aam-ui.js:
|
172 |
msgid "Processing"
|
173 |
msgstr ""
|
174 |
|
175 |
-
#: media/js/aam-ui.js:
|
176 |
msgid "Failed to initialize URL"
|
177 |
msgstr ""
|
178 |
|
179 |
-
#: media/js/aam-ui.js:
|
180 |
msgid "Initialize"
|
181 |
msgstr ""
|
182 |
|
183 |
-
#: media/js/aam-ui.js:
|
184 |
msgid "Failed to grand capability - WordPress policy"
|
185 |
msgstr ""
|
186 |
|
187 |
-
#: media/js/aam-ui.js:
|
188 |
msgid "Search Capability"
|
189 |
msgstr ""
|
190 |
|
191 |
-
#: media/js/aam-ui.js:
|
192 |
msgid "_TOTAL_ capability(s)"
|
193 |
msgstr ""
|
194 |
|
195 |
-
#: media/js/aam-ui.js:
|
196 |
msgid "Nothing to show"
|
197 |
msgstr ""
|
198 |
|
199 |
-
#: media/js/aam-ui.js:
|
200 |
msgid "Failed to add new capability"
|
201 |
msgstr ""
|
202 |
|
203 |
-
#: media/js/aam-ui.js:
|
204 |
msgid "Add Capability"
|
205 |
msgstr ""
|
206 |
|
207 |
-
#: media/js/aam-ui.js:
|
208 |
msgid "Failed to update capability"
|
209 |
msgstr ""
|
210 |
|
211 |
-
#: media/js/aam-ui.js:
|
212 |
msgid "Update Capability"
|
213 |
msgstr ""
|
214 |
|
215 |
-
#: media/js/aam-ui.js:
|
216 |
msgid "Failed to delete capability"
|
217 |
msgstr ""
|
218 |
|
219 |
-
#: media/js/aam-ui.js:
|
220 |
msgid "Delete Capability"
|
221 |
msgstr ""
|
222 |
|
223 |
-
#: media/js/aam-ui.js:
|
224 |
msgid "Search"
|
225 |
msgstr ""
|
226 |
|
227 |
-
#: media/js/aam-ui.js:
|
228 |
msgid "_TOTAL_ object(s)"
|
229 |
msgstr ""
|
230 |
|
231 |
-
#: media/js/aam-ui.js:
|
232 |
msgid "Drill-Down"
|
233 |
msgstr ""
|
234 |
|
235 |
-
#: media/js/aam-ui.js:
|
236 |
#: Application/Backend/phtml/metabox.phtml:7
|
237 |
msgid "Manage Access"
|
238 |
msgstr ""
|
239 |
|
240 |
-
#: media/js/aam-ui.js:
|
241 |
-
#: Application/Backend/
|
242 |
msgid "Edit"
|
243 |
msgstr ""
|
244 |
|
245 |
-
#: media/js/aam-ui.js:
|
|
|
246 |
msgid "Application Error"
|
247 |
msgstr ""
|
248 |
|
249 |
-
#: Application/Backend/Feature/Abstract.php:
|
250 |
#: Application/Backend/Feature/Role.php:29
|
251 |
-
#: Application/Backend/Feature/User.php:29 Application/Backend/Manager.php:
|
252 |
-
#: Application/Backend/Manager.php:
|
253 |
msgid "Access Denied"
|
254 |
msgstr ""
|
255 |
|
@@ -261,29 +266,29 @@ msgstr ""
|
|
261 |
msgid "Can not remove the capability"
|
262 |
msgstr ""
|
263 |
|
264 |
-
#: Application/Backend/Feature/Capability.php:
|
265 |
-
#: Application/Backend/Feature/Capability.php:
|
266 |
msgid "System"
|
267 |
msgstr ""
|
268 |
|
269 |
-
#: Application/Backend/Feature/Capability.php:
|
270 |
-
#: Application/Backend/Feature/Capability.php:
|
271 |
-
#: Application/Backend/Feature/Post.php:
|
272 |
msgid "Posts & Pages"
|
273 |
msgstr ""
|
274 |
|
275 |
-
#: Application/Backend/Feature/Capability.php:
|
276 |
-
#: Application/Backend/Feature/Capability.php:
|
277 |
-
#: Application/Backend/phtml/object/post.phtml:
|
278 |
msgid "Backend"
|
279 |
msgstr ""
|
280 |
|
281 |
-
#: Application/Backend/Feature/Capability.php:
|
282 |
-
#: Application/Backend/Feature/Capability.php:
|
283 |
msgid "Miscellaneous"
|
284 |
msgstr ""
|
285 |
|
286 |
-
#: Application/Backend/Feature/Capability.php:
|
287 |
msgid "Capabilities"
|
288 |
msgstr ""
|
289 |
|
@@ -291,15 +296,19 @@ msgstr ""
|
|
291 |
msgid "Contact Us"
|
292 |
msgstr ""
|
293 |
|
294 |
-
#: Application/Backend/Feature/Extension.php:
|
295 |
msgid "License key is missing."
|
296 |
msgstr ""
|
297 |
|
298 |
-
#: Application/Backend/Feature/Extension.php:
|
299 |
msgid "Extensions"
|
300 |
msgstr ""
|
301 |
|
302 |
-
#: Application/Backend/Feature/
|
|
|
|
|
|
|
|
|
303 |
msgid "Backend Menu"
|
304 |
msgstr ""
|
305 |
|
@@ -307,32 +316,49 @@ msgstr ""
|
|
307 |
msgid "Metaboxes & Widgets"
|
308 |
msgstr ""
|
309 |
|
310 |
-
#: Application/Backend/Feature/Post.php:
|
311 |
msgid "You reached your limitation."
|
312 |
msgstr ""
|
313 |
|
314 |
-
#: Application/Backend/Feature/Redirect.php:
|
315 |
-
msgid "Redirect"
|
|
|
|
|
|
|
|
|
316 |
msgstr ""
|
317 |
|
318 |
-
#: Application/Backend/Feature/
|
|
|
|
|
|
|
|
|
|
|
319 |
msgid "Content Teaser"
|
320 |
msgstr ""
|
321 |
|
322 |
-
#: Application/Backend/Feature/Utility.php:
|
323 |
msgid "Utilities"
|
324 |
msgstr ""
|
325 |
|
326 |
-
#: Application/Backend/Manager.php:
|
327 |
#, php-format
|
328 |
msgid "Extension %s has new update available for download."
|
329 |
msgstr ""
|
330 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
331 |
#: Application/Backend/Manager.php:194
|
332 |
msgid "Access Manager"
|
333 |
msgstr ""
|
334 |
|
335 |
-
#: Application/Backend/Manager.php:264 Application/Backend/Manager.php:
|
|
|
336 |
msgid "Access"
|
337 |
msgstr ""
|
338 |
|
@@ -348,21 +374,247 @@ msgstr ""
|
|
348 |
msgid "Current role"
|
349 |
msgstr ""
|
350 |
|
351 |
-
#: Application/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
352 |
#, php-format
|
353 |
msgid "Failed to create %s"
|
354 |
msgstr ""
|
355 |
|
356 |
-
#: Application/Core/Repository.php:
|
357 |
#, php-format
|
358 |
msgid "Directory %s is not writable"
|
359 |
msgstr ""
|
360 |
|
361 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
362 |
msgid "PHP 5.2 or higher is required."
|
363 |
msgstr ""
|
364 |
|
365 |
-
#: aam.php:
|
366 |
msgid "WP 3.8 or higher is required."
|
367 |
msgstr ""
|
368 |
|
@@ -384,56 +636,50 @@ msgstr ""
|
|
384 |
msgid "Submit"
|
385 |
msgstr ""
|
386 |
|
387 |
-
#: Application/Backend/phtml/extension.phtml:
|
388 |
msgid "Premium"
|
389 |
msgstr ""
|
390 |
|
391 |
-
#: Application/Backend/phtml/extension.phtml:
|
392 |
-
#: Application/Backend/phtml/extension.phtml:
|
393 |
-
#: Application/Backend/phtml/extension.phtml:93
|
394 |
msgid "Free"
|
395 |
msgstr ""
|
396 |
|
397 |
-
#: Application/Backend/phtml/extension.phtml:
|
398 |
-
msgid "Useful Plugins"
|
399 |
-
msgstr ""
|
400 |
-
|
401 |
-
#: Application/Backend/phtml/extension.phtml:32
|
402 |
msgid "Check For Updates"
|
403 |
msgstr ""
|
404 |
|
405 |
-
#: Application/Backend/phtml/extension.phtml:
|
406 |
msgid "Check"
|
407 |
msgstr ""
|
408 |
|
409 |
-
#: Application/Backend/phtml/extension.phtml:
|
410 |
-
#: Application/Backend/phtml/extension.phtml:
|
411 |
-
#: Application/Backend/phtml/extension.phtml:102
|
412 |
msgid "Installed"
|
413 |
msgstr ""
|
414 |
|
415 |
-
#: Application/Backend/phtml/extension.phtml:
|
416 |
-
msgid "
|
417 |
msgstr ""
|
418 |
|
419 |
-
#: Application/Backend/phtml/extension.phtml:
|
420 |
-
|
421 |
-
msgid "Download"
|
422 |
msgstr ""
|
423 |
|
424 |
-
#: Application/Backend/phtml/extension.phtml:
|
425 |
-
|
|
|
426 |
msgstr ""
|
427 |
|
428 |
-
#: Application/Backend/phtml/extension.phtml:
|
429 |
-
#: Application/Backend/phtml/extension.phtml:
|
430 |
-
#: Application/Backend/phtml/extension.phtml:
|
431 |
-
#: Application/Backend/phtml/index.phtml:
|
432 |
-
#: Application/Backend/phtml/index.phtml:
|
433 |
-
#: Application/Backend/phtml/index.phtml:
|
434 |
-
#: Application/Backend/phtml/index.phtml:
|
435 |
-
#: Application/Backend/phtml/index.phtml:
|
436 |
-
#: Application/Backend/phtml/index.phtml:
|
437 |
#: Application/Backend/phtml/object/capability.phtml:47
|
438 |
#: Application/Backend/phtml/object/capability.phtml:58
|
439 |
#: Application/Backend/phtml/object/capability.phtml:68
|
@@ -442,29 +688,31 @@ msgstr ""
|
|
442 |
#: Application/Backend/phtml/object/capability.phtml:98
|
443 |
#: Application/Backend/phtml/object/metabox.phtml:80
|
444 |
#: Application/Backend/phtml/object/metabox.phtml:94
|
445 |
-
#: Application/Backend/phtml/
|
|
|
|
|
446 |
msgid "Close"
|
447 |
msgstr ""
|
448 |
|
449 |
-
#: Application/Backend/phtml/extension.phtml:
|
450 |
msgid "Notification"
|
451 |
msgstr ""
|
452 |
|
453 |
-
#: Application/Backend/phtml/extension.phtml:
|
454 |
msgid ""
|
455 |
"Extension requires manual installation. Please follow few simple steps below."
|
456 |
msgstr ""
|
457 |
|
458 |
-
#: Application/Backend/phtml/extension.phtml:
|
459 |
-
#: Application/Backend/phtml/utility.phtml:
|
460 |
msgid "Cancel"
|
461 |
msgstr ""
|
462 |
|
463 |
-
#: Application/Backend/phtml/extension.phtml:
|
464 |
msgid "Install Extension"
|
465 |
msgstr ""
|
466 |
|
467 |
-
#: Application/Backend/phtml/extension.phtml:
|
468 |
msgid ""
|
469 |
"Insert license key that you recieved after the payment (find the email "
|
470 |
"example below). It might take up to 2 hours to process the payment. Please "
|
@@ -483,7 +731,7 @@ msgid ""
|
|
483 |
msgstr ""
|
484 |
|
485 |
#: Application/Backend/phtml/index.phtml:22
|
486 |
-
msgid "Please
|
487 |
msgstr ""
|
488 |
|
489 |
#: Application/Backend/phtml/index.phtml:23
|
@@ -495,101 +743,116 @@ msgstr ""
|
|
495 |
|
496 |
#: Application/Backend/phtml/index.phtml:24
|
497 |
#, php-format
|
498 |
-
msgid "
|
499 |
msgstr ""
|
500 |
|
501 |
-
#: Application/Backend/phtml/index.phtml:
|
502 |
msgid "Notifications"
|
503 |
msgstr ""
|
504 |
|
505 |
-
#: Application/Backend/phtml/index.phtml:
|
506 |
msgid "AAM Multisite"
|
507 |
msgstr ""
|
508 |
|
509 |
-
#: Application/Backend/phtml/index.phtml:
|
510 |
msgid "Install AAM Multisite"
|
511 |
msgstr ""
|
512 |
|
513 |
-
#: Application/Backend/phtml/index.phtml:
|
514 |
msgid "Users/Roles Panel"
|
515 |
msgstr ""
|
516 |
|
517 |
-
#: Application/Backend/phtml/index.phtml:
|
518 |
-
#: Application/Backend/phtml/index.phtml:
|
519 |
msgid "Roles"
|
520 |
msgstr ""
|
521 |
|
522 |
-
#: Application/Backend/phtml/index.phtml:
|
523 |
-
#: Application/Backend/phtml/index.phtml:
|
524 |
msgid "Visitor"
|
525 |
msgstr ""
|
526 |
|
527 |
-
#: Application/Backend/phtml/index.phtml:
|
528 |
-
#: Application/Backend/phtml/index.phtml:
|
|
|
|
|
|
|
|
|
|
|
529 |
msgid "Action"
|
530 |
msgstr ""
|
531 |
|
532 |
-
#: Application/Backend/phtml/index.phtml:
|
533 |
msgid "Create Role"
|
534 |
msgstr ""
|
535 |
|
536 |
-
#: Application/Backend/phtml/index.phtml:
|
537 |
-
#: Application/Backend/phtml/index.phtml:
|
538 |
msgid "Role Name"
|
539 |
msgstr ""
|
540 |
|
541 |
-
#: Application/Backend/phtml/index.phtml:
|
542 |
-
#: Application/Backend/phtml/index.phtml:
|
543 |
msgid "Enter Role Name"
|
544 |
msgstr ""
|
545 |
|
546 |
-
#: Application/Backend/phtml/index.phtml:
|
547 |
msgid "Update Role"
|
548 |
msgstr ""
|
549 |
|
550 |
-
#: Application/Backend/phtml/index.phtml:
|
551 |
#, php-format
|
552 |
-
msgid "Are you sure that you want to delete %s role?"
|
553 |
-
msgstr ""
|
554 |
-
|
555 |
-
#: Application/Backend/phtml/index.phtml:158
|
556 |
-
#: Application/Backend/phtml/object/capability.phtml:97
|
557 |
-
#: Application/Backend/phtml/object/post.phtml:151
|
558 |
-
msgid "Delete"
|
559 |
msgstr ""
|
560 |
|
561 |
-
#: Application/Backend/phtml/index.phtml:
|
562 |
msgid "Username"
|
563 |
msgstr ""
|
564 |
|
565 |
-
#: Application/Backend/phtml/index.phtml:
|
566 |
msgid ""
|
567 |
"Manage access to your website for visitors (any user that is not "
|
568 |
"authenticated)"
|
569 |
msgstr ""
|
570 |
|
571 |
-
#: Application/Backend/phtml/index.phtml:
|
572 |
msgid "Manage Visitors"
|
573 |
msgstr ""
|
574 |
|
575 |
-
#: Application/Backend/phtml/index.phtml:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
576 |
msgid ""
|
577 |
"With Roles tab you can manage access for any defined role, edit role's name, "
|
578 |
"create new role or even delete existing (but only when there is no users "
|
579 |
"assigned to it). You are not allowed to delete Administrator role."
|
580 |
msgstr ""
|
581 |
|
582 |
-
#: Application/Backend/phtml/index.phtml:
|
583 |
msgid ""
|
584 |
"Manage access for any user. As a bonus feature, you can block user. It means "
|
585 |
"that user will be not able to login to your website anymore."
|
586 |
msgstr ""
|
587 |
|
588 |
-
#: Application/Backend/phtml/index.phtml:
|
589 |
msgid ""
|
590 |
"Visitor can be considered any user that is not authenticated to your website."
|
591 |
msgstr ""
|
592 |
|
|
|
|
|
|
|
|
|
|
|
|
|
593 |
#: Application/Backend/phtml/object/capability.phtml:16
|
594 |
msgid "Filter"
|
595 |
msgstr ""
|
@@ -609,7 +872,7 @@ msgid "Capability"
|
|
609 |
msgstr ""
|
610 |
|
611 |
#: Application/Backend/phtml/object/capability.phtml:37
|
612 |
-
#: Application/Backend/phtml/object/post.phtml:
|
613 |
msgid "Actions"
|
614 |
msgstr ""
|
615 |
|
@@ -627,22 +890,37 @@ msgstr ""
|
|
627 |
msgid "Are you sure that you want to delete %s capability for all roles?"
|
628 |
msgstr ""
|
629 |
|
630 |
-
#: Application/Backend/phtml/object/
|
631 |
-
|
632 |
-
msgid ""
|
633 |
-
|
634 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
635 |
msgstr ""
|
636 |
|
637 |
-
#: Application/Backend/phtml/object/menu.phtml:
|
638 |
#: Application/Backend/phtml/object/metabox.phtml:12
|
639 |
-
#: Application/Backend/phtml/object/post.phtml:
|
640 |
-
msgid "Settings are
|
641 |
msgstr ""
|
642 |
|
643 |
-
#: Application/Backend/phtml/object/menu.phtml:
|
644 |
#: Application/Backend/phtml/object/metabox.phtml:13
|
645 |
-
#: Application/Backend/phtml/object/post.phtml:
|
646 |
msgid "Reset To Default"
|
647 |
msgstr ""
|
648 |
|
@@ -663,9 +941,7 @@ msgid "Frontend Widgets"
|
|
663 |
msgstr ""
|
664 |
|
665 |
#: Application/Backend/phtml/object/metabox.phtml:71
|
666 |
-
msgid ""
|
667 |
-
"The list of metaboxes and widgets is not initialized. Click Refresh button "
|
668 |
-
"above."
|
669 |
msgstr ""
|
670 |
|
671 |
#: Application/Backend/phtml/object/metabox.phtml:81
|
@@ -689,91 +965,67 @@ msgstr ""
|
|
689 |
msgid "Insert valid URL"
|
690 |
msgstr ""
|
691 |
|
692 |
-
#: Application/Backend/phtml/object/post.phtml:
|
693 |
-
#, php-format
|
694 |
-
msgid "Learn more about post & pages access control from %sthis article%s."
|
695 |
-
msgstr ""
|
696 |
-
|
697 |
-
#: Application/Backend/phtml/object/post.phtml:24
|
698 |
msgid "Root"
|
699 |
msgstr ""
|
700 |
|
701 |
-
#: Application/Backend/phtml/object/post.phtml:
|
702 |
msgid "Title"
|
703 |
msgstr ""
|
704 |
|
705 |
-
#: Application/Backend/phtml/object/post.phtml:
|
706 |
-
#: Application/Backend/phtml/object/post.phtml:
|
707 |
-
#: Application/Backend/phtml/object/post.phtml:
|
708 |
msgid "Go Back"
|
709 |
msgstr ""
|
710 |
|
711 |
-
#: Application/Backend/phtml/object/post.phtml:
|
712 |
msgid "Frontend"
|
713 |
msgstr ""
|
714 |
|
715 |
-
#: Application/Backend/phtml/object/post.phtml:
|
716 |
-
|
717 |
-
msgid "List"
|
718 |
msgstr ""
|
719 |
|
720 |
-
#: Application/Backend/phtml/object/post.phtml:
|
721 |
-
msgid "
|
722 |
msgstr ""
|
723 |
|
724 |
-
#: Application/Backend/phtml/object/post.phtml:
|
725 |
-
msgid "
|
726 |
msgstr ""
|
727 |
|
728 |
-
#: Application/Backend/phtml/object/post.phtml:
|
729 |
-
msgid "
|
730 |
msgstr ""
|
731 |
|
732 |
-
#: Application/Backend/phtml/object/redirect.phtml:
|
733 |
msgid "Frontend Redirect"
|
734 |
msgstr ""
|
735 |
|
736 |
-
#: Application/Backend/phtml/object/redirect.phtml:
|
737 |
msgid "Backend Redirect"
|
738 |
msgstr ""
|
739 |
|
740 |
-
#: Application/Backend/phtml/object/redirect.phtml:
|
741 |
-
#: Application/Backend/phtml/object/redirect.phtml:
|
742 |
msgid "Customized Message"
|
743 |
msgstr ""
|
744 |
|
745 |
-
#: Application/Backend/phtml/object/redirect.phtml:
|
746 |
-
#: Application/Backend/phtml/object/redirect.phtml:
|
747 |
msgid "Enter message..."
|
748 |
msgstr ""
|
749 |
|
750 |
-
#: Application/Backend/phtml/object/
|
751 |
-
msgid "Existing Page"
|
752 |
-
msgstr ""
|
753 |
-
|
754 |
-
#: Application/Backend/phtml/object/redirect.phtml:61
|
755 |
-
msgid "-- Select Page --"
|
756 |
-
msgstr ""
|
757 |
-
|
758 |
-
#: Application/Backend/phtml/object/redirect.phtml:67
|
759 |
-
#: Application/Backend/phtml/object/redirect.phtml:100
|
760 |
-
msgid "Custom URL"
|
761 |
-
msgstr ""
|
762 |
-
|
763 |
-
#: Application/Backend/phtml/object/redirect.phtml:72
|
764 |
-
#: Application/Backend/phtml/object/redirect.phtml:104
|
765 |
-
msgid "PHP Callback Function"
|
766 |
-
msgstr ""
|
767 |
-
|
768 |
-
#: Application/Backend/phtml/object/teaser.phtml:16
|
769 |
msgid "Teaser Message"
|
770 |
msgstr ""
|
771 |
|
772 |
-
#: Application/Backend/phtml/object/teaser.phtml:
|
773 |
msgid "Enter teaser message..."
|
774 |
msgstr ""
|
775 |
|
776 |
-
#: Application/Backend/phtml/object/teaser.phtml:
|
777 |
msgid "Add excerpt before teaser message"
|
778 |
msgstr ""
|
779 |
|
@@ -781,76 +1033,29 @@ msgstr ""
|
|
781 |
msgid "Inherit Capabilities From"
|
782 |
msgstr ""
|
783 |
|
784 |
-
#: Application/Backend/phtml/
|
785 |
-
#, php-format
|
786 |
-
msgid "To learn more about AAM Utilities check %sAAM Utilities%s article."
|
787 |
-
msgstr ""
|
788 |
-
|
789 |
-
#: Application/Backend/phtml/utility.phtml:16
|
790 |
-
msgid "Edit/Delete Capabilities"
|
791 |
-
msgstr ""
|
792 |
-
|
793 |
-
#: Application/Backend/phtml/utility.phtml:22
|
794 |
-
#: Application/Backend/phtml/utility.phtml:33
|
795 |
-
#: Application/Backend/phtml/utility.phtml:44
|
796 |
-
#: Application/Backend/phtml/utility.phtml:55
|
797 |
-
#: Application/Backend/phtml/utility.phtml:66
|
798 |
-
msgid "Enabled"
|
799 |
-
msgstr ""
|
800 |
-
|
801 |
-
#: Application/Backend/phtml/utility.phtml:22
|
802 |
-
#: Application/Backend/phtml/utility.phtml:33
|
803 |
-
#: Application/Backend/phtml/utility.phtml:44
|
804 |
-
#: Application/Backend/phtml/utility.phtml:55
|
805 |
-
#: Application/Backend/phtml/utility.phtml:66
|
806 |
-
msgid "Disabled"
|
807 |
-
msgstr ""
|
808 |
-
|
809 |
-
#: Application/Backend/phtml/utility.phtml:27
|
810 |
-
msgid "Backend Access Control"
|
811 |
-
msgstr ""
|
812 |
-
|
813 |
-
#: Application/Backend/phtml/utility.phtml:29
|
814 |
-
msgid ""
|
815 |
-
"Use AAM to control access to posts, pages, categories, menus and metaboxes "
|
816 |
-
"etc. Disable this setting to stop AAM from controling access for backend."
|
817 |
-
msgstr ""
|
818 |
-
|
819 |
-
#: Application/Backend/phtml/utility.phtml:38
|
820 |
-
msgid "Frontend Access Control"
|
821 |
-
msgstr ""
|
822 |
-
|
823 |
-
#: Application/Backend/phtml/utility.phtml:40
|
824 |
msgid ""
|
825 |
-
"
|
826 |
-
"
|
827 |
msgstr ""
|
828 |
|
829 |
-
#: Application/Backend/phtml/utility.phtml:
|
830 |
-
msgid "Media Files Access Control"
|
831 |
-
msgstr ""
|
832 |
-
|
833 |
-
#: Application/Backend/phtml/utility.phtml:60
|
834 |
-
msgid "Large Post Number Support"
|
835 |
-
msgstr ""
|
836 |
-
|
837 |
-
#: Application/Backend/phtml/utility.phtml:75
|
838 |
msgid "Clear All Settings"
|
839 |
msgstr ""
|
840 |
|
841 |
-
#: Application/Backend/phtml/utility.phtml:
|
842 |
msgid ""
|
843 |
"Remove all the settings related to AAM (including all extension licenses)."
|
844 |
msgstr ""
|
845 |
|
846 |
-
#: Application/Backend/phtml/utility.phtml:
|
847 |
msgid "Clear all settings"
|
848 |
msgstr ""
|
849 |
|
850 |
-
#: Application/Backend/phtml/utility.phtml:
|
851 |
msgid "All AAM settings will be removed."
|
852 |
msgstr ""
|
853 |
|
854 |
-
#: Application/Backend/phtml/utility.phtml:
|
855 |
msgid "Clear"
|
856 |
msgstr ""
|
2 |
msgid ""
|
3 |
msgstr ""
|
4 |
"Project-Id-Version: AAM\n"
|
5 |
+
"POT-Creation-Date: 2017-02-04 14:44-0500\n"
|
6 |
"PO-Revision-Date: \n"
|
7 |
"Last-Translator: WPAAM <support@wpaam.com>\n"
|
8 |
"Language-Team: WP AAM <vasyl@vasyltech.com>\n"
|
10 |
"MIME-Version: 1.0\n"
|
11 |
"Content-Type: text/plain; charset=UTF-8\n"
|
12 |
"Content-Transfer-Encoding: 8bit\n"
|
13 |
+
"X-Generator: Poedit 1.8.11\n"
|
14 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
15 |
"X-Poedit-SourceCharset: UTF-8\n"
|
16 |
"X-Poedit-KeywordsList: __\n"
|
34 |
msgid "_TOTAL_ role(s)"
|
35 |
msgstr ""
|
36 |
|
37 |
+
#: media/js/aam-ui.js:98 media/js/aam-ui.js:540
|
38 |
#: Application/Backend/View/Localization.php:27
|
39 |
+
#: Application/Backend/phtml/index.phtml:137
|
40 |
#: Application/Backend/phtml/object/capability.phtml:27
|
41 |
#: Application/Backend/phtml/object/capability.phtml:57
|
42 |
msgid "Create"
|
43 |
msgstr ""
|
44 |
|
45 |
#: media/js/aam-ui.js:118 Application/Backend/View/Localization.php:28
|
46 |
+
#: Application/Backend/phtml/index.phtml:103
|
47 |
+
#: Application/Backend/phtml/index.phtml:223
|
48 |
msgid "Users"
|
49 |
msgstr ""
|
50 |
|
60 |
msgid "Clone Role"
|
61 |
msgstr ""
|
62 |
|
63 |
+
#: media/js/aam-ui.js:198 media/js/aam-ui.js:380
|
64 |
#: Application/Backend/View/Localization.php:35
|
65 |
#: Application/Backend/View/Localization.php:47
|
66 |
+
#: Application/Backend/phtml/index.phtml:171
|
67 |
msgid "Delete Role"
|
68 |
msgstr ""
|
69 |
|
70 |
+
#: media/js/aam-ui.js:272 media/js/aam-ui.js:327 media/js/aam-ui.js:1132
|
71 |
+
#: media/js/aam-ui.js:1178 Application/Backend/View/Localization.php:13
|
72 |
msgid "Saving..."
|
73 |
msgstr ""
|
74 |
|
75 |
+
#: media/js/aam-ui.js:287 Application/Backend/View/Localization.php:29
|
76 |
msgid "Failed to add new role"
|
77 |
msgstr ""
|
78 |
|
79 |
+
#: media/js/aam-ui.js:292 media/js/aam-ui.js:339 media/js/aam-ui.js:376
|
80 |
+
#: media/js/aam-ui.js:470 media/js/aam-ui.js:502 media/js/aam-ui.js:845
|
81 |
+
#: media/js/aam-ui.js:882 media/js/aam-ui.js:918 media/js/aam-ui.js:1145
|
82 |
+
#: media/js/aam-ui.js:1191 media/js/aam-ui.js:1232 media/js/aam-ui.js:1393
|
83 |
+
#: media/js/aam-ui.js:1441 media/js/aam-ui.js:1731 media/js/aam-ui.js:1826
|
84 |
+
#: media/js/aam-ui.js:1920 media/js/aam-ui.js:2009 media/js/aam-ui.js:2105
|
85 |
+
#: media/js/aam.js:207 Application/Backend/View/Localization.php:15
|
86 |
msgid "Application error"
|
87 |
msgstr ""
|
88 |
|
89 |
+
#: media/js/aam-ui.js:295 Application/Backend/View/Localization.php:30
|
90 |
msgid "Add Role"
|
91 |
msgstr ""
|
92 |
|
93 |
+
#: media/js/aam-ui.js:334 Application/Backend/View/Localization.php:31
|
94 |
msgid "Failed to update role"
|
95 |
msgstr ""
|
96 |
|
97 |
+
#: media/js/aam-ui.js:343 Application/Backend/View/Localization.php:32
|
98 |
+
#: Application/Backend/phtml/extension.phtml:51
|
99 |
+
#: Application/Backend/phtml/extension.phtml:78
|
100 |
+
#: Application/Backend/phtml/index.phtml:159
|
101 |
#: Application/Backend/phtml/object/capability.phtml:79
|
102 |
msgid "Update"
|
103 |
msgstr ""
|
104 |
|
105 |
+
#: media/js/aam-ui.js:366 media/js/aam-ui.js:1219
|
106 |
#: Application/Backend/View/Localization.php:33
|
107 |
msgid "Deleting..."
|
108 |
msgstr ""
|
109 |
|
110 |
+
#: media/js/aam-ui.js:372 Application/Backend/View/Localization.php:34
|
111 |
msgid "Failed to delete role"
|
112 |
msgstr ""
|
113 |
|
114 |
+
#: media/js/aam-ui.js:455 media/js/aam-ui.js:456 media/js/aam-ui.js:620
|
115 |
#: Application/Backend/View/Localization.php:51
|
116 |
msgid "Unlock User"
|
117 |
msgstr ""
|
118 |
|
119 |
+
#: media/js/aam-ui.js:461 media/js/aam-ui.js:462 media/js/aam-ui.js:609
|
120 |
#: Application/Backend/View/Localization.php:50
|
121 |
msgid "Lock User"
|
122 |
msgstr ""
|
123 |
|
124 |
+
#: media/js/aam-ui.js:466 Application/Backend/View/Localization.php:36
|
125 |
msgid "Failed to block user"
|
126 |
msgstr ""
|
127 |
|
128 |
+
#: media/js/aam-ui.js:532 Application/Backend/View/Localization.php:37
|
129 |
msgid "Search User"
|
130 |
msgstr ""
|
131 |
|
132 |
+
#: media/js/aam-ui.js:533 Application/Backend/View/Localization.php:38
|
133 |
msgid "_TOTAL_ user(s)"
|
134 |
msgstr ""
|
135 |
|
136 |
+
#: media/js/aam-ui.js:557 Application/Backend/View/Localization.php:39
|
137 |
+
#: Application/Backend/phtml/index.phtml:114
|
138 |
msgid "Role"
|
139 |
msgstr ""
|
140 |
|
141 |
+
#: media/js/aam-ui.js:585 Application/Backend/View/Localization.php:48
|
142 |
msgid "Manage User"
|
143 |
msgstr ""
|
144 |
|
145 |
+
#: media/js/aam-ui.js:598 Application/Backend/View/Localization.php:49
|
146 |
msgid "Edit User"
|
147 |
msgstr ""
|
148 |
|
149 |
+
#: media/js/aam-ui.js:631
|
150 |
msgid "Switch To User"
|
151 |
msgstr ""
|
152 |
|
153 |
+
#: media/js/aam-ui.js:683 Application/Backend/View/Localization.php:40
|
154 |
msgid "Anonymous"
|
155 |
msgstr ""
|
156 |
|
157 |
+
#: media/js/aam-ui.js:706
|
158 |
+
msgid "All Users, Roles and Visitor"
|
159 |
+
msgstr ""
|
160 |
+
|
161 |
+
#: media/js/aam-ui.js:750 Application/Backend/View/Localization.php:17
|
162 |
+
#: Application/Backend/phtml/object/menu.phtml:49
|
163 |
msgid "Show Menu"
|
164 |
msgstr ""
|
165 |
|
166 |
+
#: media/js/aam-ui.js:765 Application/Backend/View/Localization.php:18
|
167 |
+
#: Application/Backend/phtml/object/menu.phtml:53
|
168 |
msgid "Restrict Menu"
|
169 |
msgstr ""
|
170 |
|
171 |
+
#: media/js/aam-ui.js:877 Application/Backend/View/Localization.php:19
|
172 |
msgid "Failed to retrieve mataboxes"
|
173 |
msgstr ""
|
174 |
|
175 |
+
#: media/js/aam-ui.js:905
|
176 |
msgid "Processing"
|
177 |
msgstr ""
|
178 |
|
179 |
+
#: media/js/aam-ui.js:913
|
180 |
msgid "Failed to initialize URL"
|
181 |
msgstr ""
|
182 |
|
183 |
+
#: media/js/aam-ui.js:921 Application/Backend/phtml/object/metabox.phtml:93
|
184 |
msgid "Initialize"
|
185 |
msgstr ""
|
186 |
|
187 |
+
#: media/js/aam-ui.js:995 Application/Backend/View/Localization.php:52
|
188 |
msgid "Failed to grand capability - WordPress policy"
|
189 |
msgstr ""
|
190 |
|
191 |
+
#: media/js/aam-ui.js:1030 Application/Backend/View/Localization.php:11
|
192 |
msgid "Search Capability"
|
193 |
msgstr ""
|
194 |
|
195 |
+
#: media/js/aam-ui.js:1031 Application/Backend/View/Localization.php:12
|
196 |
msgid "_TOTAL_ capability(s)"
|
197 |
msgstr ""
|
198 |
|
199 |
+
#: media/js/aam-ui.js:1033
|
200 |
msgid "Nothing to show"
|
201 |
msgstr ""
|
202 |
|
203 |
+
#: media/js/aam-ui.js:1140 Application/Backend/View/Localization.php:14
|
204 |
msgid "Failed to add new capability"
|
205 |
msgstr ""
|
206 |
|
207 |
+
#: media/js/aam-ui.js:1148 Application/Backend/View/Localization.php:16
|
208 |
msgid "Add Capability"
|
209 |
msgstr ""
|
210 |
|
211 |
+
#: media/js/aam-ui.js:1186
|
212 |
msgid "Failed to update capability"
|
213 |
msgstr ""
|
214 |
|
215 |
+
#: media/js/aam-ui.js:1194 Application/Backend/phtml/object/capability.phtml:69
|
216 |
msgid "Update Capability"
|
217 |
msgstr ""
|
218 |
|
219 |
+
#: media/js/aam-ui.js:1227
|
220 |
msgid "Failed to delete capability"
|
221 |
msgstr ""
|
222 |
|
223 |
+
#: media/js/aam-ui.js:1235 Application/Backend/phtml/object/capability.phtml:91
|
224 |
msgid "Delete Capability"
|
225 |
msgstr ""
|
226 |
|
227 |
+
#: media/js/aam-ui.js:1480 Application/Backend/View/Localization.php:20
|
228 |
msgid "Search"
|
229 |
msgstr ""
|
230 |
|
231 |
+
#: media/js/aam-ui.js:1481 Application/Backend/View/Localization.php:21
|
232 |
msgid "_TOTAL_ object(s)"
|
233 |
msgstr ""
|
234 |
|
235 |
+
#: media/js/aam-ui.js:1547
|
236 |
msgid "Drill-Down"
|
237 |
msgstr ""
|
238 |
|
239 |
+
#: media/js/aam-ui.js:1565 Application/Backend/View/Localization.php:43
|
240 |
#: Application/Backend/phtml/metabox.phtml:7
|
241 |
msgid "Manage Access"
|
242 |
msgstr ""
|
243 |
|
244 |
+
#: media/js/aam-ui.js:1577 Application/Backend/View/Localization.php:44
|
245 |
+
#: Application/Backend/View/PostOptionList.php:52
|
246 |
msgid "Edit"
|
247 |
msgstr ""
|
248 |
|
249 |
+
#: media/js/aam-ui.js:1781 media/js/aam-ui.js:1876 media/js/aam-ui.js:1962
|
250 |
+
#: media/js/aam-ui.js:2147 media/js/aam-ui.js:2181 media/js/aam-ui.js:2219
|
251 |
msgid "Application Error"
|
252 |
msgstr ""
|
253 |
|
254 |
+
#: Application/Backend/Feature/Abstract.php:30
|
255 |
#: Application/Backend/Feature/Role.php:29
|
256 |
+
#: Application/Backend/Feature/User.php:29 Application/Backend/Manager.php:469
|
257 |
+
#: Application/Backend/Manager.php:494 Application/Core/API.php:267
|
258 |
msgid "Access Denied"
|
259 |
msgstr ""
|
260 |
|
266 |
msgid "Can not remove the capability"
|
267 |
msgstr ""
|
268 |
|
269 |
+
#: Application/Backend/Feature/Capability.php:254
|
270 |
+
#: Application/Backend/Feature/Capability.php:293
|
271 |
msgid "System"
|
272 |
msgstr ""
|
273 |
|
274 |
+
#: Application/Backend/Feature/Capability.php:255
|
275 |
+
#: Application/Backend/Feature/Capability.php:295
|
276 |
+
#: Application/Backend/Feature/Post.php:385
|
277 |
msgid "Posts & Pages"
|
278 |
msgstr ""
|
279 |
|
280 |
+
#: Application/Backend/Feature/Capability.php:256
|
281 |
+
#: Application/Backend/Feature/Capability.php:297
|
282 |
+
#: Application/Backend/phtml/object/post.phtml:88
|
283 |
msgid "Backend"
|
284 |
msgstr ""
|
285 |
|
286 |
+
#: Application/Backend/Feature/Capability.php:257
|
287 |
+
#: Application/Backend/Feature/Capability.php:299
|
288 |
msgid "Miscellaneous"
|
289 |
msgstr ""
|
290 |
|
291 |
+
#: Application/Backend/Feature/Capability.php:320
|
292 |
msgid "Capabilities"
|
293 |
msgstr ""
|
294 |
|
296 |
msgid "Contact Us"
|
297 |
msgstr ""
|
298 |
|
299 |
+
#: Application/Backend/Feature/Extension.php:91
|
300 |
msgid "License key is missing."
|
301 |
msgstr ""
|
302 |
|
303 |
+
#: Application/Backend/Feature/Extension.php:156
|
304 |
msgid "Extensions"
|
305 |
msgstr ""
|
306 |
|
307 |
+
#: Application/Backend/Feature/LoginRedirect.php:103
|
308 |
+
msgid "Login Redirect"
|
309 |
+
msgstr ""
|
310 |
+
|
311 |
+
#: Application/Backend/Feature/Menu.php:190
|
312 |
msgid "Backend Menu"
|
313 |
msgstr ""
|
314 |
|
316 |
msgid "Metaboxes & Widgets"
|
317 |
msgstr ""
|
318 |
|
319 |
+
#: Application/Backend/Feature/Post.php:266
|
320 |
msgid "You reached your limitation."
|
321 |
msgstr ""
|
322 |
|
323 |
+
#: Application/Backend/Feature/Redirect.php:103
|
324 |
+
msgid "Access Denied Redirect"
|
325 |
+
msgstr ""
|
326 |
+
|
327 |
+
#: Application/Backend/Feature/Security.php:73
|
328 |
+
msgid "Security"
|
329 |
msgstr ""
|
330 |
|
331 |
+
#: Application/Backend/Feature/Shortcode.php:45
|
332 |
+
#: Application/Backend/phtml/shortcode.phtml:6
|
333 |
+
msgid "Shortcodes"
|
334 |
+
msgstr ""
|
335 |
+
|
336 |
+
#: Application/Backend/Feature/Teaser.php:103
|
337 |
msgid "Content Teaser"
|
338 |
msgstr ""
|
339 |
|
340 |
+
#: Application/Backend/Feature/Utility.php:103
|
341 |
msgid "Utilities"
|
342 |
msgstr ""
|
343 |
|
344 |
+
#: Application/Backend/Manager.php:143
|
345 |
#, php-format
|
346 |
msgid "Extension %s has new update available for download."
|
347 |
msgstr ""
|
348 |
|
349 |
+
#: Application/Backend/Manager.php:150
|
350 |
+
#, php-format
|
351 |
+
msgid ""
|
352 |
+
"License violation for %s extension. Enter valid license on the Extensions "
|
353 |
+
"tab or contact us immediately."
|
354 |
+
msgstr ""
|
355 |
+
|
356 |
#: Application/Backend/Manager.php:194
|
357 |
msgid "Access Manager"
|
358 |
msgstr ""
|
359 |
|
360 |
+
#: Application/Backend/Manager.php:264 Application/Backend/Manager.php:284
|
361 |
+
#: Application/Backend/Manager.php:309
|
362 |
msgid "Access"
|
363 |
msgstr ""
|
364 |
|
374 |
msgid "Current role"
|
375 |
msgstr ""
|
376 |
|
377 |
+
#: Application/Backend/View/PostOptionList.php:13
|
378 |
+
#: Application/Backend/View/PostOptionList.php:44
|
379 |
+
msgid "List"
|
380 |
+
msgstr ""
|
381 |
+
|
382 |
+
#: Application/Backend/View/PostOptionList.php:14
|
383 |
+
#: Application/Backend/View/PostOptionList.php:45
|
384 |
+
#, php-format
|
385 |
+
msgid "Hide %s."
|
386 |
+
msgstr ""
|
387 |
+
|
388 |
+
#: Application/Backend/View/PostOptionList.php:17
|
389 |
+
#: Application/Backend/View/PostOptionList.php:48
|
390 |
+
msgid "List To Others"
|
391 |
+
msgstr ""
|
392 |
+
|
393 |
+
#: Application/Backend/View/PostOptionList.php:18
|
394 |
+
#: Application/Backend/View/PostOptionList.php:49
|
395 |
+
#, php-format
|
396 |
+
msgid "Hide %s for all except author."
|
397 |
+
msgstr ""
|
398 |
+
|
399 |
+
#: Application/Backend/View/PostOptionList.php:21
|
400 |
+
msgid "Read"
|
401 |
+
msgstr ""
|
402 |
+
|
403 |
+
#: Application/Backend/View/PostOptionList.php:22
|
404 |
+
#, php-format
|
405 |
+
msgid "Restrict access to read %s."
|
406 |
+
msgstr ""
|
407 |
+
|
408 |
+
#: Application/Backend/View/PostOptionList.php:25
|
409 |
+
msgid "Read By Others"
|
410 |
+
msgstr ""
|
411 |
+
|
412 |
+
#: Application/Backend/View/PostOptionList.php:26
|
413 |
+
msgid "Restrict access to read for all except author."
|
414 |
+
msgstr ""
|
415 |
+
|
416 |
+
#: Application/Backend/View/PostOptionList.php:29
|
417 |
+
msgid "Limit"
|
418 |
+
msgstr ""
|
419 |
+
|
420 |
+
#: Application/Backend/View/PostOptionList.php:30
|
421 |
+
#, php-format
|
422 |
+
msgid ""
|
423 |
+
"If checked, show defined in the Content Teaser tab teaser message instead of "
|
424 |
+
"%s content."
|
425 |
+
msgstr ""
|
426 |
+
|
427 |
+
#: Application/Backend/View/PostOptionList.php:33
|
428 |
+
msgid "Comment"
|
429 |
+
msgstr ""
|
430 |
+
|
431 |
+
#: Application/Backend/View/PostOptionList.php:34
|
432 |
+
#, php-format
|
433 |
+
msgid "Restrict access to comment on %s if commenting feature is enabled."
|
434 |
+
msgstr ""
|
435 |
+
|
436 |
+
#: Application/Backend/View/PostOptionList.php:37
|
437 |
+
msgid "Password Protected"
|
438 |
+
msgstr ""
|
439 |
+
|
440 |
+
#: Application/Backend/View/PostOptionList.php:38
|
441 |
+
#, php-format
|
442 |
+
msgid "Password: %s"
|
443 |
+
msgstr ""
|
444 |
+
|
445 |
+
#: Application/Backend/View/PostOptionList.php:38
|
446 |
+
msgid "change"
|
447 |
+
msgstr ""
|
448 |
+
|
449 |
+
#: Application/Backend/View/PostOptionList.php:39
|
450 |
+
#, php-format
|
451 |
+
msgid "Add a password protection for the %s."
|
452 |
+
msgstr ""
|
453 |
+
|
454 |
+
#: Application/Backend/View/PostOptionList.php:53
|
455 |
+
#, php-format
|
456 |
+
msgid "Restrict access to edit %s."
|
457 |
+
msgstr ""
|
458 |
+
|
459 |
+
#: Application/Backend/View/PostOptionList.php:56
|
460 |
+
msgid "Edit By Others"
|
461 |
+
msgstr ""
|
462 |
+
|
463 |
+
#: Application/Backend/View/PostOptionList.php:57
|
464 |
+
#, php-format
|
465 |
+
msgid "Restrict access to edit %s for all except author."
|
466 |
+
msgstr ""
|
467 |
+
|
468 |
+
#: Application/Backend/View/PostOptionList.php:60
|
469 |
+
#: Application/Backend/phtml/index.phtml:177
|
470 |
+
#: Application/Backend/phtml/object/capability.phtml:97
|
471 |
+
msgid "Delete"
|
472 |
+
msgstr ""
|
473 |
+
|
474 |
+
#: Application/Backend/View/PostOptionList.php:61
|
475 |
+
#, php-format
|
476 |
+
msgid "Restrict access to trash or permanently delete %s."
|
477 |
+
msgstr ""
|
478 |
+
|
479 |
+
#: Application/Backend/View/PostOptionList.php:64
|
480 |
+
msgid "Delete By Others"
|
481 |
+
msgstr ""
|
482 |
+
|
483 |
+
#: Application/Backend/View/PostOptionList.php:65
|
484 |
+
#, php-format
|
485 |
+
msgid ""
|
486 |
+
"Restrict access to trash or permanently delete %s for all except author."
|
487 |
+
msgstr ""
|
488 |
+
|
489 |
+
#: Application/Backend/View/PostOptionList.php:68
|
490 |
+
msgid "Publish"
|
491 |
+
msgstr ""
|
492 |
+
|
493 |
+
#: Application/Backend/View/PostOptionList.php:69
|
494 |
+
#, php-format
|
495 |
+
msgid ""
|
496 |
+
"Restrict access to publish %s. Quick Edit inline action is also removed."
|
497 |
+
msgstr ""
|
498 |
+
|
499 |
+
#: Application/Backend/View/PostOptionList.php:72
|
500 |
+
msgid "Publish By Others"
|
501 |
+
msgstr ""
|
502 |
+
|
503 |
+
#: Application/Backend/View/PostOptionList.php:73
|
504 |
+
#, php-format
|
505 |
+
msgid ""
|
506 |
+
"Restrict access to publish %s for all except author. Quick Edit inline "
|
507 |
+
"action is also removed."
|
508 |
+
msgstr ""
|
509 |
+
|
510 |
+
#: Application/Backend/View/SecurityOptionList.php:12
|
511 |
+
msgid "Login Timeout"
|
512 |
+
msgstr ""
|
513 |
+
|
514 |
+
#: Application/Backend/View/SecurityOptionList.php:13
|
515 |
+
#, php-format
|
516 |
+
msgid ""
|
517 |
+
"Delay the login process for %s second to significantly reduce the chance for "
|
518 |
+
"brute force or dictionary attack."
|
519 |
+
msgstr ""
|
520 |
+
|
521 |
+
#: Application/Backend/View/SecurityOptionList.php:17
|
522 |
+
msgid "Track IP Address"
|
523 |
+
msgstr ""
|
524 |
+
|
525 |
+
#: Application/Backend/View/SecurityOptionList.php:18
|
526 |
+
msgid ""
|
527 |
+
"Track the IP address for the last successful user login and trigger double "
|
528 |
+
"authentication via email when the same username/password combination is used "
|
529 |
+
"to login from a different IP address."
|
530 |
+
msgstr ""
|
531 |
+
|
532 |
+
#: Application/Backend/View/SecurityOptionList.php:22
|
533 |
+
msgid "Brute Force Lockout"
|
534 |
+
msgstr ""
|
535 |
+
|
536 |
+
#: Application/Backend/View/SecurityOptionList.php:23
|
537 |
+
#, php-format
|
538 |
+
msgid ""
|
539 |
+
"Automatically reject login attempts if number of unsuccessful login attempts "
|
540 |
+
"is more than %s over the period of %s."
|
541 |
+
msgstr ""
|
542 |
+
|
543 |
+
#: Application/Backend/View/UtilityOptionList.php:12
|
544 |
+
msgid "Edit/Delete Capabilities"
|
545 |
+
msgstr ""
|
546 |
+
|
547 |
+
#: Application/Backend/View/UtilityOptionList.php:17
|
548 |
+
msgid "Backend Access Control"
|
549 |
+
msgstr ""
|
550 |
+
|
551 |
+
#: Application/Backend/View/UtilityOptionList.php:18
|
552 |
+
msgid ""
|
553 |
+
"Allow AAM to manage access to backend resources like backend menu, "
|
554 |
+
"categories or posts."
|
555 |
+
msgstr ""
|
556 |
+
|
557 |
+
#: Application/Backend/View/UtilityOptionList.php:22
|
558 |
+
msgid "Frontend Access Control"
|
559 |
+
msgstr ""
|
560 |
+
|
561 |
+
#: Application/Backend/View/UtilityOptionList.php:23
|
562 |
+
msgid ""
|
563 |
+
"Allow AAM to manage access to frontend resources like pages, categories or "
|
564 |
+
"posts."
|
565 |
+
msgstr ""
|
566 |
+
|
567 |
+
#: Application/Backend/View/UtilityOptionList.php:27
|
568 |
+
msgid "Media Files Access Control"
|
569 |
+
msgstr ""
|
570 |
+
|
571 |
+
#: Application/Backend/View/UtilityOptionList.php:32
|
572 |
+
msgid "Clear cache automatically"
|
573 |
+
msgstr ""
|
574 |
+
|
575 |
+
#: Application/Core/Repository.php:302 Application/Extension/Repository.php:273
|
576 |
#, php-format
|
577 |
msgid "Failed to create %s"
|
578 |
msgstr ""
|
579 |
|
580 |
+
#: Application/Core/Repository.php:306 Application/Extension/Repository.php:277
|
581 |
#, php-format
|
582 |
msgid "Directory %s is not writable"
|
583 |
msgstr ""
|
584 |
|
585 |
+
#: Application/Frontend/Manager.php:184
|
586 |
+
#, php-format
|
587 |
+
msgid "[%s] Double Authentication"
|
588 |
+
msgstr ""
|
589 |
+
|
590 |
+
#: Application/Frontend/Manager.php:186
|
591 |
+
#, php-format
|
592 |
+
msgid "Someone was trying to login from the different IP address %s:"
|
593 |
+
msgstr ""
|
594 |
+
|
595 |
+
#: Application/Frontend/Manager.php:187
|
596 |
+
#, php-format
|
597 |
+
msgid "Website: %s"
|
598 |
+
msgstr ""
|
599 |
+
|
600 |
+
#: Application/Frontend/Manager.php:188
|
601 |
+
#, php-format
|
602 |
+
msgid "Username: %s"
|
603 |
+
msgstr ""
|
604 |
+
|
605 |
+
#: Application/Frontend/Manager.php:189
|
606 |
+
msgid "Visit the following address to authorize the login:"
|
607 |
+
msgstr ""
|
608 |
+
|
609 |
+
#: Application/Shortcode/Factory.php:52
|
610 |
+
msgid "No valid strategy found for the given context"
|
611 |
+
msgstr ""
|
612 |
+
|
613 |
+
#: aam.php:163
|
614 |
msgid "PHP 5.2 or higher is required."
|
615 |
msgstr ""
|
616 |
|
617 |
+
#: aam.php:165
|
618 |
msgid "WP 3.8 or higher is required."
|
619 |
msgstr ""
|
620 |
|
636 |
msgid "Submit"
|
637 |
msgstr ""
|
638 |
|
639 |
+
#: Application/Backend/phtml/extension.phtml:28
|
640 |
msgid "Premium"
|
641 |
msgstr ""
|
642 |
|
643 |
+
#: Application/Backend/phtml/extension.phtml:29
|
644 |
+
#: Application/Backend/phtml/extension.phtml:69
|
|
|
645 |
msgid "Free"
|
646 |
msgstr ""
|
647 |
|
648 |
+
#: Application/Backend/phtml/extension.phtml:30
|
|
|
|
|
|
|
|
|
649 |
msgid "Check For Updates"
|
650 |
msgstr ""
|
651 |
|
652 |
+
#: Application/Backend/phtml/extension.phtml:30
|
653 |
msgid "Check"
|
654 |
msgstr ""
|
655 |
|
656 |
+
#: Application/Backend/phtml/extension.phtml:49
|
657 |
+
#: Application/Backend/phtml/extension.phtml:76
|
|
|
658 |
msgid "Installed"
|
659 |
msgstr ""
|
660 |
|
661 |
+
#: Application/Backend/phtml/extension.phtml:53
|
662 |
+
msgid "Inactive"
|
663 |
msgstr ""
|
664 |
|
665 |
+
#: Application/Backend/phtml/extension.phtml:55
|
666 |
+
msgid "Purchase"
|
|
|
667 |
msgstr ""
|
668 |
|
669 |
+
#: Application/Backend/phtml/extension.phtml:80
|
670 |
+
#: Application/Backend/phtml/extension.phtml:111
|
671 |
+
msgid "Download"
|
672 |
msgstr ""
|
673 |
|
674 |
+
#: Application/Backend/phtml/extension.phtml:95
|
675 |
+
#: Application/Backend/phtml/extension.phtml:122
|
676 |
+
#: Application/Backend/phtml/extension.phtml:133
|
677 |
+
#: Application/Backend/phtml/index.phtml:126
|
678 |
+
#: Application/Backend/phtml/index.phtml:138
|
679 |
+
#: Application/Backend/phtml/index.phtml:148
|
680 |
+
#: Application/Backend/phtml/index.phtml:160
|
681 |
+
#: Application/Backend/phtml/index.phtml:170
|
682 |
+
#: Application/Backend/phtml/index.phtml:178
|
683 |
#: Application/Backend/phtml/object/capability.phtml:47
|
684 |
#: Application/Backend/phtml/object/capability.phtml:58
|
685 |
#: Application/Backend/phtml/object/capability.phtml:68
|
688 |
#: Application/Backend/phtml/object/capability.phtml:98
|
689 |
#: Application/Backend/phtml/object/metabox.phtml:80
|
690 |
#: Application/Backend/phtml/object/metabox.phtml:94
|
691 |
+
#: Application/Backend/phtml/object/post.phtml:121
|
692 |
+
#: Application/Backend/phtml/object/post.phtml:132
|
693 |
+
#: Application/Backend/phtml/utility.phtml:42
|
694 |
msgid "Close"
|
695 |
msgstr ""
|
696 |
|
697 |
+
#: Application/Backend/phtml/extension.phtml:96
|
698 |
msgid "Notification"
|
699 |
msgstr ""
|
700 |
|
701 |
+
#: Application/Backend/phtml/extension.phtml:100
|
702 |
msgid ""
|
703 |
"Extension requires manual installation. Please follow few simple steps below."
|
704 |
msgstr ""
|
705 |
|
706 |
+
#: Application/Backend/phtml/extension.phtml:112
|
707 |
+
#: Application/Backend/phtml/utility.phtml:50
|
708 |
msgid "Cancel"
|
709 |
msgstr ""
|
710 |
|
711 |
+
#: Application/Backend/phtml/extension.phtml:123
|
712 |
msgid "Install Extension"
|
713 |
msgstr ""
|
714 |
|
715 |
+
#: Application/Backend/phtml/extension.phtml:127
|
716 |
msgid ""
|
717 |
"Insert license key that you recieved after the payment (find the email "
|
718 |
"example below). It might take up to 2 hours to process the payment. Please "
|
731 |
msgstr ""
|
732 |
|
733 |
#: Application/Backend/phtml/index.phtml:22
|
734 |
+
msgid "Please note!"
|
735 |
msgstr ""
|
736 |
|
737 |
#: Application/Backend/phtml/index.phtml:23
|
743 |
|
744 |
#: Application/Backend/phtml/index.phtml:24
|
745 |
#, php-format
|
746 |
+
msgid "Refer to our %sHelp%s section when there is any question."
|
747 |
msgstr ""
|
748 |
|
749 |
+
#: Application/Backend/phtml/index.phtml:37
|
750 |
msgid "Notifications"
|
751 |
msgstr ""
|
752 |
|
753 |
+
#: Application/Backend/phtml/index.phtml:81
|
754 |
msgid "AAM Multisite"
|
755 |
msgstr ""
|
756 |
|
757 |
+
#: Application/Backend/phtml/index.phtml:85
|
758 |
msgid "Install AAM Multisite"
|
759 |
msgstr ""
|
760 |
|
761 |
+
#: Application/Backend/phtml/index.phtml:96
|
762 |
msgid "Users/Roles Panel"
|
763 |
msgstr ""
|
764 |
|
765 |
+
#: Application/Backend/phtml/index.phtml:102
|
766 |
+
#: Application/Backend/phtml/index.phtml:218
|
767 |
msgid "Roles"
|
768 |
msgstr ""
|
769 |
|
770 |
+
#: Application/Backend/phtml/index.phtml:104
|
771 |
+
#: Application/Backend/phtml/index.phtml:228
|
772 |
msgid "Visitor"
|
773 |
msgstr ""
|
774 |
|
775 |
+
#: Application/Backend/phtml/index.phtml:105
|
776 |
+
#: Application/Backend/phtml/index.phtml:233
|
777 |
+
msgid "Default"
|
778 |
+
msgstr ""
|
779 |
+
|
780 |
+
#: Application/Backend/phtml/index.phtml:115
|
781 |
+
#: Application/Backend/phtml/index.phtml:191
|
782 |
msgid "Action"
|
783 |
msgstr ""
|
784 |
|
785 |
+
#: Application/Backend/phtml/index.phtml:127
|
786 |
msgid "Create Role"
|
787 |
msgstr ""
|
788 |
|
789 |
+
#: Application/Backend/phtml/index.phtml:131
|
790 |
+
#: Application/Backend/phtml/index.phtml:153
|
791 |
msgid "Role Name"
|
792 |
msgstr ""
|
793 |
|
794 |
+
#: Application/Backend/phtml/index.phtml:132
|
795 |
+
#: Application/Backend/phtml/index.phtml:154
|
796 |
msgid "Enter Role Name"
|
797 |
msgstr ""
|
798 |
|
799 |
+
#: Application/Backend/phtml/index.phtml:149
|
800 |
msgid "Update Role"
|
801 |
msgstr ""
|
802 |
|
803 |
+
#: Application/Backend/phtml/index.phtml:174
|
804 |
#, php-format
|
805 |
+
msgid "Are you sure that you want to delete the %s role?"
|
|
|
|
|
|
|
|
|
|
|
|
|
806 |
msgstr ""
|
807 |
|
808 |
+
#: Application/Backend/phtml/index.phtml:190
|
809 |
msgid "Username"
|
810 |
msgstr ""
|
811 |
|
812 |
+
#: Application/Backend/phtml/index.phtml:200
|
813 |
msgid ""
|
814 |
"Manage access to your website for visitors (any user that is not "
|
815 |
"authenticated)"
|
816 |
msgstr ""
|
817 |
|
818 |
+
#: Application/Backend/phtml/index.phtml:201
|
819 |
msgid "Manage Visitors"
|
820 |
msgstr ""
|
821 |
|
822 |
+
#: Application/Backend/phtml/index.phtml:206
|
823 |
+
msgid ""
|
824 |
+
"Manage default access to your website resources for all users, roles and "
|
825 |
+
"visitor. This includes Administrator role and your user"
|
826 |
+
msgstr ""
|
827 |
+
|
828 |
+
#: Application/Backend/phtml/index.phtml:207
|
829 |
+
msgid "Manage Default Access"
|
830 |
+
msgstr ""
|
831 |
+
|
832 |
+
#: Application/Backend/phtml/index.phtml:219
|
833 |
msgid ""
|
834 |
"With Roles tab you can manage access for any defined role, edit role's name, "
|
835 |
"create new role or even delete existing (but only when there is no users "
|
836 |
"assigned to it). You are not allowed to delete Administrator role."
|
837 |
msgstr ""
|
838 |
|
839 |
+
#: Application/Backend/phtml/index.phtml:224
|
840 |
msgid ""
|
841 |
"Manage access for any user. As a bonus feature, you can block user. It means "
|
842 |
"that user will be not able to login to your website anymore."
|
843 |
msgstr ""
|
844 |
|
845 |
+
#: Application/Backend/phtml/index.phtml:229
|
846 |
msgid ""
|
847 |
"Visitor can be considered any user that is not authenticated to your website."
|
848 |
msgstr ""
|
849 |
|
850 |
+
#: Application/Backend/phtml/index.phtml:234
|
851 |
+
msgid ""
|
852 |
+
"Manage default access settings to your website resources for all users, "
|
853 |
+
"roles and visitors."
|
854 |
+
msgstr ""
|
855 |
+
|
856 |
#: Application/Backend/phtml/object/capability.phtml:16
|
857 |
msgid "Filter"
|
858 |
msgstr ""
|
872 |
msgstr ""
|
873 |
|
874 |
#: Application/Backend/phtml/object/capability.phtml:37
|
875 |
+
#: Application/Backend/phtml/object/post.phtml:44
|
876 |
msgid "Actions"
|
877 |
msgstr ""
|
878 |
|
890 |
msgid "Are you sure that you want to delete %s capability for all roles?"
|
891 |
msgstr ""
|
892 |
|
893 |
+
#: Application/Backend/phtml/object/login-redirect.phtml:43
|
894 |
+
#: Application/Backend/phtml/object/redirect.phtml:61
|
895 |
+
msgid "Existing Page"
|
896 |
+
msgstr ""
|
897 |
+
|
898 |
+
#: Application/Backend/phtml/object/login-redirect.phtml:52
|
899 |
+
#: Application/Backend/phtml/object/redirect.phtml:70
|
900 |
+
msgid "-- Select Page --"
|
901 |
+
msgstr ""
|
902 |
+
|
903 |
+
#: Application/Backend/phtml/object/login-redirect.phtml:58
|
904 |
+
#: Application/Backend/phtml/object/redirect.phtml:76
|
905 |
+
#: Application/Backend/phtml/object/redirect.phtml:109
|
906 |
+
msgid "The URL"
|
907 |
+
msgstr ""
|
908 |
+
|
909 |
+
#: Application/Backend/phtml/object/login-redirect.phtml:63
|
910 |
+
#: Application/Backend/phtml/object/redirect.phtml:81
|
911 |
+
#: Application/Backend/phtml/object/redirect.phtml:113
|
912 |
+
msgid "PHP Callback Function"
|
913 |
msgstr ""
|
914 |
|
915 |
+
#: Application/Backend/phtml/object/menu.phtml:7
|
916 |
#: Application/Backend/phtml/object/metabox.phtml:12
|
917 |
+
#: Application/Backend/phtml/object/post.phtml:27
|
918 |
+
msgid "Settings are customized"
|
919 |
msgstr ""
|
920 |
|
921 |
+
#: Application/Backend/phtml/object/menu.phtml:8
|
922 |
#: Application/Backend/phtml/object/metabox.phtml:13
|
923 |
+
#: Application/Backend/phtml/object/post.phtml:28
|
924 |
msgid "Reset To Default"
|
925 |
msgstr ""
|
926 |
|
941 |
msgstr ""
|
942 |
|
943 |
#: Application/Backend/phtml/object/metabox.phtml:71
|
944 |
+
msgid "The list is not initialized. Click Refresh button above."
|
|
|
|
|
945 |
msgstr ""
|
946 |
|
947 |
#: Application/Backend/phtml/object/metabox.phtml:81
|
965 |
msgid "Insert valid URL"
|
966 |
msgstr ""
|
967 |
|
968 |
+
#: Application/Backend/phtml/object/post.phtml:17
|
|
|
|
|
|
|
|
|
|
|
969 |
msgid "Root"
|
970 |
msgstr ""
|
971 |
|
972 |
+
#: Application/Backend/phtml/object/post.phtml:43
|
973 |
msgid "Title"
|
974 |
msgstr ""
|
975 |
|
976 |
+
#: Application/Backend/phtml/object/post.phtml:52
|
977 |
+
#: Application/Backend/phtml/object/post.phtml:57
|
978 |
+
#: Application/Backend/phtml/object/post.phtml:112
|
979 |
msgid "Go Back"
|
980 |
msgstr ""
|
981 |
|
982 |
+
#: Application/Backend/phtml/object/post.phtml:65
|
983 |
msgid "Frontend"
|
984 |
msgstr ""
|
985 |
|
986 |
+
#: Application/Backend/phtml/object/post.phtml:122
|
987 |
+
msgid "Change Password"
|
|
|
988 |
msgstr ""
|
989 |
|
990 |
+
#: Application/Backend/phtml/object/post.phtml:126
|
991 |
+
msgid "Password"
|
992 |
msgstr ""
|
993 |
|
994 |
+
#: Application/Backend/phtml/object/post.phtml:127
|
995 |
+
msgid "Enter Password"
|
996 |
msgstr ""
|
997 |
|
998 |
+
#: Application/Backend/phtml/object/post.phtml:131
|
999 |
+
msgid "Change"
|
1000 |
msgstr ""
|
1001 |
|
1002 |
+
#: Application/Backend/phtml/object/redirect.phtml:25
|
1003 |
msgid "Frontend Redirect"
|
1004 |
msgstr ""
|
1005 |
|
1006 |
+
#: Application/Backend/phtml/object/redirect.phtml:26
|
1007 |
msgid "Backend Redirect"
|
1008 |
msgstr ""
|
1009 |
|
1010 |
+
#: Application/Backend/phtml/object/redirect.phtml:56
|
1011 |
+
#: Application/Backend/phtml/object/redirect.phtml:104
|
1012 |
msgid "Customized Message"
|
1013 |
msgstr ""
|
1014 |
|
1015 |
+
#: Application/Backend/phtml/object/redirect.phtml:57
|
1016 |
+
#: Application/Backend/phtml/object/redirect.phtml:105
|
1017 |
msgid "Enter message..."
|
1018 |
msgstr ""
|
1019 |
|
1020 |
+
#: Application/Backend/phtml/object/teaser.phtml:25
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1021 |
msgid "Teaser Message"
|
1022 |
msgstr ""
|
1023 |
|
1024 |
+
#: Application/Backend/phtml/object/teaser.phtml:26
|
1025 |
msgid "Enter teaser message..."
|
1026 |
msgstr ""
|
1027 |
|
1028 |
+
#: Application/Backend/phtml/object/teaser.phtml:31
|
1029 |
msgid "Add excerpt before teaser message"
|
1030 |
msgstr ""
|
1031 |
|
1033 |
msgid "Inherit Capabilities From"
|
1034 |
msgstr ""
|
1035 |
|
1036 |
+
#: Application/Backend/phtml/security.phtml:30
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1037 |
msgid ""
|
1038 |
+
"Improve your website security and keep your website error free with "
|
1039 |
+
"CodePinch."
|
1040 |
msgstr ""
|
1041 |
|
1042 |
+
#: Application/Backend/phtml/utility.phtml:26
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1043 |
msgid "Clear All Settings"
|
1044 |
msgstr ""
|
1045 |
|
1046 |
+
#: Application/Backend/phtml/utility.phtml:28
|
1047 |
msgid ""
|
1048 |
"Remove all the settings related to AAM (including all extension licenses)."
|
1049 |
msgstr ""
|
1050 |
|
1051 |
+
#: Application/Backend/phtml/utility.phtml:43
|
1052 |
msgid "Clear all settings"
|
1053 |
msgstr ""
|
1054 |
|
1055 |
+
#: Application/Backend/phtml/utility.phtml:46
|
1056 |
msgid "All AAM settings will be removed."
|
1057 |
msgstr ""
|
1058 |
|
1059 |
+
#: Application/Backend/phtml/utility.phtml:49
|
1060 |
msgid "Clear"
|
1061 |
msgstr ""
|
aam.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
/**
|
4 |
Plugin Name: Advanced Access Manager
|
5 |
Description: Manage website access for any user, role or visitors
|
6 |
-
Version:
|
7 |
Author: Vasyl Martyniuk <vasyl@vasyltech.com>
|
8 |
Author URI: https://www.vasyltech.com
|
9 |
|
@@ -118,7 +118,7 @@ class AAM {
|
|
118 |
|
119 |
//load all installed extension
|
120 |
//TODO - Remove in Aug 2017
|
121 |
-
|
122 |
|
123 |
//bootstrap the correct interface
|
124 |
if (is_admin()) {
|
@@ -145,10 +145,7 @@ class AAM {
|
|
145 |
*/
|
146 |
public static function cron() {
|
147 |
//grab the server extension list
|
148 |
-
|
149 |
-
if (!empty($response)) {
|
150 |
-
AAM_Core_API::updateOption('aam-extension-repository', $response);
|
151 |
-
}
|
152 |
}
|
153 |
|
154 |
/**
|
@@ -177,7 +174,7 @@ class AAM {
|
|
177 |
}
|
178 |
|
179 |
/**
|
180 |
-
*
|
181 |
*
|
182 |
* Remove all leftovers from AAM execution
|
183 |
*
|
3 |
/**
|
4 |
Plugin Name: Advanced Access Manager
|
5 |
Description: Manage website access for any user, role or visitors
|
6 |
+
Version: 4.0
|
7 |
Author: Vasyl Martyniuk <vasyl@vasyltech.com>
|
8 |
Author URI: https://www.vasyltech.com
|
9 |
|
118 |
|
119 |
//load all installed extension
|
120 |
//TODO - Remove in Aug 2017
|
121 |
+
AAM_Extension_Repository::getInstance()->load();
|
122 |
|
123 |
//bootstrap the correct interface
|
124 |
if (is_admin()) {
|
145 |
*/
|
146 |
public static function cron() {
|
147 |
//grab the server extension list
|
148 |
+
AAM_Extension_Repository::getInstance()->check();
|
|
|
|
|
|
|
149 |
}
|
150 |
|
151 |
/**
|
174 |
}
|
175 |
|
176 |
/**
|
177 |
+
* De-install hook
|
178 |
*
|
179 |
* Remove all leftovers from AAM execution
|
180 |
*
|
media/css/aam.css
CHANGED
@@ -63,73 +63,73 @@
|
|
63 |
}
|
64 |
|
65 |
|
66 |
-
.icon-asterisk:before { content: '\e800'; } /* 'î ' */
|
67 |
-
.icon-spin4:before { content: '\e801'; } /* 'î ' */
|
68 |
-
.icon-user-secret:before { content: '\e802'; } /* 'î ' */
|
69 |
-
.icon-folder:before { content: '\e803'; } /* 'î ' */
|
70 |
-
.icon-stop:before { content: '\e804'; } /* 'î ' */
|
71 |
-
.icon-left-dir:before { content: '\e805'; } /* 'î
' */
|
72 |
-
.icon-dollar:before { content: '\e806'; } /* 'î ' */
|
73 |
-
.icon-mail-alt:before { content: '\e807'; } /* 'î ' */
|
74 |
-
.icon-download-cloud:before { content: '\e808'; } /* 'î ' */
|
75 |
-
.icon-eye-off:before { content: '\e809'; } /* 'î ' */
|
76 |
-
.icon-attention-circled:before { content: '\e80a'; } /* 'î ' */
|
77 |
-
.icon-cog-alt:before { content: '\e80b'; } /* 'î ' */
|
78 |
-
.icon-link-1:before { content: '\e80c'; } /* 'î ' */
|
79 |
-
.icon-user-secret-1:before { content: '\e80d'; } /* 'î ' */
|
80 |
-
.icon-unlink:before { content: '\e80e'; } /* 'î ' */
|
81 |
-
.icon-sort-down:before { content: '\e80f'; } /* 'î ' */
|
82 |
-
.icon-pencil:before { content: '\e810'; } /* 'î ' */
|
83 |
-
.icon-arrows-cw:before { content: '\e811'; } /* 'î ' */
|
84 |
-
.icon-sort-up:before { content: '\e812'; } /* 'î ' */
|
85 |
-
.icon-sort:before { content: '\e813'; } /* 'î ' */
|
86 |
-
.icon-lock-open-alt:before { content: '\e814'; } /* 'î ' */
|
87 |
-
.icon-plus:before { content: '\e815'; } /* 'î ' */
|
88 |
-
.icon-filter:before { content: '\e816'; } /* 'î ' */
|
89 |
-
.icon-check:before { content: '\e817'; } /* 'î ' */
|
90 |
-
.icon-help-circled:before { content: '\e818'; } /* 'î ' */
|
91 |
-
.icon-file-code:before { content: '\e819'; } /* 'î ' */
|
92 |
-
.icon-users:before { content: '\e81a'; } /* 'î ' */
|
93 |
-
.icon-box-1:before { content: '\e81b'; } /* 'î ' */
|
94 |
-
.icon-folder-1:before { content: '\e81c'; } /* 'î ' */
|
95 |
-
.icon-eye-1:before { content: '\e81d'; } /* 'î ' */
|
96 |
-
.icon-upload-cloud:before { content: '\e81e'; } /* 'î ' */
|
97 |
-
.icon-user-plus:before { content: '\e81f'; } /* 'î ' */
|
98 |
-
.icon-gauge:before { content: '\e820'; } /* 'î ' */
|
99 |
-
.icon-box:before { content: '\e821'; } /* 'î ¡' */
|
100 |
-
.icon-plus-circled:before { content: '\e822'; } /* 'î ¢' */
|
101 |
-
.icon-link:before { content: '\e823'; } /* 'î £' */
|
102 |
-
.icon-wrench:before { content: '\e824'; } /* 'î ¤' */
|
103 |
-
.icon-eye:before { content: '\e825'; } /* 'î ¥' */
|
104 |
-
.icon-medkit:before { content: '\e826'; } /* 'î ¦' */
|
105 |
-
.icon-basket:before { content: '\e827'; } /* 'î §' */
|
106 |
-
.icon-check-empty:before { content: '\e828'; } /* 'î ¨' */
|
107 |
-
.icon-doc-text-inv:before { content: '\e829'; } /* 'î ©' */
|
108 |
-
.icon-home:before { content: '\e82a'; } /* 'î ª' */
|
109 |
-
.icon-angle-double-right:before { content: '\e82b'; } /* 'î «' */
|
110 |
-
.icon-facebook:before { content: '\e82c'; } /* 'î ¬' */
|
111 |
-
.icon-star:before { content: '\e82d'; } /* 'î ' */
|
112 |
-
.icon-list:before { content: '\e82e'; } /* 'î ®' */
|
113 |
-
.icon-up-dir:before { content: '\e82f'; } /* 'î ¯' */
|
114 |
-
.icon-dot-circled:before { content: '\e830'; } /* 'î °' */
|
115 |
-
.icon-code:before { content: '\e831'; } /* 'î ±' */
|
116 |
-
.icon-bug:before { content: '\e832'; } /* 'î ²' */
|
117 |
-
.icon-heartbeat:before { content: '\e833'; } /* 'î ³' */
|
118 |
-
.icon-connectdevelop:before { content: '\e834'; } /* 'î ´' */
|
119 |
-
.icon-trash-empty:before { content: '\e835'; } /* 'î µ' */
|
120 |
-
.icon-download-cloud-1:before { content: '\e836'; } /* 'î ¶' */
|
121 |
-
.icon-github:before { content: '\e837'; } /* 'î ·' */
|
122 |
-
.icon-cog:before { content: '\e838'; } /* 'î ¸' */
|
123 |
-
.icon-lock:before { content: '\e839'; } /* 'î ¹' */
|
124 |
-
.icon-twitter:before { content: '\e83a'; } /* 'î º' */
|
125 |
-
.icon-certificate:before { content: '\e83b'; } /* 'î »' */
|
126 |
-
.icon-user:before { content: '\e83c'; } /* 'î ¼' */
|
127 |
-
.icon-level-down:before { content: '\e83d'; } /* 'î ½' */
|
128 |
-
.icon-exchange:before { content: '\f0ec'; } /* 'ï¬' */
|
129 |
-
.icon-circle:before { content: '\f111'; } /* 'ï' */
|
130 |
-
.icon-thumbs-up-alt:before { content: '\f164'; } /* 'ï
¤' */
|
131 |
-
.icon-circle-thin:before { content: '\f1db'; } /* 'ï' */
|
132 |
-
.icon-clone:before { content: '\f24d'; } /* 'ï' */
|
133 |
|
134 |
.animate-spin {
|
135 |
-moz-animation: spin 2s infinite linear;
|
@@ -398,6 +398,17 @@ a.btn:focus, a.btn:active {
|
|
398 |
margin-bottom: 0;
|
399 |
}
|
400 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
401 |
/** DATATABLES **/
|
402 |
.dataTables_info {
|
403 |
float: left;
|
@@ -575,7 +586,7 @@ input[type=radio]:checked + label:before {
|
|
575 |
}
|
576 |
|
577 |
.aam-overwrite {
|
578 |
-
padding: 5px
|
579 |
background-color: #f0ad4e;
|
580 |
color: #FFFFFF;
|
581 |
font-weight: 700;
|
@@ -602,8 +613,9 @@ input[type=radio]:checked + label:before {
|
|
602 |
}
|
603 |
|
604 |
.aam-overwrite .btn {
|
605 |
-
margin-top: -
|
606 |
border: 0;
|
|
|
607 |
}
|
608 |
|
609 |
.row.aam-bordered {
|
@@ -721,6 +733,10 @@ input[type=radio]:checked + label:before {
|
|
721 |
font-style: normal;
|
722 |
}
|
723 |
|
|
|
|
|
|
|
|
|
724 |
.text-larger {
|
725 |
font-size: 1.2em;
|
726 |
}
|
@@ -751,6 +767,22 @@ input[type=radio]:checked + label:before {
|
|
751 |
width: 100%;
|
752 |
}
|
753 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
754 |
.aam-help-menu {
|
755 |
float: right;
|
756 |
font-size: 1.4em;
|
@@ -877,13 +909,26 @@ input[type=radio]:checked + label:before {
|
|
877 |
}
|
878 |
|
879 |
.aam-social {
|
880 |
-
font-size:
|
881 |
text-align: center;
|
|
|
|
|
882 |
}
|
883 |
|
884 |
.aam-social a {
|
885 |
text-decoration: none;
|
886 |
margin: 0 10px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
887 |
}
|
888 |
|
889 |
.aam-error-list {
|
@@ -965,36 +1010,6 @@ input[type=radio]:checked + label:before {
|
|
965 |
color: #777777;
|
966 |
}
|
967 |
|
968 |
-
/*! ========================================================================
|
969 |
-
* Bootstrap Toggle: bootstrap-toggle.css v2.2.0
|
970 |
-
* http://www.bootstraptoggle.com
|
971 |
-
* ========================================================================
|
972 |
-
* Copyright 2014 Min Hur, The New York Times Company
|
973 |
-
* Licensed under MIT
|
974 |
-
* ======================================================================== */
|
975 |
-
.checkbox label .toggle,.checkbox-inline .toggle{margin-left:-20px;margin-right:5px}
|
976 |
-
.toggle{position:relative;overflow:hidden}
|
977 |
-
.toggle input[type=checkbox]{display:none}
|
978 |
-
.toggle-group{position:absolute;width:200%;top:0;bottom:0;left:0;transition:left .35s;-webkit-transition:left .35s;-moz-user-select:none;-webkit-user-select:none}
|
979 |
-
.toggle.off .toggle-group{left:-100%}
|
980 |
-
.toggle-on{position:absolute;top:0;bottom:0;left:0;right:50%;margin:0;border:0;border-radius:0}
|
981 |
-
.toggle-off{position:absolute;top:0;bottom:0;left:50%;right:0;margin:0;border:0;border-radius:0}
|
982 |
-
.toggle-handle{position:relative;margin:0 auto;padding-top:0;padding-bottom:0;height:100%;width:0;border-width:0 1px}
|
983 |
-
.toggle.btn{min-width:59px;min-height:34px}
|
984 |
-
.toggle-on.btn{padding-right:24px}
|
985 |
-
.toggle-off.btn{padding-left:24px}
|
986 |
-
.toggle.btn-lg{min-width:79px;min-height:45px}
|
987 |
-
.toggle-on.btn-lg{padding-right:31px}
|
988 |
-
.toggle-off.btn-lg{padding-left:31px}
|
989 |
-
.toggle-handle.btn-lg{width:40px}
|
990 |
-
.toggle.btn-sm{min-width:50px;min-height:30px}
|
991 |
-
.toggle-on.btn-sm{padding-right:20px}
|
992 |
-
.toggle-off.btn-sm{padding-left:20px}
|
993 |
-
.toggle.btn-xs{min-width:35px;min-height:22px}
|
994 |
-
.toggle-on.btn-xs{padding-right:12px}
|
995 |
-
.toggle-off.btn-xs{padding-left:12px}
|
996 |
-
|
997 |
-
|
998 |
/* COVER KNOWN CSS ISSUES CASED BY OTHER PLUGINS OR THEMES */
|
999 |
|
1000 |
/* Bridge theme */
|
63 |
}
|
64 |
|
65 |
|
66 |
+
.icon-asterisk:before { content: '\e800' !important; } /* 'î ' */
|
67 |
+
.icon-spin4:before { content: '\e801' !important; } /* 'î ' */
|
68 |
+
.icon-user-secret:before { content: '\e802' !important; } /* 'î ' */
|
69 |
+
.icon-folder:before { content: '\e803' !important; } /* 'î ' */
|
70 |
+
.icon-stop:before { content: '\e804' !important; } /* 'î ' */
|
71 |
+
.icon-left-dir:before { content: '\e805' !important; } /* 'î
' */
|
72 |
+
.icon-dollar:before { content: '\e806' !important; } /* 'î ' */
|
73 |
+
.icon-mail-alt:before { content: '\e807' !important; } /* 'î ' */
|
74 |
+
.icon-download-cloud:before { content: '\e808' !important; } /* 'î ' */
|
75 |
+
.icon-eye-off:before { content: '\e809' !important; } /* 'î ' */
|
76 |
+
.icon-attention-circled:before { content: '\e80a' !important; } /* 'î ' */
|
77 |
+
.icon-cog-alt:before { content: '\e80b' !important; } /* 'î ' */
|
78 |
+
.icon-link-1:before { content: '\e80c' !important; } /* 'î ' */
|
79 |
+
.icon-user-secret-1:before { content: '\e80d' !important; } /* 'î ' */
|
80 |
+
.icon-unlink:before { content: '\e80e' !important; } /* 'î ' */
|
81 |
+
.icon-sort-down:before { content: '\e80f' !important; } /* 'î ' */
|
82 |
+
.icon-pencil:before { content: '\e810' !important; } /* 'î ' */
|
83 |
+
.icon-arrows-cw:before { content: '\e811' !important; } /* 'î ' */
|
84 |
+
.icon-sort-up:before { content: '\e812' !important; } /* 'î ' */
|
85 |
+
.icon-sort:before { content: '\e813' !important; } /* 'î ' */
|
86 |
+
.icon-lock-open-alt:before { content: '\e814' !important; } /* 'î ' */
|
87 |
+
.icon-plus:before { content: '\e815' !important; } /* 'î ' */
|
88 |
+
.icon-filter:before { content: '\e816' !important; } /* 'î ' */
|
89 |
+
.icon-check:before { content: '\e817' !important; } /* 'î ' */
|
90 |
+
.icon-help-circled:before { content: '\e818' !important; } /* 'î ' */
|
91 |
+
.icon-file-code:before { content: '\e819' !important; } /* 'î ' */
|
92 |
+
.icon-users:before { content: '\e81a' !important; } /* 'î ' */
|
93 |
+
.icon-box-1:before { content: '\e81b' !important; } /* 'î ' */
|
94 |
+
.icon-folder-1:before { content: '\e81c' !important; } /* 'î ' */
|
95 |
+
.icon-eye-1:before { content: '\e81d' !important; } /* 'î ' */
|
96 |
+
.icon-upload-cloud:before { content: '\e81e' !important; } /* 'î ' */
|
97 |
+
.icon-user-plus:before { content: '\e81f' !important; } /* 'î ' */
|
98 |
+
.icon-gauge:before { content: '\e820' !important; } /* 'î ' */
|
99 |
+
.icon-box:before { content: '\e821' !important; } /* 'î ¡' */
|
100 |
+
.icon-plus-circled:before { content: '\e822' !important; } /* 'î ¢' */
|
101 |
+
.icon-link:before { content: '\e823' !important; } /* 'î £' */
|
102 |
+
.icon-wrench:before { content: '\e824' !important; } /* 'î ¤' */
|
103 |
+
.icon-eye:before { content: '\e825' !important; } /* 'î ¥' */
|
104 |
+
.icon-medkit:before { content: '\e826' !important; } /* 'î ¦' */
|
105 |
+
.icon-basket:before { content: '\e827' !important; } /* 'î §' */
|
106 |
+
.icon-check-empty:before { content: '\e828' !important; } /* 'î ¨' */
|
107 |
+
.icon-doc-text-inv:before { content: '\e829' !important; } /* 'î ©' */
|
108 |
+
.icon-home:before { content: '\e82a' !important; } /* 'î ª' */
|
109 |
+
.icon-angle-double-right:before { content: '\e82b' !important; } /* 'î «' */
|
110 |
+
.icon-facebook:before { content: '\e82c' !important; } /* 'î ¬' */
|
111 |
+
.icon-star:before { content: '\e82d' !important; } /* 'î ' */
|
112 |
+
.icon-list:before { content: '\e82e' !important; } /* 'î ®' */
|
113 |
+
.icon-up-dir:before { content: '\e82f' !important; } /* 'î ¯' */
|
114 |
+
.icon-dot-circled:before { content: '\e830' !important; } /* 'î °' */
|
115 |
+
.icon-code:before { content: '\e831' !important; } /* 'î ±' */
|
116 |
+
.icon-bug:before { content: '\e832' !important; } /* 'î ²' */
|
117 |
+
.icon-heartbeat:before { content: '\e833' !important; } /* 'î ³' */
|
118 |
+
.icon-connectdevelop:before { content: '\e834' !important; } /* 'î ´' */
|
119 |
+
.icon-trash-empty:before { content: '\e835' !important; } /* 'î µ' */
|
120 |
+
.icon-download-cloud-1:before { content: '\e836' !important; } /* 'î ¶' */
|
121 |
+
.icon-github:before { content: '\e837' !important; } /* 'î ·' */
|
122 |
+
.icon-cog:before { content: '\e838' !important; } /* 'î ¸' */
|
123 |
+
.icon-lock:before { content: '\e839' !important; } /* 'î ¹' */
|
124 |
+
.icon-twitter:before { content: '\e83a' !important; } /* 'î º' */
|
125 |
+
.icon-certificate:before { content: '\e83b' !important; } /* 'î »' */
|
126 |
+
.icon-user:before { content: '\e83c' !important; } /* 'î ¼' */
|
127 |
+
.icon-level-down:before { content: '\e83d' !important; } /* 'î ½' */
|
128 |
+
.icon-exchange:before { content: '\f0ec' !important; } /* 'ï¬' */
|
129 |
+
.icon-circle:before { content: '\f111' !important; } /* 'ï' */
|
130 |
+
.icon-thumbs-up-alt:before { content: '\f164' !important; } /* 'ï
¤' */
|
131 |
+
.icon-circle-thin:before { content: '\f1db' !important; } /* 'ï' */
|
132 |
+
.icon-clone:before { content: '\f24d' !important; } /* 'ï' */
|
133 |
|
134 |
.animate-spin {
|
135 |
-moz-animation: spin 2s infinite linear;
|
398 |
margin-bottom: 0;
|
399 |
}
|
400 |
|
401 |
+
.aam-shortcode {
|
402 |
+
margin-top: 20px;
|
403 |
+
border: 1px solid #EEEEEE;
|
404 |
+
padding: 10px;
|
405 |
+
}
|
406 |
+
|
407 |
+
.aam-shortcode p {
|
408 |
+
font-weight: 500;
|
409 |
+
margin-bottom: 0;
|
410 |
+
}
|
411 |
+
|
412 |
/** DATATABLES **/
|
413 |
.dataTables_info {
|
414 |
float: left;
|
586 |
}
|
587 |
|
588 |
.aam-overwrite {
|
589 |
+
padding: 5px 0px 5px 15px;
|
590 |
background-color: #f0ad4e;
|
591 |
color: #FFFFFF;
|
592 |
font-weight: 700;
|
613 |
}
|
614 |
|
615 |
.aam-overwrite .btn {
|
616 |
+
margin-top: -5px;
|
617 |
border: 0;
|
618 |
+
padding: 5px 10px;
|
619 |
}
|
620 |
|
621 |
.row.aam-bordered {
|
733 |
font-style: normal;
|
734 |
}
|
735 |
|
736 |
+
.aam-row-subtitle b {
|
737 |
+
color: #777777;
|
738 |
+
}
|
739 |
+
|
740 |
.text-larger {
|
741 |
font-size: 1.2em;
|
742 |
}
|
767 |
width: 100%;
|
768 |
}
|
769 |
|
770 |
+
.aam-extension-inactive {
|
771 |
+
border: 1px solid transparent;
|
772 |
+
display: inline-block;
|
773 |
+
font-size: 12px;
|
774 |
+
font-weight: 400;
|
775 |
+
line-height: 1.42857;
|
776 |
+
margin-bottom: 0;
|
777 |
+
padding: 6px 12px;
|
778 |
+
text-align: center;
|
779 |
+
vertical-align: middle;
|
780 |
+
white-space: nowrap;
|
781 |
+
background-color: #D9534F;
|
782 |
+
color: #FFFFFF;
|
783 |
+
width: 100%;
|
784 |
+
}
|
785 |
+
|
786 |
.aam-help-menu {
|
787 |
float: right;
|
788 |
font-size: 1.4em;
|
909 |
}
|
910 |
|
911 |
.aam-social {
|
912 |
+
font-size: 3em;
|
913 |
text-align: center;
|
914 |
+
width: 100%;
|
915 |
+
display: table;
|
916 |
}
|
917 |
|
918 |
.aam-social a {
|
919 |
text-decoration: none;
|
920 |
margin: 0 10px;
|
921 |
+
display: table-cell;
|
922 |
+
}
|
923 |
+
|
924 |
+
.aam-social span {
|
925 |
+
font-size: 0.25em;
|
926 |
+
color: #333333;
|
927 |
+
display: block;
|
928 |
+
letter-spacing: 1px;
|
929 |
+
font-weight: 700;
|
930 |
+
text-transform: uppercase;
|
931 |
+
text-align: center;
|
932 |
}
|
933 |
|
934 |
.aam-error-list {
|
1010 |
color: #777777;
|
1011 |
}
|
1012 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1013 |
/* COVER KNOWN CSS ISSUES CASED BY OTHER PLUGINS OR THEMES */
|
1014 |
|
1015 |
/* Bridge theme */
|
media/js/aam-ui.js
CHANGED
@@ -114,8 +114,8 @@
|
|
114 |
|
115 |
//add subtitle
|
116 |
$('td:eq(0)', row).append(
|
117 |
-
$('<i/>', {'class': 'aam-row-subtitle'}).
|
118 |
-
aam.__('Users') + ': ' + parseInt(data[1])
|
119 |
)
|
120 |
);
|
121 |
|
@@ -199,15 +199,12 @@
|
|
199 |
}));
|
200 |
break;
|
201 |
|
202 |
-
case 'no-delete':
|
203 |
-
$(container).append($('<i/>', {
|
204 |
-
'class': 'aam-row-action icon-trash-empty text-muted'
|
205 |
-
}).bind('click', function () {
|
206 |
-
$('#role-notification-modal').modal('show');
|
207 |
-
}));
|
208 |
-
break;
|
209 |
-
|
210 |
default:
|
|
|
|
|
|
|
|
|
|
|
211 |
break;
|
212 |
}
|
213 |
});
|
@@ -1287,11 +1284,15 @@
|
|
1287 |
* @param {type} object
|
1288 |
* @param {type} id
|
1289 |
* @param {type} btn
|
|
|
1290 |
* @returns {undefined}
|
1291 |
*/
|
1292 |
function loadAccessForm(object, id, btn, callback) {
|
1293 |
//reset the form first
|
1294 |
var container = $('.aam-slide-form[data-type="' + object + '"]');
|
|
|
|
|
|
|
1295 |
|
1296 |
$('.aam-row-action', container).each(function () {
|
1297 |
$(this).attr({
|
@@ -1309,7 +1310,7 @@
|
|
1309 |
$(this).attr('class', 'aam-row-action icon-spin4 animate-spin');
|
1310 |
var response = save(
|
1311 |
$(this).data('property'),
|
1312 |
-
checked,
|
1313 |
object,
|
1314 |
id
|
1315 |
);
|
@@ -1346,22 +1347,34 @@
|
|
1346 |
success: function (response) {
|
1347 |
//iterate through each property
|
1348 |
for (var property in response.access) {
|
1349 |
-
var checked
|
1350 |
-
|
1351 |
-
|
1352 |
-
|
1353 |
-
|
1354 |
-
|
1355 |
-
//check metadata and show message if necessary
|
1356 |
-
if (response.meta.overwritten === true) {
|
1357 |
-
$('#post-overwritten').removeClass('hidden');
|
1358 |
-
//add some specific attributes to reset button
|
1359 |
-
$('#post-reset').attr({
|
1360 |
-
'data-type': object,
|
1361 |
-
'data-id': id
|
1362 |
});
|
|
|
|
|
|
|
|
|
1363 |
}
|
1364 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1365 |
|
1366 |
$('#post-list_wrapper').addClass('aam-hidden');
|
1367 |
container.addClass('active');
|
@@ -1566,6 +1579,11 @@
|
|
1566 |
break;
|
1567 |
|
1568 |
default:
|
|
|
|
|
|
|
|
|
|
|
1569 |
break;
|
1570 |
}
|
1571 |
});
|
@@ -1628,9 +1646,48 @@
|
|
1628 |
});
|
1629 |
|
1630 |
//load referenced post
|
1631 |
-
if ($('#load-post').val()) {
|
1632 |
-
loadAccessForm(
|
|
|
|
|
|
|
1633 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1634 |
}
|
1635 |
|
1636 |
aam.addHook('init', initialize);
|
@@ -1665,6 +1722,11 @@
|
|
1665 |
param: param,
|
1666 |
value: value
|
1667 |
},
|
|
|
|
|
|
|
|
|
|
|
1668 |
error: function () {
|
1669 |
aam.notification('danger', aam.__('Application error'));
|
1670 |
}
|
@@ -1697,6 +1759,30 @@
|
|
1697 |
save($(this).attr('name'), $(this).val());
|
1698 |
});
|
1699 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1700 |
}
|
1701 |
|
1702 |
aam.addHook('init', initialize);
|
@@ -1731,6 +1817,11 @@
|
|
1731 |
param: param,
|
1732 |
value: value
|
1733 |
},
|
|
|
|
|
|
|
|
|
|
|
1734 |
error: function () {
|
1735 |
aam.notification('danger', aam.__('Application error'));
|
1736 |
}
|
@@ -1763,6 +1854,29 @@
|
|
1763 |
save($(this).attr('name'), $(this).val());
|
1764 |
});
|
1765 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1766 |
}
|
1767 |
|
1768 |
aam.addHook('init', initialize);
|
@@ -1797,6 +1911,11 @@
|
|
1797 |
param: param,
|
1798 |
value: value
|
1799 |
},
|
|
|
|
|
|
|
|
|
|
|
1800 |
error: function () {
|
1801 |
aam.notification('danger', aam.__('Application error'));
|
1802 |
}
|
@@ -1821,6 +1940,29 @@
|
|
1821 |
save($(this).attr('name'), val);
|
1822 |
});
|
1823 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1824 |
}
|
1825 |
|
1826 |
aam.addHook('init', initialize);
|
@@ -2012,10 +2154,7 @@
|
|
2012 |
* @returns {undefined}
|
2013 |
*/
|
2014 |
function initialize() {
|
2015 |
-
$('input[
|
2016 |
-
size: 'normal',
|
2017 |
-
width: '100%'
|
2018 |
-
}).bind('change', function () {
|
2019 |
save($(this).attr('name'), ($(this).prop('checked') ? 1 : 0));
|
2020 |
});
|
2021 |
|
@@ -2049,6 +2188,57 @@
|
|
2049 |
|
2050 |
})(jQuery);
|
2051 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2052 |
|
2053 |
/**
|
2054 |
* Main Panel Interface
|
@@ -2086,7 +2276,8 @@
|
|
2086 |
*/
|
2087 |
aam.fetchContent = function () {
|
2088 |
//referred object ID like post, page or any custom post type
|
2089 |
-
var object
|
|
|
2090 |
|
2091 |
$.ajax(aamLocal.url.site, {
|
2092 |
type: 'POST',
|
@@ -2097,7 +2288,8 @@
|
|
2097 |
_ajax_nonce: aamLocal.nonce,
|
2098 |
subject: this.getSubject().type,
|
2099 |
subjectId: this.getSubject().id,
|
2100 |
-
oid: object ? object[1] : null
|
|
|
2101 |
},
|
2102 |
beforeSend: function () {
|
2103 |
var loader = $('<div/>', {'class': 'aam-loading'}).html(
|
114 |
|
115 |
//add subtitle
|
116 |
$('td:eq(0)', row).append(
|
117 |
+
$('<i/>', {'class': 'aam-row-subtitle'}).html(
|
118 |
+
aam.__('Users') + ': <b>' + parseInt(data[1]) + '</b>; ID: <b>' + data[0] + '</b>'
|
119 |
)
|
120 |
);
|
121 |
|
199 |
}));
|
200 |
break;
|
201 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
202 |
default:
|
203 |
+
aam.triggerHook('role-action', {
|
204 |
+
container: container,
|
205 |
+
action : action,
|
206 |
+
data : data
|
207 |
+
});
|
208 |
break;
|
209 |
}
|
210 |
});
|
1284 |
* @param {type} object
|
1285 |
* @param {type} id
|
1286 |
* @param {type} btn
|
1287 |
+
* @param {type} callback
|
1288 |
* @returns {undefined}
|
1289 |
*/
|
1290 |
function loadAccessForm(object, id, btn, callback) {
|
1291 |
//reset the form first
|
1292 |
var container = $('.aam-slide-form[data-type="' + object + '"]');
|
1293 |
+
|
1294 |
+
//reset data preview elements
|
1295 |
+
$('[data-preview]', container).text('');
|
1296 |
|
1297 |
$('.aam-row-action', container).each(function () {
|
1298 |
$(this).attr({
|
1310 |
$(this).attr('class', 'aam-row-action icon-spin4 animate-spin');
|
1311 |
var response = save(
|
1312 |
$(this).data('property'),
|
1313 |
+
checked ? 1 : 0,
|
1314 |
object,
|
1315 |
id
|
1316 |
);
|
1347 |
success: function (response) {
|
1348 |
//iterate through each property
|
1349 |
for (var property in response.access) {
|
1350 |
+
var checked = (response.access[property] ? 'text-danger icon-check' : 'text-muted icon-check-empty');
|
1351 |
+
var checkbox = $('[data-property="' + property + '"]', container);
|
1352 |
+
|
1353 |
+
if (checkbox.length) {
|
1354 |
+
checkbox.attr({
|
1355 |
+
'class': 'aam-row-action ' + checked
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1356 |
});
|
1357 |
+
} else {
|
1358 |
+
$('[data-preview="' + property + '"]', container).text(
|
1359 |
+
response.access[property]
|
1360 |
+
);
|
1361 |
}
|
1362 |
}
|
1363 |
+
|
1364 |
+
//check metadata and show message if necessary
|
1365 |
+
if (response.meta.overwritten === true) {
|
1366 |
+
$('#post-overwritten').removeClass('hidden');
|
1367 |
+
//add some specific attributes to reset button
|
1368 |
+
$('#post-reset').attr({
|
1369 |
+
'data-type': object,
|
1370 |
+
'data-id': id
|
1371 |
+
});
|
1372 |
+
}
|
1373 |
+
|
1374 |
+
$('#change-password-btn').attr({
|
1375 |
+
'data-type': object,
|
1376 |
+
'data-id': id
|
1377 |
+
});
|
1378 |
|
1379 |
$('#post-list_wrapper').addClass('aam-hidden');
|
1380 |
container.addClass('active');
|
1579 |
break;
|
1580 |
|
1581 |
default:
|
1582 |
+
aam.triggerHook('post-action', {
|
1583 |
+
container: container,
|
1584 |
+
action : action,
|
1585 |
+
data : data
|
1586 |
+
});
|
1587 |
break;
|
1588 |
}
|
1589 |
});
|
1646 |
});
|
1647 |
|
1648 |
//load referenced post
|
1649 |
+
if ($('#load-post-object').val()) {
|
1650 |
+
loadAccessForm(
|
1651 |
+
$('#load-post-object-type').val(),
|
1652 |
+
$('#load-post-object').val()
|
1653 |
+
);
|
1654 |
}
|
1655 |
+
|
1656 |
+
$('.change-password').each(function() {
|
1657 |
+
$(this).bind('click', function() {
|
1658 |
+
var password = $('#' + $(this).attr('data-preview-id')).text();
|
1659 |
+
|
1660 |
+
if (password !== 'none') {
|
1661 |
+
$('#post-password').val(password);
|
1662 |
+
} else {
|
1663 |
+
$('#post-password').val('');
|
1664 |
+
}
|
1665 |
+
|
1666 |
+
$('#change-password-btn').attr({
|
1667 |
+
'data-ref': $(this).attr('data-ref'),
|
1668 |
+
'data-preview-id': $(this).attr('data-preview-id')
|
1669 |
+
});
|
1670 |
+
|
1671 |
+
$('#password-modal').modal('show');
|
1672 |
+
});
|
1673 |
+
});
|
1674 |
+
|
1675 |
+
$('#change-password-btn').bind('click', function() {
|
1676 |
+
var password = $('#password-value').val();
|
1677 |
+
var response = save(
|
1678 |
+
$(this).attr('data-ref'),
|
1679 |
+
password,
|
1680 |
+
$(this).attr('data-type'),
|
1681 |
+
$(this).attr('data-id')
|
1682 |
+
);
|
1683 |
+
|
1684 |
+
if (response.status === 'success') {
|
1685 |
+
$('#' + $(this).attr('data-preview-id')).html(
|
1686 |
+
password ? password : '<i>none</i>'
|
1687 |
+
);
|
1688 |
+
}
|
1689 |
+
$('#password-modal').modal('hide');
|
1690 |
+
});
|
1691 |
}
|
1692 |
|
1693 |
aam.addHook('init', initialize);
|
1722 |
param: param,
|
1723 |
value: value
|
1724 |
},
|
1725 |
+
success: function(response) {
|
1726 |
+
if (response.status === 'success') {
|
1727 |
+
$('#aam-redirect-overwrite').show();
|
1728 |
+
}
|
1729 |
+
},
|
1730 |
error: function () {
|
1731 |
aam.notification('danger', aam.__('Application error'));
|
1732 |
}
|
1759 |
save($(this).attr('name'), $(this).val());
|
1760 |
});
|
1761 |
});
|
1762 |
+
|
1763 |
+
$('#redirect-reset').bind('click', function () {
|
1764 |
+
$.ajax(aamLocal.ajaxurl, {
|
1765 |
+
type: 'POST',
|
1766 |
+
dataType: 'json',
|
1767 |
+
async: false,
|
1768 |
+
data: {
|
1769 |
+
action: 'aam',
|
1770 |
+
sub_action: 'Redirect.reset',
|
1771 |
+
_ajax_nonce: aamLocal.nonce,
|
1772 |
+
subject: aam.getSubject().type,
|
1773 |
+
subjectId: aam.getSubject().id
|
1774 |
+
},
|
1775 |
+
success: function (response) {
|
1776 |
+
if (response.status === 'success') {
|
1777 |
+
aam.fetchContent();
|
1778 |
+
}
|
1779 |
+
},
|
1780 |
+
error: function () {
|
1781 |
+
aam.notification('danger', aam.__('Application Error'));
|
1782 |
+
}
|
1783 |
+
});
|
1784 |
+
});
|
1785 |
+
|
1786 |
}
|
1787 |
|
1788 |
aam.addHook('init', initialize);
|
1817 |
param: param,
|
1818 |
value: value
|
1819 |
},
|
1820 |
+
success: function(response) {
|
1821 |
+
if (response.status === 'success') {
|
1822 |
+
$('#aam-login-redirect-overwrite').show();
|
1823 |
+
}
|
1824 |
+
},
|
1825 |
error: function () {
|
1826 |
aam.notification('danger', aam.__('Application error'));
|
1827 |
}
|
1854 |
save($(this).attr('name'), $(this).val());
|
1855 |
});
|
1856 |
});
|
1857 |
+
|
1858 |
+
$('#login-redirect-reset').bind('click', function () {
|
1859 |
+
$.ajax(aamLocal.ajaxurl, {
|
1860 |
+
type: 'POST',
|
1861 |
+
dataType: 'json',
|
1862 |
+
async: false,
|
1863 |
+
data: {
|
1864 |
+
action: 'aam',
|
1865 |
+
sub_action: 'LoginRedirect.reset',
|
1866 |
+
_ajax_nonce: aamLocal.nonce,
|
1867 |
+
subject: aam.getSubject().type,
|
1868 |
+
subjectId: aam.getSubject().id
|
1869 |
+
},
|
1870 |
+
success: function (response) {
|
1871 |
+
if (response.status === 'success') {
|
1872 |
+
aam.fetchContent();
|
1873 |
+
}
|
1874 |
+
},
|
1875 |
+
error: function () {
|
1876 |
+
aam.notification('danger', aam.__('Application Error'));
|
1877 |
+
}
|
1878 |
+
});
|
1879 |
+
});
|
1880 |
}
|
1881 |
|
1882 |
aam.addHook('init', initialize);
|
1911 |
param: param,
|
1912 |
value: value
|
1913 |
},
|
1914 |
+
success: function(response) {
|
1915 |
+
if (response.status === 'success') {
|
1916 |
+
$('#aam-teaser-overwrite').show();
|
1917 |
+
}
|
1918 |
+
},
|
1919 |
error: function () {
|
1920 |
aam.notification('danger', aam.__('Application error'));
|
1921 |
}
|
1940 |
save($(this).attr('name'), val);
|
1941 |
});
|
1942 |
});
|
1943 |
+
|
1944 |
+
$('#teaser-reset').bind('click', function () {
|
1945 |
+
$.ajax(aamLocal.ajaxurl, {
|
1946 |
+
type: 'POST',
|
1947 |
+
dataType: 'json',
|
1948 |
+
async: false,
|
1949 |
+
data: {
|
1950 |
+
action: 'aam',
|
1951 |
+
sub_action: 'Teaser.reset',
|
1952 |
+
_ajax_nonce: aamLocal.nonce,
|
1953 |
+
subject: aam.getSubject().type,
|
1954 |
+
subjectId: aam.getSubject().id
|
1955 |
+
},
|
1956 |
+
success: function (response) {
|
1957 |
+
if (response.status === 'success') {
|
1958 |
+
aam.fetchContent();
|
1959 |
+
}
|
1960 |
+
},
|
1961 |
+
error: function () {
|
1962 |
+
aam.notification('danger', aam.__('Application Error'));
|
1963 |
+
}
|
1964 |
+
});
|
1965 |
+
});
|
1966 |
}
|
1967 |
|
1968 |
aam.addHook('init', initialize);
|
2154 |
* @returns {undefined}
|
2155 |
*/
|
2156 |
function initialize() {
|
2157 |
+
$('input[type="checkbox"]', '#utilities-content').bind('change', function () {
|
|
|
|
|
|
|
2158 |
save($(this).attr('name'), ($(this).prop('checked') ? 1 : 0));
|
2159 |
});
|
2160 |
|
2188 |
|
2189 |
})(jQuery);
|
2190 |
|
2191 |
+
/**
|
2192 |
+
* Security Interface
|
2193 |
+
*
|
2194 |
+
* @param {type} $
|
2195 |
+
*
|
2196 |
+
* @returns {undefined}
|
2197 |
+
*/
|
2198 |
+
(function ($) {
|
2199 |
+
|
2200 |
+
/**
|
2201 |
+
*
|
2202 |
+
* @param {type} param
|
2203 |
+
* @param {type} value
|
2204 |
+
* @returns {undefined}
|
2205 |
+
*/
|
2206 |
+
function save(param, value) {
|
2207 |
+
$.ajax(aamLocal.ajaxurl, {
|
2208 |
+
type: 'POST',
|
2209 |
+
dataType: 'json',
|
2210 |
+
async: false,
|
2211 |
+
data: {
|
2212 |
+
action: 'aam',
|
2213 |
+
sub_action: 'Security.save',
|
2214 |
+
_ajax_nonce: aamLocal.nonce,
|
2215 |
+
param: param,
|
2216 |
+
value: value
|
2217 |
+
},
|
2218 |
+
error: function () {
|
2219 |
+
aam.notification('danger', aam.__('Application Error'));
|
2220 |
+
}
|
2221 |
+
});
|
2222 |
+
}
|
2223 |
+
|
2224 |
+
/**
|
2225 |
+
*
|
2226 |
+
* @returns {undefined}
|
2227 |
+
*/
|
2228 |
+
function initialize() {
|
2229 |
+
$('input[type="checkbox"]', '#security-content').bind('change', function () {
|
2230 |
+
save($(this).attr('name'), ($(this).prop('checked') ? 1 : 0));
|
2231 |
+
});
|
2232 |
+
|
2233 |
+
$('input[type="text"]', '#security-content').bind('change', function() {
|
2234 |
+
save($(this).attr('name'), $(this).val());
|
2235 |
+
});
|
2236 |
+
}
|
2237 |
+
|
2238 |
+
aam.addHook('init', initialize);
|
2239 |
+
|
2240 |
+
})(jQuery);
|
2241 |
+
|
2242 |
|
2243 |
/**
|
2244 |
* Main Panel Interface
|
2276 |
*/
|
2277 |
aam.fetchContent = function () {
|
2278 |
//referred object ID like post, page or any custom post type
|
2279 |
+
var object = window.location.search.match(/&oid\=([^&]*)/);
|
2280 |
+
var type = window.location.search.match(/&otype\=([^&]*)/);
|
2281 |
|
2282 |
$.ajax(aamLocal.url.site, {
|
2283 |
type: 'POST',
|
2288 |
_ajax_nonce: aamLocal.nonce,
|
2289 |
subject: this.getSubject().type,
|
2290 |
subjectId: this.getSubject().id,
|
2291 |
+
oid: object ? object[1] : null,
|
2292 |
+
otype: type ? type[1] : null
|
2293 |
},
|
2294 |
beforeSend: function () {
|
2295 |
var loader = $('<div/>', {'class': 'aam-loading'}).html(
|
media/js/vendor.js
CHANGED
@@ -216,14 +216,4 @@ h.version="1.0.7";e.fn.dataTable.Responsive=h;e.fn.DataTable.Responsive=h;e(p).o
|
|
216 |
o(jQuery,jQuery.fn.dataTable)})(window,document);
|
217 |
|
218 |
//download.js v3.1, by dandavis; 2008-2015. [CCBY2] see http://danml.com/download.html for tests/usage
|
219 |
-
(function(f,a){"function"==typeof define&&define.amd?define([],a):"object"==typeof exports?module.exports=a():f.download=a()})(this,function(){return function(f,a,b){function n(l){var a=l.split(/[:;,]/);l=a[1];var a=("base64"==a[2]?atob:decodeURIComponent)(a.pop()),c=a.length,b=0,d=new Uint8Array(c);for(b;b<c;++b)d[b]=a.charCodeAt(b);return new g([d],{type:l})}function k(a,b){if("download"in d)return d.href=a,d.setAttribute("download",m),d.innerHTML="downloading...",h.body.appendChild(d),setTimeout(function(){d.click(),h.body.removeChild(d),!0===b&&setTimeout(function(){e.URL.revokeObjectURL(d.href)},250)},66),!0;if("undefined"!=typeof safari)return a="data:"+a.replace(/^data:([\w\/\-\+]+)/,"application/octet-stream"),!window.open(a)&&confirm("Displaying New Document\n\nUse Save As... to download, then click back to return to this page.")&&(location.href=a),!0;var c=h.createElement("iframe");h.body.appendChild(c),b||(a="data:"+a.replace(/^data:([\w\/\-\+]+)/,"application/octet-stream")),c.src=a,setTimeout(function(){h.body.removeChild(c)},333)}var e=window;b=b||"application/octet-stream";var c=f,h=document,d=h.createElement("a");f=function(a){return String(a)};var g=e.Blob||e.MozBlob||e.WebKitBlob||f,g=g.call?g.bind(e):Blob,m=a||"download";"true"===String(this)&&(c=[c,b],b=c[0],c=c[1]);if(String(c).match(/^data\:[\w+\-]+\/[\w+\-]+[,;]/))return navigator.msSaveBlob?navigator.msSaveBlob(n(c),m):k(c);a=c instanceof g?c:new g([c],{type:b});if(navigator.msSaveBlob)return navigator.msSaveBlob(a,m);if(e.URL)k(e.URL.createObjectURL(a),!0);else{if("string"==typeof a||a.constructor===f)try{return k("data:"+b+";base64,"+e.btoa(a))}catch(p){return k("data:"+b+","+encodeURIComponent(a))}b=new FileReader,b.onload=function(a){k(this.result)},b.readAsDataURL(a)}return!0}});
|
220 |
-
|
221 |
-
/*! ========================================================================
|
222 |
-
* Bootstrap Toggle: bootstrap-toggle.js v2.2.0
|
223 |
-
* http://www.bootstraptoggle.com
|
224 |
-
* ========================================================================
|
225 |
-
* Copyright 2014 Min Hur, The New York Times Company
|
226 |
-
* Licensed under MIT
|
227 |
-
* ======================================================================== */
|
228 |
-
+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.toggle"),f="object"==typeof b&&b;e||d.data("bs.toggle",e=new c(this,f)),"string"==typeof b&&e[b]&&e[b]()})}var c=function(b,c){this.$element=a(b),this.options=a.extend({},this.defaults(),c),this.render()};c.VERSION="2.2.0",c.DEFAULTS={on:"On",off:"Off",onstyle:"primary",offstyle:"default",size:"normal",style:"",width:null,height:null},c.prototype.defaults=function(){return{on:this.$element.attr("data-on")||c.DEFAULTS.on,off:this.$element.attr("data-off")||c.DEFAULTS.off,onstyle:this.$element.attr("data-onstyle")||c.DEFAULTS.onstyle,offstyle:this.$element.attr("data-offstyle")||c.DEFAULTS.offstyle,size:this.$element.attr("data-size")||c.DEFAULTS.size,style:this.$element.attr("data-style")||c.DEFAULTS.style,width:this.$element.attr("data-width")||c.DEFAULTS.width,height:this.$element.attr("data-height")||c.DEFAULTS.height}},c.prototype.render=function(){this._onstyle="btn-"+this.options.onstyle,this._offstyle="btn-"+this.options.offstyle;var b="large"===this.options.size?"btn-lg":"small"===this.options.size?"btn-sm":"mini"===this.options.size?"btn-xs":"",c=a('<label class="btn">').html(this.options.on).addClass(this._onstyle+" "+b),d=a('<label class="btn">').html(this.options.off).addClass(this._offstyle+" "+b+" active"),e=a('<span class="toggle-handle btn btn-default">').addClass(b),f=a('<div class="toggle-group">').append(c,d,e),g=a('<div class="toggle btn" data-toggle="toggle">').addClass(this.$element.prop("checked")?this._onstyle:this._offstyle+" off").addClass(b).addClass(this.options.style);this.$element.wrap(g),a.extend(this,{$toggle:this.$element.parent(),$toggleOn:c,$toggleOff:d,$toggleGroup:f}),this.$toggle.append(f);var h=this.options.width||Math.max(c.outerWidth(),d.outerWidth())+e.outerWidth()/2,i=this.options.height||Math.max(c.outerHeight(),d.outerHeight());c.addClass("toggle-on"),d.addClass("toggle-off"),this.$toggle.css({width:h,height:i}),this.options.height&&(c.css("line-height",c.height()+"px"),d.css("line-height",d.height()+"px")),this.update(!0),this.trigger(!0)},c.prototype.toggle=function(){this.$element.prop("checked")?this.off():this.on()},c.prototype.on=function(a){return this.$element.prop("disabled")?!1:(this.$toggle.removeClass(this._offstyle+" off").addClass(this._onstyle),this.$element.prop("checked",!0),void(a||this.trigger()))},c.prototype.off=function(a){return this.$element.prop("disabled")?!1:(this.$toggle.removeClass(this._onstyle).addClass(this._offstyle+" off"),this.$element.prop("checked",!1),void(a||this.trigger()))},c.prototype.enable=function(){this.$toggle.removeAttr("disabled"),this.$element.prop("disabled",!1)},c.prototype.disable=function(){this.$toggle.attr("disabled","disabled"),this.$element.prop("disabled",!0)},c.prototype.update=function(a){this.$element.prop("disabled")?this.disable():this.enable(),this.$element.prop("checked")?this.on(a):this.off(a)},c.prototype.trigger=function(b){this.$element.off("change.bs.toggle"),b||this.$element.change(),this.$element.on("change.bs.toggle",a.proxy(function(){this.update()},this))},c.prototype.destroy=function(){this.$element.off("change.bs.toggle"),this.$toggleGroup.remove(),this.$element.removeData("bs.toggle"),this.$element.unwrap()};var d=a.fn.bootstrapToggle;a.fn.bootstrapToggle=b,a.fn.bootstrapToggle.Constructor=c,a.fn.toggle.noConflict=function(){return a.fn.bootstrapToggle=d,this},a(function(){a("input[type=checkbox][data-toggle^=toggle]").bootstrapToggle()}),a(document).on("click.bs.toggle","div[data-toggle^=toggle]",function(b){var c=a(this).find("input[type=checkbox]");c.bootstrapToggle("toggle"),b.preventDefault()})}(jQuery);
|
229 |
-
//# sourceMappingURL=bootstrap-toggle.min.js.map
|
216 |
o(jQuery,jQuery.fn.dataTable)})(window,document);
|
217 |
|
218 |
//download.js v3.1, by dandavis; 2008-2015. [CCBY2] see http://danml.com/download.html for tests/usage
|
219 |
+
(function(f,a){"function"==typeof define&&define.amd?define([],a):"object"==typeof exports?module.exports=a():f.download=a()})(this,function(){return function(f,a,b){function n(l){var a=l.split(/[:;,]/);l=a[1];var a=("base64"==a[2]?atob:decodeURIComponent)(a.pop()),c=a.length,b=0,d=new Uint8Array(c);for(b;b<c;++b)d[b]=a.charCodeAt(b);return new g([d],{type:l})}function k(a,b){if("download"in d)return d.href=a,d.setAttribute("download",m),d.innerHTML="downloading...",h.body.appendChild(d),setTimeout(function(){d.click(),h.body.removeChild(d),!0===b&&setTimeout(function(){e.URL.revokeObjectURL(d.href)},250)},66),!0;if("undefined"!=typeof safari)return a="data:"+a.replace(/^data:([\w\/\-\+]+)/,"application/octet-stream"),!window.open(a)&&confirm("Displaying New Document\n\nUse Save As... to download, then click back to return to this page.")&&(location.href=a),!0;var c=h.createElement("iframe");h.body.appendChild(c),b||(a="data:"+a.replace(/^data:([\w\/\-\+]+)/,"application/octet-stream")),c.src=a,setTimeout(function(){h.body.removeChild(c)},333)}var e=window;b=b||"application/octet-stream";var c=f,h=document,d=h.createElement("a");f=function(a){return String(a)};var g=e.Blob||e.MozBlob||e.WebKitBlob||f,g=g.call?g.bind(e):Blob,m=a||"download";"true"===String(this)&&(c=[c,b],b=c[0],c=c[1]);if(String(c).match(/^data\:[\w+\-]+\/[\w+\-]+[,;]/))return navigator.msSaveBlob?navigator.msSaveBlob(n(c),m):k(c);a=c instanceof g?c:new g([c],{type:b});if(navigator.msSaveBlob)return navigator.msSaveBlob(a,m);if(e.URL)k(e.URL.createObjectURL(a),!0);else{if("string"==typeof a||a.constructor===f)try{return k("data:"+b+";base64,"+e.btoa(a))}catch(p){return k("data:"+b+","+encodeURIComponent(a))}b=new FileReader,b.onload=function(a){k(this.result)},b.readAsDataURL(a)}return!0}});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
readme.txt
CHANGED
@@ -1,40 +1,66 @@
|
|
1 |
=== Advanced Access Manager ===
|
2 |
Contributors: vasyltech
|
3 |
-
Tags: access, role, user, visitor, capability, page, post, permission, security, redirect,
|
4 |
Requires at least: 3.8
|
5 |
-
Tested up to: 4.7
|
6 |
-
Stable tag:
|
7 |
|
8 |
-
|
9 |
-
any user, role or visitors.
|
10 |
|
11 |
== Description ==
|
12 |
|
13 |
-
> Advanced Access Manager (aka AAM) is
|
14 |
-
> manage access to
|
15 |
-
> visitors.
|
16 |
-
> AAM 4.0 development version is available for download [here](https://downloads.wordpress.org/plugin/advanced-access-manager.zip).
|
17 |
|
18 |
-
|
19 |
-
how to use it in the most efficient way.
|
20 |
|
21 |
-
Please note! Some
|
22 |
-
|
|
|
23 |
|
24 |
-
|
|
|
25 |
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
* Manage access to Widgets & Metaboxes;
|
30 |
-
* Manage access to Posts, Pages, Custom Post Types or Categories;
|
31 |
-
* Limit access the a post's content with Teaser Message;
|
32 |
-
* Manage Access Denied Redirect for any restricted website resource;
|
33 |
-
* Manage Login Redirect after user authenticated successfully;
|
34 |
-
* And many more...
|
35 |
|
36 |
-
|
37 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
|
39 |
`//Get AAM_Core_Subject. This object allows you to work with access control
|
40 |
//for current logged-in user or visitor
|
@@ -48,8 +74,7 @@ $user->getObject('post', 10)->has('frontend.read');
|
|
48 |
//If true then access denied to this menu
|
49 |
$user->getObject('menu')->has('upload.php');`
|
50 |
|
51 |
-
Check our [
|
52 |
-
out more about the Advanced Access Manager.
|
53 |
|
54 |
== Installation ==
|
55 |
|
@@ -74,10 +99,11 @@ out more about the Advanced Access Manager.
|
|
74 |
* Moved AAM Login Redirect extension to the basic AAM package
|
75 |
* Moved AAM Content Teaser extension to the basic AAM package
|
76 |
* Set single password for any post or posts in any category or post type
|
77 |
-
* Added two protection mechanism from login brute force
|
78 |
* Added double authentication mechanism
|
79 |
* Few minor core bug fixings
|
80 |
* Improved multisite support
|
|
|
81 |
|
82 |
= 3.9.5.1 =
|
83 |
* Fixed bug with login redirect
|
1 |
=== Advanced Access Manager ===
|
2 |
Contributors: vasyltech
|
3 |
+
Tags: access, role, user, visitor, capability, page, post, permission, security, login redirect, brute force attack, double authentication, widget, membership
|
4 |
Requires at least: 3.8
|
5 |
+
Tested up to: 4.7.2
|
6 |
+
Stable tag: 4.0
|
7 |
|
8 |
+
Manage your website access and security for any user, role or visitors.
|
|
|
9 |
|
10 |
== Description ==
|
11 |
|
12 |
+
> Advanced Access Manager (aka AAM) is the WordPress plugin with all necessary
|
13 |
+
> set of tools to manage access to your website frontend and backend for any
|
14 |
+
> user, role or visitors.
|
|
|
15 |
|
16 |
+
https://www.youtube.com/watch?v=yiOhjaacNJc
|
|
|
17 |
|
18 |
+
Please note! Some features are limited or not included in the basic plugin installation.
|
19 |
+
Upon activation refer to the Extensions tab to learn more about free and
|
20 |
+
premium extensions that are available for download.
|
21 |
|
22 |
+
= Manage Backend Menu =
|
23 |
+
Manage access to the backend menu for any user or group or users (roles).
|
24 |
|
25 |
+
= Manage Metaboxes and Widgets =
|
26 |
+
Filter list of metaboxes and widgets on both frontend and backend for any user,
|
27 |
+
group of users or visitors.
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
|
29 |
+
= Manage Capabilities =
|
30 |
+
Create, edit or delete capabilities for any role or even user.
|
31 |
+
|
32 |
+
= Manage Posts & Pages =
|
33 |
+
Manage access to any post, page or custom post type. With premium AAM Plus Package extension
|
34 |
+
also manage access to categories, custom hierarchical taxonomies or setup the default
|
35 |
+
access to all posts and categories. Refer to [How to manage WordPress post and category access](https://aamplugin.com/help/how-to-manage-wordpress-post-and-category-access)
|
36 |
+
to learn more about this feature.
|
37 |
+
|
38 |
+
= Manage Redirects =
|
39 |
+
Define custom access denied or login redirects for any user or group of users. Redirect
|
40 |
+
user to any existing page, URL or specify your own PHP callback function to handle it.
|
41 |
+
|
42 |
+
= Content Teaser =
|
43 |
+
Create your own content teaser for any limited post, page or custom post type.
|
44 |
+
|
45 |
+
= Content Filter =
|
46 |
+
Filter or replace blocks of your content with [aam] shortcodes. For more information about this
|
47 |
+
feature refer to the [How to filter WordPress post content](https://aamplugin.com/help/how-to-filter-wordpress-post-content) article
|
48 |
+
|
49 |
+
= Payments API =
|
50 |
+
Start selling access to your website content or even user levels with premium AAM Payment extension. For
|
51 |
+
more information refer to the [AAM Payment extension](https://aamplugin.com/help/aam-payment-extension)
|
52 |
+
|
53 |
+
= Security =
|
54 |
+
Protect your website from brute force and dictionary attacks or activate double authentication
|
55 |
+
when user credentials are used from unexpected location.
|
56 |
+
|
57 |
+
= Manage Roles =
|
58 |
+
Create, edit, clone, delete any role. With AAM Role Hierarchy extension define complex
|
59 |
+
role hierarchy tree.
|
60 |
+
|
61 |
+
= Single point API =
|
62 |
+
Easy to use programmatic interface that is used to develop your own custom
|
63 |
+
functionality.
|
64 |
|
65 |
`//Get AAM_Core_Subject. This object allows you to work with access control
|
66 |
//for current logged-in user or visitor
|
74 |
//If true then access denied to this menu
|
75 |
$user->getObject('menu')->has('upload.php');`
|
76 |
|
77 |
+
Check our [help page](https://aamplugin.com/help) to find out more about AAM.
|
|
|
78 |
|
79 |
== Installation ==
|
80 |
|
99 |
* Moved AAM Login Redirect extension to the basic AAM package
|
100 |
* Moved AAM Content Teaser extension to the basic AAM package
|
101 |
* Set single password for any post or posts in any category or post type
|
102 |
+
* Added two protection mechanism from login brute force attacks
|
103 |
* Added double authentication mechanism
|
104 |
* Few minor core bug fixings
|
105 |
* Improved multisite support
|
106 |
+
* Improved caching mechanism
|
107 |
|
108 |
= 3.9.5.1 =
|
109 |
* Fixed bug with login redirect
|