]> git.mxchange.org Git - friendica.git/commitdiff
Enable addon using emailer hooks to skip default call to mail()
authorHypolite Petovan <hypolite@mrpetovan.com>
Sun, 26 May 2019 03:45:10 +0000 (23:45 -0400)
committerHypolite Petovan <hypolite@mrpetovan.com>
Mon, 27 May 2019 01:36:09 +0000 (21:36 -0400)
doc/Addons.md
src/Util/Emailer.php

index 858d64355f5fc33a3149679cdb2cbfd6eb48e2fc..47d16085a1216595c44914695fb4d122014ed62e 100644 (file)
@@ -358,6 +358,7 @@ Called from `Emailer::send()` before building the mime message.
 - **htmlVersion**: html version of the message
 - **textVersion**: text only version of the message
 - **additionalMailHeader**: additions to the smtp mail header
+- **sent**: default false, if set to true in the hook, the default mailer will be skipped.
 
 ### emailer_send
 Called before calling PHP's `mail()`.
@@ -367,6 +368,7 @@ Called before calling PHP's `mail()`.
 - **subject**
 - **body**
 - **headers**
+- **sent**: default false, if set to true in the hook, the default mailer will be skipped.
 
 ### load_config
 Called during `App` initialization to allow addons to load their own configuration file(s) with `App::loadConfigFile()`.
index 6a19e8e4587c929b80c0cf1895f187ad5383f033..4310046c234411b1f6fd6907f8613a4075ebc7c3 100644 (file)
@@ -32,10 +32,16 @@ class Emailer
         * @return bool
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       public static function send($params)
+       public static function send(array $params)
        {
+               $params['sent'] = false;
+
                Hook::callAll('emailer_send_prepare', $params);
 
+               if ($params['sent']) {
+                       return true;
+               }
+
                $email_textonly = false;
                if (!empty($params['uid'])) {
                        $email_textonly = PConfig::get($params['uid'], "system", "email_textonly");
@@ -87,11 +93,16 @@ class Emailer
                        'subject' => $messageSubject,
                        'body' => $multipartMessageBody,
                        'headers' => $messageHeader,
-                       'parameters' => $sendmail_params
+                       'parameters' => $sendmail_params,
+                       'sent' => false,
                ];
 
                Hook::callAll("emailer_send", $hookdata);
 
+               if ($hookdata['sent']) {
+                       return true;
+               }
+
                $res = mail(
                        $hookdata['to'],
                        $hookdata['subject'],