Passed
Push — master ( 2ee2bd...602ea4 )
by Benoit
02:02
created

JBen87ParsleyExtension::getAlias()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace JBen87\ParsleyBundle\DependencyInjection;
4
5
use Symfony\Component\Config\FileLocator;
6
use Symfony\Component\DependencyInjection\ContainerBuilder;
7
use Symfony\Component\DependencyInjection\Extension\Extension;
8
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
9
10
class JBen87ParsleyExtension extends Extension
11
{
12
    /**
13
     * @var string
14
     */
15
    private $alias;
16
17
    /**
18
     * @param string $alias
19
     */
20
    public function __construct(string $alias)
21
    {
22
        $this->alias = $alias;
23
    }
24
25
    /**
26
     * @inheritdoc
27
     */
28
    public function load(array $configs, ContainerBuilder $container): void
29
    {
30
        $config = $this->processConfiguration(new Configuration($this->alias), $configs);
31
32
        $container->setParameter('jben87_parsley.enabled', $config['enabled']);
33
        $container->setParameter('jben87_parsley.trigger_event', $config['trigger_event']);
34
35
        $this->setDateTimePatternParameters($config, $container);
36
37
        $loader = new XmlFileLoader($container, new FileLocator(sprintf('%s/../Resources/config', __DIR__)));
38
        $loader->load('services.xml');
39
    }
40
41
    /**
42
     * @inheritdoc
43
     */
44
    public function getAlias(): string
45
    {
46
        return $this->alias;
47
    }
48
49
    /**
50
     * @param array $config
51
     * @param ContainerBuilder $container
52
     */
53
    private function setDateTimePatternParameters(array $config, ContainerBuilder $container): void
54
    {
55
        $locale = $container->getParameter('locale');
56
57
        $datePattern = '\d{4}-\d{2}-\d{2}';
58
        if (true === array_key_exists($locale, $config['date_pattern'])) {
59
            $datePattern = $config['date_pattern'][$locale];
60
        }
61
62
        $timePattern = '\d{2}:\d{2}';
63
        if (true === array_key_exists($locale, $config['time_pattern'])) {
64
            $timePattern = $config['time_pattern'][$locale];
65
        }
66
67
        $dateTimePattern = sprintf('%s %s', $datePattern, $timePattern);
68
        if (true === array_key_exists($locale, $config['datetime_pattern'])) {
69
            $dateTimePattern = $config['datetime_pattern'][$locale];
70
        }
71
72
        $container->setParameter('jben87_parsley.date_pattern', $datePattern);
73
        $container->setParameter('jben87_parsley.time_pattern', $timePattern);
74
        $container->setParameter('jben87_parsley.datetime_pattern', $dateTimePattern);
75
    }
76
}
77