eZ\Bundle\EzPublishCoreBundle\EventListener\SessionSetDynamicNameListener::onSiteAccessMatch PHP Method

onSiteAccessMatch() public method

public onSiteAccessMatch ( PostSiteAccessMatchEvent $event )
$event eZ\Publish\Core\MVC\Symfony\Event\PostSiteAccessMatchEvent
    public function onSiteAccessMatch(PostSiteAccessMatchEvent $event)
    {
        if (!($event->getRequestType() === HttpKernelInterface::MASTER_REQUEST && isset($this->session) && !$this->session->isStarted() && $this->sessionStorage instanceof NativeSessionStorage)) {
            return;
        }
        $sessionOptions = (array) $this->configResolver->getParameter('session');
        $sessionName = isset($sessionOptions['name']) ? $sessionOptions['name'] : $this->session->getName();
        $sessionOptions['name'] = $this->getSessionName($sessionName, $event->getSiteAccess());
        $this->sessionStorage->setOptions($sessionOptions);
    }

Usage Example

 public function testOnSiteAccessMatchNoConfiguredSessionName()
 {
     $configuredSessionStorageOptions = array('cookie_path' => '/bar');
     $sessionName = 'some_default_name';
     $sessionOptions = $configuredSessionStorageOptions + array('name' => "eZSESSID_{$sessionName}");
     $this->session->expects($this->once())->method('isStarted')->will($this->returnValue(false));
     $this->session->expects($this->once())->method('getName')->will($this->returnValue('some_default_name'));
     $this->sessionStorage->expects($this->once())->method('setOptions')->with($sessionOptions);
     $this->configResolver->expects($this->once())->method('getParameter')->with('session')->will($this->returnValue($configuredSessionStorageOptions));
     $listener = new SessionSetDynamicNameListener($this->configResolver, $this->session, $this->sessionStorage);
     $listener->onSiteAccessMatch(new PostSiteAccessMatchEvent(new SiteAccess(), new Request(), HttpKernelInterface::MASTER_REQUEST));
 }