called before.
$user: The User for which the options have been saved
+'UserSendConfirmationMail': Called just before a confirmation email is sent to
+a user. Hook handlers can modify the email that will be sent.
+$user: The User for which the confirmation email is going to be sent
+&$mail: Associative array describing the email, with the following keys:
+ - subject: Subject line of the email
+ - body: Email body. Can be a string, or an array with keys 'text' and 'html'
+ - from: User object, or null meaning $wgPasswordSender will be used
+ - replyTo: MailAddress object or null
+$info: Associative array with additional information:
+ - type: 'created' if the user's account was just created; 'set' if the user
+ set an email address when they previously didn't have one; 'changed' if
+ the user had an email address and changed it
+ - ip: The IP address from which the user set/changed their email address
+ - confirmURL: URL the user should visit to confirm their email
+ - invalidateURL: URL the user should visit to invalidate confirmURL
+ - expiration: time and date when confirmURL expires
+
'UserSetCookies': DEPRECATED since 1.27! If you're trying to replace core
session cookie handling, you want to create a subclass of
MediaWiki\Session\CookieSessionProvider instead. Otherwise, you can no longer
if ( $type == 'created' || $type === false ) {
$message = 'confirmemail_body';
+ $type = 'created';
} elseif ( $type === true ) {
$message = 'confirmemail_body_changed';
+ $type = 'changed';
} else {
// Messages: confirmemail_body_changed, confirmemail_body_set
$message = 'confirmemail_body_' . $type;
}
- return $this->sendMail( wfMessage( 'confirmemail_subject' )->text(),
- wfMessage( $message,
+ $mail = [
+ 'subject' => wfMessage( 'confirmemail_subject' )->text(),
+ 'body' => wfMessage( $message,
$this->getRequest()->getIP(),
$this->getName(),
$url,
$wgLang->userTimeAndDate( $expiration, $this ),
$invalidateURL,
$wgLang->userDate( $expiration, $this ),
- $wgLang->userTime( $expiration, $this ) )->text() );
+ $wgLang->userTime( $expiration, $this ) )->text(),
+ 'from' => null,
+ 'replyTo' => null,
+ ];
+ $info = [
+ 'type' => $type,
+ 'ip' => $this->getRequest()->getIP(),
+ 'confirmURL' => $url,
+ 'invalidateURL' => $invalidateURL,
+ 'expiration' => $expiration
+ ];
+
+ Hooks::run( 'UserSendConfirmationMail', [ $this, &$mail, $info ] );
+ return $this->sendMail( $mail['subject'], $mail['body'], $mail['from'], $mail['replyTo'] );
}
/**
* @param string $body Message body
* @param User|null $from Optional sending user; if unspecified, default
* $wgPasswordSender will be used.
- * @param string|null $replyto Reply-To address
+ * @param MailAddress|null $replyto Reply-To address
* @return Status
*/
public function sendMail( $subject, $body, $from = null, $replyto = null ) {