1: | <?php
|
2: | namespace Opencart\Catalog\Controller\Common;
|
3: | |
4: | |
5: | |
6: | |
7: |
|
8: | class Currency extends \Opencart\System\Engine\Controller {
|
9: | |
10: | |
11: |
|
12: | public function index(): string {
|
13: | $this->load->language('common/currency');
|
14: |
|
15: | $data['action'] = $this->url->link('common/currency.save', 'language=' . $this->config->get('config_language'));
|
16: |
|
17: | $data['code'] = $this->session->data['currency'];
|
18: |
|
19: | $url_data = $this->request->get;
|
20: |
|
21: | if (isset($url_data['route'])) {
|
22: | $route = $url_data['route'];
|
23: | } else {
|
24: | $route = $this->config->get('action_default');
|
25: | }
|
26: |
|
27: | unset($url_data['route']);
|
28: | unset($url_data['_route_']);
|
29: |
|
30: | $data['currencies'] = [];
|
31: |
|
32: | $this->load->model('localisation/currency');
|
33: |
|
34: | $results = $this->model_localisation_currency->getCurrencies();
|
35: |
|
36: | foreach ($results as $result) {
|
37: | if ($result['status']) {
|
38: | $data['currencies'][] = [
|
39: | 'title' => $result['title'],
|
40: | 'code' => $result['code'],
|
41: | 'symbol_left' => $result['symbol_left'],
|
42: | 'symbol_right' => $result['symbol_right']
|
43: | ];
|
44: | }
|
45: | }
|
46: |
|
47: | $url = '';
|
48: |
|
49: | if ($url_data) {
|
50: | $url .= '&' . urldecode(http_build_query($url_data, '', '&'));
|
51: | }
|
52: |
|
53: | $data['redirect'] = $this->url->link($route, $url);
|
54: |
|
55: | return $this->load->view('common/currency', $data);
|
56: | }
|
57: |
|
58: | |
59: | |
60: | |
61: | |
62: |
|
63: | public function save(): void {
|
64: | if (isset($this->request->post['code'])) {
|
65: | $this->session->data['currency'] = $this->request->post['code'];
|
66: |
|
67: | unset($this->session->data['shipping_method']);
|
68: | unset($this->session->data['shipping_methods']);
|
69: | }
|
70: |
|
71: | $option = [
|
72: | 'expires' => time() + 60 * 60 * 24 * 30,
|
73: | 'path' => '/',
|
74: | 'SameSite' => 'Lax'
|
75: | ];
|
76: |
|
77: | setcookie('currency', $this->session->data['currency'], $option);
|
78: |
|
79: | if (isset($this->request->post['redirect'])) {
|
80: | $redirect = urldecode(html_entity_decode($this->request->post['redirect'], ENT_QUOTES, 'UTF-8'));
|
81: | } else {
|
82: | $redirect = '';
|
83: | }
|
84: |
|
85: | if ($redirect && str_starts_with($redirect, $this->config->get('config_url'))) {
|
86: | $this->response->redirect($redirect);
|
87: | } else {
|
88: | $this->response->redirect($this->url->link($this->config->get('action_default'), 'language=' . $this->config->get('config_language')));
|
89: | }
|
90: | }
|
91: | }
|
92: | |