* @copyright Copyright (c) 2018, Justin Tadlock * @link https://themehybrid.com/plugins/members-admin-access * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html */ namespace Members\AddOns\AdminAccess; use Members\Admin\View; /** * Sets up and handles the general settings view. * * @since 1.0.0 * @access public */ class View_Settings extends View { /** * Registers the plugin settings. * * @since 1.0.0 * @access public * @return void */ function register_settings() { // Register the setting. register_setting( 'members_admin_access_settings', 'members_admin_access_settings', array( $this, 'validate_settings' ) ); /* === Settings Sections === */ add_settings_section( 'general', esc_html__( 'Admin Access', 'members' ), array( $this, 'section_general' ), app()->namespace . '/settings' ); /* === Settings Fields === */ add_settings_field( 'select_roles', esc_html__( 'Select Roles', 'members' ), array( $this, 'field_select_roles' ), app()->namespace . '/settings', 'general' ); add_settings_field( 'redirect', esc_html__( 'Redirect', 'members' ), array( $this, 'field_redirect' ), app()->namespace . '/settings', 'general' ); add_settings_field( 'toolbar', esc_html__( 'Toolbar', 'members' ), array( $this, 'field_toolbar' ), app()->namespace . '/settings', 'general' ); } /** * Validates the plugin settings. * * @since 1.0.0 * @access public * @param array $input * @return array */ function validate_settings( $settings ) { // Validate selected roles. // // Note that it's possible for `$settings['roles']` to not be set // when no roles at all are selected. if ( empty( $settings['roles'] ) ) { $settings['roles'] = array(); } foreach ( $settings['roles'] as $key => $role ) { if ( ! members_role_exists( $role ) ) unset( $settings['roles'][ $key ] ); } // Escape URLs. $settings['redirect_url'] = esc_url_raw( $settings['redirect_url'] ); if ( ! $settings['redirect_url'] ) $settings['redirect_url'] = esc_url_raw( home_url() ); // Handle checkboxes. $settings['disable_toolbar'] = ! empty( $settings['disable_toolbar'] ) ? true : false; return apply_filters( app()->namespace . '/validate_settings', $settings ); } /** * Role/Caps section callback. * * @since 1.0.0 * @access public * @return void */ public function section_general() { ?>

namespace . '/settings' ); ?>