mirror of
https://github.com/bdnugget/magento2.git
synced 2026-11-08 01:37:36 +00:00
- replaced release version with package version in @since and @depreacated tags - removed @since tag from private properties/methods and non @api classes
157 lines
4.7 KiB
PHP
157 lines
4.7 KiB
PHP
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
namespace Magento\Quote\Setup;
|
|
|
|
use Magento\Framework\DB\AggregatedFieldDataConverter;
|
|
use Magento\Framework\DB\DataConverter\SerializedToJson;
|
|
use Magento\Framework\DB\FieldToConvert;
|
|
use Magento\Framework\DB\Select\QueryModifierFactory;
|
|
use Magento\Framework\DB\Query\Generator;
|
|
|
|
/**
|
|
* Convert serialized data in quote tables to JSON
|
|
*/
|
|
class ConvertSerializedDataToJson
|
|
{
|
|
/**
|
|
* @var QuoteSetup
|
|
*/
|
|
private $quoteSetup;
|
|
|
|
/**
|
|
* @var QueryModifierFactory
|
|
*/
|
|
private $queryModifierFactory;
|
|
|
|
/**
|
|
* @var Generator
|
|
*/
|
|
private $queryGenerator;
|
|
|
|
/**
|
|
* @var AggregatedFieldDataConverter
|
|
*/
|
|
private $aggregatedFieldConverter;
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @param QuoteSetup $quoteSetup
|
|
* @param AggregatedFieldDataConverter $aggregatedFieldConverter
|
|
* @param QueryModifierFactory $queryModifierFactory
|
|
* @param Generator $queryGenerator
|
|
*/
|
|
public function __construct(
|
|
QuoteSetup $quoteSetup,
|
|
AggregatedFieldDataConverter $aggregatedFieldConverter,
|
|
QueryModifierFactory $queryModifierFactory,
|
|
Generator $queryGenerator
|
|
) {
|
|
$this->quoteSetup = $quoteSetup;
|
|
$this->aggregatedFieldConverter = $aggregatedFieldConverter;
|
|
$this->queryModifierFactory = $queryModifierFactory;
|
|
$this->queryGenerator = $queryGenerator;
|
|
}
|
|
|
|
/**
|
|
* Convert data for additional_information field in quote_payment table from serialized
|
|
* to JSON format
|
|
*
|
|
* @return void
|
|
* @throws \InvalidArgumentException
|
|
*/
|
|
public function convert()
|
|
{
|
|
$queryModifier = $this->queryModifierFactory->create(
|
|
'in',
|
|
[
|
|
'values' => [
|
|
'code' => [
|
|
'parameters',
|
|
'info_buyRequest',
|
|
'attributes',
|
|
'bundle_option_ids',
|
|
'bundle_selection_ids',
|
|
'bundle_selection_attributes',
|
|
]
|
|
]
|
|
]
|
|
);
|
|
$this->aggregatedFieldConverter->convert(
|
|
[
|
|
new FieldToConvert(
|
|
SerializedToJson::class,
|
|
$this->quoteSetup->getTable('quote_payment'),
|
|
'payment_id',
|
|
'additional_information'
|
|
),
|
|
new FieldToConvert(
|
|
SerializedToJson::class,
|
|
$this->quoteSetup->getTable('quote_payment'),
|
|
'payment_id',
|
|
'additional_data'
|
|
),
|
|
new FieldToConvert(
|
|
SerializedToJson::class,
|
|
$this->quoteSetup->getTable('quote_address'),
|
|
'address_id',
|
|
'applied_taxes'
|
|
),
|
|
new FieldToConvert(
|
|
SerializedToJson::class,
|
|
$this->quoteSetup->getTable('quote_item_option'),
|
|
'option_id',
|
|
'value',
|
|
$queryModifier
|
|
),
|
|
],
|
|
$this->quoteSetup->getConnection()
|
|
);
|
|
|
|
$select = $this->quoteSetup->getSetup()
|
|
->getConnection()
|
|
->select()
|
|
->from(
|
|
$this->quoteSetup->getSetup()
|
|
->getTable('catalog_product_option'),
|
|
['option_id']
|
|
)
|
|
->where('type = ?', 'file');
|
|
$iterator = $this->queryGenerator->generate('option_id', $select);
|
|
foreach ($iterator as $selectByRange) {
|
|
$codes = $this->quoteSetup->getSetup()
|
|
->getConnection()
|
|
->fetchCol($selectByRange);
|
|
$codes = array_map(
|
|
function ($id) {
|
|
return 'option_' . $id;
|
|
},
|
|
$codes
|
|
);
|
|
$queryModifier = $this->queryModifierFactory->create(
|
|
'in',
|
|
[
|
|
'values' => [
|
|
'code' => $codes
|
|
]
|
|
]
|
|
);
|
|
$this->aggregatedFieldConverter->convert(
|
|
[
|
|
new FieldToConvert(
|
|
SerializedToJson::class,
|
|
$this->quoteSetup->getTable('quote_item_option'),
|
|
'option_id',
|
|
'value',
|
|
$queryModifier
|
|
),
|
|
],
|
|
$this->quoteSetup->getConnection()
|
|
);
|
|
}
|
|
}
|
|
}
|