47c8c5b110ec217b25aeacca21125deef17ee7ab
[yaffs-website] / session_test / src / EventSubscriber / SessionTestSubscriber.php
1 <?php
2
3 namespace Drupal\session_test\EventSubscriber;
4
5 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
6 use Symfony\Component\HttpKernel\KernelEvents;
7 use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
8 use Symfony\Component\HttpKernel\Event\GetResponseEvent;
9
10 /**
11  * Defines a test session subscriber that checks whether the session is empty.
12  */
13 class SessionTestSubscriber implements EventSubscriberInterface {
14
15   /**
16    * Stores whether $_SESSION is empty at the beginning of the request.
17    *
18    * @var bool
19    */
20   protected $emptySession;
21
22   /**
23    * Set header for session testing.
24    *
25    * @param \Symfony\Component\HttpKernel\Event\GetResponseEvent $event
26    *   The Event to process.
27    */
28   public function onKernelRequestSessionTest(GetResponseEvent $event) {
29     $session = $event->getRequest()->getSession();
30     $this->emptySession = (int) !($session && $session->start());
31   }
32
33   /**
34    * Performs tasks for session_test module on kernel.response.
35    *
36    * @param \Symfony\Component\HttpKernel\Event\FilterResponseEvent $event
37    *   The Event to process.
38    */
39   public function onKernelResponseSessionTest(FilterResponseEvent $event) {
40     // Set header for session testing.
41     $response = $event->getResponse();
42     $response->headers->set('X-Session-Empty', $this->emptySession);
43   }
44
45   /**
46    * Registers the methods in this class that should be listeners.
47    *
48    * @return array
49    *   An array of event listener definitions.
50    */
51   public static function getSubscribedEvents() {
52     $events[KernelEvents::RESPONSE][] = ['onKernelResponseSessionTest'];
53     $events[KernelEvents::REQUEST][] = ['onKernelRequestSessionTest'];
54     return $events;
55   }
56
57 }