HEX
Server: nginx/1.24.0
System: Linux DGT-WORDPRESS-VM-SERVER 6.14.0-1017-azure #17~24.04.1-Ubuntu SMP Mon Dec 1 20:10:50 UTC 2025 x86_64
User: ubuntu (1000)
PHP: 8.4.12
Disabled: NONE
Upload Files
File: /mnt/data/dreamssalon-wp/wp-content/plugins/dreamsalon-widgets/widgets/class-blog-section-2.php
<?php
namespace dreamsalonelementor\Widgets;

use Elementor\Widget_Base;
use Elementor\Controls_Manager;

if ( ! defined( 'ABSPATH' ) ) exit;

class DS_blog_section_two extends Widget_Base {

    public function get_name() {
        return 'dreamsalon_elementor_blog_section_two';
    }

    public function get_title() {
        return __( 'DreamSalon - Blog Section 2', 'dreamsalon_elementor' );
    }

    public function get_icon() {
        return 'eicon-post-list';
    }

    public function get_categories() {
        return [ 'dreamsalonelemetortheme' ];
    }

    protected function register_controls() {
        $this->start_controls_section('content_section', [ 'label' => __( 'Content', 'dreamsalon_elementor' ) ]);

        $this->add_control('badge_text', [
            'label' => __( 'Badge Text', 'dreamsalon_elementor' ),
            'type' => Controls_Manager::TEXT,
            'default' => __( 'Recent Blog', 'dreamsalon_elementor' ),
        ]);
        $this->add_control('heading_text', [
            'label' => __( 'Heading', 'dreamsalon_elementor' ),
            'type' => Controls_Manager::TEXT,
            'default' => __( 'Checkout our Recent Articles', 'dreamsalon_elementor' ),
        ]);
        $this->add_control('view_all_text', [
            'label' => __( 'View All Button Text', 'dreamsalon_elementor' ),
            'type' => Controls_Manager::TEXT,
            'default' => __( 'View All Blogs', 'dreamsalon_elementor' ),
        ]);
        $this->add_control('view_all_link', [
            'label' => __( 'View All Button Link', 'dreamsalon_elementor' ),
            'type' => Controls_Manager::URL,
            'default' => [ 'url' => '#' ],
        ]);

        $posts = get_posts(['post_type'=>'post','numberposts'=>50,'orderby'=>'date','order'=>'DESC']);
        $options = [];
        if ( $posts ) {
            foreach ( $posts as $p ) { $options[$p->ID] = $p->post_title; }
        }

        $this->add_control('left_post', [
            'label' => __( 'Left Post', 'dreamsalon_elementor' ),
            'type' => Controls_Manager::SELECT2,
            'options' => $options,
            'multiple' => false,
        ]);
        $this->add_control('left_image_override', [
            'label' => __( 'Left Post Image Override', 'dreamsalon_elementor' ),
            'type' => Controls_Manager::MEDIA,
            'default' => [ 'url' => '' ],
        ]);

        $this->add_control('right_post_1', [
            'label' => __( 'Right Post 1', 'dreamsalon_elementor' ),
            'type' => Controls_Manager::SELECT2,
            'options' => $options,
            'multiple' => false,
        ]);
        $this->add_control('right_post_1_image', [
            'label' => __( 'Right Post 1 Image Override', 'dreamsalon_elementor' ),
            'type' => Controls_Manager::MEDIA,
            'default' => [ 'url' => '' ],
        ]);

        $this->add_control('right_post_2', [
            'label' => __( 'Right Post 2', 'dreamsalon_elementor' ),
            'type' => Controls_Manager::SELECT2,
            'options' => $options,
            'multiple' => false,
        ]);
        $this->add_control('right_post_2_image', [
            'label' => __( 'Right Post 2 Image Override', 'dreamsalon_elementor' ),
            'type' => Controls_Manager::MEDIA,
            'default' => [ 'url' => '' ],
        ]);

        $this->end_controls_section();
    }

    private function get_post_data( $post_id, $override_img ) {
        $post = $post_id ? get_post( $post_id ) : null;
        if ( ! $post ) return null;
        $permalink = get_permalink( $post );
        $title = get_the_title( $post );
        $excerpt = wp_trim_words( get_the_excerpt( $post ), 20 );
        $thumb = ! empty($override_img['url']) ? $override_img['url'] : ( get_the_post_thumbnail_url( $post, 'large' ) ?: get_template_directory_uri() . '/assets/images/placeholder.webp' );
        $cats = get_the_terms( $post, 'category' );
        $cat_name = ( $cats && ! is_wp_error($cats) ) ? $cats[0]->name : __( 'Blog', 'dreamsalon_elementor' );
        $author_id = $post->post_author;
        $author_name = get_the_author_meta( 'display_name', $author_id );
        $author_avatar = get_avatar_url( $author_id, [ 'size' => 128 ] );
        $date = date_i18n( 'd M Y', strtotime( $post->post_date ) );
        return compact('permalink','title','excerpt','thumb','cat_name','author_name','author_avatar','date');
    }

