if( !$db ){
$db = wfGetDB( DB_SLAVE );
}
+ $this->mExpiry = $db->encodeExpiry( $this->mExpiry );
$a = array(
'ipb_address' => (string)$this->target,
'ipb_anon_only' => !$this->isHardblock(),
'ipb_create_account' => $this->prevents( 'createaccount' ),
'ipb_enable_autoblock' => $this->isAutoblocking(),
- 'ipb_expiry' => $db->encodeExpiry( $this->mExpiry ),
+ 'ipb_expiry' => $this->mExpiry,
'ipb_range_start' => $this->getRangeStart(),
'ipb_range_end' => $this->getRangeEnd(),
'ipb_deleted' => intval( $this->mHideName ), // typecast required for SQLite
* Autoblocks the given IP, referring to this Block.
*
* @param $autoblockIP String: the IP to autoblock.
- * @param $justInserted Boolean: the main block was just inserted.
* @return mixed: block ID if an autoblock was inserted, false if not.
*/
- public function doAutoblock( $autoblockIP, $justInserted = false ) {
+ public function doAutoblock( $autoblockIP ) {
# If autoblocks are disabled, go away.
if ( !$this->isAutoblocking() ) {
return false;
# If the user is already blocked. Then check if the autoblock would
# exceed the user block. If it would exceed, then do nothing, else
# prolong block time
- if ( $this->mExpiry &&
- ( $this->mExpiry < Block::getAutoblockExpiry( $ipblock->mTimestamp ) )
+ if ( $this->mExpiry > Block::getAutoblockExpiry( $ipblock->mTimestamp )
) {
- return false;
- }
-
- # Just update the timestamp
- if ( !$justInserted ) {
+ # If the block is an autoblock, reset its timestamp to now and its expiry
+ # to an $wgAutoblockExpiry in the future; otherwise do nothing
$ipblock->updateTimestamp();
}
-
return false;
- } else {
- $ipblock = new Block;
+
}
# Make a new block object with the desired properties
+ $autoblock = new Block;
wfDebug( "Autoblocking {$this->getTarget()}@" . $autoblockIP . "\n" );
- $ipblock->setTarget( $autoblockIP );
- $ipblock->setBlocker( $this->getBlocker() );
- $ipblock->mReason = wfMsgForContent( 'autoblocker', $this->getTarget(), $this->mReason );
- $ipblock->mTimestamp = wfTimestampNow();
- $ipblock->mAuto = 1;
- $ipblock->mCreateAccount = $this->mCreateAccount;
+ $autoblock->setTarget( $autoblockIP );
+ $autoblock->setBlocker( $this->getBlocker() );
+ $autoblock->mReason = wfMsgForContent( 'autoblocker', $this->getTarget(), $this->mReason );
+ $autoblock->mTimestamp = wfTimestampNow();
+ $autoblock->mAuto = 1;
+ $autoblock->prevents( 'createaccount', $this->prevents( 'createaccount' ) );
# Continue suppressing the name if needed
- $ipblock->mHideName = $this->mHideName;
- $ipblock->mDisableUsertalk = $this->mDisableUsertalk;
+ $autoblock->mHideName = $this->mHideName;
+ $autoblock->prevents( 'editownusertalk', $this->prevents( 'editownusertalk' ) );
- # If the user is already blocked with an expiry date, we don't
- # want to pile on top of that!
- if ( $this->mExpiry ) {
- $ipblock->mExpiry = min( $this->mExpiry, Block::getAutoblockExpiry( $this->mTimestamp ) );
+ $dbr = wfGetDB( DB_READ );
+ if ( $this->mTimestamp == $dbr->getInfinity() ) {
+ # Original block was indefinite, start an autoblock now
+ $autoblock->mExpiry = Block::getAutoblockExpiry( wfTimestampNow() );
} else {
- $ipblock->mExpiry = Block::getAutoblockExpiry( $this->mTimestamp );
+ # If the user is already blocked with an expiry date, we don't
+ # want to pile on top of that.
+ $autoblock->mExpiry = min( $this->mExpiry, Block::getAutoblockExpiry( wfTimestampNow() ) );
}
# Insert it
- $status = $ipblock->insert();
- return $status ? $status['id'] : false;
+ $status = $autoblock->insert();
+ return $status
+ ? $status['id']
+ : false;
}
/**
*/
public function getRedactedName() {
if ( $this->mAuto ) {
- return HTML::rawElement(
+ return Html::rawElement(
'span',
array( 'class' => 'mw-autoblockid' ),
wfMessage( 'autoblockid', $this->mId )