File: /var/www/vfconf/wp-content/plugins/so-widgets-bundle/base/inc/fields/select.class.php
<?php
/**
* Class SiteOrigin_Widget_Field_Select
*/
class SiteOrigin_Widget_Field_Select extends SiteOrigin_Widget_Field_Base {
/**
* The list of options which may be selected.
*
* @var array
*/
protected $options;
/**
* If present, this string is included as a disabled (not selectable) value at the top of the list of options. If
* there is no default value, it is selected by default. You might even want to leave the label value blank when
* you use this.
*
* @var string
*/
protected $prompt;
/**
* Determines whether this is a single or multiple select field.
*
* @var bool
*/
protected $multiple;
/**
* Determines whether this is a single or multiple select field.
*
* @var bool
*/
protected $select2;
public function enqueue_scripts() {
if ( empty( $this->select2 ) ) {
return;
}
wp_enqueue_script( 'select2' );
wp_enqueue_script(
'so-select-field',
plugin_dir_url( __FILE__ ) . 'js/select-field' . SOW_BUNDLE_JS_SUFFIX . '.js',
array( 'jquery' ),
SOW_BUNDLE_VERSION
);
wp_enqueue_style(
'so-select-field',
plugin_dir_url( __FILE__ ) . 'css/select-field.css',
array(),
SOW_BUNDLE_VERSION
);
}
/**
* Get the field name for the select element.
*
* This method returns the field name for the select element. If the
* select element supports multiple selections and the current context is
* not from Page Builder, '[]' is appended to the field name to indicate
* that it is an array. Otherwise, the field name is returned as is.
*
* @return string The field name for the select element.
*/
private function get_select_field_name() {
if (
! empty( $this->multiple ) &&
filter_input( INPUT_POST, 'action' ) !== 'so_panels_widget_form'
) {
return $this->element_name . '[]';
}
return $this->element_name;
}
protected function render_field( $value, $instance ) {
if ( ! empty( $this->select2 ) ) {
if ( ! empty( $this->input_css_classes ) ) {
$this->input_css_classes = array();
}
$this->input_css_classes[] = 'sow-select2';
}
?>
<select
name="<?php echo esc_attr( $this->get_select_field_name() ); ?>"
id="<?php echo esc_attr( $this->element_id ); ?>"
class="siteorigin-widget-input siteorigin-widget-input-select<?php if ( ! empty( $this->input_css_classes ) ) {
echo ' ' . implode( ' ', $this->input_css_classes );
} ?>"
<?php if ( ! empty( $this->multiple ) ) {
echo 'multiple';
} ?>>
<?php if ( empty( $this->multiple ) && isset( $this->prompt ) ) { ?>
<option value="default" disabled="disabled" selected="selected"><?php echo esc_html( $this->prompt ); ?></option>
<?php } ?>
<?php if ( isset( $this->options ) && ! empty( $this->options ) ) { ?>
<?php foreach ( $this->options as $key => $val ) { ?>
<?php
if ( is_array( $value ) ) {
$selected = selected( true, in_array( $key, $value ), false );
} else {
$selected = selected( $key, $value, false );
} ?>
<option value="<?php echo esc_attr( $key ); ?>" <?php echo $selected; ?>><?php echo esc_html( $val ); ?></option>
<?php } ?>
<?php } ?>
</select>
<?php
}
protected function sanitize_field_input( $value, $instance ) {
$values = is_array( $value ) ? $value : array( $value );
$keys = array_keys( $this->options );
$sanitized_value = array();
foreach ( $values as $value ) {
if ( ! in_array( $value, $keys ) ) {
$sanitized_value[] = isset( $this->default ) ? $this->default : false;
} else {
$sanitized_value[] = $value;
}
}
return count( $sanitized_value ) == 1 ? $sanitized_value[0] : $sanitized_value;
}
}