* Use Linker::getRevDeleteLink() where possible to remove code duplication
* Pass the User object to Revision::userCan() in Linker::getRevDeleteLink() * Return the result Linker::revDeleteLinkDisabled() in Linker::getRevDeleteLink() instead of storing it in a variable that will not be used
This commit is contained in:
parent
2c83ec33e4
commit
585141ece9
4 changed files with 32 additions and 74 deletions
|
|
@ -1147,21 +1147,8 @@ class Article extends Page {
|
|||
array( 'known', 'noclasses' )
|
||||
);
|
||||
|
||||
$cdel = '';
|
||||
|
||||
// User can delete revisions or view deleted revisions...
|
||||
$canHide = $wgUser->isAllowed( 'deleterevision' );
|
||||
if ( $canHide || ( $revision->getVisibility() && $wgUser->isAllowed( 'deletedhistory' ) ) ) {
|
||||
if ( !$revision->userCan( Revision::DELETED_RESTRICTED ) ) {
|
||||
$cdel = Linker::revDeleteLinkDisabled( $canHide ); // rev was hidden from Sysops
|
||||
} else {
|
||||
$query = array(
|
||||
'type' => 'revision',
|
||||
'target' => $this->getTitle()->getPrefixedDbkey(),
|
||||
'ids' => $oldid
|
||||
);
|
||||
$cdel = Linker::revDeleteLink( $query, $revision->isDeleted( File::DELETED_RESTRICTED ), $canHide );
|
||||
}
|
||||
$cdel = Linker::getRevDeleteLink( $wgUser, $revision, $this->getTitle() );
|
||||
if ( $cdel !== '' ) {
|
||||
$cdel .= ' ';
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1803,32 +1803,33 @@ class Linker {
|
|||
*/
|
||||
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 );
|
||||
}
|
||||
if ( !$canHide && !( $rev->getVisibility() && $user->isAllowed( 'deletedhistory' ) ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
if ( !$rev->userCan( Revision::DELETED_RESTRICTED, $user ) ) {
|
||||
return 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( Revision::DELETED_RESTRICTED ), $canHide );
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -462,24 +462,8 @@ class DifferenceEngine extends ContextSource {
|
|||
* @return String
|
||||
*/
|
||||
protected function revisionDeleteLink( $rev ) {
|
||||
$link = '';
|
||||
$user = $this->getUser();
|
||||
$canHide = $user->isAllowed( 'deleterevision' );
|
||||
// Show del/undel link if:
|
||||
// (a) the user can delete revisions, or
|
||||
// (b) the user can view deleted revision *and* this one is deleted
|
||||
if ( $canHide || ( $rev->getVisibility() && $user->isAllowed( 'deletedhistory' ) ) ) {
|
||||
if ( !$rev->userCan( Revision::DELETED_RESTRICTED, $user ) ) {
|
||||
$link = Linker::revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops
|
||||
} else {
|
||||
$query = array(
|
||||
'type' => 'revision',
|
||||
'target' => $rev->getTitle()->getPrefixedDBkey(),
|
||||
'ids' => $rev->getId()
|
||||
);
|
||||
$link = Linker::revDeleteLink( $query,
|
||||
$rev->isDeleted( Revision::DELETED_RESTRICTED ), $canHide );
|
||||
}
|
||||
$link = Linker::getRevDeleteLink( $this->getUser(), $rev, $rev->getTitle() );
|
||||
if ( $link !== '' ) {
|
||||
$link = '   ' . $link . ' ';
|
||||
}
|
||||
return $link;
|
||||
|
|
|
|||
|
|
@ -833,23 +833,9 @@ class ContribsPager extends ReverseChronologicalPager {
|
|||
$mflag = '';
|
||||
}
|
||||
|
||||
// Don't show useless link to people who cannot hide revisions
|
||||
$canHide = $user->isAllowed( 'deleterevision' );
|
||||
if ( $canHide || ( $rev->getVisibility() && $user->isAllowed( 'deletedhistory' ) ) ) {
|
||||
if ( !$rev->userCan( Revision::DELETED_RESTRICTED, $user ) ) {
|
||||
$del = Linker::revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops
|
||||
} else {
|
||||
$query = array(
|
||||
'type' => 'revision',
|
||||
'target' => $page->getPrefixedDbkey(),
|
||||
'ids' => $rev->getId()
|
||||
);
|
||||
$del = Linker::revDeleteLink( $query,
|
||||
$rev->isDeleted( Revision::DELETED_RESTRICTED ), $canHide );
|
||||
}
|
||||
$del = Linker::getRevDeleteLink( $user, $rev, $page );
|
||||
if ( $del !== '' ) {
|
||||
$del .= ' ';
|
||||
} else {
|
||||
$del = '';
|
||||
}
|
||||
|
||||
$diffHistLinks = '(' . $difftext . $this->messages['pipe-separator'] . $histlink . ')';
|
||||
|
|
|
|||
Loading…
Reference in a new issue