Ejemplo n.º 1
0
 /**
  * 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();
     }
 }