Passed
Push[email protected] ( be84d5...130fec )
by Bruno
03:41
created

AddtionalClasses::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 4
rs 10
1
<?php
2
/**
3
 * Copyright © O2TI. All rights reserved.
4
 *
5
 * @author    Bruno Elisei <[email protected]>
6
 * See COPYING.txt for license details.
7
 */
8
9
namespace O2TI\AdvancedFieldsCheckout\Model;
10
11
use O2TI\AdvancedFieldsCheckout\Helper\Config;
12
13
/**
14
 *  AddtionalClasses - Change Classes for Inputs.
15
 */
16
class AddtionalClasses
17
{
18
    /**
19
     * @var Config
20
     */
21
    protected $config;
22
23
    /**
24
     * @param Config $config
25
     */
26
    public function __construct(
27
        Config $config
28
    ) {
29
        $this->config = $config;
30
    }
31
32
    /**
33
     * Set Classes of Fields.
34
     *
35
     * @param array $fields
36
     *
37
     * @return array
38
     */
39
    public function setAddtionalClasses(array $fields): array
40
    {
41
        foreach ($fields as $key => $data) {
42
            $oldClass = null;
43
            if (in_array('config', $fields[$key])) {
44
                if ($fields[$key]['config']) {
45
                    $newClass = $this->config->getAddtionalClassesForField($key);
46
                    if ($newClass) {
47
                        if (in_array('additionalClasses', $fields[$key]['config'])) {
48
                            $oldClass = $fields[$key]['config']['additionalClasses'];
49
                        }
50
                        $fields[$key]['config']['additionalClasses'] = $oldClass.' '.$newClass;
51
                    }
52
                    if ($key === 'street') {
53
                        $fields = $this->setClassesOfStreetLine($fields, $key);
54
                    }
55
                }
56
            }
57
        }
58
59
        return $fields;
60
    }
61
62
    /**
63
     * Set Classes of Street Line.
64
     *
65
     * @param array  $fields
66
     * @param string $field
67
     *
68
     * @return array
69
     */
70
    public function setClassesOfStreetLine(array $fields, string $field): array
71
    {
72
        $oldClass = null;
73
        foreach ($fields[$field]['children'] as $arrayPosition => $streetLine) {
74
            $streetKey = 'street_'.$arrayPosition;
75
            $newClass = $this->config->getAddtionalClassesForField($streetKey);
76
            if ($newClass) {
77
                if (in_array('additionalClasses', $fields[$field]['children'][$arrayPosition]['config'])) {
78
                    $oldClass = $fields[$field]['children'][$arrayPosition]['config']['additionalClasses'];
79
                }
80
                $fields[$field]['children'][$arrayPosition]['config']['additionalClasses'] = $oldClass.' '.$newClass;
81
            }
82
        }
83
84
        return $fields;
85
    }
86
}
87