X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FBlock.php;h=8663d0328cd75201adccd38e497162e4763fb442;hb=81518f218a4610db96670e1bedff874c65dfec81;hp=098d51c808dac4e17427bf8ddd761c7ed19bf97d;hpb=10a6bcae26b33c4d7f45c126624c9fc9c5d29b98;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/Block.php b/includes/Block.php index 098d51c808..8663d0328c 100644 --- a/includes/Block.php +++ b/includes/Block.php @@ -692,11 +692,13 @@ class Block { public static function isWhitelistedFromAutoblocks( $ip ) { // Try to get the autoblock_whitelist from the cache, as it's faster // than getting the msg raw and explode()'ing it. - $cache = ObjectCache::getMainWANInstance(); + $cache = MediaWikiServices::getInstance()->getMainWANObjectCache(); $lines = $cache->getWithSetCallback( wfMemcKey( 'ipb', 'autoblock', 'whitelist' ), $cache::TTL_DAY, - function () { + function ( $curValue, &$ttl, array &$setOpts ) { + $setOpts += Database::getCacheSetOptions( wfGetDB( DB_REPLICA ) ); + return explode( "\n", wfMessage( 'autoblock_whitelist' )->inContentLanguage()->plain() ); } @@ -1415,6 +1417,33 @@ class Block { $this->blocker = $user; } + /** + * Set the 'BlockID' cookie to this block's ID and expiry time. The cookie's expiry will be + * the same as the block's, unless it's greater than $wgCookieExpiration in which case + * $wgCookieExpiration will be used instead (defaults to 30 days). + * + * An empty value can also be set, in order to retain the cookie but remove the block ID + * (e.g. as used in User::getBlockedStatus). + * + * @param WebResponse $response The response on which to set the cookie. + * @param boolean $setEmpty Whether to set the cookie's value to the empty string. + */ + public function setCookie( WebResponse $response, $setEmpty = false ) { + // Calculate the default expiry time. + $config = RequestContext::getMain()->getConfig(); + $defaultExpiry = wfTimestamp() + $config->get( 'CookieExpiration' ); + + // Use the Block's expiry time only if it's less than the default. + $expiry = wfTimestamp( TS_UNIX, $this->getExpiry() ); + if ( $expiry > $defaultExpiry ) { + // The *default* default expiry is 30 days. + $expiry = $defaultExpiry; + } + + $cookieValue = $setEmpty ? '' : $this->getId(); + $response->setCookie( 'BlockID', $cookieValue, $expiry ); + } + /** * Get the key and parameters for the corresponding error message. *