Current File : /home/n742ef5/royalanteam.com/wp-content/plugins/myhome-core/src/Widgets/User/RatingUserWidget.php
<?php

namespace Tangibledesign\MyHome\Widgets\User;

use Tangibledesign\Framework\Interfaces\HasReviewsInterface;
use Tangibledesign\Framework\Widgets\Helpers\BaseUserWidget;
use Tangibledesign\Framework\Widgets\Helpers\ModelSingleWidget;
use Tangibledesign\MyHome\Traits\Widgets\RatingContentControlsTrait;
use Tangibledesign\MyHome\Traits\Widgets\RatingStyleControlsTrait;

class RatingUserWidget extends BaseUserWidget implements ModelSingleWidget
{
    use RatingContentControlsTrait;
    use RatingStyleControlsTrait;

    public function getKey(): string
    {
        return 'user_rating';
    }

    public function getName(): string
    {
        return esc_html__('User Rating', 'myhome-core');
    }

    protected function loadTemplate(): void
    {
        get_template_part('templates/widgets/shared/rating', args: [
            'showRating' => $this->showRating(),
            'showCount' => $this->showRatingCount(),
            'showStars' => $this->showStars(),
            'size' => $this->getStarSize(),
        ]);
    }

    public function getReviewSubject(): ?HasReviewsInterface
    {
        $user = $this->getUser();

        return $user instanceof HasReviewsInterface ? $user : null;
    }

    protected function register_controls(): void
    {
        $this->addRatingContentSection();

        $this->addRatingStyleSection();

        $this->addStarsStyleSection();

        $this->addRatingCountStyleSection();

        $this->addVisibilitySection();
    }
}