<?php
add_action( 'widgets_init', 'tie_slider_widget' );
function tie_slider_widget() {
	register_widget( 'tie_slider' );
}
class tie_slider extends WP_Widget {

	public function __construct(){
		$widget_ops 	= array( 'classname' => 'tie-slider' );
		$control_ops 	= array( 'width' => 250, 'height' => 350, 'id_base' => 'tie-slider-widget' );
		parent::__construct( 'tie-slider-widget',THEME_NAME .' - '.__( 'Slider' , 'tie'), $widget_ops, $control_ops );
	}

	public function widget( $args, $instance ) {
		extract( $args );

		$no_of_posts   = ! empty( $instance['no_of_posts'] )   ? $instance['no_of_posts']    : 5;
		$cats_id       = ! empty( $instance['cats_id'] )       ?  $instance['cats_id']       : '';
		$custom_slider = ! empty( $instance['custom_slider'] ) ?  $instance['custom_slider'] : '';

		global $post;
		$original_post = $post;

		$argss 			= array('posts_per_page'=> $no_of_posts , 'cat' => $cats_id, 'no_found_rows' => 1 );
		$featured_query = new WP_Query( $argss );

	if( empty($custom_slider) ):
	if( $featured_query->have_posts() ) : ?>
	<div class="flexslider" id="<?php echo $args['widget_id']; ?>">
		<ul class="slides">
		<?php while ( $featured_query->have_posts() ) : $featured_query->the_post()?>
			<li>
			<?php if ( function_exists("has_post_thumbnail") && has_post_thumbnail() ) : ?>
				<a href="<?php the_permalink(); ?>">
				<?php the_post_thumbnail( 'tie-large' ); ?>
				</a>
			<?php endif; ?>
				<div class="slider-caption">
					<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
				</div>
			</li>
		<?php endwhile;?>
		</ul>
	</div>
	<?php endif; ?>
	<?php else :
		$custom_slider_args 	= array( 'post_type' => 'tie_slider', 'p' => $custom_slider, 'no_found_rows' => 1  ) ;
		$custom_slider_query 	= new WP_Query( $custom_slider_args );
	?>
	<div class="flexslider" id="<?php echo $args['widget_id']; ?>">
		<ul class="slides">
		<?php while ( $custom_slider_query->have_posts() ) : $custom_slider_query->the_post();
			$custom = get_post_custom($post->ID);
			$slider = unserialize( $custom["custom_slider"][0] );
			$number = count($slider);

			if( $slider ){
			foreach( $slider as $slide ): ?>
			<li>
				<?php if( !empty( $slide['link'] ) ):?><a href="<?php  echo stripslashes( $slide['link'] )  ?>"><?php endif; ?>
				<img src="<?php echo tie_slider_img_src( $slide['id'] , 'tie-large' ) ?>" alt="" />
				<?php if( !empty( $slide['link'] ) ):?></a><?php endif; ?>
				<?php if( !empty( $slide['title'] ) || !empty( $slide['caption'] ) ) :?>
				<div class="slider-caption">
					<?php if( !empty( $slide['title'] ) ):?><h2><?php if( !empty( $slide['link'] ) ):?><a href="<?php  echo stripslashes( $slide['link'] )  ?>"><?php endif; ?><?php  echo stripslashes( $slide['title'] )  ?><?php if( !empty( $slide['link'] ) ):?></a><?php endif; ?></h2><?php endif; ?>
					<?php if( !empty( $slide['caption'] ) ):?><p><?php echo stripslashes($slide['caption']) ; ?></p><?php endif; ?>
				</div>
				<?php endif; ?>
			</li>
			<?php endforeach;
			}?>
		<?php endwhile;?>
		</ul>
	</div>
	<?php endif;

	$post = $original_post;
	wp_reset_query();
	?>
	<script>
	jQuery(document).ready(function() {
	  jQuery('#<?php echo $args['widget_id']; ?>').flexslider({
		animation: "fade",
		slideshowSpeed: 7000,
		animationSpeed: 600,
		randomize: false,
		pauseOnHover: true,
		prevText: "",
		nextText: "",
		controlNav: false
	  });
	});
	</script>
	<?php
	}

