deblan.tv/vendor/trinity/src/Trinity/Bundle/AdminBreadcrumbsBundle/Listener/RequestListener.php

47 lines
1.4 KiB
PHP

<?php
namespace Trinity\Bundle\AdminBreadcrumbsBundle\Listener;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use \Trinity\Bundle\AdminBreadcrumbsBundle\Model\BreadcrumbManager;
class RequestListener
{
protected $breadcrumbManager;
protected $ignoreRoutePatterns;
public function __construct(BreadcrumbManager $manager, array $ignore_route_patterns, array $required_uri_patterns)
{
$this->breadcrumbManager = $manager;
$this->ignoreRoutePatterns = $ignore_route_patterns;
$this->requiredUriPatterns = $required_uri_patterns;
}
public function onKernelRequest(GetResponseEvent $event)
{
foreach ($this->requiredUriPatterns as $uriPattern) {
if (!preg_match(sprintf('#%s#s', $uriPattern), $event->getRequest()->getPathInfo())) {
return false;
}
}
if (preg_match('`jsTranslations`', $event->getRequest()->getPathInfo())) {
return false;
}
foreach ($this->ignoreRoutePatterns as $routePattern) {
if (preg_match(sprintf('#%s#s', $routePattern), $event->getRequest()->get('_route'))) {
return false;
}
}
if (!$event->getRequest()->get('_route')) {
return false;
}
$this->breadcrumbManager->buildCrudBreadcrumbFor($event->getRequest());
return true;
}
}