Viewing File: /home/fshjisk/mimikoparis/wp-content/plugins/content-control/classes/Admin/Widget/Settings.php

<?php

namespace JP\CC\Admin\Widget;

use JP\CC\Widget;
use JP\CC\Roles;

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * Class JP\CC\Admin\Widget_Settings
 */
class Settings {

	/**
	 * Initialize Widget Settings
	 */
	public static function init() {
		add_action( 'in_widget_form', array( __CLASS__, 'fields' ), 5, 3 );
		add_filter( 'widget_update_callback', array( __CLASS__, 'save' ), 5, 3 );
	}

	/**
	 * Renders additional widget option fields.
	 *
	 * @param $widget
	 * @param $return
	 * @param $instance
	 */
	public static function fields( $widget, $return, $instance ) {

		$allowed_user_roles = Roles::allowed_user_roles();

		wp_nonce_field( 'jpcc-menu-editor-nonce', 'jpcc-menu-editor-nonce' );

		$which_users_options = array(
			''           => __( 'Everyone', 'content-control' ),
			'logged_out' => __( 'Logged Out Users', 'content-control' ),
			'logged_in'  => __( 'Logged In Users', 'content-control' ),
		);

		$instance = Widget::parse_options( $instance ); ?>

		<p class="widget_options-which_users">

			<label for="<?php echo $widget->get_field_id( 'which_users' ); ?>">

				<?php _e( 'Who can see this widget?', 'content-control' ); ?><br />

				<select name="<?php echo $widget->get_field_name( 'which_users' ); ?>" id="<?php echo $widget->get_field_id( 'which_users' ); ?>" class="widefat">
					<?php foreach ( $which_users_options as $option => $label ) : ?>
						<option value="<?php echo $option; ?>" <?php selected( $option, $instance['which_users'] ); ?>>
							<?php echo esc_html( $label ); ?>
						</option>
					<?php endforeach; ?>
				</select>

			</label>

		</p>

		<p class="widget_options-roles">

			<?php _e( 'Choose which roles can see this widget', 'content-control' ); ?><br />

			<?php foreach ( $allowed_user_roles as $option => $label ) : ?>
				<label>
					<input type="checkbox" name="<?php echo $widget->get_field_name( 'roles' ); ?>[]" value="<?php echo $option; ?>" <?php checked( in_array( $option, $instance['roles'] ), true ); ?>/>
					<?php echo esc_html( $label ); ?>
				</label>
			<?php endforeach; ?>

		</p>

		<?php
	}

	/**
	 * Validates & saves additional widget options.
	 *
	 * @param $instance
	 * @param $new_instance
	 *
	 * @return array|bool
	 */
	public static function save( $instance, $new_instance, $old_instance ) {

		if (isset( $_POST['jpcc-menu-editor-nonce'] ) && wp_verify_nonce( $_POST['jpcc-menu-editor-nonce'], 'jpcc-menu-editor-nonce' ) ) {
			$new_instance = Widget::parse_options( $new_instance );
			$instance['which_users'] = $new_instance['which_users'];
			$instance['roles'] = $new_instance['roles'];

			if ( $instance['which_users'] == 'logged_in' ) {

				$allowed_roles = Roles::allowed_user_roles();

				// Validate chosen roles and remove non-allowed roles.
				foreach ( (array) $instance['roles'] as $key => $role ) {
					if ( ! array_key_exists( $role, $allowed_roles ) ) {
						unset( $instance['roles'][ $key ] );
					}
				}

			} else {
				unset( $instance['roles'] );
			}
		} else {
			$old_instance = Widget::parse_options( $old_instance );
			$instance['which_users'] = $old_instance['which_users'];

			if ( empty( $old_instance['roles'] ) ) {
				unset( $instance['roles'] );
			} else {
				$instance['roles'] = $old_instance['roles'];
			}
		}

		return $instance;
	}

}
Back to Directory File Manager