File "class-settings.php"

Full Path: /home/romayxjt/public_html/wp-content/plugins/orderable/inc/vendor/iconic-onboard/inc/class-settings.php
File size: 9 KB
MIME-type: text/x-php
Charset: utf-8

<?php
/**
 * Settings
 *
 * @package iconic-onboard
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

if ( class_exists( 'Orderable_Onboard_Settings' ) ) {
	return;
}

/**
 * Orderable_Onboard_Settings.
 */
class Orderable_Onboard_Settings {
	/**
	 * Plugin slug.
	 *
	 * @var mixed
	 */
	protected static $plugin_slug;

	/**
	 * Template path.
	 *
	 * @var mixed
	 */
	protected static $template_path;

	/**
	 * Setting Defaults.
	 *
	 * @var array
	 */
	protected static $setting_defaults = array(
		'id'          => 'default_field',
		'title'       => 'Default Field',
		'desc'        => '',
		'std'         => '',
		'type'        => 'text',
		'placeholder' => '',
		'choices'     => array(),
		'class'       => '',
		'subfields'   => array(),
	);

	/**
	 * Initialize.
	 *
	 * @param array $args Configuration settings.
	 */
	public static function run( $args ) {
		self::$plugin_slug   = $args['plugin_slug'];
		self::$template_path = $args['plugin_path'] . '/inc/vendor/iconic-onboard/templates/';

		add_action( 'iconic_onboard_' . self::$plugin_slug . '_slide_settings', array( __CLASS__, 'add_settings' ) );
	}

	/**
	 * Returns $setting_defaults array.
	 *
	 * @return array
	 */
	public static function get_field_defaults() {
		return self::$setting_defaults;
	}

	/**
	 * Add Settings.
	 *
	 * @param array $slide Slide parameters.
	 */
	public static function add_settings( $slide ) {
		if ( ! $slide['slide']['fields'] || ! count( $slide['slide']['fields'] ) ) {
			return;
		}

		foreach ( $slide['slide']['fields'] as $slide_index => $field ) {
			$field          = wp_parse_args( $field, self::$setting_defaults );
			$field['id']    = sprintf( '%s_%s', 'iconic_onboard', $field['id'] );
			$field['value'] = isset( $field['default'] ) ? $field['default'] : '';
			$field['name']  = self::generate_field_name( $field['id'] );
			include self::$template_path . '/admin/single-field.php';
		}
	}

	/**
	 * Generate: Field ID
	 *
	 * @param mixed $id Field ID.
	 *
	 * @return string
	 */
	public static function generate_field_name( $id ) {
		return sprintf( '%s_settings[%s]', self::$plugin_slug, $id );
	}

	/**
	 * Do field method, if it exists
	 *
	 * @param array $args Field arguments.
	 */
	public static function do_field_method( $args ) {
		$generate_field_method = sprintf( 'generate_%s_field', $args['type'] );

		if ( method_exists( __CLASS__, $generate_field_method ) ) {
			self::$generate_field_method( $args );
		}
	}

	/**
	 * Generate: Text field
	 *
	 * @param array $args Text field arguments.
	 */
	public static function generate_text_field( $args ) {
		$args['value'] = esc_attr( stripslashes( $args['value'] ) );

		echo '<input type="text" name="' . esc_attr( $args['name'] ) . '" id="' . esc_attr( $args['id'] ) . '" value="' . esc_attr( $args['value'] ) . '" placeholder="' . esc_attr( $args['placeholder'] ) . '" class="regular-text ' . esc_attr( $args['class'] ) . '" />';

		self::generate_description( $args['desc'] );
	}


	/**
	 * Generate: Select field
	 *
	 * @param array $args Select field arguments.
	 */
	public static function generate_select_field( $args ) {
		$args['value'] = esc_html( esc_attr( $args['value'] ) );

		echo '<select name="' . esc_attr( $args['name'] ) . '" id="' . esc_attr( $args['id'] ) . '" class="' . esc_attr( $args['class'] ) . '">';

		foreach ( $args['choices'] as $value => $text ) {
			if ( is_array( $text ) ) {
				if ( ! isset( $text['group_label'] ) ) {
					continue;
				}

				echo '<optgroup label="' . esc_attr( $text['group_label'] ) . '">';
				foreach ( $text['values'] as $value => $text ) {

					echo sprintf( '<option value="%s" %s>%s</option>', esc_attr( $value ), selected( $value, $args['value'], false ), esc_html( $text ) );
				}
				echo '</optgroup>';
			} else {
				echo sprintf( '<option value="%s" %s>%s</option>', esc_attr( $value ), selected( $value, $args['value'], false ), esc_html( $text ) );
			}
		}

		echo '</select>';

		self::generate_description( $args['desc'] );
	}

	/**
	 * Generate: Radio field
	 *
	 * @param array $args Radio field arguments.
	 */
	public static function generate_radio_field( $args ) {
		$args['value'] = esc_html( esc_attr( $args['value'] ) );

		echo '<ul class="iconic-onboard-fields-list iconic-onboard-fields-list--radio iconic-onboard-fields-list--bordered">';

		foreach ( $args['choices'] as $value => $text ) {
			$field_id = sprintf( '%s_%s', $args['id'], $value );

			echo sprintf( '<li><label><input type="radio" name="%s" id="%s" value="%s" class="%s" %s> %s</label></li>', esc_attr( $args['name'] ), esc_attr( $field_id ), esc_attr( $value ), esc_attr( $args['class'] ), checked( $value, $args['value'], false ), esc_html( $text ) );
		}

		echo '</ul>';

		self::generate_description( $args['desc'] );
	}

