‪TYPO3CMS  ‪main
AbstractOnlineMediaHelper.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * This file is part of the TYPO3 CMS project.
5  *
6  * It is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU General Public License, either version 2
8  * of the License, or any later version.
9  *
10  * For the full copyright and license information, please read the
11  * LICENSE.txt file that was distributed with this source code.
12  *
13  * The TYPO3 project - inspiring people to share!
14  */
15 
17 
25 
30 {
36  protected ‪$onlineMediaIdCache = [];
37 
43  protected ‪$extension = '';
44 
50  public function ‪__construct(‪$extension)
51  {
52  $this->extension = ‪$extension;
53  }
54 
60  public function ‪getOnlineMediaId(‪File $file)
61  {
62  if (!isset($this->onlineMediaIdCache[$file->‪getUid()])) {
63  // Limiting media identifier to 2048 bytes
64  if ($file->‪getSize() > 2048) {
65  return '';
66  }
67  // By definition these files only contain the ID of the remote media source
68  $this->onlineMediaIdCache[$file->‪getUid()] = trim($file->‪getContents());
69  }
70  return $this->onlineMediaIdCache[$file->‪getUid()];
71  }
72 
80  protected function ‪findExistingFileByOnlineMediaId($onlineMediaId, ‪Folder $targetFolder, $fileExtension)
81  {
82  $file = null;
83  $fileHash = sha1($onlineMediaId);
84  $files = $this->‪getFileIndexRepository()->‪findByContentHash($fileHash);
85  if (!empty($files)) {
86  foreach ($files as $fileIndexEntry) {
87  if (
88  $fileIndexEntry['folder_hash'] === $targetFolder->‪getHashedIdentifier()
89  && (int)$fileIndexEntry['storage'] === $targetFolder->‪getStorage()->‪getUid()
90  && $fileIndexEntry['extension'] === $fileExtension
91  ) {
92  $file = $this->‪getResourceFactory()->‪getFileObject($fileIndexEntry['uid'], $fileIndexEntry);
93  break;
94  }
95  }
96  }
97  return $file;
98  }
99 
108  protected function ‪createNewFile(‪Folder $targetFolder, $fileName, $onlineMediaId)
109  {
110  $temporaryFile = GeneralUtility::tempnam('online_media');
111  ‪GeneralUtility::writeFileToTypo3tempDir($temporaryFile, $onlineMediaId);
112  $file = $targetFolder->‪addFile($temporaryFile, $fileName, ‪DuplicationBehavior::RENAME);
113  return $file;
114  }
115 
123  protected function ‪getTempFolderPath()
124  {
125  $path = ‪Environment::getPublicPath() . '/typo3temp/assets/online_media/';
126  if (!is_dir($path)) {
128  }
129  return $path;
130  }
131 
137  protected function ‪getFileIndexRepository()
138  {
139  return GeneralUtility::makeInstance(FileIndexRepository::class);
140  }
141 
147  protected function ‪getResourceFactory()
148  {
149  return GeneralUtility::makeInstance(ResourceFactory::class);
150  }
151 }
‪TYPO3\CMS\Core\Resource\OnlineMedia\Helpers\AbstractOnlineMediaHelper\findExistingFileByOnlineMediaId
‪File null findExistingFileByOnlineMediaId($onlineMediaId, Folder $targetFolder, $fileExtension)
Definition: AbstractOnlineMediaHelper.php:78
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository
Definition: FileIndexRepository.php:42
‪TYPO3\CMS\Core\Resource\OnlineMedia\Helpers\AbstractOnlineMediaHelper\getFileIndexRepository
‪FileIndexRepository getFileIndexRepository()
Definition: AbstractOnlineMediaHelper.php:135
‪TYPO3\CMS\Core\Resource\ResourceStorage\getUid
‪int getUid()
Definition: ResourceStorage.php:328
‪TYPO3\CMS\Core\Resource\DuplicationBehavior
Definition: DuplicationBehavior.php:24
‪TYPO3\CMS\Core\Resource\OnlineMedia\Helpers\AbstractOnlineMediaHelper\getTempFolderPath
‪string getTempFolderPath()
Definition: AbstractOnlineMediaHelper.php:121
‪TYPO3\CMS\Core\Resource\OnlineMedia\Helpers\AbstractOnlineMediaHelper\__construct
‪__construct($extension)
Definition: AbstractOnlineMediaHelper.php:48
‪TYPO3\CMS\Core\Resource\OnlineMedia\Helpers\AbstractOnlineMediaHelper\$extension
‪string $extension
Definition: AbstractOnlineMediaHelper.php:41
‪TYPO3\CMS\Core\Core\Environment\getPublicPath
‪static getPublicPath()
Definition: Environment.php:187
‪TYPO3\CMS\Core\Resource\OnlineMedia\Helpers\AbstractOnlineMediaHelper\getOnlineMediaId
‪string getOnlineMediaId(File $file)
Definition: AbstractOnlineMediaHelper.php:58
‪TYPO3\CMS\Core\Resource\OnlineMedia\Helpers\AbstractOnlineMediaHelper\getResourceFactory
‪ResourceFactory getResourceFactory()
Definition: AbstractOnlineMediaHelper.php:145
‪TYPO3\CMS\Core\Resource\Folder\getStorage
‪ResourceStorage getStorage()
Definition: Folder.php:148
‪TYPO3\CMS\Core\Utility\GeneralUtility\mkdir_deep
‪static mkdir_deep($directory)
Definition: GeneralUtility.php:1753
‪TYPO3\CMS\Core\Resource\OnlineMedia\Helpers\AbstractOnlineMediaHelper
Definition: AbstractOnlineMediaHelper.php:30
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\findByContentHash
‪mixed findByContentHash($hash)
Definition: FileIndexRepository.php:146
‪TYPO3\CMS\Core\Resource\OnlineMedia\Helpers\AbstractOnlineMediaHelper\createNewFile
‪File createNewFile(Folder $targetFolder, $fileName, $onlineMediaId)
Definition: AbstractOnlineMediaHelper.php:106
‪TYPO3\CMS\Core\Resource\Folder
Definition: Folder.php:37
‪TYPO3\CMS\Core\Resource\ResourceFactory
Definition: ResourceFactory.php:41
‪TYPO3\CMS\Core\Resource\File
Definition: File.php:24
‪TYPO3\CMS\Core\Resource\DuplicationBehavior\RENAME
‪const RENAME
Definition: DuplicationBehavior.php:32
‪TYPO3\CMS\Core\Resource\AbstractFile\getUid
‪int getUid()
Definition: AbstractFile.php:203
‪TYPO3\CMS\Core\Resource\File\getContents
‪string getContents()
Definition: File.php:105
‪TYPO3\CMS\Core\Resource\AbstractFile\getSize
‪int null getSize()
Definition: AbstractFile.php:184
‪TYPO3\CMS\Core\Core\Environment
Definition: Environment.php:41
‪TYPO3\CMS\Core\Resource\OnlineMedia\Helpers\AbstractOnlineMediaHelper\$onlineMediaIdCache
‪array $onlineMediaIdCache
Definition: AbstractOnlineMediaHelper.php:35
‪TYPO3\CMS\Core\Resource\OnlineMedia\Helpers\OnlineMediaHelperInterface
Definition: OnlineMediaHelperInterface.php:25
‪TYPO3\CMS\Core\Resource\ResourceFactory\getFileObject
‪File getFileObject($uid, array $fileData=[])
Definition: ResourceFactory.php:196
‪TYPO3\CMS\Core\Resource\Folder\addFile
‪File addFile($localFilePath, $fileName=null, $conflictMode=DuplicationBehavior::CANCEL)
Definition: Folder.php:300
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:51
‪TYPO3\CMS\Core\Resource\Folder\getHashedIdentifier
‪string getHashedIdentifier()
Definition: Folder.php:169
‪TYPO3\CMS\Core\Resource\OnlineMedia\Helpers
Definition: AbstractOEmbedHelper.php:16
‪TYPO3\CMS\Core\Utility\GeneralUtility\writeFileToTypo3tempDir
‪static string null writeFileToTypo3tempDir($filepath, $content)
Definition: GeneralUtility.php:1659