<?php
namespace AF\AdminBundle\EventListener;
use AF\AdminBundle\Enum\LanguageEnum;
use AF\AdminBundle\Util\ExtendsClassLoader;
use AF\AdminBundle\Util\HelpfulUtil;
use Symfony\Component\HttpKernel\Event\RequestEvent;
class RequestListener
{
private $helpfulUtil;
private $setLocale;
private $languageEnum;
private $webpHandle = false;
/**
* RequestListener constructor.
*
* @param HelpfulUtil $helpfulUtil
* @param ExtendsClassLoader $classLoader
* @param array $config
*/
public function __construct(HelpfulUtil $helpfulUtil, ExtendsClassLoader $classLoader, array $config)
{
if ( isset($config['webp_handle']) ) {
$this->webpHandle = $config['webp_handle'];
}
$this->languageEnum = $classLoader->getExtendsClass(LanguageEnum::class);
$this->setLocale = $config['set_locale'];
$this->helpfulUtil = $helpfulUtil;
}
/**
* @param RequestEvent $event
*/
public function onKernelRequest(RequestEvent $event)
{
if ( !$event->isMainRequest() || ( $this->webpHandle == false && $this->setLocale == false ) ) {
return;
}
if ( $this->setLocale == true ) {
$lang = null;
if ( $event->getRequest()->headers->get('content-language') !== null ) {
$lang = $event->getRequest()->headers->get('content-language');
}
if ( $this->languageEnum::getName($lang) === null ) {
$lang = $this->languageEnum::POLISH;
}
$event->getRequest()->setLocale($lang);
}
if ( $this->webpHandle == true ) {
$session = $event->getRequest()->getSession();
$session->remove('isWebPSupported');
if ($session->get('isWebPSupported') === null) {
$session->set('isWebPSupported', $this->helpfulUtil->checkWebPIsAvailable($event->getRequest()->headers->get('User-Agent')));
}
}
return;
}
}