Subtree::accept()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
c 0
b 0
f 0
rs 10
cc 1
nc 1
nop 1
1
<?php
2
3
namespace Kaliop\EzFindSearchEngineBundle\Core\Persistence\eZFind\Content\Search\Common\Gateway\CriterionHandler;
4
5
use eZ\Publish\API\Repository\Values\Content\Query\Criterion;
6
use eZ\Publish\API\Repository\Values\Content\Query\Criterion\Operator;
7
use Kaliop\EzFindSearchEngineBundle\Core\Persistence\eZFind\Content\Search\Common\Gateway\CriteriaConverter;
8
use Kaliop\EzFindSearchEngineBundle\Core\Persistence\eZFind\Content\Search\Common\Gateway\CriterionHandler;
9
10
class Subtree extends CriterionHandler
11
{
12
    public function accept(Criterion $criterion)
13
    {
14
        return $criterion instanceof Criterion\Subtree;
15
    }
16
17
    public function handle(CriteriaConverter $converter, Criterion $criterion)
18
    {
19
        $result = [];
20
21
        $valueList = (array)$criterion->value;
22
23
        foreach ($valueList as $value) {
24
            // be tolerant to devs forgetting 1st and last slash
25
            $value = '/' . trim($value, '/') . '/';
26
            $result[] = 'meta_path_string_ms:' . $this->escapeValue($value) . '*';
27
        }
28
29
        return count($result) == 1 ? $result[0] : array_unshift($result, 'OR');
30
    }
31
}
32