AzineEmailExtension   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 84
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 65
c 0
b 0
f 0
dl 0
loc 84
ccs 36
cts 36
cp 1
rs 10
wmc 3

1 Method

Rating   Name   Duplication   Size   Complexity  
A load() 0 48 3
1
<?php
2
3
namespace Azine\EmailBundle\DependencyInjection;
4
5
use Symfony\Component\Config\FileLocator;
6
use Symfony\Component\DependencyInjection\ContainerBuilder;
7
use Symfony\Component\DependencyInjection\Loader;
8
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
9
10
/**
11
 * Configure the bundle with the values from the config.yml/.xml.
12
 */
13
class AzineEmailExtension extends Extension
14
{
15
    const RECIPIENT_PROVIDER = 'recipient_provider';
16
    const RECIPIENT_CLASS = 'recipient_class';
17
    const RECIPIENT_NEWSLETTER_FIELD = 'recipient_newsletter_field';
18
    const NO_REPLY = 'no_reply';
19
    const NO_REPLY_EMAIL_ADDRESS = 'email';
20
    const NO_REPLY_EMAIL_NAME = 'name';
21
    const TEMPLATE_IMAGE_DIR = 'image_dir';
22
    const ALLOWED_IMAGES_FOLDERS = 'allowed_images_folders';
23
    const TEMPLATE_PROVIDER = 'template_provider';
24
    const TEMPLATE_TWIG_SWIFT_MAILER = 'template_twig_swift_mailer';
25
    const NOTIFIER_SERVICE = 'notifier_service';
26
    const NEWSLETTER = 'newsletter';
27
    const NEWSLETTER_INTERVAL = 'interval';
28
    const NEWSLETTER_SEND_TIME = 'send_time';
29
    const WEB_VIEW_SERVICE = 'web_view_service';
30
    const WEB_VIEW_RETENTION = 'web_view_retention';
31
32
    const TRACKING_PARAM_CAMPAIGN_NAME = 'tracking_params_campaign_name';
33
    const TRACKING_PARAM_CAMPAIGN_TERM = 'tracking_params_campaign_term';
34
    const TRACKING_PARAM_CAMPAIGN_CONTENT = 'tracking_params_campaign_content';
35
    const TRACKING_PARAM_CAMPAIGN_MEDIUM = 'tracking_params_campaign_medium';
36
    const TRACKING_PARAM_CAMPAIGN_SOURCE = 'tracking_params_campaign_source';
37
    const EMAIL_TRACKING_BASE_URL = 'email_open_tracking_url';
38
    const EMAIL_TRACKING_CODE_BUILDER = 'email_open_tracking_code_builder';
39
    const DOMAINS_FOR_TRACKING = 'domains_for_tracking';
40
    const PREFIX = 'azine_email_';
41
    const TEMPLATES = 'templates';
42
    const NEWSLETTER_TEMPLATE = 'newsletter';
43
    const NOTIFICATIONS_TEMPLATE = 'notifications';
44
    const CONTENT_ITEM_TEMPLATE = 'content_item';
45
46
    /**
47
     * {@inheritdoc}
48
     */
49 8
    public function load(array $configs, ContainerBuilder $container)
50
    {
51 8
        $configuration = new Configuration();
52 8
        $config = $this->processConfiguration($configuration, $configs);
53
54 3
        $prefix = self::PREFIX;
55 3
        $container->setAlias($prefix.self::RECIPIENT_PROVIDER, $config[self::RECIPIENT_PROVIDER]);
56 3
        $container->setParameter($prefix.self::RECIPIENT_CLASS, $config[self::RECIPIENT_CLASS]);
57 3
        $container->setParameter($prefix.self::RECIPIENT_NEWSLETTER_FIELD, $config[self::RECIPIENT_NEWSLETTER_FIELD]);
58 3
        $container->setAlias($prefix.self::TEMPLATE_PROVIDER, $config[self::TEMPLATE_PROVIDER]);
59 3
        $container->setAlias($prefix.self::TEMPLATE_TWIG_SWIFT_MAILER, $config[self::TEMPLATE_TWIG_SWIFT_MAILER]);
60 3
        $container->setParameter($prefix.'no_reply', array('email' => $config[self::NO_REPLY][self::NO_REPLY_EMAIL_ADDRESS],
61 3
                                                                'name' => $config[self::NO_REPLY][self::NO_REPLY_EMAIL_NAME], ));
62 3
        $container->setParameter($prefix.self::TEMPLATE_IMAGE_DIR, realpath($config[self::TEMPLATE_IMAGE_DIR]));
63 3
        $allowedFolders = array();
64 3
        foreach ($config[self::ALLOWED_IMAGES_FOLDERS] as $folder) {
65 2
            $allowedFolders[] = realpath($folder);
66
        }
67 3
        $container->setParameter($prefix.self::ALLOWED_IMAGES_FOLDERS, $allowedFolders);
68 3
        $container->setAlias($prefix.self::NOTIFIER_SERVICE, $config[self::NOTIFIER_SERVICE]);
69
70 3
        $container->setParameter($prefix.self::NEWSLETTER.'_'.self::NEWSLETTER_INTERVAL, $config[self::NEWSLETTER][self::NEWSLETTER_INTERVAL]);
71 3
        $container->setParameter($prefix.self::NEWSLETTER.'_'.self::NEWSLETTER_SEND_TIME, $config[self::NEWSLETTER][self::NEWSLETTER_SEND_TIME]);
72
73 3
        $container->setParameter($prefix.self::TEMPLATES.'_'.self::NEWSLETTER_TEMPLATE, $config[self::TEMPLATES][self::NEWSLETTER_TEMPLATE]);
74 3
        $container->setParameter($prefix.self::TEMPLATES.'_'.self::NOTIFICATIONS_TEMPLATE, $config[self::TEMPLATES][self::NOTIFICATIONS_TEMPLATE]);
75 3
        $container->setParameter($prefix.self::TEMPLATES.'_'.self::CONTENT_ITEM_TEMPLATE, $config[self::TEMPLATES][self::CONTENT_ITEM_TEMPLATE]);
76
77 3
        $container->setParameter($prefix.self::TRACKING_PARAM_CAMPAIGN_CONTENT, $config[self::TRACKING_PARAM_CAMPAIGN_CONTENT]);
78 3
        $container->setParameter($prefix.self::TRACKING_PARAM_CAMPAIGN_MEDIUM, $config[self::TRACKING_PARAM_CAMPAIGN_MEDIUM]);
79 3
        $container->setParameter($prefix.self::TRACKING_PARAM_CAMPAIGN_NAME, $config[self::TRACKING_PARAM_CAMPAIGN_NAME]);
80 3
        $container->setParameter($prefix.self::TRACKING_PARAM_CAMPAIGN_SOURCE, $config[self::TRACKING_PARAM_CAMPAIGN_SOURCE]);
81 3
        $container->setParameter($prefix.self::TRACKING_PARAM_CAMPAIGN_TERM, $config[self::TRACKING_PARAM_CAMPAIGN_TERM]);
82 3
        $container->setParameter($prefix.self::EMAIL_TRACKING_BASE_URL, $config[self::EMAIL_TRACKING_BASE_URL]);
83 3
        $container->setParameter($prefix.self::DOMAINS_FOR_TRACKING, $config[self::DOMAINS_FOR_TRACKING]);
84 3
        $container->setAlias($prefix.self::EMAIL_TRACKING_CODE_BUILDER, $config[self::EMAIL_TRACKING_CODE_BUILDER]);
85
86 3
        $container->setAlias($prefix.self::WEB_VIEW_SERVICE, $config[self::WEB_VIEW_SERVICE]);
87 3
        $container->setParameter($prefix.self::WEB_VIEW_RETENTION, $config[self::WEB_VIEW_RETENTION]);
88
89
        // this parameter is only made available using versions of FriendsOfSymfonyUserBundle where
90
        // https://github.com/FriendsOfSymfony/FOSUserBundle/pull/2612 has already been merged into.
91 3
        if (!$container->hasParameter('fos_user.email_update_confirmation.template')) {
92 3
            $container->setParameter('fos_user.email_update_confirmation.template', array('no-template'));
93
        }
94
95 3
        $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
96 3
        $loader->load('services.yml');
97 3
    }
98
}
99