X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FPageHistory.php;h=7e7c5414501b3bc305c71ed338ec4cd38a4ca346;hb=d466cf6e86b929b17e3a9938e16a4e97d9448cdb;hp=50dd21af7c38ec877b0674611b1ef92be29a904d;hpb=f0754277f46a586797f7fc96db688fe45faa93ff;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/PageHistory.php b/includes/PageHistory.php index 50dd21af7c..7e7c541450 100644 --- a/includes/PageHistory.php +++ b/includes/PageHistory.php @@ -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 .= "($del) "; + $s .= " ($del) "; } - $s .= " $link $user"; + $s .= " $link"; + #getUser is safe, but this avoids making the invalid untargeted contribs links + if( $row->rev_deleted & Revision::DELETED_USER ) { + $user = '' . wfMsg('rev-deleted-user') . ''; + } + $s .= " $user"; 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 .= " $stxt"; + } + + #getComment is safe, but this is better formatted + if( $rev->isDeleted( Revision::DELETED_COMMENT ) ) { + $s .= " " . + wfMsgHtml( 'rev-deleted-comment' ) . ""; + } else { + $s .= $this->mSkin->revComment( $rev ); + } + if ($notificationtimestamp && ($row->rev_timestamp >= $notificationtimestamp)) { $s .= ' ' . wfMsgHtml( 'updatedmarker' ) . ''; } + #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[] = '' + . $this->mSkin->buildRollbackLink( $rev ) + . ''; } + + if ( !is_null( $next ) ) { + $undolink = $this->mSkin->makeKnownLinkObj( + $this->mTitle, + wfMsgHtml( 'editundo' ), + 'action=edit&undoafter=' . $next->rev_id . '&undo=' . $rev->getId() + ); + $tools[] = "{$undolink}"; + } + + $s .= ' (' . implode( ' | ', $tools ) . ')'; + + wfRunHooks( 'PageHistoryLineEnding', array( &$row , &$s ) ); + $s .= "\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 { } } -?> + +