Completed
Push — master ( 4e273e...e5332e )
by Adrian
02:17
created

Select   A

Complexity

Total Complexity 12

Size/Duplication

Total Lines 91
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Test Coverage

Coverage 96.67%

Importance

Changes 5
Bugs 1 Features 0
Metric Value
wmc 12
c 5
b 1
f 0
lcom 0
cbo 3
dl 0
loc 91
ccs 29
cts 30
cp 0.9667
rs 10

7 Methods

Rating   Name   Duplication   Size   Complexity  
A getOptions() 0 4 2
A getFirstOption() 0 4 2
A setOptions() 0 6 1
A setFirstOption() 0 6 1
A getDefaultSpecs() 0 6 1
A prepareFiltrator() 0 12 1
A filterValue() 0 12 4
1
<?php
2
namespace Sirius\Input\Element\Input;
3
4
use Sirius\Input\Element\Input as BaseInput;
5
use Sirius\Input\Specs;
6
use Sirius\Filtration\Filter\Callback;
7
use Sirius\Input\InputFilter;
8
9
class Select extends BaseInput
10
{
11
12 6
    protected function getDefaultSpecs()
13
    {
14
        return array(
15 6
            Specs::WIDGET => 'select'
16 6
        );
17
    }
18
19
    /**
20
     * Sets the options for elements like selects, radio buttons, checkboxes
21
     *
22
     * @param array $options
23
     *
24
     * @return $this
25
     */
26 7
    public function setOptions($options = array())
27
    {
28 7
        $this[Specs::OPTIONS] = $options;
29
30 7
        return $this;
31
    }
32
33
    /**
34
     * Retrieves the options for selects, radio button, checkboxes
35
     *
36
     * @return array
37
     */
38 2
    public function getOptions()
39
    {
40 2
        return isset($this[Specs::OPTIONS]) ? $this[Specs::OPTIONS] : array();
41
    }
42
43
    /**
44
     * Sets the first option for SELECT widgets
45
     *
46
     * @param null $firstOption
47
     *
48
     * @return $this
49
     */
50 1
    public function setFirstOption($firstOption = null)
51
    {
52 1
        $this[Specs::FIRST_OPTION] = $firstOption;
53
54 1
        return $this;
55
    }
56
57
    /**
58
     * Retrieve the first option for SELECT widgets
59
     * @return null
60
     */
61 1
    public function getFirstOption()
62
    {
63 1
        return isset($this[Specs::FIRST_OPTION]) ? $this[Specs::FIRST_OPTION] : null;
64
    }
65
66 2
    protected function prepareFiltrator(InputFilter $input)
67
    {
68 2
        parent::prepareFiltrator($input);
69 2
        $filtrator = $input->getFiltrator();
70 2
        $filtrator->add(
71 2
            $this->getName(),
72 2
            'callback',
73
            array(
74 2
                Callback::OPTION_CALLBACK => array($this, 'filterValue')
75 2
            )
76 2
        );
77 2
    }
78
79
    /**
80
     * Filters out the input value if it is not in the options set
81
     *
82
     * @param mixed $value
83
     * @param null|string $valueIdentifier
84
     *
85
     * @return mixed
86
     */
87 1
    public function filterValue($value, $valueIdentifier = null)
0 ignored issues
show
Unused Code introduced by
The parameter $valueIdentifier 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...
88
    {
89 1
        if (!$value) {
90
            return null;
91
        }
92 1
        $allowedValues = array_keys($this->getOptions());
93 1
        if (is_array($allowedValues) && in_array($value, $allowedValues)) {
94 1
            return $value;
95
        }
96
97 1
        return null;
98
    }
99
}
100