Project

General

Profile

Actions

Bug #100087

closed

PHP Warning: Array to string conversion in IconFactory.php

Added by Franz Holzinger about 1 year ago. Updated about 1 year ago.

Status:
Closed
Priority:
Should have
Assignee:
-
Category:
Backend API
Target version:
-
Start date:
2023-03-04
Due date:
% Done:

0%

Estimated time:
TYPO3 Version:
12
PHP Version:
8.1
Tags:
Complexity:
Is Regression:
Sprint Focus:

Description

When I open the list module with records of tt_board, then I get this PHP warning.

(1/1) #1476107295 TYPO3\CMS\Core\Error\Exception
PHP Warning: Array to string conversion in /home/www/path/typo3_src-12.1.3/typo3/sysext/core/Classes/Imaging/IconFactory.php line 158

in /home/www/path/typo3_src-12.1.3/typo3/sysext/core/Classes/Error/ErrorHandler.php line 138
        }

        $message = self::ERROR_LEVEL_LABELS[$errorLevel] . ': ' . $errorMessage . ' in ' . $errorFile . ' line ' . $errorLine;
        if ($errorLevel & $this->exceptionalErrors) {
            throw new Exception($message, 1476107295);
        }

        $message = $this->getFormattedLogMessage($message);

at TYPO3\CMS\Core\Error\ErrorHandler->handleError()
at implode()
in /home/www/path/typo3_src-12.1.3/typo3/sysext/core/Classes/Imaging/IconFactory.php line 158
                // even if not properly documented the value of the typeicon_column in a record could be
                // an array (multiselect) in typeicon_classes a key could consist of a comma-separated string "foo,bar" 
                // but mostly it should be only one entry in that array
                if (is_array($row[$column])) {
                    $recordType[1] = implode(',', $row[$column]);
                } else {
                    $recordType[1] = $row[$column];
                }
            } else {
at TYPO3\CMS\Core\Imaging\IconFactory->mapRecordTypeToIconIdentifier()
in /home/www/path/typo3_src-12.1.3/typo3/sysext/core/Classes/Imaging/IconFactory.php line 125
     * @return Icon
     */
    public function getIconForRecord($table, array $row, $size = Icon::SIZE_MEDIUM)
    {
        $iconIdentifier = $this->mapRecordTypeToIconIdentifier($table, $row);
        $overlayIdentifier = $this->mapRecordTypeToOverlayIdentifier($table, $row);
        return $this->getIcon($iconIdentifier, $size, $overlayIdentifier);
    }

at TYPO3\CMS\Core\Imaging\IconFactory->getIconForRecord()
in /home/www/path/typo3_src-12.1.3/typo3/sysext/backend/Classes/Form/Container/OuterWrapContainer.php line 68
            $recordPath = BackendUtility::getRecordPath($this->data['effectivePid'], $permissionsClause, 15);
        }

        $iconFactory = GeneralUtility::makeInstance(IconFactory::class);
        $icon = '<span title="' . htmlspecialchars($recordPath) . '">' . $iconFactory->getIconForRecord($table, $row, Icon::SIZE_SMALL)->render() . '</span>';

        // @todo: Could this be done in a more clever way? Does it work at all?
        $tableTitle = $languageService->sL($this->data['processedTca']['ctrl']['title']);

at TYPO3\CMS\Backend\Form\Container\OuterWrapContainer->render()
in /home/www/path/typo3_src-12.1.3/typo3/sysext/backend/Classes/Controller/EditDocumentController.php line 1166
                            }
                        }

                        $formData['renderType'] = 'outerWrapContainer';
                        $formResult = $nodeFactory->create($formData)->render();

                        $html = $formResult['html'];

                        $formResult['html'] = '';
at TYPO3\CMS\Backend\Controller\EditDocumentController->makeEditForm()
in /home/www/path/typo3_src-12.1.3/typo3/sysext/backend/Classes/Controller/EditDocumentController.php line 975
        if (is_array($this->editconf)) {
            $this->formResultCompiler = GeneralUtility::makeInstance(FormResultCompiler::class);

            // Creating the editing form, wrap it with buttons, document selector etc.
            $editForm = $this->makeEditForm($view

Actions

Also available in: Atom PDF