/**
  * Render a given media file
  *
  * @param FileInterface|AbstractFileFolder $file
  * @param array $additionalConfig This array can hold additional configuration that is passed though to the Renderer object
  * @param string $width This can be a numeric value representing the fixed width of in pixels. But you can also perform simple calculations by adding "m" or "c" to the value. See imgResource.width for possible options.
  * @param string $height This can be a numeric value representing the fixed height in pixels. But you can also perform simple calculations by adding "m" or "c" to the value. See imgResource.width for possible options.
  * @return string Rendered tag
  */
 public function render($file, $additionalConfig = array(), $width = null, $height = null)
 {
     // get Resource Object (non ExtBase version)
     if (is_callable(array($file, 'getOriginalResource'))) {
         // We have a domain model, so we need to fetch the FAL resource object from there
         $file = $file->getOriginalResource();
     }
     $fileRenderer = RendererRegistry::getInstance()->getRenderer($file);
     // Fallback to image when no renderer is found
     if ($fileRenderer === null) {
         return $this->renderImage($file, $width, $height);
     } else {
         $additionalConfig = array_merge_recursive($this->arguments, $additionalConfig);
         return $fileRenderer->render($file, $width, $height, $additionalConfig);
     }
 }
Exemple #2
0
 /**
  * Render a given media file
  *
  * @return string Rendered tag
  * @throws \UnexpectedValueException
  */
 public function render()
 {
     $file = $this->arguments['file'];
     $additionalConfig = $this->arguments['additionalConfig'];
     $width = $this->arguments['width'];
     $height = $this->arguments['height'];
     // get Resource Object (non ExtBase version)
     if (is_callable([$file, 'getOriginalResource'])) {
         // We have a domain model, so we need to fetch the FAL resource object from there
         $file = $file->getOriginalResource();
     }
     if (!($file instanceof FileInterface || $file instanceof AbstractFileFolder)) {
         throw new \UnexpectedValueException('Supplied file object type ' . get_class($file) . ' must be FileInterface or AbstractFileFolder.', 1454252193);
     }
     $fileRenderer = RendererRegistry::getInstance()->getRenderer($file);
     // Fallback to image when no renderer is found
     if ($fileRenderer === null) {
         return $this->renderImage($file, $width, $height);
     } else {
         $additionalConfig = array_merge_recursive($this->arguments, $additionalConfig);
         return $fileRenderer->render($file, $width, $height, $additionalConfig);
     }
 }
 /**
  * @test
  */
 public function getRendererReturnsCorrectInstance2()
 {
     $rendererRegistry = \TYPO3\CMS\Core\Resource\Rendering\RendererRegistry::getInstance();
     $rendererRegistry->registerRendererClass(\TYPO3\CMS\Core\Resource\Rendering\AudioTagRenderer::class);
     $rendererRegistry->registerRendererClass(\TYPO3\CMS\Core\Resource\Rendering\VideoTagRenderer::class);
     $fileResourceMock = $this->getMock(\TYPO3\CMS\Core\Resource\File::class, array(), array(), '', FALSE);
     $fileResourceMock->expects($this->any())->method('getMimeType')->will($this->returnValue('video/mp4'));
     $rendererRegistry->getRendererInstances();
     $renderer = $rendererRegistry->getRenderer($fileResourceMock);
     $this->assertInstanceOf(\TYPO3\CMS\Core\Resource\Rendering\VideoTagRenderer::class, $renderer);
 }
Exemple #4
0
<?php

