File "class-checkbox.php"
Full path: /home/dora/public_html/wp-content/plugins/wp-grid-builder/includes/settings/fields/class-checkbox.php
File size: 2.38 KB
MIME-type: --
Charset: utf-8
<?php
/**
* Checkbox field
*
* @package WP Grid Builder
* @author Loïc Blascos
* @copyright 2019-2022 Loïc Blascos
*/
namespace WP_Grid_Builder\Includes\Settings\Fields;
use WP_Grid_Builder\Includes\Helpers;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Settings API Field
*
* @class WP_Grid_Builder\Includes\Settings\Fields\Checkbox
* @since 1.0.0
* @see WP_Grid_Builder\Includes\Settings\Field
*/
class Checkbox extends Field {
/**
* Render HTML field
*
* @since 1.0.0
* @access public
*
* @param array $args Holds field parameters.
*/
public function render( $args ) {
$list = isset( $args['icons'] );
$class = $list ? 'list' : 'checkbox';
echo '<input type="hidden" id="' . esc_attr( $args['uid'] ) . '" name="' . esc_attr( $args['name'] ) . '" value="">';
echo '<ul class="wpgb-checkbox-list ' . sanitize_html_class( $list ? 'wpgb-list' : '' ) . '">';
foreach ( $args['options'] as $key => $val ) {
$uid = 'wpgb-' . uniqid();
echo '<li class="' . sanitize_html_class( 'wpgb-' . $class . '-item' ) . '">';
printf(
'<input type="checkbox" class="wpgb-input wpgb-checkbox wpgb-sr-only" id="%s" name="%s" value="%s" %s>',
esc_attr( $uid ),
esc_attr( $args['name'] ),
esc_attr( $key ),
checked( in_array( (string) $key, (array) $args['value'], true ), 1, 0 )
);
echo '<label for="' . esc_attr( $uid ) . '">';
Helpers::get_icon( 'check' );
if ( $list ) {
echo '<svg><use xlink:href="' . esc_url( $args['icons'][ $key ] ) . '"></use></svg>';
}
echo '<span>' . esc_html( $val ) . '</span>';
echo '</label>';
echo '</li>';
}
echo '</ul>';
}
/**
* Normalize field parameters
*
* @since 1.0.0
* @access public
*
* @param array $field Holds field parameters.
* @return array
*/
public function normalize( $field ) {
return wp_parse_args(
$field,
[
'default' => [],
'options' => [],
'multiple' => true,
]
);
}
/**
* Sanitize field value
*
* @since 1.0.0
* @access public
*
* @param mixed $val Field value.
* @param array $args Holds field parameters.
* @return array
*/
public function sanitize( $val, $args = [] ) {
$new_val = [];
foreach ( (array) $val as $v ) {
$new_val[] = array_key_exists( $v, $args['options'] ) ? $v : null;
}
return array_map( 'sanitize_text_field', array_filter( $new_val ) );
}
}