[TASK] Deprecate cObject FILE
[Packages/TYPO3.CMS.git] / typo3 / sysext / frontend / Classes / ContentObject / FileContentObject.php
1 <?php
2 namespace TYPO3\CMS\Frontend\ContentObject;
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\Core\Type\File\ImageInfo;
18 use TYPO3\CMS\Core\Utility\GeneralUtility;
19 use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController;
20 use TYPO3\CMS\Frontend\Resource\FilePathSanitizer;
21
22 /**
23 * Contains FILE class object.
24 * @deprecated FILE cObject will be removed in TYPO3 v10.0.
25 */
26 class FileContentObject extends AbstractContentObject
27 {
28 /**
29 * Rendering the cObject, FILE
30 *
31 * @param array $conf Array of TypoScript properties
32 * @return string Output
33 */
34 public function render($conf = [])
35 {
36 $this->getTypoScriptFrontendController()->logDeprecatedTyposcript('cObject FILE', 'Use IMAGE to show images instead.');
37 $theValue = '';
38 $file = isset($conf['file.']) ? $this->cObj->stdWrap($conf['file'], $conf['file.']) : $conf['file'];
39 try {
40 $file = GeneralUtility::makeInstance(FilePathSanitizer::class)->sanitize($file);
41 if (file_exists($file)) {
42 $fileInfo = GeneralUtility::split_fileref($file);
43 $extension = $fileInfo['fileext'];
44 if ($extension === 'jpg' || $extension === 'jpeg' || $extension === 'gif' || $extension === 'png') {
45 $imageInfo = GeneralUtility::makeInstance(ImageInfo::class, $file);
46 $altParameters = trim($this->cObj->getAltParam($conf, false));
47 $theValue = '<img src="'
48 . htmlspecialchars($this->getTypoScriptFrontendController()->absRefPrefix . $file)
49 . '" width="' . (int)$imageInfo->getWidth() . '" height="' . (int)$imageInfo->getHeight()
50 . '"' . $this->cObj->getBorderAttr(' border="0"') . ' ' . $altParameters . ' />';
51 } elseif (filesize($file) < 1024 * 1024) {
52 $theValue = file_get_contents($file);
53 }
54 }
55 } catch (\TYPO3\CMS\Core\Resource\Exception $e) {
56 // do nothing
57 }
58 $linkWrap = isset($conf['linkWrap.']) ? $this->cObj->stdWrap($conf['linkWrap'], $conf['linkWrap.']) : $conf['linkWrap'];
59 if ($linkWrap) {
60 $theValue = $this->cObj->linkWrap($theValue, $linkWrap);
61 }
62 $wrap = isset($conf['wrap.']) ? $this->cObj->stdWrap($conf['wrap'], $conf['wrap.']) : $conf['wrap'];
63 if ($wrap) {
64 $theValue = $this->cObj->wrap($theValue, $wrap);
65 }
66 if (isset($conf['stdWrap.'])) {
67 $theValue = $this->cObj->stdWrap($theValue, $conf['stdWrap.']);
68 }
69 return $theValue;
70 }
71
72 /**
73 * @return TypoScriptFrontendController
74 */
75 protected function getTypoScriptFrontendController()
76 {
77 return $GLOBALS['TSFE'];
78 }
79 }