Completed
Push — master ( a1f77e...f1bc3f )
by Matthew
04:51
created

DtcQueueExtension::configBeanstalkd()   B

Complexity

Conditions 5
Paths 9

Size

Total Lines 15
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 5

Importance

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