ConvertSerializedDataToJson.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\UrlRewrite\Setup\Patch\Data;
  7. use Magento\Framework\DB\FieldDataConverterFactory;
  8. use Magento\Framework\DB\DataConverter\SerializedToJson;
  9. use Magento\Framework\App\ResourceConnection;
  10. use Magento\Framework\Setup\Patch\DataPatchInterface;
  11. use Magento\Framework\Setup\Patch\PatchVersionInterface;
  12. /**
  13. * Class ConvertSerializedDataToJson
  14. * @package Magento\UrlRewrite\Setup\Patch
  15. */
  16. class ConvertSerializedDataToJson implements DataPatchInterface, PatchVersionInterface
  17. {
  18. /**
  19. * @var \Magento\Framework\Setup\ModuleDataSetupInterface
  20. */
  21. private $moduleDataSetup;
  22. /**
  23. * @var FieldDataConverterFactory
  24. */
  25. private $fieldDataConverterFactory;
  26. /**
  27. * ConvertSerializedDataToJson constructor.
  28. * @param \Magento\Framework\Setup\ModuleDataSetupInterface $moduleDataSetup
  29. * @param FieldDataConverterFactory $fieldDataConverterFactory
  30. */
  31. public function __construct(
  32. \Magento\Framework\Setup\ModuleDataSetupInterface $moduleDataSetup,
  33. FieldDataConverterFactory $fieldDataConverterFactory
  34. ) {
  35. $this->moduleDataSetup = $moduleDataSetup;
  36. $this->fieldDataConverterFactory = $fieldDataConverterFactory;
  37. }
  38. /**
  39. * {@inheritdoc}
  40. */
  41. public function apply()
  42. {
  43. $this->moduleDataSetup->getConnection()->startSetup();
  44. $this->convertSerializedDataToJson();
  45. $this->moduleDataSetup->getConnection()->endSetup();
  46. }
  47. /**
  48. * {@inheritdoc}
  49. */
  50. public static function getDependencies()
  51. {
  52. return [];
  53. }
  54. /**
  55. * {@inheritdoc}
  56. */
  57. public static function getVersion()
  58. {
  59. return '2.0.1';
  60. }
  61. /**
  62. * {@inheritdoc}
  63. */
  64. public function getAliases()
  65. {
  66. return [];
  67. }
  68. /**
  69. * Convert native php serialized data to json.
  70. */
  71. private function convertSerializedDataToJson()
  72. {
  73. $fieldDataConverter = $this->fieldDataConverterFactory->create(SerializedToJson::class);
  74. $fieldDataConverter->convert(
  75. $this->moduleDataSetup->getConnection(),
  76. $this->moduleDataSetup->getTable('url_rewrite'),
  77. 'url_rewrite_id',
  78. 'metadata'
  79. );
  80. }
  81. }