Fix NS_PROJECT_TALK (bug #7792)
[lhc/web/wiklou.git] / includes / PageHistory.php
index 2b174cf..aea0f0e 100644 (file)
@@ -21,7 +21,7 @@ class PageHistory {
        const DIR_PREV = 0;
        const DIR_NEXT = 1;
        
-       var $mArticle, $mTitle;
+       var $mArticle, $mTitle, $mSkin;
        var $lastdate;
        var $linesonpage;
        var $mNotificationTimestamp;
@@ -34,9 +34,12 @@ class PageHistory {
         * @returns nothing
         */
        function PageHistory($article) {
+               global $wgUser;
+
                $this->mArticle =& $article;
                $this->mTitle =& $article->mTitle;
                $this->mNotificationTimestamp = NULL;
+               $this->mSkin = $wgUser->getSkin();
        }
 
        /**
@@ -68,7 +71,7 @@ class PageHistory {
                $wgOut->setSyndicated( true );
 
                $logPage = SpecialPage::getTitleFor( 'Log' );
-               $logLink = Linker::makeKnownLinkObj( $logPage, wfMsgHtml( 'viewpagelogs' ), 'page=' . $this->mTitle->getPrefixedUrl() );
+               $logLink = $this->mSkin->makeKnownLinkObj( $logPage, wfMsgHtml( 'viewpagelogs' ), 'page=' . $this->mTitle->getPrefixedUrl() );
 
                $subtitle = wfMsgHtml( 'revhistory' ) . '<br />' . $logLink;
                $wgOut->setSubtitle( $subtitle );
@@ -103,12 +106,11 @@ class PageHistory {
                 * Do the list
                 */
                $pager = new PageHistoryPager( $this );
-               $navbar = $pager->getNavigationBar();
                $this->linesonpage = $pager->getNumRows();
                $wgOut->addHTML(
                        $pager->getNavigationBar() . 
                        $this->beginHistoryList() . 
-                       $pager->getBody() . 
+                       $pager->getBody() .
                        $this->endHistoryList() .
                        $pager->getNavigationBar()
                );
@@ -163,7 +165,19 @@ class PageHistory {
                        : '';
        }
 
-       /** @todo document */
+       /**
+        * Returns a row from the history printout.
+        *
+        * @todo document some more, and maybe clean up the code (some params redundant?)
+        *
+        * @param object $row The database row corresponding to the line (or is it the previous line?).
+        * @param object $next The database row corresponding to the next line (or is it this one?).
+        * @param int $counter Apparently a counter of what row number we're at, counted from the top row = 1.
+        * @param $notificationtimestamp
+        * @param bool $latest Whether this row corresponds to the page's latest revision.
+        * @param bool $firstInList Whether this row corresponds to the first displayed on this history page.
+        * @return string HTML output for the row
+        */
        function historyLine( $row, $next, $counter = '', $notificationtimestamp = false, $latest = false, $firstInList = false ) {
                global $wgUser;
                $rev = new Revision( $row );
@@ -175,8 +189,8 @@ class PageHistory {
                $arbitrary = $this->diffButtons( $rev, $firstInList, $counter );
                $link = $this->revLink( $rev );
                
-               $user = Linker::userLink( $rev->getUser(), $rev->getUserText() )
-                               . Linker::userToolLinks( $rev->getUser(), $rev->getUserText() );
+               $user = $this->mSkin->userLink( $rev->getUser(), $rev->getUserText() )
+                               . $this->mSkin->userToolLinks( $rev->getUser(), $rev->getUserText() );
                
                $s .= "($curlink) ($lastlink) $arbitrary";
                
@@ -186,7 +200,7 @@ class PageHistory {
                                // We don't currently handle well changing the top revision's settings
                                $del = wfMsgHtml( 'rev-delundel' );
                        } else {
-                               $del = Linker::makeKnownLinkObj( $revdel,
+                               $del = $this->mSkin->makeKnownLinkObj( $revdel,
                                        wfMsg( 'rev-delundel' ),
                                        'target=' . urlencode( $this->mTitle->getPrefixedDbkey() ) .
                                        '&oldid=' . urlencode( $rev->getId() ) );
@@ -200,13 +214,16 @@ class PageHistory {
                        $s .= ' ' . wfElement( 'span', array( 'class' => 'minor' ), wfMsg( 'minoreditletter') );
                }
 
-               $s .= Linker::revComment( $rev );
+               $s .= $this->mSkin->revComment( $rev );
                if ($notificationtimestamp && ($row->rev_timestamp >= $notificationtimestamp)) {
                        $s .= ' <span class="updatedmarker">' .  wfMsgHtml( 'updatedmarker' ) . '</span>';
                }
                if( $row->rev_deleted & Revision::DELETED_TEXT ) {
                        $s .= ' ' . wfMsgHtml( 'deletedrev' );
                }
+               if( $wgUser->isAllowed( 'rollback' ) && $latest ) {
+                       $s .= ' '.$this->mSkin->generateRollback( $rev );
+               }
                $s .= "</li>\n";
 
                return $s;
@@ -217,7 +234,7 @@ class PageHistory {
                global $wgLang;
                $date = $wgLang->timeanddate( wfTimestamp(TS_MW, $rev->getTimestamp()), true );
                if( $rev->userCan( Revision::DELETED_TEXT ) ) {
-                       $link = Linker::makeKnownLinkObj(
+                       $link = $this->mSkin->makeKnownLinkObj(
                                $this->mTitle, $date, "oldid=" . $rev->getId() );
                } else {
                        $link = $date;
@@ -234,7 +251,7 @@ class PageHistory {
                if( $latest || !$rev->userCan( Revision::DELETED_TEXT ) ) {
                        return $cur;
                } else {
-                       return Linker::makeKnownLinkObj(
+                       return $this->mSkin->makeKnownLinkObj(
                                $this->mTitle, $cur,
                                'diff=' . $this->getLatestID() .
                                "&oldid=" . $rev->getId() );
@@ -249,14 +266,14 @@ class PageHistory {
                        return $last;
                } elseif ( $next === 'unknown' ) {
                        # Next row probably exists but is unknown, use an oldid=prev link
-                       return Linker::makeKnownLinkObj(
+                       return $this->mSkin->makeKnownLinkObj(
                                $this->mTitle,
                                $last,
                                "diff=" . $rev->getId() . "&oldid=prev" );
                } elseif( !$rev->userCan( Revision::DELETED_TEXT ) ) {
                        return $last;
                } else {
-                       return Linker::makeKnownLinkObj(
+                       return $this->mSkin->makeKnownLinkObj(
                                $this->mTitle,
                                $last,
                                "diff=" . $rev->getId() . "&oldid={$next->rev_id}"