* @copyright Copyright (c) 2015, Justin Tadlock * @link http://themehybrid.com/plugins/members-role-levels * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html */ /** * Role level meta box. * * @since 1.0.0 * @access public */ final class Members_Role_Levels_Meta_Box_Level { /** * Constructor method. * * @since 1.0.0 * @access private * @return void */ private function __construct() {} /** * Sets up actions and filters. * * @since 1.0.0 * @access public * @return void */ private function setup() { // Add actions on page load. add_action( 'members_load_role_edit', array( $this, 'load' ) ); add_action( 'members_load_role_new', array( $this, 'load' ) ); // Update role levels. add_action( 'members_role_updated', array( $this, 'update_role_level' ) ); add_action( 'members_role_added', array( $this, 'update_role_level' ) ); } /** * Add actions/filters on page load. * * @since 1.0.0 * @access public * @return void */ public function load() { add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ) ); } /** * Adds custom meta boxes. * * @since 1.0.0 * @access public * @param string $screen_id * @return void */ public function add_meta_boxes( $screen_id ) { // Add the meta box. add_meta_box( 'mrl_role_level', esc_html__( 'Level', 'members' ), array( $this, 'meta_box' ), $screen_id, 'side', 'default' ); } /** * Outputs the role level meta box. * * @since 1.0.0 * @access public * @param object $role * @return void */ public function meta_box( $role ) { // If the role isn't editable, the field should be read-only. $is_editable = $role ? members_is_role_editable( $role->name ) : true; $readonly = $is_editable ? '' : ' disabled="disabled" readonly="readonly"'; // Get the role level. $role_level = mrl_get_role_level( $role ); // If there is no role level, check if cloning or error. if ( ! $role_level ) { // If there was a posted level (error). if ( isset( $_POST['mrl-role-level'] ) && mrl_is_valid_level( $_POST['mrl-role-level'] ) ) $role_level = $_POST['mrl-role-level']; // If we're cloning a new role. else if ( isset( $_GET['page'] ) && 'role-new' === $_GET['page'] && ! empty( $_GET['clone'] ) ) $role_level = mrl_get_role_level( members_sanitize_role( $_GET['clone'] ) ); } // If still no level, set it to `level_0`. $role_level = $role_level ? $role_level : 'level_0'; wp_nonce_field( 'role_level', 'mrl_role_level_nonce' ); ?>
setup(); } return $instance; } } Members_Role_Levels_Meta_Box_Level::get_instance();