<?php
/**
 * Widget Featured Post
 *
 * @package lois
 */

// register lois_Featured_Post widget
function lois_register_featured_post_widget()
{
    register_widget('lois_Featured_Post');
}

add_action('widgets_init', 'lois_register_featured_post_widget');

/**
 * Adds lois_Featured_Post widget.
 */
class lois_Featured_Post extends WP_Widget
{

    /**
     * Register widget with WordPress.
     */
    function __construct()
    {
        parent::__construct(
            'lois_featured_post', // Base ID
            __('lois: Featured Post', 'lois'), // Name
            array('description' => __('A Featured Post Widget', 'lois'),) // Args
        );
    }

    /**
     * Front-end display of widget.
     *
     * @see WP_Widget::widget()
     *
     * @param array $args Widget arguments.
     * @param array $instance Saved values from database.
     */
    public function widget($args, $instance)
    {
        $read_more = !empty($instance['readmore']) ? $instance['readmore'] : '';
        $show_thumbnail = !empty($instance['show_thumbnail']) ? $instance['show_thumbnail'] : '';
        $post_id = !empty($instance['post_list']) ? $instance['post_list'] : 1;

        if (get_post_type(esc_html($post_id)) == 'post') {
            $qry = new WP_Query("p=$post_id");
        } else {
            $qry = new WP_Query("page_id=$post_id");
        }
        if ($qry->have_posts()) {
            echo wp_kses( $args['before_widget'] , allowed_tags() );
            while ($qry->have_posts()) {
                $qry->the_post();
                $title = get_the_title();

                ?>

                <div class="catleft-2">
                    <div class="featured-cat"><?php the_category(); ?></div>
                    <?php if (has_post_thumbnail()) { ?>
                        <?php the_post_thumbnail(); ?>
                    <?php } else { ?>
                        <img src="<?php echo esc_url(get_template_directory_uri()); ?>/assets/images/img404.jpg"
                             alt=""/>
                    <?php } ?>
                    <a href="<?php  the_permalink(); ?>">
                        <div class="featured-title">
                        <?php the_title(); ?></a>
                </div>
                <?php echo get_the_date(); ?>
                <span class="cm1 pull-right"><?php comments_number(); ?></span>
                </div>

                <?php
            }
            wp_reset_postdata();
            echo wp_kses( $args['after_widget'] , allowed_tags() );
        }
    }

    /**
     * Back-end widget form.
     *
     * @see WP_Widget::form()
     *
     * @param array $instance Previously saved values from database.
     */
    public function form($instance)
    {
        $postlist[0] = array(
            'value' => 0,
            'label' => __('--Choose--', 'lois'),
        );
        $arg = array('posts_per_page' => -1, 'post_type' => array('post', 'page'));
        $posts = get_posts($arg);

        foreach ($posts as $p) {
            $postlist[$p->ID] = array(
                'value' => $p->ID,
                'label' => $p->post_title
            );
        }

        $read_more = !empty($instance['readmore']) ? $instance['readmore'] : __('Read More', 'lois');
        $show_thumbnail = !empty($instance['show_thumbnail']) ? $instance['show_thumbnail'] : '';
        $post_list = !empty($instance['post_list']) ? $instance['post_list'] : 1;
        ?>
        <p>
            <label for="<?php echo esc_html($this->get_field_id('post_list')); ?>"><?php esc_html_e('Posts', 'lois'); ?></label>
            <select name="<?php echo esc_html($this->get_field_name('post_list')); ?>"
                    id="<?php echo esc_html($this->get_field_id('post_list')); ?>" class="widefat">
                <?php
                foreach ($postlist as $single_post) { ?>
                    <option value="<?php echo esc_html($single_post['value']); ?>"
                            id="<?php echo esc_html($this->get_field_id($single_post['label'])); ?>" <?php selected($single_post['value'], $post_list); ?>><?php echo esc_html($single_post['label']); ?></option>
                <?php } ?>
            </select>
        </p>

        <p>
            <label for="<?php echo esc_html($this->get_field_id('readmore')); ?>"><?php esc_html_e('Read More Text', 'lois'); ?></label>
            <input class="widefat" id="<?php echo esc_html($this->get_field_id('readmore')); ?>"
                   name="<?php echo esc_html($this->get_field_name('readmore')); ?>" type="text"
                   value="<?php echo esc_html($read_more); ?>"/>
        </p>

        <p>
            <input id="<?php echo esc_html($this->get_field_id('show_thumbnail')); ?>"
                   name="<?php echo esc_html($this->get_field_name('show_thumbnail')); ?>" type="checkbox"
                   value="1" <?php checked('1', esc_html($show_thumbnail)); ?>/>
            <label for="<?php echo esc_html($this->get_field_id('show_thumbnail')); ?>"><?php esc_html_e('Show Post Thumbnail', 'lois'); ?></label>
        </p>

        <?php
    }

    /**
     * Sanitize widget form values as they are saved.
     *
     * @see WP_Widget::update()
     *
     * @param array $new_instance Values just sent to be saved.
     * @param array $old_instance Previously saved values from database.
     *
     * @return array Updated safe values to be saved.
     */
    public function update($new_instance, $old_instance)
    {
        $instance = array();
        $instance = $old_instance;
        
        $instance['readmore'] = !empty($new_instance['readmore']) ? sanitize_text_field($new_instance['readmore']) : __('Read More', 'lois');
        $instance['post_list'] = !empty($new_instance['post_list']) ? absint($new_instance['post_list']) : 1;
        $instance['show_thumbnail'] = !empty($new_instance['show_thumbnail']) ? absint($new_instance['show_thumbnail']) : '';
        return $instance;
    }

} // class lois_Featured_Post