Code Duplication    Length = 30-30 lines in 2 locations

eZ/Publish/Core/REST/Server/Input/Parser/Criterion/LogicalAnd.php 1 location

@@ 19-48 (lines=30) @@
16
/**
17
 * Parser for LogicalAnd Criterion.
18
 */
19
class LogicalAnd extends CriterionParser
20
{
21
    /**
22
     * Parses input structure to a LogicalAnd Criterion object.
23
     *
24
     * @param array $data
25
     * @param \eZ\Publish\Core\REST\Common\Input\ParsingDispatcher $parsingDispatcher
26
     *
27
     * @throws \eZ\Publish\Core\REST\Common\Exceptions\Parser
28
     *
29
     * @return \eZ\Publish\API\Repository\Values\Content\Query\Criterion\LogicalAnd
30
     */
31
    public function parse(array $data, ParsingDispatcher $parsingDispatcher)
32
    {
33
        if (!array_key_exists('AND', $data) && !is_array($data['AND'])) {
34
            throw new Exceptions\Parser('Invalid <AND> format');
35
        }
36
37
        $criteria = array();
38
        foreach ($data['AND'] as $criterionName => $criterionData) {
39
            if (is_array($criterionData) && !array_key_exists(0, $criterionData)) {
40
                $criterionName = key($criterionData);
41
                $criterionData = current($criterionData);
42
            }
43
            $criteria[] = $this->dispatchCriterion($criterionName, $criterionData, $parsingDispatcher);
44
        }
45
46
        return new LogicalAndCriterion($criteria);
47
    }
48
}
49

eZ/Publish/Core/REST/Server/Input/Parser/Criterion/LogicalOr.php 1 location

@@ 19-48 (lines=30) @@
16
/**
17
 * Parser for LogicalOr Criterion.
18
 */
19
class LogicalOr extends CriterionParser
20
{
21
    /**
22
     * Parses input structure to a LogicalAnd Criterion object.
23
     *
24
     * @param array $data
25
     * @param \eZ\Publish\Core\REST\Common\Input\ParsingDispatcher $parsingDispatcher
26
     *
27
     * @throws \eZ\Publish\Core\REST\Common\Exceptions\Parser
28
     *
29
     * @return \eZ\Publish\API\Repository\Values\Content\Query\Criterion\LogicalOr
30
     */
31
    public function parse(array $data, ParsingDispatcher $parsingDispatcher)
32
    {
33
        if (!array_key_exists('OR', $data) && !is_array($data['OR'])) {
34
            throw new Exceptions\Parser('Invalid <OR> format');
35
        }
36
37
        $criteria = array();
38
        foreach ($data['OR'] as $criterionName => $criterionData) {
39
            if (is_array($criterionData) && !array_key_exists(0, $criterionData)) {
40
                $criterionName = key($criterionData);
41
                $criterionData = current($criterionData);
42
            }
43
            $criteria[] = $this->dispatchCriterion($criterionName, $criterionData, $parsingDispatcher);
44
        }
45
46
        return new LogicalOrCriterion($criteria);
47
    }
48
}
49