![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-review/Block/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Review\Block; use Magento\Catalog\Model\Product; use Magento\Customer\Model\Context; use Magento\Customer\Model\Url; use Magento\Review\Model\ResourceModel\Rating\Collection as RatingCollection; /** * Review form block * * @api * @author Magento Core Team <[email protected]> * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * @since 100.0.2 */ class Form extends \Magento\Framework\View\Element\Template { /** * Review data * * @var \Magento\Review\Helper\Data */ protected $_reviewData = null; /** * Catalog product model * * @var \Magento\Catalog\Api\ProductRepositoryInterface */ protected $productRepository; /** * Rating model * * @var \Magento\Review\Model\RatingFactory */ protected $_ratingFactory; /** * @var \Magento\Framework\Url\EncoderInterface */ protected $urlEncoder; /** * Message manager interface * * @var \Magento\Framework\Message\ManagerInterface */ protected $messageManager; /** * @var \Magento\Framework\App\Http\Context */ protected $httpContext; /** * @var \Magento\Customer\Model\Url */ protected $customerUrl; /** * @var array */ protected $jsLayout; /** * @var \Magento\Framework\Serialize\Serializer\Json */ private $serializer; /** * Form constructor. * * @param \Magento\Framework\View\Element\Template\Context $context * @param \Magento\Framework\Url\EncoderInterface $urlEncoder * @param \Magento\Review\Helper\Data $reviewData * @param \Magento\Catalog\Api\ProductRepositoryInterface $productRepository * @param \Magento\Review\Model\RatingFactory $ratingFactory * @param \Magento\Framework\Message\ManagerInterface $messageManager * @param \Magento\Framework\App\Http\Context $httpContext * @param Url $customerUrl * @param array $data * @param \Magento\Framework\Serialize\Serializer\Json|null $serializer * @throws \RuntimeException * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function __construct( \Magento\Framework\View\Element\Template\Context $context, \Magento\Framework\Url\EncoderInterface $urlEncoder, \Magento\Review\Helper\Data $reviewData, \Magento\Catalog\Api\ProductRepositoryInterface $productRepository, \Magento\Review\Model\RatingFactory $ratingFactory, \Magento\Framework\Message\ManagerInterface $messageManager, \Magento\Framework\App\Http\Context $httpContext, \Magento\Customer\Model\Url $customerUrl, array $data = [], \Magento\Framework\Serialize\Serializer\Json $serializer = null ) { $this->urlEncoder = $urlEncoder; $this->_reviewData = $reviewData; $this->productRepository = $productRepository; $this->_ratingFactory = $ratingFactory; $this->messageManager = $messageManager; $this->httpContext = $httpContext; $this->customerUrl = $customerUrl; parent::__construct($context, $data); $this->jsLayout = isset($data['jsLayout']) ? $data['jsLayout'] : []; $this->serializer = $serializer ?: \Magento\Framework\App\ObjectManager::getInstance() ->get(\Magento\Framework\Serialize\Serializer\Json::class); } /** * Initialize review form * * @return void */ protected function _construct() { parent::_construct(); $this->setAllowWriteReviewFlag( $this->httpContext->getValue(Context::CONTEXT_AUTH) || $this->_reviewData->getIsGuestAllowToWrite() ); if (!$this->getAllowWriteReviewFlag()) { $queryParam = $this->urlEncoder->encode( $this->getUrl('*/*/*', ['_current' => true]) . '#review-form' ); $this->setLoginLink( $this->getUrl( 'customer/account/login/', [Url::REFERER_QUERY_PARAM_NAME => $queryParam] ) ); } $this->setTemplate('Magento_Review::form.phtml'); } /** * @return string */ public function getJsLayout() { return $this->serializer->serialize($this->jsLayout); } /** * Get product info * * @return \Magento\Catalog\Api\Data\ProductInterface * @throws \Magento\Framework\Exception\NoSuchEntityException */ public function getProductInfo() { return $this->productRepository->getById( $this->getProductId(), false, $this->_storeManager->getStore()->getId() ); } /** * Get review product post action * * @return string */ public function getAction() { return $this->getUrl( 'review/product/post', [ '_secure' => $this->getRequest()->isSecure(), 'id' => $this->getProductId(), ] ); } /** * Get collection of ratings * * @return RatingCollection * @throws \Magento\Framework\Exception\LocalizedException */ public function getRatings() { return $this->_ratingFactory->create()->getResourceCollection()->addEntityFilter( 'product' )->setPositionOrder()->addRatingPerStoreName( $this->_storeManager->getStore()->getId() )->setStoreFilter( $this->_storeManager->getStore()->getId() )->setActiveFilter( true )->load()->addOptionToItems(); } /** * Return register URL * * @return string */ public function getRegisterUrl() { return $this->customerUrl->getRegisterUrl(); } /** * Get review product id * * @return int */ protected function getProductId() { return $this->getRequest()->getParam('id', false); } }