    protected function render() {
        $s = $this->get_settings();
        $left = $this->get_post_data( isset($s['left_post']) ? intval($s['left_post']) : 0, isset($s['left_image_override']) ? $s['left_image_override'] : [] );
        $r1 = $this->get_post_data( isset($s['right_post_1']) ? intval($s['right_post_1']) : 0, isset($s['right_post_1_image']) ? $s['right_post_1_image'] : [] );
        $r2 = $this->get_post_data( isset($s['right_post_2']) ? intval($s['right_post_2']) : 0, isset($s['right_post_2_image']) ? $s['right_post_2_image'] : [] );
        $view_all_link = !empty($s['view_all_link']['url']) ? $s['view_all_link']['url'] : '#';
        ?>
        <section class="section blog-section blog-sec-six">
            <div class="container">
                <div class="row justify-content-center">
                    <div class="col-md-8 wow fadeInUp" data-wow-delay="0.2s">
                        <div class="section-header-six">
                            <span class="badge badge-soft-primary rounded-pill mb-1"><?php echo esc_html($s['badge_text']); ?></span>
                            <h2><?php echo esc_html($s['heading_text']); ?><span class="text-primary">.</span></h2>
                        </div>
                    </div>
                    <div class="col-md-4">
                        <div class="text-end text-end-left-mobile">
                            <a href="<?php echo esc_url($view_all_link); ?>" class="btn btn-dark sec-head-btn"><?php echo esc_html($s['view_all_text']); ?><i class="isax isax-arrow-right-3 ms-2"></i></a>
                        </div>
                    </div>
                </div>
                <div class="row">
                    <div class="col-xl-6">
                        <?php if ( $left ) : ?>
                        <div class="card shadow-none blog-grid-six">
                            <div class="card-img">
                                <a href="<?php echo esc_url($left['permalink']); ?>">
                                    <img src="<?php echo esc_url($left['thumb']); ?>" class="rounded" alt="Img">
                                </a>
                                <span class="badge bg-primary"><?php echo esc_html($left['cat_name']); ?></span>
                            </div>
                            <div class="card-body">
                                <h5 class="mb-2"><a href="<?php echo esc_url($left['permalink']); ?>"><?php echo esc_html($left['title']); ?></a></h5>
                                <p class="mb-4"><?php echo esc_html($left['excerpt']); ?></p>
                                <div class="d-flex align-items-center justify-content-between">
                                    <div class="d-flex align-items-center">
                                        <a href="javascript:void(0);" class="avatar avatar-md flex-shrink-0 me-2">
                                            <img src="<?php echo esc_url($left['author_avatar']); ?>" class="rounded-circle" alt="img">
                                        </a>
                                        <h6 class="fs-16 fw-normal"><a href="javascript:void(0);" class="text-capitalize"><?php echo esc_html($left['author_name']); ?></a></h6>
                                    </div>
                                    <span class="d-inline-flex align-items-center"><i class="isax isax-calendar me-2 fs-20"></i><?php echo esc_html($left['date']); ?></span>
                                </div>
                            </div>
                        </div>
                        <?php endif; ?>
                    </div>
                    <div class="col-xl-6">
                        <?php foreach ( [$r1, $r2] as $idx => $rp ) : if ( ! $rp ) continue; ?>
                        <div class="card shadow-none blog-grid-six">
                            <div class="row align-items-center">
                                <div class="col-md-6 d-flex">
                                    <div class="card-img flex-fill">
                                        <a href="<?php echo esc_url($rp['permalink']); ?>">
                                            <img src="<?php echo esc_url($rp['thumb']); ?>" class="rounded w-100 h-100" alt="Img">
                                        </a>
                                        <span class="badge bg-primary"><?php echo esc_html($rp['cat_name']); ?></span>
                                    </div>
                                </div>
                                <div class="col-md-6 d-flex">
                                    <div class="card-body ps-md-0 flex-fill">
                                        <h5 class="mb-2"><a href="<?php echo esc_url($rp['permalink']); ?>"><?php echo esc_html($rp['title']); ?></a></h5>
                                        <p class="mb-4 text-truncate line-clamb-3"><?php echo esc_html($rp['excerpt']); ?></p>
                                        <div class="d-flex align-items-center justify-content-between">
                                            <div class="d-flex align-items-center">
                                                <a href="javascript:void(0);" class="avatar avatar-md flex-shrink-0 me-2">
                                                    <img src="<?php echo esc_url($rp['author_avatar']); ?>" class="rounded-circle" alt="img">
                                                </a>
                                                <h6 class="fs-16 fw-normal"><a href="javascript:void(0);" class="text-capitalize"><?php echo esc_html($rp['author_name']); ?></a></h6>
                                            </div>
                                            <span class="d-inline-flex align-items-center"><i class="isax isax-calendar me-2 fs-20"></i><?php echo esc_html($rp['date']); ?></span>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <?php endforeach; ?>
                    </div>
                </div>
            </div>
        </section>
        <?php
    }
}