Merge pull request #563 from bibich/previous-url

Previous url
This commit is contained in:
Manuel Raynaud
2014-08-08 11:38:59 +02:00

View File

@@ -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)
)
);
}
}