Completed
Push — master ( aeb11c...f98da5 )
by Adrian
02:32
created

RequiredWith::validate()   B

Complexity

Conditions 5
Paths 6

Size

Total Lines 15
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 5

Importance

Changes 4
Bugs 1 Features 0
Metric Value
c 4
b 1
f 0
dl 0
loc 15
ccs 9
cts 9
cp 1
rs 8.8571
cc 5
eloc 9
nc 6
nop 2
crap 5
1
<?php
2
namespace Sirius\Validation\Rule;
3
4
class RequiredWith extends Required
5
{
6
    const OPTION_ITEM = 'item';
7
8
    const MESSAGE = 'This field is required';
9
    const LABELED_MESSAGE = '{label} is required';
10
11
    protected $optionsIndexMap = array(
12
        0 => self::OPTION_ITEM
13
    );
14
15 4
    public function validate($value, $valueIdentifier = null)
16
    {
17 4
        $this->value = $value;
18
19 4
        $relatedItemPath  = $this->getRelatedValueIdentifier($valueIdentifier, $this->options[self::OPTION_ITEM]);
20 4
        $relatedItemValue = $relatedItemPath !== null ? $this->context->getItemValue($relatedItemPath) : null;
21
22 4
        if (isset($this->options[self::OPTION_ITEM]) && $relatedItemValue !== null) {
23 3
            $this->success = ($value !== null || trim($value) !== '');
24 3
        } else {
25 1
            $this->success = true;
26
        }
27
28 4
        return $this->success;
29
    }
30
}
31