Made RecentChange defer the save() method via DeferredUpdates

* Also made it handle calling PatrolLog::record() itself

Bug: T100042
Change-Id: I58ef060e02b89a5f9dadc0dbc4edba667932beda
This commit is contained in:
Aaron Schulz 2015-05-21 00:21:03 -07:00 committed by paladox
parent 81f014b3a0
commit 97b2a1dfda
2 changed files with 29 additions and 21 deletions

View file

@ -517,8 +517,10 @@ class RecentChange {
* @param int $patrol
* @return RecentChange
*/
public static function notifyEdit( $timestamp, &$title, $minor, &$user, $comment, $oldId,
$lastTimestamp, $bot, $ip = '', $oldSize = 0, $newSize = 0, $newId = 0, $patrol = 0 ) {
public static function notifyEdit(
$timestamp, &$title, $minor, &$user, $comment, $oldId, $lastTimestamp,
$bot, $ip = '', $oldSize = 0, $newSize = 0, $newId = 0, $patrol = 0
) {
$rc = new RecentChange;
$rc->mTitle = $title;
$rc->mPerformer = $user;
@ -555,7 +557,13 @@ class RecentChange {
'newSize' => $newSize,
'pageStatus' => 'changed'
);
$rc->save();
DeferredUpdates::addCallableUpdate( function() use ( $rc ) {
$rc->save();
if ( $rc->mAttribs['rc_patrolled'] ) {
PatrolLog::record( $rc, true, $rc->getPerformer() );
}
} );
return $rc;
}
@ -576,8 +584,10 @@ class RecentChange {
* @param int $patrol
* @return RecentChange
*/
public static function notifyNew( $timestamp, &$title, $minor, &$user, $comment, $bot,
$ip = '', $size = 0, $newId = 0, $patrol = 0 ) {
public static function notifyNew(
$timestamp, &$title, $minor, &$user, $comment, $bot,
$ip = '', $size = 0, $newId = 0, $patrol = 0
) {
$rc = new RecentChange;
$rc->mTitle = $title;
$rc->mPerformer = $user;
@ -614,7 +624,13 @@ class RecentChange {
'newSize' => $size,
'pageStatus' => 'created'
);
$rc->save();
DeferredUpdates::addCallableUpdate( function() use ( $rc ) {
$rc->save();
if ( $rc->mAttribs['rc_patrolled'] ) {
PatrolLog::record( $rc, true, $rc->getPerformer() );
}
} );
return $rc;
}

View file

@ -1835,18 +1835,13 @@ class WikiPage implements Page, IDBAccessObject {
if ( !( $flags & EDIT_SUPPRESS_RC ) ) {
// Mark as patrolled if the user can do so
$patrolled = $wgUseRCPatrol && !count(
$this->mTitle->getUserPermissionsErrors( 'autopatrol', $user ) );
$this->mTitle->getUserPermissionsErrors( 'autopatrol', $user ) );
// Add RC row to the DB
$rc = RecentChange::notifyEdit( $now, $this->mTitle, $isminor, $user, $summary,
RecentChange::notifyEdit(
$now, $this->mTitle, $isminor, $user, $summary,
$oldid, $this->getTimestamp(), $bot, '', $oldsize, $newsize,
$revisionId, $patrolled
);
// Log auto-patrolled edits
if ( $patrolled ) {
PatrolLog::record( $rc, true, $user );
}
}
$user->incEditCount();
@ -1937,13 +1932,10 @@ class WikiPage implements Page, IDBAccessObject {
$patrolled = ( $wgUseRCPatrol || $wgUseNPPatrol ) && !count(
$this->mTitle->getUserPermissionsErrors( 'autopatrol', $user ) );
// Add RC row to the DB
$rc = RecentChange::notifyNew( $now, $this->mTitle, $isminor, $user, $summary, $bot,
'', $newsize, $revisionId, $patrolled );
// Log auto-patrolled edits
if ( $patrolled ) {
PatrolLog::record( $rc, true, $user );
}
RecentChange::notifyNew(
$now, $this->mTitle, $isminor, $user, $summary, $bot,
'', $newsize, $revisionId, $patrolled
);
}
$user->incEditCount();