Completed
Push — master ( 6ef03c...dfb186 )
by Dominik
03:38
created

AzineEmailExtension::load()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 50
Code Lines 36

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 39
CRAP Score 3

Importance

Changes 0
Metric Value
dl 0
loc 50
ccs 39
cts 39
cp 1
rs 9.3333
c 0
b 0
f 0
cc 3
eloc 36
nc 4
nop 2
crap 3
1
<?php
2
3
namespace Azine\EmailBundle\DependencyInjection;
4
5
use Symfony\Component\DependencyInjection\ContainerBuilder;
6
use Symfony\Component\Config\FileLocator;
7
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
8
use Symfony\Component\DependencyInjection\Loader;
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 3
        }
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 3
        }
94
95 3
        $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
96 3
        $loader->load('services.yml');
97
98 3
    }
99
}
100