123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Review\Block\Customer;
- use Magento\Catalog\Model\Product;
- use Magento\Review\Model\ResourceModel\Rating\Option\Vote\Collection as VoteCollection;
- use Magento\Review\Model\Review;
- /**
- * Customer Review detailed view block
- *
- * @api
- * @author Magento Core Team <core@magentocommerce.com>
- * @since 100.0.2
- */
- class View extends \Magento\Catalog\Block\Product\AbstractProduct
- {
- /**
- * Customer view template name
- *
- * @var string
- */
- protected $_template = 'Magento_Review::customer/view.phtml';
- /**
- * Catalog product model
- *
- * @var \Magento\Catalog\Api\ProductRepositoryInterface
- */
- protected $productRepository;
- /**
- * Review model
- *
- * @var \Magento\Review\Model\ReviewFactory
- */
- protected $_reviewFactory;
- /**
- * Rating option model
- *
- * @var \Magento\Review\Model\Rating\Option\VoteFactory
- */
- protected $_voteFactory;
- /**
- * Rating model
- *
- * @var \Magento\Review\Model\RatingFactory
- */
- protected $_ratingFactory;
- /**
- * @var \Magento\Customer\Helper\Session\CurrentCustomer
- */
- protected $currentCustomer;
- /**
- * @param \Magento\Catalog\Block\Product\Context $context
- * @param \Magento\Catalog\Api\ProductRepositoryInterface $productRepository
- * @param \Magento\Review\Model\ReviewFactory $reviewFactory
- * @param \Magento\Review\Model\Rating\Option\VoteFactory $voteFactory
- * @param \Magento\Review\Model\RatingFactory $ratingFactory
- * @param \Magento\Customer\Helper\Session\CurrentCustomer $currentCustomer
- * @param array $data
- */
- public function __construct(
- \Magento\Catalog\Block\Product\Context $context,
- \Magento\Catalog\Api\ProductRepositoryInterface $productRepository,
- \Magento\Review\Model\ReviewFactory $reviewFactory,
- \Magento\Review\Model\Rating\Option\VoteFactory $voteFactory,
- \Magento\Review\Model\RatingFactory $ratingFactory,
- \Magento\Customer\Helper\Session\CurrentCustomer $currentCustomer,
- array $data = []
- ) {
- $this->productRepository = $productRepository;
- $this->_reviewFactory = $reviewFactory;
- $this->_voteFactory = $voteFactory;
- $this->_ratingFactory = $ratingFactory;
- $this->currentCustomer = $currentCustomer;
- parent::__construct(
- $context,
- $data
- );
- }
- /**
- * Initialize review id
- *
- * @return void
- */
- protected function _construct()
- {
- parent::_construct();
- $this->setReviewId($this->getRequest()->getParam('id', false));
- }
- /**
- * Get product data
- *
- * @return Product
- */
- public function getProductData()
- {
- if ($this->getReviewId() && !$this->getProductCacheData()) {
- $product = $this->productRepository->getById($this->getReviewData()->getEntityPkValue());
- $this->setProductCacheData($product);
- }
- return $this->getProductCacheData();
- }
- /**
- * Get review data
- *
- * @return Review
- */
- public function getReviewData()
- {
- if ($this->getReviewId() && !$this->getReviewCachedData()) {
- $this->setReviewCachedData($this->_reviewFactory->create()->load($this->getReviewId()));
- }
- return $this->getReviewCachedData();
- }
- /**
- * Return review customer url
- *
- * @return string
- */
- public function getBackUrl()
- {
- return $this->getUrl('review/customer');
- }
- /**
- * Get review rating collection
- *
- * @return VoteCollection
- */
- public function getRating()
- {
- if (!$this->getRatingCollection()) {
- $ratingCollection = $this->_voteFactory->create()->getResourceCollection()->setReviewFilter(
- $this->getReviewId()
- )->addRatingInfo(
- $this->_storeManager->getStore()->getId()
- )->setStoreFilter(
- $this->_storeManager->getStore()->getId()
- )->load();
- $this->setRatingCollection($ratingCollection->getSize() ? $ratingCollection : false);
- }
- return $this->getRatingCollection();
- }
- /**
- * Get rating summary
- *
- * @return array
- */
- public function getRatingSummary()
- {
- if (!$this->getRatingSummaryCache()) {
- $this->setRatingSummaryCache(
- $this->_ratingFactory->create()->getEntitySummary($this->getProductData()->getId())
- );
- }
- return $this->getRatingSummaryCache();
- }
- /**
- * Get total reviews
- *
- * @return int
- */
- public function getTotalReviews()
- {
- if (!$this->getTotalReviewsCache()) {
- $this->setTotalReviewsCache(
- $this->_reviewFactory->create()->getTotalReviews($this->getProductData()->getId()),
- false,
- $this->_storeManager->getStore()->getId()
- );
- }
- return $this->getTotalReviewsCache();
- }
- /**
- * Get formatted date
- *
- * @param string $date
- * @return string
- */
- public function dateFormat($date)
- {
- return $this->formatDate($date, \IntlDateFormatter::LONG);
- }
- /**
- * Get product reviews summary
- *
- * @param \Magento\Catalog\Model\Product $product
- * @param bool $templateType
- * @param bool $displayIfNoReviews
- * @return string
- */
- public function getReviewsSummaryHtml(
- \Magento\Catalog\Model\Product $product,
- $templateType = false,
- $displayIfNoReviews = false
- ) {
- if (!$product->getRatingSummary()) {
- $this->_reviewFactory->create()->getEntitySummary($product, $this->_storeManager->getStore()->getId());
- }
- return parent::getReviewsSummaryHtml($product, $templateType, $displayIfNoReviews);
- }
- /**
- * @return string
- */
- protected function _toHtml()
- {
- return $this->currentCustomer->getCustomerId() ? parent::_toHtml() : '';
- }
- }
|