[BUGFIX] InvalidArgumentException in Image- and Media-ViewHelper 22/46422/3
authorDaniel Maier <dani-maier@gmx.de>
Sun, 31 Jan 2016 17:58:30 +0000 (18:58 +0100)
committerMarkus Klein <markus.klein@typo3.org>
Wed, 3 Feb 2016 14:08:29 +0000 (15:08 +0100)
The argument validation of Standalone Fluids AbstractViewHelper
fails for methods defining arguments with multiple types, like
@param FileInterface|AbstractFileFolder.

To solve this, the corresponding argument definition of Image-
and Media-ViewHelper render methods has been changed to object.
Type validation of these arguments in question is done inside
the corresponding methods.

Resolves: #73048
Releases: master
Change-Id: Ib3bf340e9191eefbd1186f24b00d8e14fa48b5e7
Reviewed-on: https://review.typo3.org/46422
Reviewed-by: Xavier Perseguers <xavier@typo3.org>
Tested-by: Xavier Perseguers <xavier@typo3.org>
Reviewed-by: Claus Due <claus@phpmind.net>
Reviewed-by: Andreas Fernandez <typo3@scripting-base.de>
Tested-by: Andreas Fernandez <typo3@scripting-base.de>
Reviewed-by: Markus Klein <markus.klein@typo3.org>
Tested-by: Markus Klein <markus.klein@typo3.org>
typo3/sysext/fluid/Classes/ViewHelpers/ImageViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/MediaViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Uri/ImageViewHelper.php

index 469d6c9..084977e 100644 (file)
@@ -95,7 +95,7 @@ class ImageViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractTagBasedV
      * @param int $maxWidth maximum width of the image
      * @param int $maxHeight maximum height of the image
      * @param bool $treatIdAsReference given src argument is a sys_file_reference record
-     * @param FileInterface|AbstractFileFolder $image a FAL object
+     * @param object $image a FAL object
      * @param string|bool $crop overrule cropping of image (setting to FALSE disables the cropping set in FileReference)
      * @param bool $absolute Force absolute URL
      *
index 09da4e5..4f48f76 100644 (file)
@@ -71,11 +71,12 @@ class MediaViewHelper extends AbstractTagBasedViewHelper
     /**
      * Render a given media file
      *
-     * @param FileInterface|AbstractFileFolder $file
+     * @param object $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
+     * @throws \UnexpectedValueException
      */
     public function render($file, $additionalConfig = array(), $width = null, $height = null)
     {
@@ -86,6 +87,10 @@ class MediaViewHelper extends AbstractTagBasedViewHelper
             $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
index 4f8f734..628844b 100644 (file)
@@ -70,7 +70,7 @@ class ImageViewHelper extends AbstractViewHelper
      *
      * @see https://docs.typo3.org/typo3cms/TyposcriptReference/ContentObjects/ImgResource/
      * @param string $src
-     * @param FileInterface|AbstractFileFolder $image
+     * @param object $image
      * @param string $width width of the image. This can be a numeric value representing the fixed width of the image 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 height of the image. This can be a numeric value representing the fixed height of the image in pixels. But you can also perform simple calculations by adding "m" or "c" to the value. See imgResource.width for possible options.
      * @param int $minWidth minimum width of the image