ConvertWidgetConditionsToJson.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Cms\Setup\Patch\Data;
  7. use Magento\Cms\Setup\ContentConverter;
  8. use Magento\Framework\App\ResourceConnection;
  9. use Magento\Framework\DB\Select\QueryModifierFactory;
  10. use Magento\Framework\Setup\ModuleDataSetupInterface;
  11. use Magento\Framework\Setup\Patch\DataPatchInterface;
  12. use Magento\Framework\Setup\Patch\PatchVersionInterface;
  13. use Magento\Framework\DB\AggregatedFieldDataConverter;
  14. use Magento\Framework\DB\FieldToConvert;
  15. use Magento\Framework\EntityManager\MetadataPool;
  16. use Magento\Widget\Setup\LayoutUpdateConverter;
  17. use Magento\Cms\Api\Data\BlockInterface;
  18. use Magento\Cms\Api\Data\PageInterface;
  19. /**
  20. * Class ConvertWidgetConditionsToJson
  21. * @package Magento\Cms\Setup\Patch
  22. */
  23. class ConvertWidgetConditionsToJson implements DataPatchInterface, PatchVersionInterface
  24. {
  25. /**
  26. * @var ModuleDataSetupInterface
  27. */
  28. private $moduleDataSetup;
  29. /**
  30. * @var QueryModifierFactory
  31. */
  32. private $queryModifierFactory;
  33. /**
  34. * @var MetadataPool
  35. */
  36. private $metadataPool;
  37. /**
  38. * @var AggregatedFieldDataConverter
  39. */
  40. private $aggregatedFieldDataConverter;
  41. /**
  42. * ConvertWidgetConditionsToJson constructor.
  43. * @param ModuleDataSetupInterface $moduleDataSetup
  44. * @param QueryModifierFactory $queryModifierFactory
  45. * @param MetadataPool $metadataPool
  46. * @param AggregatedFieldDataConverter $aggregatedFieldDataConverter
  47. */
  48. public function __construct(
  49. ModuleDataSetupInterface $moduleDataSetup,
  50. QueryModifierFactory $queryModifierFactory,
  51. MetadataPool $metadataPool,
  52. AggregatedFieldDataConverter $aggregatedFieldDataConverter
  53. ) {
  54. $this->moduleDataSetup = $moduleDataSetup;
  55. $this->queryModifierFactory = $queryModifierFactory;
  56. $this->metadataPool = $metadataPool;
  57. $this->aggregatedFieldDataConverter = $aggregatedFieldDataConverter;
  58. }
  59. /**
  60. * {@inheritdoc}
  61. */
  62. public function apply()
  63. {
  64. $queryModifier = $this->queryModifierFactory->create(
  65. 'like',
  66. [
  67. 'values' => [
  68. 'content' => '%conditions_encoded%'
  69. ]
  70. ]
  71. );
  72. $layoutUpdateXmlFieldQueryModifier = $this->queryModifierFactory->create(
  73. 'like',
  74. [
  75. 'values' => [
  76. 'layout_update_xml' => '%conditions_encoded%'
  77. ]
  78. ]
  79. );
  80. $customLayoutUpdateXmlFieldQueryModifier = $this->queryModifierFactory->create(
  81. 'like',
  82. [
  83. 'values' => [
  84. 'custom_layout_update_xml' => '%conditions_encoded%'
  85. ]
  86. ]
  87. );
  88. $blockMetadata = $this->metadataPool->getMetadata(BlockInterface::class);
  89. $pageMetadata = $this->metadataPool->getMetadata(PageInterface::class);
  90. $this->aggregatedFieldDataConverter->convert(
  91. [
  92. new FieldToConvert(
  93. ContentConverter::class,
  94. $this->moduleDataSetup->getTable('cms_block'),
  95. $blockMetadata->getIdentifierField(),
  96. 'content',
  97. $queryModifier
  98. ),
  99. new FieldToConvert(
  100. ContentConverter::class,
  101. $this->moduleDataSetup->getTable('cms_page'),
  102. $pageMetadata->getIdentifierField(),
  103. 'content',
  104. $queryModifier
  105. ),
  106. new FieldToConvert(
  107. LayoutUpdateConverter::class,
  108. $this->moduleDataSetup->getTable('cms_page'),
  109. $pageMetadata->getIdentifierField(),
  110. 'layout_update_xml',
  111. $layoutUpdateXmlFieldQueryModifier
  112. ),
  113. new FieldToConvert(
  114. LayoutUpdateConverter::class,
  115. $this->moduleDataSetup->getTable('cms_page'),
  116. $pageMetadata->getIdentifierField(),
  117. 'custom_layout_update_xml',
  118. $customLayoutUpdateXmlFieldQueryModifier
  119. ),
  120. ],
  121. $this->moduleDataSetup->getConnection()
  122. );
  123. }
  124. /**
  125. * {@inheritdoc}
  126. */
  127. public static function getDependencies()
  128. {
  129. return [
  130. UpdatePrivacyPolicyPage::class,
  131. ];
  132. }
  133. /**
  134. * {@inheritdoc}
  135. */
  136. public static function getVersion()
  137. {
  138. return '2.0.2';
  139. }
  140. /**
  141. * {@inheritdoc}
  142. */
  143. public function getAliases()
  144. {
  145. return [];
  146. }
  147. }