ConvertSerializedData.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Theme\Setup\Patch\Data;
  7. use Magento\Framework\DB\DataConverter\SerializedToJson;
  8. use Magento\Framework\DB\FieldDataConverterFactory;
  9. use Magento\Framework\DB\Select\QueryModifierFactory;
  10. use Magento\Framework\App\ResourceConnection;
  11. use Magento\Framework\Setup\Patch\DataPatchInterface;
  12. use Magento\Framework\Setup\Patch\PatchVersionInterface;
  13. /**
  14. * Class ConvertSerializedData
  15. * @package Magento\Theme\Setup\Patch
  16. */
  17. class ConvertSerializedData implements DataPatchInterface, PatchVersionInterface
  18. {
  19. /**
  20. * @var \Magento\Framework\Setup\ModuleDataSetupInterface
  21. */
  22. private $moduleDataSetup;
  23. /**
  24. * @var FieldDataConverterFactory
  25. */
  26. private $fieldDataConverterFactory;
  27. /**
  28. * @var QueryModifierFactory
  29. */
  30. private $queryModifierFactory;
  31. /**
  32. * ConvertSerializedData constructor.
  33. * @param \Magento\Framework\Setup\ModuleDataSetupInterface $moduleDataSetup
  34. * @param FieldDataConverterFactory $fieldDataConverterFactory
  35. * @param QueryModifierFactory $queryModifierFactory
  36. */
  37. public function __construct(
  38. \Magento\Framework\Setup\ModuleDataSetupInterface $moduleDataSetup,
  39. FieldDataConverterFactory $fieldDataConverterFactory,
  40. QueryModifierFactory $queryModifierFactory
  41. ) {
  42. $this->moduleDataSetup = $moduleDataSetup;
  43. $this->fieldDataConverterFactory = $fieldDataConverterFactory;
  44. $this->queryModifierFactory = $queryModifierFactory;
  45. }
  46. /**
  47. * {@inheritdoc}
  48. */
  49. public function apply()
  50. {
  51. $this->moduleDataSetup->getConnection()->startSetup();
  52. $this->convertSerializedData();
  53. $this->moduleDataSetup->getConnection()->endSetup();
  54. }
  55. /**
  56. * {@inheritdoc}
  57. */
  58. public static function getDependencies()
  59. {
  60. return [
  61. RegisterThemes::class
  62. ];
  63. }
  64. /**
  65. * {@inheritdoc}
  66. */
  67. public static function getVersion()
  68. {
  69. return '2.0.2';
  70. }
  71. /**
  72. * {@inheritdoc}
  73. */
  74. public function getAliases()
  75. {
  76. return [];
  77. }
  78. /**
  79. * Convert native php serialized data to json.
  80. */
  81. private function convertSerializedData()
  82. {
  83. $fieldDataConverter = $this->fieldDataConverterFactory->create(SerializedToJson::class);
  84. $queryModifier = $this->queryModifierFactory->create(
  85. 'in',
  86. [
  87. 'values' => [
  88. 'path' => [
  89. 'design/theme/ua_regexp',
  90. ]
  91. ]
  92. ]
  93. );
  94. $fieldDataConverter->convert(
  95. $this->moduleDataSetup->getConnection(),
  96. $this->moduleDataSetup->getTable('core_config_data'),
  97. 'config_id',
  98. 'value',
  99. $queryModifier
  100. );
  101. }
  102. }