Completed
Push — master ( e5332e...a89400 )
by Adrian
02:09
created

Collection::setElementFactory()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 3
Bugs 0 Features 1
Metric Value
c 3
b 0
f 1
dl 0
loc 7
ccs 4
cts 4
cp 1
rs 9.4285
cc 1
eloc 4
nc 1
nop 1
crap 1
1
<?php
2
namespace Sirius\Input\Element;
3
4
use Sirius\Input\Traits\HasChildrenTrait;
5
use Sirius\Input\Traits\HasLabelTrait;
6
use Sirius\Input\Traits\HasHintTrait;
7
use Sirius\Input\Traits\HasFiltersTrait;
8
use Sirius\Input\Traits\HasValidationRulesTrait;
9
use Sirius\Input\Element\Factory as ElementFactory;
10
use Sirius\Input\Element\FactoryAwareInterface as ElementFactoryAwareInterface;
11
use Sirius\Input\InputFilter;
12
use Sirius\Input\Specs;
13
14
class Collection extends Input implements ElementFactoryAwareInterface
15
{
16
    use HasChildrenTrait;
17
    use HasLabelTrait;
18
    use HasHintTrait;
19
    use HasFiltersTrait;
20
    use HasValidationRulesTrait;
21
22 4
    protected function getDefaultSpecs()
23
    {
24
        return array(
25 4
            Specs::WIDGET => 'fieldset'
26 4
        );
27
    }
28
29
    /**
30
     * Generate the namespaced field name of an element inside the fielset
31
     *
32
     * @param string $name
33
     *
34
     * @return string
35
     */
36 4
    protected function getFullChildName($name)
37
    {
38 4
        $firstOpenBracket = strpos($name, '[');
39
        // the name is already at least 2 levels deep like street[name]
40 4
        if ($firstOpenBracket !== false) {
41 1
            $name = substr($name, 0, $firstOpenBracket) . '][' . substr($name, $firstOpenBracket + 1, - 1);
42 1
        }
43
44 4
        return $this->getName() . '[*][' . $name . ']';
45
    }
46
47 1
    public function prepareInputFilter(InputFilter $inputFilter)
48
    {
49 1
        parent::prepareInputFilter($inputFilter);
50 1
        $this->cleanUpMissingGroups();
51
52 1
        foreach ($this->getElements() as $element) {
53 1
            $element->prepareInputFilter($inputFilter);
54 1
        }
55 1
    }
56
}
57