DoSMailerExtension   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 49
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 5

Importance

Changes 5
Bugs 2 Features 1
Metric Value
wmc 4
c 5
b 2
f 1
lcom 0
cbo 5
dl 0
loc 49
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A getBundleConfiguration() 0 4 1
A load() 0 6 1
A prepend() 0 9 1
A setupMailgun() 0 12 1
1
<?php
2
3
namespace DoS\MailerBundle\DependencyInjection;
4
5
use DoS\ResourceBundle\DependencyInjection\AbstractResourceExtension;
6
use Symfony\Component\DependencyInjection\ContainerBuilder;
7
use Symfony\Component\DependencyInjection\DefinitionDecorator;
8
use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
9
use Symfony\Component\DependencyInjection\Reference;
10
11
class DoSMailerExtension extends AbstractResourceExtension implements PrependExtensionInterface
12
{
13
    /**
14
     * {@inheritdoc}
15
     */
16
    public function load(array $config, ContainerBuilder $container)
17
    {
18
        parent::load($config, $container);
19
20
        $this->setupMailgun($container);
21
    }
22
23
    /**
24
     * {@inheritdoc}
25
     */
26
    protected function getBundleConfiguration()
27
    {
28
        return new Configuration();
29
    }
30
31
    /**
32
     * @inheritdoc
33
     */
34
    public function prepend(ContainerBuilder $container)
35
    {
36
        $configs = $container->getExtensionConfig($this->getAlias());
37
        // use the Configuration class to generate a config array with
38
        $config = $this->processConfiguration(new Configuration(), $configs);
39
40
        // no sylius config
41
        $container->prependExtensionConfig('sylius_mailer', $config);
42
    }
43
44
    /**
45
     * @param ContainerBuilder $container
46
     */
47
    private function setupMailgun(ContainerBuilder $container)
48
    {
49
        $definitionDecorator = new DefinitionDecorator('swiftmailer.transport.eventdispatcher.abstract');
50
        $container->setDefinition('dos.mailer.transportor.mailgun.eventdispatcher', $definitionDecorator);
51
        $container->getDefinition('dos.mailer.transportor.mailgun')
52
            ->replaceArgument(0, new Reference('dos.mailer.transportor.mailgun.eventdispatcher'))
53
        ;
54
55
        //set some alias
56
        $container->setAlias('mailgun', 'dos.mailer.transportor.mailgun');
57
        $container->setAlias('swiftmailer.mailer.transport.mailgun', 'dos.mailer.transportor.mailgun');
58
    }
59
}
60