simplify mail creation
authornupplaPhil <admin+github@philipp.info>
Tue, 4 Feb 2020 20:04:08 +0000 (21:04 +0100)
committernupplaPhil <admin+github@philipp.info>
Tue, 4 Feb 2020 20:05:33 +0000 (21:05 +0100)
mod/lostpass.php
mod/removeme.php
src/Core/Update.php
src/Model/User.php
src/Module/Admin/Users.php
src/Util/EMailer/MailBuilder.php
src/Util/Emailer.php
tests/src/Util/Emailer/MailBuilderTest.php

index 34daeff..51aee56 100644 (file)
@@ -65,9 +65,9 @@ function lostpass_post(App $a)
                Login Name:     %3$s', $resetlink, DI::baseUrl(), $user['nickname']));
 
        $email = DI::emailer()
-               ->newSystemMail((!empty($user['language'])) ? DI::l10n()->withLang($user['language']) : DI::l10n())
+               ->newSystemMail()
                ->withMessage(DI::l10n()->t('Password reset requested at %s', $sitename), $preamble, $body)
-               ->forUser($user['uid'] ?? 0)
+               ->forUser($user)
                ->withRecipient($user['email'])
                ->build();
 
@@ -157,9 +157,9 @@ function lostpass_generate_password($user)
                ', DI::baseUrl(), $user['nickname'], $new_password));
 
                $email = DI::emailer()
-                       ->newSystemMail((!empty($user['language'])) ? DI::l10n()->withLang($user['language']) : DI::l10n())
+                       ->newSystemMail()
                        ->withMessage(DI::l10n()->t('Your password has been changed at %s', $sitename), $preamble, $body)
-                       ->forUser($user['uid'] ?? 0)
+                       ->forUser($user)
                        ->withRecipient($user['email'])
                        ->build();
                DI::emailer()->send($email);
index d6b24eb..e8615fe 100644 (file)
@@ -42,12 +42,12 @@ function removeme_post(App $a)
                }
 
                $email = DI::emailer()
-                       ->newSystemMail((!empty($admin['language'])) ? DI::l10n()->withLang($admin['language']) : DI::l10n()->withLang('en'))
+                       ->newSystemMail()
                        ->withMessage(
                                DI::l10n()->t('[Friendica System Notify]') . ' ' . DI::l10n()->t('User deleted their account'),
                                DI::l10n()->t('On your Friendica node an user deleted their account. Please ensure that their data is removed from the backups.'),
                                DI::l10n()->t('The user id is %d', local_user()))
-                       ->forUser($admin['uid'] ?? 0)
+                       ->forUser($admin)
                        ->withRecipient($admin['email'])
                        ->build();
                DI::emailer()->send($email);
index 620519a..4db32ec 100644 (file)
@@ -264,9 +264,9 @@ class Update
                        $body     = $l10n->t("The error message is\n[pre]%s[/pre]", $error_message);
 
                        $email = DI::emailer()
-                               ->newSystemMail($l10n)
+                               ->newSystemMail()
                                ->withMessage($l10n->t('[Friendica Notify] Database update'), $preamble, $body)
-                               ->forUser($admin['uid'] ?? 0)
+                               ->forUser($admin)
                                ->withRecipient($admin['email'])
                                ->build();
                        DI::emailer()->send($email);
@@ -300,9 +300,9 @@ class Update
                                        $from_build, $to_build));
 
                                $email = DI::emailer()
-                                       ->newSystemMail($l10n)
+                                       ->newSystemMail()
                                        ->withMessage($l10n->t('[Friendica Notify] Database update'), $preamble)
-                                       ->forUser($admin['uid'] ?? 0)
+                                       ->forUser($admin)
                                        ->withRecipient($admin['email'])
                                        ->build();
                                DI::emailer()->send($email);
index 6deb1c6..7e2d37c 100644 (file)
@@ -898,9 +898,9 @@ class User
                ));
 
                $email = DI::emailer()
-                       ->newSystemMail(DI::l10n())
+                       ->newSystemMail()
                        ->withMessage(DI::l10n()->t('Registration at %s', $sitename), $body)
