123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Analytics\Model;
- use Magento\Framework\Exception\LocalizedException;
- use Magento\Framework\FlagManager;
- /**
- * Manage saving and loading FileInfo object.
- */
- class FileInfoManager
- {
- /**
- * @var FlagManager
- */
- private $flagManager;
- /**
- * @var FileInfoFactory
- */
- private $fileInfoFactory;
- /**
- * Flag code for a stored FileInfo object.
- *
- * @var string
- */
- private $flagCode = 'analytics_file_info';
- /**
- * Parameters which have to be saved into encoded form.
- *
- * @var array
- */
- private $encodedParameters = [
- 'initializationVector'
- ];
- /**
- * @param FlagManager $flagManager
- * @param FileInfoFactory $fileInfoFactory
- */
- public function __construct(
- FlagManager $flagManager,
- FileInfoFactory $fileInfoFactory
- ) {
- $this->flagManager = $flagManager;
- $this->fileInfoFactory = $fileInfoFactory;
- }
- /**
- * Save FileInfo object.
- *
- * @param FileInfo $fileInfo
- * @return bool
- * @throws LocalizedException
- */
- public function save(FileInfo $fileInfo)
- {
- $parameters = [];
- $parameters['initializationVector'] = $fileInfo->getInitializationVector();
- $parameters['path'] = $fileInfo->getPath();
- $emptyParameters = array_diff($parameters, array_filter($parameters));
- if ($emptyParameters) {
- throw new LocalizedException(
- __('These arguments can\'t be empty "%1"', implode(', ', array_keys($emptyParameters)))
- );
- }
- foreach ($this->encodedParameters as $encodedParameter) {
- $parameters[$encodedParameter] = $this->encodeValue($parameters[$encodedParameter]);
- }
- $this->flagManager->saveFlag($this->flagCode, $parameters);
- return true;
- }
- /**
- * Load FileInfo object.
- *
- * @return FileInfo
- */
- public function load()
- {
- $parameters = $this->flagManager->getFlagData($this->flagCode) ?: [];
- $encodedParameters = array_intersect($this->encodedParameters, array_keys($parameters));
- foreach ($encodedParameters as $encodedParameter) {
- $parameters[$encodedParameter] = $this->decodeValue($parameters[$encodedParameter]);
- }
- $fileInfo = $this->fileInfoFactory->create($parameters);
- return $fileInfo;
- }
- /**
- * Encode value.
- *
- * @param string $value
- * @return string
- */
- private function encodeValue($value)
- {
- return base64_encode($value);
- }
- /**
- * Decode value.
- *
- * @param string $value
- * @return string
- */
- private function decodeValue($value)
- {
- return base64_decode($value);
- }
- }
|