From 424e25e9a9e7dafbaeded0cbf6e73b422958583a Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Wed, 2 Sep 2009 22:16:24 +0000 Subject: [PATCH] (bug 20372) Improve rollback-revisiondelete handling --- includes/Article.php | 35 ++++++++++++++++++------------- languages/messages/MessagesEn.php | 1 + maintenance/language/messages.inc | 1 + 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/includes/Article.php b/includes/Article.php index 819dbc564d..beadcdb12d 100644 --- a/includes/Article.php +++ b/includes/Article.php @@ -3003,6 +3003,8 @@ class Article { } $from = str_replace( '_', ' ', $fromP ); + # User name given should match up with the top revision. + # If the user was deleted then $from should be empty. if( $from != $current->getUserText() ) { $resultDetails = array( 'current' => $current ); return array(array('alreadyrolled', @@ -3012,9 +3014,10 @@ class Article { )); } - # Get the last edit not by this guy - $user = intval( $current->getUser() ); - $user_text = $dbw->addQuotes( $current->getUserText() ); + # Get the last edit not by this guy... + # Note: these may not be public values + $user = intval( $current->getRawUser() ); + $user_text = $dbw->addQuotes( $current->getRawUserText() ); $s = $dbw->selectRow( 'revision', array( 'rev_id', 'rev_timestamp', 'rev_deleted' ), array( 'rev_page' => $current->getPage(), @@ -3041,20 +3044,24 @@ class Article { $set['rc_patrolled'] = 1; } - if( $set ) { + if( count($set) ) { $dbw->update( 'recentchanges', $set, - array( /* WHERE */ - 'rc_cur_id' => $current->getPage(), - 'rc_user_text' => $current->getUserText(), - "rc_timestamp > '{$s->rev_timestamp}'", - ), __METHOD__ - ); + array( /* WHERE */ + 'rc_cur_id' => $current->getPage(), + 'rc_user_text' => $current->getUserText(), + "rc_timestamp > '{$s->rev_timestamp}'", + ), __METHOD__ + ); } # Generate the edit summary if necessary $target = Revision::newFromId( $s->rev_id ); - if( empty( $summary ) ){ - $summary = wfMsgForContent( 'revertpage' ); + if( empty( $summary ) ) { + if( $from == '' ) { // no public user name + $summary = wfMsgForContent( 'revertpage-nouser' ); + } else { + $summary = wfMsgForContent( 'revertpage' ); + } } # Allow the custom summary to use the same args as the default message @@ -3086,8 +3093,8 @@ class Article { $resultDetails = array( 'summary' => $summary, 'current' => $current, - 'target' => $target, - 'newid' => $revId + 'target' => $target, + 'newid' => $revId ); return array(); } diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php index f5054df2e5..e11d5703f8 100644 --- a/languages/messages/MessagesEn.php +++ b/languages/messages/MessagesEn.php @@ -2666,6 +2666,7 @@ someone else has edited or rolled back the page already. The last edit to the page was by [[User:$3|$3]] ([[User talk:$3|Talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).', 'editcomment' => "The edit summary was: \"''\$1''\".", 'revertpage' => 'Reverted edits by [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) to last revision by [[User:$1|$1]]', +'revertpage-nouser' => 'Reverted edits by (username removed) to last revision by [[User:$1|$1]]', 'rollback-success' => 'Reverted edits by $1; changed back to last revision by $2.', 'sessionfailure' => 'There seems to be a problem with your login session; diff --git a/maintenance/language/messages.inc b/maintenance/language/messages.inc index 82426f4eb1..13609fdc6b 100644 --- a/maintenance/language/messages.inc +++ b/maintenance/language/messages.inc @@ -1753,6 +1753,7 @@ $wgMessageStructure = array( 'alreadyrolled', 'editcomment', 'revertpage', + 'revertpage-nouser', 'rollback-success', 'sessionfailure', ), -- 2.20.1