-                       ->forUser($user['uid'] ?? 0)
+                       ->forUser($user)
                        ->withRecipient($user['email'])
                        ->build();
                return DI::emailer()->send($email);
@@ -966,9 +966,9 @@ class User
                ));
 
                $email = DI::emailer()
-                       ->newSystemMail($l10n)
+                       ->newSystemMail()
                        ->withMessage(DI::l10n()->t('Registration details for %s', $sitename), $preamble, $body)
-                       ->forUser($user['uid'] ?? 0)
+                       ->forUser($user)
                        ->withRecipient($user['email'])
                        ->build();
                return DI::emailer()->send($email);
index cbb2fa7..f52d7b3 100644 (file)
@@ -77,9 +77,9 @@ class Users extends BaseAdmin
                        $body = sprintf($body, DI::baseUrl()->get(), $user['nickname'], $result['password'], DI::config()->get('config', 'sitename'));
 
                        $email = DI::emailer()
-                               ->newSystemMail((!empty($user['language'])) ? DI::l10n()->withLang($user['language']) : DI::l10n())
+                               ->newSystemMail()
                                ->withMessage(DI::l10n()->t('Registration details for %s', DI::config()->get('config', 'sitename')), $preamble, $body)
-                               ->forUser($user['uid'] ?? 0)
+                               ->forUser($user)
                                ->withRecipient($user['email'])
                                ->build();
                        return DI::emailer()->send($email);
index 2f8c199..074e29d 100644 (file)
@@ -86,13 +86,18 @@ abstract class MailBuilder
        /**
         * Adds the User ID to the email in case the mail sending needs additional properties of this user
         *
-        * @param int $uid The User ID
+        * @todo Once the user array is replaced with a user entity, replace this array parameter as well
+        * @param array $user The user entity/array, for which the email should be sent
         *
         * @return static
         */
-       public function forUser(int $uid)
+       public function forUser(array $user)
        {
-               $this->recipientUid = $uid;
+               $this->recipientUid = $user['uid'] ?? 0;
+               try {
+                       $this->l10n = $user['language'] ? $this->l10n->withLang($user['language']) : $this->l10n;
+               } catch (Exception $e) {
+               }
 
                return $this;
        }
index 485857b..d5d5f2c 100644 (file)
@@ -28,18 +28,22 @@ class Emailer
        private $logger;
        /** @var App\BaseURL */
        private $baseUrl;
+       /** @var L10n */
+       private $l10n;
 
        /** @var string */
        private $siteEmailAddress;
        /** @var string */
        private $siteEmailName;
 
-       public function __construct(IConfig $config, IPConfig $pConfig, App\BaseURL $baseURL, LoggerInterface $logger)
+       public function __construct(IConfig $config, IPConfig $pConfig, App\BaseURL $baseURL, LoggerInterface $logger,
+                                   L10n $defaultLang)
        {
                $this->config      = $config;
                $this->pConfig     = $pConfig;
                $this->logger      = $logger;
                $this->baseUrl     = $baseURL;
+               $this->l10n        = $defaultLang;
 
                $this->siteEmailAddress = $this->config->get('config', 'sender_email');
                if (empty($sysEmailAddress)) {
@@ -77,13 +81,11 @@ class Emailer
        /**
         * Creates a new system email
         *
-        * @param L10n $l10n The chosen language for the new email
-        *
         * @return SystemMailBuilder
         */
-       public function newSystemMail(L10n $l10n)
+       public function newSystemMail()
        {
-               return new SystemMailBuilder($l10n, $this->baseUrl, $this->config,
+               return new SystemMailBuilder($this->l10n, $this->baseUrl, $this->config,
                        $this->getSiteEmailAddress(), $this->getSiteEmailName());
        }
 
index 564e79f..37b8f27 100644 (file)
@@ -88,7 +88,7 @@ class MailBuilderTest extends MockedTest
                        ->withMessage('Subject', 'Html', 'text')
                        ->withRecipient('recipient@friendica.local')
                        ->withSender('Sender', 'sender@friendica.local', 'no-reply@friendica.local')
-                       ->forUser(100)
+                       ->forUser(['uid' => 100])
                        ->build(true);
 
                $this->assertEmail($testEmail, [