ConvertSerializedDataToJson.php 2.9 KB

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