[BUGFIX] Remove PHP warnings when no icon is found in FormEngine 16/32616/2
authorBenjamin Mack <benni@typo3.org>
Sun, 7 Sep 2014 15:24:28 +0000 (17:24 +0200)
committerAnja Leichsenring <aleichsenring@ab-softlab.de>
Sun, 7 Sep 2014 20:11:47 +0000 (22:11 +0200)
If running in development mode and an icon
in FormEngine is not found, TYPO3 shows
the PHP E_WARNING of getimagesize() in a flash message.

The check should therefore be done in a cleaner way,
without the @ symbol.

Releases: 6.3, 6.2
Resolves: #61394
Change-Id: I546faee95bf304e135709c3e1c95292f48daf3d7
Reviewed-on: http://review.typo3.org/32616
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
typo3/sysext/backend/Classes/Form/FormEngine.php

index eb6f210..0ed112c 100644 (file)
@@ -4758,6 +4758,7 @@ TBE_EDITOR.customEvalFunctions[\'' . $evalData . '\'] = function(value) {
         * @todo Define visibility
         */
        public function getIcon($icon) {
+               $selIconInfo = FALSE;
                if (substr($icon, 0, 4) == 'EXT:') {
                        $file = GeneralUtility::getFileAbsFileName($icon);
                        if ($file) {
@@ -4766,18 +4767,23 @@ TBE_EDITOR.customEvalFunctions[\'' . $evalData . '\'] = function(value) {
                                $selIconInfo = @getimagesize((PATH_site . $file));
                        } else {
                                $selIconFile = '';
-                               $selIconInfo = FALSE;
                        }
                } elseif (substr($icon, 0, 3) == '../') {
                        $selIconFile = $this->backPath . GeneralUtility::resolveBackPath($icon);
-                       $selIconInfo = @getimagesize((PATH_site . GeneralUtility::resolveBackPath(substr($icon, 3))));
+                       if (file_exists(PATH_site . GeneralUtility::resolveBackPath(substr($icon, 3)))) {
+                               $selIconInfo = getimagesize((PATH_site . GeneralUtility::resolveBackPath(substr($icon, 3))));
+                       }
                } elseif (substr($icon, 0, 4) == 'ext/' || substr($icon, 0, 7) == 'sysext/') {
                        $selIconFile = $this->backPath . $icon;
-                       $selIconInfo = @getimagesize((PATH_typo3 . $icon));
+                       if (file_exists(PATH_typo3 . $icon)) {
+                               $selIconInfo = getimagesize(PATH_typo3 . $icon);
+                       }
                } else {
                        $selIconFile = IconUtility::skinImg($this->backPath, 'gfx/' . $icon, '', 1);
                        $iconPath = substr($selIconFile, strlen($this->backPath));
-                       $selIconInfo = @getimagesize((PATH_typo3 . $iconPath));
+                       if (file_exists(PATH_typo3 . $iconPath)) {
+                               $selIconInfo = getimagesize(PATH_typo3 . $iconPath);
+                       }
                }
                if ($selIconInfo === FALSE) {
                        // Unset to empty string if icon is not available
@@ -4796,7 +4802,7 @@ TBE_EDITOR.customEvalFunctions[\'' . $evalData . '\'] = function(value) {
         */
        protected function getIconHtml($icon, $alt = '', $title = '') {
                $iconArray = $this->getIcon($icon);
-               if (is_file(GeneralUtility::resolveBackPath(PATH_typo3 . PATH_typo3_mod . $iconArray[0]))) {
+               if (!empty($iconArray[0]) && is_file(GeneralUtility::resolveBackPath(PATH_typo3 . PATH_typo3_mod . $iconArray[0]))) {
                        return '<img src="' . $iconArray[0] . '" alt="' . $alt . '" ' . ($title ? 'title="' . $title . '"' : '') . ' />';
                } else {
                        return IconUtility::getSpriteIcon($icon, array('alt' => $alt, 'title' => $title));