Skip to content

Commit 26eff9d

Browse files
committed
Make plugin compatible with OpenCart 2.3.0.2+
1 parent af831c0 commit 26eff9d

File tree

7 files changed

+307
-316
lines changed

7 files changed

+307
-316
lines changed

README.txt

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,23 @@
11
WebwinkelKeur OpenCart module
22
=============================
33

4-
Deze module integreert de WebwinkelKeur sidebar module in uw webshop. De module
5-
kan eenvoudig worden geïnstalleerd. Gebruik daarvoor de onderstaande
4+
Deze module integreert de WebwinkelKeur sidebar module in uw webshop. De module
5+
kan eenvoudig worden geïnstalleerd. Gebruik daarvoor de onderstaande
66
installatieinstructies.
77

8-
De module is getest met OpenCart versies 3.0.0.0 en later.
8+
De module is getest met OpenCart versies 2.3.0.2 en later.
99

10-
U kunt de module ook laten installeren door de ontwikkelaar. Neem daarvoor per
10+
U kunt de module ook laten installeren door de ontwikkelaar. Neem daarvoor per
1111
e-mail contact op.
1212

13-
(C) 2017 Albert Peschar <albert@peschar.net>
13+
(C) 2019 Albert Peschar <albert@peschar.net>
1414

1515

1616
Installatieinstructies
1717
----------------------
1818

1919
1. Upload de bestanden in de map upload/ naar de webserver.
2020

21-
2. Betreft het een update van een oudere versie van de module?
22-
Leeg dan de "Theme cache" in OpenCart via het tandwiel op het dashboard.
23-
24-
3. De module kan nu worden ingeschakeld in de administratieinterface.
25-
26-
4. Vul uw webwinkel ID en API key in en configureer de module.
27-
21+
2. De module kan nu worden ingeschakeld in de administratieinterface.
2822

23+
3. Vul uw webwinkel ID en API key in en configureer de module.

upload/admin/controller/extension/module/webwinkelkeur.php

