A few comment tag tweaks.
[lhc/web/wiklou.git] / includes / PageHistory.php
index 50dd21a..7e7c541 100644 (file)
@@ -3,7 +3,6 @@
  * Page history
  *
  * Split off from Article.php and Skin.php, 2003-12-22
- * @package MediaWiki
  */
 
 /**
@@ -14,9 +13,7 @@
  * Construct it by passing in an Article, and call $h->history() to print the
  * history.
  *
- * @package MediaWiki
  */
-
 class PageHistory {
        const DIR_PREV = 0;
        const DIR_NEXT = 1;
@@ -33,7 +30,7 @@ class PageHistory {
         * @param Article $article
         * @returns nothing
         */
-       function PageHistory($article) {
+       function __construct($article) {
                global $wgUser;
 
                $this->mArticle =& $article;
@@ -101,6 +98,8 @@ class PageHistory {
                        $wgOut->redirect( $wgTitle->getLocalURL( "action=history&limit={$limit}&dir=prev" ) );
                        return;
                }
+               
+               wfRunHooks( 'PageHistoryBeforeList', array( &$this->mArticle ) );
 
                /** 
                 * Do the list
@@ -179,7 +178,7 @@ class PageHistory {
         * @return string HTML output for the row
         */
        function historyLine( $row, $next, $counter = '', $notificationtimestamp = false, $latest = false, $firstInList = false ) {
-               global $wgUser;
+               global $wgUser, $wgLang;
                $rev = new Revision( $row );
                $rev->setTitle( $this->mTitle );
 
@@ -199,31 +198,74 @@ class PageHistory {
                        if( $firstInList ) {
                                // We don't currently handle well changing the top revision's settings
                                $del = wfMsgHtml( 'rev-delundel' );
+                       } else if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
+                       // If revision was hidden from sysops
+                               $del = wfMsgHtml( 'rev-delundel' );                     
                        } else {
                                $del = $this->mSkin->makeKnownLinkObj( $revdel,
                                        wfMsg( 'rev-delundel' ),
                                        'target=' . urlencode( $this->mTitle->getPrefixedDbkey() ) .
                                        '&oldid=' . urlencode( $rev->getId() ) );
                        }
-                       $s .= "(<small>$del</small>) ";
+                       $s .= " (<small>$del</small>) ";
                }
                
-               $s .= " $link <span class='history-user'>$user</span>";
+               $s .= " $link";
+               #getUser is safe, but this avoids making the invalid untargeted contribs links
+               if( $row->rev_deleted & Revision::DELETED_USER ) {
+                       $user = '<span class="history-deleted">' . wfMsg('rev-deleted-user') . '</span>';
+               }
+               $s .= " <span class='history-user'>$user</span>";
 
                if( $row->rev_minor_edit ) {
                        $s .= ' ' . wfElement( 'span', array( 'class' => 'minor' ), wfMsg( 'minoreditletter') );
                }
 
-               $s .= $this->mSkin->revComment( $rev );
+               if (!is_null($size = $rev->getSize())) {
+                       if ($size == 0)
+                               $stxt = wfMsgHtml('historyempty');
+                       else
+                               $stxt = wfMsgHtml('historysize', $wgLang->formatNum( $size ) );
+                       $s .= " <span class=\"history-size\">$stxt</span>";
+               }
+
+               #getComment is safe, but this is better formatted
+               if( $rev->isDeleted( Revision::DELETED_COMMENT ) ) {
+                       $s .= " <span class=\"history-deleted\"><span class=\"comment\">" .
+                       wfMsgHtml( 'rev-deleted-comment' ) . "</span></span>";
+               } else {
+                       $s .= $this->mSkin->revComment( $rev );
+               }
+               
                if ($notificationtimestamp && ($row->rev_timestamp >= $notificationtimestamp)) {
                        $s .= ' <span class="updatedmarker">' .  wfMsgHtml( 'updatedmarker' ) . '</span>';
                }
+               #add blurb about text having been deleted
                if( $row->rev_deleted & Revision::DELETED_TEXT ) {
                        $s .= ' ' . wfMsgHtml( 'deletedrev' );
                }
+               
+               $tools = array();
+               
                if( $wgUser->isAllowed( 'rollback' ) && $latest ) {
-                       $s .= ' '.$this->mSkin->generateRollback( $rev );
+                       $tools[] = '<span class="mw-rollback-link">'
+                               . $this->mSkin->buildRollbackLink( $rev )
+                               . '</span>';
                }
+                       
+               if ( !is_null( $next ) ) {
+                       $undolink = $this->mSkin->makeKnownLinkObj(
+                               $this->mTitle,
+                               wfMsgHtml( 'editundo' ),
+                               'action=edit&undoafter=' . $next->rev_id . '&undo=' . $rev->getId()
+                       );
+                       $tools[] = "<span class=\"mw-history-undo\">{$undolink}</span>";
+               }
+               
+               $s .= ' (' . implode( ' | ', $tools ) . ')';
+               
+               wfRunHooks( 'PageHistoryLineEnding', array( &$row , &$s ) );
+               
                $s .= "</li>\n";
 
                return $s;
@@ -332,7 +374,7 @@ class PageHistory {
        function getLatestId() {
                if( is_null( $this->mLatestId ) ) {
                        $id = $this->mTitle->getArticleID();
-                       $db =& wfGetDB(DB_SLAVE);
+                       $db = wfGetDB(DB_SLAVE);
                        $this->mLatestId = $db->selectField( 'page',
                                "page_latest",
                                array( 'page_id' => $id ),
@@ -349,7 +391,7 @@ class PageHistory {
        function fetchRevisions($limit, $offset, $direction) {
                $fname = 'PageHistory::fetchRevisions';
 
-               $dbr =& wfGetDB( DB_SLAVE );
+               $dbr = wfGetDB( DB_SLAVE );
 
                if ($direction == PageHistory::DIR_PREV)
                        list($dirs, $oper) = array("ASC", ">=");
@@ -365,8 +407,7 @@ class PageHistory {
 
                $res = $dbr->select(
                        'revision',
-                       array('rev_id', 'rev_page', 'rev_text_id', 'rev_user', 'rev_comment', 'rev_user_text',
-                               'rev_timestamp', 'rev_minor_edit', 'rev_deleted'),
+                       Revision::selectFields(),
                        array_merge(array("rev_page=$page_id"), $offsets),
                        $fname,
                        array('ORDER BY' => "rev_timestamp $dirs",
@@ -391,7 +432,7 @@ class PageHistory {
                if ($wgUser->isAnon() || !$wgShowUpdatedMarker)
                        return $this->mNotificationTimestamp = false;
 
-               $dbr =& wfGetDB(DB_SLAVE);
+               $dbr = wfGetDB(DB_SLAVE);
 
                $this->mNotificationTimestamp = $dbr->selectField(
                        'watchlist',
@@ -497,6 +538,9 @@ class PageHistory {
 }
 
 
+/**
+ * @addtogroup Pager
+ */
 class PageHistoryPager extends ReverseChronologicalPager {
        public $mLastRow = false, $mPageHistory;
        
@@ -508,8 +552,7 @@ class PageHistoryPager extends ReverseChronologicalPager {
        function getQueryInfo() {
                return array(
                        'tables' => 'revision',
-                       'fields' => array('rev_id', 'rev_page', 'rev_text_id', 'rev_user', 'rev_comment', 'rev_user_text',
-                               'rev_timestamp', 'rev_minor_edit', 'rev_deleted'),
+                       'fields' => Revision::selectFields(),
                        'conds' => array('rev_page' => $this->mPageHistory->mTitle->getArticleID() ),
                        'options' => array( 'USE INDEX' => 'page_timestamp' )
                );
@@ -562,4 +605,5 @@ class PageHistoryPager extends ReverseChronologicalPager {
        }
 }
 
-?>
+
+