Add hook that could be the solution for Bug #28026 (“Enable e-mail
authorMark A. Hershberger <mah@users.mediawiki.org>
Thu, 28 Jul 2011 19:19:42 +0000 (19:19 +0000)
committerMark A. Hershberger <mah@users.mediawiki.org>
Thu, 28 Jul 2011 19:19:42 +0000 (19:19 +0000)
notifications for watchlist (EnotifWatchlist) on all small wikis”) to
make logging sent emails easier.

docs/hooks.txt
includes/UserMailer.php

index bf4a46e..abe40a7 100644 (file)
@@ -295,6 +295,15 @@ before showing the edit form ( EditPage::edit() ). This is triggered
 on &action=edit.
 $EditPage: the EditPage object
 
+'AlternateUserMailer': Called before mail is sent so that mail could
+be logged (or something else) instead of using PEAR or SMTP
+$UserMailer: the EditPage object
+$headers: Associative array of headers for the email
+$to: MailAddress object or array
+$from: From address
+$subject: Subject of the email
+$body: Body of the message
+
 'APIAfterExecute': after calling the execute() method of an API module.
 Use this to extend core API modules.
 &$module: Module object
index 1bb7c08..1009337 100644 (file)
@@ -180,6 +180,13 @@ class UserMailer {
                $headers['X-Mailer'] = 'MediaWiki mailer';
                $headers['From'] = $from->toString();
 
+               $ret = wfRunHooks( 'AlternateUserMailer', array( $this, $headers, $to, $from, $subject, $body, $replyto, $contentType ) ) ) {
+               if ( $ret === false ) {
+                       return Status::newGood();
+               } else if ( $ret != true ) {
+                       return Status::newFatal( 'php-mail-error', $ret );
+               }
+
                if ( is_array( $wgSMTP ) ) {
                        if ( function_exists( 'stream_resolve_include_path' ) ) {
                                $found = stream_resolve_include_path( 'Mail.php' );