Capability Manager Enhanced - Version 1.5.4

Version Description

  • Fixed : Non-administrators' user editing capabilities were blocked if Press Permit Core was also active
    • Fixed : Non-administrators could not edit other users with their role (define constant CME_LEGACY_USER_EDIT_FILTER to retain previous behavior)
    • Fixed : Non-administrators could not assign their role to other users (define constant CME_LEGACY_USER_EDIT_FILTER to retain previous behavior)
    • Lang : Changed text domain for language pack conformance
Download this release

Release Info

Developer kevinB
Plugin Icon 128x128 Capability Manager Enhanced
Version 1.5.4
Comparing to
See all releases

Code changes from version 1.5.3 to 1.5.4

capsman-enhanced.php CHANGED
@@ -3,9 +3,11 @@
3
  Plugin Name: Capability Manager Enhanced
4
  Plugin URI: http://presspermit.com/capability-manager
5
  Description: Manage WordPress role definitions, per-site or network-wide. Organizes post capabilities by post type and operation.
6
- Version: 1.5.3
7
  Author: Jordi Canals, Kevin Behrens
8
  Author URI: http://agapetry.net
 
 
9
  */
10
 
11
  /**
@@ -32,12 +34,12 @@ Author URI: http://agapetry.net
32
  */
33
 
34
  if ( ! defined( 'CAPSMAN_VERSION' ) ) {
35
- define( 'CAPSMAN_VERSION', '1.5.3' );
36
- define( 'CAPSMAN_ENH_VERSION', '1.5.3' );
37
  }
38
 
39
  if ( cme_is_plugin_active( 'capsman.php' ) ) {
40
- $message = __( '<strong>Error:</strong> Capability Manager Extended cannot function because another copy of Capability Manager is active.', 'capsman' );
41
  add_action('admin_notices', create_function('', 'echo \'<div id="message" class="error fade" style="color: black">' . $message . '</div>\';'));
42
  return;
43
  } else {
@@ -53,12 +55,12 @@ if ( cme_is_plugin_active( 'capsman.php' ) ) {
53
  */
54
  function _cman_php_warning() {
55
  $data = get_plugin_data(__FILE__);
56
- load_plugin_textdomain('capsman', false, basename(dirname(__FILE__)) .'/lang');
57
 
58
- echo '<div class="error"><p><strong>' . __('Warning:', 'capsman') . '</strong> '
59
- . sprintf(__('The active plugin %s is not compatible with your PHP version.', 'capsman') .'</p><p>',
60
  '&laquo;' . $data['Name'] . ' ' . $data['Version'] . '&raquo;')
61
- . sprintf(__('%s is required for this plugin.', 'capsman'), 'PHP-5 ')
62
  . '</p></div>';
63
  }
64
 
@@ -88,7 +90,7 @@ if ( cme_is_plugin_active( 'capsman.php' ) ) {
88
  add_action( 'admin_enqueue_scripts', '_cme_pp_scripts' );
89
  }
90
  } else {
91
- load_plugin_textdomain('capsman', false, basename(dirname(__FILE__)) .'/lang');
92
  add_action( 'admin_menu', 'cme_submenus' );
93
  }
94
  }
@@ -109,20 +111,20 @@ function _cme_pp_scripts() {
109
 
110
  // perf enchancement: display submenu links without loading framework and plugin code
111
  function cme_submenus() {
112
- if ( defined('PP_ACTIVE') ) { // Press Permit integrates into Permissions menu
113
- add_action( 'pp_permissions_menu', '_cme_pp_menu' );
114
- } else {
115
- $menu_caption = ( defined('WPLANG') && WPLANG ) ? __('Capabilities', 'capsman') : 'Role Capabilities';
116
- add_users_page( __('Capability Manager', 'capsman'), $menu_caption, 'manage_capabilities', 'capsman', 'cme_fakefunc');
117
- }
118
-
119
  $cap_name = ( is_super_admin() ) ? 'manage_capabilities' : 'restore_roles';
120
- add_management_page(__('Capability Manager', 'capsman'), __('Capability Manager', 'capsman'), $cap_name, 'capsman' . '-tool', 'cme_fakefunc');
121
  }
122
 
123
- function _cme_pp_menu() {
124
- global $pp_admin;
125
- add_submenu_page( $pp_admin->get_menu('options'), __('Capability Manager', 'capsman'), __('Role Capabilities', 'capsman'), 'manage_capabilities', 'capsman', 'cme_fakefunc' );
 
 
 
 
 
126
  }
127
 
128
  function cme_is_plugin_active($check_plugin_file) {
3
  Plugin Name: Capability Manager Enhanced
4
  Plugin URI: http://presspermit.com/capability-manager
5
  Description: Manage WordPress role definitions, per-site or network-wide. Organizes post capabilities by post type and operation.
6
+ Version: 1.5.4
7
  Author: Jordi Canals, Kevin Behrens
8
  Author URI: http://agapetry.net
9
+ Text Domain: capsman-enhanced
10
+ Domain Path: /lang/
11
  */
12
 
13
  /**
34
  */
35
 
36
  if ( ! defined( 'CAPSMAN_VERSION' ) ) {
37
+ define( 'CAPSMAN_VERSION', '1.5.4' );
38
+ define( 'CAPSMAN_ENH_VERSION', '1.5.4' );
39
  }
40
 
41
  if ( cme_is_plugin_active( 'capsman.php' ) ) {
42
+ $message = __( '<strong>Error:</strong> Capability Manager Extended cannot function because another copy of Capability Manager is active.', 'capsman-enhanced' );
43
  add_action('admin_notices', create_function('', 'echo \'<div id="message" class="error fade" style="color: black">' . $message . '</div>\';'));
44
  return;
45
  } else {
55
  */
56
  function _cman_php_warning() {
57
  $data = get_plugin_data(__FILE__);
58
+ load_plugin_textdomain('capsman-enhanced', false, basename(dirname(__FILE__)) .'/lang');
59
 
60
+ echo '<div class="error"><p><strong>' . __('Warning:', 'capsman-enhanced') . '</strong> '
61
+ . sprintf(__('The active plugin %s is not compatible with your PHP version.', 'capsman-enhanced') .'</p><p>',
62
  '&laquo;' . $data['Name'] . ' ' . $data['Version'] . '&raquo;')
63
+ . sprintf(__('%s is required for this plugin.', 'capsman-enhanced'), 'PHP-5 ')
64
  . '</p></div>';
65
  }
66
 
90
  add_action( 'admin_enqueue_scripts', '_cme_pp_scripts' );
91
  }
92
  } else {
93
+ load_plugin_textdomain('capsman-enhanced', false, basename(dirname(__FILE__)) .'/lang');
94
  add_action( 'admin_menu', 'cme_submenus' );
95
  }
96
  }
111
 
112
  // perf enchancement: display submenu links without loading framework and plugin code
113
  function cme_submenus() {
114
+ add_action( 'admin_menu', '_cme_menu_item', 20 );
115
+
 
 
 
 
 
116
  $cap_name = ( is_super_admin() ) ? 'manage_capabilities' : 'restore_roles';
117
+ add_management_page(__('Capability Manager', 'capsman-enhanced'), __('Capability Manager', 'capsman-enhanced'), $cap_name, 'capsman' . '-tool', 'cme_fakefunc');
118
  }
119
 
120
+ function _cme_menu_item() {
121
+ if ( did_action( 'pp_admin_menu' ) ) { // Put Capabilities link on Permissions menu if Press Permit is active and user has access to it
122
+ global $pp_admin;
123
+ add_submenu_page( $pp_admin->get_menu('options'), __('Capability Manager', 'capsman-enhanced'), __('Role Capabilities', 'capsman-enhanced'), 'manage_capabilities', 'capsman', 'cme_fakefunc' );
124
+ } else {
125
+ $menu_caption = ( defined('WPLANG') && WPLANG ) ? __('Capabilities', 'capsman-enhanced') : 'Role Capabilities';
126
+ add_users_page( __('Capability Manager', 'capsman-enhanced'), $menu_caption, 'manage_capabilities', 'capsman', 'cme_fakefunc');
127
+ }
128
  }
129
 
