![]() 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-indexer/Model/Source/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Indexer\Model\Source; use Magento\Framework\Api\SearchCriteriaBuilder; use Magento\Framework\Api\SearchResults; use Magento\Framework\Exception\NotFoundException; use Magento\Framework\ObjectManagerInterface; class ServiceSource implements DataInterface { /** * @var ObjectManagerInterface */ private $objectManager; /** * @var string */ private $service; /** * @var SearchCriteriaBuilder */ private $searchCriteriaBuilder; /** * @param ObjectManagerInterface $objectManager * @param SearchCriteriaBuilder $searchCriteriaBuilder * @param string $service */ public function __construct( ObjectManagerInterface $objectManager, SearchCriteriaBuilder $searchCriteriaBuilder, $service ) { $this->objectManager = $objectManager; $this->searchCriteriaBuilder = $searchCriteriaBuilder; $this->service = $service; } /** * {@inheritdoc} */ public function getData(array $fieldsData) { $service = $this->getService(); $searchCriteria = $this->searchCriteriaBuilder->create(); /** @var SearchResults $list */ $list = $service->getList($searchCriteria); return $this->getRequestedFields($list, $fieldsData); } /** * @param SearchResults $list * @param array $fields * @return array * @throws NotFoundException */ private function getRequestedFields(SearchResults $list, array $fields) { $requestedData = []; foreach ($list->getItems() as $key => $item) { foreach (array_keys($fields) as $fieldName) { if (!isset($item[$fieldName])) { throw new NotFoundException(__("Field '%1' not found", $fieldName)); } $requestedData[$key][$fieldName] = $item[$fieldName]; } } return $requestedData; } /** * @return mixed */ private function getService() { return $this->objectManager->get($this->service); } }