/** * Retrieve data from a file reference * * @param \TYPO3\CMS\Core\Resource\ResourceInterface|Folder|\TYPO3\CMS\Core\Resource\AbstractFile $originalResource * @return array */ protected function transformFileReference($originalResource) { static $depth = 0; if ($originalResource instanceof AbstractFileFolder) { if (++$depth > 10) { throw new \RuntimeException('Max nesting level'); } $result = $this->transformFileReference($originalResource->getOriginalResource()); $depth--; return $result; } try { if ($originalResource instanceof Folder) { $filesInFolder = array(); foreach ($originalResource->getFiles() as $currentFile) { $filesInFolder[] = $this->transformFileReference($currentFile); } return $filesInFolder; } if ($originalResource instanceof FileReference) { // This would expose all data // return $originalResource->getProperties(); list($title, $description) = $this->getTitleAndDescription($originalResource); return array('name' => $originalResource->getName(), 'mimeType' => $originalResource->getMimeType(), 'url' => $originalResource->getPublicUrl(), 'size' => $originalResource->getSize(), 'title' => $title, 'description' => $description); } if ($originalResource instanceof FileInterface) { return array('name' => $originalResource->getName(), 'mimeType' => $originalResource->getMimeType(), 'url' => $originalResource->getPublicUrl(), 'size' => $originalResource->getSize()); } return array('name' => $originalResource->getName()); } catch (\RuntimeException $exception) { return array(); } }