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

[TASK] Moving logic from mail controller to service class

parent c62f4c34
No related branches found
No related tags found
1 merge request!2Feature multiclient
...@@ -99,69 +99,45 @@ class MailController extends ActionController { ...@@ -99,69 +99,45 @@ class MailController extends ActionController {
$this->view->assign('languages', $languages); $this->view->assign('languages', $languages);
$this->view->assign('templates', MailTemplateService::getRegisterArray()); $this->view->assign('templates', MailTemplateService::getRegisterArray());
// get last selected languages // get language selection or read from cache or get default
if ($selectedLanguageLeft === NULL) { $selectedLanguages = BackendService::getSelectedLanguages(
$selectedLanguageLeftFromSession = $this->session->getDataByKey('selectedLanguageLeft'); $selectedLanguageLeft, $selectedLanguageRight, $this->session, $languages
if ($selectedLanguageLeftFromSession !== NULL) { );
$selectedLanguageLeft = $selectedLanguageLeftFromSession;
} else {
$selectedLanguageLeft = $languages[0];
}
}
if ($selectedLanguageRight === NULL) {
$selectedLanguageRightFromSession = $this->session->getDataByKey('selectedLanguageRight');
if ($selectedLanguageRightFromSession === NULL) {
if (isset($languages[1])) {
$selectedLanguageRight = $languages[1];
} else {
$selectedLanguageRight = $languages[0];
}
} else {
$selectedLanguageRight = $selectedLanguageRightFromSession;
}
}
if ($selectedTemplate === NULL || $selectedTemplate === '') { if ($selectedTemplate === NULL || $selectedTemplate === '') {
$selectedExtension = key($registerArray); $selectedExtension = key($registerArray);
$selectedTemplate = key($registerArray[$selectedExtension]); $selectedTemplate = key($registerArray[$selectedExtension]);
} }
$selectedTemplateArray = $registerArray[$selectedExtension][$selectedTemplate]; $selectedTemplates = BackendService::getSelectedTemplates(
$this->session->setDataByKey('selectedLanguageLeft', $selectedLanguageLeft); $selectedExtension, $selectedTemplate, $selectedLanguages, $this->session, $siteRootId
$this->session->setDataByKey('selectedLanguageRight', $selectedLanguageRight);
$templateLeft = $this->templateRepository->findOneByTemplate(
$selectedExtension, $selectedTemplate, $selectedLanguageLeft, $siteRootId
);
$templateRight = $this->templateRepository->findOneByTemplate(
$selectedExtension, $selectedTemplate, $selectedLanguageRight, $siteRootId
); );
if ($templateLeft !== NULL) { if ($selectedTemplates['left'] instanceof Template) {
$this->view->assign('contentLeft', $templateLeft->getContent()); $this->view->assign('contentLeft', $selectedTemplates['left']->getContent());
$this->view->assign('fromNameLeft', $templateLeft->getFromName()); $this->view->assign('fromNameLeft', $selectedTemplates['left']->getFromName());
$this->view->assign('fromMailLeft', $templateLeft->getFromMail()); $this->view->assign('fromMailLeft', $selectedTemplates['left']->getFromMail());
$this->view->assign('ccLeft', $templateLeft->getCc()); $this->view->assign('ccLeft', $selectedTemplates['left']->getCc());
$this->view->assign('bccLeft', $templateLeft->getBcc()); $this->view->assign('bccLeft', $selectedTemplates['left']->getBcc());
$this->view->assign('replyToLeft', $templateLeft->getReplyTo()); $this->view->assign('replyToLeft', $selectedTemplates['left']->getReplyTo());
} else { } else {
$defaultTemplatePath = $registerArray[$selectedExtension][$selectedTemplate]['templatePath']; $defaultTemplatePath = $registerArray[$selectedExtension][$selectedTemplate]['templatePath'];
$defaultTemplateFile = $defaultTemplatePath . $selectedLanguageLeft . '.' . 'template.html'; $defaultTemplateFile = $defaultTemplatePath . $selectedLanguages['left'] . '.' . 'template.html';
if (file_exists($defaultTemplateFile)) { if (file_exists($defaultTemplateFile)) {
$this->view->assign('contentLeft', file_get_contents($defaultTemplateFile)); $this->view->assign('contentLeft', file_get_contents($defaultTemplateFile));
} }
} }
if ($templateRight !== NULL) { if ($selectedTemplates['right'] instanceof Template) {
$this->view->assign('contentRight', $templateRight->getContent()); $this->view->assign('contentRight', $selectedTemplates['right']->getContent());
$this->view->assign('fromNameRight', $templateRight->getFromName()); $this->view->assign('fromNameRight', $selectedTemplates['right']->getFromName());
$this->view->assign('fromMailRight', $templateRight->getFromMail()); $this->view->assign('fromMailRight', $selectedTemplates['right']->getFromMail());
$this->view->assign('ccRight', $templateRight->getCc()); $this->view->assign('ccRight', $selectedTemplates['right']->getCc());
$this->view->assign('bccRight', $templateRight->getBcc()); $this->view->assign('bccRight', $selectedTemplates['right']->getBcc());
$this->view->assign('replyToRight', $templateRight->getReplyTo()); $this->view->assign('replyToRight', $selectedTemplates['right']->getReplyTo());
} else { } else {
$defaultTemplatePath = $registerArray[$selectedExtension][$selectedTemplate]['templatePath']; $defaultTemplatePath = $registerArray[$selectedExtension][$selectedTemplate]['templatePath'];
$defaultTemplateFile = $defaultTemplatePath . $selectedLanguageRight . '.' . 'template.html'; $defaultTemplateFile = $defaultTemplatePath . $selectedLanguages['right'] . '.' . 'template.html';
if (file_exists($defaultTemplateFile)) { if (file_exists($defaultTemplateFile)) {
$this->view->assign('contentRight', file_get_contents($defaultTemplateFile)); $this->view->assign('contentRight', file_get_contents($defaultTemplateFile));
} }
...@@ -171,47 +147,47 @@ class MailController extends ActionController { ...@@ -171,47 +147,47 @@ class MailController extends ActionController {
if (is_array($subject)) { if (is_array($subject)) {
$this->view->assign( $this->view->assign(
'subjectLeft', $templateLeft !== NULL ? $templateLeft->getSubject() : 'subjectLeft', $selectedTemplates['left'] !== NULL ? $selectedTemplates['left']->getSubject() :
$registerArray[$selectedExtension][$selectedTemplate]['subject'][$selectedLanguageLeft] $registerArray[$selectedExtension][$selectedTemplate]['subject'][$selectedLanguages['left']]
); );
$this->view->assign( $this->view->assign(
'subjectRight', $templateRight !== NULL ? $templateRight->getSubject() : 'subjectRight', $selectedTemplates['right'] !== NULL ? $selectedTemplates['right']->getSubject() :
$registerArray[$selectedExtension][$selectedTemplate]['subject'][$selectedLanguageRight] $registerArray[$selectedExtension][$selectedTemplate]['subject'][$selectedLanguages['right']]
); );
} else { } else {
$langFile = GeneralUtility::readLLfile( $langFile = GeneralUtility::readLLfile(
'EXT:' . $selectedExtension . '/Resources/Private/Language/locallang.xlf', $selectedLanguageLeft 'EXT:' . $selectedExtension . '/Resources/Private/Language/locallang.xlf', $selectedLanguages['left']
); );
$translatedSubject = $langFile['default'][$subject][0]['target']; $translatedSubject = $langFile['default'][$subject][0]['target'];
if ($langFile[$selectedLanguageLeft][$subject][0]) { if ($langFile[$selectedLanguages['left']][$subject][0]) {
$translatedSubject = $langFile[$selectedLanguageLeft][$subject][0]['target']; $translatedSubject = $langFile[$selectedLanguages['left']][$subject][0]['target'];
} }
$this->view->assign( $this->view->assign(
'subjectLeft', $templateLeft !== NULL ? $templateLeft->getSubject() : 'subjectLeft', $selectedTemplates['left'] !== NULL ? $selectedTemplates['left']->getSubject() :
$translatedSubject $translatedSubject
); );
$langFile = GeneralUtility::readLLfile( $langFile = GeneralUtility::readLLfile(
'EXT:' . $selectedExtension . '/Resources/Private/Language/locallang.xlf', $selectedLanguageRight 'EXT:' . $selectedExtension . '/Resources/Private/Language/locallang.xlf', $selectedLanguages['right']
); );
$translatedSubject = $langFile['default'][$subject][0]['target']; $translatedSubject = $langFile['default'][$subject][0]['target'];
if ($langFile[$selectedLanguageLeft][$subject][0][$subject]) { if ($langFile[$selectedLanguages['left']][$subject][0][$subject]) {
$translatedSubject = $langFile[$selectedLanguageRight][$subject][0]['target']; $translatedSubject = $langFile[$selectedLanguages['right']][$subject][0]['target'];
} }
$this->view->assign( $this->view->assign(
'subjectRight', $templateRight !== NULL ? $templateRight->getSubject() : 'subjectRight', $selectedTemplates['right'] !== NULL ? $selectedTemplates['right']->getSubject() :
$translatedSubject $translatedSubject
); );
} }
$templateDescription = $registerArray[$selectedExtension][$selectedTemplate]['description']; $templateDescription = $registerArray[$selectedExtension][$selectedTemplate]['description'];
if (is_array($templateDescription)) { if (is_array($templateDescription)) {
$templateDescription = $templateDescription[$selectedLanguageLeft]; $templateDescription = $templateDescription[$selectedLanguages['left']];
} else { } else {
$templateDescription = LocalizationUtility::translate( $templateDescription = LocalizationUtility::translate(
$templateDescription, $selectedExtension $templateDescription, $selectedExtension
...@@ -229,11 +205,11 @@ class MailController extends ActionController { ...@@ -229,11 +205,11 @@ class MailController extends ActionController {
$this->view->assign('docHeader', $this->docHeaderComponent->docHeaderContent()); $this->view->assign('docHeader', $this->docHeaderComponent->docHeaderContent());
$this->view->assign('templateDescription', $templateDescription); $this->view->assign('templateDescription', $templateDescription);
$this->view->assign('selectedTemplate', $selectedTemplateArray); $this->view->assign('selectedTemplate', $registerArray[$selectedExtension][$selectedTemplate]);
$this->view->assign('selectedTemplateKey', $selectedTemplate); $this->view->assign('selectedTemplateKey', $selectedTemplate);
$this->view->assign('selectedExtensionKey', $selectedExtension); $this->view->assign('selectedExtensionKey', $selectedExtension);
$this->view->assign('selectedLanguageLeft', $selectedLanguageLeft); $this->view->assign('selectedLanguageLeft', $selectedLanguages['left']);
$this->view->assign('selectedLanguageRight', $selectedLanguageRight); $this->view->assign('selectedLanguageRight', $selectedLanguages['right']);
$this->view->assign('mode', 'editor'); $this->view->assign('mode', 'editor');
} else { } else {
$this->view->assign('noPage', '1'); $this->view->assign('noPage', '1');
......
...@@ -26,6 +26,7 @@ namespace SGalinski\SgMail\Service; ...@@ -26,6 +26,7 @@ namespace SGalinski\SgMail\Service;
* This copyright notice MUST APPEAR in all copies of the script! * This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/ ***************************************************************/
use SGalinski\SgMail\Domain\Repository\TemplateRepository;
use TYPO3\CMS\Backend\Template\Components\ButtonBar; use TYPO3\CMS\Backend\Template\Components\ButtonBar;
use TYPO3\CMS\Backend\Template\Components\DocHeaderComponent; use TYPO3\CMS\Backend\Template\Components\DocHeaderComponent;
use TYPO3\CMS\Backend\Utility\BackendUtility; use TYPO3\CMS\Backend\Utility\BackendUtility;
...@@ -42,6 +43,7 @@ use TYPO3\CMS\Lang\Domain\Repository\LanguageRepository; ...@@ -42,6 +43,7 @@ use TYPO3\CMS\Lang\Domain\Repository\LanguageRepository;
* Backend Service class * Backend Service class
*/ */
class BackendService { class BackendService {
/** /**
* Get all pages the be user has access to * Get all pages the be user has access to
* *
...@@ -136,4 +138,78 @@ class BackendService { ...@@ -136,4 +138,78 @@ class BackendService {
return $languages; return $languages;
} }
/**
* Get the previous selected languages, the actual selection or the default
* format ['left' => languagecode, 'right' => ...]
*
* @param string $selectedLanguageLeft
* @param string $selectedLanguageRight
* @param \SGalinski\SgMail\Session\PhpSession $session
* @param array $languages
* @return array
*/
public static function getSelectedLanguages(
$selectedLanguageLeft, $selectedLanguageRight, $session, array $languages
) {
$selectedLanguages = [
'left' => $selectedLanguageLeft,
'right' => $selectedLanguageRight
];
if ($selectedLanguageLeft === NULL) {
$selectedLanguageLeftFromSession = $session->getDataByKey('selectedLanguageLeft');
if ($selectedLanguageLeftFromSession !== NULL) {
$selectedLanguages['left'] = $selectedLanguageLeftFromSession;
} else {
$selectedLanguages['left'] = $languages[0];
}
}
if ($selectedLanguageRight === NULL) {
$selectedLanguageRightFromSession = $session->getDataByKey('selectedLanguageRight');
if ($selectedLanguageRightFromSession === NULL) {
if (isset($languages[1])) {
$selectedLanguages['right'] = $languages[1];
} else {
$selectedLanguages['right'] = $languages[0];
}
} else {
$selectedLanguages['right'] = $selectedLanguageRightFromSession;
}
}
return $selectedLanguages;
}
/**
* Get the selected templates for the selected language
*
* @param string $selectedExtension
* @param string $selectedTemplate
* @param array $selectedLanguages
* @param \SGalinski\SgMail\Session\PhpSession $session
* @param int $siteRootId
* @return array
* @throws \InvalidArgumentException
*/
public static function getSelectedTemplates(
$selectedExtension, $selectedTemplate, array $selectedLanguages, &$session, $siteRootId
) {
$selectedTemplates = [];
$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
/** @var LanguageRepository $languageRepository */
$templateRepository = $objectManager->get(TemplateRepository::class);
$session->setDataByKey('selectedLanguageLeft', $selectedLanguages['left']);
$session->setDataByKey('selectedLanguageRight', $selectedLanguages['right']);
$selectedTemplates['left'] = $templateRepository->findOneByTemplate(
$selectedExtension, $selectedTemplate, $selectedLanguages['left'], $siteRootId
);
$selectedTemplates['right'] = $templateRepository->findOneByTemplate(
$selectedExtension, $selectedTemplate, $selectedLanguages['right'], $siteRootId
);
return $selectedTemplates;
}
} }
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