]> source.dussan.org Git - nextcloud-server.git/commitdiff
Provide the proper language to the mailer 20246/head
authorRoeland Jago Douma <roeland@famdouma.nl>
Tue, 31 Mar 2020 12:02:39 +0000 (14:02 +0200)
committerRoeland Jago Douma <roeland@famdouma.nl>
Thu, 16 Apr 2020 07:04:13 +0000 (09:04 +0200)
Else we can't properly translate the footer in the recipients e-mail
language.

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
apps/settings/tests/Mailer/NewUserMailHelperTest.php
apps/theming/lib/ThemingDefaults.php
lib/private/Mail/EMailTemplate.php
lib/private/Mail/Mailer.php
lib/private/Server.php
lib/private/Share20/Manager.php
lib/private/legacy/OC_Defaults.php
lib/public/Defaults.php
lib/public/Mail/IEMailTemplate.php
tests/lib/Mail/EMailTemplateTest.php
tests/lib/Mail/MailerTest.php

index c32bb601f31af83fcdc8e51e3f74f7f57247bf1c..e2ceec67d22ed247f5357aa8219a61c6c494df30 100644 (file)
@@ -78,7 +78,7 @@ class NewUserMailHelperTest extends TestCase {
                $template = new EMailTemplate(
                        $this->defaults,
                        $this->urlGenerator,
-                       $this->l10n,
+                       $this->l10nFactory,
                        'test.TestTemplate',
                        []
                );
@@ -377,8 +377,8 @@ Set your password: https://example.com/resetPassword/MySuperLongSecureRandomToke
 Install Client: https://nextcloud.com/install/#install-clients
 
 
--- 
-TestCloud - 
+--
+TestCloud -
 This is an automatically sent email, please do not reply.
 EOF;
 
index 059dc55cb99199a3e505a38ce4c20245f30b057c..f0af45ba8898a529cdc851c3ec21209b9ae4027a 100644 (file)
@@ -145,8 +145,8 @@ class ThemingDefaults extends \OC_Defaults {
                return $this->config->getAppValue('theming', 'url', $this->url);
        }
 
-       public function getSlogan() {
-               return \OCP\Util::sanitizeHTML($this->config->getAppValue('theming', 'slogan', parent::getSlogan()));
+       public function getSlogan(?string $lang = null) {
+               return \OCP\Util::sanitizeHTML($this->config->getAppValue('theming', 'slogan', parent::getSlogan($lang)));
        }
 
        public function getImprintUrl() {
index 9e2f099259cbea5042f8770034ee5260cd956ad4..3bb5b299f4e698adf8200b27f9f7e3ccdc0cf28a 100644 (file)
@@ -35,8 +35,8 @@ declare(strict_types=1);
 namespace OC\Mail;
 
 use OCP\Defaults;
-use OCP\IL10N;
 use OCP\IURLGenerator;
+use OCP\L10N\IFactory;
 use OCP\Mail\IEMailTemplate;
 
 /**
@@ -52,8 +52,8 @@ class EMailTemplate implements IEMailTemplate {
        protected $themingDefaults;
        /** @var IURLGenerator */
        protected $urlGenerator;
-       /** @var IL10N */
-       protected $l10n;
+       /** @var IFactory */
+       protected $l10nFactory;
        /** @var string */
        protected $emailId;
        /** @var array */
@@ -350,21 +350,14 @@ EOF;
 </table>
 EOF;
 
-       /**
-        * @param Defaults $themingDefaults
-        * @param IURLGenerator $urlGenerator
-        * @param IL10N $l10n
-        * @param string $emailId
-        * @param array $data
-        */
        public function __construct(Defaults $themingDefaults,
                                                                IURLGenerator $urlGenerator,
-                                                               IL10N $l10n,
+                                                               IFactory $l10nFactory,
                                                                $emailId,
                                                                array $data) {
                $this->themingDefaults = $themingDefaults;
                $this->urlGenerator = $urlGenerator;
-               $this->l10n = $l10n;
+               $this->l10nFactory = $l10nFactory;
                $this->htmlBody .= $this->head;
                $this->emailId = $emailId;
                $this->data = $data;
@@ -605,9 +598,10 @@ EOF;
         *
         * @param string $text If the text is empty the default "Name - Slogan<br>This is an automatically sent email" will be used
         */
-       public function addFooter(string $text = '') {
+       public function addFooter(string $text = '', ?string $lang = null) {
                if ($text === '') {
-                       $text = $this->themingDefaults->getName() . ' - ' . $this->themingDefaults->getSlogan() . '<br>' . $this->l10n->t('This is an automatically sent email, please do not reply.');
+                       $l10n = $this->l10nFactory->get('lib', $lang);
+                       $text = $this->themingDefaults->getName() . ' - ' . $this->themingDefaults->getSlogan($lang) . '<br>' . $l10n->t('This is an automatically sent email, please do not reply.');
                }
 
                if ($this->footerAdded) {
index 57778e263d75e30fb0b88a816a7ebc9a47d9109a..3ef77e6239c484517040fae161a092a03da159f5 100644 (file)
@@ -41,6 +41,7 @@ use OCP\IConfig;
 use OCP\IL10N;
 use OCP\ILogger;
 use OCP\IURLGenerator;
+use OCP\L10N\IFactory;
 use OCP\Mail\IAttachment;
 use OCP\Mail\IEMailTemplate;
 use OCP\Mail\IMailer;
@@ -80,6 +81,8 @@ class Mailer implements IMailer {
        private $l10n;
        /** @var IEventDispatcher */
        private $dispatcher;
+       /** @var IFactory */
+       private $l10nFactory;
 
        /**
         * @param IConfig $config
@@ -94,13 +97,15 @@ class Mailer implements IMailer {
                                                 Defaults $defaults,
                                                 IURLGenerator $urlGenerator,
                                                 IL10N $l10n,
-                                                IEventDispatcher $dispatcher) {
+                                                IEventDispatcher $dispatcher,
+                                                IFactory $l10nFactory) {
                $this->config = $config;
                $this->logger = $logger;
                $this->defaults = $defaults;
                $this->urlGenerator = $urlGenerator;
                $this->l10n = $l10n;
                $this->dispatcher = $dispatcher;
+               $this->l10nFactory = $l10nFactory;
        }
 
        /**
@@ -158,7 +163,7 @@ class Mailer implements IMailer {
                return new EMailTemplate(
                        $this->defaults,
                        $this->urlGenerator,
-                       $this->l10n,
+                       $this->l10nFactory,
                        $emailId,
                        $data
                );
index a7432342a2798a3e4c739160b20e9cb4665aa9f3..cf4f8cc097b9a7fb3e6e380a6c3a291dd61278f5 100644 (file)
@@ -995,7 +995,8 @@ class Server extends ServerContainer implements IServerContainer {
                                $c->query(Defaults::class),
                                $c->getURLGenerator(),
                                $c->getL10N('lib'),
-                               $c->query(IEventDispatcher::class)
+                               $c->query(IEventDispatcher::class),
+                               $c->getL10NFactory()
                        );
                });
                $this->registerDeprecatedAlias('Mailer', IMailer::class);
index 78d79b5c4da4958bbe34ed4fe4e853f26f487dc2..becf29e4cc7bac45a517f13da91a783eab2b3d87 100644 (file)
@@ -891,9 +891,9 @@ class Manager implements IManager {
                $initiatorEmail = $initiatorUser->getEMailAddress();
                if ($initiatorEmail !== null) {
                        $message->setReplyTo([$initiatorEmail => $initiatorDisplayName]);
-                       $emailTemplate->addFooter($instanceName . ($this->defaults->getSlogan() !== '' ? ' - ' . $this->defaults->getSlogan() : ''));
+                       $emailTemplate->addFooter($instanceName . ($this->defaults->getSlogan($l->getLanguageCode()) !== '' ? ' - ' . $this->defaults->getSlogan($l->getLanguageCode()) : ''));
                } else {
-                       $emailTemplate->addFooter();
+                       $emailTemplate->addFooter('', $l->getLanguageCode());
                }
 
                $message->useTemplate($emailTemplate);
index f90cae61bd7c8d8d880857b889defb58a9800ddb..3b40b8151122b09df23b21e4346659611884455b 100644 (file)
@@ -214,12 +214,12 @@ class OC_Defaults {
         * Returns slogan
         * @return string slogan
         */
-       public function getSlogan() {
+       public function getSlogan(?string $lang = null) {
                if ($this->themeExist('getSlogan')) {
-                       return $this->theme->getSlogan();
+                       return $this->theme->getSlogan($lang);
                } else {
                        if ($this->defaultSlogan === null) {
-                               $l10n = \OC::$server->getL10N('lib');
+                               $l10n = \OC::$server->getL10N('lib', $lang);
                                $this->defaultSlogan = $l10n->t('a safe home for all your data');
                        }
                        return $this->defaultSlogan;
index af7a15675715f9168d27e7c74151a251b18fc078..afb606febf6f899c3182156264e02d0730ab0215 100644 (file)
@@ -137,8 +137,8 @@ class Defaults {
         * @return string
         * @since 6.0.0
         */
-       public function getSlogan() {
-               return $this->defaults->getSlogan();
+       public function getSlogan(?string $lang = null) {
+               return $this->defaults->getSlogan($lang);
        }
 
        /**
index 8950f18e31cea7c7fa0e99f0ee83797f863039e5..70046d5c508f37f84e5a72b90555eba5018c62db 100644 (file)
@@ -140,10 +140,11 @@ interface IEMailTemplate {
         * Adds a logo and a text to the footer. <br> in the text will be replaced by new lines in the plain text email
         *
         * @param string $text If the text is empty the default "Name - Slogan<br>This is an automatically sent email" will be used
+        * @param string $lang Optional language to set the default footer in
         *
         * @since 12.0.0
         */
-       public function addFooter(string $text = '');
+       public function addFooter(string $text = '', ?string $lang = null);
 
        /**
         * Returns the rendered email subject as string
index 4b4ff616d4e4b5b8563751efc325202c95e705a1..a900b1fe47d672192c500aaa387a623dfd561c4c 100644 (file)
@@ -27,6 +27,7 @@ use OC\Mail\EMailTemplate;
 use OCP\Defaults;
 use OCP\IL10N;
 use OCP\IURLGenerator;
+use OCP\L10N\IFactory;
 use Test\TestCase;
 
 class EMailTemplateTest extends TestCase {
@@ -34,7 +35,7 @@ class EMailTemplateTest extends TestCase {
        private $defaults;
        /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */
        private $urlGenerator;
-       /** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */
+       /** @var IFactory|\PHPUnit_Framework_MockObject_MockObject */
        private $l10n;
        /** @var EMailTemplate */
        private $emailTemplate;
@@ -44,7 +45,11 @@ class EMailTemplateTest extends TestCase {
 
                $this->defaults = $this->createMock(Defaults::class);
                $this->urlGenerator = $this->createMock(IURLGenerator::class);
-               $this->l10n = $this->createMock(IL10N::class);
+               $this->l10n = $this->createMock(IFactory::class);
+
+               $this->l10n->method('get')
+                       ->with('lib', '')
+                       ->willReturn($this->createMock(IL10N::class));
 
                $this->emailTemplate = new EMailTemplate(
                        $this->defaults,
index 996048452bb0e10b1530535e81c7b3fb63389ba3..9e7f6a4134c3bc27374a3af6801711585b307cec 100644 (file)
@@ -20,6 +20,7 @@ use OCP\IConfig;
 use OCP\IL10N;
 use OCP\ILogger;
 use OCP\IURLGenerator;
+use OCP\L10N\IFactory;
 use OCP\Mail\Events\BeforeMessageSent;
 use Test\TestCase;
 use Swift_SwiftException;
@@ -56,7 +57,8 @@ class MailerTest extends TestCase {
                        $this->defaults,
                        $this->urlGenerator,
                        $this->l10n,
-                       $this->dispatcher
+                       $this->dispatcher,
+                       $this->createMock(IFactory::class)
                );
        }
 
@@ -153,7 +155,7 @@ class MailerTest extends TestCase {
                $this->assertInstanceOf('\OC\Mail\Message', $this->mailer->createMessage());
        }
 
-       
+
        public function testSendInvalidMailException() {
                $this->expectException(\Exception::class);