Completed
Pull Request — master (#11)
by
unknown
03:43
created

AzineEmailExtension   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 81
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 5

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 2
lcom 0
cbo 5
dl 0
loc 81
ccs 0
cts 36
cp 0
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
B load() 0 44 2
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
    public function load(array $configs, ContainerBuilder $container)
50
    {
51
        $configuration = new Configuration();
52
        $config = $this->processConfiguration($configuration, $configs);
53
54
        $prefix = self::PREFIX;
55
        $container->setAlias	($prefix.self::RECIPIENT_PROVIDER,			$config[self::RECIPIENT_PROVIDER]);
56
        $container->setParameter($prefix.self::RECIPIENT_CLASS,				$config[self::RECIPIENT_CLASS]);
57
        $container->setParameter($prefix.self::RECIPIENT_NEWSLETTER_FIELD,	$config[self::RECIPIENT_NEWSLETTER_FIELD]);
58
        $container->setAlias	($prefix.self::TEMPLATE_PROVIDER,			$config[self::TEMPLATE_PROVIDER]);
59
        $container->setAlias	($prefix.self::TEMPLATE_TWIG_SWIFT_MAILER,	$config[self::TEMPLATE_TWIG_SWIFT_MAILER]);
60
        $container->setParameter($prefix.'no_reply',	array(	'email' => 	$config[self::NO_REPLY][self::NO_REPLY_EMAIL_ADDRESS],
61
                                                                'name' => 	$config[self::NO_REPLY][self::NO_REPLY_EMAIL_NAME]));
62
        $container->setParameter($prefix.self::TEMPLATE_IMAGE_DIR,			realpath($config[self::TEMPLATE_IMAGE_DIR]));
63
        $allowedFolders = array();
64
        foreach ($config[self::ALLOWED_IMAGES_FOLDERS] as $folder) {
65
            $allowedFolders[] = realpath($folder);
66
        }
67
        $container->setParameter($prefix.self::ALLOWED_IMAGES_FOLDERS,		$allowedFolders);
68
        $container->setAlias	($prefix.self::NOTIFIER_SERVICE,			$config[self::NOTIFIER_SERVICE]);
69
70
        $container->setParameter($prefix.self::NEWSLETTER."_".self::NEWSLETTER_INTERVAL,	$config[self::NEWSLETTER][self::NEWSLETTER_INTERVAL]);
71
        $container->setParameter($prefix.self::NEWSLETTER."_".self::NEWSLETTER_SEND_TIME,	$config[self::NEWSLETTER][self::NEWSLETTER_SEND_TIME]);
72
73
        $container->setParameter($prefix.self::TEMPLATES."_".self::NEWSLETTER_TEMPLATE,	    $config[self::TEMPLATES][self::NEWSLETTER_TEMPLATE]);
74
        $container->setParameter($prefix.self::TEMPLATES."_".self::NOTIFICATIONS_TEMPLATE,	$config[self::TEMPLATES][self::NOTIFICATIONS_TEMPLATE]);
75
        $container->setParameter($prefix.self::TEMPLATES."_".self::CONTENT_ITEM_TEMPLATE,	$config[self::TEMPLATES][self::CONTENT_ITEM_TEMPLATE]);
76
77
        $container->setParameter($prefix.self::TRACKING_PARAM_CAMPAIGN_CONTENT,	$config[self::TRACKING_PARAM_CAMPAIGN_CONTENT]);
78
        $container->setParameter($prefix.self::TRACKING_PARAM_CAMPAIGN_MEDIUM,	$config[self::TRACKING_PARAM_CAMPAIGN_MEDIUM]);
79
        $container->setParameter($prefix.self::TRACKING_PARAM_CAMPAIGN_NAME,	$config[self::TRACKING_PARAM_CAMPAIGN_NAME]);
80
        $container->setParameter($prefix.self::TRACKING_PARAM_CAMPAIGN_SOURCE,	$config[self::TRACKING_PARAM_CAMPAIGN_SOURCE]);
81
        $container->setParameter($prefix.self::TRACKING_PARAM_CAMPAIGN_TERM,	$config[self::TRACKING_PARAM_CAMPAIGN_TERM]);
82
        $container->setParameter($prefix.self::EMAIL_TRACKING_BASE_URL,	        $config[self::EMAIL_TRACKING_BASE_URL]);
83
        $container->setParameter($prefix.self::DOMAINS_FOR_TRACKING,	        $config[self::DOMAINS_FOR_TRACKING]);
84
        $container->setAlias    ($prefix.self::EMAIL_TRACKING_CODE_BUILDER,     $config[self::EMAIL_TRACKING_CODE_BUILDER]);
85
86
        $container->setAlias	($prefix.self::WEB_VIEW_SERVICE,			$config[self::WEB_VIEW_SERVICE]);
87
        $container->setParameter($prefix.self::WEB_VIEW_RETENTION,			$config[self::WEB_VIEW_RETENTION]);
88
89
        $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
90
        $loader->load('services.yml');
91
92
    }
93
}
94