Use of the kernel.request event
This commit is contained in:
@@ -15,6 +15,8 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
|
||||
use Symfony\Component\HttpKernel\KernelEvents;
|
||||
use Thelia\Core\Translation\Translator;
|
||||
use Thelia\Model\ConfigQuery;
|
||||
use Thelia\Model\LangQuery;
|
||||
|
||||
/**
|
||||
* Class RequestListener
|
||||
@@ -53,6 +55,43 @@ class RequestListener implements EventSubscriberInterface
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the previous URL in session which is based on the referer header of the request
|
||||
*
|
||||
* @param GetResponseEvent $event
|
||||
*/
|
||||
public function registerPreviousUrl(GetResponseEvent $event)
|
||||
{
|
||||
|
||||
$request = $event->getRequest();
|
||||
|
||||
// set previous URL
|
||||
if (null !== $referer = $request->headers->get('referer')) {
|
||||
|
||||
$session = $request->getSession();
|
||||
|
||||
if (ConfigQuery::read("one_domain_foreach_lang", false) == 1) {
|
||||
|
||||
$components = parse_url($referer);
|
||||
$lang = LangQuery::create()
|
||||
->filterByUrl(sprintf("%s://%s", $components["scheme"], $components["host"]), ModelCriteria::LIKE)
|
||||
->findOne();
|
||||
|
||||
if (null !== $lang) {
|
||||
$session->setReturnToUrl($referer);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
if ( false !== strpos($referer, $request->getSchemeAndHttpHost())) {
|
||||
$session->setReturnToUrl($referer);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of event names this subscriber wants to listen to.
|
||||
*
|
||||
@@ -76,7 +115,10 @@ class RequestListener implements EventSubscriberInterface
|
||||
public static function getSubscribedEvents()
|
||||
{
|
||||
return array(
|
||||
KernelEvents::REQUEST => array("registerValidatorTranslator", 128)
|
||||
KernelEvents::REQUEST => array(
|
||||
array("registerValidatorTranslator", 128),
|
||||
array("registerPreviousUrl", 128)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user