Completed
Push — master ( 971421...d8f9fb )
by Matthew
09:04
created

DtcQueueExtension   A

Complexity

Total Complexity 20

Size/Duplication

Total Lines 75
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 7

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 20
lcom 1
cbo 7
dl 0
loc 75
ccs 47
cts 47
cp 1
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A load() 0 23 2
A configAdmin() 0 4 1
B configClasses() 0 9 7
A configRabbitMQ() 0 12 4
B configBeanstalkd() 0 15 5
A getAlias() 0 4 1
1
<?php
2
3
namespace Dtc\QueueBundle\DependencyInjection;
4
5
use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException;
6
use Symfony\Component\Config\Definition\Processor;
7
use Symfony\Component\DependencyInjection\ContainerBuilder;
8
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
9
use Symfony\Component\Config\FileLocator;
10
use Symfony\Component\DependencyInjection\Loader;
11
12
class DtcQueueExtension extends Extension
13
{
14 4
    public function load(array $configs, ContainerBuilder $container)
15
    {
16 4
        $processor = new Processor();
17 4
        $configuration = new Configuration();
18
19 4
        $config = $processor->processConfiguration($configuration, $configs);
20 4
        $this->configBeanstalkd($config, $container);
21 4
        $this->configRabbitMQ($config, $container);
22
23 4
        $container->setParameter('dtc_queue.default_manager', $config['default_manager']);
24 4
        $container->setParameter('dtc_queue.document_manager', $config['document_manager']);
25 4
        $container->setParameter('dtc_queue.entity_manager', $config['entity_manager']);
26 4
        $container->setParameter('dtc_queue.run_manager', isset($config['run_manager']) ? $config['run_manager'] : $config['default_manager']);
27 4
        $container->setParameter('dtc_queue.priority_max', $config['priority_max']);
28 4
        $container->setParameter('dtc_queue.priority_direction', $config['priority_direction']);
29 4
        $this->configClasses($config, $container);
30 4
        $this->configAdmin($config, $container);
31
32
        // Load Grid if Dtc\GridBundle Bundle is registered
33 4
        $yamlLoader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
34
35 4
        $yamlLoader->load('queue.yml');
36 4
    }
37
38 4
    protected function configAdmin(array $config, ContainerBuilder $container)
39
    {
40 4
        $container->setParameter('dtc_queue.admin.chartjs', $config['admin']['chartjs']);
41 4
    }
42
43 4
    protected function configClasses(array $config, ContainerBuilder $container)
44
    {
45 4
        $container->setParameter('dtc_queue.class_job', isset($config['class_job']) ? $config['class_job'] : null);
46 4
        $container->setParameter('dtc_queue.class_job_archive', isset($config['class_job_archive']) ? $config['class_job_archive'] : null);
47 4
        $container->setParameter('dtc_queue.class_run', isset($config['class_run']) ? $config['class_run'] : null);
48 4
        $container->setParameter('dtc_queue.class_run_archive', isset($config['class_run_archive']) ? $config['class_run_archive'] : null);
49 4
        $container->setParameter('dtc_queue.class_job_timing', isset($config['class_job_timing']) ? $config['class_job_timing'] : null);
50 4
        $container->setParameter('dtc_queue.record_timings', isset($config['record_timings']) ? $config['record_timings'] : false);
51 4
    }
52
53 4
    protected function configRabbitMQ(array $config, ContainerBuilder $container)
54
    {
55 4
        if (isset($config['rabbit_mq'])) {
56 1
            foreach (['host', 'port', 'user', 'password'] as $value) {
57 1
                if (!isset($config['rabbit_mq'][$value])) {
58 1
                    throw new InvalidConfigurationException('dtc_queue: rabbit_mq must have '.$value.' in config.yml');
59
                }
60
            }
61 1
            $config['rabbit_mq']['queue_args']['max_priority'] = $config['priority_max'];
62 1
            $container->setParameter('dtc_queue.rabbit_mq', $config['rabbit_mq']);
63
        }
64 4
    }
65
66 4
    protected function configBeanstalkd(array $config, ContainerBuilder $container)
67
    {
68 4
        if (isset($config['beanstalkd'])) {
69 1
            if (!isset($config['beanstalkd']['host'])) {
70 1
                throw new InvalidConfigurationException('dtc_queue: beanstalkd requires host in config.yml');
71
            }
72
        }
73
74 4
        if (isset($config['beanstalkd']['host'])) {
75 1
            $container->setParameter('dtc_queue.beanstalkd.host', $config['beanstalkd']['host']);
76
        }
77 4
        if (isset($config['beanstalkd']['tube'])) {
78 1
            $container->setParameter('dtc_queue.beanstalkd.tube', $config['beanstalkd']['tube']);
79
        }
80 4
    }
81
82 1
    public function getAlias()
83
    {
84 1
        return 'dtc_queue';
85
    }
86
}
87