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

56 lines
1.7 KiB
Plaintext

<?php
namespace Trinity\Bundle\DashBoardBundle\DashBoard;
use Symfony\Bundle\FrameworkBundle\Routing\Router;
use Trinity\Bundle\SecurityBundle\AccessControl\RouteAccessControl;
use Trinity\Bundle\DashBoardBundle\DashBoard\DashBoard;
use Trinity\Bundle\DashBoardBundle\Zone\Zone;
class ConfigurationTransformer
{
protected $router;
protected $config;
public function __construct(RouteAccessControl $rac, Router $router, array $config)
{
$this->router = $router;
$this->config = $config;
$this->rac = $rac;
}
public function getDash()
{
$dashboard = new DashBoard($this->config['title']);
foreach ($this->config['zones'] as $zone) {
$obj_zone = call_user_func_array(
array(
new \ReflectionClass($zone['model_class']),
'newInstance'
),
$zone['model_params']
);
foreach ($zone['items'] as $item) {
$obj_item = call_user_func_array(
array(
new \ReflectionClass($item['model_class']),
'newInstance'
),
$item['model_params']
);
$method = $item['test_is_granted'] ? 'addItemIfGranted' : 'addChild';
$this->rac->setRoute(!empty($item['route_uri']) ? $item['route_uri'] : $this->router->generate($item['route_name'], $item['route_params']));
call_user_func(array($obj_zone, $method), $obj_item, $this->rac);
}
$dashboard->addZone($obj_zone);
}
return $dashboard;
}
}