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>';
}
}
}