-
Notifications
You must be signed in to change notification settings - Fork 39
Expand file tree
/
Copy pathWelpMailchimpExtension.php
More file actions
47 lines (37 loc) · 1.78 KB
/
WelpMailchimpExtension.php
File metadata and controls
47 lines (37 loc) · 1.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
namespace Welp\MailchimpBundle\DependencyInjection;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
class WelpMailchimpExtension extends Extension
{
public function load(array $configs, ContainerBuilder $container): void
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$container->setParameter('welp_mailchimp.lists', $config['lists']);
$container->setParameter('welp_mailchimp.list_provider', $config['list_provider']);
$container->setParameter('welp_mailchimp.api_key', isset($config['api_key']) ? $config['api_key'] : null);
$loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../../config'));
$loader->load('services.yaml');
// create an alias for the chosen list provider service
$alias = $config['list_provider'];
$container->setAlias('welp_mailchimp.list_provider.current', $alias);
// Load all the used subscriber providers in the factory
$this->loadSubscriberProviders($container, $config['lists']);
}
public function getAlias(): string
{
return 'welp_mailchimp';
}
public function loadSubscriberProviders(ContainerBuilder $container, $lists): void
{
$providerFactory = $container->getDefinition('welp_mailchimp.provider.factory');
foreach ($lists as $list) {
$providerKey = $list['subscriber_provider'];
$providerFactory->addMethodCall('addProvider', [$providerKey, new Reference($providerKey)]);
}
}
}