130
  function cme_is_plugin_active($check_plugin_file) {
framework/classes/abstract/plugin.php CHANGED
@@ -176,7 +176,7 @@ abstract class akPluginAbstract
176
  */
177
  final function pluginsInit ()
178
  {
179
- load_plugin_textdomain($this->ID, false, basename(dirname($this->mod_file)) . '/lang');
180
  }
181
 
182
  /**
@@ -221,12 +221,12 @@ abstract class akPluginAbstract
221
  $url = $this->mod_url . "/admin{$suffix}.js";
222
  wp_enqueue_script( 'cme_admin', $url, array('jquery'), CAPSMAN_VERSION, true );
223
  wp_localize_script( 'cme_admin', 'cmeAdmin', array(
224
- 'negationCaption' => __( 'Explicity negate this capability by storing as disabled', 'capsman' ),
225
- 'typeCapsNegationCaption' => __( 'Explicitly negate these capabilities by storing as disabled', 'capsman' ),
226
- 'typeCapUnregistered' => __( 'Post type registration does not define this capability distinctly', 'capsman' ),
227
- 'capNegated' => __( 'This capability is explicitly negated. Click to add/remove normally.', 'capsman' ),
228
- 'chkCaption' => __( 'Add or remove this capability from the WordPress role', 'capsman' ),
229
- 'switchableCaption' => __( 'Add or remove capability from the role normally', 'capsman' ) )
230
  );
231
  }
232
 
176
  */
177
  final function pluginsInit ()
178
  {
179
+ load_plugin_textdomain('capsman-enhanced', false, basename(dirname($this->mod_file)) . '/lang');
180
  }
181
 
182
  /**
221
  $url = $this->mod_url . "/admin{$suffix}.js";
222
  wp_enqueue_script( 'cme_admin', $url, array('jquery'), CAPSMAN_VERSION, true );
223
  wp_localize_script( 'cme_admin', 'cmeAdmin', array(
224
+ 'negationCaption' => __( 'Explicity negate this capability by storing as disabled', 'capsman-enhanced' ),
225
+ 'typeCapsNegationCaption' => __( 'Explicitly negate these capabilities by storing as disabled', 'capsman-enhanced' ),
226
+ 'typeCapUnregistered' => __( 'Post type registration does not define this capability distinctly', 'capsman-enhanced' ),
227
+ 'capNegated' => __( 'This capability is explicitly negated. Click to add/remove normally.', 'capsman-enhanced' ),
228
+ 'chkCaption' => __( 'Add or remove this capability from the WordPress role', 'capsman-enhanced' ),
229
+ 'switchableCaption' => __( 'Add or remove capability from the role normally', 'capsman-enhanced' ) )
230
  );
231
  }
232
 
framework/lib/formating.php CHANGED
@@ -37,7 +37,7 @@ function ak_admin_notify( $message = '' )
37
  {
38
  if ( is_admin() ) {
39
  if ( empty($message) ) {
40
- $message = __('Settings saved.', 'akfw');
41
  }
42
  echo '<div id="message" class="updated fade"><p><strong>' . $message . '</strong></p></div>';
43
  }
37
  {
38
  if ( is_admin() ) {
39
  if ( empty($message) ) {
40
+ $message = __('Settings saved.', 'capsman-enhanced');
41
  }
42
  echo '<div id="message" class="updated fade"><p><strong>' . $message . '</strong></p></div>';
43
  }
framework/lib/themes-agapetry.php CHANGED
@@ -6,11 +6,11 @@ function agp_admin_authoring( $mod_id = '' ) {
6
  <dt>Capability Manager</dt>
7
  <dd>
8
  <ul>
9
- <li><a href="http://agapetry.com" class="capsman" target="_blank"><?php _e('Plugin Homepage', 'capsman'); ?></a></li>
10
- <li><a href="http://presspermit.com" class="docs" target="_blank"><?php _e('Documentation', 'capsman'); ?></a></li>
11
- <li><a href="http://agapetry.net/forum" class="help" target="_blank"><?php _e('Support Forum', 'capsman'); ?></a></li>
12
- <li><a href="http://agapetry.com" class="home" target="_blank"><?php _e('Author Homepage', 'capsman')?></a></li>
13
- <li><a href="http://agapetry.com" class="donate" target="_blank"><?php _e('Help donating', 'capsman')?></a></li>
14
  </ul>
15
  </dd>
16
  </dl>
@@ -20,11 +20,11 @@ function agp_admin_authoring( $mod_id = '' ) {
20
  function agp_admin_footer( $mod_id = '' ) {
21
  ?>
22
  <p class="footer">
23
- <a href="http://wordpress.org/extend/plugins/capability-manager-enhanced"><?php printf( __( 'Capability Manager Enhanced %s', 'capsman' ), CAPSMAN_ENH_VERSION );?></a>
24
- &nbsp;&nbsp;|&nbsp;&nbsp;&copy; <?php _e( 'Copyright 2010 Jordi Canals', 'capsman' );?>
25
  &nbsp;&nbsp;|&nbsp;&nbsp;
26
  <?php
27
- printf( __( 'Modifications &copy; Copyright %1$s %2$s', 'capsman' ), '2012-2015', '<a href="http://agapetry.com">Kevin Behrens</a>' );?>
28
  </p>
29
  <?php
30
  }
6
  <dt>Capability Manager</dt>
7
  <dd>
8
  <ul>
9
+ <li><a href="http://agapetry.com" class="capsman" target="_blank"><?php _e('Plugin Homepage', 'capsman-enhanced'); ?></a></li>
10
+ <li><a href="http://presspermit.com" class="docs" target="_blank"><?php _e('Documentation', 'capsman-enhanced'); ?></a></li>
11
+ <li><a href="http://agapetry.net/forum" class="help" target="_blank"><?php _e('Support Forum', 'capsman-enhanced'); ?></a></li>
12
+ <li><a href="http://agapetry.com" class="home" target="_blank"><?php _e('Author Homepage', 'capsman-enhanced')?></a></li>
13
+ <li><a href="http://agapetry.com" class="donate" target="_blank"><?php _e('Help donating', 'capsman-enhanced')?></a></li>
14
  </ul>
15
  </dd>
16
  </dl>
20
  function agp_admin_footer( $mod_id = '' ) {
21
  ?>
22
  <p class="footer">
23
+ <a href="http://wordpress.org/extend/plugins/capability-manager-enhanced"><?php printf( __( 'Capability Manager Enhanced %s', 'capsman-enhanced' ), CAPSMAN_ENH_VERSION );?></a>
24
+ &nbsp;&nbsp;|&nbsp;&nbsp;&copy; <?php _e( 'Copyright 2010 Jordi Canals', 'capsman-enhanced' );?>
25
  &nbsp;&nbsp;|&nbsp;&nbsp;
26
  <?php
27
+ printf( __( 'Modifications &copy; Copyright %1$s %2$s', 'capsman-enhanced' ), '2012-2015', '<a href="http://agapetry.com">Kevin Behrens</a>' );?>
28
  </p>
29
  <?php
30
  }
includes/admin.php CHANGED
@@ -47,7 +47,7 @@ if( defined('PP_ACTIVE') ) {
47
  <div id="icon-capsman-admin" class="icon32"></div>
48
  <?php endif; ?>
49
 
50
- <h2 <?php echo $style;?>><?php _e('Roles and Capabilities', $this->ID) ?></h2>
51
 
52
  <form method="post" action="admin.php?page=<?php echo $this->ID ?>">
53
  <?php wp_nonce_field('capsman-general-manager'); ?>
@@ -56,10 +56,10 @@ if( defined('PP_ACTIVE') ) {
56
  <tr>
57
  <td class="content">
58
  <dl>
59
- <dt><?php printf(__('Capabilities for %s', $this->ID), $roles[$default]); ?></dt>
60
  <dd>
61
  <div>
62
- <?php _e( 'View and modify capabilities WordPress associates with each role. Changes <strong>remain in the database</strong> even if you deactivate this plugin.', $this->ID ); ?>
63
  </div>
64
 
65
  <?php
@@ -68,10 +68,9 @@ if( defined('PP_ACTIVE') ) {
68
  } else {
69
  global $capsman;
70
  $img_url = $capsman->mod_url . '/images/';
71
- $lang_id = $this->ID;
72
 
73
  echo '<div style="margin-top:5px">';
74
- _e( "To further customize editing or viewing access, consider stepping up to <a href='#pp-more'>Press Permit</a>.", $this->ID );
75
  echo '</div>';
76
  ?>
77
  <script type="text/javascript">
@@ -102,63 +101,63 @@ if( defined('PP_ACTIVE') ) {
102
 
103
  <br /><div id="pp_features"><div class="pp-logo"><a href="http://presspermit.com"><img src="<?php echo $img_url;?>pp-logo.png" /></a></div><div class="features-wrap"><ul class="pp-features">
104
  <li>
105
- <?php _e( "Automatically define type-specific capabilities for your custom post types and taxonomies", $lang_id );?>
106
  <a href="http://presspermit.com/tutorial/regulate-post-type-access" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
107
 
108
  <li>
109
- <?php _e( "Assign standard WP roles supplementally for a specific post type", $lang_id );?>
110
  <a href="http://presspermit.com/tutorial/regulate-post-type-access" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
111
 
112
  <li>
113
- <?php _e( "Assign custom WP roles supplementally for a specific post type <em>(Pro)</em>", $lang_id );?>
114
  <a href="http://presspermit.com/tutorial/custom-role-usage" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
115
 
116
  <li>
117
- <?php _e( "Customize reading permissions per-category or per-post", $lang_id );?>
118
  <a href="http://presspermit.com/tutorial/category-exceptions" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
119
 
120
  <li>
121
- <?php _e( "Customize editing permissions per-category or per-post <em>(Pro)</em>", $lang_id );?>
122
  <a href="http://presspermit.com/tutorial/page-editing-exceptions" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
123
 
124
  <li>
125
- <?php _e( "Custom Post Visibility statuses, fully implemented throughout wp-admin <em>(Pro)</em>", $lang_id );?>
126
  <a href="http://presspermit.com/tutorial/custom-post-visibility" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
127
 
128
  <li>
129
- <?php _e( "Custom Moderation statuses for access-controlled, multi-step publishing workflow <em>(Pro)</em>", $lang_id );?>
130
  <a href="http://presspermit.com/tutorial/multi-step-moderation" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
131
 
132
  <li>
133
- <?php _e( "Regulate permissions for Edit Flow post statuses <em>(Pro)</em>", $lang_id );?>
134
  <a href="http://presspermit.com/tutorial/edit-flow-integration" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
135
 
136
  <li>
137
- <?php _e( "Customize the moderated editing of published content with Revisionary or Post Forking <em>(Pro)</em>", $lang_id );?>
138
  <a href="http://presspermit.com/tutorial/published-content-revision" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
139
 
140
  <li>
141
- <?php _e( "Grant Spectator, Participant or Moderator access to specific bbPress forums <em>(Pro)</em>", $lang_id );?>
142
  <a href="http://presspermit.com/tutorial/bbpress-exceptions" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
143
 
144
  <li>
145
- <?php _e( "Grant supplemental content permissions to a BuddyPress group <em>(Pro)</em>", $lang_id );?>
146
  <a href="http://presspermit.com/tutorial/buddypress-content-permissions" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
147
 
148
  <li>
149
- <?php _e( "WPML integration to mirror permissions to translations <em>(Pro)</em>", $lang_id );?>
150
  </li>
151
 
152
  <li>
153
- <?php _e( "Member support forum", $lang_id );?>
154
  </li>
155
 
156
  </ul></div>
157
  <?php
158
  echo '<div>';
159
- printf( __('%1$sgrab%2$s %3$s', 'capsman'), '<strong>', '</strong>', '<span class="plugins update-message"><a href="' . cme_plugin_info_url('press-permit-core') . '" class="thickbox" title="' . sprintf( __('%s (free install)', 'capsman'), 'Press Permit Core' ) . '">Press&nbsp;Permit&nbsp;Core</a></span>' );
160
  echo '&nbsp;&nbsp;&bull;&nbsp;&nbsp;';
161
- printf( __('%1$sbuy%2$s %3$s', 'capsman'), '<strong>', '</strong>', '<a href="http://presspermit.com" target="_blank" title="' . sprintf( __('%s info/purchase', 'capsman'), 'Press Permit Pro' ) . '">Press&nbsp;Permit&nbsp;Pro</a>' );
162
  echo '&nbsp;&nbsp;&bull;&nbsp;&nbsp;';
163
  echo '<a href="#pp-hide">hide</a>';
164
  echo '</div></div>';
@@ -240,10 +239,10 @@ if( defined('PP_ACTIVE') ) {
240
 
241
  //if ( count($stati) > 5 ) {
242
  $cap_type_names = array(
243
- '' => __( '&nbsp;', $this->ID ),
244
- 'read' => __( 'Reading', $this->ID ),
245
- 'edit' => __( 'Editing Capabilities', $this->ID ),
246
- 'delete' => __( 'Deletion Capabilities', $this->ID )
247
  );
248
 
249
  //} else {
@@ -251,16 +250,16 @@ if( defined('PP_ACTIVE') ) {
251
  //}
252
 
253
  $cap_tips = array(
254
- 'read_private' => __( 'can read posts which are currently published with private visibility', $this->ID ),
255
- 'edit' => __( 'has basic editing capability (but may need other capabilities based on post status and ownership)', $this->ID ),
256
- 'edit_others' => __( 'can edit posts which were created by other users', $this->ID ),
257
- 'edit_published' => __( 'can edit posts which are currently published', $this->ID ),
258
- 'edit_private' => __( 'can edit posts which are currently published with private visibility', $this->ID ),
259
- 'publish' => __( 'can make a post publicly visible', $this->ID ),
260
- 'delete' => __( 'has basic deletion capability (but may need other capabilities based on post status and ownership)', $this->ID ),
261
- 'delete_others' => __( 'can delete posts which were created by other users', $this->ID ),
262
- 'delete_published' => __( 'can delete posts which are currently published', $this->ID ),
263
- 'delete_private' => __( 'can delete posts which are currently published with private visibility', $this->ID ),
264
  );
265
 
266
  $default_caps = array( 'read_private_posts', 'edit_posts', 'edit_others_posts', 'edit_published_posts', 'edit_private_posts', 'publish_posts', 'delete_posts', 'delete_others_posts', 'delete_published_posts', 'delete_private_posts',
@@ -359,7 +358,7 @@ if( defined('PP_ACTIVE') ) {
359
 
360
  if ( $is_administrator || current_user_can($cap_name) ) {
361
  if ( ! empty($pp_metagroup_caps[$cap_name]) ) {
362
- $title_text = sprintf( __( '%s: assigned by Permission Group', 'capsman' ), $cap_name );
363
  } else {
364
  $title_text = $cap_name;
365
  }
@@ -428,7 +427,7 @@ if( defined('PP_ACTIVE') ) {
428
 
429
  ksort( $core_caps );
430
 
431
- echo '<p>&nbsp;</p><h3>' . __( 'Other WordPress Core Capabilities', $this->ID ) . '</h3>';
432
  echo '<table width="100%" class="form-table cme-checklist"><tr>';
433
 
434
 
@@ -451,7 +450,7 @@ if( defined('PP_ACTIVE') ) {
451
 
452
  if ( ! empty($pp_metagroup_caps[$cap_name]) ) {
453
  $class .= ' cap-metagroup';
454
- $title_text = sprintf( __( '%s: assigned by Permission Group', 'capsman' ), $cap_name );
455
  } else {
456
  $title_text = $cap_name;
457
  }
@@ -489,14 +488,14 @@ if( defined('PP_ACTIVE') ) {
489
  <tr class="cme-bulk-select">
490
  <td colspan="<?php echo $checks_per_row;?>">
491
  <span style="float:right">
492
- <input type="checkbox" class="cme-check-all" title="<?php _e('check/uncheck all', 'capsman');?>">&nbsp;&nbsp;<a class="cme-neg-all" href="#" title="<?php _e('negate all (storing as disabled capabilities)', 'capsman');?>">X</a> <a class="cme-switch-all" href="#" title="<?php _e('negate none (add/remove all capabilities normally)', 'capsman');?>">X</a>
493
  </span>
494
  </td></tr>
495
 
496
  </table>
497
 
498
  <?php
499
- echo '<p>&nbsp;</p><h3>' . __( 'Additional Capabilities', $this->ID ) . '</h3>';
500
 
501
  ?>
502
  <table width='100%' class="form-table cme-checklist">
@@ -540,7 +539,7 @@ if( defined('PP_ACTIVE') ) {
540
 
541
  if ( ! empty($pp_metagroup_caps[$cap_name]) ) {
542
  $class .= ' cap-metagroup';
543
- $title_text = sprintf( __( '%s: assigned by Permission Group', 'capsman' ), $cap_name );
544
  } else {
545
  $title_text = $cap_name;
546
  }
@@ -596,7 +595,7 @@ if( defined('PP_ACTIVE') ) {
596
  <?php
597
  $level = ak_caps2level($rcaps);
598
  ?>
599
- <?php _e('Level:', $this->ID) ;?><select name="level">
600
  <?php for ( $l = $this->max_level; $l >= 0; $l-- ) {?>
601
  <option value="<?php echo $l; ?>" style="text-align:right;"<?php selected($level, $l); ?>>&nbsp;<?php echo $l; ?>&nbsp;</option>
602
  <?php }
@@ -605,7 +604,7 @@ if( defined('PP_ACTIVE') ) {
605
  </span>
606
 
607
  <span style="float:right">
608
- <input type="checkbox" class="cme-check-all" title="<?php _e('check/uncheck all', 'capsman');?>">&nbsp;&nbsp;<a class="cme-neg-all" href="#" title="<?php _e('negate all (storing as disabled capabilities)', 'capsman');?>">X</a> <a class="cme-switch-all" href="#" title="<?php _e('negate none (add/remove all capabilities normally)', 'capsman');?>">X</a>
609
  </span>
610
  </td></tr>
611
 
@@ -614,7 +613,7 @@ if( defined('PP_ACTIVE') ) {
614
  <br />
615
  <?php if ( ! defined('PP_ACTIVE') || pp_get_option('display_hints') ) :?>
616
  <div class="cme-subtext">
617
- <?php _e( 'Note: Underscores replace spaces in stored capability name ("edit users" => "edit_users").', 'capsman' ); ?>
618
  </div>
619
  <?php endif;?>
620
  </span>
@@ -630,10 +629,10 @@ if( defined('PP_ACTIVE') ) {
630
  <p class="submit">
631
  <input type="hidden" name="action" value="update" />
632
  <input type="hidden" name="current" value="<?php echo $default; ?>" />
633
- <input type="submit" name="SaveRole" value="<?php _e('Save Changes', $this->ID) ?>" class="button-primary" /> &nbsp;
634
 
635
  <?php if ( current_user_can('administrator') && 'administrator' != $default ) : ?>
636
- <a class="ak-delete" title="<?php echo esc_attr(__('Delete this role', $this->ID)) ?>" href="<?php echo wp_nonce_url("admin.php?page={$this->ID}&amp;action=delete&amp;role={$default}", 'delete-role_' . $default); ?>" onclick="if ( confirm('<?php echo esc_js(sprintf(__("You are about to delete the %s role.\n 'Cancel' to stop, 'OK' to delete.", $this->ID), $roles[$default])); ?>') ) { return true;}return false;"><?php _e('Delete Role', $this->ID)?></a>
637
  <?php endif; ?>
638
  </p>
639
 
@@ -646,7 +645,7 @@ if( defined('PP_ACTIVE') ) {
646
  <?php agp_admin_authoring($this->ID); ?>
647
 
648
  <dl>
649
- <dt><?php if ( defined('WPLANG') && WPLANG ) _e('Select New Role', $this->ID); else echo('Select Role to View / Edit'); ?></dt>
650
  <dd style="text-align:center;">
651
  <p><select name="role">
652
  <?php
@@ -654,47 +653,47 @@ if( defined('PP_ACTIVE') ) {
654
  echo '<option value="' . $role .'"'; selected($default, $role); echo '> ' . $name . ' &nbsp;</option>';
655
  }
656
  ?>
657
- </select><span style="margin-left:20px"><input type="submit" name="LoadRole" value="<?php if ( defined('WPLANG') && WPLANG ) _e('Change', $this->ID); else echo('Load'); ?>" class="button" /></span></p>
658
  </dd>
659
  </dl>
660
 
661
  <dl>
662
- <dt><?php _e('Create New Role', $this->ID); ?></dt>
663
  <dd style="text-align:center;">
664
  <?php $class = ( $support_pp_only_roles ) ? 'tight-text' : 'regular-text'; ?>
665
- <p><input type="text" name="create-name"" class="<?php echo $class;?>" placeholder="<?php _e('Name of new role', $this->ID) ?>" />
666
 
667
  <?php if( $support_pp_only_roles ) : ?>
668
- <label for="new_role_pp_only" title="<?php _e('Make role available for supplemental assignment to Permission Groups only', 'capsman');?>"> <input type="checkbox" name="new_role_pp_only" id="new_role_pp_only" value="1"> <?php _e('hidden', 'capsman'); ?> </label>
669
  <?php endif; ?>
670
 
671
  <br />
672
- <input type="submit" name="CreateRole" value="<?php _e('Create', $this->ID) ?>" class="button" />
673
  </p>
674
  </dd>
675
  </dl>
676
 
677
  <dl>
678
- <dt><?php defined('WPLANG') && WPLANG ? _e('Copy this role to', $this->ID) : printf( 'Copy %s Role', $roles[$default] ); ?></dt>
679
  <dd style="text-align:center;">
680
  <?php $class = ( $support_pp_only_roles ) ? 'tight-text' : 'regular-text'; ?>
681
- <p><input type="text" name="copy-name" class="<?php echo $class;?>" placeholder="<?php _e('Name of copied role', $this->ID) ?>" />
682
 
683
  <?php if( $support_pp_only_roles ) : ?>
684
- <label for="copy_role_pp_only" title="<?php _e('Make role available for supplemental assignment to Permission Groups only', 'capsman');?>"> <input type="checkbox" name="copy_role_pp_only" id="copy_role_pp_only" value="1"> <?php _e('hidden', 'capsman'); ?> </label>
685
  <?php endif; ?>
686
 
687
  <br />
688
- <input type="submit" name="CopyRole" value="<?php _e('Copy', $this->ID) ?>" class="button" />
689
  </p>
690
  </dd>
691
  </dl>
692
 
693
  <dl>
694
- <dt><?php _e('Add Capability', $this->ID); ?></dt>
695
  <dd style="text-align:center;">
696
- <p><input type="text" name="capability-name" class="regular-text" placeholder="<?php _e('capability name', $this->ID) ?>" /><br />
697
- <input type="submit" name="AddCap" value="<?php _e('Add to role', $this->ID) ?>" class="button" /></p>
698
  </dd>
699
  </dl>
700
 
@@ -722,10 +721,10 @@ function cme_network_role_ui( $default ) {
722
  $checked = ( in_array( $default, $autocreate_roles ) ) ? 'checked="checked"': '';
723
  ?>
724
  <div style="margin-bottom: 5px">
725
- <label for="cme_autocreate_role" title="<?php _e('Create this role definition in new (future) sites', 'capsman');?>"><input type="checkbox" name="cme_autocreate_role" id="cme_autocreate_role" value="1" <?php echo $checked;?>> <?php _e('include in new sites', 'capsman'); ?> </label>
726
  </div>
727
  <div>
728
- <label for="cme_net_sync_role" title="<?php echo esc_attr(__('Copy / update this role definition to all sites now', 'capsman'));?>"><input type="checkbox" name="cme_net_sync_role" id="cme_net_sync_role" value="1"> <?php _e('sync role to all sites now', 'capsman'); ?> </label>
729
  </div>
730
  </div>
731
  <?php
47
  <div id="icon-capsman-admin" class="icon32"></div>
48
  <?php endif; ?>
49
 
50
+ <h2 <?php echo $style;?>><?php _e('Roles and Capabilities', 'capsman-enhanced') ?></h2>
51
 
52
  <form method="post" action="admin.php?page=<?php echo $this->ID ?>">
53
  <?php wp_nonce_field('capsman-general-manager'); ?>
56
  <tr>
57
  <td class="content">
58
  <dl>
59
+ <dt><?php printf(__('Capabilities for %s', 'capsman-enhanced'), $roles[$default]); ?></dt>
60
  <dd>
61
  <div>
62
+ <?php _e( 'View and modify capabilities WordPress associates with each role. Changes <strong>remain in the database</strong> even if you deactivate this plugin.', 'capsman-enhanced' ); ?>
63
  </div>
64
 
65
  <?php
68
  } else {
69
  global $capsman;
70
  $img_url = $capsman->mod_url . '/images/';
 
71
 
72
  echo '<div style="margin-top:5px">';
73
+ _e( "To further customize editing or viewing access, consider stepping up to <a href='#pp-more'>Press Permit</a>.", 'capsman-enhanced' );
74
  echo '</div>';
75
  ?>
76
  <script type="text/javascript">
101
 
102
  <br /><div id="pp_features"><div class="pp-logo"><a href="http://presspermit.com"><img src="<?php echo $img_url;?>pp-logo.png" /></a></div><div class="features-wrap"><ul class="pp-features">
103
  <li>
104
+ <?php _e( "Automatically define type-specific capabilities for your custom post types and taxonomies", 'capsman-enhanced' );?>
105
  <a href="http://presspermit.com/tutorial/regulate-post-type-access" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
106
 
107
  <li>
108
+ <?php _e( "Assign standard WP roles supplementally for a specific post type", 'capsman-enhanced' );?>
109
  <a href="http://presspermit.com/tutorial/regulate-post-type-access" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
110
 
111
  <li>
112
+ <?php _e( "Assign custom WP roles supplementally for a specific post type <em>(Pro)</em>", 'capsman-enhanced' );?>
113
  <a href="http://presspermit.com/tutorial/custom-role-usage" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
114
 
115
  <li>
116
+ <?php _e( "Customize reading permissions per-category or per-post", 'capsman-enhanced' );?>
117
  <a href="http://presspermit.com/tutorial/category-exceptions" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
118
 
119
  <li>
120
+ <?php _e( "Customize editing permissions per-category or per-post <em>(Pro)</em>", 'capsman-enhanced' );?>
121
  <a href="http://presspermit.com/tutorial/page-editing-exceptions" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
122
 
123
  <li>
124
+ <?php _e( "Custom Post Visibility statuses, fully implemented throughout wp-admin <em>(Pro)</em>", 'capsman-enhanced' );?>
125
  <a href="http://presspermit.com/tutorial/custom-post-visibility" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
126
 
127
  <li>
128
+ <?php _e( "Custom Moderation statuses for access-controlled, multi-step publishing workflow <em>(Pro)</em>", 'capsman-enhanced' );?>
129
  <a href="http://presspermit.com/tutorial/multi-step-moderation" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
130
 
131
  <li>
132
+ <?php _e( "Regulate permissions for Edit Flow post statuses <em>(Pro)</em>", 'capsman-enhanced' );?>
133
  <a href="http://presspermit.com/tutorial/edit-flow-integration" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
134
 
135
  <li>
136
+ <?php _e( "Customize the moderated editing of published content with Revisionary or Post Forking <em>(Pro)</em>", 'capsman-enhanced' );?>
137
  <a href="http://presspermit.com/tutorial/published-content-revision" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
138
 
139
  <li>
140
+ <?php _e( "Grant Spectator, Participant or Moderator access to specific bbPress forums <em>(Pro)</em>", 'capsman-enhanced' );?>
141
  <a href="http://presspermit.com/tutorial/bbpress-exceptions" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
142
 
143
  <li>
144
+ <?php _e( "Grant supplemental content permissions to a BuddyPress group <em>(Pro)</em>", 'capsman-enhanced' );?>
145
  <a href="http://presspermit.com/tutorial/buddypress-content-permissions" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
146
 
147
  <li>
148
+ <?php _e( "WPML integration to mirror permissions to translations <em>(Pro)</em>", 'capsman-enhanced' );?>
149
  </li>
150
 
151
  <li>
152
+ <?php _e( "Member support forum", 'capsman-enhanced' );?>
153
  </li>
154
 
155
  </ul></div>
156
  <?php
157
  echo '<div>';
158
+ printf( __('%1$sgrab%2$s %3$s', 'capsman-enhanced'), '<strong>', '</strong>', '<span class="plugins update-message"><a href="' . cme_plugin_info_url('press-permit-core') . '" class="thickbox" title="' . sprintf( __('%s (free install)', 'capsman-enhanced'), 'Press Permit Core' ) . '">Press&nbsp;Permit&nbsp;Core</a></span>' );
159
  echo '&nbsp;&nbsp;&bull;&nbsp;&nbsp;';
160
+ printf( __('%1$sbuy%2$s %3$s', 'capsman-enhanced'), '<strong>', '</strong>', '<a href="http://presspermit.com" target="_blank" title="' . sprintf( __('%s info/purchase', 'capsman-enhanced'), 'Press Permit Pro' ) . '">Press&nbsp;Permit&nbsp;Pro</a>' );
161
  echo '&nbsp;&nbsp;&bull;&nbsp;&nbsp;';
162
  echo '<a href="#pp-hide">hide</a>';
163
  echo '</div></div>';
239
 
240
  //if ( count($stati) > 5 ) {
241
  $cap_type_names = array(
242
+ '' => __( '&nbsp;', 'capsman-enhanced' ),
243
+ 'read' => __( 'Reading', 'capsman-enhanced' ),
244
+ 'edit' => __( 'Editing Capabilities', 'capsman-enhanced' ),
245
+ 'delete' => __( 'Deletion Capabilities', 'capsman-enhanced' )
246
  );
247
 
248
  //} else {
250
  //}
251
 
252
  $cap_tips = array(
253
+ 'read_private' => __( 'can read posts which are currently published with private visibility', 'capsman-enhanced' ),
254
+ 'edit' => __( 'has basic editing capability (but may need other capabilities based on post status and ownership)', 'capsman-enhanced' ),
255
+ 'edit_others' => __( 'can edit posts which were created by other users', 'capsman-enhanced' ),
256
+ 'edit_published' => __( 'can edit posts which are currently published', 'capsman-enhanced' ),
257
+ 'edit_private' => __( 'can edit posts which are currently published with private visibility', 'capsman-enhanced' ),
258
+ 'publish' => __( 'can make a post publicly visible', 'capsman-enhanced' ),
259
+ 'delete' => __( 'has basic deletion capability (but may need other capabilities based on post status and ownership)', 'capsman-enhanced' ),
260
+ 'delete_others' => __( 'can delete posts which were created by other users', 'capsman-enhanced' ),
261
+ 'delete_published' => __( 'can delete posts which are currently published', 'capsman-enhanced' ),
262
+ 'delete_private' => __( 'can delete posts which are currently published with private visibility', 'capsman-enhanced' ),
263
  );
264
 
265
  $default_caps = array( 'read_private_posts', 'edit_posts', 'edit_others_posts', 'edit_published_posts', 'edit_private_posts', 'publish_posts', 'delete_posts', 'delete_others_posts', 'delete_published_posts', 'delete_private_posts',
358
 
359
  if ( $is_administrator || current_user_can($cap_name) ) {
360
  if ( ! empty($pp_metagroup_caps[$cap_name]) ) {
361
+ $title_text = sprintf( __( '%s: assigned by Permission Group', 'capsman-enhanced' ), $cap_name );
362
  } else {
363
  $title_text = $cap_name;
364
  }
427
 
428
  ksort( $core_caps );
429
 
430
+ echo '<p>&nbsp;</p><h3>' . __( 'Other WordPress Core Capabilities', 'capsman-enhanced' ) . '</h3>';
431
  echo '<table width="100%" class="form-table cme-checklist"><tr>';
432
 
433
 
450
 
451
  if ( ! empty($pp_metagroup_caps[$cap_name]) ) {
452
  $class .= ' cap-metagroup';
453
+ $title_text = sprintf( __( '%s: assigned by Permission Group', 'capsman-enhanced' ), $cap_name );
454
  } else {
455
  $title_text = $cap_name;
456
  }
488
  <tr class="cme-bulk-select">
489
  <td colspan="<?php echo $checks_per_row;?>">
490
  <span style="float:right">
491
+ <input type="checkbox" class="cme-check-all" title="<?php _e('check/uncheck all', 'capsman-enhanced');?>">&nbsp;&nbsp;<a class="cme-neg-all" href="#" title="<?php _e('negate all (storing as disabled capabilities)', 'capsman-enhanced');?>">X</a> <a class="cme-switch-all" href="#" title="<?php _e('negate none (add/remove all capabilities normally)', 'capsman-enhanced');?>">X</a>
492
  </span>
493
  </td></tr>
494
 
495
  </table>
496
 
497
  <?php
498
+ echo '<p>&nbsp;</p><h3>' . __( 'Additional Capabilities', 'capsman-enhanced' ) . '</h3>';
499
 
500
  ?>
501
  <table width='100%' class="form-table cme-checklist">
539
 
540
  if ( ! empty($pp_metagroup_caps[$cap_name]) ) {
541
  $class .= ' cap-metagroup';
542
+ $title_text = sprintf( __( '%s: assigned by Permission Group', 'capsman-enhanced' ), $cap_name );
543
  } else {
544
  $title_text = $cap_name;
545
  }
595
  <?php
596
  $level = ak_caps2level($rcaps);
597
  ?>
598
+ <?php _e('Level:', 'capsman-enhanced') ;?><select name="level">
599
  <?php for ( $l = $this->max_level; $l >= 0; $l-- ) {?>
600
  <option value="<?php echo $l; ?>" style="text-align:right;"<?php selected($level, $l); ?>>&nbsp;<?php echo $l; ?>&nbsp;</option>
601
  <?php }
604
  </span>
605
 
606
  <span style="float:right">
607
+ <input type="checkbox" class="cme-check-all" title="<?php _e('check/uncheck all', 'capsman-enhanced');?>">&nbsp;&nbsp;<a class="cme-neg-all" href="#" title="<?php _e('negate all (storing as disabled capabilities)', 'capsman-enhanced');?>">X</a> <a class="cme-switch-all" href="#" title="<?php _e('negate none (add/remove all capabilities normally)', 'capsman-enhanced');?>">X</a>
608
  </span>
609
  </td></tr>
610
 
613
  <br />
614
  <?php if ( ! defined('PP_ACTIVE') || pp_get_option('display_hints') ) :?>
615
  <div class="cme-subtext">
616
+ <?php _e( 'Note: Underscores replace spaces in stored capability name ("edit users" => "edit_users").', 'capsman-enhanced' ); ?>
617
  </div>
618
  <?php endif;?>
619
  </span>
629
  <p class="submit">
630
  <input type="hidden" name="action" value="update" />
631
  <input type="hidden" name="current" value="<?php echo $default; ?>" />
632
+ <input type="submit" name="SaveRole" value="<?php _e('Save Changes', 'capsman-enhanced') ?>" class="button-primary" /> &nbsp;
633
 
634
  <?php if ( current_user_can('administrator') && 'administrator' != $default ) : ?>
635
+ <a class="ak-delete" title="<?php echo esc_attr(__('Delete this role', 'capsman-enhanced')) ?>" href="<?php echo wp_nonce_url("admin.php?page={$this->ID}&amp;action=delete&amp;role={$default}", 'delete-role_' . $default); ?>" onclick="if ( confirm('<?php echo esc_js(sprintf(__("You are about to delete the %s role.\n 'Cancel' to stop, 'OK' to delete.", 'capsman-enhanced'), $roles[$default])); ?>') ) { return true;}return false;"><?php _e('Delete Role', 'capsman-enhanced')?></a>
636
  <?php endif; ?>
637
  </p>
638
 
645
  <?php agp_admin_authoring($this->ID); ?>
646
 
647
  <dl>
648
+ <dt><?php if ( defined('WPLANG') && WPLANG ) _e('Select New Role', 'capsman-enhanced'); else echo('Select Role to View / Edit'); ?></dt>
649
  <dd style="text-align:center;">
650
  <p><select name="role">
651
  <?php
653
  echo '<option value="' . $role .'"'; selected($default, $role); echo '> ' . $name . ' &nbsp;</option>';
654
  }
655
  ?>
656
+ </select><span style="margin-left:20px"><input type="submit" name="LoadRole" value="<?php if ( defined('WPLANG') && WPLANG ) _e('Change', 'capsman-enhanced'); else echo('Load'); ?>" class="button" /></span></p>
657
  </dd>
658
  </dl>
659
 
660
  <dl>
661
+ <dt><?php _e('Create New Role', 'capsman-enhanced'); ?></dt>
662
  <dd style="text-align:center;">
663
  <?php $class = ( $support_pp_only_roles ) ? 'tight-text' : 'regular-text'; ?>
664
+ <p><input type="text" name="create-name"" class="<?php echo $class;?>" placeholder="<?php _e('Name of new role', 'capsman-enhanced') ?>" />
665
 
666
  <?php if( $support_pp_only_roles ) : ?>
667
+ <label for="new_role_pp_only" title="<?php _e('Make role available for supplemental assignment to Permission Groups only', 'capsman-enhanced');?>"> <input type="checkbox" name="new_role_pp_only" id="new_role_pp_only" value="1"> <?php _e('hidden', 'capsman-enhanced'); ?> </label>
668
  <?php endif; ?>
669
 
670
  <br />
671
+ <input type="submit" name="CreateRole" value="<?php _e('Create', 'capsman-enhanced') ?>" class="button" />
672
  </p>
673
  </dd>
674
  </dl>
675
 
676
  <dl>
677
+ <dt><?php defined('WPLANG') && WPLANG ? _e('Copy this role to', 'capsman-enhanced') : printf( 'Copy %s Role', $roles[$default] ); ?></dt>
678
  <dd style="text-align:center;">
679
  <?php $class = ( $support_pp_only_roles ) ? 'tight-text' : 'regular-text'; ?>
680
+ <p><input type="text" name="copy-name" class="<?php echo $class;?>" placeholder="<?php _e('Name of copied role', 'capsman-enhanced') ?>" />
681
 
682
  <?php if( $support_pp_only_roles ) : ?>
683
+ <label for="copy_role_pp_only" title="<?php _e('Make role available for supplemental assignment to Permission Groups only', 'capsman-enhanced');?>"> <input type="checkbox" name="copy_role_pp_only" id="copy_role_pp_only" value="1"> <?php _e('hidden', 'capsman-enhanced'); ?> </label>
684
  <?php endif; ?>
685
 
686
  <br />
687
+ <input type="submit" name="CopyRole" value="<?php _e('Copy', 'capsman-enhanced') ?>" class="button" />
688
  </p>
689
  </dd>
690
  </dl>
691
 
692
  <dl>
693
+ <dt><?php _e('Add Capability', 'capsman-enhanced'); ?></dt>
694
  <dd style="text-align:center;">
695
+ <p><input type="text" name="capability-name" class="regular-text" placeholder="<?php _e('capability name', 'capsman-enhanced') ?>" /><br />
696
+ <input type="submit" name="AddCap" value="<?php _e('Add to role', 'capsman-enhanced') ?>" class="button" /></p>
697
  </dd>
698
  </dl>
699
 
721
  $checked = ( in_array( $default, $autocreate_roles ) ) ? 'checked="checked"': '';
722
  ?>
723
  <div style="margin-bottom: 5px">
724
+ <label for="cme_autocreate_role" title="<?php _e('Create this role definition in new (future) sites', 'capsman-enhanced');?>"><input type="checkbox" name="cme_autocreate_role" id="cme_autocreate_role" value="1" <?php echo $checked;?>> <?php _e('include in new sites', 'capsman-enhanced'); ?> </label>
725
  </div>
726
  <div>
727
+ <label for="cme_net_sync_role" title="<?php echo esc_attr(__('Copy / update this role definition to all sites now', 'capsman-enhanced'));?>"><input type="checkbox" name="cme_net_sync_role" id="cme_net_sync_role" value="1"> <?php _e('sync role to all sites now', 'capsman-enhanced'); ?> </label>
728
  </div>
729
  </div>
730
  <?php
includes/backup-handler.php CHANGED
@@ -6,7 +6,7 @@ class Capsman_BackupHandler
6
 
7
  function __construct( $manager_obj ) {
8
  if ( ! is_super_admin() && ! current_user_can( 'restore_roles' ) )
9
- wp_die( __( 'You do not have permission to restore roles.', 'capsman' ) );
10
 
11
  $this->cm = $manager_obj;
12
  }
@@ -23,21 +23,21 @@ class Capsman_BackupHandler
23
 
24
  global $wpdb;
25
  $wp_roles = $wpdb->prefix . 'user_roles';
26
- $cm_roles = $this->cm->ID . '_backup';
27
 
28
  switch ( $_POST['action'] ) {
29
  case 'backup':
30
  $roles = get_option($wp_roles);
31
  update_option($cm_roles, $roles);
32
- ak_admin_notify(__('New backup saved.', $this->cm->ID));
33
  break;
34
  case 'restore':
35
  $roles = get_option($cm_roles);
36
  if ( $roles ) {
37
  update_option($wp_roles, $roles);
38
- ak_admin_notify(__('Roles and Capabilities restored from last backup.', $this->cm->ID));
39
  } else {
40
- ak_admin_error(__('Restore failed. No backup found.', $this->cm->ID));
41
  }
42
  break;
43
  }
@@ -56,7 +56,7 @@ class Capsman_BackupHandler
56
  require_once(ABSPATH . 'wp-admin/includes/schema.php');
57
 
58
  if ( ! function_exists('populate_roles') ) {
59
- ak_admin_error(__('Needed function to create default roles not found!', $this->cm->ID));
60
  return;
61
  }
62
 
@@ -69,7 +69,7 @@ class Capsman_BackupHandler
69
  populate_roles();
70
  $this->cm->setAdminCapability();
71
 
72
- $msg = __('Roles and Capabilities reset to WordPress defaults', $this->cm->ID);
73
 
74
  if ( function_exists( 'pp_populate_roles' ) ) {
75
  pp_populate_roles();
6
 
7
  function __construct( $manager_obj ) {
8
  if ( ! is_super_admin() && ! current_user_can( 'restore_roles' ) )
9
+ wp_die( __( 'You do not have permission to restore roles.', 'capsman-enhanced' ) );
10
 
11
  $this->cm = $manager_obj;
12
  }
23
 
24
  global $wpdb;
25
  $wp_roles = $wpdb->prefix . 'user_roles';
26
+ $cm_roles = 'capsman_backup';
27
 
28
  switch ( $_POST['action'] ) {
29
  case 'backup':
30
  $roles = get_option($wp_roles);
31
  update_option($cm_roles, $roles);
32
+ ak_admin_notify(__('New backup saved.', 'capsman-enhanced'));
33
  break;
34
  case 'restore':
35
  $roles = get_option($cm_roles);
36
  if ( $roles ) {
37
  update_option($wp_roles, $roles);
38
+ ak_admin_notify(__('Roles and Capabilities restored from last backup.', 'capsman-enhanced'));
39
  } else {
40
+ ak_admin_error(__('Restore failed. No backup found.', 'capsman-enhanced'));
41
  }
42
  break;
43
  }
56
  require_once(ABSPATH . 'wp-admin/includes/schema.php');
57
 
58
  if ( ! function_exists('populate_roles') ) {
59
+ ak_admin_error(__('Needed function to create default roles not found!', 'capsman-enhanced'));
60
  return;
61
  }
62
 
69
  populate_roles();
70
  $this->cm->setAdminCapability();
71
 
72
+ $msg = __('Roles and Capabilities reset to WordPress defaults', 'capsman-enhanced');
73
 
74
  if ( function_exists( 'pp_populate_roles' ) ) {
75
  pp_populate_roles();
includes/backup.php CHANGED
@@ -30,7 +30,7 @@
30
  ?>
31
  <div class="wrap">
32
  <div id="icon-capsman-admin" class="icon32"></div>
33
- <h2><?php _e('Backup Tool for Capability Manager', $this->ID) ?></h2>
34
 
35
  <form method="post" action="tools.php?page=<?php echo $this->ID ?>-tool">
36
  <?php wp_nonce_field('capsman-backup-tool'); ?>
@@ -39,17 +39,17 @@
39
  <tr>
40
  <td class="content">
41
  <dl>
42
- <dt><?php _e('Backup and Restore', $this->ID); ?></dt>
43
  <dd>
44
  <table width='100%' class="form-table">
45
  <tr>
46
- <th scope="row"><?php _e('Select action:', $this->ID); ?></th>
47
  <td>
48
  <select name="action">
49
- <option value="backup"> <?php _e('Backup roles and capabilities', $this->ID); ?> </option>
50
- <option value="restore"> <?php _e('Restore last saved backup', $this->ID); ?> </option>
51
  </select> &nbsp;
52
- <input type="submit" name="Perform" value="<?php _e('Do Action', $this->ID) ?>" class="button-primary" />
53
  </td>
54
  </tr>
55
  </table>
@@ -57,14 +57,14 @@
57
  </dl>
58
 
59
  <dl>
60
- <dt><?php if ( defined('WPLANG') && WPLANG && ( 'en_EN' != WPLANG ) ) _e('Reset WordPress Defaults', $this->ID); else echo 'Reset Roles to WordPress Defaults';?></dt>
61
  <dd>
62
- <p style="text-align:center;"><strong><span style="color:red;"><?php _e('WARNING:', $this->ID); ?></span> <?php if ( defined('WPLANG') && WPLANG && ( 'en_EN' != WPLANG ) ) _e('Reseting default Roles and Capabilities will set them to the WordPress install defaults.', $this->ID); else echo 'This will delete and/or modify stored role definitions.'; ?></strong><br />
63
  <br />
64
  <?php
65
- _e('If you have installed any plugin that adds new roles or capabilities, these will be lost.', $this->ID)?><br />
66
  <strong><?php if ( defined('WPLANG') && WPLANG && ( 'en_EN' != WPLANG ) ) _e('It is recommended to use this only as a last resource!'); else echo('It is recommended to use this only as a last resort!');?></strong></p>
67
- <p style="text-align:center;"><a class="ak-delete" title="<?php echo esc_attr(__('Reset Roles and Capabilities to WordPress defaults', $this->ID)) ?>" href="<?php echo wp_nonce_url("tools.php?page={$this->ID}-tool&amp;action=reset-defaults", 'capsman-reset-defaults'); ?>" onclick="if ( confirm('<?php echo esc_js(__("You are about to reset Roles and Capabilities to WordPress defaults.\n 'Cancel' to stop, 'OK' to reset.", $this->ID)); ?>') ) { return true;}return false;"><?php _e('Reset to WordPress defaults', $this->ID)?></a>
68
 
69
  </dd>
70
  </dl>
30
  ?>
31
  <div class="wrap">
32
  <div id="icon-capsman-admin" class="icon32"></div>
33
+ <h2><?php _e('Backup Tool for Capability Manager', 'capsman-enhanced') ?></h2>
34
 
35
  <form method="post" action="tools.php?page=<?php echo $this->ID ?>-tool">
36
  <?php wp_nonce_field('capsman-backup-tool'); ?>
39
  <tr>
40
  <td class="content">
41
  <dl>
42
+ <dt><?php _e('Backup and Restore', 'capsman-enhanced'); ?></dt>
43
  <dd>
44
  <table width='100%' class="form-table">
45
  <tr>
46
+ <th scope="row"><?php _e('Select action:', 'capsman-enhanced'); ?></th>
47
  <td>
48
  <select name="action">
49
+ <option value="backup"> <?php _e('Backup roles and capabilities', 'capsman-enhanced'); ?> </option>
50
+ <option value="restore"> <?php _e('Restore last saved backup', 'capsman-enhanced'); ?> </option>
51
  </select> &nbsp;
52
+ <input type="submit" name="Perform" value="<?php _e('Do Action', 'capsman-enhanced') ?>" class="button-primary" />
53
  </td>
54
  </tr>
55
  </table>
57
  </dl>
58
 
59
  <dl>
60
+ <dt><?php if ( defined('WPLANG') && WPLANG && ( 'en_EN' != WPLANG ) ) _e('Reset WordPress Defaults', 'capsman-enhanced'); else echo 'Reset Roles to WordPress Defaults';?></dt>
61
  <dd>
62
+ <p style="text-align:center;"><strong><span style="color:red;"><?php _e('WARNING:', 'capsman-enhanced'); ?></span> <?php if ( defined('WPLANG') && WPLANG && ( 'en_EN' != WPLANG ) ) _e('Reseting default Roles and Capabilities will set them to the WordPress install defaults.', 'capsman-enhanced'); else echo 'This will delete and/or modify stored role definitions.'; ?></strong><br />
63
  <br />
64
  <?php
65
+ _e('If you have installed any plugin that adds new roles or capabilities, these will be lost.', 'capsman-enhanced')?><br />
66
  <strong><?php if ( defined('WPLANG') && WPLANG && ( 'en_EN' != WPLANG ) ) _e('It is recommended to use this only as a last resource!'); else echo('It is recommended to use this only as a last resort!');?></strong></p>
67
+ <p style="text-align:center;"><a class="ak-delete" title="<?php echo esc_attr(__('Reset Roles and Capabilities to WordPress defaults', 'capsman-enhanced')) ?>" href="<?php echo wp_nonce_url("tools.php?page={$this->ID}-tool&amp;action=reset-defaults", 'capsman-reset-defaults'); ?>" onclick="if ( confirm('<?php echo esc_js(__("You are about to reset Roles and Capabilities to WordPress defaults.\n 'Cancel' to stop, 'OK' to reset.", 'capsman-enhanced')); ?>') ) { return true;}return false;"><?php _e('Reset to WordPress defaults', 'capsman-enhanced')?></a>
68
 
69
  </dd>
70
  </dl>
includes/handler.php CHANGED
@@ -13,26 +13,26 @@ class CapsmanHandler
13
  // Create a new role.
14
  if ( ! empty($post['CreateRole']) ) {
15
  if ( $newrole = $this->createRole($post['create-name']) ) {
16
- ak_admin_notify(__('New role created.', $this->cm->ID));
17
  $this->cm->current = $newrole;
18
  } else {
19
  if ( empty($post['create-name']) && ( ! defined('WPLANG') || ! WPLANG ) )
20
- ak_admin_error( 'Error: No role name specified.', $this->cm->ID );
21
  else
22
- ak_admin_error(__('Error: Failed creating the new role.', $this->cm->ID));
23
  }
24
 
25
  // Copy current role to a new one.
26
  } elseif ( ! empty($post['CopyRole']) ) {
27
  $current = get_role($post['current']);
28
  if ( $newrole = $this->createRole($post['copy-name'], $current->capabilities) ) {
29
- ak_admin_notify(__('New role created.', $this->cm->ID));
30
  $this->cm->current = $newrole;
31
  } else {
32
  if ( empty($post['copy-name']) && ( ! defined('WPLANG') || ! WPLANG ) )
33
- ak_admin_error( 'Error: No role name specified.', $this->cm->ID );
34
  else
35
- ak_admin_error(__('Error: Failed creating the new role.', $this->cm->ID));
36
  }
37
 
38
  // Save role changes. Already saved at start with self::saveRoleCapabilities().
@@ -90,13 +90,13 @@ class CapsmanHandler
90
 
91
  } elseif ( ! empty($post['update_filtered_types']) ) {
92
  if ( cme_update_pp_usage() ) {
93
- ak_admin_notify(__('Capability settings saved.', $this->cm->ID));
94
  } else {
95
- ak_admin_error(__('Error saving capability settings.', $this->cm->ID));
96
  }
97
  } else {
98
  // TODO: Implement exceptions. This must be a fatal error.
99
- ak_admin_error(__('Bad form received.', $this->cm->ID));
100
  }
101
 
102
  if ( ! empty($newrole) && defined('PP_ACTIVE') ) {
@@ -208,7 +208,7 @@ class CapsmanHandler
208
 
209
  if ( 'administrator' == $role_name && isset($del_caps['manage_capabilities']) ) {
210
  unset($del_caps['manage_capabilities']);
211
- ak_admin_error(__('You cannot remove Manage Capabilities from Administrators', $this->cm->ID));
212
  }
213
  // Add new capabilities to role
214
  foreach ( $add_caps as $cap => $grant ) {
@@ -310,7 +310,7 @@ class CapsmanHandler
310
  $this->cm->current = $_GET['role'];
311
  $default = get_option('default_role');
312
  if ( $default == $this->cm->current ) {
313
- ak_admin_error(sprintf(__('Cannot delete default role. You <a href="%s">have to change it first</a>.', $this->cm->ID), 'options-general.php'));
314
  return;
315
  }
316
 
@@ -355,7 +355,7 @@ class CapsmanHandler
355
  }
356
  }
357
 
358
- ak_admin_notify(sprintf(__('Role has been deleted. %1$d users moved to default role %2$s.', $this->cm->ID), $count, $this->cm->roles[$default]));
359
  $this->cm->current = $default;
360
  }
361
  }
13
  // Create a new role.
14
  if ( ! empty($post['CreateRole']) ) {
15
  if ( $newrole = $this->createRole($post['create-name']) ) {
16
+ ak_admin_notify(__('New role created.', 'capsman-enhanced'));
17
  $this->cm->current = $newrole;
18
  } else {
19
  if ( empty($post['create-name']) && ( ! defined('WPLANG') || ! WPLANG ) )
20
+ ak_admin_error( 'Error: No role name specified.', 'capsman-enhanced' );
21
  else
22
+ ak_admin_error(__('Error: Failed creating the new role.', 'capsman-enhanced'));
23
  }
24
 
25
  // Copy current role to a new one.
26
  } elseif ( ! empty($post['CopyRole']) ) {
27
  $current = get_role($post['current']);
28
  if ( $newrole = $this->createRole($post['copy-name'], $current->capabilities) ) {
29
+ ak_admin_notify(__('New role created.', 'capsman-enhanced'));
30
  $this->cm->current = $newrole;
31
  } else {
32
  if ( empty($post['copy-name']) && ( ! defined('WPLANG') || ! WPLANG ) )
33
+ ak_admin_error( 'Error: No role name specified.', 'capsman-enhanced' );
34
  else
35
+ ak_admin_error(__('Error: Failed creating the new role.', 'capsman-enhanced'));
36
  }
37
 
38
  // Save role changes. Already saved at start with self::saveRoleCapabilities().
90
 
91
  } elseif ( ! empty($post['update_filtered_types']) ) {
92
  if ( cme_update_pp_usage() ) {
93
+ ak_admin_notify(__('Capability settings saved.', 'capsman-enhanced'));
94
  } else {
95
+ ak_admin_error(__('Error saving capability settings.', 'capsman-enhanced'));
96
  }
97
  } else {
98
  // TODO: Implement exceptions. This must be a fatal error.
99
+ ak_admin_error(__('Bad form received.', 'capsman-enhanced'));
100
  }
101
 
102
  if ( ! empty($newrole) && defined('PP_ACTIVE') ) {
208
 
209
  if ( 'administrator' == $role_name && isset($del_caps['manage_capabilities']) ) {
210
  unset($del_caps['manage_capabilities']);
211
+ ak_admin_error(__('You cannot remove Manage Capabilities from Administrators', 'capsman-enhanced'));
212
  }
213
  // Add new capabilities to role
214
  foreach ( $add_caps as $cap => $grant ) {
310
  $this->cm->current = $_GET['role'];
311
  $default = get_option('default_role');
312
  if ( $default == $this->cm->current ) {
313
+ ak_admin_error(sprintf(__('Cannot delete default role. You <a href="%s">have to change it first</a>.', 'capsman-enhanced'), 'options-general.php'));
314
  return;
315
  }
316
 
355
  }
356
  }
357
 
358
+ ak_admin_notify(sprintf(__('Role has been deleted. %1$d users moved to default role %2$s.', 'capsman-enhanced'), $count, $this->cm->roles[$default]));
359
  $this->cm->current = $default;
360
  }
361
  }
includes/manager.php CHANGED
@@ -171,20 +171,20 @@ class CapabilityManager extends akPluginAbstract
171
  $this->setAdminCapability();
172
  }
173
 
174
- if ( defined( 'PP_ACTIVE' ) ) { // Press Permit integrates into Permissions menu
175
- add_action( 'pp_permissions_menu', array( &$this, 'pp_menu' ) );
176
- } else {
177
- add_users_page( __('Capability Manager', $this->ID), __('Capabilities', $this->ID), 'manage_capabilities', $this->ID, array($this, 'generalManager'));
178
- }
179
 
180
  $cap_name = ( is_super_admin() ) ? 'manage_capabilities' : 'restore_roles';
181
- add_management_page(__('Capability Manager', $this->ID), __('Capability Manager', $this->ID), $cap_name, $this->ID . '-tool', array($this, 'backupTool'));
182
  }
183
 
184
- public function pp_menu() {
185
- global $pp_admin;
186
- $menu_caption = ( defined('WPLANG') && WPLANG ) ? __('Capabilities', $this->ID) : 'Role Capabilities';
187
- add_submenu_page( $pp_admin->get_menu('options'), __('Capability Manager', $this->ID), $menu_caption, 'manage_capabilities', $this->ID, array($this, 'generalManager') );
 
 
 
 
188
  }
189
 
190
  /**
@@ -239,16 +239,32 @@ class CapabilityManager extends akPluginAbstract
239
  if ( ! in_array( $cap, array( 'edit_user', 'delete_user', 'promote_user', 'remove_user' ) ) || ( ! isset($args[0]) ) || $user_id == (int) $args[0] ) {
240
  return $caps;
241
  }
242
-
243
- $this->generateNames();
244
- $valid = array_keys($this->roles);
245
-
246
- $user = new WP_User( (int) $args[0] );
247
- foreach ( $user->roles as $role ) {
248
- if ( ! in_array($role, $valid) ) {
249
- $caps = array('do_not_allow');
250
- break;
251
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
252
  }
253
 
254
  return $caps;
@@ -260,7 +276,7 @@ class CapabilityManager extends akPluginAbstract
260
  if ( 'POST' == $_SERVER['REQUEST_METHOD'] && ( ! empty($_REQUEST['SaveRole']) || ! empty($_REQUEST['AddCap']) ) ) {
261
  if ( ! current_user_can('manage_capabilities') && ! current_user_can('administrator') ) {
262
  // TODO: Implement exceptions.
263
- wp_die('<strong>' .__('What do you think you\'re doing?!?', $this->ID) . '</strong>');
264
  }
265
 
266
  //$this->current = get_option('default_role'); // By default we manage the default role.
@@ -279,7 +295,7 @@ class CapabilityManager extends akPluginAbstract
279
  function generalManager () {
280
  if ( ! current_user_can('manage_capabilities') && ! current_user_can('administrator') ) {
281
  // TODO: Implement exceptions.
282
- wp_die('<strong>' .__('What do you think you\'re doing?!?', $this->ID) . '</strong>');
283
  }
284
 
285
  if ( 'POST' == $_SERVER['REQUEST_METHOD'] ) {
@@ -287,9 +303,9 @@ class CapabilityManager extends akPluginAbstract
287
  check_admin_referer('capsman-general-manager');
288
  $this->processAdminGeneral();
289
  } elseif ( ! empty($_REQUEST['SaveRole']) ) {
290
- ak_admin_notify( $this->message, $this->ID ); // moved update operation to earlier action to avoid UI refresh issues. But outputting notification there breaks styling.
291
  } elseif ( ! empty($_REQUEST['AddCap']) ) {
292
- ak_admin_notify( $this->message, $this->ID );
293
  }
294
  }
295
 
@@ -318,7 +334,7 @@ class CapabilityManager extends akPluginAbstract
318
  {
319
  if (! isset($_POST['action']) || 'update' != $_POST['action'] ) {
320
  // TODO: Implement exceptions. This must be a fatal error.
321
- ak_admin_error(__('Bad form Received', $this->ID));
322
  return;
323
  }
324
 
@@ -406,10 +422,13 @@ class CapabilityManager extends akPluginAbstract
406
  $roles = ak_get_roles(true);
407
  unset($roles['administrator']);
408
 
409
- foreach ( $user->roles as $role ) { // Unset the roles from capability list.
410
- unset ( $this->capabilities[$role] );
411
- unset ( $roles[$role]); // User cannot manage his roles.
412
- }
 
 
 
413
  asort($this->capabilities);
414
 
415
  foreach ( array_keys($roles) as $role ) {
@@ -435,7 +454,7 @@ class CapabilityManager extends akPluginAbstract
435
  {
436
  if ( ! current_user_can('restore_roles') && ! is_super_admin() ) {
437
  // TODO: Implement exceptions.
438
- wp_die('<strong>' .__('What do you think you\'re doing?!?', $this->ID) . '</strong>');
439
  }
440
 
441
  if ( 'POST' == $_SERVER['REQUEST_METHOD'] ) {
171
  $this->setAdminCapability();
172
  }
173
 
174
+ add_action( 'admin_menu', array( &$this, 'cme_menu' ), 20 );
 
 
 
 
175
 
176
  $cap_name = ( is_super_admin() ) ? 'manage_capabilities' : 'restore_roles';
177
+ add_management_page(__('Capability Manager', 'capsman-enhanced'), __('Capability Manager', 'capsman-enhanced'), $cap_name, $this->ID . '-tool', array($this, 'backupTool'));
178
  }
179
 
180
+ public function cme_menu() {
181
+ if ( did_action( 'pp_admin_menu' ) ) { // Put Capabilities link on Permissions menu if Press Permit is active and user has access to it
182
+ global $pp_admin;
183
+ $menu_caption = ( defined('WPLANG') && WPLANG ) ? __('Capabilities', 'capsman-enhanced') : 'Role Capabilities';
184
+ add_submenu_page( $pp_admin->get_menu('options'), __('Capability Manager', 'capsman-enhanced'), $menu_caption, 'manage_capabilities', $this->ID, array($this, 'generalManager') );
185
+ } else {
186
+ add_users_page( __('Capability Manager', 'capsman-enhanced'), __('Capabilities', 'capsman-enhanced'), 'manage_capabilities', $this->ID, array($this, 'generalManager'));
187
+ }
188
  }
189
 
190
  /**
239
  if ( ! in_array( $cap, array( 'edit_user', 'delete_user', 'promote_user', 'remove_user' ) ) || ( ! isset($args[0]) ) || $user_id == (int) $args[0] ) {
240
  return $caps;
241
  }
242
+
243
+ $user = new WP_User( (int) $args[0] );
244
+
245
+ if ( defined( 'CME_LEGACY_USER_EDIT_FILTER' ) && CME_LEGACY_USER_EDIT_FILTER ) {
246
+ $this->generateNames();
247
+ $valid = array_keys($this->roles);
248
+
249
+ foreach ( $user->roles as $role ) {
250
+ if ( ! in_array($role, $valid) ) {
251
+ $caps = array('do_not_allow');
252
+ break;
253
+ }
254
+ }
255
+ } else {
256
+ global $wp_roles;
257
+
258
+ foreach ( $user->roles as $role ) {
259
+ $r = get_role( $role );
260
+ $level = ak_caps2level($r->capabilities);
261
+
262
+ if ( $level > $this->max_level ) {
263
+ $caps = array('do_not_allow');
264
+ break;
265
+ }
266
+ }
267
+
268
  }
269
 
270
  return $caps;
276
  if ( 'POST' == $_SERVER['REQUEST_METHOD'] && ( ! empty($_REQUEST['SaveRole']) || ! empty($_REQUEST['AddCap']) ) ) {
277
  if ( ! current_user_can('manage_capabilities') && ! current_user_can('administrator') ) {
278
  // TODO: Implement exceptions.
279
+ wp_die('<strong>' .__('What do you think you\'re doing?!?', 'capsman-enhanced') . '</strong>');
280
  }
281
 
282
  //$this->current = get_option('default_role'); // By default we manage the default role.
295
  function generalManager () {
296
  if ( ! current_user_can('manage_capabilities') && ! current_user_can('administrator') ) {
297
  // TODO: Implement exceptions.
298
+ wp_die('<strong>' .__('What do you think you\'re doing?!?', 'capsman-enhanced') . '</strong>');
299
  }
300
 
301
  if ( 'POST' == $_SERVER['REQUEST_METHOD'] ) {
303
  check_admin_referer('capsman-general-manager');
304
  $this->processAdminGeneral();
305
  } elseif ( ! empty($_REQUEST['SaveRole']) ) {
306
+ ak_admin_notify( $this->message ); // moved update operation to earlier action to avoid UI refresh issues. But outputting notification there breaks styling.
307
  } elseif ( ! empty($_REQUEST['AddCap']) ) {
308
+ ak_admin_notify( $this->message );
309
  }
310
  }
311
 
334
  {
335
  if (! isset($_POST['action']) || 'update' != $_POST['action'] ) {
336
  // TODO: Implement exceptions. This must be a fatal error.
337
+ ak_admin_error(__('Bad form Received', 'capsman-enhanced'));
338
  return;
339
  }
340
 
422
  $roles = ak_get_roles(true);
423
  unset($roles['administrator']);
424
 
425
+ if ( ( defined( 'CME_LEGACY_USER_EDIT_FILTER' ) && CME_LEGACY_USER_EDIT_FILTER ) || ( ! empty( $_REQUEST['page'] ) && 'capsman' == $_REQUEST['page'] ) ) {
426
+ foreach ( $user->roles as $role ) { // Unset the roles from capability list.
427
+ unset ( $this->capabilities[$role] );
428
+ unset ( $roles[$role]); // User cannot manage his roles.
429
+ }
430
+ }
431
+
432
  asort($this->capabilities);
433
 
434
  foreach ( array_keys($roles) as $role ) {
454
  {
455
  if ( ! current_user_can('restore_roles') && ! is_super_admin() ) {
456
  // TODO: Implement exceptions.
457
+ wp_die('<strong>' .__('What do you think you\'re doing?!?', 'capsman-enhanced') . '</strong>');
458
  }
459
 
460
  if ( 'POST' == $_SERVER['REQUEST_METHOD'] ) {
includes/pp-ui.php CHANGED
@@ -41,9 +41,9 @@ class Capsman_PP_UI {
41
  echo '<li>';
42
  if ( defined( 'PPCE_VERSION' ) || ! defined( 'PPC_VERSION' ) ) {
43
  if ( pp_get_option( 'advanced_options' ) )
44
- $parenthetical = ' (' . sprintf( __( 'see %1$sRole Usage%2$s: "Pattern Roles"', 'capsman' ), "<a href='" . admin_url('admin.php?page=pp-role-usage') . "'>", '</a>' ) . ')';
45
  else
46
- $parenthetical = ' (' . sprintf( __( 'activate %1$sAdvanced settings%2$s, see Role Usage', 'capsman' ), "<a href='" . admin_url('admin.php?page=pp-settings&pp_tab=advanced') . "'>", '</a>' ). ')';
47
  } else
48
  $parenthetical = '';
49
 
@@ -83,7 +83,7 @@ class Capsman_PP_UI {
83
  $pp_only = (array) pp_get_option( 'supplemental_role_defs' );
84
  $checked = ( in_array( $default, $pp_only ) ) ? 'checked="checked"': '';
85
  ?>
86
- <label for="pp_only_role" title="<?php _e('Make role available for supplemental assignment to Permission Groups only', 'capsman');?>"><input type="checkbox" name="pp_only_role" id="pp_only_role" value="1" <?php echo $checked;?>> <?php _e('hidden role', 'capsman'); ?> </label>
87
  </div>
88
  <?php endif; ?>
89
  <?php
@@ -93,15 +93,15 @@ class Capsman_PP_UI {
93
  function pp_types_ui( $defined ) {
94
  if ( current_user_can( 'pp_manage_settings' ) ) :?>
95
  <dl>
96
- <dt><?php _e('Force Type-Specific Capabilities', 'capsman'); ?></dt>
97
  <dd style="text-align:center;">
98
  <?php
99
- $caption = __( 'Force unique capability names for:', 'capsman' );
100
  echo "<p>$caption</p>";
101
 
102
  if ( pp_get_option( 'display_hints' ) ) :?>
103
  <div class="cme-subtext" style="margin-top:0">
104
- <?php _e( '(PP Filtered Post Types, Taxonomies)', 'capsman' );?>
105
  </div>
106
  <?php endif;
107
 
@@ -161,7 +161,7 @@ class Capsman_PP_UI {
161
  </div>
162
  <?php endif; ?>
163
 
164
- <input type="submit" name="update_filtered_types" value="<?php _e('Update', 'capsman') ?>" class="button" />
165
  </dd>
166
  </dl>
167
  <?php endif;
41
  echo '<li>';
42
  if ( defined( 'PPCE_VERSION' ) || ! defined( 'PPC_VERSION' ) ) {
43
  if ( pp_get_option( 'advanced_options' ) )
44
+ $parenthetical = ' (' . sprintf( __( 'see %1$sRole Usage%2$s: "Pattern Roles"', 'capsman-enhanced' ), "<a href='" . admin_url('admin.php?page=pp-role-usage') . "'>", '</a>' ) . ')';
45
  else
46
+ $parenthetical = ' (' . sprintf( __( 'activate %1$sAdvanced settings%2$s, see Role Usage', 'capsman-enhanced' ), "<a href='" . admin_url('admin.php?page=pp-settings&pp_tab=advanced') . "'>", '</a>' ). ')';
47
  } else
48
  $parenthetical = '';
49
 
83
  $pp_only = (array) pp_get_option( 'supplemental_role_defs' );
84
  $checked = ( in_array( $default, $pp_only ) ) ? 'checked="checked"': '';
85
  ?>
86
+ <label for="pp_only_role" title="<?php _e('Make role available for supplemental assignment to Permission Groups only', 'capsman-enhanced');?>"><input type="checkbox" name="pp_only_role" id="pp_only_role" value="1" <?php echo $checked;?>> <?php _e('hidden role', 'capsman-enhanced'); ?> </label>
87
  </div>
88
  <?php endif; ?>
89
  <?php
93
  function pp_types_ui( $defined ) {
94
  if ( current_user_can( 'pp_manage_settings' ) ) :?>
95
  <dl>
96
+ <dt><?php _e('Force Type-Specific Capabilities', 'capsman-enhanced'); ?></dt>
97
  <dd style="text-align:center;">
98
  <?php
99
+ $caption = __( 'Force unique capability names for:', 'capsman-enhanced' );
100
  echo "<p>$caption</p>";
101
 
102
  if ( pp_get_option( 'display_hints' ) ) :?>
103
  <div class="cme-subtext" style="margin-top:0">
104
+ <?php _e( '(PP Filtered Post Types, Taxonomies)', 'capsman-enhanced' );?>
105
  </div>
106
  <?php endif;
107
 
161
  </div>
162
  <?php endif; ?>
163
 
164
+ <input type="submit" name="update_filtered_types" value="<?php _e('Update', 'capsman-enhanced') ?>" class="button" />
165
  </dd>
166
  </dl>
167
  <?php endif;
lang/capsman.pot CHANGED
@@ -5,7 +5,7 @@ msgstr ""
5
  "Project-Id-Version: Capability Manager Enhanced 1.5.3\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/capability-manager-"
7
  "enhanced\n"
8
- "POT-Creation-Date: 2015-04-21 21:09:37+00:00\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
5
  "Project-Id-Version: Capability Manager Enhanced 1.5.3\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/capability-manager-"
7
  "enhanced\n"
8
+ "POT-Creation-Date: 2015-06-04 10:53:10+00:00\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: txanny, kevinB
3
  Donate Link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=JWZVFUDLLYQBA
4
  Tags: roles, capabilities, manager, editor, rights, role, capability, types, taxonomies, network, multisite, default
5
  Requires at least: 3.1
6
- Tested up to: 4.3
7
- Stable tag: 1.5.3
8
 
9
  A simple way to manage WordPress roles and capabilities.
10
 
@@ -105,6 +105,12 @@ You should have received a copy of the GNU General Public License along with thi
105
 
106
  == Changelog ==
107
 
 
 
 
 
 
 
108
  = 1.5.3 =
109
  * Fixed : On single-site installations, non-Administrators with delete_users capability could give new users an Administrator role (since 1.5.2)
110
  * Fixed : Deletion of a third party plugin role could cause users to be demoted to Subscriber inappropriately
3
  Donate Link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=JWZVFUDLLYQBA
4
  Tags: roles, capabilities, manager, editor, rights, role, capability, types, taxonomies, network, multisite, default
5
  Requires at least: 3.1
6
+ Tested up to: 4.3.1
7
+ Stable tag: 1.5.4
8
 
9
  A simple way to manage WordPress roles and capabilities.
10
 
105
 
106
  == Changelog ==
107
 
108
+ = 1.5.4 =
109
+ * Fixed : Non-administrators' user editing capabilities were blocked if Press Permit Core was also active
110
+ * Fixed : Non-administrators could not edit other users with their role (define constant CME_LEGACY_USER_EDIT_FILTER to retain previous behavior)
111
+ * Fixed : Non-administrators could not assign their role to other users (define constant CME_LEGACY_USER_EDIT_FILTER to retain previous behavior)
112
+ * Lang : Changed text domain for language pack conformance
113
+
114
  = 1.5.3 =
115
  * Fixed : On single-site installations, non-Administrators with delete_users capability could give new users an Administrator role (since 1.5.2)
116
  * Fixed : Deletion of a third party plugin role could cause users to be demoted to Subscriber inappropriately