Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
UpgradeWidgetData.php
Go to the documentation of this file.
1 <?php
8 
10 use Magento\Eav\Setup\EavSetupFactory;
18 
25 {
29  private $moduleDataSetup;
30 
34  private $eavSetup;
35 
39  private $queryModifierFactory;
40 
44  private $aggregatedFieldDataConverter;
45 
53  public function __construct(
54  ModuleDataSetupInterface $moduleDataSetup,
55  EavSetupFactory $eavSetupFactory,
56  QueryModifierFactory $queryModifierFactory,
57  AggregatedFieldDataConverter $aggregatedFieldDataConverter
58  ) {
59  $this->moduleDataSetup = $moduleDataSetup;
60  $this->eavSetup = $eavSetupFactory->create(['setup' => $moduleDataSetup]);
61  $this->queryModifierFactory = $queryModifierFactory;
62  $this->aggregatedFieldDataConverter = $aggregatedFieldDataConverter;
63  }
64 
68  public function apply()
69  {
70  $categoryTypeId = $this->eavSetup->getEntityTypeId(\Magento\Catalog\Model\Category::ENTITY);
71  $categoryLayoutUpdateAttribute = $this->eavSetup->getAttribute($categoryTypeId, 'custom_layout_update');
72  $categoryLayoutUpdateAttributeModifier = $this->queryModifierFactory->create(
73  'in',
74  [
75  'values' => [
76  'attribute_id' => $categoryLayoutUpdateAttribute['attribute_id']
77  ]
78  ]
79  );
80  $layoutUpdateValueModifier = $this->queryModifierFactory->create(
81  'like',
82  [
83  'values' => [
84  'value' => '%conditions_encoded%'
85  ]
86  ]
87  );
88  $categoryLayoutUpdateModifier = $this->queryModifierFactory->create(
89  'composite',
90  [
91  'queryModifiers' => [
92  $categoryLayoutUpdateAttributeModifier,
93  $layoutUpdateValueModifier
94  ]
95  ]
96  );
97  $productTypeId = $this->eavSetup->getEntityTypeId(\Magento\Catalog\Model\Product::ENTITY);
98  $productLayoutUpdateAttribute = $this->eavSetup->getAttribute($productTypeId, 'custom_layout_update');
99  $productLayoutUpdateAttributeModifier = $this->queryModifierFactory->create(
100  'in',
101  [
102  'values' => [
103  'attribute_id' => $productLayoutUpdateAttribute['attribute_id']
104  ]
105  ]
106  );
107  $productLayoutUpdateModifier = $this->queryModifierFactory->create(
108  'composite',
109  [
110  'queryModifiers' => [
111  $productLayoutUpdateAttributeModifier,
112  $layoutUpdateValueModifier
113  ]
114  ]
115  );
116  $this->aggregatedFieldDataConverter->convert(
117  [
118  new FieldToConvert(
119  LayoutUpdateConverter::class,
120  $this->eavSetup->getSetup()->getTable('catalog_category_entity_text'),
121  'value_id',
122  'value',
123  $categoryLayoutUpdateModifier
124  ),
125  new FieldToConvert(
126  LayoutUpdateConverter::class,
127  $this->eavSetup->getSetup()->getTable('catalog_product_entity_text'),
128  'value_id',
129  'value',
130  $productLayoutUpdateModifier
131  ),
132  ],
133  $this->eavSetup->getSetup()->getConnection()
134  );
135  }
136 
140  public static function getDependencies()
141  {
142  return [
143  DisallowUsingHtmlForProductName::class,
144  ];
145  }
146 
150  public static function getVersion()
151  {
152  return '2.2.1';
153  }
154 
158  public function getAliases()
159  {
160  return [];
161  }
162 }
__construct(ModuleDataSetupInterface $moduleDataSetup, EavSetupFactory $eavSetupFactory, QueryModifierFactory $queryModifierFactory, AggregatedFieldDataConverter $aggregatedFieldDataConverter)