ExpressButton::getSupportedLocaleCode()   A
last analyzed

Complexity

Conditions 3
Paths 2

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 7
rs 9.4285
c 0
b 0
f 0
cc 3
eloc 4
nc 2
nop 1
1
<?php
2
3
/**
4
 * PAYONE Magento 2 Connector is free software: you can redistribute it and/or modify
5
 * it under the terms of the GNU Lesser General Public License as published by
6
 * the Free Software Foundation, either version 3 of the License, or
7
 * (at your option) any later version.
8
 *
9
 * PAYONE Magento 2 Connector is distributed in the hope that it will be useful,
10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
 * GNU Lesser General Public License for more details.
13
 *
14
 * You should have received a copy of the GNU Lesser General Public License
15
 * along with PAYONE Magento 2 Connector. If not, see <http://www.gnu.org/licenses/>.
16
 *
17
 * PHP version 5
18
 *
19
 * @category  Payone
20
 * @package   Payone_Magento2_Plugin
21
 * @author    FATCHIP GmbH <[email protected]>
22
 * @copyright 2003 - 2016 Payone GmbH
23
 * @license   <http://www.gnu.org/licenses/> GNU Lesser General Public License
24
 * @link      http://www.payone.de
25
 */
26
27
namespace Payone\Core\Block\Paypal;
28
29
use Magento\Framework\View\Element\Template;
30
31
/**
32
 * Block class for the PayPal Express button
33
 */
34
class ExpressButton extends Template implements \Magento\Catalog\Block\ShortcutInterface
35
{
36
    /**
37
     * Shortcut alias
38
     *
39
     * @var string
40
     */
41
    protected $alias = 'payone.block.paypal.expressbutton';
42
43
    /**
44
     * Is mandate link to be shown?
45
     *
46
     * @var bool|null
47
     */
48
    protected $blShowMandateLink = null;
49
50
    /**
51
     * Instruction notes
52
     *
53
     * @var string|bool
54
     */
55
    protected $sInstructionNotes = false;
56
57
    /**
58
     * @var \Magento\Framework\Locale\ResolverInterface
59
     */
60
    protected $localeResolver;
61
62
    /**
63
     * Locale codes supported by misc images (marks, shortcuts etc)
64
     *
65
     * @var array
66
     */
67
    protected $aSupportedLocales = [
68
        'de_DE',
69
        'en_AU',
70
        'en_GB',
71
        'en_US',
72
        'es_ES',
73
        'es_XC',
74
        'fr_FR',
75
        'fr_XC',
76
        'it_IT',
77
        'ja_JP',
78
        'nl_NL',
79
        'pl_PL',
80
        'zh_CN',
81
        'zh_XC',
82
    ];
83
84
    /**
85
     * Constructor
86
     *
87
     * @param \Magento\Framework\View\Element\Template\Context $context
88
     * @param \Magento\Framework\Locale\ResolverInterface      $localeResolver
89
     * @param array                                            $data
90
     */
91
    public function __construct(
92
        \Magento\Framework\View\Element\Template\Context $context,
93
        \Magento\Framework\Locale\ResolverInterface $localeResolver,
94
        array $data = []
95
    ) {
96
        parent::__construct($context, $data);
97
        $this->localeResolver = $localeResolver;
98
        $this->setTemplate('paypal/express_button.phtml');
99
    }
100
101
    /**
102
     * Get shortcut alias
103
     *
104
     * @return string
105
     */
106
    public function getAlias()
107
    {
108
        return $this->alias;
109
    }
110
111
    /**
112
     * URL to paypal start controller
113
     *
114
     * @return string
115
     */
116
    public function getPayPalExpressLink()
117
    {
118
        return $this->getUrl('payone/paypal/express');
119
    }
120
121
    /**
122
     * Check whether specified locale code is supported. Fallback to en_US
123
     *
124
     * @param  string $sLocale
125
     * @return string
126
     */
127
    protected function getSupportedLocaleCode($sLocale = null)
128
    {
129
        if (!$sLocale || !in_array($sLocale, $this->aSupportedLocales)) {
0 ignored issues
show
Bug Best Practice introduced by
The expression $sLocale of type string|null is loosely compared to false; this is ambiguous if the string can be empty. You might want to explicitly use === null instead.

In PHP, under loose comparison (like ==, or !=, or switch conditions), values of different types might be equal.

For string values, the empty string '' is a special case, in particular the following results might be unexpected:

''   == false // true
''   == null  // true
'ab' == false // false
'ab' == null  // false

// It is often better to use strict comparison
'' === false // false
'' === null  // false
Loading history...
130
            return 'en_US';
131
        }
132
        return $sLocale;
133
    }
134
135
    /**
136
     * Return URL to PayPal Express logo
137
     *
138
     * @return string
139
     */
140
    public function getPayPalExpressLogoUrl()
141
    {
142
        $sCurrentLocal = $this->localeResolver->getLocale();
143
        $sPayPalLocal = $this->getSupportedLocaleCode($sCurrentLocal);
144
        return sprintf('https://www.paypal.com/%s/i/btn/btn_xpressCheckout.gif', $sPayPalLocal);
145
    }
146
}
147