Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
FileRecorder.php
Go to the documentation of this file.
1 <?php
7 
11 
16 {
22  private $fileInfoManager;
23 
27  private $fileInfoFactory;
28 
34  private $fileSubdirectoryPath = 'analytics/';
35 
41  private $encodedFileName = 'data.tgz';
42 
46  private $filesystem;
47 
53  public function __construct(
54  FileInfoManager $fileInfoManager,
55  FileInfoFactory $fileInfoFactory,
56  Filesystem $filesystem
57  ) {
58  $this->fileInfoManager = $fileInfoManager;
59  $this->fileInfoFactory = $fileInfoFactory;
60  $this->filesystem = $filesystem;
61  }
62 
69  public function recordNewFile(EncodedContext $encodedContext)
70  {
71  $directory = $this->filesystem->getDirectoryWrite(DirectoryList::MEDIA);
72 
73  $fileRelativePath = $this->getFileRelativePath();
74  $directory->writeFile($fileRelativePath, $encodedContext->getContent());
75 
76  $fileInfo = $this->fileInfoManager->load();
77  $this->registerFile($encodedContext, $fileRelativePath);
78  $this->removeOldFile($fileInfo, $directory);
79 
80  return true;
81  }
82 
88  private function getFileRelativePath()
89  {
90  return $this->fileSubdirectoryPath . hash('sha256', time())
91  . '/' . $this->encodedFileName;
92  }
93 
101  private function registerFile(EncodedContext $encodedContext, $fileRelativePath)
102  {
103  $newFileInfo = $this->fileInfoFactory->create(
104  [
105  'path' => $fileRelativePath,
106  'initializationVector' => $encodedContext->getInitializationVector(),
107  ]
108  );
109  $this->fileInfoManager->save($newFileInfo);
110 
111  return true;
112  }
113 
121  private function removeOldFile(FileInfo $fileInfo, WriteInterface $directory)
122  {
123  if (!$fileInfo->getPath()) {
124  return true;
125  }
126 
127  $directory->delete($fileInfo->getPath());
128 
129  $directoryName = dirname($fileInfo->getPath());
130  if ($directoryName !== '.') {
131  $directory->delete($directoryName);
132  }
133 
134  return true;
135  }
136 }
__construct(FileInfoManager $fileInfoManager, FileInfoFactory $fileInfoFactory, Filesystem $filesystem)
$directoryName
Definition: linked_media.php:9
recordNewFile(EncodedContext $encodedContext)
$filesystem