From 3935079288413ab1e4292305d2156eb4ffee2898 Mon Sep 17 00:00:00 2001 From: Stefan Galinski <stefan@sgalinski.de> Date: Tue, 6 Nov 2018 21:46:51 +0100 Subject: [PATCH] [BUGFIX] Fix wrong registration and deprecation view --- Classes/Controller/MailController.php | 46 ++++++++++----------- Classes/Service/MailTemplateService.php | 28 ++++++++----- Classes/Service/RegisterService.php | 55 +++++++++++-------------- ext_localconf.php | 1 - 4 files changed, 64 insertions(+), 66 deletions(-) diff --git a/Classes/Controller/MailController.php b/Classes/Controller/MailController.php index c065a584..da2e2e84 100644 --- a/Classes/Controller/MailController.php +++ b/Classes/Controller/MailController.php @@ -26,7 +26,6 @@ namespace SGalinski\SgMail\Controller; * This copyright notice MUST APPEAR in all copies of the script! ***************************************************************/ -use function Composer\Autoload\includeFile; use SGalinski\SgMail\Domain\Model\Template; use SGalinski\SgMail\Service\BackendService; use SGalinski\SgMail\Service\MailTemplateService; @@ -368,35 +367,36 @@ class MailController extends ActionController { * @return array */ private function getDeprecationWarnings(): array { - $deprecationWarnings = []; + debug($GLOBALS['sg_mail']); + $deprecationWarnings = []; $extensionList = ExtensionManagementUtility::getLoadedExtensionListArray(); foreach ($extensionList as $extensionName) { - $extensionConfigDirectory = ExtensionManagementUtility::extPath($extensionName); - $extensionConfigDirectory .= MailTemplateService::CONFIG_PATH; - - if (\is_dir($extensionConfigDirectory)) { - $configFiles = GeneralUtility::getFilesInDir($extensionConfigDirectory); - foreach ($configFiles as $configFile) { - $pathToRegistrationFile = $extensionConfigDirectory . '/' . $configFile; + $extensionConfigDirectory = ExtensionManagementUtility::extPath($extensionName) . + MailTemplateService::CONFIG_PATH; + if (!\is_dir($extensionConfigDirectory)) { + continue; + } - if (!\file_exists($pathToRegistrationFile)) { - continue; - } + $configFiles = GeneralUtility::getFilesInDir($extensionConfigDirectory); + foreach ($configFiles as $configFile) { + $pathToRegistrationFile = $extensionConfigDirectory . '/' . $configFile; + if (!\is_file($pathToRegistrationFile)) { + continue; + } - $registrationArray = include $pathToRegistrationFile; - $templateKey = $registrationArray['template_key']; - $extensionKey = $registrationArray['extension_key']; + // already registered in the new way? + if (!isset($GLOBALS['sg_mail'][$extensionName][$configFile])) { + continue; + } - // provide code example on how to register correctly - $code = '$GLOBALS[\'sg_mail\'][\'' . $extensionKey . '\'][\'' - . $templateKey - . '\'] = \'EXT:' . $extensionName . '/' . MailTemplateService::CONFIG_PATH . '/' . $configFile . '\';'; + $registrationArray = include $pathToRegistrationFile; + $templateKey = $registrationArray['template_key']; - $deprecationWarnings[] = [ - 'code' => $code - ]; - } + // provide code example on how to register correctly + $code = '$GLOBALS[\'sg_mail\'][\'' . $extensionName . '\'][\'' . $templateKey . '\'] = \'EXT:' . + $extensionName . '/' . MailTemplateService::CONFIG_PATH . '/' . $configFile . '\';'; + $deprecationWarnings[] = ['code' => $code]; } } diff --git a/Classes/Service/MailTemplateService.php b/Classes/Service/MailTemplateService.php index f49ddbb5..234d1a4c 100644 --- a/Classes/Service/MailTemplateService.php +++ b/Classes/Service/MailTemplateService.php @@ -812,27 +812,35 @@ class MailTemplateService { self::logDeprecation('registerExtensions'); $extensionList = ExtensionManagementUtility::getLoadedExtensionListArray(); - foreach ($extensionList as $extensionName) { $extensionConfigDirectory = ExtensionManagementUtility::extPath($extensionName); $extensionConfigDirectory .= self::CONFIG_PATH; - if (\is_dir($extensionConfigDirectory)) { - $configFiles = GeneralUtility::getFilesInDir($extensionConfigDirectory); - foreach ($configFiles as $configFile) { - $pathToRegistrationFile = $extensionConfigDirectory . '/' . $configFile; + if (!\is_dir($extensionConfigDirectory)) { + continue; + } - if (!\file_exists($pathToRegistrationFile)) { - continue; - } - $GLOBALS['sg_mail']['sg_mail'][$configFile] = $pathToRegistrationFile; + $configFiles = GeneralUtility::getFilesInDir($extensionConfigDirectory); + foreach ($configFiles as $configFile) { + $pathToRegistrationFile = $extensionConfigDirectory . '/' . $configFile; + if (!\is_file($pathToRegistrationFile)) { + continue; } + + // already registered in the new way? + $configFileTest = str_replace('.php', '', $configFile); + $configFileTest = GeneralUtility::camelCaseToLowerCaseUnderscored($configFileTest); + if (isset($GLOBALS['sg_mail'][$extensionName][$configFileTest])) { + continue; + } + + $GLOBALS['sg_mail'][$extensionName][$configFile] = $pathToRegistrationFile; } } } /** - * Checks if a template is blacklisted for a given siterootId + * Checks if a template is blacklisted for a given siteroot id * * @param string $extensionKey * @param string $templateName diff --git a/Classes/Service/RegisterService.php b/Classes/Service/RegisterService.php index 6b8f07e8..55064aa6 100644 --- a/Classes/Service/RegisterService.php +++ b/Classes/Service/RegisterService.php @@ -84,43 +84,32 @@ class RegisterService implements \TYPO3\CMS\Core\SingletonInterface { private function registerExtensions(): array { $this->registerArray = []; - $extensionConfiguration = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['sg_mail'], ['array']); - - // @TODO remove in version 5.0.0 - if (((int) $extensionConfiguration['supportOldRegistrations']) === 0) { - MailTemplateService::registerExtensions(); - } - foreach ($GLOBALS['sg_mail'] as $extension) { foreach ($extension as $key => $registerFile) { - if (\is_file($registerFile)) { - $configArray = (include $registerFile); - - $extensionKey = $configArray['extension_key']; - $templateKey = $configArray['template_key']; - - if ($extensionKey === NULL || $templateKey === NULL) { - continue; - } + $registerFile = GeneralUtility::getFileAbsFileName($registerFile); + if (!\is_file($registerFile)) { + continue; + } - $this->writeRegisterArrayEntry( - $extensionKey, $templateKey, $configArray - ); + $configArray = (include $registerFile); + $extensionKey = $configArray['extension_key']; + $templateKey = $configArray['template_key']; + if ($extensionKey === NULL || $templateKey === NULL) { + continue; } + + $this->writeRegisterArrayEntry($extensionKey, $templateKey, $configArray); } } // read automatically created extension registrations and write the entries $configurationLocation = $this->getRegistrationPath(); - $registerFolder = GeneralUtility::getFileAbsFileName( - $configurationLocation - ); + $registerFolder = GeneralUtility::getFileAbsFileName($configurationLocation); if (\is_dir($registerFolder)) { $configFiles = GeneralUtility::getFilesInDir($registerFolder); foreach ($configFiles as $configFile) { $pathToRegistrationFile = $registerFolder . '/' . $configFile; - - if (!\file_exists($pathToRegistrationFile)) { + if (!\is_file($pathToRegistrationFile)) { continue; } @@ -129,26 +118,28 @@ class RegisterService implements \TYPO3\CMS\Core\SingletonInterface { $filename = $pathAsArray[\count($pathAsArray) - 1]; $filenameWithoutHash = GeneralUtility::trimExplode('_', $filename)[1]; $hash = md5($GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'] . '|' . $filenameWithoutHash); - // if the filename doesnt start with the hash value, ignore it + // if the filename doesn't start with the hash value, ignore it if (strpos($filename, $hash) !== 0) { continue; } $configArray = (include $pathToRegistrationFile); - $extensionKey = $configArray['extension_key']; $templateKey = $configArray['template_key']; - if ($extensionKey === NULL || $templateKey === NULL) { continue; } - $this->writeRegisterArrayEntry( - $extensionKey, $templateKey, $configArray - ); + $this->writeRegisterArrayEntry($extensionKey, $templateKey, $configArray); } } + // @TODO remove in version 5.0.0 + $extensionConfiguration = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['sg_mail'], ['array']); + if (((int) $extensionConfiguration['supportOldRegistrations']) === 0) { + MailTemplateService::registerExtensions(); + } + return $this->registerArray; } @@ -184,8 +175,8 @@ class RegisterService implements \TYPO3\CMS\Core\SingletonInterface { } $templateDirectory .= '/'; - $templatePath = ExtensionManagementUtility::extPath($storeTemplateExtension) . self::DEFAULT_TEMPLATE_PATH - . $templateDirectory; + $templatePath = ExtensionManagementUtility::extPath($storeTemplateExtension) . + self::DEFAULT_TEMPLATE_PATH . $templateDirectory; if ($configArray['template_path']) { $templatePath = $configArray[$templateKey]; diff --git a/ext_localconf.php b/ext_localconf.php index 703efd90..18cd1ee1 100644 --- a/ext_localconf.php +++ b/ext_localconf.php @@ -67,4 +67,3 @@ if (!isset($TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations'][$cacheName] 'citypower' ]; } - -- GitLab