EcocodeSyliusBasePriceExtension::load()   A
last analyzed

Complexity

Conditions 5
Paths 3

Size

Total Lines 25

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 15
CRAP Score 5

Importance

Changes 0
Metric Value
dl 0
loc 25
ccs 15
cts 15
cp 1
rs 9.2088
c 0
b 0
f 0
cc 5
nc 3
nop 2
crap 5
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Ecocode\SyliusBasePricePlugin\DependencyInjection;
6
7
use Symfony\Component\Config\Definition\ConfigurationInterface;
8
use Symfony\Component\Config\FileLocator;
9
use Symfony\Component\DependencyInjection\ContainerBuilder;
10
use Symfony\Component\DependencyInjection\Extension\Extension;
11
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
12
13
/**
14
 * Class EcocodeSyliusBasePriceExtension
15
 * @package Ecocode\SyliusBasePricePlugin\DependencyInjection
16
 */
17
final class EcocodeSyliusBasePriceExtension extends Extension
18
{
19
    /**
20
     * @param array            $config
21
     * @param ContainerBuilder $container
22
     *
23
     * @throws \Exception
24
     */
25 4
    public function load(array $config, ContainerBuilder $container): void
26
    {
27 4
        $original = 0;
28 4
        $override = 1;
29
30
        // if mapping override is set then drop default config altogether
31 4
        if (isset($config[$original]['mapping']) && isset($config[$override]['mapping'])) {
32
            /** @var array|null $new */
33 2
            $new = $config[$override]['mapping'];
34 2
            if (is_array($new) && count($new) > 0) {
35 1
                $config[$original]['mapping'] = [];
36
            }
37
        }
38
39 4
        $config = $this->processConfiguration($this->getConfiguration([], $container), $config);
40
41 4
        $container->setParameter('ecocode_sylius_base_price', $config);
42 4
        $container->setParameter('ecocode_sylius_base_price.mapping', $config['mapping']);
43 4
        $container->setParameter('ecocode_sylius_base_price.measurements', array_keys((array)$config['mapping']));
44 4
        $container->setParameter('ecocode_sylius_base_price.use_short_unit_name', $config['use_short_unit_name']);
45
46 4
        $loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
47
48 4
        $loader->load('services.yml');
49 4
    }
50
51
    /**
52
     * @param array            $config
53
     * @param ContainerBuilder $container
54
     *
55
     * @return ConfigurationInterface
56
     */
57 4
    public function getConfiguration(array $config, ContainerBuilder $container): ConfigurationInterface
58
    {
59 4
        return new Configuration();
60
    }
61
}
62