	/**
	 * Generate: Checkbox field
	 *
	 * @param array $args Checkbox field arguments.
	 */
	public static function generate_checkbox_field( $args ) {
		$args['value'] = esc_attr( stripslashes( $args['value'] ) );

		echo '<input type="hidden" name="' . esc_attr( $args['name'] ) . '" value="0" />';
		echo '<label><input type="checkbox" name="' . esc_attr( $args['name'] ) . '" id="' . esc_attr( $args['id'] ) . '" value="1" class="' . esc_attr( $args['class'] ) . '" ' . checked( $args['value'], true, false ) . '> ' . esc_html( $args['desc'] ) . '</label>';
	}

	/**
	 * Generate: Checkboxes field
	 *
	 * @param array $args Checkboxes field arguments.
	 */
	public static function generate_checkboxes_field( $args ) {
		echo '<input type="hidden" name="' . esc_attr( $args['name'] ) . '" value="0" />';

		echo '<ul class="iconic-onboard-fields-list iconic-onboard-fields-list--checkboxes iconic-onboard-fields-list--bordered">';

		foreach ( $args['choices'] as $value => $text ) {
			$checked  = is_array( $args['value'] ) && in_array( $value, $args['value'], true );
			$field_id = sprintf( '%s_%s', $args['id'], $value );

			echo sprintf( '<li><label><input type="checkbox" name="%s[]" id="%s" value="%s" class="%s" %s> %s</label></li>', esc_attr( $args['name'] ), esc_attr( $field_id ), esc_attr( $value ), esc_attr( $args['class'] ), checked( $checked, true, false ), esc_html( $text ) );
		}

		echo '</ul>';

		self::generate_description( $args['desc'] );
	}

	/**
	 * Generate Image Checkboxes
	 *
	 * @param array $args Image checkboxes field arguments.
	 *
	 * @return void
	 */
	public static function generate_image_checkboxes_field( $args ) {

		echo '<input type="hidden" name="' . esc_attr( $args['name'] ) . '" value="0" />';

		echo '<ul class="iconic-onboard-fields-list iconic-onboard-fields-list--image-checkboxes iconic-onboard-fields-list--grid iconic-onboard-fields-list--cols">';

		foreach ( $args['choices'] as $value => $choice ) {
			$checked  = is_array( $args['value'] ) && in_array( $value, $args['value'] );
			$field_id = sprintf( '%s_%s', $args['id'], $value );

			echo sprintf(
				'<li>
					<label>
						<img src="%s" >
						<input type="checkbox" name="%s[]" id="%s" value="%s" class="%s" %s> 
						%s
					</label>
				</li>',
				esc_url( $choice['image'] ),
				esc_attr( $args['name'] ),
				esc_attr( $field_id ),
				esc_attr( $value ),
				esc_attr( $args['class'] ),
				checked( $checked, true, false ),
				esc_html( $choice['text'] )
			);
		}

		echo '</ul>';

		self::generate_description( $args['desc'] );
	}

	/**
	 * Generate: Image Radio field
	 *
	 * @param array $args Image radio field arguments.
	 */
	public static function generate_image_radio_field( $args ) {
		$args['value'] = esc_html( esc_attr( $args['value'] ) );
		$count         = count( $args['choices'] );
		echo sprintf( '<ul class="iconic-onboard-fields-list iconic-onboard-fields-list--image-radio iconic-onboard-fields-list--grid iconic-onboard-fields-list--cols iconic-onboard-fields-list--col-%s ">', esc_attr( $count ) );

		foreach ( $args['choices'] as $value => $choice ) {
			$field_id = sprintf( '%s_%s', $args['id'], $value );
			$checked  = $value === $args['value'];

			echo sprintf(
				'<li class="iconic-onboard-fields-list__item %s">				
								<label>
									<div class="iconic-onboard-fields-list-image-radio__img_wrap">
										<img src="%s">
									</div>
									<input type="radio" name="%s" id="%s" value="%s" class="%s" %s>
									%s
								</label>
							</li>	
							',
				( $checked ? 'iconic-onboard-fields-list__item--checked' : '' ),
				esc_url( $choice['image'] ),
				esc_attr( $args['name'] ),
				esc_attr( $field_id ),
				esc_attr( $value ),
				esc_attr( $args['class'] ),
				checked( $checked, true, false ),
				esc_html( $choice['text'] )
			);
		}
		echo '</ul>';
		self::generate_description( $args['desc'] );
	}

	/**
	 * Generate: Custom field
	 *
	 * @param array $args Custom field arguments.
	 */
	public static function generate_custom_field( $args ) {
		echo filter_var( $args['default'] ); // filter_var used to bypass phpcs.
	}

	/**
	 * Generate: Description
	 *
	 * @param string $description Field description text.
	 */
	public static function generate_description( $description ) {
		if ( $description && '' !== $description ) {
			echo '<p class="description">' . esc_html( $description ) . '</p>';
		}
	}

}