Skip to content
Snippets Groups Projects
Commit 8657ce1d authored by Torsten Oppermann's avatar Torsten Oppermann
Browse files

[TASK] Adding possibility to register multiple templates via single file + refactored some code

parent d332dc00
No related branches found
No related tags found
1 merge request!10Feature improved usability
...@@ -59,6 +59,8 @@ class MailTemplateService { ...@@ -59,6 +59,8 @@ class MailTemplateService {
const DEFAULT_TEMPLATE_PATH = 'Resources/Private/Templates/SgMail/'; const DEFAULT_TEMPLATE_PATH = 'Resources/Private/Templates/SgMail/';
const CACHE_NAME = 'sg_mail_registerArrayCache'; const CACHE_NAME = 'sg_mail_registerArrayCache';
const CACHE_LIFETIME_IN_SECONDS = 86400; const CACHE_LIFETIME_IN_SECONDS = 86400;
const REGISTER_FILE = 'Register.php';
const CONFIG_PATH = 'Configuration/MailTemplates';
/** /**
* @var array $toAddresses * @var array $toAddresses
...@@ -788,7 +790,7 @@ class MailTemplateService { ...@@ -788,7 +790,7 @@ class MailTemplateService {
foreach ($extensionList as $extensionName) { foreach ($extensionList as $extensionName) {
$extensionConfigDirectory = ExtensionManagementUtility::extPath($extensionName); $extensionConfigDirectory = ExtensionManagementUtility::extPath($extensionName);
$extensionConfigDirectory .= '/Configuration/MailTemplates'; $extensionConfigDirectory .= '/' . self::CONFIG_PATH;
$configFiles = GeneralUtility::getFilesInDir($extensionConfigDirectory); $configFiles = GeneralUtility::getFilesInDir($extensionConfigDirectory);
foreach ($configFiles as $configFile) { foreach ($configFiles as $configFile) {
...@@ -796,36 +798,93 @@ class MailTemplateService { ...@@ -796,36 +798,93 @@ class MailTemplateService {
$extensionKey = $configArray['extension_key']; $extensionKey = $configArray['extension_key'];
$templateKey = $configArray['template_key']; $templateKey = $configArray['template_key'];
// transform template directory name: your_templates => YourTemplates/ if ($extensionKey === NULL || $templateKey === NULL) {
$templateDirectoryParts = GeneralUtility::trimExplode('_', $configArray['template_key']); continue;
$templateDirectory = '';
foreach ($templateDirectoryParts as $part) {
$templateDirectory .= ucfirst($part);
} }
$templateDirectory .= '/';
$templatePath = ExtensionManagementUtility::extPath(
$extensionName
) . self::DEFAULT_TEMPLATE_PATH . $templateDirectory;
if ($configArray['template_path']) { $registerArray = self::writeRegisterArrayEntry(
$templatePath = $configArray['template_key']; $registerArray, $extensionName, $extensionKey, $templateKey, $configArray
} );
}
}
$description = $configArray['description']; // now check for registration files with multiple templates registered
$subject = $configArray['subject']; $registerArray = self::registerFromSingleFile($registerArray);
$marker = $configArray['markers']; return $registerArray;
}
$registerArray[$extensionKey][$templateKey] = [
'templatePath' => $templatePath, /**
'description' => $description, * Find Register.php files in all installed extensions and register the templates
'marker' => $marker, * These files can contain multiple template registrations and are structured as multi-dimensional arrays
'extension' => $extensionKey, *
'templateName' => $templateKey, * @param array $registerArray
'subject' => $subject * @return array
]; */
private static function registerFromSingleFile(array $registerArray) {
$extensionList = ExtensionManagementUtility::getLoadedExtensionListArray();
foreach ($extensionList as $extension) {
$extensionConfigDirectory = ExtensionManagementUtility::extPath($extension);
$extensionConfigDirectory .= self::CONFIG_PATH;
if (!\is_dir($extensionConfigDirectory)) {
continue;
} }
$configArray = (include $extensionConfigDirectory . '/' . self::REGISTER_FILE);
if ($configArray) {
foreach ($configArray as $config) {
$registerArray = self::writeRegisterArrayEntry($registerArray, $config['extension_key'], $config['extension_key'], $config['template_key'], $config);
}
}
}
return $registerArray;
}
/**
* writes a single entry into the register array
*
* @param array $registerArray
* @param string $extensionName
* @param string $extensionKey
* @param string $templateKey
* @param array $configArray
* @return array
*/
private static function writeRegisterArrayEntry(
array $registerArray, $extensionName, $extensionKey, $templateKey, array $configArray
) {
// transform template directory name: your_templates => YourTemplates/
$templateDirectoryParts = GeneralUtility::trimExplode('_', $configArray['template_key']);
$templateDirectory = '';
foreach ($templateDirectoryParts as $part) {
$templateDirectory .= ucfirst($part);
}
$templateDirectory .= '/';
$templatePath = ExtensionManagementUtility::extPath(
$extensionName
) . self::DEFAULT_TEMPLATE_PATH . $templateDirectory;
if ($configArray['template_path']) {
$templatePath = $configArray['template_key'];
} }
$description = $configArray['description'];
$subject = $configArray['subject'];
$marker = $configArray['markers'];
$registerArray[$extensionKey][$templateKey] = [
'templatePath' => $templatePath,
'description' => $description,
'marker' => $marker,
'extension' => $extensionKey,
'templateName' => $templateKey,
'subject' => $subject
];
return $registerArray; return $registerArray;
} }
......
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