![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-wishlist/Setup/Patch/Data/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Wishlist\Setup\Patch\Data; use Magento\Framework\DB\DataConverter\SerializedToJson; use Magento\Framework\DB\FieldDataConverterFactory; use Magento\Framework\DB\Query\Generator as QueryGenerator; use Magento\Framework\DB\Select\QueryModifierFactory; use Magento\Framework\Setup\Patch\DataPatchInterface; use Magento\Framework\Setup\Patch\PatchVersionInterface; /** * Convert serialized wishlist item data. */ class ConvertSerializedData implements DataPatchInterface, PatchVersionInterface { /** * @var \Magento\Framework\Setup\ModuleDataSetupInterface */ private $moduleDataSetup; /** * @var FieldDataConverterFactory */ private $fieldDataConverterFactory; /** * @var QueryModifierFactory */ private $queryModifierFactory; /** * @var QueryGenerator */ private $queryGenerator; /** * ConvertSerializedData constructor. * @param \Magento\Framework\Setup\ModuleDataSetupInterface $moduleDataSetup * @param FieldDataConverterFactory $fieldDataConverterFactory * @param QueryModifierFactory $queryModifierFactory * @param QueryGenerator $queryGenerator */ public function __construct( \Magento\Framework\Setup\ModuleDataSetupInterface $moduleDataSetup, FieldDataConverterFactory $fieldDataConverterFactory, QueryModifierFactory $queryModifierFactory, QueryGenerator $queryGenerator ) { $this->moduleDataSetup = $moduleDataSetup; $this->fieldDataConverterFactory = $fieldDataConverterFactory; $this->queryModifierFactory = $queryModifierFactory; $this->queryGenerator = $queryGenerator; } /** * @inheritdoc */ public function apply() { $this->convertSerializedData(); } /** * @inheritdoc */ public static function getDependencies() { return []; } /** * @inheritdoc */ public static function getVersion() { return '2.0.1'; } /** * @inheritdoc */ public function getAliases() { return []; } /** * Convert serialized whishlist item data. * * @throws \Magento\Framework\DB\FieldDataConversionException * @throws \Magento\Framework\Exception\LocalizedException */ private function convertSerializedData() { $connection = $this->moduleDataSetup->getConnection(); $fieldDataConverter = $this->fieldDataConverterFactory->create(SerializedToJson::class); $queryModifier = $this->queryModifierFactory->create( 'in', [ 'values' => [ 'code' => [ 'parameters', 'info_buyRequest', 'bundle_option_ids', 'bundle_selection_ids', 'attributes', 'bundle_selection_attributes', ] ] ] ); $fieldDataConverter->convert( $connection, $this->moduleDataSetup->getTable('wishlist_item_option'), 'option_id', 'value', $queryModifier ); $select = $connection ->select() ->from( $this->moduleDataSetup->getTable('catalog_product_option'), ['option_id'] ) ->where('type = ?', 'file'); $iterator = $this->queryGenerator->generate('option_id', $select); foreach ($iterator as $selectByRange) { $codes = $connection->fetchCol($selectByRange); $codes = array_map( function ($id) { return 'option_' . $id; }, $codes ); $queryModifier = $this->queryModifierFactory->create( 'in', [ 'values' => [ 'code' => $codes ] ] ); $fieldDataConverter->convert( $connection, $this->moduleDataSetup->getTable('wishlist_item_option'), 'option_id', 'value', $queryModifier ); } } }