diff options
Diffstat (limited to 'includes')
-rw-r--r-- | includes/Storage/DerivedPageDataUpdater.php | 6 | ||||
-rw-r--r-- | includes/api/ApiQueryUserInfo.php | 3 | ||||
-rw-r--r-- | includes/cache/HTMLFileCache.php | 4 | ||||
-rw-r--r-- | includes/page/WikiPage.php | 4 | ||||
-rw-r--r-- | includes/user/User.php | 23 |
5 files changed, 26 insertions, 14 deletions
diff --git a/includes/Storage/DerivedPageDataUpdater.php b/includes/Storage/DerivedPageDataUpdater.php index 3aa904f1c6fd..b099c7fed7cf 100644 --- a/includes/Storage/DerivedPageDataUpdater.php +++ b/includes/Storage/DerivedPageDataUpdater.php @@ -1550,11 +1550,13 @@ class DerivedPageDataUpdater implements IDBAccessObject, LoggerAwareInterface { // TODO: replace legacy hook! Use a listener on PageEventEmitter instead! if ( Hooks::run( 'ArticleEditUpdateNewTalk', [ &$wikiPage, $recipient ] ) ) { $revRecord = $legacyRevision->getRevisionRecord(); + $talkPageNotificationManager = MediaWikiServices::getInstance() + ->getTalkPageNotificationManager(); if ( User::isIP( $shortTitle ) ) { // An anonymous user - $recipient->setNewtalk( true, $revRecord ); + $talkPageNotificationManager->setUserHasNewMessages( $recipient, $revRecord ); } elseif ( $recipient->isLoggedIn() ) { - $recipient->setNewtalk( true, $revRecord ); + $talkPageNotificationManager->setUserHasNewMessages( $recipient, $revRecord ); } else { wfDebug( __METHOD__ . ": don't need to notify a nonexistent user\n" ); } diff --git a/includes/api/ApiQueryUserInfo.php b/includes/api/ApiQueryUserInfo.php index efc43fdeb013..5b1a8a7c393c 100644 --- a/includes/api/ApiQueryUserInfo.php +++ b/includes/api/ApiQueryUserInfo.php @@ -111,7 +111,8 @@ class ApiQueryUserInfo extends ApiQueryBase { } if ( isset( $this->prop['hasmsg'] ) ) { - $vals['messages'] = $user->getNewtalk(); + $vals['messages'] = MediaWikiServices::getInstance() + ->getTalkPageNotificationManager()->userHasNewMessages( $user ); } if ( isset( $this->prop['groups'] ) ) { diff --git a/includes/cache/HTMLFileCache.php b/includes/cache/HTMLFileCache.php index 28f062d66194..3ae286211277 100644 --- a/includes/cache/HTMLFileCache.php +++ b/includes/cache/HTMLFileCache.php @@ -124,7 +124,9 @@ class HTMLFileCache extends FileCacheBase { return false; } - if ( ( $mode === self::MODE_NORMAL ) && $user->getNewtalk() ) { + $userHasNewMessages = MediaWikiServices::getInstance() + ->getTalkPageNotificationManager()->userHasNewMessages( $user ); + if ( ( $mode === self::MODE_NORMAL ) && $userHasNewMessages ) { return false; } diff --git a/includes/page/WikiPage.php b/includes/page/WikiPage.php index 44cf98665981..f1ffe54df5bb 100644 --- a/includes/page/WikiPage.php +++ b/includes/page/WikiPage.php @@ -3544,7 +3544,9 @@ class WikiPage implements Page, IDBAccessObject { if ( $title->getNamespace() == NS_USER_TALK ) { $user = User::newFromName( $title->getText(), false ); if ( $user ) { - $user->setNewtalk( false ); + MediaWikiServices::getInstance() + ->getTalkPageNotificationManager() + ->removeUserHasNewMessages( $user ); } } diff --git a/includes/user/User.php b/includes/user/User.php index d21e9e8268b7..b8ddfead830c 100644 --- a/includes/user/User.php +++ b/includes/user/User.php @@ -2265,17 +2265,18 @@ class User implements IDBAccessObject, UserIdentity { return $talks; } - if ( !$this->getNewtalk() ) { + $services = MediaWikiServices::getInstance(); + $userHasNewMessages = $services->getTalkPageNotificationManager() + ->userHasNewMessages( $this ); + if ( !$userHasNewMessages ) { return []; } $utp = $this->getTalkPage(); - $timestamp = MediaWikiServices::getInstance() - ->getTalkPageNotificationManager() + $timestamp = $services->getTalkPageNotificationManager() ->getLatestSeenMessageTimestamp( $this ); $rev = null; if ( $timestamp ) { - $revRecord = MediaWikiServices::getInstance() - ->getRevisionLookup() + $revRecord = $services->getRevisionLookup() ->getRevisionByTimestamp( $utp, $timestamp ); if ( $revRecord ) { $rev = new Revision( $revRecord ); @@ -3451,12 +3452,14 @@ class User implements IDBAccessObject, UserIdentity { // Try to update the DB post-send and only if needed... DeferredUpdates::addCallableUpdate( function () use ( $oldid ) { - if ( !$this->getNewtalk() ) { + $talkPageNotificationManager = MediaWikiServices::getInstance() + ->getTalkPageNotificationManager(); + if ( !$talkPageNotificationManager->userHasNewMessages( $this ) ) { return; // no notifications to clear } // Delete the last notifications (they stack up) - $this->setNewtalk( false ); + $talkPageNotificationManager->removeUserHasNewMessages( $this ); // If there is a new, unseen, revision, use its timestamp if ( $oldid ) { @@ -3465,7 +3468,7 @@ class User implements IDBAccessObject, UserIdentity { if ( $oldRev ) { $newRev = $rl->getNextRevision( $oldRev ); if ( $newRev ) { - $this->setNewtalk( true, $newRev ); + $talkPageNotificationManager->setUserHasNewMessages( $this, $newRev ); } } } @@ -3508,7 +3511,9 @@ class User implements IDBAccessObject, UserIdentity { } if ( !$wgUseEnotif && !$wgShowUpdatedMarker ) { - $this->setNewtalk( false ); + MediaWikiServices::getInstance() + ->getTalkPageNotificationManager() + ->removeUserHasNewMessages( $this ); return; } |