123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Review\Ui\DataProvider\Product;
- use Magento\Framework\App\RequestInterface;
- use Magento\Ui\DataProvider\AbstractDataProvider;
- use Magento\Review\Model\ResourceModel\Review\Product\CollectionFactory;
- use Magento\Review\Model\ResourceModel\Review\Product\Collection;
- use Magento\Review\Model\Review;
- /**
- * Class ReviewDataProvider
- *
- * @api
- *
- * @method Collection getCollection
- * @since 100.1.0
- */
- class ReviewDataProvider extends AbstractDataProvider
- {
- /**
- * @var CollectionFactory
- * @since 100.1.0
- */
- protected $collectionFactory;
- /**
- * @var RequestInterface
- * @since 100.1.0
- */
- protected $request;
- /**
- * @param string $name
- * @param string $primaryFieldName
- * @param string $requestFieldName
- * @param CollectionFactory $collectionFactory
- * @param RequestInterface $request
- * @param array $meta
- * @param array $data
- */
- public function __construct(
- $name,
- $primaryFieldName,
- $requestFieldName,
- CollectionFactory $collectionFactory,
- RequestInterface $request,
- array $meta = [],
- array $data = []
- ) {
- parent::__construct($name, $primaryFieldName, $requestFieldName, $meta, $data);
- $this->collectionFactory = $collectionFactory;
- $this->collection = $this->collectionFactory->create();
- $this->request = $request;
- }
- /**
- * {@inheritdoc}
- * @since 100.1.0
- */
- public function getData()
- {
- $this->getCollection()->addEntityFilter($this->request->getParam('current_product_id', 0))
- ->addStoreData();
- $arrItems = [
- 'totalRecords' => $this->getCollection()->getSize(),
- 'items' => [],
- ];
- foreach ($this->getCollection() as $item) {
- $arrItems['items'][] = $item->toArray([]);
- }
- return $arrItems;
- }
- /**
- * {@inheritdoc}
- * @since 100.1.0
- */
- public function addFilter(\Magento\Framework\Api\Filter $filter)
- {
- $field = $filter->getField();
- if (in_array($field, ['review_id', 'created_at', 'status_id'])) {
- $filter->setField('rt.' . $field);
- }
- if (in_array($field, ['title', 'nickname', 'detail'])) {
- $filter->setField('rdt.' . $field);
- }
- if ($field === 'review_created_at') {
- $filter->setField('rt.created_at');
- }
- parent::addFilter($filter);
- }
- }
|