DoSMailerExtension::setupMailgun()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 1 Features 1
Metric Value
cc 1
eloc 7
c 2
b 1
f 1
nc 1
nop 1
dl 0
loc 12
rs 9.4285
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