<?php

if ( ! class_exists( 'Moral_Magazine_Recent_News' ) ) :

     
    class Moral_Magazine_Recent_News extends WP_Widget {
        /**
         * Sets up the widgets name etc
         */
        public function __construct() {
            $mt_widget_popular_post = array(
                'classname'   => 'widget_recent_news',
                'description' => esc_html__( 'Recent News', 'moral-magazine' ),
            );
            parent::__construct( 'Moral_Magazine_Recent_News', esc_html__( 'MT : Recent News', 'moral-magazine' ), $mt_widget_popular_post );
        }

        /**
         * 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;
            }

            $mt_title  = ( ! empty( $instance['title'] ) ) ? ( $instance['title'] ) : '';
            $mt_title  = apply_filters( 'widget_title', $mt_title, $instance, $this->id_base );
            $mt_number = isset( $instance['number'] ) ? absint( $instance['number'] ) : 3;
            $mt_category = isset( $instance['category'] ) ? absint( $instance['category'] ) : '';

            echo $args['before_widget'];
                if ( ! empty( $mt_title ) ) {
                    echo "<div class='widget-header'>";
                    echo $args['before_title'] . esc_html( $instance['title'] ) . $args['after_title'];
                    echo "</div>";
                }
            $popular_args = array(
                'post_type'         => 'post',
                'posts_per_page'    => absint($mt_number),
                'order'             => 'DESC',
                'cat'               => absint( $mt_category ),
                );

            echo '<ul>';
            $wp_query = get_posts( $popular_args );
            foreach ( $wp_query as $post ) :
            ?>

                <li>
                    <div class="recent-news-wrapper">
                        <div class="featured-image">
                            <?php 
                                if ( has_post_thumbnail( $post->ID ) ) :
                                    $image = get_the_post_thumbnail_url( $post->ID );
                                    echo '<img src="'. esc_url( $image ) .'" alt="'. esc_attr( get_the_title( $post->ID ) ) .'">';
                                endif; 
                            ?>
                        </div>
                        <div class="entry-container">
                            <header class="entry-header">
                                <h2 class="entry-title"><a href="<?php the_permalink( $post->ID ); ?>"><?php echo esc_html( $post->post_title ); ?></a></h2>
                            </header>
                            <div class="entry-meta">
                                <?php moral_magazine_posted_on( $post->ID ) ; ?>
                                <span class="min-read"><?php echo moral_magazine_time_interval( get_the_content( $post->ID ) ); echo esc_html__(' min read', 'moral-magazine'); ?></span>
                            </div>
                        </div>
                    </div>
                </li>

            <?php
            endforeach;
            echo '</ul>';
            echo $args['after_widget'];
        }

        /**
         * Outputs the options form on admin
         *
         * @param array $instance The widget options
         */
        public function form( $instance ) {
 
            $title = ! empty( $instance['title'] ) ? $instance['title'] : esc_html__( 'Recent News', 'moral-magazine' );
            $number = ! empty( $instance['number'] ) ? $instance['number'] : 3;
            ?>
            <p>
            <label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php echo esc_html__( 'Title:', 'moral-magazine' ); ?></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 posts to show:', 'moral-magazine' ); ?></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" max="7" value="<?php echo absint( $number ); ?>" size="3" />
            </p>

            <p>
                <label for="<?php echo esc_attr( $this->get_field_id( 'category' ) ); ?>"><?php esc_html_e( 'Select the category to show posts:', 'moral-magazine' ); ?></label>
                <select id="<?php echo esc_attr( $this->get_field_id('category') ); ?>" name="<?php echo $this->get_field_name('category'); ?>" class="widefat" style="width:100%;">

                    <?php 
                    $categories = moral_magazine_get_post_cat_choices();
                    foreach($categories as $category => $value) { ?>
                    <option value="<?php echo absint( $category ); ?>" <?php selected( absint( $instance['category'] ), $category ); ?>><?php echo esc_html( $value ); ?></option>
                    <?php } ?>      
                </select>
            </p>

           
            <?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 ) {
 
            $instance = array();
     
            $instance['title'] = ( !empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : '';
            $instance['number'] = ( !empty( $new_instance['number'] ) ) ? absint( $new_instance['number'] ) : '';
            $instance['category'] = ( !empty( $new_instance['category'] ) ) ? absint( $new_instance['category'] ) : '';
     
            return $instance;
        }
    }
endif;
