58 lines
1.4 KiB
PHP
Raw Normal View History

2018-01-26 15:50:15 +01:00
<?php
/**
* Class SiteOrigin_Widget_Field_Checkbox
*/
class SiteOrigin_Widget_Field_Checkboxes extends SiteOrigin_Widget_Field_Base {
protected $options;
protected function render_field( $value, $instance ) {
if( empty($value) ) {
$value = array();
}
if( !is_array( $value ) ) {
$value = array( $value );
}
$i = 0;
foreach( $this->options as $id => $label ) {
?>
<label for="<?php echo esc_attr( $this->element_id ) ?>-<?php echo esc_attr( $id ) ?>" class="so-checkbox-label">
<input
type="checkbox"
class="siteorigin-widget-input"
name="<?php echo esc_attr( $this->element_name ) ?>[<?php echo esc_attr( $i++ ) ?>]"
value="<?php echo esc_attr( $id ) ?>"
id="<?php echo esc_attr( $this->element_id ) ?>-<?php echo esc_attr( $id ) ?>"
<?php checked( in_array( $id, $value ) ) ?>
/>
<?php echo( $label ) ?>
</label>
<?php
}
}
protected function sanitize_field_input( $value, $instance ) {
if( empty( $value ) ) {
$value = array();
}
$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 $sanitized_value;
}
}