(bug 20372) Improve rollback-revisiondelete handling
authorAaron Schulz <aaron@users.mediawiki.org>
Wed, 2 Sep 2009 22:16:24 +0000 (22:16 +0000)
committerAaron Schulz <aaron@users.mediawiki.org>
Wed, 2 Sep 2009 22:16:24 +0000 (22:16 +0000)
includes/Article.php
languages/messages/MessagesEn.php
maintenance/language/messages.inc

index 819dbc5..beadcdb 100644 (file)
@@ -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();
        }
index f5054df..e11d570 100644 (file)
@@ -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;
index 82426f4..13609fd 100644 (file)
@@ -1753,6 +1753,7 @@ $wgMessageStructure = array(
                'alreadyrolled',
                'editcomment',
                'revertpage',
+               'revertpage-nouser',
                'rollback-success',
                'sessionfailure',
        ),