05ac08fba530c9d0dc0c23f80b51b7cd96fe07b7
[Packages/TYPO3.CMS.git] / typo3 / sysext / install / Classes / ViewHelpers / File / ImageDimensionViewHelper.php
1 <?php
2 namespace TYPO3\CMS\Install\ViewHelpers\File;
3
4 /*
5 * This file is part of the TYPO3 CMS project.
6 *
7 * It is free software; you can redistribute it and/or modify it under
8 * the terms of the GNU General Public License, either version 2
9 * of the License, or any later version.
10 *
11 * For the full copyright and license information, please read the
12 * LICENSE.txt file that was distributed with this source code.
13 *
14 * The TYPO3 project - inspiring people to share!
15 */
16
17 use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper;
18 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
19
20 /**
21 * Get width or height from image file
22 *
23 * = Examples =
24 *
25 * <code title="Defaults">
26 * <f:file.imageDimension>/var/www/typo3/instance/typo3temp/foo.jpg</f:file.size>
27 * </code>
28 * <output>
29 * 170
30 * </output>
31 *
32 * @internal
33 */
34 class ImageDimensionViewHelper extends AbstractViewHelper
35 {
36 /**
37 * Output is escaped already. We must not escape children, to avoid double encoding.
38 *
39 * @var bool
40 */
41 protected $escapeChildren = false;
42
43 /**
44 * Get width / height from image file
45 *
46 * @param string $dimension Either width or height
47 * @throws \TYPO3\CMS\Install\ViewHelpers\Exception
48 * @return int width or height
49 */
50 public function render($dimension = 'width')
51 {
52 return static::renderStatic(
53 array(
54 'dimension' => $dimension,
55 ),
56 $this->buildRenderChildrenClosure(),
57 $this->renderingContext
58 );
59 }
60
61 /**
62 * @param array $arguments
63 * @param \Closure $renderChildrenClosure
64 * @param RenderingContextInterface $renderingContext
65 * @throws \TYPO3\CMS\Install\ViewHelpers\Exception
66 *
67 * @return string
68 */
69 public static function renderStatic(array $arguments, \Closure $renderChildrenClosure, RenderingContextInterface $renderingContext)
70 {
71 $dimension = $arguments['dimension'];
72 if ($dimension !== 'width' && $dimension !== 'height') {
73 throw new \TYPO3\CMS\Install\ViewHelpers\Exception(
74 'Dimension must be either \'width\' or \'height\'',
75 1369563247
76 );
77 }
78 $absolutePathToFile = $renderChildrenClosure();
79 if (!is_file($absolutePathToFile)) {
80 throw new \TYPO3\CMS\Install\ViewHelpers\Exception(
81 'File not found',
82 1369563248
83 );
84 }
85 $actualDimension = getimagesize($absolutePathToFile);
86 if ($dimension === 'width') {
87 $size = $actualDimension[0];
88 } else {
89 $size = $actualDimension[1];
90 }
91 return $size;
92 }
93 }