app/Plugin/ProductReviewReplyable/ProductReviewEvent.php line 66

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) LOCKON CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.lockon.co.jp/
  8.  *
  9.  * For the full copyright and license information, please view the LICENSE
  10.  * file that was distributed with this source code.
  11.  */
  12. namespace Plugin\ProductReviewReplyable;
  13. use Eccube\Entity\Product;
  14. use Eccube\Event\TemplateEvent;
  15. use Eccube\Repository\Master\ProductStatusRepository;
  16. use Plugin\ProductReviewReplyable\Entity\ProductReviewStatus;
  17. use Plugin\ProductReviewReplyable\Repository\ProductReviewConfigRepository;
  18. use Plugin\ProductReviewReplyable\Repository\ProductReviewRepository;
  19. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  20. class ProductReviewEvent implements EventSubscriberInterface
  21. {
  22.     /**
  23.      * @var ProductReviewConfigRepository
  24.      */
  25.     protected $productReviewConfigRepository;
  26.     /**
  27.      * @var ProductReviewRepository
  28.      */
  29.     protected $productReviewRepository;
  30.     /**
  31.      * ProductReview constructor.
  32.      *
  33.      * @param ProductReviewConfigRepository $productReviewConfigRepository
  34.      * @param ProductStatusRepository $productStatusRepository
  35.      * @param ProductReviewRepository $productReviewRepository
  36.      */
  37.     public function __construct(
  38.         ProductReviewConfigRepository $productReviewConfigRepository,
  39.         ProductStatusRepository $productStatusRepository,
  40.         ProductReviewRepository $productReviewRepository
  41.     ) {
  42.         $this->productReviewConfigRepository $productReviewConfigRepository;
  43.         $this->productStatusRepository $productStatusRepository;
  44.         $this->productReviewRepository $productReviewRepository;
  45.     }
  46.     /**
  47.      * @return array
  48.      */
  49.     public static function getSubscribedEvents()
  50.     {
  51.         return [
  52.             'Product/detail.twig' => 'detail',
  53.         ];
  54.     }
  55.     /**
  56.      * @param TemplateEvent $event
  57.      */
  58.     public function detail(TemplateEvent $event)
  59.     {
  60.         $event->addSnippet('@ProductReviewReplyable/default/review.twig');
  61.         $Config $this->productReviewConfigRepository->get();
  62.         /** @var Product $Product */
  63.         $Product $event->getParameter('Product');
  64.         // $ProductReviews = $this->productReviewRepository->findBy(['Status' => ProductReviewStatus::SHOW, 'Product' => $Product], ['id' => 'DESC'], $Config->getReviewMax());
  65.         $ProductReviews $this->productReviewRepository->findBy(['Product' => $Product], ['create_date' => 'DESC'], $Config->getReviewMax());
  66.         $rate $this->productReviewRepository->getAvgAll($Product);
  67.         $avg round($rate['recommend_avg']);
  68.         $count intval($rate['review_count']);
  69.         $parameters $event->getParameters();
  70.         $parameters['ProductReviews'] = $ProductReviews;
  71.         $parameters['ProductReviewAvg'] = $avg;
  72.         $parameters['ProductReviewCount'] = $count;
  73.         $event->setParameters($parameters);
  74.     }
  75. }