CustomizationsManager   A
last analyzed

Complexity

Total Complexity 12

Size/Duplication

Total Lines 109
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 0
Metric Value
wmc 12
lcom 1
cbo 2
dl 0
loc 109
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 6 1
A parseEditables() 0 10 2
A buildData() 0 6 1
A customization() 0 4 1
A saveSettings() 0 6 1
B groupEditableSettings() 0 30 6
1
<?php
2
3
namespace Giftd\Editor;
4
5
class CustomizationsManager
6
{
7
    /**
8
     * @var Customization
9
     */
10
    protected $customization;
11
12
    /**
13
     * CustomizationsManager constructor.
14
     *
15
     * @param Customization   $customization
16
     * @param SettingsManager $settings
17
     * @param array           $previewData   = []
18
     */
19
    public function __construct(Customization $customization, SettingsManager $settings, array $previewData = [])
20
    {
21
        $customization->setSettings($settings)->setPreviewData($previewData);
22
23
        $this->customization = $customization;
24
    }
25
26
    /**
27
     * Parses Customization's editables and generates final editables array.
28
     *
29
     * @return array
30
     */
31
    public function parseEditables()
32
    {
33
        $editables = $this->customization->editables();
34
35
        if (!is_array($editables)) {
36
            return [];
37
        }
38
39
        return $this->groupEditableSettings($editables);
40
    }
41
42
    /**
43
     * Builds customization data.
44
     *
45
     * @return Customization
46
     */
47
    public function buildData()
48
    {
49
        $this->customization->build();
50
51
        return $this->customization;
52
    }
53
54
    /**
55
     * Get original customization.
56
     *
57
     * @return Customization
58
     */
59
    public function customization()
60
    {
61
        return $this->customization;
62
    }
63
64
    /**
65
     * Saves customization settings.
66
     *
67
     * @return $this
68
     */
69
    public function saveSettings()
70
    {
71
        $this->customization->save();
72
73
        return $this;
74
    }
75
76
    /**
77
     * Performs editable settings groupping.
78
     *
79
     * @param array $editables
80
     *
81
     * @return array
82
     */
83
    protected function groupEditableSettings(array $editables)
84
    {
85
        $disabledEditables = $this->customization()->getDisabledEditables();
86
87
        foreach ($editables as &$group) {
88
            if (!count($group['settings'])) {
89
                continue;
90
            }
91
92
            $settings = [];
93
94
            foreach ($group['settings'] as $setting) {
95
                /**
96
                 * @var Editable $setting
97
                 */
98
                $attributes = $setting->attributes();
99
100
                if (empty($attributes['name']) || in_array($attributes['name'], $disabledEditables)) {
101
                    continue;
102
                }
103
104
                $settings[$attributes['name']] = $attributes;
105
                unset($settings[$attributes['name']]['name']);
106
            }
107
108
            $group['settings'] = $settings;
109
        }
110
111
        return $editables;
112
    }
113
}
114