<?php
/**
 * Custom Info Widget
 *
 * @package Theme Palace
 * @subpackage Travel Insight Pro
 * @since Travel Insight Pro 1.0
 */

if ( ! class_exists( 'Travel_Insight_Pro_Custom_Info_Widget' ) ) :
	/**
	 * Custom Info class.
	 *
	 * @since 1.0
	 */
	class Travel_Insight_Pro_Custom_Info_Widget extends WP_Widget {

		/**
		 * Sets up the widgets name etc
		 */
		public function __construct() {
			$widget_ops = array(
				'classname' => 'custom_info_widget',
				'description' => esc_html__( 'A widget to show basic informations with icons.', 'travel-insight-pro' ),
			);
			parent::__construct( 'custom_info_widget', esc_html__( 'TP : Custom Info', 'travel-insight-pro' ), $widget_ops );
		}

		/**
		 * Outputs the content of the widget
		 *
		 * @param array $args
		 * @param array $instance
		 */
		public function widget( $args, $instance ) {
			// outputs the content of the widget
			if ( ! isset( $args['widget_id'] ) ) {
				$args['widget_id'] = $this->id;
			}
			$title = ( ! empty( $instance['title'] ) ) ? $instance['title'] : esc_html__( 'Contact Information', 'travel-insight-pro' );

			echo $args['before_widget'];
				if ( ! empty( $title ) ) {
					echo $args['before_title'] . esc_html( $title ) . $args['after_title'];
				}

			$number = isset( $instance['number'] ) ? absint( $instance['number'] ) : 3; ?>
			<ul class="address">
				<?php
				for ( $i=1; $i <= $number ; $i++ ) {
					$contact_value = ( ! empty( $instance['contact_value' . '-' . $i] ) ) ? $instance['contact_value' . '-' . $i] : '';
					$icon = ( ! empty( $instance['icon' . '-' . $i] ) ) ? $instance['icon' . '-' . $i] : ''; ?>
		         <li>
		         	<?php 
		         	echo travel_insight_pro_get_svg( array( 'icon' => esc_attr( $icon ) ) );
		         	echo esc_html( $contact_value );
		         	?>	
		         </li>
				<?php } ?>
	     </ul>
			<?php
			echo $args['after_widget'];
		}

		/**
		 * Outputs the options form on admin
		 *
		 * @param array $instance The widget options
		 */
		public function form( $instance ) {
			$number = isset( $instance['number'] ) ? absint( $instance['number'] ) : 3;
			$title     = isset( $instance['title'] ) ? esc_html( $instance['title'] ) : '';
		   ?>

			<p>
			   	<label for="<?php echo esc_attr( $this->get_field_id('title') ); ?>"><?php esc_html_e( 'Title:', 'travel-insight-pro' ); ?></label>
			   	<input class="widefat" id="<?php echo esc_attr( $this->get_field_id('title') ); ?>" name="<?php echo esc_attr( $this->get_field_name('title') ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" />
			</p>

			<p>
				<label for="<?php echo esc_attr( $this->get_field_id( 'number' ) ); ?>"><?php esc_html_e( 'Number of fields to show:', 'travel-insight-pro' ); ?></label>
				<input class="tiny-text" id="<?php echo esc_attr( $this->get_field_id( 'number' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'number' ) ); ?>" type="number" step="1" min="1" value="<?php echo absint( $number ); ?>" size="3" />
			</p>
		   	<?php 
		   	$icons = travel_insight_pro_icons_options();
		   	for ( $i=1; $i <= $number; $i++ ) {
		   		$icon_selected = isset( $instance['icon'. '-' . $i ] ) ? $instance['icon' . '-' . $i ] : '';?>
				<p>
					<label for="<?php echo esc_attr( $this->get_field_id( 'icon' . '-' . $i ) ); ?>"><?php printf( esc_html__( 'Select Icon %s :', 'travel-insight-pro' ), $i ); ?></label>

					<select id="<?php echo esc_attr( $this->get_field_id( 'icon' . '-' . $i ) ); ?>" class="widefat" name="<?php echo esc_attr( $this->get_field_name( 'icon' . '-' . $i ) ); ?>">
						<?php foreach ( $icons as $field => $value ) : ?>
							<option value="<?php echo esc_attr( $field ); ?>" <?php selected( $field, $icon_selected ); ?>><?php echo esc_html( $value ); ?></option>
						<?php endforeach; ?>
					</select>
					<small><?php esc_html_e( 'Please select icon for detail', 'travel-insight-pro' ); ?></small>
				</p>
			   <?php $contact_value = ! empty( $instance['contact_value'. '-' . $i] ) ? $instance['contact_value' . '-' . $i] : '';?>
				<p>
					<label for="<?php echo esc_attr( $this->get_field_id( 'contact_value' . '-' . $i ) ) . '-' . $i; ?>"><?php printf( esc_html__( 'Contact Info %s :', 'travel-insight-pro' ), $i ); ?></label>
					<textarea class="widefat" rows="2" cols="10" id="<?php echo esc_attr( $this->get_field_id('contact_value' . '-' . $i ) ); ?>" name="<?php echo esc_attr( $this->get_field_name('contact_value' . '-' . $i) ); ?>"><?php echo esc_textarea( $contact_value ); ?></textarea>
				</p>
		   <?php }?>

		   <?php
		}

		/**
		 * Processing widget options on save
		 *
		 * @param array $new_instance The new options
		 * @param array $old_instance The previous options
		 */
		public function update( $new_instance, $old_instance ) {
			// processes widget options to be saved
			$instance = $old_instance;
			$instance['title'] = sanitize_text_field( $new_instance['title'] );
			$instance['number'] = (int) $new_instance['number'];
			for ( $i=1; $i <= $instance['number'] ; $i++ ) {
				$instance['icon' . '-' . $i] = esc_attr( $new_instance['icon' . '-' . $i] );
				$instance['contact_value' . '-' . $i] = wp_kses_post( $new_instance['contact_value' . '-' . $i] );
			}
			return $instance;
		}
	}

endif;

function travel_insight_pro_register_Custom_Info_Widget() {
	register_widget( 'Travel_Insight_Pro_Custom_Info_Widget' );
}
add_action( 'widgets_init', 'travel_insight_pro_register_Custom_Info_Widget' );