$this->flags = $flags;
}
- /**
- * Deprecated alias for getTitle(); do not use.
- *
- * @deprecated since 1.20; use getTitle() instead.
- * @return Title
- */
- public function getDisplayTitle() {
- wfDeprecated( __METHOD__, '1.20' );
- return $this->getTitle();
- }
-
/**
* Show options for the log list
*
'user',
'mw-log-user',
15,
- $user
+ $user,
+ array( 'class' => 'mw-autocomplete-user' )
);
return '<span style="white-space: nowrap">' . $label . '</span>';
// Don't show useless checkbox to people who cannot hide log entries
if ( $user->isAllowed( 'deletedhistory' ) ) {
$canHide = $user->isAllowed( 'deletelogentry' );
+ $canViewSuppressedOnly = $user->isAllowed( 'viewsuppressed' ) &&
+ !$user->isAllowed( 'suppressrevision' );
+ $entryIsSuppressed = self::isDeleted( $row, LogPage::DELETED_RESTRICTED );
+ $canViewThisSuppressedEntry = $canViewSuppressedOnly && $entryIsSuppressed;
if ( $row->log_deleted || $canHide ) {
// Show checkboxes instead of links.
- if ( $canHide && $this->flags & self::USE_REVDEL_CHECKBOXES ) {
+ if ( $canHide && $this->flags & self::USE_REVDEL_CHECKBOXES && !$canViewThisSuppressedEntry ) {
// If event was hidden from sysops
if ( !self::userCan( $row, LogPage::DELETED_RESTRICTED, $user ) ) {
$del = Xml::check( 'deleterevisions', false, array( 'disabled' => 'disabled' ) );
);
$del = Linker::revDeleteLink(
$query,
- self::isDeleted( $row, LogPage::DELETED_RESTRICTED ),
- $canHide
+ $entryIsSuppressed,
+ $canHide && !$canViewThisSuppressedEntry
);
}
}
*/
public static function userCanBitfield( $bitfield, $field, User $user = null ) {
if ( $bitfield & $field ) {
- if ( $bitfield & LogPage::DELETED_RESTRICTED ) {
- $permission = 'suppressrevision';
- } else {
- $permission = 'deletedhistory';
- }
- wfDebug( "Checking for $permission due to $field match on $bitfield\n" );
if ( $user === null ) {
global $wgUser;
$user = $wgUser;
}
-
- return $user->isAllowed( $permission );
+ if ( $bitfield & LogPage::DELETED_RESTRICTED ) {
+ $permissions = array( 'suppressrevision', 'viewsuppressed' );
+ } else {
+ $permissions = array( 'deletedhistory' );
+ }
+ $permissionlist = implode( ', ', $permissions );
+ wfDebug( "Checking for $permissionlist due to $field match on $bitfield\n" );
+ return call_user_func_array( array( $user, 'isAllowedAny' ), $permissions );
}
-
return true;
}
$pager->mLimit = $lim;
}
- $logBody = $pager->getBody();
+ $logBody = null;
+ // Check if we can avoid the DB query all together
+ if ( $page !== '' && !$param['useMaster'] ) {
+ $title = ( $page instanceof Title ) ? $page : Title::newFromText( $page );
+ if ( $title ) {
+ $member = $title->getNamespace() . ':' . $title->getDBkey();
+ if ( !BloomCache::get( 'main' )->check( wfWikiId(), 'TitleHasLogs', $member ) ) {
+ $logBody = '';
+ }
+ } else {
+ $logBody = '';
+ }
+ }
+
+ // Fetch the log rows and build the HTML if needed
+ $logBody = ( $logBody === null ) ? $pager->getBody() : $logBody;
+
$s = '';
if ( $logBody ) {