From 7cf1c2fea6a2b2251c597c5fd7cf9cbaacbb46d6 Mon Sep 17 00:00:00 2001 From: Erik Bernhardson Date: Wed, 3 Dec 2014 14:45:26 -0800 Subject: [PATCH] Use the request object provided in User::setCookies When calling User::setCookies with a $request object that was not passed on to the User::setCookie method, which went ahead and updated the request from RequestContext::getMain rather than the provided request. This patch adds another parameter to User::setCookie to accept a request object, and User::setCookies to pass the request along. Change-Id: Ie46fd8c90753e8bf54ce58842c08e0519a269582 --- includes/User.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/includes/User.php b/includes/User.php index c4a612783a..084befe46f 100644 --- a/includes/User.php +++ b/includes/User.php @@ -3362,10 +3362,15 @@ class User implements IDBAccessObject { * false: Force NOT setting the secure attribute when setting the cookie * null (default): Use the default ($wgCookieSecure) to set the secure attribute * @param array $params Array of options sent passed to WebResponse::setcookie() + * @param WebRequest|null $request WebRequest object to use; $wgRequest will be used if null + * is passed. */ - protected function setCookie( $name, $value, $exp = 0, $secure = null, $params = array() ) { + protected function setCookie( $name, $value, $exp = 0, $secure = null, $params = array(), $request = null ) { + if ( $request === null ) { + $request = $this->getRequest(); + } $params['secure'] = $secure; - $this->getRequest()->response()->setcookie( $name, $value, $exp, $params ); + $request->response()->setcookie( $name, $value, $exp, $params ); } /** @@ -3430,7 +3435,7 @@ class User implements IDBAccessObject { if ( $value === false ) { $this->clearCookie( $name ); } else { - $this->setCookie( $name, $value, 0, $secure ); + $this->setCookie( $name, $value, 0, $secure, array(), $request ); } } -- 2.20.1