aboutsummaryrefslogtreecommitdiffstats
path: root/includes
diff options
context:
space:
mode:
Diffstat (limited to 'includes')
-rw-r--r--includes/Storage/DerivedPageDataUpdater.php6
-rw-r--r--includes/api/ApiQueryUserInfo.php3
-rw-r--r--includes/cache/HTMLFileCache.php4
-rw-r--r--includes/page/WikiPage.php4
-rw-r--r--includes/user/User.php23
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;
}