123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Sales\Setup;
- use Magento\Framework\DB\DataConverter\DataConversionException;
- use Magento\Framework\DB\DataConverter\SerializedToJson;
- /**
- * Serializer used to update nested serialized data in product_options field.
- */
- class SerializedDataConverter extends SerializedToJson
- {
- /**
- * Convert from serialized to JSON format.
- *
- * @param string $value
- * @return string
- *
- * @throws DataConversionException
- */
- public function convert($value)
- {
- if ($this->isValidJsonValue($value)) {
- return $value;
- }
- $valueUnserialized = $this->unserializeValue($value);
- if (isset($valueUnserialized['options'])) {
- foreach ($valueUnserialized['options'] as $key => $option) {
- if ($option['option_type'] === 'file') {
- $valueUnserialized['options'][$key]['option_value'] = parent::convert($option['option_value']);
- }
- }
- }
- if (isset($valueUnserialized['bundle_selection_attributes'])) {
- $valueUnserialized['bundle_selection_attributes'] = parent::convert(
- $valueUnserialized['bundle_selection_attributes']
- );
- }
- return $this->encodeJson($valueUnserialized);
- }
- }
|