Revert r50727 "* (bug 18834) Show how many edits will rollback if $wgShowRollbackEdit...
authorBrion Vibber <brion@users.mediawiki.org>
Mon, 18 May 2009 18:48:36 +0000 (18:48 +0000)
committerBrion Vibber <brion@users.mediawiki.org>
Mon, 18 May 2009 18:48:36 +0000 (18:48 +0000)
* Seems to combine unrelated changes, which complicates code review and management
* Patch is incomplete, missing default settings etc.

RELEASE-NOTES
includes/Linker.php
languages/messages/MessagesDe.php
languages/messages/MessagesEn.php
languages/messages/MessagesQqq.php

index a84f7c4..16233a1 100644 (file)
@@ -55,7 +55,6 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN
 * (bug 18342) insertTags works in edit summary box
 * (bug 18411) The upload form also checks post_max_size
 * Watchlist now has a specialized <div> tag that contains a unique class for each page
-* (bug 18834) Show how many edits will rollback if $wgShowRollbackEditCount is set true in LocalSettings.php
 
 === Bug fixes in 1.16 ===
 
index 1a37aef..e93598e 100644 (file)
@@ -1609,7 +1609,7 @@ class Linker {
         * @return string
         */
        public function buildRollbackLink( $rev ) {
-               global $wgRequest, $wgUser, $wgShowRollbackEditCount;
+               global $wgRequest, $wgUser;
                $title = $rev->getTitle();
                $query = array(
                        'action' => 'rollback',
@@ -1622,43 +1622,57 @@ class Linker {
                $query['token'] = $wgUser->editToken( array( $title->getPrefixedText(),
                        $rev->getUserText() ) );
 
-               if( $wgShowRollbackEditCount ) {
-                       global $wgLang;
-                       $dbr = wfGetDB( DB_SLAVE );
-
-                       // 10 latest edits; if too expensive, use only on smaller wikis
-                       $res = $dbr->select( 'revision',
-                               array( 'rev_id', 'rev_user_text' ),
-                               array( 'rev_page' => $rev->getPage()
-                               ), __METHOD__, 
-                               array(  'USE INDEX' => 'page_timestamp',
-                                       'ORDER BY' => 'rev_timestamp DESC',
-                                       'LIMIT' => 10 )
-                               );
-
-                       $editCount = 1;
-                       $dbr->fetchObject( $res );  // throw away the first row
-                       while( $row = $dbr->fetchObject( $res ) ) {
-                               if( $rev->getUserText() != $row->rev_user_text ) {
-                                       break;
-                               }
-                               $editCount++;
+               $dbr = wfGetDB( DB_MASTER );
+
+               // Latest edits by this user, up to 10; if too expensive, use only on smaller wikis
+               $res = $dbr->select( 'revision',
+                       array( 'rev_id' ),
+                       array(  'rev_page' => $rev->getPage(), 
+                               'rev_user_text' => $rev->getUserText()
+                       ), __METHOD__, 
+                       array(  'USE INDEX' => 'page_timestamp',
+                               'ORDER BY' => 'rev_timestamp DESC',
+                               'LIMIT' => 10 ) 
+                       );
+
+               // Swiped from Article::commitRollback()
+               $user = intval( $rev->getUser() );
+               $user_text = $dbr->addQuotes( $rev->getUserText() );
+
+               // Get the last edit not by this guy
+               $s = $dbr->selectRow( 'revision',
+                       array( 'rev_id', 'rev_timestamp', 'rev_deleted' ),
+                       array(  'rev_page' => $rev->getPage(),
+                               "rev_user != {$user} OR rev_user_text != {$user_text}"
+                       ), __METHOD__,
+                       array(  'USE INDEX' => 'page_timestamp',
+                               'ORDER BY'  => 'rev_timestamp DESC' )
+                       );
+
+               if( $s === false ) {
+                       // No one else ever edited this page
+                       return false;
+               } 
+               elseif( $s->rev_deleted & REVISION::DELETED_TEXT || $s->rev_deleted & REVISION::DELETED_USER ) {
+                       // Only admins can see this text
+                       return false;
+               }
+
+               $editCount = 0;
+               while( $row = $dbr->fetchObject( $res ) ) {
+                       $editCount++;
+                       if( $s->rev_id > $row->rev_id ) {
+                               break;
                        }
+               }
 
-                       // We only bother to count up to 10
-                       $formattedNum = $wgLang->formatNum( $editCount );
-                       if( $editCount == 10 )
-                               $formattedNum .= '+';
+               // We only bother to count up to 10
+               if( $editCount == 10 )
+                       $editCount = '10+';
 
-                       return $this->link( $title, wfMsgExt( 'rollbacklinkcount', 'parseinline', $formattedNum, $editCount ),
-                               array( 'title' => wfMsg( 'tooltip-rollback' ) ),
-                               $query, array( 'known', 'noclasses' ) );
-               }
-               else {
-                       return $this->link( $title, wfMsgHtml( 'rollbacklink' ),
-                               array( 'title' => wfMsg( 'tooltip-rollback' ) ),
-                               $query, array( 'known', 'noclasses' ) );
-               }
+               return $this->link( $title, wfMsgHtml( 'rollbacklink', $editCount ),
+                       array( 'title' => wfMsg( 'tooltip-rollback' ) ),
+                       $query, array( 'known', 'noclasses' ) );
        }
 
        /**
index f09b7aa..b724953 100644 (file)
@@ -2073,7 +2073,6 @@ Um die Einstellungen deiner Beobachtungsliste anzupassen, besuche: {{fullurl:Spe
 'rollback'         => 'Zurücksetzen der Änderungen',
 'rollback_short'   => 'Zurücksetzen',
 'rollbacklink'     => 'Zurücksetzen',
-'rollbacklinkcount'=> 'Setzen $1 {{PLURAL:$2|Änderung|Änderungen}} zurück',
 'rollbackfailed'   => 'Zurücksetzen gescheitert',
 'cantrollback'     => 'Die Änderung kann nicht zurückgesetzt werden, da es keine früheren Autoren gibt.',
 'alreadyrolled'    => 'Das Zurücksetzen der Änderungen von [[User:$2|$2]] ([[User talk:$2|Diskussion]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) an [[:$1]] ist gescheitert, da in der Zwischenzeit ein anderer Benutzer die Seite geändert hat.
index b8dbf05..c41999a 100644 (file)
@@ -2428,7 +2428,6 @@ proceed with caution.',
 'rollback'         => 'Roll back edits',
 'rollback_short'   => 'Rollback',
 'rollbacklink'     => 'rollback',
-'rollbacklinkcount'=> 'rollback $1 {{PLURAL:$2|edit|edits}}',
 'rollbackfailed'   => 'Rollback failed',
 'cantrollback'     => 'Cannot revert edit;
 last contributor is only author of this page.',
index ff16293..6d31063 100644 (file)
@@ -1763,8 +1763,6 @@ $1 = the name of the page',
 'rollback'         => '{{Identical|Rollback}}',
 'rollback_short'   => '{{Identical|Rollback}}',
 'rollbacklink'     => '{{Identical|Rollback}}',
-'rollbacklinkcount'=> '* $1: the number of edit that can rollback
-* $2: the number of edit that can rollback for PLURAL',
 'rollbackfailed'   => '{{Identical|Rollback}}',
 'cantrollback'     => '{{Identical|Revert}}
 {{Identical|Rollback}}',