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 .= " ";
+ } 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 {
}
}
-?>
+
+