Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / lib / Drupal / Core / EventSubscriber / EnforcedFormResponseSubscriber.php
1 <?php
2
3 namespace Drupal\Core\EventSubscriber;
4
5 use Drupal\Core\Form\EnforcedResponse;
6 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
7 use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
8 use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
9 use Symfony\Component\HttpKernel\HttpKernelInterface;
10 use Symfony\Component\HttpKernel\KernelEvents;
11
12 /**
13  * Handle the EnforcedResponseException and deliver an EnforcedResponse.
14  */
15 class EnforcedFormResponseSubscriber implements EventSubscriberInterface {
16
17   /**
18    * Replaces the response in case an EnforcedResponseException was thrown.
19    */
20   public function onKernelException(GetResponseForExceptionEvent $event) {
21     if ($response = EnforcedResponse::createFromException($event->getException())) {
22       // Setting the response stops the event propagation.
23       $event->setResponse($response);
24     }
25   }
26
27   /**
28    * Unwraps an enforced response.
29    */
30   public function onKernelResponse(FilterResponseEvent $event) {
31     $response = $event->getResponse();
32     if ($response instanceof EnforcedResponse && $event->getRequestType() === HttpKernelInterface::MASTER_REQUEST) {
33       $event->setResponse($response->getResponse());
34     }
35   }
36
37   /**
38    * {@inheritdoc}
39    */
40   public static function getSubscribedEvents() {
41     $events[KernelEvents::EXCEPTION] = ['onKernelException', 128];
42     $events[KernelEvents::RESPONSE] = ['onKernelResponse', 128];
43
44     return $events;
45   }
46
47 }