deblan.tv/vendor/trinity/src/Trinity/.svn/pristine/76/76d9255e1c0473fcb7788fa4bf8c8f55d103e28c.svn-base
2015-03-02 21:57:49 +01:00

64 lines
1.7 KiB
Plaintext

<?php
namespace Trinity\Bundle\ContentManagerBundle\Page;
use Symfony\Component\HttpKernel\HttpKernelInterface;
use Symfony\Component\HttpFoundation\Response;
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;
}
}