48 lines
1.3 KiB
PHP
48 lines
1.3 KiB
PHP
|
<?php
|
||
|
namespace Opencart\Catalog\Controller\Startup;
|
||
|
/**
|
||
|
* Class Currency
|
||
|
*
|
||
|
* @package Opencart\Catalog\Controller\Startup
|
||
|
*/
|
||
|
class Currency extends \Opencart\System\Engine\Controller {
|
||
|
/**
|
||
|
* @return void
|
||
|
*/
|
||
|
public function index(): void {
|
||
|
$code = '';
|
||
|
|
||
|
$this->load->model('localisation/currency');
|
||
|
|
||
|
$currencies = $this->model_localisation_currency->getCurrencies();
|
||
|
|
||
|
if (isset($this->session->data['currency'])) {
|
||
|
$code = $this->session->data['currency'];
|
||
|
}
|
||
|
|
||
|
if (isset($this->request->cookie['currency']) && !array_key_exists($code, $currencies)) {
|
||
|
$code = $this->request->cookie['currency'];
|
||
|
}
|
||
|
|
||
|
if (!array_key_exists($code, $currencies)) {
|
||
|
$code = $this->config->get('config_currency');
|
||
|
}
|
||
|
|
||
|
if (!isset($this->session->data['currency']) || $this->session->data['currency'] != $code) {
|
||
|
$this->session->data['currency'] = $code;
|
||
|
}
|
||
|
|
||
|
// Set a new currency cookie if the code does not match the current one
|
||
|
if (!isset($this->request->cookie['currency']) || $this->request->cookie['currency'] != $code) {
|
||
|
$option = [
|
||
|
'expires' => time() + 60 * 60 * 24 * 30,
|
||
|
'path' => '/',
|
||
|
'SameSite' => 'Lax'
|
||
|
];
|
||
|
|
||
|
setcookie('currency', $code, $option);
|
||
|
}
|
||
|
|
||
|
$this->registry->set('currency', new \Opencart\System\Library\Cart\Currency($this->registry));
|
||
|
}
|
||
|
}
|