defined('TYPO3_MODE') or die;
/** @var \TYPO3\CMS\Extbase\SignalSlot\Dispatcher $signalSlotDispatcher */
$signalSlotDispatcher = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\SignalSlot\Dispatcher::class);
if (TYPO3_MODE === 'BE' && !(TYPO3_REQUESTTYPE & TYPO3_REQUESTTYPE_INSTALL)) {
    // FAL SECURITY CHECKS
    $signalSlotDispatcher->connect(\TYPO3\CMS\Core\Resource\ResourceFactory::class, \TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PostProcessStorage, \TYPO3\CMS\Core\Resource\Security\StoragePermissionsAspect::class, 'addUserPermissionsToStorage');
    $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][] = 'TYPO3\\CMS\\Core\\Resource\\Security\\FileMetadataPermissionsAspect';
    $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/alt_doc.php']['makeEditForm_accessCheck'][] = 'TYPO3\\CMS\\Core\\Resource\\Security\\FileMetadataPermissionsAspect->isAllowedToShowEditForm';
    $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tceforms_inline.php']['checkAccess'][] = 'TYPO3\\CMS\\Core\\Resource\\Security\\FileMetadataPermissionsAspect->isAllowedToShowEditForm';
    $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['checkModifyAccessList'][] = 'TYPO3\\CMS\\Core\\Resource\\Security\\FileMetadataPermissionsAspect';
    // PACKAGE MANAGEMENT
    $signalSlotDispatcher->connect('PackageManagement', 'packagesMayHaveChanged', \TYPO3\CMS\Core\Package\PackageManager::class, 'scanAvailablePackages');
}
$signalSlotDispatcher->connect(\TYPO3\CMS\Core\Resource\ResourceStorage::class, \TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFileDelete, \TYPO3\CMS\Core\Resource\Processing\FileDeletionAspect::class, 'removeFromRepository');
$signalSlotDispatcher->connect(\TYPO3\CMS\Core\Resource\ResourceStorage::class, \TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFileAdd, \TYPO3\CMS\Core\Resource\Processing\FileDeletionAspect::class, 'cleanupProcessedFilesPostFileAdd');
$signalSlotDispatcher->connect(\TYPO3\CMS\Core\Resource\ResourceStorage::class, \TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFileReplace, \TYPO3\CMS\Core\Resource\Processing\FileDeletionAspect::class, 'cleanupProcessedFilesPostFileReplace');
if (!\TYPO3\CMS\Core\Core\Bootstrap::usesComposerClassLoading()) {
    $signalSlotDispatcher->connect(\TYPO3\CMS\Extensionmanager\Service\ExtensionManagementService::class, 'hasInstalledExtensions', \TYPO3\CMS\Core\Core\ClassLoadingInformation::class, 'writeClassLoadingInformation');
    $signalSlotDispatcher->connect(\TYPO3\CMS\Extensionmanager\Utility\InstallUtility::class, 'afterExtensionUninstall', \TYPO3\CMS\Core\Core\ClassLoadingInformation::class, 'writeClassLoadingInformation');
}
unset($signalSlotDispatcher);
$GLOBALS['TYPO3_CONF_VARS']['FE']['eID_include']['dumpFile'] = 'EXT:core/Resources/PHP/FileDumpEID.php';
/** @var \TYPO3\CMS\Core\Resource\Rendering\RendererRegistry $rendererRegistry */
$rendererRegistry = \TYPO3\CMS\Core\Resource\Rendering\RendererRegistry::getInstance();
$rendererRegistry->registerRendererClass(\TYPO3\CMS\Core\Resource\Rendering\AudioTagRenderer::class);
$rendererRegistry->registerRendererClass(\TYPO3\CMS\Core\Resource\Rendering\VideoTagRenderer::class);
$textExtractorRegistry = \TYPO3\CMS\Core\Resource\TextExtraction\TextExtractorRegistry::getInstance();
$textExtractorRegistry->registerTextExtractor(\TYPO3\CMS\Core\Resource\TextExtraction\PlainTextExtractor::class);
 /**
  * Get the source-URL from the rendered onlineMediaObject
  *
  * @param File $file The original image file
  * @return string The source URL
  */
 protected function getVideoFile(File $file)
 {
     // Get OnlineMediaHelper
     $fileRenderer = RendererRegistry::getInstance()->getRenderer($file);
     // Render the media according to the configured renderer
     $renderedOnlineMedia = $fileRenderer->render($file, 0, 0);
     // Get URL from generated code
     $src = [];
     preg_match_all('/src="(\\/\\/[^"]*)"/i', $renderedOnlineMedia, $src);
     if (is_array($src) && is_array($src[1]) && !empty($src[1][0])) {
         return $src[1][0];
     } else {
         return '';
     }
 }