From ad8783cfdc9061584b7007b2f08cdc1126b36f8d Mon Sep 17 00:00:00 2001 From: Stefan Galinski <stefan@sgalinski.de> Date: Tue, 6 Nov 2018 20:32:41 +0100 Subject: [PATCH] [BUGFIX] Mail templates in forms can't be registerd if user_uploads is selected --- Classes/XClass/Form/FormEditorController.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/Classes/XClass/Form/FormEditorController.php b/Classes/XClass/Form/FormEditorController.php index 6ba14632..a70a1d04 100644 --- a/Classes/XClass/Form/FormEditorController.php +++ b/Classes/XClass/Form/FormEditorController.php @@ -31,6 +31,8 @@ use SGalinski\SgMail\Service\TypoScriptSettingsService; use Symfony\Component\Yaml\Yaml; use TYPO3\CMS\Core\Cache\CacheManager; use TYPO3\CMS\Core\Cache\Frontend\FrontendInterface; +use TYPO3\CMS\Core\Resource\ResourceStorage; +use TYPO3\CMS\Core\Resource\StorageRepository; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Extbase\Object\ObjectManager; use TYPO3\CMS\Form\Type\FormDefinitionArray; @@ -108,7 +110,20 @@ class FormEditorController extends \TYPO3\CMS\Form\Controller\FormEditorControll } // parse yaml for form fields - $absoluteFilePath = GeneralUtility::getFileAbsFileName($formPersistenceIdentifier); + if (strpos($formPersistenceIdentifier, 'EXT:') === 0) { + $absoluteFilePath = GeneralUtility::getFileAbsFileName($formPersistenceIdentifier); + } else { + list($storageUid, $fileIdentifier) = explode(':', $formPersistenceIdentifier, 2); + $storageRepository = $this->objectManager->get(StorageRepository::class); + $storage = $storageRepository->findByUid($storageUid); + if (!$storage instanceof ResourceStorage || !$storage->isBrowsable()) { + throw new \InvalidArgumentException( + sprintf('Could not access storage with uid "%d".', $storageUid) + ); + } + $absoluteFilePath = $storage->getFile($fileIdentifier); + } + $parsedYaml = Yaml::parse(file_get_contents($absoluteFilePath)); $renderables = []; -- GitLab