] );
if ( $shouldSetCookie ) {
$block->setCookie( $this->getRequest()->response() );
-
- // temporary measure the use of cookies on ip blocks
- $stats = MediaWikiServices::getInstance()->getStatsdDataFactory();
- $stats->increment( 'block.ipblock.setCookie.success' );
}
} elseif ( $this->isLoggedIn() && $config->get( 'CookieSetOnAutoblock' ) ) {
$shouldSetCookie = $block->getType() === Block::TYPE_USER && $block->isAutoblocking();
* Check when actually saving should be done against master.
*/
private function getBlockedStatus( $bFromReplica = true ) {
- global $wgProxyWhitelist, $wgUser, $wgApplyIpBlocksToXff, $wgSoftBlockRanges;
+ global $wgProxyWhitelist, $wgApplyIpBlocksToXff, $wgSoftBlockRanges;
if ( $this->mBlockedby != -1 ) {
return;
# user is not immune to autoblocks/hardblocks, and they are the current user so we
# know which IP address they're actually coming from
$ip = null;
- if ( !$this->isAllowed( 'ipblock-exempt' ) ) {
- // $wgUser->getName() only works after the end of Setup.php. Until
- // then, assume it's a logged-out user.
- $globalUserName = $wgUser->isSafeToLoad()
- ? $wgUser->getName()
- : IP::sanitizeIP( $wgUser->getRequest()->getIP() );
- if ( $this->getName() === $globalUserName ) {
- $ip = $this->getRequest()->getIP();
- }
+ $sessionUser = RequestContext::getMain()->getUser();
+ // the session user is set up towards the end of Setup.php. Until then,
+ // assume it's a logged-out user.
+ $globalUserName = $sessionUser->isSafeToLoad()
+ ? $sessionUser->getName()
+ : IP::sanitizeIP( $sessionUser->getRequest()->getIP() );
+ if ( $this->getName() === $globalUserName && !$this->isAllowed( 'ipblock-exempt' ) ) {
+ $ip = $this->getRequest()->getIP();
}
// User/IP blocking
}
// Avoid PHP 7.1 warning of passing $this by reference
- $user = $this;
+ $thisUser = $this;
// Extensions
- Hooks::run( 'GetBlockedStatus', [ &$user ] );
+ Hooks::run( 'GetBlockedStatus', [ &$thisUser ] );
}
/**
/**
* Generate a current or new-future timestamp to be stored in the
* user_touched field when we update things.
+ *
* @return string Timestamp in TS_MW format
*/
private function newTouchedTimestamp() {
- global $wgClockSkewFudge;
-
- $time = wfTimestamp( TS_MW, time() + $wgClockSkewFudge );
- if ( $this->mTouched && $time <= $this->mTouched ) {
- $time = wfTimestamp( TS_MW, wfTimestamp( TS_UNIX, $this->mTouched ) + 1 );
+ $time = time();
+ if ( $this->mTouched ) {
+ $time = max( $time, wfTimestamp( TS_UNIX, $this->mTouched ) + 1 );
}
- return $time;
+ return wfTimestamp( TS_MW, $time );
}
/**