InsertParamsServices::process()   B
last analyzed

Complexity

Conditions 5
Paths 5

Size

Total Lines 26
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 26
rs 8.439
c 0
b 0
f 0
cc 5
eloc 14
nc 5
nop 1
1
<?php
2
3
namespace Devhelp\PiwikBundle\DependencyInjection\Compiler;
4
5
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
6
use Symfony\Component\DependencyInjection\ContainerBuilder;
7
use Symfony\Component\DependencyInjection\Reference;
8
9
class InsertParamsServices implements CompilerPassInterface
10
{
11
12
    public function process(ContainerBuilder $container)
13
    {
14
        $apiParams = $container->getParameter('devhelp_piwik.api.parameters');
15
16
        foreach ($apiParams as $api => $params) {
17
            $apiDefinition = $container->getDefinition('devhelp_piwik.api.'.$api);
18
19
            $defaultParams = [];
20
21
            foreach ($params as $name => $value) {
22
                if ($container->has($value)) {
23
                    $definition = $container->findDefinition($value);
24
25
                    if (!is_a($definition->getClass(), '\Devhelp\Piwik\Api\Param\Param', true)) {
26
                        throw new \InvalidArgumentException('Param must implement Devhelp\Piwik\Api\Param\Param');
27
                    }
28
29
                    $defaultParams[$name] = new Reference($value);
30
                } else {
31
                    $defaultParams[$name] = $value;
32
                }
33
            }
34
35
            $apiDefinition->addMethodCall('setDefaultParams', [$defaultParams]);
36
        }
37
    }
38
}
39