Completed
Push — master ( 2f0a9f...1ea052 )
by Matthew
11:55 queued 11s
created

DtcGridExtension   A

Complexity

Total Complexity 22

Size/Duplication

Total Lines 74
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 38
dl 0
loc 74
rs 10
c 1
b 0
f 0
wmc 22

8 Methods

Rating   Name   Duplication   Size   Complexity  
A setJquery() 0 4 2
A load() 0 17 3
A setDataTables() 0 11 5
A setReflection() 0 3 2
A getAlias() 0 3 1
A setPurl() 0 4 2
A setJqGrid() 0 9 4
A setTheme() 0 7 3
1
<?php
2
3
namespace Dtc\GridBundle\DependencyInjection;
4
5
use Dtc\GridBundle\Grid\Renderer\DataTablesRenderer;
6
use Dtc\GridBundle\Grid\Renderer\JQGridRenderer;
7
use Dtc\GridBundle\Grid\Renderer\TableGridRenderer;
8
use Symfony\Component\Config\Definition\Processor;
9
use Symfony\Component\DependencyInjection\ContainerBuilder;
10
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
11
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
12
use Symfony\Component\Config\FileLocator;
13
14
class DtcGridExtension extends Extension
15
{
16
    public function load(array $configs, ContainerBuilder $container)
17
    {
18
        $loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
19
        $loader->load('grid.yml');
20
21
        $configuration = new Configuration();
22
        $processor = new Processor();
23
24
        $config = $processor->processConfiguration($configuration, $configs);
25
        $this->setReflection($config, $container);
26
        $this->setJqGrid($config, $container);
27
        $this->setTheme($config, $container);
28
        $this->setDatatables($config, $container);
29
        $this->setJquery($config, $container);
30
        $this->setPurl($config, $container);
31
        $container->setParameter('dtc_grid.page_div_style', isset($config['page_div_style']) ? $config['page_div_style'] : null);
32
        $container->setParameter('dtc_grid.table_options', isset($config['table']['options']) ? $config['table']['options'] : TableGridRenderer::$defaultOptions);
33
    }
34
35
    public function setReflection(array $config, ContainerBuilder $container)
36
    {
37
        $container->setParameter('dtc_grid.reflection.allowed_entities', isset($config['reflection']['allowed_entities']) ? $config['reflection']['allowed_entities'] : null);
38
    }
39
40
    public function setPurl(array $config, ContainerBuilder $container)
41
    {
42
        $purl = isset($config['purl']) ? $config['purl'] : [];
43
        $container->setParameter('dtc_grid.purl', $purl);
44
    }
45
46
    public function setJquery(array $config, ContainerBuilder $container)
47
    {
48
        $jquery = isset($config['jquery']) ? $config['jquery'] : [];
49
        $container->setParameter('dtc_grid.jquery', $jquery);
50
    }
51
52
    public function setJqGrid(array $config, ContainerBuilder $container)
53
    {
54
        $css = isset($config['jq_grid']['css']) ? $config['jq_grid']['css'] : [];
55
        $js = isset($config['jq_grid']['js']) ? $config['jq_grid']['js'] : [];
56
        $options = isset($config['jq_grid']['options']) ? $config['jq_grid']['options'] : JQGridRenderer::$defaultOptions;
57
58
        $container->setParameter('dtc_grid.jq_grid.css', $css);
59
        $container->setParameter('dtc_grid.jq_grid.js', $js);
60
        $container->setParameter('dtc_grid.jq_grid.options', $options);
61
    }
62
63
    public function setDataTables(array $config, ContainerBuilder $container)
64
    {
65
        $class = isset($config['datatables']['class']) ? $config['datatables']['class'] : [];
66
        $css = isset($config['datatables']['css']) ? $config['datatables']['css'] : [];
67
        $js = isset($config['datatables']['js']) ? $config['datatables']['js'] : [];
68
        $options = isset($config['datatables']['options']) ? $config['datatables']['options'] : DataTablesRenderer::$defaultOptions;
69
70
        $container->setParameter('dtc_grid.datatables.class', $class);
71
        $container->setParameter('dtc_grid.datatables.css', $css);
72
        $container->setParameter('dtc_grid.datatables.js', $js);
73
        $container->setParameter('dtc_grid.datatables.options', $options);
74
    }
75
76
    public function setTheme(array $config, ContainerBuilder $container)
77
    {
78
        $css = isset($config['theme']['css']) ? $config['theme']['css'] : [];
79
        $js = isset($config['theme']['js']) ? $config['theme']['js'] : [];
80
81
        $container->setParameter('dtc_grid.theme.css', $css);
82
        $container->setParameter('dtc_grid.theme.js', $js);
83
    }
84
85
    public function getAlias()
86
    {
87
        return 'dtc_grid';
88
    }
89
}
90