Completed
Pull Request — master (#46)
by Daniel
03:48
created

getQueryCriteriaBuildersForContext()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 10
ccs 6
cts 6
cp 1
rs 9.4285
cc 1
eloc 6
nc 1
nop 1
crap 1
1
<?php
2
3
namespace KGzocha\Searcher\QueryCriteriaBuilder\Collection;
4
5
use KGzocha\Searcher\Context\SearchingContextInterface;
6
use KGzocha\Searcher\QueryCriteriaBuilder\QueryCriteriaBuilderInterface;
7
8
class QueryCriteriaBuilderCollection implements QueryCriteriaBuilderCollectionInterface
9
{
10
    /**
11
     * @var QueryCriteriaBuilderInterface[]
12
     */
13
    private $queryCriteriaBuilders;
14
15
    /**
16
     * @param QueryCriteriaBuilderInterface[] $builders
17
     */
18 3
    public function __construct(array $builders = [])
19
    {
20 3
        $this->queryCriteriaBuilders = [];
21 3
        foreach ($builders as $builder) {
22
            // In this way we will ensure that
23
            // every element in array has correct type
24 3
            $this->addQueryCriteriaBuilder($builder);
25
        }
26 3
    }
27
28
    /**
29
     * @inheritDoc
30
     */
31 3
    public function addQueryCriteriaBuilder(QueryCriteriaBuilderInterface $filterImposer)
32
    {
33 3
        $this->queryCriteriaBuilders[] = $filterImposer;
34
35 3
        return $this;
36
    }
37
38
    /**
39
     * @inheritDoc
40
     */
41 3
    public function getQueryCriteriaBuilders()
42
    {
43 3
        return $this->queryCriteriaBuilders;
44
    }
45
46
    /**
47
     * @inheritdoc
48
     */
49 2
    public function getQueryCriteriaBuildersForContext(
50
        SearchingContextInterface $searchingContext
51
    ) {
52 2
        return array_filter(
53 2
            $this->getQueryCriteriaBuilders(),
54 2
            function(QueryCriteriaBuilderInterface $queryCriteriaBuilder) use ($searchingContext) {
55 2
                return $queryCriteriaBuilder->supportsSearchingContext($searchingContext);
56 2
            }
57
        );
58
    }
59
}
60