| 1: | <?php
|
| 2: | namespace Opencart\Admin\Controller\Marketing;
|
| 3: | |
| 4: | |
| 5: | |
| 6: | |
| 7: |
|
| 8: | class Affiliate extends \Opencart\System\Engine\Controller {
|
| 9: | |
| 10: | |
| 11: | |
| 12: | |
| 13: |
|
| 14: | public function index(): void {
|
| 15: | $this->load->language('marketing/affiliate');
|
| 16: |
|
| 17: | $this->document->setTitle($this->language->get('heading_title'));
|
| 18: |
|
| 19: | if (isset($this->request->get['filter_customer'])) {
|
| 20: | $filter_customer = $this->request->get['filter_customer'];
|
| 21: | } else {
|
| 22: | $filter_customer = '';
|
| 23: | }
|
| 24: |
|
| 25: | if (isset($this->request->get['filter_tracking'])) {
|
| 26: | $filter_tracking = $this->request->get['filter_tracking'];
|
| 27: | } else {
|
| 28: | $filter_tracking = '';
|
| 29: | }
|
| 30: |
|
| 31: | if (isset($this->request->get['filter_payment_method'])) {
|
| 32: | $filter_payment_method = (string)$this->request->get['filter_payment_method'];
|
| 33: | } else {
|
| 34: | $filter_payment_method = '';
|
| 35: | }
|
| 36: |
|
| 37: | if (isset($this->request->get['filter_commission'])) {
|
| 38: | $filter_commission = $this->request->get['filter_commission'];
|
| 39: | } else {
|
| 40: | $filter_commission = '';
|
| 41: | }
|
| 42: |
|
| 43: | if (isset($this->request->get['filter_date_from'])) {
|
| 44: | $filter_date_from = $this->request->get['filter_date_from'];
|
| 45: | } else {
|
| 46: | $filter_date_from = '';
|
| 47: | }
|
| 48: |
|
| 49: | if (isset($this->request->get['filter_date_to'])) {
|
| 50: | $filter_date_to = $this->request->get['filter_date_to'];
|
| 51: | } else {
|
| 52: | $filter_date_to = '';
|
| 53: | }
|
| 54: |
|
| 55: | if (isset($this->request->get['filter_status'])) {
|
| 56: | $filter_status = $this->request->get['filter_status'];
|
| 57: | } else {
|
| 58: | $filter_status = '';
|
| 59: | }
|
| 60: |
|
| 61: | if (isset($this->request->get['limit'])) {
|
| 62: | $limit = (int)$this->request->get['limit'];
|
| 63: | } else {
|
| 64: | $limit = $this->config->get('config_pagination');
|
| 65: | }
|
| 66: |
|
| 67: | $url = '';
|
| 68: |
|
| 69: | if (isset($this->request->get['filter_customer'])) {
|
| 70: | $url .= '&filter_customer=' . urlencode(html_entity_decode($this->request->get['filter_customer'], ENT_QUOTES, 'UTF-8'));
|
| 71: | }
|
| 72: |
|
| 73: | if (isset($this->request->get['filter_tracking'])) {
|
| 74: | $url .= '&filter_tracking=' . $this->request->get['filter_tracking'];
|
| 75: | }
|
| 76: |
|
| 77: | if (isset($this->request->get['filter_payment_method'])) {
|
| 78: | $url .= '&filter_payment_method=' . $this->request->get['filter_payment_method'];
|
| 79: | }
|
| 80: |
|
| 81: | if (isset($this->request->get['filter_commission'])) {
|
| 82: | $url .= '&filter_commission=' . $this->request->get['filter_commission'];
|
| 83: | }
|
| 84: |
|
| 85: | if (isset($this->request->get['filter_date_from'])) {
|
| 86: | $url .= '&filter_date_from=' . $this->request->get['filter_date_from'];
|
| 87: | }
|
| 88: |
|
| 89: | if (isset($this->request->get['filter_date_to'])) {
|
| 90: | $url .= '&filter_date_to=' . $this->request->get['filter_date_to'];
|
| 91: | }
|
| 92: |
|
| 93: | if (isset($this->request->get['filter_status'])) {
|
| 94: | $url .= '&filter_status=' . $this->request->get['filter_status'];
|
| 95: | }
|
| 96: |
|
| 97: | if (isset($this->request->get['sort'])) {
|
| 98: | $url .= '&sort=' . $this->request->get['sort'];
|
| 99: | }
|
| 100: |
|
| 101: | if (isset($this->request->get['order'])) {
|
| 102: | $url .= '&order=' . $this->request->get['order'];
|
| 103: | }
|
| 104: |
|
| 105: | if (isset($this->request->get['page'])) {
|
| 106: | $url .= '&page=' . $this->request->get['page'];
|
| 107: | }
|
| 108: |
|
| 109: | if (isset($this->request->get['limit'])) {
|
| 110: | $url .= '&limit=' . $this->request->get['limit'];
|
| 111: | }
|
| 112: |
|
| 113: | $data['breadcrumbs'] = [];
|
| 114: |
|
| 115: | $data['breadcrumbs'][] = [
|
| 116: | 'text' => $this->language->get('text_home'),
|
| 117: | 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'])
|
| 118: | ];
|
| 119: |
|
| 120: | $data['breadcrumbs'][] = [
|
| 121: | 'text' => $this->language->get('heading_title'),
|
| 122: | 'href' => $this->url->link('marketing/affiliate', 'user_token=' . $this->session->data['user_token'] . $url)
|
| 123: | ];
|
| 124: |
|
| 125: | $data['csv'] = $this->url->link('marketing/affiliate.csv', 'user_token=' . $this->session->data['user_token']);
|
| 126: | $data['complete'] = $this->url->link('marketing/affiliate.complete', 'user_token=' . $this->session->data['user_token']);
|
| 127: | $data['add'] = $this->url->link('marketing/affiliate.form', 'user_token=' . $this->session->data['user_token'] . $url);
|
| 128: | $data['delete'] = $this->url->link('marketing/affiliate.delete', 'user_token=' . $this->session->data['user_token']);
|
| 129: |
|
| 130: | $data['list'] = $this->getList();
|
| 131: |
|
| 132: | $data['payment_methods'] = [];
|
| 133: |
|
| 134: | $data['payment_methods'][] = [
|
| 135: | 'text' => $this->language->get('text_cheque'),
|
| 136: | 'value' => 'cheque'
|
| 137: | ];
|
| 138: |
|
| 139: | $data['payment_methods'][] = [
|
| 140: | 'text' => $this->language->get('text_paypal'),
|
| 141: | 'value' => 'paypal'
|
| 142: | ];
|
| 143: |
|
| 144: | $data['payment_methods'][] = [
|
| 145: | 'text' => $this->language->get('text_bank'),
|
| 146: | 'value' => 'bank'
|
| 147: | ];
|
| 148: |
|
| 149: | $data['limits'] = [];
|
| 150: |
|
| 151: | $data['limits'][] = [
|
| 152: | 'text' => $this->config->get('config_pagination'),
|
| 153: | 'value' => $this->config->get('config_pagination')
|
| 154: | ];
|
| 155: |
|
| 156: | $data['limits'][] = [
|
| 157: | 'text' => 100,
|
| 158: | 'value' => 100
|
| 159: | ];
|
| 160: |
|
| 161: | $data['limits'][] = [
|
| 162: | 'text' => 200,
|
| 163: | 'value' => 200
|
| 164: | ];
|
| 165: |
|
| 166: | $data['limits'][] = [
|
| 167: | 'text' => 400,
|
| 168: | 'value' => 400
|
| 169: | ];
|
| 170: |
|
| 171: | $data['limits'][] = [
|
| 172: | 'text' => 800,
|
| 173: | 'value' => 800
|
| 174: | ];
|
| 175: |
|
| 176: | $data['filter_customer'] = $filter_customer;
|
| 177: | $data['filter_tracking'] = $filter_tracking;
|
| 178: | $data['filter_payment_method'] = $filter_payment_method;
|
| 179: | $data['filter_commission'] = $filter_commission;
|
| 180: | $data['filter_date_from'] = $filter_date_from;
|
| 181: | $data['filter_date_to'] = $filter_date_to;
|
| 182: | $data['filter_status'] = $filter_status;
|
| 183: |
|
| 184: | $data['limit'] = $limit;
|
| 185: |
|
| 186: | $data['user_token'] = $this->session->data['user_token'];
|
| 187: |
|
| 188: | $data['header'] = $this->load->controller('common/header');
|
| 189: | $data['column_left'] = $this->load->controller('common/column_left');
|
| 190: | $data['footer'] = $this->load->controller('common/footer');
|
| 191: |
|
| 192: | $this->response->setOutput($this->load->view('marketing/affiliate', $data));
|
| 193: | }
|
| 194: |
|
| 195: | |
| 196: | |
| 197: | |
| 198: | |
| 199: |
|
| 200: | public function list(): void {
|
| 201: | $this->load->language('marketing/affiliate');
|
| 202: |
|
| 203: | $this->response->setOutput($this->getList());
|
| 204: | }
|
| 205: |
|
| 206: | |
| 207: | |
| 208: | |
| 209: | |
| 210: |
|
| 211: | protected function getList(): string {
|
| 212: | if (isset($this->request->get['filter_customer'])) {
|
| 213: | $filter_customer = (string)$this->request->get['filter_customer'];
|
| 214: | } else {
|
| 215: | $filter_customer = '';
|
| 216: | }
|
| 217: |
|
| 218: | if (isset($this->request->get['filter_tracking'])) {
|
| 219: | $filter_tracking = (string)$this->request->get['filter_tracking'];
|
| 220: | } else {
|
| 221: | $filter_tracking = '';
|
| 222: | }
|
| 223: |
|
| 224: | if (isset($this->request->get['filter_payment_method'])) {
|
| 225: | $filter_payment_method = (string)$this->request->get['filter_payment_method'];
|
| 226: | } else {
|
| 227: | $filter_payment_method = '';
|
| 228: | }
|
| 229: |
|
| 230: | if (isset($this->request->get['filter_commission'])) {
|
| 231: | $filter_commission = $this->request->get['filter_commission'];
|
| 232: | } else {
|
| 233: | $filter_commission = '';
|
| 234: | }
|
| 235: |
|
| 236: | if (isset($this->request->get['filter_date_from'])) {
|
| 237: | $filter_date_from = (string)$this->request->get['filter_date_from'];
|
| 238: | } else {
|
| 239: | $filter_date_from = '';
|
| 240: | }
|
| 241: |
|
| 242: | if (isset($this->request->get['filter_date_to'])) {
|
| 243: | $filter_date_to = (string)$this->request->get['filter_date_to'];
|
| 244: | } else {
|
| 245: | $filter_date_to = '';
|
| 246: | }
|
| 247: |
|
| 248: | if (isset($this->request->get['filter_status'])) {
|
| 249: | $filter_status = $this->request->get['filter_status'];
|
| 250: | } else {
|
| 251: | $filter_status = '';
|
| 252: | }
|
| 253: |
|
| 254: | if (isset($this->request->get['sort'])) {
|
| 255: | $sort = (string)$this->request->get['sort'];
|
| 256: | } else {
|
| 257: | $sort = 'name';
|
| 258: | }
|
| 259: |
|
| 260: | if (isset($this->request->get['order'])) {
|
| 261: | $order = (string)$this->request->get['order'];
|
| 262: | } else {
|
| 263: | $order = 'ASC';
|
| 264: | }
|
| 265: |
|
| 266: | if (isset($this->request->get['page'])) {
|
| 267: | $page = (int)$this->request->get['page'];
|
| 268: | } else {
|
| 269: | $page = 1;
|
| 270: | }
|
| 271: |
|
| 272: | if (isset($this->request->get['limit'])) {
|
| 273: | $limit = (int)$this->request->get['limit'];
|
| 274: | } else {
|
| 275: | $limit = $this->config->get('config_pagination');
|
| 276: | }
|
| 277: |
|
| 278: | $url = '';
|
| 279: |
|
| 280: | if (isset($this->request->get['filter_customer'])) {
|
| 281: | $url .= '&filter_customer=' . urlencode(html_entity_decode($this->request->get['filter_customer'], ENT_QUOTES, 'UTF-8'));
|
| 282: | }
|
| 283: |
|
| 284: | if (isset($this->request->get['filter_tracking'])) {
|
| 285: | $url .= '&filter_tracking=' . $this->request->get['filter_tracking'];
|
| 286: | }
|
| 287: |
|
| 288: | if (isset($this->request->get['filter_payment_method'])) {
|
| 289: | $url .= '&filter_payment_method=' . $this->request->get['filter_payment_method'];
|
| 290: | }
|
| 291: |
|
| 292: | if (isset($this->request->get['filter_commission'])) {
|
| 293: | $url .= '&filter_commission=' . $this->request->get['filter_commission'];
|
| 294: | }
|
| 295: |
|
| 296: | if (isset($this->request->get['filter_date_from'])) {
|
| 297: | $url .= '&filter_date_from=' . $this->request->get['filter_date_from'];
|
| 298: | }
|
| 299: |
|
| 300: | if (isset($this->request->get['filter_date_to'])) {
|
| 301: | $url .= '&filter_date_to=' . $this->request->get['filter_date_to'];
|
| 302: | }
|
| 303: |
|
| 304: | if (isset($this->request->get['filter_status'])) {
|
| 305: | $url .= '&filter_status=' . $this->request->get['filter_status'];
|
| 306: | }
|
| 307: |
|
| 308: | if (isset($this->request->get['sort'])) {
|
| 309: | $url .= '&sort=' . $this->request->get['sort'];
|
| 310: | }
|
| 311: |
|
| 312: | if (isset($this->request->get['order'])) {
|
| 313: | $url .= '&order=' . $this->request->get['order'];
|
| 314: | }
|
| 315: |
|
| 316: | if (isset($this->request->get['page'])) {
|
| 317: | $url .= '&page=' . $this->request->get['page'];
|
| 318: | }
|
| 319: |
|
| 320: | if (isset($this->request->get['limit'])) {
|
| 321: | $url .= '&limit=' . $this->request->get['limit'];
|
| 322: | }
|
| 323: |
|
| 324: | $data['action'] = $this->url->link('marketing/affiliate.list', 'user_token=' . $this->session->data['user_token'] . $url);
|
| 325: |
|
| 326: | $data['affiliates'] = [];
|
| 327: |
|
| 328: | $filter_data = [
|
| 329: | 'filter_name' => $filter_customer,
|
| 330: | 'filter_tracking' => $filter_tracking,
|
| 331: | 'filter_payment_method' => $filter_payment_method,
|
| 332: | 'filter_commission' => $filter_commission,
|
| 333: | 'filter_date_from' => $filter_date_from,
|
| 334: | 'filter_date_to' => $filter_date_to,
|
| 335: | 'filter_status' => $filter_status,
|
| 336: | 'sort' => $sort,
|
| 337: | 'order' => $order,
|
| 338: | 'start' => ($page - 1) * $limit,
|
| 339: | 'limit' => $limit
|
| 340: | ];
|
| 341: |
|
| 342: | $this->load->model('marketing/affiliate');
|
| 343: |
|
| 344: | $results = $this->model_marketing_affiliate->getAffiliates($filter_data);
|
| 345: |
|
| 346: | foreach ($results as $result) {
|
| 347: | $data['affiliates'][] = [
|
| 348: | 'customer_id' => $result['customer_id'],
|
| 349: | 'name' => $result['name'],
|
| 350: | 'tracking' => $result['tracking'],
|
| 351: | 'commission' => $result['commission'],
|
| 352: | 'balance' => $this->currency->format((int)$result['balance'], $this->config->get('config_currency')),
|
| 353: | 'status' => $result['status'],
|
| 354: | 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])),
|
| 355: | 'customer' => $this->url->link('customer/customer.form', 'user_token=' . $this->session->data['user_token'] . '&customer_id=' . $result['customer_id']),
|
| 356: | 'edit' => $this->url->link('marketing/affiliate.form', 'user_token=' . $this->session->data['user_token'] . '&customer_id=' . $result['customer_id'] . $url)
|
| 357: | ];
|
| 358: | }
|
| 359: |
|
| 360: | $url = '';
|
| 361: |
|
| 362: | if (isset($this->request->get['filter_customer'])) {
|
| 363: | $url .= '&filter_customer=' . urlencode(html_entity_decode($this->request->get['filter_customer'], ENT_QUOTES, 'UTF-8'));
|
| 364: | }
|
| 365: |
|
| 366: | if (isset($this->request->get['filter_tracking'])) {
|
| 367: | $url .= '&filter_tracking=' . $this->request->get['filter_tracking'];
|
| 368: | }
|
| 369: |
|
| 370: | if (isset($this->request->get['filter_payment_method'])) {
|
| 371: | $url .= '&filter_payment_method=' . $this->request->get['filter_payment_method'];
|
| 372: | }
|
| 373: |
|
| 374: | if (isset($this->request->get['filter_commission'])) {
|
| 375: | $url .= '&filter_commission=' . $this->request->get['filter_commission'];
|
| 376: | }
|
| 377: |
|
| 378: | if (isset($this->request->get['filter_date_from'])) {
|
| 379: | $url .= '&filter_date_from=' . $this->request->get['filter_date_from'];
|
| 380: | }
|
| 381: |
|
| 382: | if (isset($this->request->get['filter_date_to'])) {
|
| 383: | $url .= '&filter_date_to=' . $this->request->get['filter_date_to'];
|
| 384: | }
|
| 385: |
|
| 386: | if (isset($this->request->get['filter_status'])) {
|
| 387: | $url .= '&filter_status=' . $this->request->get['filter_status'];
|
| 388: | }
|
| 389: |
|
| 390: | if ($order == 'ASC') {
|
| 391: | $url .= '&order=DESC';
|
| 392: | } else {
|
| 393: | $url .= '&order=ASC';
|
| 394: | }
|
| 395: |
|
| 396: | if (isset($this->request->get['limit'])) {
|
| 397: | $url .= '&limit=' . $this->request->get['limit'];
|
| 398: | }
|
| 399: |
|
| 400: | $data['sort_name'] = $this->url->link('marketing/affiliate.list', 'user_token=' . $this->session->data['user_token'] . '&sort=name' . $url);
|
| 401: | $data['sort_tracking'] = $this->url->link('marketing/affiliate.list', 'user_token=' . $this->session->data['user_token'] . '&sort=ca.tracking' . $url);
|
| 402: | $data['sort_commission'] = $this->url->link('marketing/affiliate.list', 'user_token=' . $this->session->data['user_token'] . '&sort=ca.commission' . $url);
|
| 403: | $data['sort_balance'] = $this->url->link('marketing/affiliate.list', 'user_token=' . $this->session->data['user_token'] . '&sort=ca.balance' . $url);
|
| 404: | $data['sort_date_added'] = $this->url->link('marketing/affiliate.list', 'user_token=' . $this->session->data['user_token'] . '&sort=ca.date_added' . $url);
|
| 405: |
|
| 406: | $url = '';
|
| 407: |
|
| 408: | if (isset($this->request->get['filter_customer'])) {
|
| 409: | $url .= '&filter_customer=' . urlencode(html_entity_decode($this->request->get['filter_customer'], ENT_QUOTES, 'UTF-8'));
|
| 410: | }
|
| 411: |
|
| 412: | if (isset($this->request->get['filter_tracking'])) {
|
| 413: | $url .= '&filter_tracking=' . $this->request->get['filter_tracking'];
|
| 414: | }
|
| 415: |
|
| 416: | if (isset($this->request->get['filter_payment_method'])) {
|
| 417: | $url .= '&filter_payment_method=' . $this->request->get['filter_payment_method'];
|
| 418: | }
|
| 419: |
|
| 420: | if (isset($this->request->get['filter_commission'])) {
|
| 421: | $url .= '&filter_commission=' . $this->request->get['filter_commission'];
|
| 422: | }
|
| 423: |
|
| 424: | if (isset($this->request->get['filter_date_from'])) {
|
| 425: | $url .= '&filter_date_from=' . $this->request->get['filter_date_from'];
|
| 426: | }
|
| 427: |
|
| 428: | if (isset($this->request->get['filter_date_to'])) {
|
| 429: | $url .= '&filter_date_to=' . $this->request->get['filter_date_to'];
|
| 430: | }
|
| 431: |
|
| 432: | if (isset($this->request->get['filter_status'])) {
|
| 433: | $url .= '&filter_status=' . $this->request->get['filter_status'];
|
| 434: | }
|
| 435: |
|
| 436: | if (isset($this->request->get['sort'])) {
|
| 437: | $url .= '&sort=' . $this->request->get['sort'];
|
| 438: | }
|
| 439: |
|
| 440: | if (isset($this->request->get['order'])) {
|
| 441: | $url .= '&order=' . $this->request->get['order'];
|
| 442: | }
|
| 443: |
|
| 444: | if (isset($this->request->get['limit'])) {
|
| 445: | $url .= '&limit=' . $this->request->get['limit'];
|
| 446: | }
|
| 447: |
|
| 448: | $affiliate_total = $this->model_marketing_affiliate->getTotalAffiliates($filter_data);
|
| 449: |
|
| 450: | $data['pagination'] = $this->load->controller('common/pagination', [
|
| 451: | 'total' => $affiliate_total,
|
| 452: | 'page' => $page,
|
| 453: | 'limit' => $this->config->get('config_pagination_admin'),
|
| 454: | 'url' => $this->url->link('marketing/affiliate.list', 'user_token=' . $this->session->data['user_token'] . $url . '&page={page}')
|
| 455: | ]);
|
| 456: |
|
| 457: | $data['results'] = sprintf($this->language->get('text_pagination'), ($affiliate_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($affiliate_total - $limit)) ? $affiliate_total : ((($page - 1) * $limit) + $limit), $affiliate_total, ceil($affiliate_total / $limit));
|
| 458: |
|
| 459: | $data['sort'] = $sort;
|
| 460: | $data['order'] = $order;
|
| 461: | $data['limit'] = $limit;
|
| 462: |
|
| 463: | return $this->load->view('marketing/affiliate_list', $data);
|
| 464: | }
|
| 465: |
|
| 466: | |
| 467: | |
| 468: | |
| 469: | |
| 470: |
|
| 471: | public function form(): void {
|
| 472: | $this->load->language('marketing/affiliate');
|
| 473: |
|
| 474: | $this->document->setTitle($this->language->get('heading_title'));
|
| 475: |
|
| 476: | $data['text_form'] = !isset($this->request->get['customer_id']) ? $this->language->get('text_add') : $this->language->get('text_edit');
|
| 477: |
|
| 478: | $data['error_upload_size'] = sprintf($this->language->get('error_upload_size'), $this->config->get('config_file_max_size'));
|
| 479: |
|
| 480: | $data['config_file_max_size'] = ((int)$this->config->get('config_file_max_size') * 1024 * 1024);
|
| 481: |
|
| 482: | $url = '';
|
| 483: |
|
| 484: | if (isset($this->request->get['filter_customer'])) {
|
| 485: | $url .= '&filter_customer=' . urlencode(html_entity_decode($this->request->get['filter_customer'], ENT_QUOTES, 'UTF-8'));
|
| 486: | }
|
| 487: |
|
| 488: | if (isset($this->request->get['filter_tracking'])) {
|
| 489: | $url .= '&filter_tracking=' . $this->request->get['filter_tracking'];
|
| 490: | }
|
| 491: |
|
| 492: | if (isset($this->request->get['filter_payment_method'])) {
|
| 493: | $url .= '&filter_payment_method=' . $this->request->get['filter_payment_method'];
|
| 494: | }
|
| 495: |
|
| 496: | if (isset($this->request->get['filter_commission'])) {
|
| 497: | $url .= '&filter_commission=' . $this->request->get['filter_commission'];
|
| 498: | }
|
| 499: |
|
| 500: | if (isset($this->request->get['filter_date_from'])) {
|
| 501: | $url .= '&filter_date_from=' . $this->request->get['filter_date_from'];
|
| 502: | }
|
| 503: |
|
| 504: | if (isset($this->request->get['filter_date_to'])) {
|
| 505: | $url .= '&filter_date_to=' . $this->request->get['filter_date_to'];
|
| 506: | }
|
| 507: |
|
| 508: | if (isset($this->request->get['filter_status'])) {
|
| 509: | $url .= '&filter_status=' . $this->request->get['filter_status'];
|
| 510: | }
|
| 511: |
|
| 512: | if (isset($this->request->get['sort'])) {
|
| 513: | $url .= '&sort=' . $this->request->get['sort'];
|
| 514: | }
|
| 515: |
|
| 516: | if (isset($this->request->get['order'])) {
|
| 517: | $url .= '&order=' . $this->request->get['order'];
|
| 518: | }
|
| 519: |
|
| 520: | if (isset($this->request->get['page'])) {
|
| 521: | $url .= '&page=' . $this->request->get['page'];
|
| 522: | }
|
| 523: |
|
| 524: | if (isset($this->request->get['limit'])) {
|
| 525: | $url .= '&limit=' . $this->request->get['limit'];
|
| 526: | }
|
| 527: |
|
| 528: | $data['breadcrumbs'] = [];
|
| 529: |
|
| 530: | $data['breadcrumbs'][] = [
|
| 531: | 'text' => $this->language->get('text_home'),
|
| 532: | 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'])
|
| 533: | ];
|
| 534: |
|
| 535: | $data['breadcrumbs'][] = [
|
| 536: | 'text' => $this->language->get('heading_title'),
|
| 537: | 'href' => $this->url->link('marketing/affiliate', 'user_token=' . $this->session->data['user_token'] . $url)
|
| 538: | ];
|
| 539: |
|
| 540: | $data['save'] = $this->url->link('marketing/affiliate.save', 'user_token=' . $this->session->data['user_token']);
|
| 541: | $data['back'] = $this->url->link('marketing/affiliate', 'user_token=' . $this->session->data['user_token'] . $url);
|
| 542: | $data['upload'] = $this->url->link('tool/upload.upload', 'user_token=' . $this->session->data['user_token']);
|
| 543: |
|
| 544: |
|
| 545: | if (isset($this->request->get['customer_id'])) {
|
| 546: | $this->load->model('marketing/affiliate');
|
| 547: |
|
| 548: | $affiliate_info = $this->model_marketing_affiliate->getAffiliate($this->request->get['customer_id']);
|
| 549: | }
|
| 550: |
|
| 551: | if (isset($this->request->get['customer_id'])) {
|
| 552: | $data['customer_id'] = (int)$this->request->get['customer_id'];
|
| 553: | } else {
|
| 554: | $data['customer_id'] = 0;
|
| 555: | }
|
| 556: |
|
| 557: | if (!empty($affiliate_info)) {
|
| 558: | $data['customer'] = $affiliate_info['customer'];
|
| 559: | } else {
|
| 560: | $data['customer'] = '';
|
| 561: | }
|
| 562: |
|
| 563: | if (!empty($affiliate_info)) {
|
| 564: | $data['customer_group_id'] = $affiliate_info['customer_group_id'];
|
| 565: | } else {
|
| 566: | $data['customer_group_id'] = '';
|
| 567: | }
|
| 568: |
|
| 569: | if (!empty($affiliate_info)) {
|
| 570: | $data['company'] = $affiliate_info['company'];
|
| 571: | } else {
|
| 572: | $data['company'] = '';
|
| 573: | }
|
| 574: |
|
| 575: | if (!empty($affiliate_info)) {
|
| 576: | $data['website'] = $affiliate_info['website'];
|
| 577: | } else {
|
| 578: | $data['website'] = '';
|
| 579: | }
|
| 580: |
|
| 581: | if (!empty($affiliate_info)) {
|
| 582: | $data['tracking'] = $affiliate_info['tracking'];
|
| 583: | } else {
|
| 584: | $data['tracking'] = oc_token(10);
|
| 585: | }
|
| 586: |
|
| 587: | if (!empty($affiliate_info)) {
|
| 588: | $data['commission'] = $affiliate_info['commission'];
|
| 589: | } else {
|
| 590: | $data['commission'] = $this->config->get('config_affiliate_commission');
|
| 591: | }
|
| 592: |
|
| 593: | if (!empty($affiliate_info)) {
|
| 594: | $data['status'] = $affiliate_info['status'];
|
| 595: | } else {
|
| 596: | $data['status'] = '';
|
| 597: | }
|
| 598: |
|
| 599: | if (!empty($affiliate_info)) {
|
| 600: | $data['tax'] = $affiliate_info['tax'];
|
| 601: | } else {
|
| 602: | $data['tax'] = '';
|
| 603: | }
|
| 604: |
|
| 605: | if (!empty($affiliate_info)) {
|
| 606: | $data['payment_method'] = $affiliate_info['payment_method'];
|
| 607: | } else {
|
| 608: | $data['payment_method'] = 'cheque';
|
| 609: | }
|
| 610: |
|
| 611: | if (!empty($affiliate_info)) {
|
| 612: | $data['cheque'] = $affiliate_info['cheque'];
|
| 613: | } else {
|
| 614: | $data['cheque'] = '';
|
| 615: | }
|
| 616: |
|
| 617: | if (!empty($affiliate_info)) {
|
| 618: | $data['paypal'] = $affiliate_info['paypal'];
|
| 619: | } else {
|
| 620: | $data['paypal'] = '';
|
| 621: | }
|
| 622: |
|
| 623: | if (!empty($affiliate_info)) {
|
| 624: | $data['bank_name'] = $affiliate_info['bank_name'];
|
| 625: | } else {
|
| 626: | $data['bank_name'] = '';
|
| 627: | }
|
| 628: |
|
| 629: | if (!empty($affiliate_info)) {
|
| 630: | $data['bank_branch_number'] = $affiliate_info['bank_branch_number'];
|
| 631: | } else {
|
| 632: | $data['bank_branch_number'] = '';
|
| 633: | }
|
| 634: |
|
| 635: | if (!empty($affiliate_info)) {
|
| 636: | $data['bank_swift_code'] = $affiliate_info['bank_swift_code'];
|
| 637: | } else {
|
| 638: | $data['bank_swift_code'] = '';
|
| 639: | }
|
| 640: |
|
| 641: | if (!empty($affiliate_info)) {
|
| 642: | $data['bank_account_name'] = $affiliate_info['bank_account_name'];
|
| 643: | } else {
|
| 644: | $data['bank_account_name'] = '';
|
| 645: | }
|
| 646: |
|
| 647: | if (!empty($affiliate_info)) {
|
| 648: | $data['bank_account_number'] = $affiliate_info['bank_account_number'];
|
| 649: | } else {
|
| 650: | $data['bank_account_number'] = '';
|
| 651: | }
|
| 652: |
|
| 653: | $data['custom_fields'] = [];
|
| 654: |
|
| 655: | $filter_data = [
|
| 656: | 'filter_location' => 'affiliate',
|
| 657: | 'sort' => 'cf.sort_order',
|
| 658: | 'order' => 'ASC'
|
| 659: | ];
|
| 660: |
|
| 661: |
|
| 662: | $this->load->model('customer/custom_field');
|
| 663: |
|
| 664: | $custom_fields = $this->model_customer_custom_field->getCustomFields($filter_data);
|
| 665: |
|
| 666: | foreach ($custom_fields as $custom_field) {
|
| 667: | if ($custom_field['status']) {
|
| 668: | $data['custom_fields'][] = [
|
| 669: | 'custom_field_id' => $custom_field['custom_field_id'],
|
| 670: | 'custom_field_value' => $this->model_customer_custom_field->getValues($custom_field['custom_field_id']),
|
| 671: | 'name' => $custom_field['name'],
|
| 672: | 'value' => $custom_field['value'],
|
| 673: | 'type' => $custom_field['type'],
|
| 674: | 'location' => $custom_field['location'],
|
| 675: | 'sort_order' => $custom_field['sort_order']
|
| 676: | ];
|
| 677: | }
|
| 678: | }
|
| 679: |
|
| 680: | if (!empty($affiliate_info)) {
|
| 681: | $data['affiliate_custom_field'] = $affiliate_info['custom_field'];
|
| 682: | } else {
|
| 683: | $data['affiliate_custom_field'] = [];
|
| 684: | }
|
| 685: |
|
| 686: | $data['history'] = $this->load->controller('customer/customer.getHistory');
|
| 687: | $data['transaction'] = $this->load->controller('customer/customer.getTransaction');
|
| 688: | $data['report'] = $this->getReport();
|
| 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('marketing/affiliate_form', $data));
|
| 697: | }
|
| 698: |
|
| 699: | |
| 700: | |
| 701: | |
| 702: | |
| 703: |
|
| 704: | public function save(): void {
|
| 705: | $this->load->language('marketing/affiliate');
|
| 706: |
|
| 707: | $json = [];
|
| 708: |
|
| 709: | if (!$this->user->hasPermission('modify', 'marketing/affiliate')) {
|
| 710: | $json['error']['warning'] = $this->language->get('error_permission');
|
| 711: | }
|
| 712: |
|
| 713: | $this->load->model('customer/customer');
|
| 714: |
|
| 715: | $customer_info = $this->model_customer_customer->getCustomer((int)$this->request->post['customer_id']);
|
| 716: |
|
| 717: | if (!$customer_info) {
|
| 718: | $json['error']['customer'] = $this->language->get('error_customer');
|
| 719: | }
|
| 720: |
|
| 721: |
|
| 722: | $this->load->model('marketing/affiliate');
|
| 723: |
|
| 724: | $affiliate_info = $this->model_marketing_affiliate->getAffiliate((int)$this->request->post['customer_id']);
|
| 725: |
|
| 726: | if ($affiliate_info && (!isset($this->request->post['customer_id']) || ($this->request->post['customer_id'] != $affiliate_info['customer_id']))) {
|
| 727: | $json['error']['warning'] = $this->language->get('error_already');
|
| 728: | }
|
| 729: |
|
| 730: | if (!$this->request->post['tracking']) {
|
| 731: | $json['error']['tracking'] = $this->language->get('error_tracking');
|
| 732: | }
|
| 733: |
|
| 734: | $affiliate_info = $this->model_marketing_affiliate->getAffiliateByTracking($this->request->post['tracking']);
|
| 735: |
|
| 736: | if ($affiliate_info && (!isset($this->request->post['customer_id']) || ($this->request->post['customer_id'] != $affiliate_info['customer_id']))) {
|
| 737: | $json['error']['tracking'] = $this->language->get('error_exists');
|
| 738: | }
|
| 739: |
|
| 740: |
|
| 741: | if (empty($this->request->post['payment_method'])) {
|
| 742: | $json['error']['payment_method'] = $this->language->get('error_payment_method');
|
| 743: | }
|
| 744: |
|
| 745: | if ($this->request->post['payment_method'] == 'cheque' && $this->request->post['cheque'] == '') {
|
| 746: | $json['error']['cheque'] = $this->language->get('error_cheque');
|
| 747: | } elseif ($this->request->post['payment_method'] == 'paypal' && ((oc_strlen($this->request->post['paypal']) > 96) || !filter_var($this->request->post['paypal'], FILTER_VALIDATE_EMAIL))) {
|
| 748: | $json['error']['paypal'] = $this->language->get('error_paypal');
|
| 749: | } elseif ($this->request->post['payment_method'] == 'bank') {
|
| 750: | if ($this->request->post['bank_account_name'] == '') {
|
| 751: | $json['error']['bank_account_name'] = $this->language->get('error_bank_account_name');
|
| 752: | }
|
| 753: |
|
| 754: | if ($this->request->post['bank_account_number'] == '') {
|
| 755: | $json['error']['bank_account_number'] = $this->language->get('error_bank_account_number');
|
| 756: | }
|
| 757: | }
|
| 758: |
|
| 759: |
|
| 760: | if ($customer_info) {
|
| 761: | $this->load->model('customer/custom_field');
|
| 762: |
|
| 763: | $filter_data = [
|
| 764: | 'filter_location' => 'account',
|
| 765: | 'filter_customer_group_id' => $this->request->post['customer_group_id'],
|
| 766: | 'filter_status' => 1
|
| 767: | ];
|
| 768: |
|
| 769: | $custom_fields = $this->model_customer_custom_field->getCustomFields(['filter_customer_group_id' => $customer_info['customer_group_id']]);
|
| 770: |
|
| 771: | foreach ($custom_fields as $custom_field) {
|
| 772: | if ($custom_field['status']) {
|
| 773: | if (($custom_field['location'] == 'affiliate') && $custom_field['required'] && empty($this->request->post['custom_field'][$custom_field['custom_field_id']])) {
|
| 774: | $json['error']['custom_field_' . $custom_field['custom_field_id']] = sprintf($this->language->get('error_custom_field'), $custom_field['name']);
|
| 775: | } elseif (($custom_field['location'] == 'affiliate') && ($custom_field['type'] == 'text') && !empty($custom_field['validation']) && !preg_match(html_entity_decode($custom_field['validation'], ENT_QUOTES, 'UTF-8'), $this->request->post['custom_field'][$custom_field['custom_field_id']])) {
|
| 776: | $json['error']['custom_field_' . $custom_field['custom_field_id']] = sprintf($this->language->get('error_regex'), $custom_field['name']);
|
| 777: | }
|
| 778: | }
|
| 779: | }
|
| 780: | }
|
| 781: |
|
| 782: | if (isset($json['error']) && !isset($json['error']['warning'])) {
|
| 783: | $json['error']['warning'] = $this->language->get('error_warning');
|
| 784: | }
|
| 785: |
|
| 786: | if (!$json) {
|
| 787: |
|
| 788: | if (!$affiliate_info) {
|
| 789: | $this->model_marketing_affiliate->addAffiliate($this->request->post);
|
| 790: | } else {
|
| 791: | $this->model_marketing_affiliate->editAffiliate($this->request->post['customer_id'], $this->request->post);
|
| 792: | }
|
| 793: |
|
| 794: | $json['success'] = $this->language->get('text_success');
|
| 795: | }
|
| 796: |
|
| 797: | $this->response->addHeader('Content-Type: application/json');
|
| 798: | $this->response->setOutput(json_encode($json));
|
| 799: | }
|
| 800: |
|
| 801: | |
| 802: | |
| 803: | |
| 804: | |
| 805: |
|
| 806: | public function delete(): void {
|
| 807: | $this->load->language('marketing/affiliate');
|
| 808: |
|
| 809: | $json = [];
|
| 810: |
|
| 811: | if (isset($this->request->post['selected'])) {
|
| 812: | $selected = $this->request->post['selected'];
|
| 813: | } else {
|
| 814: | $selected = [];
|
| 815: | }
|
| 816: |
|
| 817: | if (!$this->user->hasPermission('modify', 'marketing/affiliate')) {
|
| 818: | $json['error'] = $this->language->get('error_permission');
|
| 819: | }
|
| 820: |
|
| 821: | if (!$json) {
|
| 822: | $this->load->model('marketing/affiliate');
|
| 823: |
|
| 824: | foreach ($selected as $affiliate_id) {
|
| 825: | $this->model_marketing_affiliate->deleteAffiliate($affiliate_id);
|
| 826: | }
|
| 827: |
|
| 828: | $json['success'] = $this->language->get('text_success');
|
| 829: | }
|
| 830: |
|
| 831: | $this->response->addHeader('Content-Type: application/json');
|
| 832: | $this->response->setOutput(json_encode($json));
|
| 833: | }
|
| 834: |
|
| 835: | |
| 836: | |
| 837: | |
| 838: | |
| 839: |
|
| 840: | public function calculate(): void {
|
| 841: | $this->load->language('marketing/affiliate');
|
| 842: |
|
| 843: | $json = [];
|
| 844: |
|
| 845: | if (!$this->user->hasPermission('modify', 'marketing/affiliate')) {
|
| 846: | $json['error'] = $this->language->get('error_permission');
|
| 847: | }
|
| 848: |
|
| 849: | if (!$json) {
|
| 850: | $this->load->model('marketing/affiliate');
|
| 851: | $this->load->model('customer/customer');
|
| 852: |
|
| 853: | $results = $this->model_marketing_affiliate->getAffiliates(['filter_status' => 1]);
|
| 854: |
|
| 855: | foreach ($results as $result) {
|
| 856: | $this->model_marketing_affiliate->editBalance($result['customer_id'], $this->model_customer_customer->getTransactionTotal($result['customer_id']));
|
| 857: | }
|
| 858: |
|
| 859: | $json['success'] = $this->language->get('text_success');
|
| 860: | }
|
| 861: |
|
| 862: | $this->response->addHeader('Content-Type: application/json');
|
| 863: | $this->response->setOutput(json_encode($json));
|
| 864: | }
|
| 865: |
|
| 866: | |
| 867: | |
| 868: | |
| 869: | |
| 870: |
|
| 871: | public function csv() {
|
| 872: | $this->load->language('marketing/affiliate');
|
| 873: |
|
| 874: | if (isset($this->request->post['selected'])) {
|
| 875: | $selected = $this->request->post['selected'];
|
| 876: | } else {
|
| 877: | $selected = [];
|
| 878: | }
|
| 879: |
|
| 880: | if ($this->user->hasPermission('modify', 'marketing/affiliate')) {
|
| 881: | $this->load->model('marketing/affiliate');
|
| 882: |
|
| 883: | $csv = '';
|
| 884: |
|
| 885: | foreach ($selected as $customer_id) {
|
| 886: | $affiliate_info = $this->model_marketing_affiliate->getAffiliate($customer_id);
|
| 887: |
|
| 888: | if ($affiliate_info && $affiliate_info['status'] && (float)$affiliate_info['balance'] > 0) {
|
| 889: | $balance = $this->currency->format($affiliate_info['balance'], $this->config->get('config_currency'), 1.00000000, false);
|
| 890: |
|
| 891: | if ($affiliate_info['payment_method'] == 'cheque') {
|
| 892: | $csv .= $affiliate_info['cheque'] . ',' . $balance . ',' . $this->config->get('config_currency') . ',' . $affiliate_info['customer'] . "\n";
|
| 893: | }
|
| 894: |
|
| 895: | if ($affiliate_info['payment_method'] == 'paypal') {
|
| 896: | $csv .= $affiliate_info['paypal'] . ',' . $balance . ',' . $this->config->get('config_currency') . ',' . $affiliate_info['customer'] . ',Thanks for your business!' . "\n";
|
| 897: | }
|
| 898: |
|
| 899: | if ($affiliate_info['payment_method'] == 'bank') {
|
| 900: | $csv .= $affiliate_info['bank_name'] . ',' . $affiliate_info['bank_branch_number'] . ',' . $affiliate_info['bank_swift_code'] . ',' . $affiliate_info['bank_account_name'] . ',' . $affiliate_info['bank_account_number'] . ',' . $balance . ',' . $this->config->get('config_currency') . ',' . $affiliate_info['customer'] . "\n";
|
| 901: | }
|
| 902: | }
|
| 903: | }
|
| 904: |
|
| 905: | if (!headers_sent()) {
|
| 906: | header('Pragma: public');
|
| 907: | header('Expires: 0');
|
| 908: | header('Content-Description: File Transfer');
|
| 909: | header('Content-Type: application/octet-stream');
|
| 910: | header('Content-Transfer-Encoding: binary');
|
| 911: | header('Content-Disposition: attachment; filename=payout-' . date('d-m-Y') . '.csv"');
|
| 912: | header('Content-Length: ' . strlen($csv));
|
| 913: |
|
| 914: | echo $csv;
|
| 915: | } else {
|
| 916: | exit('Error: Headers already sent out!');
|
| 917: | }
|
| 918: | } else {
|
| 919: | return new \Opencart\System\Engine\Action('error/permission');
|
| 920: | }
|
| 921: | }
|
| 922: |
|
| 923: | |
| 924: | |
| 925: | |
| 926: | |
| 927: |
|
| 928: | public function complete(): void {
|
| 929: | $this->load->language('marketing/affiliate');
|
| 930: |
|
| 931: | $json = [];
|
| 932: |
|
| 933: | if (isset($this->request->post['selected'])) {
|
| 934: | $selected = $this->request->post['selected'];
|
| 935: | } else {
|
| 936: | $selected = [];
|
| 937: | }
|
| 938: |
|
| 939: | if (!$this->user->hasPermission('modify', 'marketing/affiliate')) {
|
| 940: | $json['error'] = $this->language->get('error_permission');
|
| 941: | }
|
| 942: |
|
| 943: | if (!$json) {
|
| 944: | $this->load->model('marketing/affiliate');
|
| 945: | $this->load->model('customer/customer');
|
| 946: |
|
| 947: | foreach ($selected as $customer_id) {
|
| 948: | $affiliate_info = $this->model_marketing_affiliate->getAffiliate($customer_id);
|
| 949: |
|
| 950: | if ($affiliate_info && $affiliate_info['status'] && (float)$affiliate_info['balance'] > 0) {
|
| 951: | $this->model_customer_customer->addTransaction($affiliate_info['customer_id'], $this->language->get('text_payment_' . $affiliate_info['payment_method']), -$affiliate_info['balance']);
|
| 952: |
|
| 953: | $this->model_marketing_affiliate->editBalance($affiliate_info['customer_id'], 0);
|
| 954: | }
|
| 955: | }
|
| 956: |
|
| 957: | $json['success'] = $this->language->get('text_success');
|
| 958: | }
|
| 959: |
|
| 960: | $this->response->addHeader('Content-Type: application/json');
|
| 961: | $this->response->setOutput(json_encode($json));
|
| 962: | }
|
| 963: |
|
| 964: | |
| 965: | |
| 966: | |
| 967: | |
| 968: |
|
| 969: | public function report(): void {
|
| 970: | $this->load->language('marketing/affiliate');
|
| 971: |
|
| 972: | $this->response->setOutput($this->getReport());
|
| 973: | }
|
| 974: |
|
| 975: | |
| 976: | |
| 977: | |
| 978: | |
| 979: |
|
| 980: | private function getReport(): string {
|
| 981: | if (isset($this->request->get['customer_id'])) {
|
| 982: | $customer_id = (int)$this->request->get['customer_id'];
|
| 983: | } else {
|
| 984: | $customer_id = 0;
|
| 985: | }
|
| 986: |
|
| 987: | if (isset($this->request->get['page']) && $this->request->get['route'] == 'marketing/affiliate.report') {
|
| 988: | $page = (int)$this->request->get['page'];
|
| 989: | } else {
|
| 990: | $page = 1;
|
| 991: | }
|
| 992: |
|
| 993: | $limit = 10;
|
| 994: |
|
| 995: | $data['reports'] = [];
|
| 996: |
|
| 997: | $this->load->model('marketing/affiliate');
|
| 998: | $this->load->model('customer/customer');
|
| 999: | $this->load->model('setting/store');
|
| 1000: |
|
| 1001: | $results = $this->model_marketing_affiliate->getReports($customer_id, ($page - 1) * $limit, $limit);
|
| 1002: |
|
| 1003: | foreach ($results as $result) {
|
| 1004: | $store_info = $this->model_setting_store->getStore($result['store_id']);
|
| 1005: |
|
| 1006: | if ($store_info) {
|
| 1007: | $store = $store_info['name'];
|
| 1008: | } elseif (!$result['store_id']) {
|
| 1009: | $store = $this->config->get('config_name');
|
| 1010: | } else {
|
| 1011: | $store = '';
|
| 1012: | }
|
| 1013: |
|
| 1014: | $data['reports'][] = [
|
| 1015: | 'ip' => $result['ip'],
|
| 1016: | 'account' => $this->model_customer_customer->getTotalCustomersByIp($result['ip']),
|
| 1017: | 'store' => $store,
|
| 1018: | 'country' => $result['country'],
|
| 1019: | 'date_added' => date($this->language->get('datetime_format'), strtotime($result['date_added'])),
|
| 1020: | 'filter_ip' => $this->url->link('customer/customer', 'user_token=' . $this->session->data['user_token'] . '&filter_ip=' . $result['ip'])
|
| 1021: | ];
|
| 1022: | }
|
| 1023: |
|
| 1024: | $report_total = $this->model_marketing_affiliate->getTotalReports($customer_id);
|
| 1025: |
|
| 1026: | $data['pagination'] = $this->load->controller('common/pagination', [
|
| 1027: | 'total' => $report_total,
|
| 1028: | 'page' => $page,
|
| 1029: | 'limit' => $limit,
|
| 1030: | 'url' => $this->url->link('marketing/affiliate.report', 'user_token=' . $this->session->data['user_token'] . '&customer_id=' . $customer_id . '&page={page}')
|
| 1031: | ]);
|
| 1032: |
|
| 1033: | $data['results'] = sprintf($this->language->get('text_pagination'), ($report_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($report_total - $limit)) ? $report_total : ((($page - 1) * $limit) + $limit), $report_total, ceil($report_total / $limit));
|
| 1034: |
|
| 1035: | return $this->load->view('marketing/affiliate_report', $data);
|
| 1036: | }
|
| 1037: |
|
| 1038: | |
| 1039: | |
| 1040: | |
| 1041: | |
| 1042: |
|
| 1043: | public function autocomplete(): void {
|
| 1044: | $json = [];
|
| 1045: |
|
| 1046: | if (isset($this->request->get['filter_name'])) {
|
| 1047: | $filter_name = $this->request->get['filter_name'];
|
| 1048: | } else {
|
| 1049: | $filter_name = '';
|
| 1050: | }
|
| 1051: |
|
| 1052: | if (isset($this->request->get['filter_email'])) {
|
| 1053: | $filter_email = $this->request->get['filter_email'];
|
| 1054: | } else {
|
| 1055: | $filter_email = '';
|
| 1056: | }
|
| 1057: |
|
| 1058: | $filter_data = [
|
| 1059: | 'filter_name' => $filter_name,
|
| 1060: | 'filter_email' => $filter_email,
|
| 1061: | 'start' => 0,
|
| 1062: | 'limit' => 5
|
| 1063: | ];
|
| 1064: |
|
| 1065: | $this->load->model('marketing/affiliate');
|
| 1066: |
|
| 1067: | $results = $this->model_marketing_affiliate->getAffiliates($filter_data);
|
| 1068: |
|
| 1069: | foreach ($results as $result) {
|
| 1070: | $json[] = [
|
| 1071: | 'customer_id' => $result['customer_id'],
|
| 1072: | 'name' => strip_tags(html_entity_decode($result['name'], ENT_QUOTES, 'UTF-8')),
|
| 1073: | 'email' => $result['email']
|
| 1074: | ];
|
| 1075: | }
|
| 1076: |
|
| 1077: | $sort_order = [];
|
| 1078: |
|
| 1079: | foreach ($json as $key => $value) {
|
| 1080: | $sort_order[$key] = $value['name'];
|
| 1081: | }
|
| 1082: |
|
| 1083: | array_multisort($sort_order, SORT_ASC, $json);
|
| 1084: |
|
| 1085: | $this->response->addHeader('Content-Type: application/json');
|
| 1086: | $this->response->setOutput(json_encode($json));
|
| 1087: | }
|
| 1088: | }
|
| 1089: | |