	public function update( $new_instance, $old_instance ) {
		$instance = $old_instance;
		$instance['cat_posts_title'] = ! empty( $new_instance['cat_posts_title'] ) ? $new_instance['cat_posts_title'] : '';
		$instance['no_of_posts']     = ! empty( $new_instance['no_of_posts'] )     ? $new_instance['no_of_posts']     : '';
		$instance['custom_slider']   = ! empty( $new_instance['custom_slider'] )   ? $new_instance['custom_slider']   : '';
		$instance['cats_id']         = ! empty( $new_instance['cats_id'] )         ? implode(',' , $new_instance['cats_id'] ) : '';

		return $instance;
	}

	public function form( $instance ) {
		$defaults = array( 'no_of_posts' => '5' , 'cats_id' => '1' );
		$instance = wp_parse_args( (array) $instance, $defaults );

		$categories_obj = get_categories();
		$categories 	= array();

		foreach ($categories_obj as $pn_cat) {
			$categories[$pn_cat->cat_ID] = $pn_cat->cat_name;
		}

		global $post;
		$original_post = $post;

		$sliders = array();
		$custom_slider = new WP_Query( array( 'post_type' => 'tie_slider', 'posts_per_page' => -1, 'no_found_rows' => 1  ) );
		while ( $custom_slider->have_posts() ) {
			$custom_slider->the_post();
			$sliders[get_the_ID()] = get_the_title();
		}
		$post = $original_post;
		wp_reset_query();
		?>

		<p>
			<label for="<?php echo $this->get_field_id( 'no_of_posts' ); ?>"><?php _e( 'Number of posts to show:' , 'tie') ?> </label>
			<input id="<?php echo $this->get_field_id( 'no_of_posts' ); ?>" name="<?php echo $this->get_field_name( 'no_of_posts' ); ?>" value="<?php if( !empty($instance['no_of_posts']) ) echo $instance['no_of_posts']; ?>" type="text" size="3" />
		</p>
		<p>
			<?php 
				$cats_id = array();
				if( ! empty( $instance['cats_id'] ) && ! is_array( $instance['cats_id'] ) ){
					$cats_id = explode ( ',' , $instance['cats_id'] ) ;
				}
			?>
			<label for="<?php echo $this->get_field_id( 'cats_id' ); ?>"><?php _e( 'Category:' , 'tie') ?></label>
			<select multiple="multiple" id="<?php echo $this->get_field_id( 'cats_id' ); ?>[]" name="<?php echo $this->get_field_name( 'cats_id' ); ?>[]">
				<?php foreach ($categories as $key => $option) { ?>
				<option value="<?php echo $key ?>" <?php if ( in_array( $key , $cats_id ) ) { echo ' selected="selected"' ; } ?>><?php echo $option; ?></option>
				<?php } ?>
			</select>
		</p>
		<?php if(!empty($instance['custom_slider']))  $slider = $instance['custom_slider'] ; ?>
		<p>
			<label for="<?php echo $this->get_field_id( 'custom_slider' ); ?>"><?php _e( 'Custom Slider:' , 'tie') ?> </label>
			<?php if( !empty($sliders) ):  ?>
			<select id="<?php echo $this->get_field_id( 'custom_slider' ); ?>" name="<?php echo $this->get_field_name( 'custom_slider' ); ?>">
				<option value=""><?php _e( 'Disable' , 'tie') ?></option>
				<?php foreach ($sliders as $key => $option) { ?>
				<option value="<?php echo $key ?>" <?php if ( !empty( $slider ) && ( $key == $slider ) )  { echo ' selected="selected"' ; } ?>><?php echo $option; ?></option>
				<?php } ?>
			</select>
			<?php else: ?>
			<span style="color:#FF0000;"><?php _e( 'Add Custom sliders first .' , 'tie') ?></span>
			<?php endif; ?>
		</p>
	<?php
	}
}
?>
