| 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: | |