<?php
/**
 * Recent Post
 *
 * @since 1.0
 */
class Nimbus_Recent_Portfolio_Widget extends WP_Widget {
        /** constructor */
    function __construct() {
        $widget_ops = array(
            'classname'   => 'nb_recent_portfolio',
            'description' => __('Shows recent posts in sidebar.','nimbus')
        );
        parent::__construct('nb_recent_portfolio', __('Nimbus - Recent Portfolio','nimbus'), $widget_ops);
    }
    function widget($args, $instance) {

            extract( $args );

            $title = apply_filters( 'widget_title', empty($instance['title']) ? 'Recent Portfolio' : $instance['title'], $instance, $this->id_base);
            if ( ! $number = absint( $instance['number'] ) ) $number = 5;
            if( ! $cats = $instance["cats"] )  $cats='';

            if($cats){
                $cat_query = implode(',', $cats);
            } else {
                $cat_query = '';
            }

            $my_args = array(
                'post_type'         => 'portfolio',
                'posts_per_page'    => $number,
                'post_status'       => 'publish',
            );

            if ( $cat_query )  {
                $args['tax_query'] = array(
                    array(
                        'taxonomy' => 'portfolio_category',
                        'field'    => 'term_id',
                        'terms'    => array($cat_query),
                        )
                    );
            }


            $adv_recent_posts = null;
            $adv_recent_posts = new WP_Query($my_args);

            echo $args['before_widget'];
            if ( $title ) {
                echo $args['before_title'] . $title . $args['after_title'];
            }
            echo '<ul class="list-unstyled bottom-0">'."\n";
            $post_count = 0;
            while ( $adv_recent_posts->have_posts() ) : $adv_recent_posts->the_post();

            ?>

                <li <?php post_class('clearfix'); ?>>
                    <div class="nb-portfolio-media">
                        <a href="<?php the_permalink();?>"><?php the_post_thumbnail('nimbus-grid');?></a>
                    </div><!-- // .post-image -->
                </li><!-- // .clearfix -->
        <?php
            endwhile;
            echo '</ul>'."\n";
            wp_reset_query();
            echo $args['after_widget'];
        }
        function update( $new_instance, $old_instance ) {
            $instance = $old_instance;
            $instance['title'] = strip_tags($new_instance['title']);
            $instance['cats'] = $new_instance['cats'];
            $instance['number'] = absint($new_instance['number']);
            return $instance;
        }

        function form( $instance ) {
            $title = isset($instance['title']) ? esc_attr($instance['title']) : 'Recent Portfolio';
            $number = isset($instance['number']) ? absint($instance['number']) : 5;
        ?>

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

        <p><label for="<?php echo $this->get_field_id('number'); ?>"><?php _e('Number of posts to show:','nimbus'); ?></label>
        <input id="<?php echo $this->get_field_id('number'); ?>" name="<?php echo $this->get_field_name('number'); ?>" type="text" value="<?php echo $number; ?>" size="3" /></p>

        <p>
            <label for="<?php echo $this->get_field_id('cats'); ?>"><?php _e('Categories:','nimbus');?>
                <?php
                     $cats = '';
                     $categories =  get_terms('portfolio_category',array( 'parent' => 0 , 'hide_empty'    => false,));
                     echo "<br/>";
                     foreach ($categories as $cat) {
                         $option='<input type="checkbox" id="'. $this->get_field_id( 'cats' ) .'[]" name="'. $this->get_field_name( 'cats' ) .'[]"';
                            if (isset($instance['cats'])) {
                                foreach ($instance['cats'] as $cats) {
                                    if($cats==$cat->term_id) {
                                         $option=$option.' checked="checked"';
                                    }
                                }
                            }
                            $option .= ' value="'.$cat->term_id.'" />';
                            $option .= $cat->name;
                            $option .= '<br />';
                            echo $option;
                         }
                    ?>
            </label>
        </p>

        <?php }
}

/**
 * Flickr Images.
 *
 * @since 1.0
 */
class Nimbus_Flickr_Images extends WP_Widget {
        /** constructor */
    function __construct() {
        $widget_ops = array(
            'classname'   => 'nb_flickr_images widget-flickr',
            'description' => __('Display Flickr images','nimbus')
        );
        parent::__construct('nimbus_flickr_images', __('Nimbus - Flickr Images','nimbus'), $widget_ops);
    }
    function widget($args, $instance) {
            extract( $args );
            $title = apply_filters( 'widget_title', empty($instance['title']) ? 'Flickr' : $instance['title'], $instance, $this->id_base);

            echo $args['before_widget'];
            if ( $title ) {
                echo $args['before_title'] . $title . $args['after_title'];
            }
            echo '<div class="flickr-widget">'."\n";
            echo '<div class="clearfix"><script type="text/javascript" src="http://www.flickr.com/badge_code_v2.gne?count='.$instance['number_img'].'&amp;display=latest&amp;size=s&amp;layout=x&amp;source=user&amp;user='.$instance['flickr_id'].'"></script></div>';
            echo '</div>'."\n";
            echo $args['after_widget'];
        }
        function update( $new_instance, $old_instance ) {
            $instance = $old_instance;
            $instance['title'] = strip_tags($new_instance['title']);
            $instance['flickr_id'] = strip_tags($new_instance['flickr_id']);
            $instance['number_img'] = strip_tags($new_instance['number_img']);
            return $instance;
        }

