![]() 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-catalog/Ui/DataProvider/Product/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Catalog\Ui\DataProvider\Product; use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory; use Magento\Framework\App\ObjectManager; use Magento\Store\Model\Store; use Magento\Ui\DataProvider\Modifier\ModifierInterface; use Magento\Ui\DataProvider\Modifier\PoolInterface; /** * Class ProductDataProvider * * @api * @since 100.0.2 */ class ProductDataProvider extends \Magento\Ui\DataProvider\AbstractDataProvider { /** * Product collection * * @var \Magento\Catalog\Model\ResourceModel\Product\Collection */ protected $collection; /** * @var \Magento\Ui\DataProvider\AddFieldToCollectionInterface[] */ protected $addFieldStrategies; /** * @var \Magento\Ui\DataProvider\AddFilterToCollectionInterface[] */ protected $addFilterStrategies; /** * @var PoolInterface */ private $modifiersPool; /** * @param string $name * @param string $primaryFieldName * @param string $requestFieldName * @param CollectionFactory $collectionFactory * @param \Magento\Ui\DataProvider\AddFieldToCollectionInterface[] $addFieldStrategies * @param \Magento\Ui\DataProvider\AddFilterToCollectionInterface[] $addFilterStrategies * @param array $meta * @param array $data * @param PoolInterface|null $modifiersPool */ public function __construct( $name, $primaryFieldName, $requestFieldName, CollectionFactory $collectionFactory, array $addFieldStrategies = [], array $addFilterStrategies = [], array $meta = [], array $data = [], PoolInterface $modifiersPool = null ) { parent::__construct($name, $primaryFieldName, $requestFieldName, $meta, $data); $this->collection = $collectionFactory->create(); $this->addFieldStrategies = $addFieldStrategies; $this->addFilterStrategies = $addFilterStrategies; $this->modifiersPool = $modifiersPool ?: ObjectManager::getInstance()->get(PoolInterface::class); $this->collection->setStoreId(Store::DEFAULT_STORE_ID); } /** * Get data * * @return array */ public function getData() { if (!$this->getCollection()->isLoaded()) { $this->getCollection()->load(); } $items = $this->getCollection()->toArray(); $data = [ 'totalRecords' => $this->getCollection()->getSize(), 'items' => array_values($items), ]; /** @var ModifierInterface $modifier */ foreach ($this->modifiersPool->getModifiersInstances() as $modifier) { $data = $modifier->modifyData($data); } return $data; } /** * Add field to select * * @param string|array $field * @param string|null $alias * @return void */ public function addField($field, $alias = null) { if (isset($this->addFieldStrategies[$field])) { $this->addFieldStrategies[$field]->addField($this->getCollection(), $field, $alias); } else { parent::addField($field, $alias); } } /** * @inheritdoc */ public function addFilter(\Magento\Framework\Api\Filter $filter) { if (isset($this->addFilterStrategies[$filter->getField()])) { $this->addFilterStrategies[$filter->getField()] ->addFilter( $this->getCollection(), $filter->getField(), [$filter->getConditionType() => $filter->getValue()] ); } else { parent::addFilter($filter); } } /** * @inheritdoc * @since 103.0.0 */ public function getMeta() { $meta = parent::getMeta(); /** @var ModifierInterface $modifier */ foreach ($this->modifiersPool->getModifiersInstances() as $modifier) { $meta = $modifier->modifyMeta($meta); } return $meta; } }