return self::$accesskeycache[$name] = $accesskey;
}
+ /**
+ * Get a revision-deletion link, or disabled link, or nothing, depending
+ * on user permissions & the settings on the revision.
+ *
+ * Will use forward-compatible revision ID in the Special:RevDelete link
+ * if possible, otherwise the timestamp-based ID which may break after
+ * undeletion.
+ *
+ * @param User $user
+ * @param Revision $rev
+ * @param Revision $title
+ * @return string HTML fragment
+ */
+ public static function getRevDeleteLink( User $user, Revision $rev, Title $title ) {
+ $canHide = $user->isAllowed( 'deleterevision' );
+ if ( $canHide || ( $rev->getVisibility() && $user->isAllowed( 'deletedhistory' ) ) ) {
+ if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
+ $revdlink = Linker::revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops
+ } else {
+ if ( $rev->getId() ) {
+ // RevDelete links using revision ID are stable across
+ // page deletion and undeletion; use when possible.
+ $query = array(
+ 'type' => 'revision',
+ 'target' => $title->getPrefixedDBkey(),
+ 'ids' => $rev->getId()
+ );
+ } else {
+ // Older deleted entries didn't save a revision ID.
+ // We have to refer to these by timestamp, ick!
+ $query = array(
+ 'type' => 'archive',
+ 'target' => $title->getPrefixedDBkey(),
+ 'ids' => $rev->getTimestamp()
+ );
+ }
+ return Linker::revDeleteLink( $query,
+ $rev->isDeleted( File::DELETED_RESTRICTED ), $canHide );
+ }
+ } else {
+ return '';
+ }
+ }
+
/**
* Creates a (show/hide) link for deleting revisions/log entries
*
return call_user_func_array( array( 'Linker', $fname ), $args );
}
}
-
}
// Revision delete link
- $canHide = $wgUser->isAllowed( 'deleterevision' );
- if( $canHide || ($rev->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) {
- if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
- $del = $this->mSkin->revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops
- } else {
- $query = array(
- 'type' => 'archive',
- 'target' => $page->getPrefixedDbkey(),
- 'ids' => $rev->getTimestamp() );
- $del = $this->mSkin->revDeleteLink( $query,
- $rev->isDeleted( Revision::DELETED_RESTRICTED ), $canHide ) . ' ';
- }
- } else {
- $del = '';
- }
+ $del = Linker::getRevDeleteLink( $wgUser, $rev, $page );
+ if ( $del ) $del .= ' ';
$tools = Html::rawElement(
'span',
// Revision delete links
if ( !$this->mDiff ) {
- $revdel = $this->revDeleteLink( $rev );
+ $revdel = Linker::getRevDeleteLink( $this->getUser(), $rev, $this->mTargetObj );
if ( $revdel ) {
- $out->addHTML( $revdel );
+ $out->addHTML( "$revdel " );
}
}
Xml::closeElement( 'div' ) );
}
- /**
- * Get a revision-deletion link, or disabled link, or nothing, depending
- * on user permissions & the settings on the revision.
- *
- * Will use forward-compatible revision ID in the Special:RevDelete link
- * if possible, otherwise the timestamp-based ID which may break after
- * undeletion.
- *
- * @param Revision $rev
- * @return string HTML fragment
- */
- function revDeleteLink( $rev ) {
- $canHide = $this->getUser()->isAllowed( 'deleterevision' );
- if( $canHide || ( $rev->getVisibility() && $this->getUser()->isAllowed( 'deletedhistory' ) ) ) {
- if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
- $revdlink = Linker::revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops
- } else {
- if ( $rev->getId() ) {
- // RevDelete links using revision ID are stable across
- // page deletion and undeletion; use when possible.
- $query = array(
- 'type' => 'revision',
- 'target' => $this->mTargetObj->getPrefixedDBkey(),
- 'ids' => $rev->getId()
- );
- } else {
- // Older deleted entries didn't save a revision ID.
- // We have to refer to these by timestamp, ick!
- $query = array(
- 'type' => 'archive',
- 'target' => $this->mTargetObj->getPrefixedDBkey(),
- 'ids' => $rev->getTimestamp()
- );
- }
- return Linker::revDeleteLink( $query,
- $rev->isDeleted( File::DELETED_RESTRICTED ), $canHide );
- }
- } else {
- return '';
- }
- }
-
/**
* Build a diff display between this and the previous either deleted
* or non-deleted edit.
$targetQuery = array( 'oldid' => $rev->getId() );
}
// Add show/hide deletion links if available
- $del = $this->revDeleteLink( $rev );
+ $rdel = Linker::getRevDeleteLink( $this->getUser(), $rev, $this->mTargetObj );
+ if ( $rdel ) $rdel = " $rdel";
return
'<div id="mw-diff-' . $prefix . 'title1"><strong>' .
Linker::link(
Linker::revUserTools( $rev ) . '<br />' .
'</div>' .
'<div id="mw-diff-'.$prefix.'title3">' .
- Linker::revComment( $rev ) . $del . '<br />' .
+ Linker::revComment( $rev ) . $rdel . '<br />' .
'</div>';
}
// Edit summary
$comment = Linker::revComment( $rev );
// Revision delete links
- $revdlink = $this->revDeleteLink( $rev );
+ $revdlink = Linker::getRevDeleteLink( $this->getUser(), $rev, $this->mTargetObj );
return "<li>$checkBox $revdlink ($last) $pageLink . . $userLink $stxt $comment</li>";
}
')';
$data = htmlspecialchars( $data );
$comment = $this->getFileComment( $file );
+
// Add show/hide deletion links if available
$canHide = $this->getUser()->isAllowed( 'deleterevision' );
if( $canHide || ( $file->getVisibility() && $this->getUser()->isAllowed( 'deletedhistory' ) ) ) {
} else {
$revdlink = '';
}
+
return "<li>$checkBox $revdlink $pageLink . . $userLink $data $comment</li>\n";
}