Skip to content
Snippets Groups Projects
Commit 39350792 authored by Stefan Galinski's avatar Stefan Galinski :video_game:
Browse files

[BUGFIX] Fix wrong registration and deprecation view

parent 096dbca5
No related branches found
No related tags found
1 merge request!11Feature security update
......@@ -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];
}
}
......
......@@ -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
......
......@@ -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];
......
......@@ -67,4 +67,3 @@ if (!isset($TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations'][$cacheName]
'citypower'
];
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment