* @return bool
*/
public static function userCan( $rc, $field ) {
- if( $rc->mAttribs['rc_deleted'] & $field ) {
- global $wgUser;
- $permission = '';
- if ( $rc->mAttribs['rc_deleted'] & Revision::DELETED_RESTRICTED ) {
- $permission = 'suppressrevision';
- } elseif ( $field & Revision::DELETED_TEXT ) {
- $permission = 'deletedtext';
- } else {
- $permission = 'deletedhistory';
- }
- wfDebug( "Checking for $permission due to $field match on {$rc->mAttribs['rc_deleted']}\n" );
- return $wgUser->isAllowed( $permission );
+ if( $rc->mAttribs['rc_type'] == RC_LOG ) {
+ return LogEventsList::userCanBitfield( $rc->mAttribs['rc_deleted'], $field );
} else {
- return true;
+ return Revision::userCanBitfield( $rc->mAttribs['rc_deleted'], $field );
}
}
* @return Boolean
*/
public static function userCan( $row, $field ) {
- if( $row->log_deleted & $field ) {
+ return self::userCanBitfield( $row->log_deleted, $field );
+ }
+
+ /**
+ * Determine if the current user is allowed to view a particular
+ * field of this log row, if it's marked as deleted.
+ * @param $bitfield Integer (current field)
+ * @param $field Integer
+ * @return Boolean
+ */
+ public static function userCanBitfield( $bitfield, $field ) {
+ if( $bitfield & $field ) {
global $wgUser;
$permission = '';
- if ( $row->log_deleted & LogPage::DELETED_RESTRICTED ) {
+ if ( $bitfield & LogPage::DELETED_RESTRICTED ) {
$permission = 'suppressrevision';
} else {
$permission = 'deletedhistory';
}
- wfDebug( "Checking for $permission due to $field match on $row->log_deleted\n" );
+ wfDebug( "Checking for $permission due to $field match on $bitfield\n" );
return $wgUser->isAllowed( $permission );
} else {
return true;
* @return bool
*/
public function userCan( $field ) {
- if( $this->mDeleted & $field ) {
+ return self::userCanBitfield( $this->mDeleted, $field );
+ }
+
+ /**
+ * Determine if the current user is allowed to view a particular
+ * field of this revision, if it's marked as deleted. This is used
+ * by various classes to avoid duplication.
+ * @param int $bitfield (current field)
+ * @param int $field one of self::DELETED_TEXT = File::DELETED_FILE,
+ * self::DELETED_COMMENT = File::DELETED_COMMENT,
+ * self::DELETED_USER = File::DELETED_USER
+ * @return bool
+ */
+ public static function userCanBitfield( $bitfield, $field ) {
+ if( $bitfield & $field ) { // aspect is deleted
global $wgUser;
$permission = '';
- if ( $this->mDeleted & self::DELETED_RESTRICTED ) {
+ if ( $bitfield & self::DELETED_RESTRICTED ) {
$permission = 'suppressrevision';
} elseif ( $field & self::DELETED_TEXT ) {
$permission = 'deletedtext';
} else {
$permission = 'deletedhistory';
}
- wfDebug( "Checking for $permission due to $field match on $this->mDeleted\n" );
+ wfDebug( "Checking for $permission due to $field match on $bitfield\n" );
return $wgUser->isAllowed( $permission );
} else {
return true;
}
}
-
/**
* Get rev_timestamp from rev_id, without loading the rest of the row
* @param Title $title
*/
public function userCan( $field ) {
$this->load();
- if( $this->deleted & $field ) {
- global $wgUser;
- $permission = '';
- if ( $this->deleted & File::DELETED_RESTRICTED ) {
- $permission = 'suppressrevision';
- } elseif ( $field & File::DELETED_FILE ) {
- $permission = 'deletedtext';
- } else {
- $permission = 'deletedhistory';
- }
- wfDebug( "Checking for $permission due to $field match on $this->deleted\n" );
- return $wgUser->isAllowed( $permission );
- } else {
- return true;
- }
+ return Revision::userCanBitfield( $this->deleted, $field );
}
}
*/
function userCan( $field ) {
$this->load();
- if( isset($this->deleted) && ($this->deleted & $field) ) {
- global $wgUser;
- $permission = '';
- if ( $this->deleted & File::DELETED_RESTRICTED ) {
- $permission = 'suppressrevision';
- } elseif ( $field & File::DELETED_FILE ) {
- $permission = 'deletedtext';
- } else {
- $permission = 'deletedhistory';
- }
- wfDebug( "Checking for $permission due to $field match on $this->mDeleted\n" );
- return $wgUser->isAllowed( $permission );
- } else {
- return true;
- }
+ return Revision::userCanBitfield( $this->deleted, $field );
}
}
$qc = array( 'ls_field' => 'target_author_id', 'ls_value' => $offender->getId() );
} else if( $offender && IP::isIPAddress( $offender->getName() ) ) {
$qc = array( 'ls_field' => 'target_author_ip', 'ls_value' => $offender->getName() );
+ } else {
+ $qc = array( "1 = 0" ); // empty
}
}
# Create a LogPager item to get the results and a LogEventsList item to format them...