Mercurial > hg > isophonics-drupal-site
diff vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php @ 14:1fec387a4317
Update Drupal core to 8.5.2 via Composer
author | Chris Cannam |
---|---|
date | Mon, 23 Apr 2018 09:46:53 +0100 |
parents | 4c8ae668cc8c |
children | 129ea1e6d783 |
line wrap: on
line diff
--- a/vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php Mon Apr 23 09:33:26 2018 +0100 +++ b/vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php Mon Apr 23 09:46:53 2018 +0100 @@ -11,6 +11,7 @@ namespace Symfony\Component\HttpKernel\DataCollector; +use Symfony\Component\HttpFoundation\Cookie; use Symfony\Component\HttpFoundation\ParameterBag; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -20,13 +21,10 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface; /** - * RequestDataCollector. - * * @author Fabien Potencier <fabien@symfony.com> */ -class RequestDataCollector extends DataCollector implements EventSubscriberInterface +class RequestDataCollector extends DataCollector implements EventSubscriberInterface, LateDataCollectorInterface { - /** @var \SplObjectStorage */ protected $controllers; public function __construct() @@ -39,11 +37,6 @@ */ public function collect(Request $request, Response $response, \Exception $exception = null) { - $responseHeaders = $response->headers->all(); - foreach ($response->headers->getCookies() as $cookie) { - $responseHeaders['set-cookie'][] = (string) $cookie; - } - // attributes are serialized and as they can be anything, they need to be converted to strings. $attributes = array(); $route = ''; @@ -81,6 +74,11 @@ $statusCode = $response->getStatusCode(); + $responseCookies = array(); + foreach ($response->headers->getCookies() as $cookie) { + $responseCookies[$cookie->getName()] = $cookie; + } + $this->data = array( 'method' => $request->getMethod(), 'format' => $request->getRequestFormat(), @@ -95,7 +93,8 @@ 'request_cookies' => $request->cookies->all(), 'request_attributes' => $attributes, 'route' => $route, - 'response_headers' => $responseHeaders, + 'response_headers' => $response->headers->all(), + 'response_cookies' => $responseCookies, 'session_metadata' => $sessionMetadata, 'session_attributes' => $sessionAttributes, 'flashes' => $flashes, @@ -121,10 +120,7 @@ continue; } if ('request_headers' === $key || 'response_headers' === $key) { - $value = array_map(function ($v) { return isset($v[0]) && !isset($v[1]) ? $v[0] : $v; }, $value); - } - if ('request_server' !== $key && 'request_cookies' !== $key) { - $this->data[$key] = array_map(array($this, 'cloneVar'), $value); + $this->data[$key] = array_map(function ($v) { return isset($v[0]) && !isset($v[1]) ? $v[0] : $v; }, $value); } } @@ -133,22 +129,38 @@ unset($this->controllers[$request]); } - if (null !== $session && $session->isStarted()) { - if ($request->attributes->has('_redirected')) { - $this->data['redirect'] = $session->remove('sf_redirect'); - } + if ($request->attributes->has('_redirected') && $redirectCookie = $request->cookies->get('sf_redirect')) { + $this->data['redirect'] = json_decode($redirectCookie, true); - if ($response->isRedirect()) { - $session->set('sf_redirect', array( + $response->headers->clearCookie('sf_redirect'); + } + + if ($response->isRedirect()) { + $response->headers->setCookie(new Cookie( + 'sf_redirect', + json_encode(array( 'token' => $response->headers->get('x-debug-token'), 'route' => $request->attributes->get('_route', 'n/a'), 'method' => $request->getMethod(), 'controller' => $this->parseController($request->attributes->get('_controller')), 'status_code' => $statusCode, 'status_text' => Response::$statusTexts[(int) $statusCode], - )); - } + )) + )); } + + $this->data['identifier'] = $this->data['route'] ?: (is_array($this->data['controller']) ? $this->data['controller']['class'].'::'.$this->data['controller']['method'].'()' : $this->data['controller']); + } + + public function lateCollect() + { + $this->data = $this->cloneVar($this->data); + } + + public function reset() + { + $this->data = array(); + $this->controllers = new \SplObjectStorage(); } public function getMethod() @@ -163,52 +175,57 @@ public function getRequestRequest() { - return new ParameterBag($this->data['request_request']); + return new ParameterBag($this->data['request_request']->getValue()); } public function getRequestQuery() { - return new ParameterBag($this->data['request_query']); + return new ParameterBag($this->data['request_query']->getValue()); } public function getRequestHeaders() { - return new ParameterBag($this->data['request_headers']); + return new ParameterBag($this->data['request_headers']->getValue()); } public function getRequestServer($raw = false) { - return new ParameterBag($raw ? $this->data['request_server'] : array_map(array($this, 'cloneVar'), $this->data['request_server'])); + return new ParameterBag($this->data['request_server']->getValue($raw)); } public function getRequestCookies($raw = false) { - return new ParameterBag($raw ? $this->data['request_cookies'] : array_map(array($this, 'cloneVar'), $this->data['request_cookies'])); + return new ParameterBag($this->data['request_cookies']->getValue($raw)); } public function getRequestAttributes() { - return new ParameterBag($this->data['request_attributes']); + return new ParameterBag($this->data['request_attributes']->getValue()); } public function getResponseHeaders() { - return new ParameterBag($this->data['response_headers']); + return new ParameterBag($this->data['response_headers']->getValue()); + } + + public function getResponseCookies() + { + return new ParameterBag($this->data['response_cookies']->getValue()); } public function getSessionMetadata() { - return $this->data['session_metadata']; + return $this->data['session_metadata']->getValue(); } public function getSessionAttributes() { - return $this->data['session_attributes']; + return $this->data['session_attributes']->getValue(); } public function getFlashes() { - return $this->data['flashes']; + return $this->data['flashes']->getValue(); } public function getContent() @@ -255,7 +272,7 @@ public function getIdentifier() { - return $this->data['route'] ?: (is_array($this->data['controller']) ? $this->data['controller']['class'].'::'.$this->data['controller']['method'].'()' : $this->data['controller']); + return $this->data['identifier']; } /** @@ -267,22 +284,7 @@ */ public function getRouteParams() { - if (!isset($this->data['request_attributes']['_route_params'])) { - return array(); - } - - $data = $this->data['request_attributes']['_route_params']; - $rawData = $data->getRawData(); - if (!isset($rawData[1])) { - return array(); - } - - $params = array(); - foreach ($rawData[1] as $k => $v) { - $params[$k] = $data->seek($k); - } - - return $params; + return isset($this->data['request_attributes']['_route_params']) ? $this->data['request_attributes']['_route_params']->getValue() : array(); } /** @@ -314,11 +316,11 @@ public function onKernelResponse(FilterResponseEvent $event) { - if (!$event->isMasterRequest() || !$event->getRequest()->hasSession() || !$event->getRequest()->getSession()->isStarted()) { + if (!$event->isMasterRequest()) { return; } - if ($event->getRequest()->getSession()->has('sf_redirect')) { + if ($event->getRequest()->cookies->has('sf_redirect')) { $event->getRequest()->attributes->set('_redirected', true); } }