Completed
Pull Request — master (#114)
by Florian
03:20
created

Base::serialize()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 6
rs 9.4285
cc 2
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\Helper;
28
29
use Magento\Store\Model\ScopeInterface;
30
31
/**
32
 * Helper base class
33
 */
34
class Base extends \Magento\Framework\App\Helper\AbstractHelper
35
{
36
    /**
37
     * Store manager object
38
     *
39
     * @var \Magento\Store\Model\StoreManagerInterface
40
     */
41
    protected $storeManager;
42
43
    /**
44
     * PAYONE shop helper
45
     *
46
     * @var \Payone\Core\Helper\Shop
47
     */
48
    protected $shopHelper;
49
50
    /**
51
     * Constructor
52
     *
53
     * @param \Magento\Framework\App\Helper\Context      $context
54
     * @param \Magento\Store\Model\StoreManagerInterface $storeManager
55
     * @param \Payone\Core\Helper\Shop                   $shopHelper
56
     */
57
    public function __construct(
58
        \Magento\Framework\App\Helper\Context $context,
59
        \Magento\Store\Model\StoreManagerInterface $storeManager,
60
        \Payone\Core\Helper\Shop $shopHelper
61
    ) {
62
        parent::__construct($context);
63
        $this->storeManager = $storeManager;
64
        $this->shopHelper = $shopHelper;
65
    }
66
67
    /**
68
     * Helper method to get parameter from the config
69
     * divided by the config path elements
70
     *
71
     * @param  string $sKey
72
     * @param  string $sGroup
73
     * @param  string $sSection
74
     * @param  string $sStoreCode
75
     * @return string
76
     */
77
    public function getConfigParam($sKey, $sGroup = 'global', $sSection = 'payone_general', $sStoreCode = null)
78
    {
79
        if (!$sStoreCode) {
0 ignored issues
show
Bug Best Practice introduced by
The expression $sStoreCode 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...
80
            $sStoreCode = $this->storeManager->getStore()->getCode();
81
        }
82
        $sPath = $sSection."/".$sGroup."/".$sKey;
83
        return $this->scopeConfig->getValue($sPath, ScopeInterface::SCOPE_STORE, $sStoreCode);
84
    }
85
86
    /**
87
     * Get a certain config param for all available stores
88
     *
89
     * @param  string $sKey
90
     * @param  string $sGroup
91
     * @param  string $sSection
92
     * @return array
93
     */
94
    public function getConfigParamAllStores($sKey, $sGroup = 'global', $sSection = 'payone_general')
95
    {
96
        $aValues = [];
97
        $aShopIds = $this->storeManager->getStores(false, true);
98
        foreach ($aShopIds as $sStoreCode => $oStore) {
99
            $sValue = $this->getConfigParam($sKey, $sGroup, $sSection, $sStoreCode);
100
            if (array_search($sValue, $aValues) === false) {
101
                $aValues[] = $sValue;
102
            }
103
        }
104
        return $aValues;
105
    }
106
107
    /**
108
     * Get parameter from the request
109
     *
110
     * @param  string $sParameter
111
     * @return mixed
112
     */
113
    public function getRequestParameter($sParameter)
114
    {
115
        return $this->_getRequest()->getParam($sParameter);
116
    }
117
118
    /**
119
     * Handle the serialization of strings depending on the Magento version
120
     *
121
     * @param  mixed $mValue
122
     * @return string
123
     */
124
    public function serialize($mValue) {
125
        if (version_compare($this->shopHelper->getMagentoVersion(), '2.2.0', '>=')) { // Magento 2.2.0 and above
126
            return json_encode($mValue);
127
        }
128
        return serialize($mValue);
129
    }
130
131
    /**
132
     * @param  string $sValue
133
     * @return mixed
134
     */
135
    public function unserialize($sValue) {
136
        if (version_compare($this->shopHelper->getMagentoVersion(), '2.2.0', '>=')) { // Magento 2.2.0 and above
137
            return json_decode($sValue, true);
138
        }
139
        return unserialize($sValue);
140
    }
141
}
142