Exemple #1
0
 /**
  * Returns a (local copy of) a file for processing it. When changing the
  * file, you have to take care of replacing the current version yourself!
  *
  * @param \TYPO3\CMS\Core\Resource\FileInterface $file
  * @param bool $writable Set this to FALSE if you only need the file for read operations. This might speed up things, e.g. by using a cached local version. Never modify the file if you have set this flag!
  * @return string The path to the file on the local disk
  */
 public function getFileForLocalProcessing(\TYPO3\CMS\Core\Resource\FileInterface $file, $writable = true)
 {
     error_log('FAL DRIVER: ' . __FUNCTION__);
     if (!$file->isIndexed() || !$file->getProperty('yagItem') instanceof \Tx_Yag_Domain_Model_Item) {
         $identifier = $file->getIdentifier();
         $fileInfo = $this->getFileInfoByIdentifier($identifier);
         $sourceUri = $this->yagFileSystemDiv->makePathAbsolute($fileInfo['sourceUri']);
     } else {
         $item = $file->getProperty('yagItem');
         $sourceUri = $this->yagFileSystemDiv->makePathAbsolute($item->getSourceuri());
     }
     return $sourceUri;
 }
 /**
  * Outputs file Contents,
  * clears output buffer first and sends headers accordingly.
  *
  * @param FileInterface $file
  * @param bool $asDownload If set Content-Disposition attachment is sent, inline otherwise
  * @param string $alternativeFilename the filename for the download (if $asDownload is set)
  * @param string $overrideMimeType If set this will be used as Content-Type header instead of the automatically detected mime type.
  * @return void
  */
 public function dumpFileContents(FileInterface $file, $asDownload = false, $alternativeFilename = null, $overrideMimeType = null)
 {
     $downloadName = $alternativeFilename ?: $file->getName();
     $contentDisposition = $asDownload ? 'attachment' : 'inline';
     header('Content-Disposition: ' . $contentDisposition . '; filename="' . $downloadName . '"');
     header('Content-Type: ' . ($overrideMimeType ?: $file->getMimeType()));
     header('Content-Length: ' . $file->getSize());
     // Cache-Control header is needed here to solve an issue with browser IE8 and lower
     // See for more information: http://support.microsoft.com/kb/323308
     header("Cache-Control: ''");
     header('Last-Modified: ' . gmdate('D, d M Y H:i:s', array_pop($this->driver->getFileInfoByIdentifier($file->getIdentifier(), array('mtime')))) . ' GMT', true, 200);
     ob_clean();
     flush();
     while (ob_get_level() > 0) {
         ob_end_clean();
     }
     $this->driver->dumpFileContents($file->getIdentifier());
 }
 /**
  * Returns information about a file for a given file object.
  *
  * @param \TYPO3\CMS\Core\Resource\FileInterface $file
  * @return array
  */
 public function getFileInfo(\TYPO3\CMS\Core\Resource\FileInterface $file)
 {
     return $this->getFileInfoByIdentifier($file->getIdentifier());
 }
 /**
  * Renames a file in this storage.
  *
  * @param \TYPO3\CMS\Core\Resource\FileInterface $file
  * @param string $newName The target path (including the file name!)
  * @return string The identifier of the file after renaming
  */
 public function renameFile(\TYPO3\CMS\Core\Resource\FileInterface $file, $newName)
 {
     // Makes sure the Path given as parameter is valid
     $newName = $this->sanitizeFileName($newName);
     $newIdentifier = rtrim(GeneralUtility::fixWindowsFilePath(dirname($file->getIdentifier())), '/') . '/' . $newName;
     // The target should not exist already
     if ($this->fileExists($newIdentifier)) {
         throw new \TYPO3\CMS\Core\Resource\Exception\ExistingTargetFileNameException('The target file already exists.', 1320291063);
     }
     $sourcePath = $this->getAbsolutePath($file);
     $targetPath = $this->absoluteBasePath . '/' . ltrim($newIdentifier, '/');
     $result = rename($sourcePath, $targetPath);
     if ($result === FALSE) {
         throw new \RuntimeException('Renaming file ' . $sourcePath . ' to ' . $targetPath . ' failed.', 1320375115);
     }
     return $newIdentifier;
 }
 /**
  * @return string
  */
 public function getIdentifier()
 {
     return $this->resource->getStorage()->getUid() . ':' . $this->resource->getIdentifier();
 }
Exemple #6
0
 /**
  * Format the current link for HTML output
  *
  * @return string
  */
 public function formatCurrentUrl()
 {
     return $this->currentFile->getStorage()->getName() . ': ' . $this->currentFile->getIdentifier();
 }