function __construct( $target, $namespace = false ) {
parent::__construct();
- foreach( explode( ' ', 'deletionlog undeletebtn minoreditletter diff' ) as $msg ) {
+ foreach( explode( ' ', 'deletionlog undeleteviewlink diff' ) as $msg ) {
$this->messages[$msg] = wfMsgExt( $msg, array( 'escape') );
}
$this->target = $target;
list( $index, $userCond ) = $this->getUserCond();
$conds = array_merge( $userCond, $this->getNamespaceCond() );
// Paranoia: avoid brute force searches (bug 17792)
- if( !$wgUser->isAllowed( 'suppressrevision' ) ) {
- $conds[] = $this->mDb->bitAnd('ar_deleted', Revision::DELETED_USER) . ' = 0';
+ if( !$wgUser->isAllowed( 'deleterevision' ) ) {
+ $conds[] = $this->mDb->bitAnd('ar_deleted',Revision::DELETED_USER) . ' = 0';
+ } else if( !$wgUser->isAllowed( 'suppressrevision' ) ) {
+ $conds[] = $this->mDb->bitAnd('ar_deleted',Revision::SUPPRESSED_USER) .
+ ' != ' . Revision::SUPPRESSED_USER;
}
return array(
'tables' => array( 'archive' ),
$reviewlink = $sk->linkKnown(
SpecialPage::getTitleFor( 'Undelete', $page->getPrefixedDBkey() ),
- $this->messages['undeletebtn']
+ $this->messages['undeleteviewlink']
);
- $link = $sk->linkKnown(
- $undelete,
- htmlspecialchars( $page->getPrefixedText() ),
- array(),
- array(
- 'target' => $page->getPrefixedText(),
- 'timestamp' => $rev->getTimestamp()
- )
- );
-
- $last = $sk->linkKnown(
- $undelete,
- $this->messages['diff'],
- array(),
- array(
- 'target' => $page->getPrefixedText(),
- 'timestamp' => $rev->getTimestamp(),
- 'diff' => 'prev'
- )
- );
+ if( $wgUser->isAllowed('undelete') ) {
+ $last = $sk->linkKnown(
+ $undelete,
+ $this->messages['diff'],
+ array(),
+ array(
+ 'target' => $page->getPrefixedText(),
+ 'timestamp' => $rev->getTimestamp(),
+ 'diff' => 'prev'
+ )
+ );
+ } else {
+ $last = $this->messages['diff'];
+ }
$comment = $sk->revComment( $rev );
- $d = htmlspecialchars( $wgLang->timeanddate( $rev->getTimestamp(), true ) );
+ $date = htmlspecialchars( $wgLang->timeanddate( $rev->getTimestamp(), true ) );
- if( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
- $d = '<span class="history-deleted">' . $d . '</span>';
+ if( !$wgUser->isAllowed('undelete') || !$rev->userCan(Revision::DELETED_TEXT) ) {
+ $link = $date; // unusable link
} else {
$link = $sk->linkKnown(
$undelete,
- $d,
+ $date,
array(),
array(
'target' => $page->getPrefixedText(),
)
);
}
+ // Style deleted items
+ if( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
+ $link = '<span class="history-deleted">' . $link . '</span>';
+ }
$pagelink = $sk->link( $page );
if( $rev->isMinor() ) {
- $mflag = '<abbr class="minor">' . $this->messages['minoreditletter'] . '</abbr> ';
+ $mflag = ChangesList::flag( 'minor' );
} else {
$mflag = '';
}