ManagerConfigurator::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 5
rs 10
cc 1
nc 1
nop 2
1
<?php
2
3
namespace Doctrine\Bundle\DoctrineBundle;
4
5
use Doctrine\ORM\EntityManagerInterface;
6
use Doctrine\ORM\Query\Filter\SQLFilter;
7
8
/**
9
 * Configurator for an EntityManager
10
 */
11
class ManagerConfigurator
12
{
13
    /** @var string[] */
14
    private $enabledFilters = [];
15
16
    /** @var array<string,array<string,string>> */
17
    private $filtersParameters = [];
18
19
    /**
20
     * @param string[]                           $enabledFilters
21
     * @param array<string,array<string,string>> $filtersParameters
22
     */
23
    public function __construct(array $enabledFilters, array $filtersParameters)
24
    {
25
        $this->enabledFilters    = $enabledFilters;
26
        $this->filtersParameters = $filtersParameters;
27
    }
28
29
    /**
30
     * Create a connection by name.
31
     */
32
    public function configure(EntityManagerInterface $entityManager)
33
    {
34
        $this->enableFilters($entityManager);
35
    }
36
37
    /**
38
     * Enables filters for a given entity manager
39
     */
40
    private function enableFilters(EntityManagerInterface $entityManager) : void
41
    {
42
        if (empty($this->enabledFilters)) {
43
            return;
44
        }
45
46
        $filterCollection = $entityManager->getFilters();
47
        foreach ($this->enabledFilters as $filter) {
48
            $filterObject = $filterCollection->enable($filter);
49
            if ($filterObject === null) {
50
                continue;
51
            }
52
53
            $this->setFilterParameters($filter, $filterObject);
54
        }
55
    }
56
57
    /**
58
     * Sets default parameters for a given filter
59
     */
60
    private function setFilterParameters(string $name, SQLFilter $filter) : void
61
    {
62
        if (empty($this->filtersParameters[$name])) {
63
            return;
64
        }
65
66
        $parameters = $this->filtersParameters[$name];
67
        foreach ($parameters as $paramName => $paramValue) {
68
            $filter->setParameter($paramName, $paramValue);
69
        }
70
    }
71
}
72