/** * Returns an array of the role names of roles that have users. * * @since 1.0.0 * @access public * @return array */ function members_get_active_role_names() { $has_users = array(); foreach (members_get_active_role_slugs() as $role) { $has_users[$role] = members_get_role_name($role); } return $has_users; }
/** * Returns an array of the role names a user has. * * @since 1.0.0 * @access public * @param int $user_id * @return array */ function members_get_user_role_names($user_id) { $user = new WP_User($user_id); $names = array(); foreach ($user->roles as $role) { $names[$role] = members_get_role_name($role); } return $names; }
/** * The role name column callback. * * @since 1.0.0 * @access protected * @param string $role * @return string */ protected function column_title($role) { $states = array(); $role_states = ''; // If the role is the default role. if ($role == get_option('default_role')) { $states[] = esc_html__('Default Role', 'members'); } // If the current user has this role. if (members_current_user_has_role($role)) { $states[] = esc_html__('Your Role', 'members'); } // Allow devs to filter the role states. $states = apply_filters('members_role_states', $states, $role); // If we have states, string them together. if (!empty($states)) { foreach ($states as $state) { $role_states .= sprintf('<span class="role-state">%s</span>', $state); } $role_states = ' – ' . $role_states; } // Add the title and role states. $title = sprintf('<strong><a class="row-title" href="%s">%s</a>%s</strong>', esc_url(members_get_edit_role_url($role)), esc_html(members_get_role_name($role)), $role_states); return apply_filters('members_manage_roles_column_role_name', $title, $role); }
/** * Outputs the page. * * @since 1.0.0 * @access public * @return void */ public function page() { ?> <div class="wrap"> <h1><?php !$this->is_clone ? esc_html_e('Add New Role', 'members') : esc_html_e('Clone Role', 'members'); ?> </h1> <?php settings_errors('members_role_new'); ?> <div id="poststuff"> <form name="form0" method="post" action="<?php echo esc_url(members_get_new_role_url()); ?> "> <?php wp_nonce_field('new_role', 'members_new_role_nonce'); ?> <div id="post-body" class="metabox-holder columns-<?php echo 1 == get_current_screen()->get_columns() ? 1 : 2; ?> "> <div id="post-body-content"> <div id="titlediv" class="members-title-div"> <div id="titlewrap"> <span class="screen-reader-text"><?php esc_html_e('Role Name', 'members'); ?> </span> <input type="text" name="role_name" value="<?php echo !$this->role && $this->clone_role ? esc_attr(sprintf(__('%s Clone', 'members'), members_get_role_name($this->clone_role))) : esc_attr($this->role_name); ?> " placeholder="<?php esc_attr_e('Enter role name', 'members'); ?> " /> </div><!-- #titlewrap --> <div class="inside"> <div id="edit-slug-box"> <strong><?php esc_html_e('Role:', 'members'); ?> </strong> <span class="role-slug"><?php echo !$this->role && $this->clone_role ? esc_attr("{$this->clone_role}_clone") : esc_attr($this->role); ?> </span> <!-- edit box --> <input type="text" name="role" value="<?php echo members_sanitize_role($this->role); ?> " /> <button type="button" class="role-edit-button button button-small closed"><?php esc_html_e('Edit', 'members'); ?> </button> </div> </div><!-- .inside --> </div><!-- .members-title-div --> <?php $cap_tabs = new Members_Cap_Tabs('', $this->capabilities); ?> <?php $cap_tabs->display(); ?> </div><!-- #post-body-content --> <?php wp_nonce_field('closedpostboxes', 'closedpostboxesnonce', false); ?> <?php wp_nonce_field('meta-box-order', 'meta-box-order-nonce', false); ?> <div id="postbox-container-1" class="postbox-container side"> <?php do_meta_boxes(get_current_screen()->id, 'side', ''); ?> </div><!-- .post-box-container --> </div><!-- #post-body --> </form> </div><!-- #poststuff --> </div><!-- .wrap --> <?php }
/** * Runs on the `load-{$page}` hook. This is the handler for form submissions and requests. * * @since 1.0.0 * @access public * @return void */ public function load() { // Get the current action if sent as request. $action = isset($_REQUEST['action']) ? sanitize_key($_REQUEST['action']) : false; // Get the current action if posted. if (isset($_POST['action']) && 'delete' == $_POST['action'] || isset($_POST['action2']) && 'delete' == $_POST['action2']) { $action = 'bulk-delete'; } // Bulk delete role handler. if ('bulk-delete' === $action) { // If roles were selected, let's delete some roles. if (current_user_can('delete_roles') && isset($_POST['roles']) && is_array($_POST['roles'])) { // Verify the nonce. Nonce created via `WP_List_Table::display_tablenav()`. check_admin_referer('bulk-roles'); // Loop through each of the selected roles. foreach ($_POST['roles'] as $role) { $role = members_sanitize_role($role); if (members_role_exists($role)) { members_delete_role($role); } } // Add roles deleted message. add_settings_error('members_roles', 'roles_deleted', esc_html__('Selected roles deleted.', 'members'), 'updated'); } // Delete single role handler. } else { if ('delete' === $action) { // Make sure the current user can delete roles. if (current_user_can('delete_roles')) { // Verify the referer. check_admin_referer('delete_role', 'members_delete_role_nonce'); // Get the role we want to delete. $role = members_sanitize_role($_GET['role']); // Check that we have a role before attempting to delete it. if (members_role_exists($role)) { // Add role deleted message. add_settings_error('members_roles', 'role_deleted', sprintf(esc_html__('%s role deleted.', 'members'), members_get_role_name($role)), 'updated'); // Delete the role. members_delete_role($role); } } } } // Load page hook. do_action('members_load_manage_roles'); }
/** * Displays the page content. * * @since 1.0.0 * @access public * @return void */ public function page() { ?> <div class="wrap"> <h1> <?php esc_html_e('Edit Role', 'members'); ?> <?php if (current_user_can('create_roles')) { ?> <?php printf('<a class="page-title-action" href="%s">%s</a>', esc_url(members_get_new_role_url()), esc_html__('Add New', 'members')); ?> <?php } ?> </h1> <?php settings_errors('members_edit_role'); ?> <div id="poststuff"> <form name="form0" method="post" action="<?php echo esc_url(members_get_edit_role_url($this->role->name)); ?> "> <?php wp_nonce_field('edit_role', 'members_edit_role_nonce'); ?> <div id="post-body" class="metabox-holder columns-<?php echo 1 == get_current_screen()->get_columns() ? 1 : 2; ?> "> <div id="post-body-content"> <div id="titlediv" class="members-title-div"> <div id="titlewrap"> <span class="screen-reader-text"><?php esc_html_e('Role Name', 'members'); ?> </span> <input type="text" disabled="disabled" readonly="readonly" value="<?php echo esc_attr(members_get_role_name($this->role->name)); ?> " /> </div><!-- #titlewrap --> <div class="inside"> <div id="edit-slug-box"> <strong><?php esc_html_e('Role:', 'members'); ?> </strong> <?php echo esc_attr($this->role->name); ?> <!-- edit box --> </div> </div><!-- .inside --> </div><!-- .members-title-div --> <?php $cap_tabs = new Members_Cap_Tabs($this->role->name); ?> <?php $cap_tabs->display(); ?> </div><!-- #post-body-content --> <?php wp_nonce_field('closedpostboxes', 'closedpostboxesnonce', false); ?> <?php wp_nonce_field('meta-box-order', 'meta-box-order-nonce', false); ?> <div id="postbox-container-1" class="postbox-container side"> <?php do_meta_boxes(get_current_screen()->id, 'side', $this->role); ?> </div><!-- .post-box-container --> </div><!-- #post-body --> </form> </div><!-- #poststuff --> </div><!-- .wrap --> <?php }