From 0575cc2a8c54caa7c93d12c121382aa7e2e32243 Mon Sep 17 00:00:00 2001
From: Torsten Oppermann <torsten@sgalinski.de>
Date: Mon, 3 Oct 2016 18:19:51 +0200
Subject: [PATCH] [TASK] Restoring default template fallback

---
 Classes/Service/MailTemplateService.php | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/Classes/Service/MailTemplateService.php b/Classes/Service/MailTemplateService.php
index 6380f4ef..d23500f8 100644
--- a/Classes/Service/MailTemplateService.php
+++ b/Classes/Service/MailTemplateService.php
@@ -170,9 +170,10 @@ class MailTemplateService {
 	 * @param array $markers
 	 * @return string
 	 */
-	public static function registerTemplate($extension, $templateName, $description, array $markers) {
+	public static function registerTemplate($extension, $templateName, $templatePath, $description, array $markers) {
 
 		MailTemplateService::$registerArray[$extension][$templateName] = [
+			'templatePath' => $templatePath,
 			'description' => $description,
 			'marker' => $markers,
 			'extension' => $extension,
@@ -205,17 +206,24 @@ class MailTemplateService {
 			$this->extensionKey, $this->templateName, $this->language
 		)->getFirst();
 
-		// If there is no template for this language, use the english template
-		if ($template === NULL && $this->language !== 'en') {
-			$this->setLanguage('en');
-			$this->sendEmail();
+		// If there is no template for this language, use the default template
+		if ($template === NULL) {
+			$templatePath = self::$registerArray[$this->extensionKey][$this->templateName]['templatePath'];
+			$templateFile = $templatePath . $this->language . '.template.html';
+			if (file_exists($templateFile)) {
+				$defaultTemplateContent = file_get_contents($templatePath . $this->language . '.template.html');
+			} else {
+				// no language found and no default template
+				return FALSE;
+			}
 		}
 
-		if ($template === NULL) {
-			return FALSE;
+		if (!isset($defaultTemplateContent)) {
+			$emailView->setTemplateSource($template->getContent());
+		} else {
+			$emailView->setTemplateSource($defaultTemplateContent);
 		}
 
-		$emailView->setTemplateSource($template->getContent());
 		$emailView->assignMultiple($this->markers);
 		$emailBody = $emailView->render();
 
-- 
GitLab