deblan.tv/vendor/trinity/src/Trinity/Bundle/ContentManagerBundle/Page/DecoratorStrategy.php
2015-03-02 21:57:49 +01:00

62 lines
1.6 KiB
PHP

<?php
namespace Trinity\Bundle\ContentManagerBundle\Page;
use Symfony\Component\HttpFoundation\Request;
class DecoratorStrategy implements DecoratorStrategyInterface
{
protected $ignoreRoutes;
protected $ignoreRoutePatterns;
protected $ignoreUriPatterns;
/**
* @param array $ignoreRoutes
* @param array $ignoreRoutePatterns
* @param array $ignoreUriPatterns
*/
public function __construct(array $ignoreRoutes, array $ignoreRoutePatterns, array $ignoreUriPatterns)
{
$this->ignoreRoutes = $ignoreRoutes;
$this->ignoreRoutePatterns = $ignoreRoutePatterns;
$this->ignoreUriPatterns = $ignoreUriPatterns;
}
public function isRequestDecorable(Request $request)
{
return $this->isRouteNameDecorable($request->get('_route')) && $this->isRouteUriDecorable($request->getPathInfo());
}
public function isRouteNameDecorable($routeName)
{
if (!$routeName) {
return false;
}
foreach ($this->ignoreRoutes as $route) {
if ($routeName == $route) {
return false;
}
}
foreach ($this->ignoreRoutePatterns as $routePattern) {
if (preg_match(sprintf('#%s#s', $routePattern), $routeName)) {
return false;
}
}
return true;
}
public function isRouteUriDecorable($uri)
{
foreach ($this->ignoreUriPatterns as $uriPattern) {
if (preg_match(sprintf('#%s#s', $uriPattern), $uri)) {
return false;
}
}
return true;
}
}