Advanced Access Manager - Version 5.4.3.2

Version Description

  • Fixed bug that incorrectly checks post author property
  • Fixed bug that does not allow to assign roles that contain apostrophe
  • Fixed bug with incorrectly handled AAM Console messages that contain HTML
  • Added ability to order roles by name
  • Added ability to order users by display name
  • Improved Users/Roles Manager UI
Download this release

Release Info

Developer vasyl_m
Plugin Icon 128x128 Advanced Access Manager
Version 5.4.3.2
Comparing to
See all releases

Code changes from version 5.4.3.1 to 5.4.3.2

Application/Api/Rest/Resource/Post.php CHANGED
@@ -182,7 +182,7 @@ class AAM_Api_Rest_Resource_Post {
182
  $read = $post->has('api.read');
183
  $others = $post->has('api.read_others');
184
 
185
- if ($read || ($others && ($post->post_author !== get_current_user_id()))) {
186
  $result = new WP_Error(
187
  'rest_post_cannot_read',
188
  "User is unauthorized to read the post. Access denied.",
@@ -328,7 +328,7 @@ class AAM_Api_Rest_Resource_Post {
328
  $edit = $post->has('api.edit');
329
  $others = $post->has('api.edit_others');
330
 
331
- if ($edit || ($others && ($post->post_author !== get_current_user_id()))) {
332
  $result = new WP_Error(
333
  'rest_post_cannot_update',
334
  "User is unauthorized to update the post. Access denied.",
@@ -357,7 +357,7 @@ class AAM_Api_Rest_Resource_Post {
357
  $delete = $post->has('api.delete');
358
  $others = $post->has('api.delete_others');
359
 
360
- if ($delete || ($others && ($post->post_author !== get_current_user_id()))) {
361
  $result = new WP_Error(
362
  'rest_post_cannot_delete',
363
  "User is unauthorized to delete the post. Access denied.",
182
  $read = $post->has('api.read');
183
  $others = $post->has('api.read_others');
184
 
185
+ if ($read || ($others && (intval($post->post_author) !== get_current_user_id()))) {
186
  $result = new WP_Error(
187
  'rest_post_cannot_read',
188
  "User is unauthorized to read the post. Access denied.",
328
  $edit = $post->has('api.edit');
329
  $others = $post->has('api.edit_others');
330
 
331
+ if ($edit || ($others && (intval($post->post_author) !== get_current_user_id()))) {
332
  $result = new WP_Error(
333
  'rest_post_cannot_update',
334
  "User is unauthorized to update the post. Access denied.",
357
  $delete = $post->has('api.delete');
358
  $others = $post->has('api.delete_others');
359
 
360
+ if ($delete || ($others && (intval($post->post_author) !== get_current_user_id()))) {
361
  $result = new WP_Error(
362
  'rest_post_cannot_delete',
363
  "User is unauthorized to delete the post. Access denied.",
Application/Backend/Feature/Extension/Manager.php CHANGED
@@ -116,7 +116,7 @@ class AAM_Backend_Feature_Extension_Manager extends AAM_Backend_Feature_Abstract
116
  } else {
117
  $response = wp_json_encode(array(
118
  'status' => 'failure',
119
- 'error' => __('Enter license key to update extension.', AAM_KEY)
120
  ));
121
  }
122
  }
116
  } else {
117
  $response = wp_json_encode(array(
118
  'status' => 'failure',
119
+ 'error' => __('No valid license key was found.', AAM_KEY)
120
  ));
121
  }
122
  }
Application/Backend/Feature/Subject/Role.php CHANGED
@@ -77,12 +77,18 @@ class AAM_Backend_Feature_Subject_Role {
77
 
78
  if (current_user_can('aam_edit_roles')) {
79
  $actions[] = 'edit';
 
 
80
  }
81
  if (current_user_can('aam_create_roles')) {
82
  $actions[] = 'clone';
 
 
83
  }
84
  if (current_user_can('aam_delete_roles') && !$count) {
85
  $actions[] = 'delete';
 
 
86
  }
87
 
88
  return $actions;
@@ -138,7 +144,7 @@ class AAM_Backend_Feature_Subject_Role {
138
  $name = sanitize_text_field(filter_input(INPUT_POST, 'name'));
139
  $expire = filter_input(INPUT_POST, 'expire');
140
  $roles = AAM_Core_API::getRoles();
141
- $role_id = strtolower($name);
142
 
143
  //if inherited role is set get capabilities from it
144
  $parent = $roles->get_role(trim(filter_input(INPUT_POST, 'inherit')));
77
 
78
  if (current_user_can('aam_edit_roles')) {
79
  $actions[] = 'edit';
80
+ } else {
81
+ $actions[] = 'no-edit';
82
  }
83
  if (current_user_can('aam_create_roles')) {
84
  $actions[] = 'clone';
85
+ } else {
86
+ $actions[] = 'no-clone';
87
  }
88
  if (current_user_can('aam_delete_roles') && !$count) {
89
  $actions[] = 'delete';
90
+ } else {
91
+ $actions[] = 'no-delete';
92
  }
93
 
94
  return $actions;
144
  $name = sanitize_text_field(filter_input(INPUT_POST, 'name'));
145
  $expire = filter_input(INPUT_POST, 'expire');
146
  $roles = AAM_Core_API::getRoles();
147
+ $role_id = sanitize_key(strtolower($name));
148
 
149
  //if inherited role is set get capabilities from it
150
  $parent = $roles->get_role(trim(filter_input(INPUT_POST, 'inherit')));
Application/Backend/Feature/Subject/User.php CHANGED
@@ -104,8 +104,8 @@ class AAM_Backend_Feature_Subject_User {
104
  'search_columns' => array(
105
  'user_login', 'user_email', 'display_name'
106
  ),
107
- 'orderby' => 'user_nicename',
108
- 'order' => 'ASC'
109
  );
110
 
111
  if (!empty($role)) {
@@ -114,6 +114,21 @@ class AAM_Backend_Feature_Subject_User {
114
 
115
  return new WP_User_Query($args);
116
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
 
118
  /**
119
  * Block user
@@ -205,10 +220,15 @@ class AAM_Backend_Feature_Subject_User {
205
  if (current_user_can('edit_users')) {
206
  $actions[] = 'edit';
207
  $actions[] = 'ttl';
 
 
 
208
  }
209
 
210
  if (current_user_can('aam_switch_users')) {
211
  $actions[] = 'switch';
 
 
212
  }
213
  } else {
214
  $actions = array();
104
  'search_columns' => array(
105
  'user_login', 'user_email', 'display_name'
106
  ),
107
+ 'orderby' => 'display_name',
108
+ 'order' => $this->getOrderDirection()
109
  );
110
 
111
  if (!empty($role)) {
114
 
115
  return new WP_User_Query($args);
116
  }
117
+
118
+ /**
119
+ *
120
+ * @return type
121
+ */
122
+ protected function getOrderDirection() {
123
+ $dir = 'asc';
124
+ $order = AAM_Core_Request::post('order.0');
125
+
126
+ if (!empty($order['column']) && ($order['column'] === '2')) {
127
+ $dir = !empty($order['dir']) ? $order['dir'] : 'asc';
128
+ }
129
+
130
+ return strtoupper($dir);
131
+ }
132
 
133
  /**
134
  * Block user
220
  if (current_user_can('edit_users')) {
221
  $actions[] = 'edit';
222
  $actions[] = 'ttl';
223
+ } else {
224
+ $actions[] = 'no-edit';
225
+ $actions[] = 'no-ttl';
226
  }
227
 
228
  if (current_user_can('aam_switch_users')) {
229
  $actions[] = 'switch';
230
+ } else {
231
+ $actions[] = 'no-switch';
232
  }
233
  } else {
234
  $actions = array();
Application/Backend/Filter.php CHANGED
@@ -187,7 +187,7 @@ class AAM_Backend_Filter {
187
  protected function isAllowed($action, $object) {
188
  $edit = $object->has($action);
189
  $others = $object->has("{$action}_others");
190
- $author = ($object->post_author === get_current_user_id());
191
 
192
  return ($edit || ($others && !$author)) ? false : true;
193
  }
@@ -232,7 +232,7 @@ class AAM_Backend_Filter {
232
  public function prePostUpdate($id, $data) {
233
  $post = get_post($id);
234
 
235
- if ($post->post_author !== intval($data['post_author'])) {
236
  AAM_Core_API::clearCache();
237
  }
238
  }
187
  protected function isAllowed($action, $object) {
188
  $edit = $object->has($action);
189
  $others = $object->has("{$action}_others");
190
+ $author = (intval($object->post_author) === get_current_user_id());
191
 
192
  return ($edit || ($others && !$author)) ? false : true;
193
  }
232
  public function prePostUpdate($id, $data) {
233
  $post = get_post($id);
234
 
235
+ if (intval($post->post_author) !== intval($data['post_author'])) {
236
  AAM_Core_API::clearCache();
237
  }
238
  }
Application/Backend/phtml/main/get-started.phtml CHANGED
@@ -9,7 +9,7 @@
9
  <p class="text-larger"><?php echo sprintf(__('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 a conflict with other plugins or themes. In this case please do not hesitate to contact us directly on our website %saamplugin.com%s', AAM_KEY), '<a href="https://aamplugin.com" target="_blank">', '</a>'); ?></p>
10
  <p class="text-larger"><?php echo sprintf(__('If you are not sure where to start, please check our %s"Get Started"%s page to learn more about core concepts that will definitely help you to manage access to your WordPress website more effectively.', AAM_KEY), '<a href="https://aamplugin.com/get-started" target="_blank">', '</a>'); ?></p>
11
  <p class="text-center"><a href="https://aamplugin.com/get-started" class="btn btn-primary" target="_blank"><?php echo __('Get Started', AAM_KEY); ?></a></p>
12
- <p class="text-center"><small><sup>*</sup> <?php echo __('To remove the "Get Started" tab you may go to Settings Area and disable "Get Started Feature" option.', AAM_KEY); ?></small></p>
13
  </div>
14
  </div>
15
  </div>
9
  <p class="text-larger"><?php echo sprintf(__('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 a conflict with other plugins or themes. In this case please do not hesitate to contact us directly on our website %saamplugin.com%s', AAM_KEY), '<a href="https://aamplugin.com" target="_blank">', '</a>'); ?></p>
10
  <p class="text-larger"><?php echo sprintf(__('If you are not sure where to start, please check our %s"Get Started"%s page to learn more about core concepts that will definitely help you to manage access to your WordPress website more effectively.', AAM_KEY), '<a href="https://aamplugin.com/get-started" target="_blank">', '</a>'); ?></p>
11
  <p class="text-center"><a href="https://aamplugin.com/get-started" class="btn btn-primary" target="_blank"><?php echo __('Get Started', AAM_KEY); ?></a></p>
12
+ <p class="text-center"><small><sup>*</sup> <?php echo __('To remove the "Get Started" tab you may go to Settings Area and disable "Get Started Tab" option.', AAM_KEY); ?></small></p>
13
  </div>
14
  </div>
15
  </div>
Application/Core/Console.php CHANGED
@@ -51,9 +51,7 @@ class AAM_Core_Console {
51
  array_push($replace, "<{$key}>", "</{$key}>");
52
  }
53
 
54
- self::$_messages[] = preg_replace(
55
- $search, $replace, __($message, AAM_KEY), 1
56
- );
57
  }
58
 
59
  /**
51
  array_push($replace, "<{$key}>", "</{$key}>");
52
  }
53
 
54
+ self::$_messages[] = preg_replace($search, $replace, $message, 1);
 
 
55
  }
56
 
57
  /**
Application/Core/Media.php CHANGED
@@ -89,7 +89,7 @@ class AAM_Core_Media {
89
  } else {
90
  $read = $media->has('frontend.read');
91
  $others = $media->has('frontend.read_others');
92
- $author = ($media->post_author === get_current_user_id());
93
 
94
  if ($read || ($others && !$author)) {
95
  $args = array(
89
  } else {
90
  $read = $media->has('frontend.read');
91
  $others = $media->has('frontend.read_others');
92
+ $author = (intval($media->post_author) === get_current_user_id());
93
 
94
  if ($read || ($others && !$author)) {
95
  $args = array(
Application/Extension/List.php CHANGED
@@ -15,6 +15,15 @@ class AAM_Extension_List {
15
  */
16
  public static function get() {
17
  return array(
 
 
 
 
 
 
 
 
 
18
  'AAM_PLUS_PACKAGE' => array(
19
  'title' => 'Plus Package',
20
  'id' => 'AAM_PLUS_PACKAGE',
@@ -22,7 +31,7 @@ class AAM_Extension_List {
22
  'description' => 'Manage access to your WordPress website posts, pages, media, custom post types, categories and hierarchical taxonomies for any role, individual user, visitors or even define default access for everybody; and do this separately for frontend, backend or API levels. As the bonus, define more granular access to how comments can be managed on the backend by other users.',
23
  'url' => 'https://aamplugin.com/extension/plus-package',
24
  'version' => (defined('AAM_PLUS_PACKAGE') ? constant('AAM_PLUS_PACKAGE') : null),
25
- 'latest' => '3.7.8'
26
  ),
27
  'AAM_IP_CHECK' => array(
28
  'title' => 'IP Check',
@@ -52,15 +61,6 @@ class AAM_Extension_List {
52
  'version' => (defined('AAM_ECOMMERCE') ? constant('AAM_ECOMMERCE') : null),
53
  'latest' => '1.2.1'
54
  ),
55
- 'AAM_COMPLETE_PACKAGE' => array(
56
- 'title' => 'Complete Package',
57
- 'id' => 'AAM_COMPLETE_PACKAGE',
58
- 'type' => 'commercial',
59
- 'description' => 'Get the complete list of all premium AAM extensions in one package and all future premium extensions already included for now additional cost.',
60
- 'url' => 'https://aamplugin.com/complete-package',
61
- 'version' => (defined('AAM_COMPLETE_PACKAGE') ? constant('AAM_COMPLETE_PACKAGE') : null),
62
- 'latest' => '3.8.5'
63
- ),
64
  'AAM_MULTISITE' => array(
65
  'title' => 'Multisite',
66
  'id' => 'AAM_MULTISITE',
15
  */
16
  public static function get() {
17
  return array(
18
+ 'AAM_COMPLETE_PACKAGE' => array(
19
+ 'title' => 'Complete Package',
20
+ 'id' => 'AAM_COMPLETE_PACKAGE',
21
+ 'type' => 'commercial',
22
+ 'description' => 'Get the complete list of all premium AAM extensions in one package and all future premium extensions already included for now additional cost.',
23
+ 'url' => 'https://aamplugin.com/complete-package',
24
+ 'version' => (defined('AAM_COMPLETE_PACKAGE') ? constant('AAM_COMPLETE_PACKAGE') : null),
25
+ 'latest' => '3.8.6'
26
+ ),
27
  'AAM_PLUS_PACKAGE' => array(
28
  'title' => 'Plus Package',
29
  'id' => 'AAM_PLUS_PACKAGE',
31
  'description' => 'Manage access to your WordPress website posts, pages, media, custom post types, categories and hierarchical taxonomies for any role, individual user, visitors or even define default access for everybody; and do this separately for frontend, backend or API levels. As the bonus, define more granular access to how comments can be managed on the backend by other users.',
32
  'url' => 'https://aamplugin.com/extension/plus-package',
33
  'version' => (defined('AAM_PLUS_PACKAGE') ? constant('AAM_PLUS_PACKAGE') : null),
34
+ 'latest' => '3.8'
35
  ),
36
  'AAM_IP_CHECK' => array(
37
  'title' => 'IP Check',
61
  'version' => (defined('AAM_ECOMMERCE') ? constant('AAM_ECOMMERCE') : null),
62
  'latest' => '1.2.1'
63
  ),
 
 
 
 
 
 
 
 
 
64
  'AAM_MULTISITE' => array(
65
  'title' => 'Multisite',
66
  'id' => 'AAM_MULTISITE',
Application/Extension/Repository.php CHANGED
@@ -327,21 +327,11 @@ class AAM_Extension_Repository {
327
  protected function isOutdatedVersion($item, $retrieved, $version) {
328
  $id = $item['id'];
329
 
330
- if ($item['type'] === 'commercial') {
331
- $valid = !empty($item['license']);
 
332
  } else {
333
- $valid = true;
334
- }
335
-
336
- $outdated = false;
337
-
338
- if ($valid) {
339
- // first check the retrieved version from the server
340
- if (isset($retrieved->$id)) {
341
- $outdated = version_compare($version, $retrieved->$id->version) === -1;
342
- } else {
343
- $outdated = version_compare($version, $item['latest']) === -1;
344
- }
345
  }
346
 
347
  return $outdated;
327
  protected function isOutdatedVersion($item, $retrieved, $version) {
328
  $id = $item['id'];
329
 
330
+ // first check the retrieved version from the server
331
+ if (isset($retrieved->$id)) {
332
+ $outdated = version_compare($version, $retrieved->$id->version) === -1;
333
  } else {
334
+ $outdated = version_compare($version, $item['latest']) === -1;
 
 
 
 
 
 
 
 
 
 
 
335
  }
336
 
337
  return $outdated;
Application/Frontend/Authorization.php CHANGED
@@ -98,7 +98,7 @@ class AAM_Frontend_Authorization {
98
  $read = $post->has('frontend.read');
99
  $others = $post->has('frontend.read_others');
100
 
101
- if ($read || ($others && ($post->post_author !== get_current_user_id()))) {
102
  $this->deny('post_read', 'frontend.read', $post->getPost());
103
  }
104
  }
98
  $read = $post->has('frontend.read');
99
  $others = $post->has('frontend.read_others');
100
 
101
+ if ($read || ($others && (intval($post->post_author) !== get_current_user_id()))) {
102
  $this->deny('post_read', 'frontend.read', $post->getPost());
103
  }
104
  }
Application/Frontend/Filter.php CHANGED
@@ -128,7 +128,7 @@ class AAM_Frontend_Filter {
128
  $others = $object->get('frontend.list_others');
129
  $list = $object->get('frontend.list');
130
 
131
- if (($others && ($object->post_author !== get_current_user_id())) || $list) {
132
  unset($pages[$i]);
133
  }
134
  }
@@ -161,7 +161,7 @@ class AAM_Frontend_Filter {
161
  $list = $object->get($area. '.list');
162
  $others = $object->get($area. '.list_others');
163
 
164
- if ($list || ($others && ($post->post_author !== get_current_user_id()))) {
165
  unset($pages[$i]);
166
  }
167
  }
128
  $others = $object->get('frontend.list_others');
129
  $list = $object->get('frontend.list');
130
 
131
+ if (($others && (intval($object->post_author) !== get_current_user_id())) || $list) {
132
  unset($pages[$i]);
133
  }
134
  }
161
  $list = $object->get($area. '.list');
162
  $others = $object->get($area. '.list_others');
163
 
164
+ if ($list || ($others && (intval($post->post_author) !== get_current_user_id()))) {
165
  unset($pages[$i]);
166
  }
167
  }
Application/Shared/Manager.php CHANGED
@@ -575,7 +575,7 @@ class AAM_Shared_Manager {
575
  protected function isActionAllowed($action, $object) {
576
  $edit = $object->has($action);
577
  $others = $object->has("{$action}_others");
578
- $author = ($object->post_author === get_current_user_id());
579
 
580
  return ($edit || ($others && !$author)) ? false : true;
581
  }
575
  protected function isActionAllowed($action, $object) {
576
  $edit = $object->has($action);
577
  $others = $object->has("{$action}_others");
578
+ $author = (intval($object->post_author) === get_current_user_id());
579
 
580
  return ($edit || ($others && !$author)) ? false : true;
581
  }
aam.php CHANGED
@@ -3,7 +3,7 @@
3
  /**
4
  Plugin Name: Advanced Access Manager
5
  Description: All you need to manage access to your WordPress website
6
- Version: 5.4.3.1
7
  Author: Vasyl Martyniuk <vasyl@vasyltech.com>
8
  Author URI: https://vasyltech.com
9
 
3
  /**
4
  Plugin Name: Advanced Access Manager
5
  Description: All you need to manage access to your WordPress website
6
+ Version: 5.4.3.2
7
  Author: Vasyl Martyniuk <vasyl@vasyltech.com>
8
  Author URI: https://vasyltech.com
9
 
media/js/aam.js CHANGED
@@ -138,7 +138,7 @@
138
  //initialize the role list table
139
  $('#role-list').DataTable({
140
  autoWidth: false,
141
- ordering: false,
142
  dom: 'ftrip',
143
  pagingType: 'simple',
144
  processing: true,
@@ -155,7 +155,8 @@
155
  }
156
  },
157
  columnDefs: [
158
- {visible: false, targets: [0, 1, 4, 5]}
 
159
  ],
160
  language: {
161
  search: '_INPUT_',
@@ -269,6 +270,14 @@
269
  }));
270
  }
271
  break;
 
 
 
 
 
 
 
 
272
 
273
  case 'clone':
274
  if (!getAAM().isUI()) {
@@ -285,6 +294,14 @@
285
  }));
286
  }
287
  break;
 
 
 
 
 
 
 
 
288
 
289
  case 'delete':
290
  if (!getAAM().isUI()) {
@@ -306,6 +323,14 @@
306
  }));
307
  }
308
  break;
 
 
 
 
 
 
 
 
309
 
310
  default:
311
  if (!getAAM().isUI()) {
@@ -333,8 +358,8 @@
333
  $('td:eq(0) strong', this).replaceWith(
334
  '<span>' + $('td:eq(0) strong', this).text() + '</span>'
335
  );
336
- $('.text-muted', this).attr('disabled', false);
337
- $('.text-muted', this).toggleClass('text-muted text-info');
338
  }
339
  });
340
  } );
@@ -624,7 +649,7 @@
624
  //initialize the user list table
625
  $('#user-list').DataTable({
626
  autoWidth: false,
627
- ordering: false,
628
  dom: 'ftrip',
629
  stateSave: true,
630
  pagingType: 'simple',
@@ -644,7 +669,8 @@
644
  }
645
  },
646
  columnDefs: [
647
- {visible: false, targets: [0, 1, 4, 5]}
 
648
  ],
649
  language: {
650
  search: '_INPUT_',
@@ -789,6 +815,14 @@
789
  }
790
  break;
791
 
 
 
 
 
 
 
 
 
792
  case 'edit':
793
  if (!getAAM().isUI()) {
794
  $(container).append($('<i/>', {
@@ -803,6 +837,14 @@
803
  }));
804
  }
805
  break;
 
 
 
 
 
 
 
 
806
 
807
  case 'lock':
808
  if (!getAAM().isUI()) {
@@ -842,6 +884,14 @@
842
  }));
843
  }
844
  break;
 
 
 
 
 
 
 
 
845
 
846
  default:
847
  break;
138
  //initialize the role list table
139
  $('#role-list').DataTable({
140
  autoWidth: false,
141
+ ordering: true,
142
  dom: 'ftrip',
143
  pagingType: 'simple',
144
  processing: true,
155
  }
156
  },
157
  columnDefs: [
158
+ {visible: false, targets: [0, 1, 4, 5]},
159
+ {orderable: false, targets: [0, 1, 3, 4, 5]}
160
  ],
161
  language: {
162
  search: '_INPUT_',
270
  }));
271
  }
272
  break;
273
+
274
+ case 'no-edit':
275
+ if (!getAAM().isUI()) {
276
+ $(container).append($('<i/>', {
277
+ 'class': 'aam-row-action icon-pencil text-muted'
278
+ }));
279
+ }
280
+ break;
281
 
282
  case 'clone':
283
  if (!getAAM().isUI()) {
294
  }));
295
  }
296
  break;
297
+
298
+ case 'no-clone':
299
+ if (!getAAM().isUI()) {
300
+ $(container).append($('<i/>', {
301
+ 'class': 'aam-row-action icon-clone text-muted'
302
+ }));
303
+ }
304
+ break;
305
 
306
  case 'delete':
307
  if (!getAAM().isUI()) {
323
  }));
324
  }
325
  break;
326
+
327
+ case 'no-delete':
328
+ if (!getAAM().isUI()) {
329
+ $(container).append($('<i/>', {
330
+ 'class': 'aam-row-action icon-trash-empty text-muted'
331
+ }));
332
+ }
333
+ break;
334
 
335
  default:
336
  if (!getAAM().isUI()) {
358
  $('td:eq(0) strong', this).replaceWith(
359
  '<span>' + $('td:eq(0) strong', this).text() + '</span>'
360
  );
361
+ $('.icon-cog.text-muted', this).attr('disabled', false);
362
+ $('.icon-cog.text-muted', this).toggleClass('text-muted text-info');
363
  }
364
  });
365
  } );
649
  //initialize the user list table
650
  $('#user-list').DataTable({
651
  autoWidth: false,
652
+ ordering: true,
653
  dom: 'ftrip',
654
  stateSave: true,
655
  pagingType: 'simple',
669
  }
670
  },
671
  columnDefs: [
672
+ {visible: false, targets: [0, 1, 4, 5]},
673
+ {orderable: false, targets: [0, 1, 3, 4, 5]}
674
  ],
675
  language: {
676
  search: '_INPUT_',
815
  }
816
  break;
817
 
818
+ case 'no-ttl':
819
+ if (!getAAM().isUI()) {
820
+ $(container).append($('<i/>', {
821
+ 'class': 'aam-row-action icon-clock text-muted'
822
+ }));
823
+ }
824
+ break;
825
+
826
  case 'edit':
827
  if (!getAAM().isUI()) {
828
  $(container).append($('<i/>', {
837
  }));
838
  }
839
  break;
840
+
841
+ case 'no-edit':
842
+ if (!getAAM().isUI()) {
843
+ $(container).append($('<i/>', {
844
+ 'class': 'aam-row-action icon-pencil text-muted'
845
+ }));
846
+ }
847
+ break;
848
 
849
  case 'lock':
850
  if (!getAAM().isUI()) {
884
  }));
885
  }
886
  break;
887
+
888
+ case 'no-switch':
889
+ if (!getAAM().isUI()) {
890
+ $(container).append($('<i/>', {
891
+ 'class': 'aam-row-action icon-switch text-muted'
892
+ }));
893
+ }
894
+ break;
895
 
896
  default:
897
  break;
readme.txt CHANGED
@@ -1,9 +1,9 @@
1
  === Advanced Access Manager ===
2
- Contributors: vasyltech
3
  Tags: access control, membership, backend menu, user role, restricted content
4
  Requires at least: 4.0
5
  Tested up to: 4.9.7
6
- Stable tag: 5.4.3.1
7
 
8
  All you need to manage access to you WordPress websites on frontend, backend and API levels for any role, user or visitors.
9
 
@@ -76,6 +76,14 @@ https://www.youtube.com/watch?v=mj5Xa_Wc16Y
76
 
77
  == Changelog ==
78
 
 
 
 
 
 
 
 
 
79
  = 5.4.3.1 =
80
  * Quick fix for the bug that is related to Posts & Terms
81
 
1
  === Advanced Access Manager ===
2
+ Contributors: vasyltech,noelalvarez
3
  Tags: access control, membership, backend menu, user role, restricted content
4
  Requires at least: 4.0
5
  Tested up to: 4.9.7
6
+ Stable tag: 5.4.3.2
7
 
8
  All you need to manage access to you WordPress websites on frontend, backend and API levels for any role, user or visitors.
9
 
76
 
77
  == Changelog ==
78
 
79
+ = 5.4.3.2 =
80
+ * Fixed bug that incorrectly checks post author property
81
+ * Fixed bug that does not allow to assign roles that contain apostrophe
82
+ * Fixed bug with incorrectly handled AAM Console messages that contain HTML
83
+ * Added ability to order roles by name
84
+ * Added ability to order users by display name
85
+ * Improved Users/Roles Manager UI
86
+
87
  = 5.4.3.1 =
88
  * Quick fix for the bug that is related to Posts & Terms
89