_voteFactory = $voteFactory; $this->_reviewFactory = $reviewFactory; $this->_ratingFactory = $ratingFactory; parent::__construct( $context, $data ); } /** * Retrieve current product model from registry * * @return \Magento\Catalog\Model\Product */ public function getProductData() { return $this->_coreRegistry->registry('current_product'); } /** * Retrieve current review model from registry * * @return \Magento\Review\Model\Review */ public function getReviewData() { return $this->_coreRegistry->registry('current_review'); } /** * Prepare link to review list for current product * * @return string */ public function getBackUrl() { return $this->getUrl('*/*/list', ['id' => $this->getProductData()->getId()]); } /** * Retrieve collection of ratings * * @return \Magento\Review\Model\ResourceModel\Rating\Option\Vote\Collection */ public function getRating() { $reviewId = $this->getReviewId() ?: $this->getReviewData()->getId(); if (!$this->getRatingCollection()) { $ratingCollection = $this->_voteFactory->create()->getResourceCollection()->setReviewFilter( $reviewId )->setStoreFilter( $this->_storeManager->getStore()->getId() )->addRatingInfo( $this->_storeManager->getStore()->getId() )->load(); $this->setRatingCollection($ratingCollection->getSize() ? $ratingCollection : false); } return $this->getRatingCollection(); } /** * Retrieve rating summary for current product * * @deprecated 100.3.3 * @see f72f74d3 * @return string */ public function getRatingSummary() { if (!$this->getRatingSummaryCache()) { $this->setRatingSummaryCache( $this->_ratingFactory->create()->getEntitySummary($this->getProductData()->getId()) ); } return $this->getRatingSummaryCache(); } /** * Retrieve total review count for current product * * @return string */ public function getTotalReviews() { if (!$this->getTotalReviewsCache()) { $this->setTotalReviewsCache( $this->_reviewFactory->create()->getTotalReviews( $this->getProductData()->getId(), false, $this->_storeManager->getStore()->getId() ) ); } return $this->getTotalReviewsCache(); } /** * Format date in long format * * @param string $date * @return string */ public function dateFormat($date) { return $this->formatDate($date, \IntlDateFormatter::LONG); } }