* Remove deprecated $wgOnlySysopsCanPatrol references; use User::isAllowed( 'patrol...
[lhc/web/wiklou.git] / includes / DifferenceEngine.php
index 492aa4a..33c4df9 100644 (file)
@@ -24,8 +24,6 @@ class DifferenceEngine {
        var $mOldid, $mNewid, $mTitle;
        var $mOldtitle, $mNewtitle, $mPagetitle;
        var $mOldtext, $mNewtext;
-       var $mOldUser, $mNewUser;
-       var $mOldComment, $mNewComment;
        var $mOldPage, $mNewPage;
        var $mRcidMarkPatrolled;
        var $mOldRev, $mNewRev;
@@ -72,8 +70,7 @@ class DifferenceEngine {
        }
 
        function showDiffPage() {
-               global $wgUser, $wgOut, $wgContLang, $wgOnlySysopsCanPatrol;
-               global $wgUseExternalEditor, $wgUseRCPatrol;
+               global $wgUser, $wgOut, $wgContLang, $wgUseExternalEditor, $wgUseRCPatrol;
                $fname = 'DifferenceEngine::showDiffPage';
                wfProfileIn( $fname );
 
@@ -153,30 +150,17 @@ CONTROL;
                $talk = $wgContLang->getNsText( NS_TALK );
                $contribs = wfMsg( 'contribslink' );
 
-               $this->mOldComment = $sk->formatComment($this->mOldComment);
-               $this->mNewComment = $sk->formatComment($this->mNewComment);
-
-               $oldUserLink = $sk->makeLinkObj( Title::makeTitleSafe( NS_USER, $this->mOldUser ), $this->mOldUser );
-               $newUserLink = $sk->makeLinkObj( Title::makeTitleSafe( NS_USER, $this->mNewUser ), $this->mNewUser );
-               $oldUTLink = $sk->makeLinkObj( Title::makeTitleSafe( NS_USER_TALK, $this->mOldUser ), $talk );
-               $newUTLink = $sk->makeLinkObj( Title::makeTitleSafe( NS_USER_TALK, $this->mNewUser ), $talk );
-               $oldContribs = $sk->makeKnownLinkObj( Title::makeTitle( NS_SPECIAL, 'Contributions' ), $contribs,
-                       'target=' . urlencode($this->mOldUser) );
-               $newContribs = $sk->makeKnownLinkObj( Title::makeTitle( NS_SPECIAL, 'Contributions' ), $contribs,
-                       'target=' . urlencode($this->mNewUser) );
                if ( $this->mNewRev->isCurrent() && $wgUser->isAllowed('rollback') ) {
+                       $username = $this->mNewRev->getUserText();
                        $rollback = '&nbsp;&nbsp;&nbsp;<strong>[' . $sk->makeKnownLinkObj( $this->mTitle, wfMsg( 'rollbacklink' ),
-                               'action=rollback&from=' . urlencode($this->mNewUser) .
-                               '&token=' . urlencode( $wgUser->editToken( array( $this->mTitle->getPrefixedText(), $this->mNewUser ) ) ) ) .
+                               'action=rollback&from=' . urlencode( $username ) .
+                               '&token=' . urlencode( $wgUser->editToken( array( $this->mTitle->getPrefixedText(), $username ) ) ) ) .
                                ']</strong>';
                } else {
                        $rollback = '';
                }
-               if ( $wgUseRCPatrol && $this->mRcidMarkPatrolled != 0 && $wgUser->isLoggedIn() &&
-                    ( $wgUser->isAllowed('rollback') || !$wgOnlySysopsCanPatrol ) )
-               {
-                       $patrol = ' [' . $sk->makeKnownLinkObj( $this->mTitle, wfMsg( 'markaspatrolleddiff' ),
-                               "action=markpatrolled&rcid={$this->mRcidMarkPatrolled}" ) . ']';
+               if( $wgUseRCPatrol && $this->mRcidMarkPatrolled != 0 && $wgUser->isAllowed( 'patrol' ) ) {
+                       $patrol = ' [' . $sk->makeKnownLinkObj( $this->mTitle, wfMsg( 'markaspatrolleddiff' ), "action=markpatrolled&rcid={$this->mRcidMarkPatrolled}" ) . ']';
                } else {
                        $patrol = '';
                }
@@ -190,12 +174,14 @@ CONTROL;
                                'diff=next&oldid='.$this->mNewid, '', '', 'id="differences-nextlink"' );
                }
 
-               $oldHeader = "<strong>{$this->mOldtitle}</strong><br />$oldUserLink " .
-                       "($oldUTLink | $oldContribs)<br />" . $this->mOldComment .
-                       '<br />' . $prevlink;
-               $newHeader = "<strong>{$this->mNewtitle}</strong><br />$newUserLink " .
-                       "($newUTLink | $newContribs) $rollback<br />" . $this->mNewComment .
-                       '<br />' . $nextlink . $patrol;
+               $oldHeader = "<strong>{$this->mOldtitle}</strong><br />" .
+                       $sk->revUserTools( $this->mOldRev ) . "<br />" .
+                       $sk->revComment( $this->mOldRev ) . "<br />" .
+                       $prevlink;
+               $newHeader = "<strong>{$this->mNewtitle}</strong><br />" .
+                       $sk->revUserTools( $this->mNewRev ) . " $rollback<br />" .
+                       $sk->revComment( $this->mNewRev ) . "<br />" .
+                       $nextlink . $patrol;
 
                $this->showDiff( $oldHeader, $newHeader );
                $wgOut->addHTML( "<hr /><h2>{$this->mPagetitle}</h2>\n" );
@@ -222,7 +208,7 @@ CONTROL;
         * contrast to normal "old revision" display style.
         */
        function showFirstRevision() {
-               global $wgOut, $wgUser, $wgLang;
+               global $wgOut, $wgUser;
 
                $fname = 'DifferenceEngine::showFirstRevision';
                wfProfileIn( $fname );
@@ -255,19 +241,16 @@ CONTROL;
                #
                $sk = $wgUser->getSkin();
 
-               $uTLink = $sk->makeLinkObj( Title::makeTitleSafe( NS_USER_TALK, $this->mOldUser ),  $wgLang->getNsText( NS_TALK ) );
-               $userLink = $sk->makeLinkObj( Title::makeTitleSafe( NS_USER, $this->mOldUser ), $this->mOldUser );
-               $contribs = $sk->makeKnownLinkObj( Title::makeTitle( NS_SPECIAL, 'Contributions' ), wfMsg( 'contribslink' ),
-                       'target=' . urlencode($this->mOldUser) );
                $nextlink = $sk->makeKnownLinkObj( $this->mTitle, wfMsgHtml( 'nextdiff' ), 'diff=next&oldid='.$this->mNewid, '', '', 'id="differences-nextlink"' );
-               $header = "<div class=\"firstrevisionheader\" style=\"text-align: center\"><strong>{$this->mOldtitle}</strong><br />$userLink " .
-                       "($uTLink | $contribs)<br />" . $this->mOldComment .
-                       '<br />' . $nextlink. "</div>\n";
+               $header = "<div class=\"firstrevisionheader\" style=\"text-align: center\"><strong>{$this->mOldtitle}</strong><br />" .
+                       $sk->revUserTools( $this->mNewRev ) . "<br />" .
+                       $sk->revComment( $this->mNewRev ) . "<br />" .
+                       $nextlink . "</div>\n";
 
                $wgOut->addHTML( $header );
 
                $wgOut->setSubtitle( wfMsg( 'difference' ) );
-               $wgOut->setRobotpolicy( 'noindex,follow' );
+               $wgOut->setRobotpolicy( 'noindex,nofollow' );
 
 
                # Show current revision
@@ -289,7 +272,7 @@ CONTROL;
                global $wgOut;
                $diff = $this->getDiff( $otitle, $ntitle );
                if ( $diff === false ) {
-                       $wgOut->addWikitext( wfMsg( 'missingarticle', "<nowiki>$t</nowiki>" ) );
+                       $wgOut->addWikitext( wfMsg( 'missingarticle', "<nowiki>(fixme, bug)</nowiki>" ) );
                        return false;
                } else {
                        $wgOut->addHTML( $diff );
@@ -330,7 +313,7 @@ CONTROL;
                        if ( $difftext ) {
                                wfIncrStats( 'diff_cache_hit' );
                                $difftext = $this->localiseLineNumbers( $difftext );
-                               $difftext .= "\n<!-- diff cache key $key -->\n"; 
+                               $difftext .= "\n<!-- diff cache key $key -->\n";
                                wfProfileOut( $fname );
                                return $difftext;
                        }
@@ -378,7 +361,7 @@ CONTROL;
                                dl('php_wikidiff.so');
                        }
                        return $wgContLang->unsegementForDiff( wikidiff_do_diff( $otext, $ntext, 2 ) );
-               } 
+               }
                
                if ( $wgExternalDiffEngine == 'wikidiff2' ) {
                        # Better external diff engine, the 2 may some day be dropped
@@ -432,7 +415,7 @@ CONTROL;
         * Replace line numbers with the text in the user's language
         */
        function localiseLineNumbers( $text ) {
-               return preg_replace_callback( '/<!--LINE (\d+)-->/', 
+               return preg_replace_callback( '/<!--LINE (\d+)-->/',
                        array( &$this, 'localiseLineNumbersCb' ), $text );
        }
 
@@ -510,9 +493,6 @@ CONTROL;
                        $this->mNewtitle = "<a href='$newLink'>{$this->mPagetitle}</a>";
                }
 
-               $this->mNewUser = $this->mNewRev->getUserText();
-               $this->mNewComment = $this->mNewRev->getComment();
-
                // Load the old revision object
                $this->mOldRev = false;
                if( $this->mOldid ) {
@@ -539,10 +519,6 @@ CONTROL;
                        $t = $wgLang->timeanddate( $this->mOldRev->getTimestamp(), true );
                        $oldLink = $this->mOldPage->escapeLocalUrl( 'oldid=' . $this->mOldid );
                        $this->mOldtitle = "<a href='$oldLink'>" . htmlspecialchars( wfMsg( 'revisionasof', $t ) ) . '</a>';
-
-
-                       $this->mOldUser = $this->mOldRev->getUserText();
-                       $this->mOldComment = $this->mOldRev->getComment();
                }
 
                return true;
@@ -563,6 +539,7 @@ CONTROL;
                        return false;
                }
                if ( $this->mOldRev ) {
+                       // FIXME: permission tests
                        $this->mOldtext = $this->mOldRev->getText();
                        if ( $this->mOldtext === false ) {
                                return false;