From 3cc65c87e3dcfaba54247b6b3e0120c3f6b8a49b Mon Sep 17 00:00:00 2001 From: Derick Alangi Date: Mon, 26 Aug 2019 14:03:35 +0100 Subject: [PATCH] mail: Avoid use of global state and use MediaWiki services DI Change-Id: If335cb6a220ebc5eb7487e51ee097f9d2afa0d2d --- includes/mail/EmailNotification.php | 30 ++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/includes/mail/EmailNotification.php b/includes/mail/EmailNotification.php index 7361032937..cba68ef587 100644 --- a/includes/mail/EmailNotification.php +++ b/includes/mail/EmailNotification.php @@ -173,13 +173,23 @@ class EmailNotification { * @param string $pageStatus * @throws MWException */ - public function actuallyNotifyOnPageChange( $editor, $title, $timestamp, $summary, $minorEdit, - $oldid, $watchers, $pageStatus = 'changed' ) { + public function actuallyNotifyOnPageChange( + $editor, + $title, + $timestamp, + $summary, + $minorEdit, + $oldid, + $watchers, + $pageStatus = 'changed' + ) { # we use $wgPasswordSender as sender's address global $wgUsersNotifiedOnAllChanges; global $wgEnotifWatchlist, $wgBlockDisablesLogin; global $wgEnotifMinorEdits, $wgEnotifUserTalk; + $messageCache = MediaWikiServices::getInstance()->getMessageCache(); + # The following code is only run, if several conditions are met: # 1. EmailNotification for pages (other than user_talk pages) must be enabled # 2. minor edits (changes) are only regarded if the global flag indicates so @@ -210,7 +220,7 @@ class EmailNotification { && $this->canSendUserTalkEmail( $editor, $title, $minorEdit ) ) { $targetUser = User::newFromName( $title->getText() ); - $this->compose( $targetUser, self::USER_TALK ); + $this->compose( $targetUser, self::USER_TALK, $messageCache ); $userTalkId = $targetUser->getId(); } @@ -229,7 +239,7 @@ class EmailNotification { && !( $wgBlockDisablesLogin && $watchingUser->getBlock() ) && Hooks::run( 'SendWatchlistEmailNotification', [ $watchingUser, $title, $this ] ) ) { - $this->compose( $watchingUser, self::WATCHLIST ); + $this->compose( $watchingUser, self::WATCHLIST, $messageCache ); } } } @@ -241,7 +251,7 @@ class EmailNotification { continue; } $user = User::newFromName( $name ); - $this->compose( $user, self::ALL_CHANGES ); + $this->compose( $user, self::ALL_CHANGES, $messageCache ); } $this->sendMails(); @@ -288,8 +298,9 @@ class EmailNotification { /** * Generate the generic "this page has been changed" e-mail text. + * @param MessageCache $messageCache */ - private function composeCommonMailtext() { + private function composeCommonMailtext( MessageCache $messageCache ) { global $wgPasswordSender, $wgNoReplyAddress; global $wgEnotifFromEditor, $wgEnotifRevealEditorAddress; global $wgEnotifImpersonal, $wgEnotifUseRealName; @@ -374,7 +385,7 @@ class EmailNotification { $body = wfMessage( 'enotif_body' )->inContentLanguage()->plain(); $body = strtr( $body, $keys ); - $body = MessageCache::singleton()->transform( $body, false, null, $this->title ); + $body = $messageCache->transform( $body, false, null, $this->title ); $this->body = wordwrap( strtr( $body, $postTransformKeys ), 72 ); # Reveal the page editor's address as REPLY-TO address only if @@ -406,12 +417,13 @@ class EmailNotification { * Call sendMails() to send any mails that were queued. * @param User $user * @param string $source + * @param MessageCache $messageCache */ - private function compose( $user, $source ) { + private function compose( $user, $source, MessageCache $messageCache ) { global $wgEnotifImpersonal; if ( !$this->composed_common ) { - $this->composeCommonMailtext(); + $this->composeCommonMailtext( $messageCache ); } if ( $wgEnotifImpersonal ) { -- 2.20.1