![]() 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/amasty/base/Setup/ |
<?php /** * @author Amasty Team * @copyright Copyright (c) Amasty (https://www.amasty.com) * @package Magento 2 Base Package */ namespace Amasty\Base\Setup; use Magento\Framework\DB\AggregatedFieldDataConverter; class SerializedFieldDataConverter { /** * @var \Magento\Framework\ObjectManagerInterface */ private $objectManager; /** * @var \Magento\Framework\App\ResourceConnection */ private $connectionResource; public function __construct( \Magento\Framework\ObjectManagerInterface $objectManager, \Magento\Framework\App\ResourceConnection $connectionResource ) { $this->objectManager = $objectManager; $this->connectionResource = $connectionResource; } /** * Convert metadata from serialized to JSON format: * * @param string|string[] $tableName * @param string $identifierField * @param string|string[] $fields * @return void */ public function convertSerializedDataToJson($tableName, $identifierField, $fields) { /** @var AggregatedFieldDataConverter $aggregatedFieldConverter */ $fieldConverter = $this->objectManager->get(AggregatedFieldDataConverter::class); $convertData = []; if (is_array($fields)) { foreach ($fields as $field) { $convertData[] = $this->getConvertedData($tableName, $identifierField, $field); } } else { $convertData[] = $this->getConvertedData($tableName, $identifierField, $fields); } $fieldConverter->convert( $convertData, $this->connectionResource->getConnection() ); } /** * @param string|string[] $tableName * @param string $identifierField * @param string $field * @return \Magento\Framework\DB\FieldToConvert */ protected function getConvertedData($tableName, $identifierField, $field) { $instance = new \Magento\Framework\DB\FieldToConvert( \Magento\Framework\DB\DataConverter\SerializedToJson::class, $this->connectionResource->getTableName($tableName), $identifierField, $field ); return $instance; } }