class Block {
/* public*/ var $mAddress, $mUser, $mBy, $mReason, $mTimestamp, $mAuto, $mId, $mExpiry,
$mRangeStart, $mRangeEnd, $mAnonOnly, $mEnableAutoblock, $mHideName,
- $mBlockEmail, $mByName, $mAngryAutoblock;
+ $mBlockEmail, $mByName, $mAngryAutoblock, $mAllowUsertalk;
/* private */ var $mNetworkBits, $mIntegerAddr, $mForUpdate, $mFromMaster;
const EB_KEEP_EXPIRED = 1;
function __construct( $address = '', $user = 0, $by = 0, $reason = '',
$timestamp = '' , $auto = 0, $expiry = '', $anonOnly = 0, $createAccount = 0, $enableAutoblock = 0,
- $hideName = 0, $blockEmail = 0 )
+ $hideName = 0, $blockEmail = 0, $allowUsertalk = 0 )
{
$this->mId = 0;
# Expand valid IPv6 addresses
$this->mEnableAutoblock = $enableAutoblock;
$this->mHideName = $hideName;
$this->mBlockEmail = $blockEmail;
+ $this->mAllowUsertalk = $allowUsertalk;
$this->mForUpdate = false;
$this->mFromMaster = false;
$this->mByName = false;
* @param $killExpired bool Delete expired blocks on load
*/
static function newFromDB( $address, $user = 0, $killExpired = true ) {
- $block = new Block();
+ $block = new Block;
$block->load( $address, $user, $killExpired );
if ( $block->isValid() ) {
return $block;
$dbr = wfGetDB( DB_SLAVE );
$res = $dbr->resultObject( $dbr->select( 'ipblocks', '*',
array( 'ipb_id' => $id ), __METHOD__ ) );
- $block = new Block();
+ $block = new Block;
if ( $block->loadFromResult( $res ) ) {
return $block;
} else {
$this->mAddress = $this->mReason = $this->mTimestamp = '';
$this->mId = $this->mAnonOnly = $this->mCreateAccount =
$this->mEnableAutoblock = $this->mAuto = $this->mUser =
- $this->mBy = $this->mHideName = $this->mBlockEmail = 0;
+ $this->mBy = $this->mHideName = $this->mBlockEmail = $this->mAllowUsertalk = 0;
$this->mByName = false;
}
if ( $user && $this->mAnonOnly ) {
# Block is marked anon-only
# Whitelist this IP address against autoblocks and range blocks
+ # (but not account creation blocks -- bug 13611)
if( !$this->mCreateAccount ) {
- $this->clear(); // bug 13611 - keep this data
+ $this->clear();
}
return false;
} else {
# Try range block
if ( $this->loadRange( $address, $killExpired, $user ) ) {
if ( $user && $this->mAnonOnly ) {
+ # Respect account creation blocks on logged-in users -- bug 13611
if( !$this->mCreateAccount ) {
- $this->clear(); // bug 13611 - keep this data
+ $this->clear();
}
return false;
} else {
$this->mCreateAccount = $row->ipb_create_account;
$this->mEnableAutoblock = $row->ipb_enable_autoblock;
$this->mBlockEmail = $row->ipb_block_email;
+ $this->mAllowUsertalk = $row->ipb_allow_usertalk;
$this->mHideName = $row->ipb_deleted;
$this->mId = $row->ipb_id;
$this->mExpiry = self::decodeExpiry( $row->ipb_expiry );
/*static*/ function enumBlocks( $callback, $tag, $flags = 0 ) {
global $wgAntiLockFlags;
- $block = new Block();
+ $block = new Block;
if ( $flags & Block::EB_FOR_UPDATE ) {
$db = wfGetDB( DB_MASTER );
if ( $wgAntiLockFlags & ALF_NO_BLOCK_LOCK ) {
'ipb_range_start' => $this->mRangeStart,
'ipb_range_end' => $this->mRangeEnd,
'ipb_deleted' => $this->mHideName,
- 'ipb_block_email' => $this->mBlockEmail
+ 'ipb_block_email' => $this->mBlockEmail,
+ 'ipb_allow_usertalk' => $this->mAllowUsertalk
), 'Block::insert', array( 'IGNORE' )
);
$affected = $dbw->affectedRows();
'ipb_range_start' => $this->mRangeStart,
'ipb_range_end' => $this->mRangeEnd,
'ipb_deleted' => $this->mHideName,
- 'ipb_block_email' => $this->mBlockEmail ),
+ 'ipb_block_email' => $this->mBlockEmail,
+ 'ipb_allow_usertalk' => $this->mAllowUsertalk ),
array( 'ipb_id' => $this->mId ),
'Block::update' );