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

Autocomplete   A

Complexity

Total Complexity 16

Size/Duplication

Total Lines 86
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 30
c 1
b 0
f 0
dl 0
loc 86
rs 10
wmc 16

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
B setAutocomplete() 0 32 10
A setAutocompleteOfStreetLine() 0 21 5
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
 *  Autocomplete - Implements Autocomplete for Inputs.
15
 */
16
class Autocomplete
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 Components Autocomplete in Fields.
34
     *
35
     * @param array $fields
36
     *
37
     * @return array
38
     */
39
    public function setAutocomplete(array $fields): array
40
    {
41
        foreach ($fields as $key => $data) {
42
            if (in_array('config', $fields[$key])) {
43
                if ($fields[$key]['config']) {
44
                    $autocomplete = $this->config->getAutocompleteForField($key);
45
                    if ($autocomplete) {
46
                        $fields[$key]['config']['autocomplete'] = $autocomplete;
47
                        if ($fields[$key]['config']['elementTmpl'] === 'ui/form/element/input') {
48
                            $fields[$key]['config']['elementTmpl'] = 'O2TI_AdvancedFieldsCheckout/form/element/input';
49
                        }
50
                        if ($fields[$key]['config']['elementTmpl'] === 'ui/form/element/select') {
51
                            $fields[$key]['config']['elementTmpl'] = 'O2TI_AdvancedFieldsCheckout/form/element/select';
52
                        }
53
                        if ($fields[$key]['config']['elementTmpl'] === 'ui/form/element/password') {
54
                            // phpcs:ignore
55
                            $fields[$key]['config']['elementTmpl'] = 'O2TI_AdvancedFieldsCheckout/form/element/password';
56
                        }
57
                        // phpcs:ignore
58
                        if ($fields[$key]['config']['elementTmpl'] === 'O2TI_CheckoutIdentificationStep/form/element/password') {
59
                            // phpcs:ignore
60
                            $fields[$key]['config']['elementTmpl'] = 'O2TI_AdvancedFieldsCheckout/form/element/O2TI/password';
61
                        }
62
                    }
63
                    if ($key === 'street') {
64
                        $fields = $this->setAutocompleteOfStreetLine($fields, $key);
65
                    }
66
                }
67
            }
68
        }
69
70
        return $fields;
71
    }
72
73
    /**
74
     * Set Components Autocomplete in Street Lines.
75
     *
76
     * @param array  $fields
77
     * @param string $field
78
     *
79
     * @return array
80
     */
81
    public function setAutocompleteOfStreetLine(array $fields, string $field): array
82
    {
83
        foreach ($fields[$field]['children'] as $arrayPosition => $streetLine) {
84
            $streetKey = 'street_'.$arrayPosition;
85
            $autocomplete = $this->config->getAutocompleteForField($streetKey);
86
            if ($autocomplete) {
87
                if ($fields[$field]['children'][$arrayPosition]['config']['elementTmpl'] === 'ui/form/element/input') {
88
                    // phpcs:ignore
89
                    $fields[$field]['children'][$arrayPosition]['config']['elementTmpl'] = 'O2TI_AdvancedFieldsCheckout/form/element/input';
90
                }
91
                // phpcs:ignore
92
                if ($fields[$field]['children'][$arrayPosition]['config']['elementTmpl'] === 'O2TI_AdvancedStreetAddress/form/element/number') {
93
                    // phpcs:ignore
94
                    $fields[$field]['children'][$arrayPosition]['config']['elementTmpl'] = 'O2TI_AdvancedFieldsCheckout/form/element/number';
95
                }
96
97
                $fields[$field]['children'][$arrayPosition]['config']['autocomplete'] = $autocomplete;
98
            }
99
        }
100
101
        return $fields;
102
    }
103
}
104