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 {
$this->view->assign('languages', $languages);
$this->view->assign('templates', MailTemplateService::getRegisterArray());
// get last selected languages
if ($selectedLanguageLeft === NULL) {
$selectedLanguageLeftFromSession = $this->session->getDataByKey('selectedLanguageLeft');
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;
}
}
// get language selection or read from cache or get default
$selectedLanguages = BackendService::getSelectedLanguages(
$selectedLanguageLeft, $selectedLanguageRight, $this->session, $languages
);
if ($selectedTemplate === NULL || $selectedTemplate === '') {
$selectedExtension = key($registerArray);
$selectedTemplate = key($registerArray[$selectedExtension]);
}
$selectedTemplateArray = $registerArray[$selectedExtension][$selectedTemplate];
$this->session->setDataByKey('selectedLanguageLeft', $selectedLanguageLeft);
$this->session->setDataByKey('selectedLanguageRight', $selectedLanguageRight);
$templateLeft = $this->templateRepository->findOneByTemplate(
$selectedExtension, $selectedTemplate, $selectedLanguageLeft, $siteRootId
);
$templateRight = $this->templateRepository->findOneByTemplate(
$selectedExtension, $selectedTemplate, $selectedLanguageRight, $siteRootId
$selectedTemplates = BackendService::getSelectedTemplates(
$selectedExtension, $selectedTemplate, $selectedLanguages, $this->session, $siteRootId
);
if ($templateLeft !== NULL) {
$this->view->assign('contentLeft', $templateLeft->getContent());
$this->view->assign('fromNameLeft', $templateLeft->getFromName());
$this->view->assign('fromMailLeft', $templateLeft->getFromMail());
$this->view->assign('ccLeft', $templateLeft->getCc());
$this->view->assign('bccLeft', $templateLeft->getBcc());
$this->view->assign('replyToLeft', $templateLeft->getReplyTo());
if ($selectedTemplates['left'] instanceof Template) {
$this->view->assign('contentLeft', $selectedTemplates['left']->getContent());
$this->view->assign('fromNameLeft', $selectedTemplates['left']->getFromName());
$this->view->assign('fromMailLeft', $selectedTemplates['left']->getFromMail());
$this->view->assign('ccLeft', $selectedTemplates['left']->getCc());
$this->view->assign('bccLeft', $selectedTemplates['left']->getBcc());
$this->view->assign('replyToLeft', $selectedTemplates['left']->getReplyTo());
} else {
$defaultTemplatePath = $registerArray[$selectedExtension][$selectedTemplate]['templatePath'];
$defaultTemplateFile = $defaultTemplatePath . $selectedLanguageLeft . '.' . 'template.html';
$defaultTemplateFile = $defaultTemplatePath . $selectedLanguages['left'] . '.' . 'template.html';
if (file_exists($defaultTemplateFile)) {
$this->view->assign('contentLeft', file_get_contents($defaultTemplateFile));
}
}
if ($templateRight !== NULL) {
$this->view->assign('contentRight', $templateRight->getContent());
$this->view->assign('fromNameRight', $templateRight->getFromName());
$this->view->assign('fromMailRight', $templateRight->getFromMail());
$this->view->assign('ccRight', $templateRight->getCc());
$this->view->assign('bccRight', $templateRight->getBcc());
$this->view->assign('replyToRight', $templateRight->getReplyTo());
if ($selectedTemplates['right'] instanceof Template) {
$this->view->assign('contentRight', $selectedTemplates['right']->getContent());
$this->view->assign('fromNameRight', $selectedTemplates['right']->getFromName());
$this->view->assign('fromMailRight', $selectedTemplates['right']->getFromMail());
$this->view->assign('ccRight', $selectedTemplates['right']->getCc());
$this->view->assign('bccRight', $selectedTemplates['right']->getBcc());
$this->view->assign('replyToRight', $selectedTemplates['right']->getReplyTo());
} else {
$defaultTemplatePath = $registerArray[$selectedExtension][$selectedTemplate]['templatePath'];
$defaultTemplateFile = $defaultTemplatePath . $selectedLanguageRight . '.' . 'template.html';
$defaultTemplateFile = $defaultTemplatePath . $selectedLanguages['right'] . '.' . 'template.html';
if (file_exists($defaultTemplateFile)) {
$this->view->assign('contentRight', file_get_contents($defaultTemplateFile));
}
......@@ -171,47 +147,47 @@ class MailController extends ActionController {
if (is_array($subject)) {
$this->view->assign(
'subjectLeft', $templateLeft !== NULL ? $templateLeft->getSubject() :
$registerArray[$selectedExtension][$selectedTemplate]['subject'][$selectedLanguageLeft]
'subjectLeft', $selectedTemplates['left'] !== NULL ? $selectedTemplates['left']->getSubject() :
$registerArray[$selectedExtension][$selectedTemplate]['subject'][$selectedLanguages['left']]
);
$this->view->assign(
'subjectRight', $templateRight !== NULL ? $templateRight->getSubject() :
$registerArray[$selectedExtension][$selectedTemplate]['subject'][$selectedLanguageRight]
'subjectRight', $selectedTemplates['right'] !== NULL ? $selectedTemplates['right']->getSubject() :
$registerArray[$selectedExtension][$selectedTemplate]['subject'][$selectedLanguages['right']]
);
} else {
$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'];
if ($langFile[$selectedLanguageLeft][$subject][0]) {
$translatedSubject = $langFile[$selectedLanguageLeft][$subject][0]['target'];
if ($langFile[$selectedLanguages['left']][$subject][0]) {
$translatedSubject = $langFile[$selectedLanguages['left']][$subject][0]['target'];
}
$this->view->assign(
'subjectLeft', $templateLeft !== NULL ? $templateLeft->getSubject() :
'subjectLeft', $selectedTemplates['left'] !== NULL ? $selectedTemplates['left']->getSubject() :
$translatedSubject
);
$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'];
if ($langFile[$selectedLanguageLeft][$subject][0][$subject]) {
$translatedSubject = $langFile[$selectedLanguageRight][$subject][0]['target'];
if ($langFile[$selectedLanguages['left']][$subject][0][$subject]) {
$translatedSubject = $langFile[$selectedLanguages['right']][$subject][0]['target'];
}
$this->view->assign(
'subjectRight', $templateRight !== NULL ? $templateRight->getSubject() :
'subjectRight', $selectedTemplates['right'] !== NULL ? $selectedTemplates['right']->getSubject() :
$translatedSubject
);
}
$templateDescription = $registerArray[$selectedExtension][$selectedTemplate]['description'];
if (is_array($templateDescription)) {
$templateDescription = $templateDescription[$selectedLanguageLeft];
$templateDescription = $templateDescription[$selectedLanguages['left']];
} else {
$templateDescription = LocalizationUtility::translate(
$templateDescription, $selectedExtension
......@@ -229,11 +205,11 @@ class MailController extends ActionController {
$this->view->assign('docHeader', $this->docHeaderComponent->docHeaderContent());
$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('selectedExtensionKey', $selectedExtension);
$this->view->assign('selectedLanguageLeft', $selectedLanguageLeft);
$this->view->assign('selectedLanguageRight', $selectedLanguageRight);
$this->view->assign('selectedLanguageLeft', $selectedLanguages['left']);
$this->view->assign('selectedLanguageRight', $selectedLanguages['right']);
$this->view->assign('mode', 'editor');
} else {
$this->view->assign('noPage', '1');
......
......@@ -26,6 +26,7 @@ namespace SGalinski\SgMail\Service;
* 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\DocHeaderComponent;
use TYPO3\CMS\Backend\Utility\BackendUtility;
......@@ -42,6 +43,7 @@ use TYPO3\CMS\Lang\Domain\Repository\LanguageRepository;
* Backend Service class
*/
class BackendService {
/**
* Get all pages the be user has access to
*
......@@ -136,4 +138,78 @@ class BackendService {
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