Skip to content
Snippets Groups Projects
Commit 65ba5bbe authored by Oliver Hader's avatar Oliver Hader Committed by Susanne Moog
Browse files

[BUGFIX] Outdated resource pointers crash for TCA type group

Using TCA type "group" with internal_type "folder" crashes in
the backend if existing resource pointers have been moved in
the filesystem (e.g. renamed or deleted).

Resolves: #81918
Releases: master, 8.7, 7.6
Change-Id: I1aadee90d1fe81cd821cc3df594351dbfc101482
Reviewed-on: https://review.typo3.org/53545


Tested-by: default avatarTYPO3com <no-reply@typo3.com>
Reviewed-by: default avatarBenjamin Kluge <b.kluge@neusta.de>
Tested-by: default avatarBenjamin Kluge <b.kluge@neusta.de>
Reviewed-by: default avatarHenning Liebe <h.liebe@neusta.de>
Tested-by: default avatarHenning Liebe <h.liebe@neusta.de>
Reviewed-by: default avatarSusanne Moog <susanne.moog@typo3.org>
Tested-by: default avatarSusanne Moog <susanne.moog@typo3.org>
parent 42339283
Branches
Tags
No related merge requests found
......@@ -18,6 +18,7 @@ use TYPO3\CMS\Backend\Clipboard\Clipboard;
use TYPO3\CMS\Backend\Form\FormDataProviderInterface;
use TYPO3\CMS\Backend\Utility\BackendUtility;
use TYPO3\CMS\Core\Database\RelationHandler;
use TYPO3\CMS\Core\Resource\Exception;
use TYPO3\CMS\Core\Resource\Folder;
use TYPO3\CMS\Core\Resource\ResourceFactory;
use TYPO3\CMS\Core\Utility\GeneralUtility;
......@@ -79,12 +80,15 @@ class TcaGroup implements FormDataProviderInterface
foreach ($fileList as $uidOrPath) {
$item = [
'uidOrPath' => $uidOrPath,
'title' => $uidOrPath,
];
if (MathUtility::canBeInterpretedAsInteger($uidOrPath)) {
$fileObject = $fileFactory->getFileObject($uidOrPath);
$item['title'] = $fileObject->getName();
} else {
$item['title'] = $uidOrPath;
try {
if (MathUtility::canBeInterpretedAsInteger($uidOrPath)) {
$fileObject = $fileFactory->getFileObject($uidOrPath);
$item['title'] = $fileObject->getName();
}
} catch (Exception $exception) {
continue;
}
$items[] = $item;
}
......@@ -180,13 +184,18 @@ class TcaGroup implements FormDataProviderInterface
// Simple list of folders
$folderList = GeneralUtility::trimExplode(',', $databaseRowFieldContent, true);
foreach ($folderList as $folder) {
if ($folder) {
if (empty($folder)) {
continue;
}
try {
$folderObject = ResourceFactory::getInstance()->retrieveFileOrFolderObject($folder);
if ($folderObject instanceof Folder) {
$items[] = [
'folder' => $folder,
];
}
} catch (Exception $exception) {
continue;
}
}
} else {
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment