Issues (1092)

Model/Plugins/GuestCheckoutLayoutProcessor.php (12 issues)

1
<?php
2
3
namespace Payone\Core\Model\Plugins;
4
5
use Magento\Customer\Api\CustomerMetadataInterface;
0 ignored issues
show
The type Magento\Customer\Api\CustomerMetadataInterface was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
6
use Magento\Framework\Serialize\Serializer\Json;
0 ignored issues
show
The type Magento\Framework\Serialize\Serializer\Json was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
7
use Magento\Checkout\Model\Session;
0 ignored issues
show
The type Magento\Checkout\Model\Session was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
8
use Payone\Core\Model\Source\CreditratingCheckType;
9
10
class GuestCheckoutLayoutProcessor
11
{
12
    /**
13
     * @var \Magento\Customer\Api\CustomerMetadataInterface
14
     */
15
    protected $customerMetaData;
16
17
    /**
18
     * @var \Magento\Framework\Serialize\Serializer\Json
19
     */
20
    protected $json;
21
22
    /**
23
     * PAYONE order helper
24
     *
25
     * @var \Payone\Core\Helper\Checkout
26
     */
27
    protected $checkoutHelper;
28
29
    /**
30
     * @var \Magento\Checkout\Model\Session
31
     */
32
    protected $checkoutSession;
33
34
    /**
35
     * @var \Magento\Framework\View\Asset\Repository
0 ignored issues
show
The type Magento\Framework\View\Asset\Repository was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
36
     */
37
    protected $assetRepo;
38
39
    /**
40
     * GuestCheckoutLayoutProcessor constructor.
41
     *
42
     * @param \Magento\Customer\Api\CustomerMetadataInterface $customerMetadata
43
     * @param \Magento\Framework\Serialize\Serializer\Json $json
44
     * @param \Payone\Core\Helper\Checkout $checkoutHelper
45
     * @param \Magento\Checkout\Model\Session $checkoutSession
46
     * @param \Magento\Framework\View\Asset\Repository $assetRepo
47
     */
48
    public function __construct(
49
        \Magento\Customer\Api\CustomerMetadataInterface $customerMetadata,
50
        \Magento\Framework\Serialize\Serializer\Json $json,
51
        \Payone\Core\Helper\Checkout $checkoutHelper,
52
        \Magento\Checkout\Model\Session $checkoutSession,
53
        \Magento\Framework\View\Asset\Repository $assetRepo
54
    ) {
55
        $this->json = $json;
56
        $this->customerMetaData = $customerMetadata;
57
        $this->checkoutHelper = $checkoutHelper;
58
        $this->checkoutSession = $checkoutSession;
59
        $this->assetRepo = $assetRepo;
60
    }
61
62
    /**
63
     * Check if form has to be extended
64
     * Extension needed for guest checkout when Boniversum creditrating is enabled
65
     *
66
     * @return bool
67
     */
68
    protected function isExtendedCustomerFormNeeded()
69
    {
70
        if ($this->checkoutHelper->getCurrentCheckoutMethod($this->checkoutSession->getQuote()) != \Magento\Checkout\Model\Type\Onepage::METHOD_GUEST) {
0 ignored issues
show
The type Magento\Checkout\Model\Type\Onepage was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
71
            return false;
72
        }
73
74
        if (!$this->checkoutHelper->getConfigParam('enabled', 'creditrating', 'payone_protect')) {
75
            return false;
76
        }
77
78
        $sBonicheckType = $this->checkoutHelper->getConfigParam('type', 'creditrating', 'payone_protect');
79
        if ($sBonicheckType != CreditratingCheckType::BONIVERSUM_VERITA) {
80
            return false;
81
        }
82
        return true;
83
    }
84
85
    /**
86
     * @param \Magento\Checkout\Block\Checkout\LayoutProcessor $subject
87
     * @param array $jsLayout
88
     * @return array
89
     */
90
    public function afterProcess(\Magento\Checkout\Block\Checkout\LayoutProcessor $subject, array $jsLayout)
0 ignored issues
show
The parameter $subject is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

90
    public function afterProcess(/** @scrutinizer ignore-unused */ \Magento\Checkout\Block\Checkout\LayoutProcessor $subject, array $jsLayout)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
The type Magento\Checkout\Block\Checkout\LayoutProcessor was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
91
    {
92
        // Only add extra fields to guest checkout
93
        if ($this->isExtendedCustomerFormNeeded() === false) {
94
            return $jsLayout;
95
        }
96
97
        $shippingAddress = &$jsLayout['components']['checkout']['children']['steps']['children']['shipping-step']
98
        ['children']['shippingAddress']['children']['shipping-address-fieldset']['children'];
99
100
        $this->addGenderField($shippingAddress);
101
        $this->addBirthdayField($shippingAddress);
102
103
        return $jsLayout;
104
    }
105
106
    /**
107
     * @param $jsLayout
108
     * @return void
109
     */
110
    private function addGenderField(&$jsLayout)
111
    {
112
        $options = $this->getGenderOptions() ?: [];
113
        $enabled  = $this->isEnabled();
114
        if (!empty($options) && $enabled) {
115
            $jsLayout['gender'] = [
116
                'component' => 'Magento_Ui/js/form/element/select',
117
                'config' => [
118
                    'template' => 'ui/form/field',
119
                    'elementTmpl' => 'ui/form/element/select',
120
                    'id' => 'gender',
121
                    'options' => $options
122
                ],
123
                'label' => __('Gender'),
0 ignored issues
show
The function __ was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

123
                'label' => /** @scrutinizer ignore-call */ __('Gender'),
Loading history...
124
                'provider' => 'checkoutProvider',
125
                'visible' => true,
126
                'validation' => [
127
                    'required-entry' => true
128
                ],
129
                'sortOrder' => 10,
130
                'id' => 'gender',
131
                'dataScope' => 'shippingAddress.gender',
132
            ];
133
        }
134
    }
135
136
    /**
137
     * @param $jsLayout
138
     * @return void
139
     */
140
    private function addBirthdayField(&$jsLayout)
141
    {
142
        $enabled  = $this->isEnabled();
143
        if ($enabled) {
144
            $jsLayout['dob'] = [
145
                'component' => 'Magento_Ui/js/form/element/date',
146
                'config' => [
147
                    'template' => 'ui/form/field',
148
                    'additionalClasses' => 'date field-dob',
149
                    'elementTmpl' => 'ui/form/element/date',
150
                    'id' => 'dob',
151
                    'options' => [
152
                        'changeYear' => true,
153
                        'changeMonth' => true,
154
                        'showOn' => "both",
155
                        'buttonText' => "Select Date",
156
                        'maxDate' => "-1d",
157
                        'yearRange' => "-120y:c+nn",
158
                        'showsTime' => false,
159
                        'buttonImage' => $this->assetRepo->getUrlWithParams('Magento_Theme::calendar.png', ['_secure' => true])
160
                    ],
161
                ],
162
                'label' => __('Date of Birth'),
0 ignored issues
show
The function __ was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

162
                'label' => /** @scrutinizer ignore-call */ __('Date of Birth'),
Loading history...
163
                'provider' => 'checkoutProvider',
164
                'visible' => true,
165
                'validation' => [
166
                    'required-entry' => true
167
                ],
168
                'sortOrder' => 1000,
169
                'id' => 'dob',
170
                'dataScope' => 'shippingAddress.dob',
171
            ];
172
        }
173
    }
174
175
    /**
176
     * Retrieve customer attribute instance
177
     *
178
     * @param string $attributeCode
179
     * @return \Magento\Customer\Api\Data\AttributeMetadataInterface|null
0 ignored issues
show
The type Magento\Customer\Api\Dat...ributeMetadataInterface was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
180
     */
181
    protected function _getAttribute($attributeCode)
182
    {
183
        try {
184
            return $this->customerMetaData->getAttributeMetadata($attributeCode);
185
        } catch (\Magento\Framework\Exception\NoSuchEntityException $e) {
0 ignored issues
show
The type Magento\Framework\Exception\NoSuchEntityException was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
186
            return null;
187
        }
188
    }
189
190
    /**
191
     * @return array
192
     */
193
    private function getGenderOptions()
194
    {
195
        $optionsData = [];
196
197
        $attribute = $this->_getAttribute('gender');
198
        if ($attribute) {
199
            $options =  $attribute->getOptions() ?: [];
200
201
            foreach ($options as $option) {
202
                $optionsData[] = [
203
                    'label' => __($option->getLabel()),
0 ignored issues
show
The function __ was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

203
                    'label' => /** @scrutinizer ignore-call */ __($option->getLabel()),
Loading history...
204
                    'value' => $option->getValue()
205
                ];
206
            }
207
        }
208
        return $optionsData;
209
    }
210
211
    /**
212
     * @return bool
213
     */
214
    public function isEnabled()
215
    {
216
        return $this->_getAttribute('gender') ? (bool)$this->_getAttribute('gender')->isVisible() : false;
217
    }
218
}
219