| Current Path : /home/rtorresani/www/vendor/magento/module-wishlist/Setup/Patch/Data/ |
| Current File : //home/rtorresani/www/vendor/magento/module-wishlist/Setup/Patch/Data/ConvertSerializedData.php |
<?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
);
}
}
}