DataProvider.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Theme\Ui\Component\Design\Config;
  7. use Magento\Framework\Api\FilterBuilder;
  8. use Magento\Framework\Api\Search\ReportingInterface;
  9. use Magento\Framework\Api\Search\SearchCriteriaBuilder;
  10. use Magento\Framework\App\RequestInterface;
  11. use Magento\Store\Model\StoreManagerInterface;
  12. /**
  13. * Data Provider for 'design_config_form' and 'design_config_listing' components
  14. *
  15. * @api
  16. * @since 100.1.0
  17. */
  18. class DataProvider extends \Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider
  19. {
  20. /**
  21. * @var StoreManagerInterface
  22. * @since 100.1.0
  23. */
  24. protected $storeManager;
  25. /**
  26. * @param string $name
  27. * @param string $primaryFieldName
  28. * @param string $requestFieldName
  29. * @param ReportingInterface $reporting
  30. * @param SearchCriteriaBuilder $searchCriteriaBuilder
  31. * @param RequestInterface $request
  32. * @param FilterBuilder $filterBuilder
  33. * @param StoreManagerInterface $storeManager
  34. * @param array $meta
  35. * @param array $data
  36. * @SuppressWarnings(PHPMD.ExcessiveParameterList)
  37. */
  38. public function __construct(
  39. $name,
  40. $primaryFieldName,
  41. $requestFieldName,
  42. ReportingInterface $reporting,
  43. SearchCriteriaBuilder $searchCriteriaBuilder,
  44. RequestInterface $request,
  45. FilterBuilder $filterBuilder,
  46. StoreManagerInterface $storeManager,
  47. array $meta = [],
  48. array $data = []
  49. ) {
  50. parent::__construct(
  51. $name,
  52. $primaryFieldName,
  53. $requestFieldName,
  54. $reporting,
  55. $searchCriteriaBuilder,
  56. $request,
  57. $filterBuilder,
  58. $meta,
  59. $data
  60. );
  61. $this->storeManager = $storeManager;
  62. }
  63. /**
  64. * Get data
  65. *
  66. * @return array
  67. * @since 100.1.0
  68. */
  69. public function getData()
  70. {
  71. if ($this->storeManager->isSingleStoreMode()) {
  72. $websites = $this->storeManager->getWebsites();
  73. $singleStoreWebsite = array_shift($websites);
  74. $this->addFilter(
  75. $this->filterBuilder->setField('store_website_id')
  76. ->setValue($singleStoreWebsite->getId())
  77. ->create()
  78. );
  79. $this->addFilter(
  80. $this->filterBuilder->setField('store_group_id')
  81. ->setConditionType('null')
  82. ->create()
  83. );
  84. }
  85. $data = parent::getData();
  86. foreach ($data['items'] as & $item) {
  87. $item += ['default' => __('Global')];
  88. }
  89. return $data;
  90. }
  91. }