예제 #1
0
/**
 * 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;
}
예제 #2
0
/**
 * 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;
}
예제 #3
0
 /**
  * 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 = ' &ndash; ' . $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);
 }
예제 #4
0
    /**
     * 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 
    }
예제 #5
0
 /**
  * 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 
    }