1: | <?php
|
2: | namespace Opencart\Admin\Controller\Marketplace;
|
3: | |
4: | |
5: | |
6: | |
7: |
|
8: | class Marketplace extends \Opencart\System\Engine\Controller {
|
9: | |
10: | |
11: | |
12: | |
13: |
|
14: | public function index(): void {
|
15: | $this->load->language('marketplace/marketplace');
|
16: |
|
17: | $this->document->setTitle($this->language->get('heading_title'));
|
18: |
|
19: | if (isset($this->request->get['filter_search'])) {
|
20: | $filter_search = (string)$this->request->get['filter_search'];
|
21: | } else {
|
22: | $filter_search = '';
|
23: | }
|
24: |
|
25: | if (isset($this->request->get['filter_category'])) {
|
26: | $filter_category = (string)$this->request->get['filter_category'];
|
27: | } else {
|
28: | $filter_category = '';
|
29: | }
|
30: |
|
31: | if (isset($this->request->get['filter_license'])) {
|
32: | $filter_license = (string)$this->request->get['filter_license'];
|
33: | } else {
|
34: | $filter_license = '';
|
35: | }
|
36: |
|
37: | if (isset($this->request->get['filter_rating'])) {
|
38: | $filter_rating = (int)$this->request->get['filter_rating'];
|
39: | } else {
|
40: | $filter_rating = '';
|
41: | }
|
42: |
|
43: | if (isset($this->request->get['filter_member_type'])) {
|
44: | $filter_member_type = (string)$this->request->get['filter_member_type'];
|
45: | } else {
|
46: | $filter_member_type = '';
|
47: | }
|
48: |
|
49: | if (isset($this->request->get['filter_member'])) {
|
50: | $filter_member = (string)$this->request->get['filter_member'];
|
51: | } else {
|
52: | $filter_member = '';
|
53: | }
|
54: |
|
55: | if (isset($this->request->get['sort'])) {
|
56: | $sort = (string)$this->request->get['sort'];
|
57: | } else {
|
58: | $sort = 'date_modified';
|
59: | }
|
60: |
|
61: | if (isset($this->request->get['page'])) {
|
62: | $page = (int)$this->request->get['page'];
|
63: | } else {
|
64: | $page = 1;
|
65: | }
|
66: |
|
67: | $url = '';
|
68: |
|
69: | if (isset($this->request->get['filter_search'])) {
|
70: | $url .= '&filter_search=' . $this->request->get['filter_search'];
|
71: | }
|
72: |
|
73: | if (isset($this->request->get['filter_category'])) {
|
74: | $url .= '&filter_category=' . $this->request->get['filter_category'];
|
75: | }
|
76: |
|
77: | if (isset($this->request->get['filter_license'])) {
|
78: | $url .= '&filter_license=' . $this->request->get['filter_license'];
|
79: | }
|
80: |
|
81: | if (isset($this->request->get['filter_rating'])) {
|
82: | $url .= '&filter_rating=' . $this->request->get['filter_rating'];
|
83: | }
|
84: |
|
85: | if (isset($this->request->get['filter_member_type'])) {
|
86: | $url .= '&filter_member_type=' . $this->request->get['filter_member_type'];
|
87: | }
|
88: |
|
89: | if (isset($this->request->get['filter_member'])) {
|
90: | $url .= '&filter_member=' . $this->request->get['filter_member'];
|
91: | }
|
92: |
|
93: | if (isset($this->request->get['sort'])) {
|
94: | $url .= '&sort=' . $this->request->get['sort'];
|
95: | }
|
96: |
|
97: | if (isset($this->request->get['page'])) {
|
98: | $url .= '&page=' . $this->request->get['page'];
|
99: | }
|
100: |
|
101: | $data['breadcrumbs'] = [];
|
102: |
|
103: | $data['breadcrumbs'][] = [
|
104: | 'text' => $this->language->get('text_home'),
|
105: | 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'])
|
106: | ];
|
107: |
|
108: | $data['breadcrumbs'][] = [
|
109: | 'text' => $this->language->get('heading_title'),
|
110: | 'href' => $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . $url)
|
111: | ];
|
112: |
|
113: | $time = time();
|
114: |
|
115: |
|
116: | $string = 'api/marketplace/list' . "\n";
|
117: | $string .= $this->config->get('opencart_username') . "\n";
|
118: | $string .= $this->request->server['HTTP_HOST'] . "\n";
|
119: | $string .= VERSION . "\n";
|
120: | $string .= $time . "\n";
|
121: |
|
122: | $signature = base64_encode(hash_hmac('sha1', $string, $this->config->get('opencart_secret'), true));
|
123: |
|
124: | $url = '&username=' . urlencode($this->config->get('opencart_username'));
|
125: | $url .= '&domain=' . $this->request->server['HTTP_HOST'];
|
126: | $url .= '&version=' . VERSION;
|
127: | $url .= '&time=' . $time;
|
128: | $url .= '&signature=' . rawurlencode($signature);
|
129: |
|
130: | if (isset($this->request->get['filter_search'])) {
|
131: | $url .= '&filter_search=' . urlencode($this->request->get['filter_search']);
|
132: | }
|
133: |
|
134: | if (isset($this->request->get['filter_category'])) {
|
135: | $url .= '&filter_category=' . $this->request->get['filter_category'];
|
136: | }
|
137: |
|
138: | if (isset($this->request->get['filter_license'])) {
|
139: | $url .= '&filter_license=' . $this->request->get['filter_license'];
|
140: | }
|
141: |
|
142: | if (isset($this->request->get['filter_rating'])) {
|
143: | $url .= '&filter_rating=' . $this->request->get['filter_rating'];
|
144: | }
|
145: |
|
146: | if (isset($this->request->get['filter_member_type'])) {
|
147: | $url .= '&filter_member_type=' . $this->request->get['filter_member_type'];
|
148: | }
|
149: |
|
150: | if (isset($this->request->get['filter_member'])) {
|
151: | $url .= '&filter_member=' . urlencode($this->request->get['filter_member']);
|
152: | }
|
153: |
|
154: | if (isset($this->request->get['sort'])) {
|
155: | $url .= '&sort=' . $this->request->get['sort'];
|
156: | }
|
157: |
|
158: | if (isset($this->request->get['page'])) {
|
159: | $url .= '&page=' . $this->request->get['page'];
|
160: | }
|
161: |
|
162: | $curl = curl_init(OPENCART_SERVER . 'index.php?route=api/marketplace' . $url);
|
163: |
|
164: | curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
165: | curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
|
166: | curl_setopt($curl, CURLOPT_FORBID_REUSE, 1);
|
167: | curl_setopt($curl, CURLOPT_FRESH_CONNECT, 1);
|
168: | curl_setopt($curl, CURLOPT_POST, 1);
|
169: |
|
170: | $response = curl_exec($curl);
|
171: |
|
172: | $status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
173: |
|
174: | curl_close($curl);
|
175: |
|
176: | $response_info = json_decode($response, true);
|
177: |
|
178: | if (isset($response_info['extension_total'])) {
|
179: | $extension_total = (int)$response_info['extension_total'];
|
180: | } else {
|
181: | $extension_total = 0;
|
182: | }
|
183: |
|
184: | $url = '';
|
185: |
|
186: | if (isset($this->request->get['filter_search'])) {
|
187: | $url .= '&filter_search=' . $this->request->get['filter_search'];
|
188: | }
|
189: |
|
190: | if (isset($this->request->get['filter_category'])) {
|
191: | $url .= '&filter_category=' . $this->request->get['filter_category'];
|
192: | }
|
193: |
|
194: | if (isset($this->request->get['filter_license'])) {
|
195: | $url .= '&filter_license=' . $this->request->get['filter_license'];
|
196: | }
|
197: |
|
198: | if (isset($this->request->get['filter_rating'])) {
|
199: | $url .= '&filter_rating=' . $this->request->get['filter_rating'];
|
200: | }
|
201: |
|
202: | if (isset($this->request->get['filter_member_type'])) {
|
203: | $url .= '&filter_member_type=' . $this->request->get['filter_member_type'];
|
204: | }
|
205: |
|
206: | if (isset($this->request->get['filter_member'])) {
|
207: | $url .= '&filter_member=' . $this->request->get['filter_member'];
|
208: | }
|
209: |
|
210: | if (isset($this->request->get['sort'])) {
|
211: | $url .= '&sort=' . $this->request->get['sort'];
|
212: | }
|
213: |
|
214: | if (isset($this->request->get['page'])) {
|
215: | $url .= '&page=' . $this->request->get['page'];
|
216: | }
|
217: |
|
218: | $data['promotions'] = [];
|
219: |
|
220: | if ($page == 1 && isset($response_info['promotions'])) {
|
221: | foreach ($response_info['promotions'] as $result) {
|
222: | $data['promotions'][] = [
|
223: | 'name' => $result['name'],
|
224: | 'description' => $result['description'],
|
225: | 'image' => $result['image'],
|
226: | 'license' => $result['license'],
|
227: | 'price' => $result['price'],
|
228: | 'rating' => $result['rating'],
|
229: | 'rating_total' => $result['rating_total'],
|
230: | 'href' => $this->url->link('marketplace/marketplace.info', 'user_token=' . $this->session->data['user_token'] . '&extension_id=' . $result['extension_id'] . $url)
|
231: | ];
|
232: | }
|
233: | }
|
234: |
|
235: | $data['extensions'] = [];
|
236: |
|
237: | if (isset($response_info['extensions'])) {
|
238: | foreach ($response_info['extensions'] as $result) {
|
239: | $data['extensions'][] = [
|
240: | 'name' => $result['name'],
|
241: | 'description' => $result['description'],
|
242: | 'image' => $result['image'],
|
243: | 'license' => $result['license'],
|
244: | 'price' => $result['price'],
|
245: | 'rating' => $result['rating'],
|
246: | 'rating_total' => $result['rating_total'],
|
247: | 'href' => $this->url->link('marketplace/marketplace.info', 'user_token=' . $this->session->data['user_token'] . '&extension_id=' . $result['extension_id'] . $url)
|
248: | ];
|
249: | }
|
250: | }
|
251: |
|
252: | $data['signature'] = $this->config->get('opencart_username') && $this->config->get('opencart_secret');
|
253: |
|
254: | if (!$this->config->get('opencart_username') || !$this->config->get('opencart_secret')) {
|
255: | $data['error_warning'] = $this->language->get('error_api');
|
256: | } elseif (isset($response_info['error'])) {
|
257: | $data['error_warning'] = $response_info['error'];
|
258: | } else {
|
259: | $data['error_warning'] = '';
|
260: | }
|
261: |
|
262: |
|
263: | $url = '';
|
264: |
|
265: | if (isset($this->request->get['filter_search'])) {
|
266: | $url .= '&filter_search=' . $this->request->get['filter_search'];
|
267: | }
|
268: |
|
269: | if (isset($this->request->get['filter_license'])) {
|
270: | $url .= '&filter_license=' . $this->request->get['filter_license'];
|
271: | }
|
272: |
|
273: | if (isset($this->request->get['filter_rating'])) {
|
274: | $url .= '&filter_rating=' . $this->request->get['filter_rating'];
|
275: | }
|
276: |
|
277: | if (isset($this->request->get['filter_member_type'])) {
|
278: | $url .= '&filter_member_type=' . $this->request->get['filter_member_type'];
|
279: | }
|
280: |
|
281: | if (isset($this->request->get['filter_member'])) {
|
282: | $url .= '&filter_member=' . $this->request->get['filter_member'];
|
283: | }
|
284: |
|
285: | if (isset($this->request->get['sort'])) {
|
286: | $url .= '&sort=' . $this->request->get['sort'];
|
287: | }
|
288: |
|
289: | $data['categories'] = [];
|
290: |
|
291: | $data['categories'][] = [
|
292: | 'text' => $this->language->get('text_all'),
|
293: | 'value' => '',
|
294: | 'href' => $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . $url)
|
295: | ];
|
296: |
|
297: | $data['categories'][] = [
|
298: | 'text' => $this->language->get('text_theme'),
|
299: | 'value' => 'theme',
|
300: | 'href' => $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . '&filter_category=theme' . $url)
|
301: | ];
|
302: |
|
303: | $data['categories'][] = [
|
304: | 'text' => $this->language->get('text_marketplace'),
|
305: | 'value' => 'marketplace',
|
306: | 'href' => $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . '&filter_category=marketplace' . $url)
|
307: | ];
|
308: |
|
309: | $data['categories'][] = [
|
310: | 'text' => $this->language->get('text_language'),
|
311: | 'value' => 'language',
|
312: | 'href' => $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . '&filter_category=language' . $url)
|
313: | ];
|
314: |
|
315: | $data['categories'][] = [
|
316: | 'text' => $this->language->get('text_payment'),
|
317: | 'value' => 'payment',
|
318: | 'href' => $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . '&filter_category=payment' . $url)
|
319: | ];
|
320: |
|
321: | $data['categories'][] = [
|
322: | 'text' => $this->language->get('text_shipping'),
|
323: | 'value' => 'shipping',
|
324: | 'href' => $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . '&filter_category=shipping' . $url)
|
325: | ];
|
326: |
|
327: | $data['categories'][] = [
|
328: | 'text' => $this->language->get('text_module'),
|
329: | 'value' => 'module',
|
330: | 'href' => $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . '&filter_category=module' . $url)
|
331: | ];
|
332: |
|
333: | $data['categories'][] = [
|
334: | 'text' => $this->language->get('text_total'),
|
335: | 'value' => 'total',
|
336: | 'href' => $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . '&filter_category=total' . $url)
|
337: | ];
|
338: |
|
339: | $data['categories'][] = [
|
340: | 'text' => $this->language->get('text_feed'),
|
341: | 'value' => 'feed',
|
342: | 'href' => $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . '&filter_category=feed' . $url)
|
343: | ];
|
344: |
|
345: | $data['categories'][] = [
|
346: | 'text' => $this->language->get('text_report'),
|
347: | 'value' => 'report',
|
348: | 'href' => $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . '&filter_category=report' . $url)
|
349: | ];
|
350: |
|
351: | $data['categories'][] = [
|
352: | 'text' => $this->language->get('text_other'),
|
353: | 'value' => 'other',
|
354: | 'href' => $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . '&filter_category=other' . $url)
|
355: | ];
|
356: |
|
357: |
|
358: | $url = '';
|
359: |
|
360: | if (isset($this->request->get['filter_search'])) {
|
361: | $url .= '&filter_search=' . $this->request->get['filter_search'];
|
362: | }
|
363: |
|
364: | if (isset($this->request->get['filter_category'])) {
|
365: | $url .= '&filter_category=' . $this->request->get['filter_category'];
|
366: | }
|
367: |
|
368: | if (isset($this->request->get['filter_rating'])) {
|
369: | $url .= '&filter_rating=' . $this->request->get['filter_rating'];
|
370: | }
|
371: |
|
372: | if (isset($this->request->get['filter_member_type'])) {
|
373: | $url .= '&filter_member_type=' . $this->request->get['filter_member_type'];
|
374: | }
|
375: |
|
376: | if (isset($this->request->get['filter_member'])) {
|
377: | $url .= '&filter_member=' . $this->request->get['filter_member'];
|
378: | }
|
379: |
|
380: | if (isset($this->request->get['sort'])) {
|
381: | $url .= '&sort=' . $this->request->get['sort'];
|
382: | }
|
383: |
|
384: | if (isset($this->request->get['page'])) {
|
385: | $url .= '&page=' . $this->request->get['page'];
|
386: | }
|
387: |
|
388: | $data['licenses'] = [];
|
389: |
|
390: | $data['licenses'][] = [
|
391: | 'text' => $this->language->get('text_all'),
|
392: | 'value' => '',
|
393: | 'href' => $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . $url)
|
394: | ];
|
395: |
|
396: | $data['licenses'][] = [
|
397: | 'text' => $this->language->get('text_recommended'),
|
398: | 'value' => 'recommended',
|
399: | 'href' => $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . '&filter_license=recommended' . $url)
|
400: | ];
|
401: |
|
402: | $data['licenses'][] = [
|
403: | 'text' => $this->language->get('text_free'),
|
404: | 'value' => 'free',
|
405: | 'href' => $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . '&filter_license=free' . $url)
|
406: | ];
|
407: |
|
408: | $data['licenses'][] = [
|
409: | 'text' => $this->language->get('text_paid'),
|
410: | 'value' => 'paid',
|
411: | 'href' => $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . '&filter_license=paid' . $url)
|
412: | ];
|
413: |
|
414: | $data['licenses'][] = [
|
415: | 'text' => $this->language->get('text_purchased'),
|
416: | 'value' => 'purchased',
|
417: | 'href' => $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . '&filter_license=purchased' . $url)
|
418: | ];
|
419: |
|
420: |
|
421: | $url = '';
|
422: |
|
423: | if (isset($this->request->get['filter_search'])) {
|
424: | $url .= '&filter_search=' . $this->request->get['filter_search'];
|
425: | }
|
426: |
|
427: | if (isset($this->request->get['filter_category'])) {
|
428: | $url .= '&filter_category=' . $this->request->get['filter_category'];
|
429: | }
|
430: |
|
431: | if (isset($this->request->get['filter_license'])) {
|
432: | $url .= '&filter_license=' . $this->request->get['filter_license'];
|
433: | }
|
434: |
|
435: | if (isset($this->request->get['filter_rating'])) {
|
436: | $url .= '&filter_rating=' . $this->request->get['filter_rating'];
|
437: | }
|
438: |
|
439: | if (isset($this->request->get['filter_member_type'])) {
|
440: | $url .= '&filter_member_type=' . $this->request->get['filter_member_type'];
|
441: | }
|
442: |
|
443: | if (isset($this->request->get['filter_member'])) {
|
444: | $url .= '&filter_member=' . $this->request->get['filter_member'];
|
445: | }
|
446: |
|
447: | $data['sorts'] = [];
|
448: |
|
449: | $data['sorts'][] = [
|
450: | 'text' => $this->language->get('text_date_modified'),
|
451: | 'value' => 'date_modified',
|
452: | 'href' => $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . $url . '&sort=date_modified')
|
453: | ];
|
454: |
|
455: | $data['sorts'][] = [
|
456: | 'text' => $this->language->get('text_date_added'),
|
457: | 'value' => 'date_added',
|
458: | 'href' => $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . $url . '&sort=date_added')
|
459: | ];
|
460: |
|
461: | $data['sorts'][] = [
|
462: | 'text' => $this->language->get('text_rating'),
|
463: | 'value' => 'rating',
|
464: | 'href' => $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . $url . '&sort=rating')
|
465: | ];
|
466: |
|
467: | $data['sorts'][] = [
|
468: | 'text' => $this->language->get('text_name'),
|
469: | 'value' => 'name',
|
470: | 'href' => $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . $url . '&sort=name')
|
471: | ];
|
472: |
|
473: | $data['sorts'][] = [
|
474: | 'text' => $this->language->get('text_price'),
|
475: | 'value' => 'price',
|
476: | 'href' => $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . $url . '&sort=price')
|
477: | ];
|
478: |
|
479: |
|
480: | $url = '';
|
481: |
|
482: | if (isset($this->request->get['filter_search'])) {
|
483: | $url .= '&filter_search=' . $this->request->get['filter_search'];
|
484: | }
|
485: |
|
486: | if (isset($this->request->get['filter_category'])) {
|
487: | $url .= '&filter_category=' . $this->request->get['filter_category'];
|
488: | }
|
489: |
|
490: | if (isset($this->request->get['filter_license'])) {
|
491: | $url .= '&filter_license=' . $this->request->get['filter_license'];
|
492: | }
|
493: |
|
494: | if (isset($this->request->get['filter_rating'])) {
|
495: | $url .= '&filter_rating=' . $this->request->get['filter_rating'];
|
496: | }
|
497: |
|
498: | if (isset($this->request->get['filter_member_type'])) {
|
499: | $url .= '&filter_member_type=' . $this->request->get['filter_member_type'];
|
500: | }
|
501: |
|
502: | if (isset($this->request->get['filter_member'])) {
|
503: | $url .= '&filter_member=' . $this->request->get['filter_member'];
|
504: | }
|
505: |
|
506: | if (isset($this->request->get['sort'])) {
|
507: | $url .= '&sort=' . $this->request->get['sort'];
|
508: | }
|
509: |
|
510: | $data['pagination'] = $this->load->controller('common/pagination', [
|
511: | 'total' => $extension_total,
|
512: | 'page' => $page,
|
513: | 'limit' => 12,
|
514: | 'url' => $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . $url . '&page={page}')
|
515: | ]);
|
516: |
|
517: | $data['filter_search'] = $filter_search;
|
518: | $data['filter_category'] = $filter_category;
|
519: | $data['filter_license'] = $filter_license;
|
520: | $data['filter_member_type'] = $filter_member_type;
|
521: | $data['filter_rating'] = $filter_rating;
|
522: |
|
523: | $data['sort'] = $sort;
|
524: |
|
525: | $data['user_token'] = $this->session->data['user_token'];
|
526: |
|
527: | $data['header'] = $this->load->controller('common/header');
|
528: | $data['column_left'] = $this->load->controller('common/column_left');
|
529: | $data['footer'] = $this->load->controller('common/footer');
|
530: |
|
531: | $this->response->setOutput($this->load->view('marketplace/marketplace_list', $data));
|
532: | }
|
533: |
|
534: | |
535: | |
536: | |
537: | |
538: |
|
539: | public function info(): ?\Opencart\System\Engine\Action {
|
540: | if (isset($this->request->get['extension_id'])) {
|
541: | $extension_id = (int)$this->request->get['extension_id'];
|
542: | } else {
|
543: | $extension_id = 0;
|
544: | }
|
545: |
|
546: | $time = time();
|
547: |
|
548: |
|
549: | $string = 'api/marketplace/info' . "\n";
|
550: | $string .= $this->config->get('opencart_username') . "\n";
|
551: | $string .= $this->request->server['HTTP_HOST'] . "\n";
|
552: | $string .= VERSION . "\n";
|
553: | $string .= $extension_id . "\n";
|
554: | $string .= $time . "\n";
|
555: |
|
556: | $signature = base64_encode(hash_hmac('sha1', $string, $this->config->get('opencart_secret'), true));
|
557: |
|
558: | $url = '&username=' . urlencode($this->config->get('opencart_username'));
|
559: | $url .= '&domain=' . $this->request->server['HTTP_HOST'];
|
560: | $url .= '&version=' . VERSION;
|
561: | $url .= '&extension_id=' . $extension_id;
|
562: | $url .= '&time=' . $time;
|
563: | $url .= '&signature=' . rawurlencode($signature);
|
564: |
|
565: | $curl = curl_init(OPENCART_SERVER . 'index.php?route=api/marketplace/info' . $url);
|
566: |
|
567: | curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
568: | curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
|
569: | curl_setopt($curl, CURLOPT_FORBID_REUSE, 1);
|
570: | curl_setopt($curl, CURLOPT_FRESH_CONNECT, 1);
|
571: | curl_setopt($curl, CURLOPT_POST, 1);
|
572: |
|
573: | $response = curl_exec($curl);
|
574: |
|
575: | $status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
576: |
|
577: | curl_close($curl);
|
578: |
|
579: | $response_info = json_decode($response, true);
|
580: |
|
581: | if ($response_info) {
|
582: | $this->load->language('marketplace/marketplace');
|
583: |
|
584: | $this->document->setTitle($this->language->get('heading_title'));
|
585: |
|
586: | $data['signature'] = $this->config->get('opencart_username') && $this->config->get('opencart_secret');
|
587: |
|
588: | if (!$this->config->get('opencart_username') || !$this->config->get('opencart_secret')) {
|
589: | $data['error_warning'] = $this->language->get('error_api');
|
590: | } elseif (isset($response_info['error'])) {
|
591: | $data['error_warning'] = $response_info['error'];
|
592: | } else {
|
593: | $data['error_warning'] = '';
|
594: | }
|
595: |
|
596: | $url = '';
|
597: |
|
598: | if (isset($this->request->get['filter_search'])) {
|
599: | $url .= '&filter_search=' . $this->request->get['filter_search'];
|
600: | }
|
601: |
|
602: | if (isset($this->request->get['filter_category'])) {
|
603: | $url .= '&filter_category=' . $this->request->get['filter_category'];
|
604: | }
|
605: |
|
606: | if (isset($this->request->get['filter_license'])) {
|
607: | $url .= '&filter_license=' . $this->request->get['filter_license'];
|
608: | }
|
609: |
|
610: | if (isset($this->request->get['filter_username'])) {
|
611: | $url .= '&filter_username=' . $this->request->get['filter_username'];
|
612: | }
|
613: |
|
614: | if (isset($this->request->get['sort'])) {
|
615: | $url .= '&sort=' . $this->request->get['sort'];
|
616: | }
|
617: |
|
618: | if (isset($this->request->get['page'])) {
|
619: | $url .= '&page=' . $this->request->get['page'];
|
620: | }
|
621: |
|
622: | $data['back'] = $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . $url);
|
623: |
|
624: | $data['breadcrumbs'] = [];
|
625: |
|
626: | $data['breadcrumbs'][] = [
|
627: | 'text' => $this->language->get('text_home'),
|
628: | 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'])
|
629: | ];
|
630: |
|
631: | $data['breadcrumbs'][] = [
|
632: | 'text' => $this->language->get('heading_title'),
|
633: | 'href' => $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . $url)
|
634: | ];
|
635: |
|
636: | $data['banner'] = $response_info['banner'];
|
637: |
|
638: | $data['extension_id'] = (int)$this->request->get['extension_id'];
|
639: | $data['name'] = $response_info['name'];
|
640: | $data['description'] = $response_info['description'];
|
641: | $data['documentation'] = $response_info['documentation'];
|
642: | $data['price'] = $response_info['price'];
|
643: | $data['license'] = $response_info['license'];
|
644: | $data['license_period'] = $response_info['license_period'];
|
645: | $data['purchased'] = $response_info['purchased'];
|
646: | $data['compatibility'] = $response_info['compatibility'];
|
647: |
|
648: | $data['rating'] = $response_info['rating'];
|
649: | $data['rating_total'] = $response_info['rating_total'];
|
650: |
|
651: | $data['downloaded'] = $response_info['downloaded'];
|
652: | $data['sales'] = $response_info['sales'];
|
653: |
|
654: | $data['date_added'] = date($this->language->get('date_format_short'), strtotime($response_info['date_added']));
|
655: | $data['date_modified'] = date($this->language->get('date_format_short'), strtotime($response_info['date_modified']));
|
656: |
|
657: | $data['member_username'] = $response_info['member_username'];
|
658: | $data['member_image'] = $response_info['member_image'];
|
659: | $data['member_date_added'] = $response_info['member_date_added'];
|
660: | $data['filter_member'] = $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'] . '&filter_member=' . $response_info['member_username']);
|
661: |
|
662: | if (isset($response_info['comment_total'])) {
|
663: | $data['comment_total'] = $response_info['comment_total'];
|
664: | } else {
|
665: | $data['comment_total'] = 0;
|
666: | }
|
667: |
|
668: | $data['images'] = [];
|
669: |
|
670: | foreach ($response_info['images'] as $result) {
|
671: | $data['images'][] = [
|
672: | 'thumb' => $result['thumb'],
|
673: | 'popup' => $result['popup']
|
674: | ];
|
675: | }
|
676: |
|
677: | $this->load->model('setting/extension');
|
678: |
|
679: | $data['downloads'] = [];
|
680: |
|
681: | if ($response_info['downloads']) {
|
682: | $this->session->data['extension_download'][$extension_id] = $response_info['downloads'];
|
683: | } else {
|
684: | $this->session->data['extension_download'][$extension_id] = [];
|
685: | }
|
686: |
|
687: | $this->document->addStyle('view/javascript/jquery/magnific/magnific-popup.css');
|
688: | $this->document->addScript('view/javascript/jquery/magnific/jquery.magnific-popup.min.js');
|
689: |
|
690: | $data['user_token'] = $this->session->data['user_token'];
|
691: |
|
692: | $data['header'] = $this->load->controller('common/header');
|
693: | $data['column_left'] = $this->load->controller('common/column_left');
|
694: | $data['footer'] = $this->load->controller('common/footer');
|
695: |
|
696: | $this->response->setOutput($this->load->view('marketplace/marketplace_info', $data));
|
697: |
|
698: | return null;
|
699: | } else {
|
700: | return new \Opencart\System\Engine\Action('error/not_found');
|
701: | }
|
702: | }
|
703: |
|
704: | |
705: | |
706: | |
707: | |
708: |
|
709: | public function extension(): void {
|
710: | $this->load->language('marketplace/marketplace');
|
711: |
|
712: | if (isset($this->request->get['extension_id'])) {
|
713: | $extension_id = (int)$this->request->get['extension_id'];
|
714: | } else {
|
715: | $extension_id = 0;
|
716: | }
|
717: |
|
718: | $this->load->model('setting/extension');
|
719: |
|
720: | $data['downloads'] = [];
|
721: |
|
722: | if (isset($this->session->data['extension_download'][$extension_id])) {
|
723: | $results = $this->session->data['extension_download'][$extension_id];
|
724: |
|
725: | foreach ($results as $result) {
|
726: | if (substr($result['filename'], -10) == '.ocmod.zip') {
|
727: | $code = basename($result['filename'], '.ocmod.zip');
|
728: |
|
729: | $install_info = $this->model_setting_extension->getInstallByCode($code);
|
730: |
|
731: |
|
732: | if (!$install_info) {
|
733: | $download = $this->url->link('marketplace/marketplace.download', 'user_token=' . $this->session->data['user_token'] . '&extension_id=' . $extension_id . '&extension_download_id=' . $result['extension_download_id']);
|
734: | } else {
|
735: | $download = '';
|
736: | }
|
737: |
|
738: |
|
739: | if ($install_info && !$install_info['status']) {
|
740: | $install = $this->url->link('marketplace/installer.install', 'user_token=' . $this->session->data['user_token'] . '&extension_install_id=' . $install_info['extension_install_id']);
|
741: | } else {
|
742: | $install = '';
|
743: | }
|
744: |
|
745: |
|
746: | if ($install_info && $install_info['status']) {
|
747: | $uninstall = $this->url->link('marketplace/installer.uninstall', 'user_token=' . $this->session->data['user_token'] . '&extension_install_id=' . $install_info['extension_install_id']);
|
748: | } else {
|
749: | $uninstall = '';
|
750: | }
|
751: |
|
752: |
|
753: | if ($install_info && !$install_info['status']) {
|
754: | $delete = $this->url->link('marketplace/installer.delete', 'user_token=' . $this->session->data['user_token'] . '&extension_install_id=' . $install_info['extension_install_id']);
|
755: | } else {
|
756: | $delete = '';
|
757: | }
|
758: |
|
759: | $data['downloads'][] = [
|
760: | 'name' => $result['name'],
|
761: | 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])),
|
762: | 'download' => $download,
|
763: | 'install' => $install,
|
764: | 'uninstall' => $uninstall,
|
765: | 'delete' => $delete
|
766: | ];
|
767: | }
|
768: | }
|
769: | }
|
770: |
|
771: | $this->response->setOutput($this->load->view('marketplace/marketplace_extension', $data));
|
772: | }
|
773: |
|
774: | |
775: | |
776: | |
777: | |
778: |
|
779: | public function purchase(): void {
|
780: | $this->load->language('marketplace/marketplace');
|
781: |
|
782: | $json = [];
|
783: |
|
784: | if (isset($this->request->get['extension_id'])) {
|
785: | $extension_id = (int)$this->request->get['extension_id'];
|
786: | } else {
|
787: | $extension_id = 0;
|
788: | }
|
789: |
|
790: | if (!$this->user->hasPermission('modify', 'marketplace/marketplace')) {
|
791: | $json['error'] = $this->language->get('error_permission');
|
792: | }
|
793: |
|
794: | if (!$this->config->get('opencart_username') || !$this->config->get('opencart_secret')) {
|
795: | $json['error'] = $this->language->get('error_api');
|
796: | }
|
797: |
|
798: | if (!$this->request->post['pin']) {
|
799: | $json['error'] = $this->language->get('error_pin');
|
800: | }
|
801: |
|
802: | if (!$json) {
|
803: | $time = time();
|
804: |
|
805: |
|
806: | $string = 'api/marketplace/purchase' . "\n";
|
807: | $string .= $this->config->get('opencart_username') . "\n";
|
808: | $string .= $this->request->server['HTTP_HOST'] . "\n";
|
809: | $string .= VERSION . "\n";
|
810: | $string .= $extension_id . "\n";
|
811: | $string .= $this->request->post['pin'] . "\n";
|
812: | $string .= $time . "\n";
|
813: |
|
814: | $signature = base64_encode(hash_hmac('sha1', $string, $this->config->get('opencart_secret'), true));
|
815: |
|
816: | $url = '&username=' . urlencode($this->config->get('opencart_username'));
|
817: | $url .= '&domain=' . $this->request->server['HTTP_HOST'];
|
818: | $url .= '&version=' . urlencode(VERSION);
|
819: | $url .= '&extension_id=' . $extension_id;
|
820: | $url .= '&time=' . $time;
|
821: | $url .= '&signature=' . rawurlencode($signature);
|
822: |
|
823: | $curl = curl_init(OPENCART_SERVER . 'index.php?route=api/marketplace/purchase' . $url);
|
824: |
|
825: | curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
826: | curl_setopt($curl, CURLOPT_FORBID_REUSE, 1);
|
827: | curl_setopt($curl, CURLOPT_FRESH_CONNECT, 1);
|
828: | curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
|
829: |
|
830: | $response = curl_exec($curl);
|
831: |
|
832: | curl_close($curl);
|
833: |
|
834: | $response_info = json_decode($response, true);
|
835: |
|
836: | if (isset($response_info['success'])) {
|
837: |
|
838: | if (isset($this->session->data['extension_download'][$extension_id])) {
|
839: | $results = $this->session->data['extension_download'][$extension_id];
|
840: |
|
841: | foreach (array_keys($results) as $key) {
|
842: | $this->session->data['extension_download'][$extension_id][$key]['status'] = 1;
|
843: | }
|
844: | }
|
845: |
|
846: | $json['success'] = $response_info['success'];
|
847: | } elseif (isset($response_info['error'])) {
|
848: | $json['error'] = $response_info['error'];
|
849: | } else {
|
850: | $json['error'] = $this->language->get('error_purchase');
|
851: | }
|
852: | }
|
853: |
|
854: | $this->response->addHeader('Content-Type: application/json');
|
855: | $this->response->setOutput(json_encode($json));
|
856: | }
|
857: |
|
858: | |
859: | |
860: | |
861: | |
862: |
|
863: | public function download(): void {
|
864: | $this->load->language('marketplace/marketplace');
|
865: |
|
866: | $json = [];
|
867: |
|
868: | if (isset($this->request->get['extension_id'])) {
|
869: | $extension_id = (int)$this->request->get['extension_id'];
|
870: | } else {
|
871: | $extension_id = 0;
|
872: | }
|
873: |
|
874: | if (isset($this->request->get['extension_download_id'])) {
|
875: | $extension_download_id = (int)$this->request->get['extension_download_id'];
|
876: | } else {
|
877: | $extension_download_id = 0;
|
878: | }
|
879: |
|
880: | if (!$this->user->hasPermission('modify', 'marketplace/marketplace')) {
|
881: | $json['error'] = $this->language->get('error_permission');
|
882: | }
|
883: |
|
884: | if (!$json) {
|
885: | $time = time();
|
886: |
|
887: |
|
888: | $string = 'api/marketplace/download' . "\n";
|
889: | $string .= $this->config->get('opencart_username') . "\n";
|
890: | $string .= $this->request->server['HTTP_HOST'] . "\n";
|
891: | $string .= VERSION . "\n";
|
892: | $string .= $extension_id . "\n";
|
893: | $string .= $extension_download_id . "\n";
|
894: | $string .= $time . "\n";
|
895: |
|
896: | $signature = base64_encode(hash_hmac('sha1', $string, $this->config->get('opencart_secret'), true));
|
897: |
|
898: | $url = '&username=' . urlencode($this->config->get('opencart_username'));
|
899: | $url .= '&domain=' . $this->request->server['HTTP_HOST'];
|
900: | $url .= '&version=' . urlencode(VERSION);
|
901: | $url .= '&extension_id=' . $extension_id;
|
902: | $url .= '&extension_download_id=' . $extension_download_id;
|
903: | $url .= '&time=' . $time;
|
904: | $url .= '&signature=' . rawurlencode($signature);
|
905: |
|
906: | $curl = curl_init(OPENCART_SERVER . 'index.php?route=api/marketplace/download&extension_download_id=' . $extension_download_id . $url);
|
907: |
|
908: | curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
909: | curl_setopt($curl, CURLOPT_FORBID_REUSE, 1);
|
910: | curl_setopt($curl, CURLOPT_FRESH_CONNECT, 1);
|
911: | curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
|
912: |
|
913: | $response = curl_exec($curl);
|
914: |
|
915: | $response_info = json_decode($response, true);
|
916: |
|
917: | curl_close($curl);
|
918: |
|
919: | if (isset($response_info['download'])) {
|
920: | if (substr($response_info['filename'], -10) == '.ocmod.zip') {
|
921: | $handle = fopen(DIR_STORAGE . 'marketplace/' . $response_info['filename'], 'w');
|
922: |
|
923: | $download = file_get_contents($response_info['download']);
|
924: |
|
925: | fwrite($handle, $download);
|
926: |
|
927: | fclose($handle);
|
928: |
|
929: | $extension_data = [
|
930: | 'extension_id' => $extension_id,
|
931: | 'extension_download_id' => $extension_download_id,
|
932: | 'name' => $response_info['name'],
|
933: | 'description' => $response_info['description'] ?? '',
|
934: | 'code' => basename($response_info['filename'], '.ocmod.zip'),
|
935: | 'author' => $response_info['author'],
|
936: | 'version' => $response_info['version'],
|
937: | 'link' => OPENCART_SERVER . 'index.php?route=marketplace/extension.info&extension_id=' . $extension_id
|
938: | ];
|
939: |
|
940: | $this->load->model('setting/extension');
|
941: |
|
942: | $json['extension_install_id'] = $this->model_setting_extension->addInstall($extension_data);
|
943: |
|
944: | $json['success'] = $this->language->get('text_success');
|
945: | } else {
|
946: | $json['redirect'] = $response_info['download'];
|
947: | }
|
948: | } elseif (isset($response_info['error'])) {
|
949: | $json['error'] = $response_info['error'];
|
950: | } else {
|
951: | $json['error'] = $this->language->get('error_download');
|
952: | }
|
953: | }
|
954: |
|
955: | $this->response->addHeader('Content-Type: application/json');
|
956: | $this->response->setOutput(json_encode($json));
|
957: | }
|
958: |
|
959: | |
960: | |
961: | |
962: | |
963: |
|
964: | public function addComment(): void {
|
965: | $this->load->language('marketplace/marketplace');
|
966: |
|
967: | $json = [];
|
968: |
|
969: | if (isset($this->request->get['extension_id'])) {
|
970: | $extension_id = (int)$this->request->get['extension_id'];
|
971: | } else {
|
972: | $extension_id = 0;
|
973: | }
|
974: |
|
975: | if (isset($this->request->get['parent_id'])) {
|
976: | $parent_id = (int)$this->request->get['parent_id'];
|
977: | } else {
|
978: | $parent_id = 0;
|
979: | }
|
980: |
|
981: | if (!$this->user->hasPermission('modify', 'marketplace/marketplace')) {
|
982: | $json['error'] = $this->language->get('error_permission');
|
983: | }
|
984: |
|
985: | if (!$this->config->get('opencart_username') || !$this->config->get('opencart_secret')) {
|
986: | $json['error'] = $this->language->get('error_opencart');
|
987: | }
|
988: |
|
989: | if (!$json) {
|
990: | $time = time();
|
991: |
|
992: |
|
993: | $string = 'api/marketplace/addcomment' . "\n";
|
994: | $string .= urlencode($this->config->get('opencart_username')) . "\n";
|
995: | $string .= $this->request->server['HTTP_HOST'] . "\n";
|
996: | $string .= urlencode(VERSION) . "\n";
|
997: | $string .= $extension_id . "\n";
|
998: | $string .= $parent_id . "\n";
|
999: | $string .= urlencode(base64_encode($this->request->post['comment'])) . "\n";
|
1000: | $string .= $time . "\n";
|
1001: |
|
1002: | $signature = base64_encode(hash_hmac('sha1', $string, $this->config->get('opencart_secret'), true));
|
1003: |
|
1004: | $url = '&username=' . $this->config->get('opencart_username');
|
1005: | $url .= '&domain=' . $this->request->server['HTTP_HOST'];
|
1006: | $url .= '&version=' . VERSION;
|
1007: | $url .= '&extension_id=' . $extension_id;
|
1008: | $url .= '&parent_id=' . $parent_id;
|
1009: | $url .= '&time=' . $time;
|
1010: | $url .= '&signature=' . rawurlencode($signature);
|
1011: |
|
1012: | $curl = curl_init(OPENCART_SERVER . 'index.php?route=api/marketplace/addcomment&extension_id=' . $extension_id . $url);
|
1013: |
|
1014: | curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
1015: | curl_setopt($curl, CURLOPT_FORBID_REUSE, 1);
|
1016: | curl_setopt($curl, CURLOPT_FRESH_CONNECT, 1);
|
1017: | curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
|
1018: | curl_setopt($curl, CURLOPT_POST, 1);
|
1019: | curl_setopt($curl, CURLOPT_POSTFIELDS, ['comment' => $this->request->post['comment']]);
|
1020: |
|
1021: | $response = curl_exec($curl);
|
1022: |
|
1023: | curl_close($curl);
|
1024: |
|
1025: | $response_info = json_decode($response, true);
|
1026: |
|
1027: | if (isset($response_info['success'])) {
|
1028: | $json['success'] = $response_info['success'];
|
1029: | } elseif (isset($response_info['error'])) {
|
1030: | $json['error'] = $response_info['error'];
|
1031: | } else {
|
1032: | $json['error'] = $this->language->get('error_comment');
|
1033: | }
|
1034: | }
|
1035: |
|
1036: | $this->response->addHeader('Content-Type: application/json');
|
1037: | $this->response->setOutput(json_encode($json));
|
1038: | }
|
1039: |
|
1040: | |
1041: | |
1042: | |
1043: | |
1044: |
|
1045: | public function comment(): void {
|
1046: | $this->load->language('marketplace/marketplace');
|
1047: |
|
1048: | if (isset($this->request->get['extension_id'])) {
|
1049: | $extension_id = (int)$this->request->get['extension_id'];
|
1050: | } else {
|
1051: | $extension_id = 0;
|
1052: | }
|
1053: |
|
1054: | if (isset($this->request->get['page'])) {
|
1055: | $page = (int)$this->request->get['page'];
|
1056: | } else {
|
1057: | $page = 1;
|
1058: | }
|
1059: |
|
1060: | $data['button_more'] = $this->language->get('button_more');
|
1061: | $data['button_reply'] = $this->language->get('button_reply');
|
1062: |
|
1063: | $curl = curl_init(OPENCART_SERVER . 'index.php?route=api/marketplace/comment&extension_id=' . $extension_id . '&page=' . $page);
|
1064: |
|
1065: | curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
1066: | curl_setopt($curl, CURLOPT_FORBID_REUSE, 1);
|
1067: | curl_setopt($curl, CURLOPT_FRESH_CONNECT, 1);
|
1068: | curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
|
1069: |
|
1070: | $response = curl_exec($curl);
|
1071: |
|
1072: | curl_close($curl);
|
1073: |
|
1074: | $json = json_decode($response, true);
|
1075: |
|
1076: | $data['comments'] = [];
|
1077: |
|
1078: | if ($json['comments']) {
|
1079: | $results = $json['comments'];
|
1080: |
|
1081: | foreach ($results as $result) {
|
1082: | if ($result['reply_total'] > 5) {
|
1083: | $next = $this->url->link('marketplace/marketplace.reply', 'user_token=' . $this->session->data['user_token'] . '&extension_id=' . $extension_id . '&parent_id=' . $result['extension_comment_id'] . '&page=2');
|
1084: | } else {
|
1085: | $next = '';
|
1086: | }
|
1087: |
|
1088: | $data['comments'][] = [
|
1089: | 'extension_comment_id' => $result['extension_comment_id'],
|
1090: | 'member' => $result['member'],
|
1091: | 'image' => $result['image'],
|
1092: | 'comment' => $result['comment'],
|
1093: | 'date_added' => $result['date_added'],
|
1094: | 'reply' => $result['reply'],
|
1095: | 'add' => $this->url->link('marketplace/marketplace.addcomment', 'user_token=' . $this->session->data['user_token'] . '&extension_id=' . $extension_id . '&parent_id=' . $result['extension_comment_id']),
|
1096: | 'refresh' => $this->url->link('marketplace/marketplace.reply', 'user_token=' . $this->session->data['user_token'] . '&extension_id=' . $extension_id . '&parent_id=' . $result['extension_comment_id'] . '&page=1'),
|
1097: | 'next' => $next
|
1098: | ];
|
1099: | }
|
1100: | }
|
1101: |
|
1102: | $comment_total = $json['comment_total'];
|
1103: |
|
1104: | $data['pagination'] = $this->load->controller('common/pagination', [
|
1105: | 'total' => $comment_total,
|
1106: | 'page' => $page,
|
1107: | 'limit' => 20,
|
1108: | 'url' => $this->url->link('marketplace/marketplace.comment', 'user_token=' . $this->session->data['user_token'] . '&extension_id=' . $extension_id . '&page={page}')
|
1109: | ]);
|
1110: |
|
1111: | $data['refresh'] = $this->url->link('marketplace/marketplace.comment', 'user_token=' . $this->session->data['user_token'] . '&extension_id=' . $extension_id . '&page=' . $page);
|
1112: |
|
1113: | $this->response->setOutput($this->load->view('marketplace/marketplace_comment', $data));
|
1114: | }
|
1115: |
|
1116: | |
1117: | |
1118: | |
1119: | |
1120: |
|
1121: | public function reply(): void {
|
1122: | $this->load->language('marketplace/marketplace');
|
1123: |
|
1124: | if (isset($this->request->get['extension_id'])) {
|
1125: | $extension_id = (int)$this->request->get['extension_id'];
|
1126: | } else {
|
1127: | $extension_id = 0;
|
1128: | }
|
1129: |
|
1130: | if (isset($this->request->get['parent_id'])) {
|
1131: | $parent_id = (int)$this->request->get['parent_id'];
|
1132: | } else {
|
1133: | $parent_id = 0;
|
1134: | }
|
1135: |
|
1136: | if (isset($this->request->get['page'])) {
|
1137: | $page = (int)$this->request->get['page'];
|
1138: | } else {
|
1139: | $page = 1;
|
1140: | }
|
1141: |
|
1142: | $curl = curl_init(OPENCART_SERVER . 'index.php?route=api/marketplace/comment&extension_id=' . $extension_id . '&parent_id=' . $parent_id . '&page=' . $page);
|
1143: |
|
1144: | curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
1145: | curl_setopt($curl, CURLOPT_FORBID_REUSE, 1);
|
1146: | curl_setopt($curl, CURLOPT_FRESH_CONNECT, 1);
|
1147: | curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
|
1148: |
|
1149: | $response = curl_exec($curl);
|
1150: |
|
1151: | $json = json_decode($response, true);
|
1152: |
|
1153: | $data['replies'] = [];
|
1154: |
|
1155: | if (isset($json['reply_total'])) {
|
1156: | $reply_total = $json['reply_total'];
|
1157: | } else {
|
1158: | $reply_total = 0;
|
1159: | }
|
1160: |
|
1161: | if (isset($json['replies'])) {
|
1162: | $results = $json['replies'];
|
1163: |
|
1164: | foreach ($results as $result) {
|
1165: | $data['replies'][] = [
|
1166: | 'extension_comment_id' => $result['extension_comment_id'],
|
1167: | 'member' => $result['member'],
|
1168: | 'image' => $result['image'],
|
1169: | 'comment' => $result['comment'],
|
1170: | 'date_added' => $result['date_added']
|
1171: | ];
|
1172: | }
|
1173: | }
|
1174: |
|
1175: | $data['refresh'] = $this->url->link('marketplace/marketplace.reply', 'user_token=' . $this->session->data['user_token'] . '&extension_id=' . $extension_id . '&parent_id=' . $parent_id . '&page=' . $page);
|
1176: |
|
1177: | if (($page * 5) < $reply_total) {
|
1178: | $data['next'] = $this->url->link('marketplace/marketplace.reply', 'user_token=' . $this->session->data['user_token'] . '&extension_id=' . $extension_id . '&parent_id=' . $parent_id . '&page=' . ($page + 1));
|
1179: | } else {
|
1180: | $data['next'] = '';
|
1181: | }
|
1182: |
|
1183: | $this->response->setOutput($this->load->view('marketplace/marketplace_reply', $data));
|
1184: | }
|
1185: | }
|
1186: | |