ReviewDataProvider.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Review\Ui\DataProvider\Product;
  7. use Magento\Framework\App\RequestInterface;
  8. use Magento\Ui\DataProvider\AbstractDataProvider;
  9. use Magento\Review\Model\ResourceModel\Review\Product\CollectionFactory;
  10. use Magento\Review\Model\ResourceModel\Review\Product\Collection;
  11. use Magento\Review\Model\Review;
  12. /**
  13. * Class ReviewDataProvider
  14. *
  15. * @api
  16. *
  17. * @method Collection getCollection
  18. * @since 100.1.0
  19. */
  20. class ReviewDataProvider extends AbstractDataProvider
  21. {
  22. /**
  23. * @var CollectionFactory
  24. * @since 100.1.0
  25. */
  26. protected $collectionFactory;
  27. /**
  28. * @var RequestInterface
  29. * @since 100.1.0
  30. */
  31. protected $request;
  32. /**
  33. * @param string $name
  34. * @param string $primaryFieldName
  35. * @param string $requestFieldName
  36. * @param CollectionFactory $collectionFactory
  37. * @param RequestInterface $request
  38. * @param array $meta
  39. * @param array $data
  40. */
  41. public function __construct(
  42. $name,
  43. $primaryFieldName,
  44. $requestFieldName,
  45. CollectionFactory $collectionFactory,
  46. RequestInterface $request,
  47. array $meta = [],
  48. array $data = []
  49. ) {
  50. parent::__construct($name, $primaryFieldName, $requestFieldName, $meta, $data);
  51. $this->collectionFactory = $collectionFactory;
  52. $this->collection = $this->collectionFactory->create();
  53. $this->request = $request;
  54. }
  55. /**
  56. * {@inheritdoc}
  57. * @since 100.1.0
  58. */
  59. public function getData()
  60. {
  61. $this->getCollection()->addEntityFilter($this->request->getParam('current_product_id', 0))
  62. ->addStoreData();
  63. $arrItems = [
  64. 'totalRecords' => $this->getCollection()->getSize(),
  65. 'items' => [],
  66. ];
  67. foreach ($this->getCollection() as $item) {
  68. $arrItems['items'][] = $item->toArray([]);
  69. }
  70. return $arrItems;
  71. }
  72. /**
  73. * {@inheritdoc}
  74. * @since 100.1.0
  75. */
  76. public function addFilter(\Magento\Framework\Api\Filter $filter)
  77. {
  78. $field = $filter->getField();
  79. if (in_array($field, ['review_id', 'created_at', 'status_id'])) {
  80. $filter->setField('rt.' . $field);
  81. }
  82. if (in_array($field, ['title', 'nickname', 'detail'])) {
  83. $filter->setField('rdt.' . $field);
  84. }
  85. if ($field === 'review_created_at') {
  86. $filter->setField('rt.created_at');
  87. }
  88. parent::addFilter($filter);
  89. }
  90. }