- /**
- * 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 ) {
- global $wgUser;
- $canHide = $wgUser->isAllowed( 'deleterevision' );
- if( $canHide || ( $rev->getVisibility() && $wgUser->isAllowed( 'deletedhistory' ) ) ) {
- $skin = $wgUser->getSkin();
- if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
- $revdlink = $skin->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 $skin->revDeleteLink( $query,
- $rev->isDeleted( File::DELETED_RESTRICTED ), $canHide );
- }
- } else {
- return '';
- }
- }
-