Lines changed: 40 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,36 @@
22
class ControllerExtensionModuleWebwinkelkeur extends Controller {
33
private $error = array();
44

5-
public function index() {
6-
$this->language->load('common/header');
5+
public function __construct($registry) {
6+
parent::__construct($registry);
77

8+
$this->load->model('extension/module/webwinkelkeur');
9+
$this->load->model('localisation/order_status');
10+
try {
11+
$this->load->model('setting/module');
12+
} catch (Exception $e) {
13+
$this->load->model('extension/module');
14+
$this->model_setting_module = $this->model_extension_module;
15+
}
816
$this->load->model('setting/setting');
17+
$this->load->model('setting/store');
18+
}
19+
20+
public function index() {
21+
$this->language->load('common/header');
922

1023
$path_module = 'extension/module/webwinkelkeur';
11-
$path_extensions = 'marketplace/extension';
24+
25+
$path_extensions =
26+
is_file(DIR_APPLICATION . 'controller/marketplace/extension.php') ?
27+
'marketplace/extension' : 'extension/extension';
1228

1329
$this->language->load('extension/module/account');
1430

1531
$text_extension = $this->language->get('text_extension');
1632

1733
$msg = @include DIR_SYSTEM . 'library/webwinkelkeur-messages.php';
1834

19-
$this->load->model('extension/module/webwinkelkeur');
20-
2135
$this->model_extension_module_webwinkelkeur->installEvents();
2236

2337
$this->document->setTitle($msg['WEBWINKELKEUR']);
@@ -40,8 +54,7 @@ public function index() {
4054
$this->createModule($this->request->post);
4155
$module_id = $this->findModule($this->request->post['store_id']);
4256
}
43-
$this->response->redirect($this->url->link($path_module,
44-
'user_token=' . $this->session->data['user_token'] . '&module_id=' . $module_id, 'SSL'));
57+
$this->response->redirect($this->link($path_module, ['module_id' => $module_id]));
4558
}
4659

4760
if($this->validateForm()) {
@@ -52,7 +65,7 @@ public function index() {
5265

5366
$new_settings = $this->cleanSettings($form_data);
5467
$this->editSettings($new_settings);
55-
$this->response->redirect($this->url->link($path_extensions, 'user_token=' . $this->session->data['user_token'], 'SSL'));
68+
$this->response->redirect($this->link($path_extensions));
5669
}
5770
}
5871

@@ -70,22 +83,22 @@ public function index() {
7083

7184
$data['breadcrumbs'][] = array(
7285
'text' => $this->language->get('text_home'),
73-
'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], 'ssl'),
86+
'href' => $this->link('common/dashboard'),
7487
);
7588

7689
$data['breadcrumbs'][] = array(
7790
'text' => $text_extension,
78-
'href' => $this->url->link($path_extensions, 'user_token=' . $this->session->data['user_token'], 'ssl'),
91+
'href' => $this->link($path_extensions),
7992
'separator' => false
8093
);
8194

8295
$data['breadcrumbs'][] = array(
8396
'text' => $msg['WEBWINKELKEUR'],
84-
'href' => $this->url->link($path_module, 'user_token=' . $this->session->data['user_token'], 'ssl'),
97+
'href' => $this->link($path_module),
8598
'separator' => ' :: '
8699
);
87100

88-
$data['cancel'] = $this->url->link($path_extensions, 'user_token=' . $this->session->data['user_token'], 'ssl');
101+
$data['cancel'] = $this->link($path_extensions);
89102

90103
$data['button_save'] = $this->language->get('button_save');
91104
$data['button_cancel'] = $this->language->get('button_cancel');
@@ -97,17 +110,22 @@ public function index() {
97110
'settings' => $settings,
98111
));
99112

100-
$this->load->model('localisation/order_status');
101-
102113
$data['order_statuses'] = $this->model_localisation_order_status->getOrderStatuses();
103114

104115
$data['invite_errors'] = $this->model_extension_module_webwinkelkeur->getInviteErrors();
105116

106-
$data['header'] = $this->load->controller('common/header') . $this->load->controller('common/column_left');
117+
$data['header'] =
118+
$this->load->controller('common/header') .
119+
$this->load->controller('common/column_left');
107120
$data['footer'] = $this->load->controller('common/footer');
108121
$data['version'] = '$VERSION$';
109122

110-
$this->response->setOutput($this->load->view('extension/module/webwinkelkeur', $data));
123+
return $this->render('extension/module/webwinkelkeur', $data);
124+
}
125+
126+
private function render($__template, array $__data) {
127+
extract($__data);
128+
require DIR_TEMPLATE . $__template . '.tpl';
111129
}
112130

113131
private function validateForm() {
@@ -130,28 +148,22 @@ private function validateSettings(array &$data) {
130148
}
131149

132150
public function install() {
133-
$this->load->model('extension/module/webwinkelkeur');
134-
135151
$this->model_extension_module_webwinkelkeur->install();
136152

137153
$this->createModule(array('store_id' => 0));
138154
$this->editSettings();
139155
}
140156

141157
public function uninstall() {
142-
$this->load->model('extension/module/webwinkelkeur');
143-
144158
$this->model_extension_module_webwinkelkeur->uninstall();
145159
}
146160

147161
private function getSettings() {
148-
$this->load->model('setting/module');
149162
if(isset($this->request->get['module_id'])) {
150163
$settings = $this->model_setting_module->getModule($this->request->get['module_id']);
151164
return $this->defaultSettings($settings);
152165
}
153166

154-
$this->load->model('setting/setting');
155167
$wwk_settings = $this->model_setting_setting->getSetting('webwinkelkeur');
156168

157169
$settings = array();
@@ -210,8 +222,6 @@ private function cleanIntegerArray($array) {
210222
}
211223

212224
private function editSettings(array $settings = array()) {
213-
$this->load->model('setting/module');
214-
215225
if(isset($this->request->get['module_id'])) {
216226
$modules = $this->model_setting_module->getModulesByCode('webwinkelkeur');
217227
foreach($modules as $module) {
@@ -222,8 +232,6 @@ private function editSettings(array $settings = array()) {
222232
return;
223233
}
224234

225-
$this->load->model('setting/setting');
226-
227235
$wwk_settings = array();
228236
foreach($settings as $key => $value) {
229237
$wwk_settings["webwinkelkeur_${key}"] = $value;
@@ -233,8 +241,6 @@ private function editSettings(array $settings = array()) {
233241
}
234242

235243
private function findModule($store) {
236-
$this->load->model('setting/module');
237-
238244
foreach($this->model_setting_module->getModulesByCode('webwinkelkeur') as $module) {
239245
$data = $this->model_setting_module->getModule($module['module_id']);
240246
if($data['store_id'] == $store)
@@ -244,9 +250,6 @@ private function findModule($store) {
244250
}
245251

246252
private function createModule($settings) {
247-
$this->load->model('setting/module');
248-
$this->load->model('setting/store');
249-
250253
$stores = $this->model_setting_store->getStores();
251254
foreach($stores as $store) {
252255
if($store['store_id'] == $settings['store_id'])
@@ -264,4 +267,10 @@ private function createModule($settings) {
264267

265268
$this->model_setting_module->addModule('webwinkelkeur', $module_settings);
266269
}
270+
271+
private function link($action, array $params = []) {
272+
$params += array_intersect_key($this->request->get, array_flip(['token', 'user_token']));
273+
return $this->url->link($action, http_build_query($params), true);
274+
}
275+
267276
}

upload/admin/model/extension/module/webwinkelkeur.php

Lines changed: 33 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,10 @@
22
class ModelExtensionModuleWebwinkelkeur extends Model {
33

44
private $eventTriggers = [
5-
'catalog/view/common/header/after',
5+
'catalog/view/common/header/after' => 'event_view_common_header_after',
6+
'catalog/view/*/template/common/header/after' => 'event_view_common_header_after',
67
];
78

8-
public function __construct($registry) {
9-
parent::__construct($registry);
10-
11-
$this->load->model('setting/event');
12-
}
13-
149
public function install() {
1510
if(!in_array('webwinkelkeur_invite_sent', $this->getColumnNames('order'))) {
1611
$this->db->query("
@@ -51,22 +46,30 @@ public function install() {
5146
}
5247

5348
public function installEvents() {
54-
foreach ($this->eventTriggers as $trigger) {
55-
$this->installEvent($trigger);
49+
foreach ($this->eventTriggers as $trigger => $method) {
50+
$this->installEvent($trigger, $method);
5651
}
5752
}
5853

59-
private function installEvent($trigger) {
54+
private function installEvent($trigger, $method) {
6055
$code = $this->getEventCode($trigger);
56+
$action = 'extension/module/webwinkelkeur/' . $method;
6157

62-
if ($this->model_setting_event->getEventByCode($code)) {
58+
if ($this->db->query("
59+
SELECT 1
60+
FROM `" . DB_PREFIX . "event`
61+
WHERE
62+
`trigger` = '" . $this->db->escape($trigger) . "'
63+
AND `action` = '" . $this->db->escape($action) . "'
64+
")->row) {
6365
return;
6466
}
6567

66-
$method = 'event_' . preg_replace('~^catalog_~', '', str_replace('/', '_', $trigger));
67-
$action = 'extension/module/webwinkelkeur/' . $method;
68+
$this->getEventModel()->addEvent($code, $trigger, $action);
69+
}
6870

69-
$this->model_setting_event->addEvent($code, $trigger, $action);
71+
private function getEventCode($trigger) {
72+
return md5('webwinkelkeur/' . $trigger);
7073
}
7174

7275
public function uninstall() {
@@ -99,13 +102,24 @@ private function getColumnNames($table) {
99102
}
100103

101104
private function uninstallEvents() {
102-
foreach ($this->eventTriggers as $trigger) {
103-
$this->model_setting_event->deleteEventByCode($this->getEventCode($trigger));
104-
}
105+
$this->db->query("
106+
DELETE FROM `" . DB_PREFIX . "event`
107+
WHERE `action` LIKE 'extension/module/webwinkelkeur/%'
108+
");
105109
}
106110

107-
private function getEventCode($trigger) {
108-
return 'webwinkelkeur/' . $trigger;
111+
private function getEventModel() {
112+
try {
113+
$this->load->model('setting/event');
114+
return $this->model_setting_event;
115+
} catch (Exception $e) {}
116+
117+
try {
118+
$this->load->model('extension/event');
119+
return $this->model_extension_event;
120+
} catch (Exception $e) {}
121+
122+
throw new RuntimeException("Failed to load either setting/event or extension/event model");
109123
}
110124

111125
public function getInviteErrors() {

0 commit comments

Comments
 (0)