<?php if ( ! defined( 'ABSPATH' ) ) { die; } // Cannot access directly.
/**
 *
 * Field: image_select
 *
 * @since 1.0.0
 * @version 1.0.0
 *
 */
if ( ! class_exists( 'WDPOP_CORE_Field_image_select' ) ) {
  class WDPOP_CORE_Field_image_select extends WDPOP_Fields {

    public function __construct( $field, $value = '', $unique = '', $where = '', $parent = '' ) {
      parent::__construct( $field, $value, $unique, $where, $parent );
    }

    public function render() {

      $args = wp_parse_args( $this->field, array(
        'multiple' => false,
        'inline'   => false,
        'options'  => array(),
      ) );

      $inline = ( $args['inline'] ) ? ' wdpop_core--inline-list' : '';

      $value = ( is_array( $this->value ) ) ? $this->value : array_filter( (array) $this->value );

      echo wp_kses_post($this->field_before());

      if ( ! empty( $args['options'] ) ) {

        echo '<div class="wdpop_core-siblings wdpop_core--image-group'. esc_attr( $inline ) .'" data-multiple="'. esc_attr( $args['multiple'] ) .'">';

        $num = 1;

        foreach ( $args['options'] as $key => $option ) {

          $type    = ( $args['multiple'] ) ? 'checkbox' : 'radio';
          $extra   = ( $args['multiple'] ) ? '[]' : '';
          $active  = ( in_array( $key, $value ) ) ? ' wdpop_core--active' : '';
          $checked = ( in_array( $key, $value ) ) ? ' checked' : '';

          if(is_array($option)){
            $title = $url = $alt = $tooltip = $tooltip_class = '';
            
            $get_title = $option['title'];
            if($get_title) $title = $get_title;
            
            $get_alt   = $option['alt'];
            if($get_alt) $alt = $get_alt;
            
            $get_url   = $option['url'];
            if($get_url) $url = $get_url;
            
            $get_tooltip   = $option['tooltip'];
            if($get_tooltip){
              $tooltip = $get_tooltip;
              $tooltip_class = ' wdpop_core-help';
            }
            
            
            if(!$alt) $alt = 'img-'. esc_attr( $num++ );
            
            echo '<div class="wdpop_core--sibling wdpop_core--image wdpop_core-image-with--title'. esc_attr( $tooltip_class .$active ) .'">';
              echo '<figure>';
                echo '<img src="'. esc_url( $url ) .'" alt="'. esc_attr( $alt ) .'" class="wdpop_core-image-with--title" />';
                echo '<input type="'. esc_attr( $type ) .'" name="'. esc_attr( $this->field_name( $extra ) ) .'" value="'. esc_attr( $key ) .'"'. wp_kses_post($this->field_attributes()) . esc_attr( $checked ) .'/>';
                
                if($tooltip) echo '<div class="wdpop_core-help-text-wrap"><span class="wdpop_core-help-text">'. esc_html($tooltip)  .'</span></div>';
                  
                echo '</figure>';
                
                if($title) echo '<figcaption>'. wp_kses_post($title) .'</figcaption>';
              
            echo '</div>';                 
          }else{
            echo '<div class="wdpop_core--sibling wdpop_core--image'. esc_attr( $active ) .'">';
              echo '<figure>';
                echo '<img src="'. esc_url( $option ) .'" alt="img-'. esc_attr( $num++ ) .'" />';
                echo '<input type="'. esc_attr( $type ) .'" name="'. esc_attr( $this->field_name( $extra ) ) .'" value="'. esc_attr( $key ) .'"'. wp_kses_post($this->field_attributes()) . esc_attr( $checked ) .'/>';
              echo '</figure>';
            echo '</div>';            
          }
          
          
        }

        echo '</div>';

      }

      echo wp_kses_post($this->field_after());

    }

    public function output() {

      $output    = '';
      $bg_image  = array();
      $important = ( ! empty( $this->field['output_important'] ) ) ? '!important' : '';
      $elements  = ( is_array( $this->field['output'] ) ) ? join( ',', $this->field['output'] ) : $this->field['output'];

      if ( ! empty( $elements ) && isset( $this->value ) && $this->value !== '' ) {
        $output = $elements .'{background-image:url('. $this->value .')'. $important .';}';
      }

      $this->parent->output_css .= $output;

      return $output;

    }

  }
}
