summaryrefslogtreecommitdiff
path: root/includes/PageHistory.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/PageHistory.php')
-rw-r--r--includes/PageHistory.php59
1 files changed, 43 insertions, 16 deletions
diff --git a/includes/PageHistory.php b/includes/PageHistory.php
index aea0f0ed..b1cf41f0 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
@@ -159,7 +158,7 @@ class PageHistory {
'class' => 'historysubmit',
'type' => 'submit',
'accesskey' => wfMsg( 'accesskey-compareselectedversions' ),
- 'title' => wfMsg( 'tooltip-compareselectedversions' ),
+ 'title' => wfMsg( 'tooltip-compareselectedversions' ).' ['.wfMsg( 'accesskey-compareselectedversions' ).']',
'value' => wfMsg( 'compareselectedversions' ),
) ) )
: '';
@@ -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,58 @@ 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' );
}
if( $wgUser->isAllowed( 'rollback' ) && $latest ) {
$s .= ' '.$this->mSkin->generateRollback( $rev );
}
+
+ wfRunHooks( 'PageHistoryLineEnding', array( &$row , &$s ) );
+
$s .= "</li>\n";
return $s;
@@ -332,7 +358,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 +375,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 +391,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 +416,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 +522,9 @@ class PageHistory {
}
+/**
+ * @addtogroup Pager
+ */
class PageHistoryPager extends ReverseChronologicalPager {
public $mLastRow = false, $mPageHistory;
@@ -508,8 +536,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' )
);