Completed
Push — pagerfanta-fix ( 187c46...923c07 )
by Kamil
25:06 queued 03:45
created

ArrayToDefinitionConverter::convertFilter()   C

Complexity

Conditions 7
Paths 64

Size

Total Lines 25
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 25
rs 6.7272
c 0
b 0
f 0
cc 7
eloc 15
nc 64
nop 2
1
<?php
2
3
/*
4
 * This file is part of the Sylius package.
5
 *
6
 * (c) Paweł Jędrzejewski
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Sylius\Component\Grid\Definition;
13
14
/**
15
 * @author Paweł Jędrzejewski <[email protected]>
16
 */
17
final class ArrayToDefinitionConverter implements ArrayToDefinitionConverterInterface
18
{
19
    /**
20
     * {@inheritdoc}
21
     */
22
    public function convert($code, array $configuration)
23
    {
24
        $grid = Grid::fromCodeAndDriverConfiguration($code, $configuration['driver']['name'], $configuration['driver']['options']);
25
26
        if (array_key_exists('sorting', $configuration)) {
27
            $grid->setSorting($configuration['sorting']);
28
        }
29
30
        foreach ($configuration['fields'] as $name => $fieldConfiguration) {
31
            $grid->addField($this->convertField($name, $fieldConfiguration));
32
        }
33
34
        foreach ($configuration['filters'] as $name => $filterConfiguration) {
35
            $grid->addFilter($this->convertFilter($name, $filterConfiguration));
36
        }
37
38
        foreach ($configuration['actions'] as $name => $actionGroupConfiguration) {
0 ignored issues
show
Comprehensibility Naming introduced by
The variable name $actionGroupConfiguration exceeds the maximum configured length of 20.

Very long variable names usually make code harder to read. It is therefore recommended not to make variable names too verbose.

Loading history...
39
            $grid->addActionGroup($this->convertActionGroup($name, $actionGroupConfiguration));
40
        }
41
42
        return $grid;
43
    }
44
45
    /**
46
     * @param string $name
47
     * @param array $configuration
48
     *
49
     * @return Field
50
     */
51
    private function convertField($name, array $configuration)
52
    {
53
        $field = Field::fromNameAndType($name, $configuration['type']);
54
55
        if (array_key_exists('path', $configuration)) {
56
            $field->setPath($configuration['path']);
57
        }
58
        if (array_key_exists('label', $configuration)) {
59
            $field->setLabel($configuration['label']);
60
        }
61
        if (array_key_exists('enabled', $configuration)) {
62
            $field->setEnabled($configuration['enabled']);
63
        }
64
        if (array_key_exists('sortable', $configuration)) {
65
            $field->setSortable($configuration['sortable']);
66
        }
67
        if (array_key_exists('position', $configuration)) {
68
            $field->setPosition($configuration['position']);
69
        }
70
        if (array_key_exists('options', $configuration)) {
71
            $field->setOptions($configuration['options']);
72
        }
73
74
        return $field;
75
    }
76
77
    /**
78
     * @param string $name
79
     * @param array $configuration
80
     *
81
     * @return Filter
82
     */
83
    private function convertFilter($name, array $configuration)
84
    {
85
        $filter = Filter::fromNameAndType($name, $configuration['type']);
86
87
        if (array_key_exists('label', $configuration)) {
88
            $filter->setLabel($configuration['label']);
89
        }
90
        if (array_key_exists('template', $configuration)) {
91
            $filter->setTemplate($configuration['template']);
92
        }
93
        if (array_key_exists('enabled', $configuration)) {
94
            $filter->setEnabled($configuration['enabled']);
95
        }
96
        if (array_key_exists('position', $configuration)) {
97
            $filter->setPosition($configuration['position']);
98
        }
99
        if (array_key_exists('options', $configuration)) {
100
            $filter->setOptions($configuration['options']);
101
        }
102
        if (array_key_exists('form_options', $configuration)) {
103
            $filter->setFormOptions($configuration['form_options']);
104
        }
105
106
        return $filter;
107
    }
108
109
    /**
110
     * @param string $name
111
     * @param array $configuration
112
     *
113
     * @return ActionGroup
114
     */
115
    private function convertActionGroup($name, array $configuration)
116
    {
117
        $actionGroup = ActionGroup::named($name);
118
119
        foreach ($configuration as $actionName => $actionConfiguration) {
120
            $actionGroup->addAction($this->convertAction($actionName, $actionConfiguration));
121
        }
122
123
        return $actionGroup;
124
    }
125
126
    /**
127
     * @param string $name
128
     * @param array $configuration
129
     *
130
     * @return Action
131
     */
132
    private function convertAction($name, array $configuration)
133
    {
134
        $action = Action::fromNameAndType($name, $configuration['type']);
135
136
        if (array_key_exists('label', $configuration)) {
137
            $action->setLabel($configuration['label']);
138
        }
139
        if (array_key_exists('icon', $configuration)) {
140
            $action->setIcon($configuration['icon']);
141
        }
142
        if (array_key_exists('enabled', $configuration)) {
143
            $action->setEnabled($configuration['enabled']);
144
        }
145
        if (array_key_exists('position', $configuration)) {
146
            $action->setPosition($configuration['position']);
147
        }
148
        if (array_key_exists('options', $configuration)) {
149
            $action->setOptions($configuration['options']);
150
        }
151
152
        return $action;
153
    }
154
}
155