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); } }