X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FWebResponse.php;h=458c2079e4fcc46f6b312985575748d085780515;hb=d7f78be6d5677bdb228ea9939d327d11af02619f;hp=fd48005398036740a6c34e6cf2258bcf5f5a13a0;hpb=00cef5ba5952d23e315f031a56c08855fd266b98;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/WebResponse.php b/includes/WebResponse.php index fd48005398..458c2079e4 100644 --- a/includes/WebResponse.php +++ b/includes/WebResponse.php @@ -30,7 +30,7 @@ class WebResponse { /** @var array Used to record set cookies, because PHP's setcookie() will * happily send an identical Set-Cookie to the client. */ - protected static $setCookies = array(); + protected static $setCookies = []; /** * Output an HTTP header, wrapper for PHP's header() @@ -95,13 +95,13 @@ class WebResponse { * 'prefix', 'domain', and 'secure' * @since 1.22 Replaced $prefix, $domain, and $forceSecure with $options */ - public function setCookie( $name, $value, $expire = 0, $options = array() ) { + public function setCookie( $name, $value, $expire = 0, $options = [] ) { global $wgCookiePath, $wgCookiePrefix, $wgCookieDomain; global $wgCookieSecure, $wgCookieExpiration, $wgCookieHttpOnly; if ( !is_array( $options ) ) { // Backwards compatibility - $options = array( 'prefix' => $options ); + $options = [ 'prefix' => $options ]; if ( func_num_args() >= 5 ) { $options['domain'] = func_get_arg( 4 ); } @@ -111,14 +111,14 @@ class WebResponse { } $options = array_filter( $options, function ( $a ) { return $a !== null; - } ) + array( + } ) + [ 'prefix' => $wgCookiePrefix, 'domain' => $wgCookieDomain, 'path' => $wgCookiePath, 'secure' => $wgCookieSecure, 'httpOnly' => $wgCookieHttpOnly, 'raw' => false, - ); + ]; if ( $expire === null ) { $expire = 0; // Session cookie @@ -128,9 +128,9 @@ class WebResponse { $func = $options['raw'] ? 'setrawcookie' : 'setcookie'; - if ( Hooks::run( 'WebResponseSetCookie', array( &$name, &$value, &$expire, $options ) ) ) { + if ( Hooks::run( 'WebResponseSetCookie', [ &$name, &$value, &$expire, &$options ] ) ) { $cookie = $options['prefix'] . $name; - $data = array( + $data = [ 'name' => (string)$cookie, 'value' => (string)$value, 'expire' => (int)$expire, @@ -138,7 +138,7 @@ class WebResponse { 'domain' => (string)$options['domain'], 'secure' => (bool)$options['secure'], 'httpOnly' => (bool)$options['httpOnly'], - ); + ]; // Per RFC 6265, key is name + domain + path $key = "{$data['name']}\n{$data['domain']}\n{$data['path']}"; @@ -146,7 +146,7 @@ class WebResponse { // If this cookie name was in the request, fake an entry in // self::$setCookies for it so the deleting check works right. if ( isset( $_COOKIE[$cookie] ) && !array_key_exists( $key, self::$setCookies ) ) { - self::$setCookies[$key] = array(); + self::$setCookies[$key] = []; } // PHP deletes if value is the empty string; also, a past expiry is deleting @@ -155,13 +155,13 @@ class WebResponse { if ( $deleting && !isset( self::$setCookies[$key] ) ) { // isset( null ) is false wfDebugLog( 'cookie', 'already deleted ' . $func . ': "' . implode( '", "', $data ) . '"' ); } elseif ( !$deleting && isset( self::$setCookies[$key] ) && - self::$setCookies[$key] === array( $func, $data ) + self::$setCookies[$key] === [ $func, $data ] ) { wfDebugLog( 'cookie', 'already set ' . $func . ': "' . implode( '", "', $data ) . '"' ); } else { wfDebugLog( 'cookie', $func . ': "' . implode( '", "', $data ) . '"' ); if ( call_user_func_array( $func, array_values( $data ) ) ) { - self::$setCookies[$key] = $deleting ? null : array( $func, $data ); + self::$setCookies[$key] = $deleting ? null : [ $func, $data ]; } } } @@ -176,9 +176,19 @@ class WebResponse { * @param array $options Cookie options, see {@link setCookie()} * @since 1.27 */ - public function clearCookie( $name, $options = array() ) { + public function clearCookie( $name, $options = [] ) { $this->setCookie( $name, '', time() - 31536000 /* 1 year */, $options ); } + + /** + * Checks whether this request is performing cookie operations + * + * @return bool + * @since 1.27 + */ + public function hasCookies() { + return (bool)self::$setCookies; + } } /** @@ -186,7 +196,7 @@ class WebResponse { */ class FauxResponse extends WebResponse { private $headers; - private $cookies = array(); + private $cookies = []; private $code; /** @@ -254,13 +264,13 @@ class FauxResponse extends WebResponse { * @param int|null $expire Ignored in this faux subclass. * @param array $options Ignored in this faux subclass. */ - public function setCookie( $name, $value, $expire = 0, $options = array() ) { + public function setCookie( $name, $value, $expire = 0, $options = [] ) { global $wgCookiePath, $wgCookiePrefix, $wgCookieDomain; global $wgCookieSecure, $wgCookieExpiration, $wgCookieHttpOnly; if ( !is_array( $options ) ) { // Backwards compatibility - $options = array( 'prefix' => $options ); + $options = [ 'prefix' => $options ]; if ( func_num_args() >= 5 ) { $options['domain'] = func_get_arg( 4 ); } @@ -270,14 +280,14 @@ class FauxResponse extends WebResponse { } $options = array_filter( $options, function ( $a ) { return $a !== null; - } ) + array( + } ) + [ 'prefix' => $wgCookiePrefix, 'domain' => $wgCookieDomain, 'path' => $wgCookiePath, 'secure' => $wgCookieSecure, 'httpOnly' => $wgCookieHttpOnly, 'raw' => false, - ); + ]; if ( $expire === null ) { $expire = 0; // Session cookie @@ -285,7 +295,7 @@ class FauxResponse extends WebResponse { $expire = time() + $wgCookieExpiration; } - $this->cookies[$options['prefix'] . $name] = array( + $this->cookies[$options['prefix'] . $name] = [ 'value' => (string)$value, 'expire' => (int)$expire, 'path' => (string)$options['path'], @@ -293,7 +303,7 @@ class FauxResponse extends WebResponse { 'secure' => (bool)$options['secure'], 'httpOnly' => (bool)$options['httpOnly'], 'raw' => (bool)$options['raw'], - ); + ]; } /**