        function form( $instance ) {
            $title = isset($instance['title']) ? esc_attr($instance['title']) : 'Flickr';
            $flickr_id = isset($instance['flickr_id']) ? esc_attr($instance['flickr_id']) : '';
            $number_img = isset($instance['number_img']) ? esc_attr($instance['number_img']) : '9';
        ?>

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

        <p><label for="<?php echo $this->get_field_id('flickr_id'); ?>"><?php _e('Flickr ID:','nimbus'); ?></label>
        <input class="widefat" id="<?php echo $this->get_field_id('flickr_id'); ?>" name="<?php echo $this->get_field_name('flickr_id'); ?>" type="text" value="<?php echo $flickr_id; ?>"></p>

        <p><label for="<?php echo $this->get_field_id('number_img'); ?>"><?php _e('Number:','nimbus'); ?></label>
        <input class="widefat" id="<?php echo $this->get_field_id('number_img'); ?>" name="<?php echo $this->get_field_name('number_img'); ?>" type="text" value="<?php echo $number_img; ?>"></p>

        <?php }
}
/**
 * Twitter
 *
 * @since 1.0
 */
class Nimbus_Twitter extends WP_Widget {
        /** constructor */
    function __construct() {
        $widget_ops = array(
            'classname'   => 'nb-latest-tweet',
            'description' => __('Display Lastest Tweet','nimbus')
        );
        parent::__construct('nimbus_twitter', __('Nimbus - New Tweets','nimbus'), $widget_ops);
    }
    function widget($args, $instance) {
            extract( $args );
            $title = apply_filters( 'widget_title', empty($instance['title']) ? 'Tweets' : $instance['title'], $instance, $this->id_base);

            $twitter_widget_id = 'nb-twitter-'.rand();

            wp_enqueue_script( 'nimbus-tweetie' );

            echo $args['before_widget'];
            if ( $title ) {
                echo $args['before_title'] . $title . $args['after_title'];
            }
            echo '<div class="widget-content">';
            echo '<div data-api="'.plugins_url('api/tweet.php', __FILE__).'" data-username="'.$instance['twitter_id'].'" data-number="'.$instance['number_tweet'].'" class="nb-twitter-feed" id="tweet-'.$twitter_widget_id.'">'."\n";
            echo '</div>'."\n";
            echo '</div>'."\n";
            echo $args['after_widget'];
        }
        function update( $new_instance, $old_instance ) {
            $instance = $old_instance;
            $instance['title'] = strip_tags($new_instance['title']);
            $instance['twitter_id'] = strip_tags($new_instance['twitter_id']);
            $instance['number_tweet'] = strip_tags($new_instance['number_tweet']);
            return $instance;
        }

        function form( $instance ) {
            $title = isset($instance['title']) ? esc_attr($instance['title']) : 'Twitter';
            $twitter_id = isset($instance['twitter_id']) ? esc_attr($instance['twitter_id']) : '';
            $number_tweet = isset($instance['number_tweet']) ? esc_attr($instance['number_tweet']) : '3';
        ?>

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

        <p><label for="<?php echo $this->get_field_id('twitter_id'); ?>"><?php _e('Twitter ID:','nimbus'); ?></label>
        <input class="widefat" id="<?php echo $this->get_field_id('twitter_id'); ?>" name="<?php echo $this->get_field_name('twitter_id'); ?>" type="text" value="<?php echo $twitter_id; ?>"></p>

        <p><label for="<?php echo $this->get_field_id('number_tweet'); ?>"><?php _e('Number:','nimbus'); ?></label>
        <input class="widefat" id="<?php echo $this->get_field_id('number_tweet'); ?>" name="<?php echo $this->get_field_name('number_tweet'); ?>" type="text" value="<?php echo $number_tweet; ?>"></p>

        <?php }
}

/**
 * Register Widgets.
 *
 * @since 1.0
 */
function nimbus_register_widgets() {
    register_widget( 'Nimbus_Recent_Portfolio_Widget' );
    register_widget( 'Nimbus_Flickr_Images' );
    register_widget( 'Nimbus_Twitter' );
}
add_action( 'widgets_init', 'nimbus_register_widgets' );