Completed
Push — master ( 65f236...9f6b61 )
by Alex
11s
created

DebrilRssAtomExtension::setDefinition()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 7
rs 9.4285
c 0
b 0
f 0
cc 3
eloc 4
nc 2
nop 3
1
<?php
2
3
namespace Debril\RssAtomBundle\DependencyInjection;
4
5
use Symfony\Component\DependencyInjection\ContainerBuilder;
6
use Symfony\Component\DependencyInjection\Definition;
7
use Symfony\Component\Config\FileLocator;
8
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
9
use Symfony\Component\DependencyInjection\Loader;
10
11
/**
12
 * This is the class that loads and manages your bundle configuration.
13
 *
14
 * To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html}
15
 */
16
class DebrilRssAtomExtension extends Extension
17
{
18
    /**
19
     * {@inheritDoc}
20
     */
21
    public function load(array $configs, ContainerBuilder $container)
22
    {
23
        $configuration = new Configuration();
24
        $config = $this->processConfiguration($configuration, $configs);
25
26
        $this->setDefinition($container, 'logger', 'Psr\Log\NullLogger');
27
28
        $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
29
        $loader->load('services.xml');
30
31
        $default = array(
32
            \DateTime::RFC3339,
33
            \DateTime::RSS,
34
            \DateTime::W3C,
35
            'Y-m-d\TH:i:s.uP',
36
            'Y-m-d',
37
            'd/m/Y',
38
            'd M Y H:i:s P',
39
            'D, d M Y H:i O',
40
            'D, d M Y H:i:s O',
41
            'D M d Y H:i:s e',
42
        );
43
44
        if (!isset($config['date_formats'])) {
45
            $container->setParameter(
46
                'debril_rss_atom.date_formats',
47
                $default
48
            );
49
        } else {
50
            $container->setParameter(
51
                'debril_rss_atom.date_formats',
52
                array_merge($default, $config['date_formats'])
53
            );
54
        }
55
56
        if ( !isset($config['curlopt']) ) {
57
            $container->setParameter('debril_rss_atom.curlopt', array());
58
        } else {
59
            $container->setParameter('debril_rss_atom.curlopt', $config['curlopt']);
60
        }
61
62
        $container->setParameter('debril_rss_atom.private_feeds', $config['private']);
63
    }
64
65
    /**
66
     * @param ContainerBuilder $container
67
     * @param $serviceName
68
     * @param $className
69
     * @return $this
70
     */
71
    protected function setDefinition(ContainerBuilder $container, $serviceName, $className)
72
    {
73
        if ( ! $container->hasDefinition($serviceName) && ! $container->hasAlias($serviceName)) {
74
            $container->setDefinition($serviceName, new Definition($className));
75
        }
76
        return $this;
77
    }
78
}
79