*/
class UndeleteForm {
var $mAction, $mTarget, $mTimestamp, $mRestore, $mInvert, $mTargetObj;
- var $mTargetTimestamp, $mAllowed, $mComment, $mToken;
+ var $mTargetTimestamp, $mAllowed, $mCanView, $mComment, $mToken;
function UndeleteForm( $request, $par = "" ) {
global $wgUser;
if( $par != "" ) {
$this->mTarget = $par;
}
- if ( $wgUser->isAllowed( 'undelete' ) && !$wgUser->isBlocked() ) {
- $this->mAllowed = true;
- } else {
+ if ( $wgUser->isAllowed( 'deletedcontent' ) && $wgUser->isAllowed( 'undelete' ) && !$wgUser->isBlocked() ) {
+ $this->mAllowed = true; // user can restore
+ $this->mCanView = true; // user can view content
+ } elseif ( $wgUser->isAllowed( 'deletedcontent' ) ) {
+ $this->mAllowed = false; // user cannot restore
+ $this->mCanView = true; // user can view content
+ } else { // user can only view the list of revisions
$this->mAllowed = false;
+ $this->mCanView = false;
$this->mTimestamp = '';
$this->mRestore = false;
}
array( 'page' => $this->mTargetObj->getArticleId() ) );
$stxt = '';
$ts = wfTimestamp( TS_MW, $row->ar_timestamp );
+ // Build checkboxen...
if( $this->mAllowed ) {
- if( $this->mInvert){
+ if( $this->mInvert ) {
if( in_array( $ts, $this->mTargetTimestamp ) ) {
$checkBox = Xml::check( "ts$ts");
} else {
} else {
$checkBox = Xml::check( "ts$ts" );
}
+ } else {
+ $checkBox = '';
+ }
+ // Build page & diff links...
+ if( $this->mCanView ) {
$titleObj = SpecialPage::getTitleFor( "Undelete" );
- $pageLink = $this->getPageLink( $rev, $titleObj, $ts, $sk );
# Last link
if( !$rev->userCan( Revision::DELETED_TEXT ) ) {
+ $pageLink = htmlspecialchars( $wgLang->timeanddate( $ts, true ) );
$last = wfMsgHtml('diff');
} else if( $remaining > 0 || ($earliestLiveTime && $ts > $earliestLiveTime) ) {
+ $pageLink = $this->getPageLink( $rev, $titleObj, $ts, $sk );
$last = $sk->linkKnown(
$titleObj,
wfMsgHtml('diff'),
)
);
} else {
+ $pageLink = $this->getPageLink( $rev, $titleObj, $ts, $sk );
$last = wfMsgHtml('diff');
}
} else {
- $checkBox = '';
$pageLink = htmlspecialchars( $wgLang->timeanddate( $ts, true ) );
$last = wfMsgHtml('diff');
}
+ // User links
$userLink = $sk->revUserTools( $rev );
-
- if(!is_null($size = $row->ar_len)) {
+ // Revision text size
+ if( !is_null($size = $row->ar_len) ) {
$stxt = $sk->formatRevisionSize( $size );
}
+ // Edit summary
$comment = $sk->revComment( $rev );
- $revdlink = '';
+ // Show/hide link
if( $wgUser->isAllowed( 'deleterevision' ) ) {
if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
// If revision was hidden from sysops
);
$revdlink = $sk->revDeleteLink( $query, $rev->isDeleted( Revision::DELETED_RESTRICTED ) );
}
+ } else {
+ $revdlink = '';
}
-
return "<li>$checkBox $revdlink ($last) $pageLink . . $userLink $stxt $comment</li>";
}