12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Theme\Model\Design\Config\DataProvider;
- use Magento\Framework\App\Request\DataPersistorInterface;
- use Magento\Framework\App\RequestInterface;
- use Magento\Theme\Api\DesignConfigRepositoryInterface;
- class DataLoader
- {
- /**
- * @var RequestInterface
- */
- protected $request;
- /**
- * @var DesignConfigRepositoryInterface
- */
- protected $designConfigRepository;
- /**
- * @var DataPersistorInterface
- */
- protected $dataPersistor;
- /**
- * @param RequestInterface $request
- * @param DesignConfigRepositoryInterface $designConfigRepository
- * @param DataPersistorInterface $dataPersistor
- */
- public function __construct(
- RequestInterface $request,
- DesignConfigRepositoryInterface $designConfigRepository,
- DataPersistorInterface $dataPersistor
- ) {
- $this->request = $request;
- $this->designConfigRepository = $designConfigRepository;
- $this->dataPersistor = $dataPersistor;
- }
- /**
- * Retrieve configuration data
- *
- * @return array
- */
- public function getData()
- {
- $scope = $this->request->getParam('scope');
- $scopeId = $this->request->getParam('scope_id');
- $data = $this->loadData($scope, $scopeId);
- $data[$scope]['scope'] = $scope;
- $data[$scope]['scope_id'] = $scopeId;
- return $data;
- }
- /**
- * Load data
- *
- * @param string $scope
- * @param string $scopeId
- * @return array
- */
- protected function loadData($scope, $scopeId)
- {
- $designConfig = $this->designConfigRepository->getByScope($scope, $scopeId);
- $fieldsData = $designConfig->getExtensionAttributes()->getDesignConfigData();
- $data = [];
- foreach ($fieldsData as $fieldData) {
- $data[$scope][$fieldData->getFieldConfig()['field']] = $fieldData->getValue();
- }
- $storedData = $this->dataPersistor->get('theme_design_config');
- if (isset($storedData['scope']) && isset($storedData['scope_id'])
- && $storedData['scope'] == $scope && $storedData['scope_id'] == $scopeId
- ) {
- $data[$scope] = $storedData;
- $this->dataPersistor->clear('theme_design_config');
- }
- return $data;
- }
- }
|