Completed
Push — master ( 091041...db5976 )
by
unknown
14s queued 11s
created

Pagantis::checkEnvVariables()   A

Complexity

Conditions 4
Paths 6

Size

Total Lines 20
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 13
nc 6
nop 0
dl 0
loc 20
rs 9.8333
c 0
b 0
f 0
1
<?php
2
/**
3
 * This file is part of the official Pagantis module for PrestaShop.
4
 *
5
 * @author    Pagantis <[email protected]>
6
 * @copyright 2015-2016 Pagantis
7
 * @license   proprietary
8
 */
9
10
if (!defined('_PS_VERSION_')) {
11
    exit;
12
}
13
14
define('_PS_PAGANTIS_DIR', _PS_MODULE_DIR_. '/pagantis');
0 ignored issues
show
Bug introduced by
The constant _PS_MODULE_DIR_ was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
15
define('PROMOTIONS_CATEGORY', 'pagantis-promotion-product');
16
define('PROMOTIONS_CATEGORY_NAME', 'Pagantis Promoted Product');
17
18
require _PS_PAGANTIS_DIR.'/vendor/autoload.php';
19
20
/**
21
 * Class Pagantis
22
 */
23
class Pagantis extends PaymentModule
0 ignored issues
show
Bug introduced by
The type PaymentModule 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...
24
{
25
    /**
26
     * @var string
27
     */
28
    public $url = 'https://pagantis.com';
29
30
    /**
31
     * @var bool
32
     */
33
    public $bootstrap = true;
34
35
    /** @var string $language */
36
    public $language;
37
38
    /**
39
     * Default module advanced configuration values
40
     *
41
     * @var array
42
     */
43
    public $defaultConfigs = array(
44
        'PAGANTIS_TITLE' => 'Instant Financing',
45
        'PAGANTIS_SIMULATOR_DISPLAY_TYPE' => 'sdk.simulator.types.SIMPLE',
46
        'PAGANTIS_SIMULATOR_DISPLAY_SKIN' => 'sdk.simulator.skins.BLUE',
47
        'PAGANTIS_SIMULATOR_DISPLAY_POSITION' => 'hookDisplayProductButtons',
48
        'PAGANTIS_SIMULATOR_START_INSTALLMENTS' => '3',
49
        'PAGANTIS_SIMULATOR_CSS_POSITION_SELECTOR' => 'default',
50
        'PAGANTIS_SIMULATOR_DISPLAY_CSS_POSITION' => 'sdk.simulator.positions.INNER',
51
        'PAGANTIS_SIMULATOR_CSS_PRICE_SELECTOR' => 'default',
52
        'PAGANTIS_SIMULATOR_CSS_QUANTITY_SELECTOR' => 'default',
53
        'PAGANTIS_FORM_DISPLAY_TYPE' => '0',
54
        'PAGANTIS_DISPLAY_MIN_AMOUNT' => '1',
55
        'PAGANTIS_URL_OK' => '',
56
        'PAGANTIS_URL_KO' => '',
57
        'PAGANTIS_ALLOWED_COUNTRIES' => 'a:2:{i:0;s:2:"es";i:1;s:2:"it";}',
58
        'PAGANTIS_PROMOTION_EXTRA' => 'Finance this product <span class="pmt-no-interest">without interest!</span>',
59
        'PAGANTIS_SIMULATOR_THOUSAND_SEPARATOR' => '.',
60
        'PAGANTIS_SIMULATOR_DECIMAL_SEPARATOR' => ',',
61
    );
62
63
    /**
64
     * Pagantis constructor.
65
     *
66
     * Define the module main properties so that prestashop understands what are the module requirements
67
     * and how to manage the module.
68
     *
69
     */
70
    public function __construct()
71
    {
72
        $this->name = 'pagantis';
0 ignored issues
show
Bug Best Practice introduced by
The property name does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
73
        $this->tab = 'payments_gateways';
0 ignored issues
show
Bug Best Practice introduced by
The property tab does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
74
        $this->version = '8.2.1';
0 ignored issues
show
Bug Best Practice introduced by
The property version does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
75
        $this->author = 'Pagantis';
0 ignored issues
show
Bug Best Practice introduced by
The property author does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
76
        $this->currencies = true;
0 ignored issues
show
Bug Best Practice introduced by
The property currencies does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
77
        $this->currencies_mode = 'checkbox';
0 ignored issues
show
Bug Best Practice introduced by
The property currencies_mode does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
78
        $this->module_key = '2b9bc901b4d834bb7069e7ea6510438f';
0 ignored issues
show
Bug Best Practice introduced by
The property module_key does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
79
        $this->ps_versions_compliancy = array('min' => '1.5', 'max' => _PS_VERSION_);
0 ignored issues
show
Bug introduced by
The constant _PS_VERSION_ was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
Bug Best Practice introduced by
The property ps_versions_compliancy does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
80
        $this->displayName = $this->l('Pagantis');
0 ignored issues
show
Bug Best Practice introduced by
The property displayName does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
81
        $this->description = $this->l(
0 ignored issues
show
Bug Best Practice introduced by
The property description does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
82
            'Instant, easy and effective financial tool for your customers'
83
        );
84
85
        $sql_file = dirname(__FILE__).'/sql/install.sql';
86
        $this->loadSQLFile($sql_file);
87
88
        $this->checkEnvVariables();
89
90
        $this->migrate();
91
92
        $this->checkHooks();
93
94
        $this->checkPromotionCategory();
95
96
        parent::__construct();
97
98
        $this->getUserLanguage();
99
    }
100
101
    /**
102
     * Configure the variables for Pagantis payment method.
103
     *
104
     * @return bool
105
     */
106
    public function install()
107
    {
108
        if (!extension_loaded('curl')) {
109
            $this->_errors[] =
0 ignored issues
show
Bug Best Practice introduced by
The property _errors does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
110
                $this->l('You have to enable the cURL extension on your server to install this module');
111
            return false;
112
        }
113
        if (!version_compare(phpversion(), '5.3.0', '>=')) {
114
            $this->_errors[] = $this->l('The PHP version bellow 5.3.0 is not supported');
115
            return false;
116
        }
117
118
        Configuration::updateValue('pagantis_is_enabled', 1);
0 ignored issues
show
Bug introduced by
The type Configuration 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...
119
        Configuration::updateValue('pagantis_simulator_is_enabled', 1);
120
        Configuration::updateValue('pagantis_public_key', '');
121
        Configuration::updateValue('pagantis_private_key', '');
122
123
        $return =  (parent::install()
124
            && $this->registerHook('displayShoppingCart')
125
            && $this->registerHook('paymentOptions')
126
            && $this->registerHook('displayRightColumn')
127
            && $this->registerHook('displayLeftColumn')
128
            && $this->registerHook('displayRightColumnProduct')
129
            && $this->registerHook('displayLeftColumnProduct')
130
            && $this->registerHook('displayProductButtons')
131
            && $this->registerHook('displayOrderConfirmation')
132
            && $this->registerHook('header')
133
        );
134
135
        if ($return && _PS_VERSION_ < "1.7") {
0 ignored issues
show
Bug introduced by
The constant _PS_VERSION_ was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
136
            $this->registerHook('payment');
137
        }
138
139
        return $return;
140
    }
141
142
    /**
143
     * Remove the production private api key and remove the files
144
     *
145
     * @return bool
146
     */
147
    public function uninstall()
148
    {
149
        Configuration::deleteByName('pagantis_public_key');
150
        Configuration::deleteByName('pagantis_private_key');
151
152
        return parent::uninstall();
153
    }
154
155
    /**
156
     * Migrate the configs of older versions < 7x to new configurations
157
     */
158
    public function migrate()
159
    {
160
        if (Configuration::get('PAGANTIS_MIN_AMOUNT')) {
161
            Db::getInstance()->update(
0 ignored issues
show
Bug introduced by
The type Db 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...
162
                'pagantis_config',
163
                array('value' => Configuration::get('PAGANTIS_MIN_AMOUNT')),
164
                'config = \'PAGANTIS_DISPLAY_MIN_AMOUNT\''
165
            );
166
            Configuration::updateValue('PAGANTIS_MIN_AMOUNT', false);
167
            Configuration::updateValue('pagantis_is_enabled', 1);
168
            Configuration::updateValue('pagantis_simulator_is_enabled', 1);
169
170
            // migrating pk/tk from previous version
171
            if (Configuration::get('pagantis_public_key') === false
172
                && Configuration::get('PAGANTIS_PUBLIC_KEY_PROD')
173
            ) {
174
                Configuration::updateValue('pagantis_public_key', Configuration::get('PAGANTIS_PUBLIC_KEY_PROD'));
175
                Configuration::updateValue('PAGANTIS_PUBLIC_KEY_PROD', false);
176
            } elseif (Configuration::get('pagantis_public_key') === false
177
                && Configuration::get('PAGANTIS_PUBLIC_KEY_TEST')
178
            ) {
179
                Configuration::updateValue('pagantis_public_key', Configuration::get('PAGANTIS_PUBLIC_KEY_TEST'));
180
                Configuration::updateValue('PAGANTIS_PUBLIC_KEY_TEST', false);
181
            }
182
183
            if (Configuration::get('pagantis_private_key') === false
184
                && Configuration::get('PAGANTIS_PRIVATE_KEY_PROD')
185
            ) {
186
                Configuration::updateValue('pagantis_private_key', Configuration::get('PAGANTIS_PRIVATE_KEY_PROD'));
187
                Configuration::updateValue('PAGANTIS_PRIVATE_KEY_PROD', false);
188
            } elseif (Configuration::get('pagantis_private_key') === false
189
                && Configuration::get('PAGANTIS_PRIVATE_KEY_TEST')
190
            ) {
191
                Configuration::updateValue('pagantis_private_key', Configuration::get('PAGANTIS_PRIVATE_KEY_TEST'));
192
                Configuration::updateValue('PAGANTIS_PRIVATE_KEY_TEST', false);
193
            }
194
        }
195
    }
196
197
    /**
198
     * Check if new hooks used in new 7x versions are enabled and activate them if needed
199
     *
200
     * @throws PrestaShopDatabaseException
201
     */
202
    public function checkHooks()
203
    {
204
        try {
205
            $sql_content = 'select * from ' . _DB_PREFIX_. 'hook_module where 
0 ignored issues
show
Bug introduced by
The constant _DB_PREFIX_ was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
206
            id_module = \'' . Module::getModuleIdByName($this->name) . '\' and 
0 ignored issues
show
Bug introduced by
The type Module 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...
207
            id_shop = \'' . Shop::getContextShopID() . '\' and 
0 ignored issues
show
Bug introduced by
The type Shop 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...
208
            id_hook = \'' . Hook::getIdByName('header') . '\'';
0 ignored issues
show
Bug introduced by
The type Hook 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...
209
            $hook_exists = Db::getInstance()->ExecuteS($sql_content);
210
            if (empty($hook_exists)) {
211
                $sql_insert = 'insert into ' . _DB_PREFIX_.  'hook_module 
212
            (id_module, id_shop, id_hook, position)
213
            values
214
            (\''. Module::getModuleIdByName($this->name) . '\',
215
            \''. Shop::getContextShopID() . '\',
216
            \''. Hook::getIdByName('header') . '\',
217
            150)';
218
                Db::getInstance()->execute($sql_insert);
219
            }
220
        } catch (\Exception $exception) {
221
            // continue without errors
222
        }
223
    }
224
225
    /**
226
     * @throws PrestaShopDatabaseException
227
     */
228
    public function checkEnvVariables()
229
    {
230
        $sql_content = 'select * from ' . _DB_PREFIX_. 'pagantis_config';
0 ignored issues
show
Bug introduced by
The constant _DB_PREFIX_ was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
231
        $dbConfigs = Db::getInstance()->executeS($sql_content);
232
233
        // Convert a multimple dimension array for SQL insert statements into a simple key/value
234
        $simpleDbConfigs = array();
235
        foreach ($dbConfigs as $config) {
236
            $simpleDbConfigs[$config['config']] = $config['value'];
237
        }
238
        $newConfigs = array_diff_key($this->defaultConfigs, $simpleDbConfigs);
239
        if (!empty($newConfigs)) {
240
            $data = array();
241
            foreach ($newConfigs as $key => $value) {
242
                $data[] = array(
243
                    'config' => $key,
244
                    'value' => $value,
245
                );
246
            }
247
            Db::getInstance()->insert('pagantis_config', $data);
248
        }
249
    }
250
251
    /**
252
     * @param $sql_file
253
     * @return bool
254
     */
255
    public function loadSQLFile($sql_file)
256
    {
257
        $sql_content = Tools::file_get_contents($sql_file);
0 ignored issues
show
Bug introduced by
The type Tools 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...
258
        $sql_content = str_replace('PREFIX_', _DB_PREFIX_, $sql_content);
0 ignored issues
show
Bug introduced by
The constant _DB_PREFIX_ was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
259
        $sql_requests = preg_split("/;\s*[\r\n]+/", $sql_content);
260
261
        $result = true;
262
        foreach ($sql_requests as $request) {
263
            if (!empty($request)) {
264
                $result &= Db::getInstance()->execute(trim($request));
265
            }
266
        }
267
268
        return $result;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $result also could return the type integer which is incompatible with the documented return type boolean.
Loading history...
269
    }
270
271
    /**
272
     * Check amount of order > minAmount
273
     * Check valid currency
274
     * Check API variables are set
275
     *
276
     * @return bool
277
     * @throws PrestaShopDatabaseException
278
     * @throws PrestaShopException
279
     */
280
    public function isPaymentMethodAvailable()
281
    {
282
        $cart                      = $this->context->cart;
283
        $currency                  = new Currency($cart->id_currency);
0 ignored issues
show
Bug introduced by
The type Currency 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...
284
        $availableCurrencies       = array('EUR');
285
        $pagantisDisplayMinAmount  = Pagantis::getExtraConfig('PAGANTIS_DISPLAY_MIN_AMOUNT');
286
        $pagantisPublicKey         = Configuration::get('pagantis_public_key');
287
        $pagantisPrivateKey        = Configuration::get('pagantis_private_key');
288
        $allowedCountries          = unserialize(Pagantis::getExtraConfig('PAGANTIS_ALLOWED_COUNTRIES'));
289
        return (
290
            $cart->getOrderTotal() >= $pagantisDisplayMinAmount &&
291
            in_array($currency->iso_code, $availableCurrencies) &&
292
            in_array(Tools::strtolower($this->language), $allowedCountries) &&
293
            $pagantisPublicKey &&
294
            $pagantisPrivateKey
295
        );
296
    }
297
298
    /**
299
     * @param Cart $cart
300
     *
301
     * @return array
302
     * @throws Exception
303
     */
304
    private function getButtonTemplateVars(Cart $cart)
0 ignored issues
show
Bug introduced by
The type Cart 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...
305
    {
306
        $currency = new Currency(($cart->id_currency));
307
308
        return array(
309
            'pagantis_button' => '#pagantis_payment_button',
310
            'pagantis_currency_iso' => $currency->iso_code,
311
            'pagantis_cart_total' => $cart->getOrderTotal(),
312
        );
313
    }
314
315
    /**
316
     * Header hook
317
     */
318
    public function hookHeader()
319
    {
320
        $url = 'https://cdn.pagantis.com/js/pg-v2/sdk.js';
321
        if ($this->language == 'ES' || $this->language == null) {
322
            $url = 'https://cdn.pagantis.com/js/pmt-v2/sdk.js';
323
        }
324
        if (_PS_VERSION_ >= "1.7") {
0 ignored issues
show
Bug introduced by
The constant _PS_VERSION_ was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
325
            $this->context->controller->registerJavascript(
326
                sha1(mt_rand(1, 90000)),
327
                $url,
328
                array('server' => 'remote')
329
            );
330
        } else {
331
            $this->context->controller->addJS($url);
332
        }
333
        $this->context->controller->addJS($this->getPathUri(). 'views/js/simulator.js');
334
    }
335
336
    /**
337
     * @return array
338
     * @throws Exception
339
     */
340
    public function hookPaymentOptions()
341
    {
342
        if (!$this->isPaymentMethodAvailable()) {
343
            return array();
344
        }
345
346
        /** @var Cart $cart */
347
        $cart                               = $this->context->cart;
348
        $orderTotal                         = $cart->getOrderTotal();
349
        $promotedAmount                     = 0;
350
        $link                               = $this->context->link;
351
        $pagantisPublicKey                  = Configuration::get('pagantis_public_key');
352
        $pagantisSimulatorIsEnabled         = Configuration::get('pagantis_simulator_is_enabled');
353
        $pagantisIsEnabled                  = Configuration::get('pagantis_is_enabled');
354
        $pagantisSimulatorType              = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_DISPLAY_TYPE');
355
        $pagantisSimulatorCSSSelector       = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_CSS_POSITION_SELECTOR');
356
        $pagantisSimulatorPriceSelector     = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_CSS_PRICE_SELECTOR');
357
        $pagantisSimulatorQuotesStart       = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_START_INSTALLMENTS');
358
        $pagantisSimulatorSkin              = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_DISPLAY_SKIN');
359
        $pagantisSimulatorPosition          = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_DISPLAY_CSS_POSITION');
360
        $pagantisTitle                      = $this->l(Pagantis::getExtraConfig('PAGANTIS_TITLE'));
361
        $pagantisSimulatorThousandSeparator = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_THOUSAND_SEPARATOR');
362
        $pagantisSimulatorDecimalSeparator  = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_DECIMAL_SEPARATOR');
363
364
        $items = $cart->getProducts(true);
365
        foreach ($items as $key => $item) {
366
            $itemCategories = ProductCore::getProductCategoriesFull($item['id_product']);
0 ignored issues
show
Bug introduced by
The type ProductCore 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...
367
            if (in_array(PROMOTIONS_CATEGORY_NAME, array_column($itemCategories, 'name')) !== false) {
368
                $promotedAmount += Product::getPriceStatic($item['id_product']);
0 ignored issues
show
Bug introduced by
The type Product 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...
369
            }
370
        }
371
372
        $this->context->smarty->assign($this->getButtonTemplateVars($cart));
373
        $this->context->smarty->assign(array(
374
            'amount'                             => $orderTotal,
375
            'locale'                             => $this->language,
376
            'pagantisPublicKey'                  => $pagantisPublicKey,
377
            'pagantisCSSSelector'                => $pagantisSimulatorCSSSelector,
378
            'pagantisPriceSelector'              => $pagantisSimulatorPriceSelector,
379
            'pagantisQuotesStart'                => $pagantisSimulatorQuotesStart,
380
            'pagantisSimulatorIsEnabled'         => $pagantisSimulatorIsEnabled,
381
            'pagantisSimulatorType'              => $pagantisSimulatorType,
382
            'pagantisSimulatorSkin'              => $pagantisSimulatorSkin,
383
            'pagantisSimulatorPosition'          => $pagantisSimulatorPosition,
384
            'pagantisIsEnabled'                  => $pagantisIsEnabled,
385
            'pagantisTitle'                      => $pagantisTitle,
386
            'paymentUrl'                         => $link->getModuleLink('pagantis', 'payment'),
387
            'pagantisSimulatorThousandSeparator' => $pagantisSimulatorThousandSeparator,
388
            'pagantisSimulatorDecimalSeparator'  => $pagantisSimulatorDecimalSeparator,
389
            'ps_version'                         => str_replace('.', '-', Tools::substr(_PS_VERSION_, 0, 3)),
0 ignored issues
show
Bug introduced by
The constant _PS_VERSION_ was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
390
        ));
391
392
        $logo = ($this->language == 'ES' || $this->language == null) ? 'logo_pagamastarde.png' : 'logo_pagantis.png';
393
        $paymentOption = new PrestaShop\PrestaShop\Core\Payment\PaymentOption();
0 ignored issues
show
Bug introduced by
The type PrestaShop\PrestaShop\Core\Payment\PaymentOption 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...
394
        $paymentOption
395
            ->setCallToActionText($pagantisTitle)
396
            ->setAction($link->getModuleLink('pagantis', 'payment'))
397
            ->setLogo($this->getPathUri(). 'views/img/' . $logo)
398
            ->setModuleName(__CLASS__)
399
        ;
400
401
        $paymentOption->setAdditionalInformation(
402
            $this->fetch('module:pagantis/views/templates/hook/checkout.tpl')
403
        );
404
405
        return array($paymentOption);
406
    }
407
408
    /**
409
     * Get the form for editing the BackOffice options of the module
410
     *
411
     * @return array
412
     */
413
    private function getConfigForm()
414
    {
415
        return array(
416
            'form' => array(
417
                'legend' => array(
418
                    'title' => $this->l('Basic Settings'),
419
                    'icon' => 'icon-cogs',
420
                ),
421
                'input' => array(
422
                    array(
423
                        'name' => 'pagantis_is_enabled',
424
                        'type' =>  (version_compare(_PS_VERSION_, '1.6')<0) ?'radio' :'switch',
0 ignored issues
show
Bug introduced by
The constant _PS_VERSION_ was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
425
                        'label' => $this->l('Module is enabled'),
426
                        'prefix' => '<i class="icon icon-key"></i>',
427
                        'class' => 't',
428
                        'required' => true,
429
                        'values'=> array(
430
                            array(
431
                                'id' => 'pagantis_is_enabled_true',
432
                                'value' => 1,
433
                                'label' => $this->l('Yes', get_class($this), null, false),
434
                            ),
435
                            array(
436
                                'id' => 'pagantis_is_enabled_false',
437
                                'value' => 0,
438
                                'label' => $this->l('No', get_class($this), null, false),
439
                            ),
440
                        )
441
                    ),
442
                    array(
443
                        'name' => 'pagantis_public_key',
444
                        'suffix' => $this->l('ex: pk_fd53cd467ba49022e4gf215e'),
445
                        'type' => 'text',
446
                        'size' => 60,
447
                        'label' => $this->l('Public Key'),
448
                        'prefix' => '<i class="icon icon-key"></i>',
449
                        'col' => 6,
450
                        'required' => true,
451
                    ),
452
                    array(
453
                        'name' => 'pagantis_private_key',
454
                        'suffix' => $this->l('ex: 21e5723a97459f6a'),
455
                        'type' => 'text',
456
                        'size' => 60,
457
                        'label' => $this->l('Secret Key'),
458
                        'prefix' => '<i class="icon icon-key"></i>',
459
                        'col' => 6,
460
                        'required' => true,
461
                    ),
462
                    array(
463
                        'name' => 'pagantis_simulator_is_enabled',
464
                        'type' => (version_compare(_PS_VERSION_, '1.6')<0) ?'radio' :'switch',
465
                        'label' => $this->l('Simulator is enabled'),
466
                        'prefix' => '<i class="icon icon-key"></i>',
467
                        'class' => 't',
468
                        'required' => true,
469
                        'values'=> array(
470
                            array(
471
                                'id' => 'pagantis_simulator_is_enabled_on',
472
                                'value' => 1,
473
                                'label' => $this->l('Yes'),
474
                            ),
475
                            array(
476
                                'id' => 'pagantis_simulator_is_enabled_off',
477
                                'value' => 0,
478
                                'label' => $this->l('No'),
479
                            ),
480
                        )
481
                    ),
482
                ),
483
                'submit' => array(
484
                    'title' => $this->l('Save'),
485
                ),
486
            ),
487
        );
488
    }
489
490
    /**
491
     * Form configuration function
492
     *
493
     * @param array $settings
494
     *
495
     * @return string
496
     */
497
    private function renderForm(array $settings)
498
    {
499
        $helper = new HelperForm();
0 ignored issues
show
Bug introduced by
The type HelperForm 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...
500
        $helper->show_toolbar = false;
501
        $helper->table = $this->table;
502
        $helper->module = $this;
503
        $helper->default_form_language = $this->context->language->id;
504
        $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG', 0);
505
        $helper->identifier = $this->identifier;
506
        $helper->submit_action = 'submit'.$this->name;
507
        $helper->currentIndex = AdminController::$currentIndex.'&configure='.$this->name;
0 ignored issues
show
Bug introduced by
The type AdminController 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...
508
        $helper->token = Tools::getAdminTokenLite('AdminModules');
509
        $helper->tpl_vars = array(
510
            'fields_value' => $settings,
511
            'languages' => $this->context->controller->getLanguages(),
512
            'id_language' => $this->context->language->id,
513
        );
514
515
        $helper->fields_value['pagantis_url_ok'] = Configuration::get('pagantis_url_ok');
516
517
        return $helper->generateForm(array($this->getConfigForm()));
518
    }
519
520
    /**
521
     * Function to update the variables of Pagantis Module in the backoffice of prestashop
522
     *
523
     * @return string
524
     * @throws SmartyException
525
     */
526
    public function getContent()
527
    {
528
        $error = '';
529
        $message = '';
530
        $settings = array();
531
        $settings['pagantis_public_key'] = Configuration::get('pagantis_public_key');
532
        $settings['pagantis_private_key'] = Configuration::get('pagantis_private_key');
533
        $settingsKeys = array(
534
            'pagantis_is_enabled',
535
            'pagantis_public_key',
536
            'pagantis_private_key',
537
            'pagantis_simulator_is_enabled',
538
        );
539
540
        //Different Behavior depending on 1.6 or earlier
541
        if (Tools::isSubmit('submit'.$this->name)) {
542
            foreach ($settingsKeys as $key) {
543
                switch ($key) {
544
                    case 'pagantis_public_key':
545
                        $value = Tools::getValue($key);
546
                        if (!$value) {
547
                            $error = $this->l('Please add a Pagantis API Public Key');
548
                            break;
549
                        }
550
                        Configuration::updateValue($key, $value);
551
                        $settings[$key] = $value;
552
                        break;
553
                    case 'pagantis_private_key':
554
                        $value = Tools::getValue($key);
555
                        if (!$value) {
556
                            $error = $this->l('Please add a Pagantis API Private Key');
557
                            break;
558
                        }
559
                        Configuration::updateValue($key, $value);
560
                        $settings[$key] = $value;
561
                        break;
562
                    default:
563
                        $value = Tools::getValue($key);
564
                        Configuration::updateValue($key, $value);
565
                        $settings[$key] = $value;
566
                        break;
567
                }
568
                $message = $this->displayConfirmation($this->l('All changes have been saved'));
569
            }
570
        } else {
571
            foreach ($settingsKeys as $key) {
572
                    $settings[$key] = Configuration::get($key);
573
            }
574
        }
575
576
        if ($error) {
577
            $message = $this->displayError($error);
578
        }
579
580
        $logo = $this->getPathUri(). 'views/img/logo_pagantis.png';
581
        if ($this->language == 'ES' || $this->language == null) {
582
            $logo = $this->getPathUri(). 'views/img/logo_pagamastarde.png';
583
        }
584
        $tpl = $this->local_path.'views/templates/admin/config-info.tpl';
585
        $this->context->smarty->assign(array(
586
            'logo' => $logo,
587
            'form' => $this->renderForm($settings),
588
            'message' => $message,
589
            'version' => 'v'.$this->version,
590
        ));
591
592
        return $this->context->smarty->fetch($tpl);
593
    }
594
595
    /**
596
     * Hook to show payment method, this only applies on prestashop <= 1.6
597
     *
598
     * @param $params
599
     * @return bool | string
600
     * @throws Exception
601
     */
602
    public function hookPayment($params)
603
    {
604
        if (!$this->isPaymentMethodAvailable()) {
605
            return false;
606
        }
607
608
        /** @var Cart $cart */
609
610
        $cart                               = $params['cart'];
611
        $orderTotal                         = $cart->getOrderTotal();
612
        $promotedAmount                     = 0;
613
        $link                               = $this->context->link;
614
        $pagantisPublicKey                  = Configuration::get('pagantis_public_key');
615
        $pagantisSimulatorIsEnabled         = Configuration::get('pagantis_simulator_is_enabled');
616
        $pagantisIsEnabled                  = Configuration::get('pagantis_is_enabled');
617
        $pagantisSimulatorType              = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_DISPLAY_TYPE');
618
        $pagantisSimulatorCSSSelector       = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_CSS_POSITION_SELECTOR');
619
        $pagantisSimulatorPriceSelector     = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_CSS_PRICE_SELECTOR');
620
        $pagantisSimulatorQuotesStart       = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_START_INSTALLMENTS');
621
        $pagantisSimulatorSkin              = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_DISPLAY_SKIN');
622
        $pagantisSimulatorPosition          = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_DISPLAY_CSS_POSITION');
623
        $pagantisTitle                      = $this->l(Pagantis::getExtraConfig('PAGANTIS_TITLE'));
624
        $pagantisSimulatorThousandSeparator = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_THOUSAND_SEPARATOR');
625
        $pagantisSimulatorDecimalSeparator  = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_DECIMAL_SEPARATOR');
626
627
        $items = $cart->getProducts(true);
628
        foreach ($items as $key => $item) {
629
            $itemCategories = ProductCore::getProductCategoriesFull($item['id_product']);
630
            if (in_array(PROMOTIONS_CATEGORY_NAME, array_column($itemCategories, 'name')) !== false) {
631
                $promotedAmount += Product::getPriceStatic($item['id_product']);
632
            }
633
        }
634
635
        $this->context->smarty->assign($this->getButtonTemplateVars($cart));
636
        $this->context->smarty->assign(array(
637
            'amount'                             => $orderTotal,
638
            'promotedAmount'                     => $promotedAmount,
639
            'locale'                             => $this->language,
640
            'logo' => ($this->language == 'ES' || $this->language == null) ? 'pagamastarde.png' : 'pagantis.png',
641
            'pagantisPublicKey'                  => $pagantisPublicKey,
642
            'pagantisCSSSelector'                => $pagantisSimulatorCSSSelector,
643
            'pagantisPriceSelector'              => $pagantisSimulatorPriceSelector,
644
            'pagantisQuotesStart'                => $pagantisSimulatorQuotesStart,
645
            'pagantisSimulatorIsEnabled'         => $pagantisSimulatorIsEnabled,
646
            'pagantisSimulatorType'              => $pagantisSimulatorType,
647
            'pagantisSimulatorSkin'              => $pagantisSimulatorSkin,
648
            'pagantisSimulatorPosition'          => $pagantisSimulatorPosition,
649
            'pagantisIsEnabled'                  => $pagantisIsEnabled,
650
            'pagantisTitle'                      => $pagantisTitle,
651
            'pagantisSimulatorThousandSeparator' => $pagantisSimulatorThousandSeparator,
652
            'pagantisSimulatorDecimalSeparator'  => $pagantisSimulatorDecimalSeparator,
653
            'paymentUrl'                         => $link->getModuleLink('pagantis', 'payment'),
654
            'ps_version'                         => str_replace('.', '-', Tools::substr(_PS_VERSION_, 0, 3)),
0 ignored issues
show
Bug introduced by
The constant _PS_VERSION_ was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
655
        ));
656
657
        $supercheckout_enabled = Module::isEnabled('supercheckout');
658
        $onepagecheckoutps_enabled = Module::isEnabled('onepagecheckoutps');
659
        $onepagecheckout_enabled = Module::isEnabled('onepagecheckout');
660
661
        $return = true;
662
        if ($supercheckout_enabled || $onepagecheckout_enabled || $onepagecheckoutps_enabled) {
663
            $this->checkLogoExists();
664
            $return = $this->display(__FILE__, 'views/templates/hook/onepagecheckout.tpl');
665
        } elseif (_PS_VERSION_ < 1.7) {
666
            $return = $this->display(__FILE__, 'views/templates/hook/checkout.tpl');
667
        }
668
        return $return;
669
    }
670
671
    /**
672
     * @param string $functionName
673
     *:
674
     * @return string
675
     * @throws PrestaShopDatabaseException
676
     * @throws PrestaShopException
677
     */
678
    public function productPageSimulatorDisplay($functionName)
679
    {
680
        $productConfiguration = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_DISPLAY_POSITION');
681
        /** @var ProductCore $product */
682
        $product = new Product(Tools::getValue('id_product'));
683
        $amount = $product->getPublicPrice();
684
685
        $itemCategoriesNames = array_column(Product::getProductCategoriesFull($product->id), 'name');
686
        $isPromotedProduct = in_array(PROMOTIONS_CATEGORY_NAME, $itemCategoriesNames);
687
688
        $pagantisPublicKey                  = Configuration::get('pagantis_public_key');
689
        $pagantisSimulatorIsEnabled         = Configuration::get('pagantis_simulator_is_enabled');
690
        $pagantisIsEnabled                  = Configuration::get('pagantis_is_enabled');
691
        $pagantisSimulatorType              = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_DISPLAY_TYPE');
692
        $pagantisSimulatorCSSSelector       = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_CSS_POSITION_SELECTOR');
693
        $pagantisSimulatorPriceSelector     = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_CSS_PRICE_SELECTOR');
694
        $pagantisSimulatorQuantitySelector  = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_CSS_QUANTITY_SELECTOR');
695
        $pagantisSimulatorQuotesStart       = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_START_INSTALLMENTS');
696
        $pagantisSimulatorSkin              = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_DISPLAY_SKIN');
697
        $pagantisSimulatorPosition          = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_DISPLAY_CSS_POSITION');
698
        $pagantisDisplayMinAmount           = Pagantis::getExtraConfig('PAGANTIS_DISPLAY_MIN_AMOUNT');
699
        $pagantisPromotionExtra             = Pagantis::getExtraConfig('PAGANTIS_PROMOTION_EXTRA');
700
        $pagantisSimulatorThousandSeparator = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_THOUSAND_SEPARATOR');
701
        $pagantisSimulatorDecimalSeparator  = Pagantis::getExtraConfig('PAGANTIS_SIMULATOR_DECIMAL_SEPARATOR');
702
703
        if ($functionName != $productConfiguration ||
704
            $amount <= 0 ||
705
            $amount < $pagantisDisplayMinAmount ||
706
            !$pagantisSimulatorType
707
        ) {
708
            return null;
709
        }
710
711
        $this->context->smarty->assign(array(
712
            'amount'                             => $amount,
713
            'locale'                             => $this->language,
714
            'pagantisPublicKey'                  => $pagantisPublicKey,
715
            'pagantisCSSSelector'                => $pagantisSimulatorCSSSelector,
716
            'pagantisPriceSelector'              => $pagantisSimulatorPriceSelector,
717
            'pagantisQuantitySelector'           => $pagantisSimulatorQuantitySelector,
718
            'pagantisSimulatorIsEnabled'         => $pagantisSimulatorIsEnabled,
719
            'pagantisIsEnabled'                  => $pagantisIsEnabled,
720
            'pagantisSimulatorType'              => $pagantisSimulatorType,
721
            'pagantisSimulatorSkin'              => $pagantisSimulatorSkin,
722
            'pagantisSimulatorPosition'          => $pagantisSimulatorPosition,
723
            'pagantisQuotesStart'                => $pagantisSimulatorQuotesStart,
724
            'isPromotedProduct'                  => $isPromotedProduct,
725
            'pagantisPromotionExtra'             => $this->l($pagantisPromotionExtra),
726
            'pagantisSimulatorThousandSeparator' => $pagantisSimulatorThousandSeparator,
727
            'pagantisSimulatorDecimalSeparator'  => $pagantisSimulatorDecimalSeparator,
728
            'ps_version'                         => str_replace('.', '-', Tools::substr(_PS_VERSION_, 0, 3)),
0 ignored issues
show
Bug introduced by
The constant _PS_VERSION_ was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
729
        ));
730
731
        return $this->display(__FILE__, 'views/templates/hook/product-simulator.tpl');
732
    }
733
734
    /**
735
     * @return string
736
     * @throws PrestaShopDatabaseException
737
     * @throws PrestaShopException
738
     */
739
    public function hookDisplayRightColumn()
740
    {
741
742
        return $this->productPageSimulatorDisplay(__FUNCTION__);
743
    }
744
745
    /**
746
     * @return string
747
     * @throws PrestaShopDatabaseException
748
     * @throws PrestaShopException
749
     */
750
    public function hookDisplayLeftColumn()
751
    {
752
        return $this->productPageSimulatorDisplay(__FUNCTION__);
753
    }
754
755
    /**
756
     * @return string
757
     * @throws PrestaShopDatabaseException
758
     * @throws PrestaShopException
759
     */
760
    public function hookDisplayRightColumnProduct()
761
    {
762
        return $this->productPageSimulatorDisplay(__FUNCTION__);
763
    }
764
765
    /**
766
     * @return string
767
     * @throws PrestaShopDatabaseException
768
     * @throws PrestaShopException
769
     */
770
    public function hookDisplayLeftColumnProduct()
771
    {
772
        return $this->productPageSimulatorDisplay(__FUNCTION__);
773
    }
774
775
    /**
776
     * @return string
777
     * @throws PrestaShopDatabaseException
778
     * @throws PrestaShopException
779
     */
780
    public function hookDisplayProductButtons()
781
    {
782
        return $this->productPageSimulatorDisplay(__FUNCTION__);
783
    }
784
785
    /**
786
     * @param array $params
787
     *
788
     * @return string
789
     */
790
    public function hookDisplayOrderConfirmation($params)
791
    {
792
        $paymentMethod = (_PS_VERSION_ < 1.7) ? ($params["objOrder"]->payment) : ($params["order"]->payment);
0 ignored issues
show
Bug introduced by
The constant _PS_VERSION_ was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
793
794
        if ($paymentMethod == $this->displayName) {
795
            return $this->display(__FILE__, 'views/templates/hook/payment-return.tpl');
796
        }
797
798
        return null;
799
    }
800
801
    /**
802
     * Check logo exists in OPC module
803
     */
804
    public function checkLogoExists()
805
    {
806
        $logoPmt = _PS_MODULE_DIR_ . '/onepagecheckoutps/views/img/payments/pagamastarde.png';
0 ignored issues
show
Bug introduced by
The constant _PS_MODULE_DIR_ was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
807
        $logoPg = _PS_MODULE_DIR_ . '/onepagecheckoutps/views/img/payments/pagantis.png';
808
        if (!file_exists($logoPmt) && is_dir(_PS_MODULE_DIR_ . '/onepagecheckoutps/views/img/payments')) {
809
            copy(
810
                _PS_PAGANTIS_DIR . '/views/img/logo_pagamastarde.png',
811
                $logoPmt
812
            );
813
        }
814
        if (!file_exists($logoPg) && is_dir(_PS_MODULE_DIR_ . '/onepagecheckoutps/views/img/payments')) {
815
            copy(
816
                _PS_PAGANTIS_DIR . '/views/img/logo_pagantis.png',
817
                $logoPg
818
            );
819
        }
820
    }
821
822
    /**
823
     * checkPromotionCategory
824
     */
825
    public function checkPromotionCategory()
826
    {
827
        $categories = array_column(Category::getCategories(null, false, false), 'name');
0 ignored issues
show
Bug introduced by
The type Category 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...
828
        if (!in_array(PROMOTIONS_CATEGORY_NAME, $categories)) {
829
            /** @var CategoryCore $category */
830
            $category = new Category();
831
            $category->is_root_category = false;
832
            $category->link_rewrite = array( 1=> PROMOTIONS_CATEGORY );
833
            $category->meta_description = array( 1=> PROMOTIONS_CATEGORY );
834
            $category->meta_keywords = array( 1=> PROMOTIONS_CATEGORY );
835
            $category->meta_title = array( 1=> PROMOTIONS_CATEGORY );
836
            $category->name = array( 1=> PROMOTIONS_CATEGORY_NAME );
837
            $category->id_parent = Configuration::get('PS_HOME_CATEGORY');
838
            $category->active=0;
839
            $description = 'Pagantis: Products with this category have free financing assumed by the merchant. ' .
840
                'Use it to promote your products or brands.';
841
            $category->description = $this->l($description);
842
            $category->save();
843
        }
844
    }
845
846
847
    public static function getExtraConfig($config = null, $default = '')
848
    {
849
        if (is_null($config)) {
850
            return '';
851
        }
852
853
        $sql = 'SELECT value FROM '._DB_PREFIX_.'pagantis_config where config = \'' . pSQL($config) . '\' limit 1';
0 ignored issues
show
Bug introduced by
The function pSQL 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

853
        $sql = 'SELECT value FROM '._DB_PREFIX_.'pagantis_config where config = \'' . /** @scrutinizer ignore-call */ pSQL($config) . '\' limit 1';
Loading history...
Bug introduced by
The constant _DB_PREFIX_ was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
854
        if ($results = Db::getInstance()->ExecuteS($sql)) {
855
            if (is_array($results) && count($results) === 1 && isset($results[0]['value'])) {
856
                return $results[0]['value'];
857
            }
858
        }
859
860
        return $default;
861
    }
862
863
    /**
864
     * Get user language
865
     */
866
    private function getUserLanguage()
867
    {
868
        $lang = Language::getLanguage($this->context->language->id);
0 ignored issues
show
Bug introduced by
The type Language 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...
869
        $langArray = explode("-", $lang['language_code']);
870
        if (count($langArray) != 2 && isset($lang['locale'])) {
871
            $langArray = explode("-", $lang['locale']);
872
        }
873
        $this->language = Tools::strtoupper($langArray[count($langArray)-1]);
874
        // Prevent null language detection
875
        $this->language = ($this->language) ? $this->language : 'ES';
876
    }
877
}
878