ArrayComparison::doNotIntersect()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 2
crap 1
1
<?php
2
3
namespace PhpAbac\Comparison;
4
5
class ArrayComparison extends AbstractComparison
6
{
7 3
    public function isIn(array $haystack, $needle): bool
8
    {
9 3
        return in_array($needle, $haystack);
10
    }
11
12 1
    public function isNotIn(array $haystack, $needle): bool
13
    {
14 1
        return !$this->isIn($haystack, $needle);
15
    }
16
17 2
    public function intersect(array $array1, array $array2): bool
18
    {
19 2
        return count(array_intersect($array1, $array2)) > 0;
20
    }
21
22 1
    public function doNotIntersect(array $array1, array $array2): bool
23
    {
24 1
        return !$this->intersect($array1, $array2);
25
    }
26
27 4
    public function contains(array $policyRuleAttributes, array $attributes, array $extraData = []): bool
0 ignored issues
show
Unused Code introduced by
The parameter $attributes is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
28
    {
29 4
        foreach ($extraData['attribute']->getValue() as $attribute) {
30 4
            $result = true;
31
            // For each attribute, we check the whole rules set
32 4
            foreach ($policyRuleAttributes as $pra) {
33 4
                $attributeData = $pra->getAttribute();
34 4
                $attributeData->setValue(
35 4
                    $this->comparisonManager->getAttributeManager()->retrieveAttribute($attributeData, $extraData['user'], $attribute)
36
                );
37
                // If one field is not matched, the whole attribute is rejected
38 4
                if (!$this->comparisonManager->compare($pra, true)) {
39 2
                    $result = false;
40 4
                    break;
41
                }
42
            }
43
            // If the result is still true at the end of the attribute check, the rule is enforced
44 4
            if ($result === true) {
45 4
                return true;
46
            }
47
        }
48 4
        return false;
49
    }
50
}
51