![]() 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/magento/module-analytics/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Analytics\Model; use Magento\Framework\App\Filesystem\DirectoryList; use Magento\Framework\Filesystem; use Magento\Framework\Filesystem\Directory\WriteInterface; /** * Class for the handling of registration a new file for MBI. */ class FileRecorder { /** * Resource for managing FileInfo object. * * @var FileInfoManager */ private $fileInfoManager; /** * @var FileInfoFactory */ private $fileInfoFactory; /** * Subdirectory path for an encoded file. * * @var string */ private $fileSubdirectoryPath = 'analytics/'; /** * File name of an encoded file. * * @var string */ private $encodedFileName = 'data.tgz'; /** * @var Filesystem */ private $filesystem; /** * @param FileInfoManager $fileInfoManager * @param FileInfoFactory $fileInfoFactory * @param Filesystem $filesystem */ public function __construct( FileInfoManager $fileInfoManager, FileInfoFactory $fileInfoFactory, Filesystem $filesystem ) { $this->fileInfoManager = $fileInfoManager; $this->fileInfoFactory = $fileInfoFactory; $this->filesystem = $filesystem; } /** * Save new encrypted file, register it and remove old registered file. * * @param EncodedContext $encodedContext * @return bool */ public function recordNewFile(EncodedContext $encodedContext) { $directory = $this->filesystem->getDirectoryWrite(DirectoryList::MEDIA); $fileRelativePath = $this->getFileRelativePath(); $directory->writeFile($fileRelativePath, $encodedContext->getContent()); $fileInfo = $this->fileInfoManager->load(); $this->registerFile($encodedContext, $fileRelativePath); $this->removeOldFile($fileInfo, $directory); return true; } /** * Return relative path to encoded file. * * @return string */ private function getFileRelativePath() { return $this->fileSubdirectoryPath . hash('sha256', time()) . '/' . $this->encodedFileName; } /** * Register encoded file. * * @param EncodedContext $encodedContext * @param string $fileRelativePath * @return bool */ private function registerFile(EncodedContext $encodedContext, $fileRelativePath) { $newFileInfo = $this->fileInfoFactory->create( [ 'path' => $fileRelativePath, 'initializationVector' => $encodedContext->getInitializationVector(), ] ); $this->fileInfoManager->save($newFileInfo); return true; } /** * Remove previously registered file. * * @param FileInfo $fileInfo * @param WriteInterface $directory * @return bool */ private function removeOldFile(FileInfo $fileInfo, WriteInterface $directory) { if (!$fileInfo->getPath()) { return true; } $directory->delete($fileInfo->getPath()); $directoryName = dirname($fileInfo->getPath()); if ($directoryName !== '.') { $directory->delete($directoryName); } return true; } }