voucher.php (25317B)
1 <?php 2 class ControllerSaleVoucher extends Controller { 3 private $error = array(); 4 5 public function index() { 6 $this->load->language('sale/voucher'); 7 8 $this->document->setTitle($this->language->get('heading_title')); 9 10 $this->load->model('sale/voucher'); 11 12 $this->getList(); 13 } 14 15 public function add() { 16 $this->load->language('sale/voucher'); 17 18 $this->document->setTitle($this->language->get('heading_title')); 19 20 $this->load->model('sale/voucher'); 21 22 if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) { 23 $this->model_sale_voucher->addVoucher($this->request->post); 24 25 $this->session->data['success'] = $this->language->get('text_success'); 26 27 $url = ''; 28 29 if (isset($this->request->get['sort'])) { 30 $url .= '&sort=' . $this->request->get['sort']; 31 } 32 33 if (isset($this->request->get['order'])) { 34 $url .= '&order=' . $this->request->get['order']; 35 } 36 37 if (isset($this->request->get['page'])) { 38 $url .= '&page=' . $this->request->get['page']; 39 } 40 41 $this->response->redirect($this->url->link('sale/voucher', 'user_token=' . $this->session->data['user_token'] . $url, true)); 42 } 43 44 $this->getForm(); 45 } 46 47 public function edit() { 48 $this->load->language('sale/voucher'); 49 50 $this->document->setTitle($this->language->get('heading_title')); 51 52 $this->load->model('sale/voucher'); 53 54 if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) { 55 $this->model_sale_voucher->editVoucher($this->request->get['voucher_id'], $this->request->post); 56 57 $this->session->data['success'] = $this->language->get('text_success'); 58 59 $url = ''; 60 61 if (isset($this->request->get['sort'])) { 62 $url .= '&sort=' . $this->request->get['sort']; 63 } 64 65 if (isset($this->request->get['order'])) { 66 $url .= '&order=' . $this->request->get['order']; 67 } 68 69 if (isset($this->request->get['page'])) { 70 $url .= '&page=' . $this->request->get['page']; 71 } 72 73 $this->response->redirect($this->url->link('sale/voucher', 'user_token=' . $this->session->data['user_token'] . $url, true)); 74 } 75 76 $this->getForm(); 77 } 78 79 public function delete() { 80 $this->load->language('sale/voucher'); 81 82 $this->document->setTitle($this->language->get('heading_title')); 83 84 $this->load->model('sale/voucher'); 85 86 if (isset($this->request->post['selected']) && $this->validateDelete()) { 87 foreach ($this->request->post['selected'] as $voucher_id) { 88 $this->model_sale_voucher->deleteVoucher($voucher_id); 89 } 90 91 $this->session->data['success'] = $this->language->get('text_success'); 92 93 $url = ''; 94 95 if (isset($this->request->get['sort'])) { 96 $url .= '&sort=' . $this->request->get['sort']; 97 } 98 99 if (isset($this->request->get['order'])) { 100 $url .= '&order=' . $this->request->get['order']; 101 } 102 103 if (isset($this->request->get['page'])) { 104 $url .= '&page=' . $this->request->get['page']; 105 } 106 107 $this->response->redirect($this->url->link('sale/voucher', 'user_token=' . $this->session->data['user_token'] . $url, true)); 108 } 109 110 $this->getList(); 111 } 112 113 protected function getList() { 114 if (isset($this->request->get['sort'])) { 115 $sort = $this->request->get['sort']; 116 } else { 117 $sort = 'v.date_added'; 118 } 119 120 if (isset($this->request->get['order'])) { 121 $order = $this->request->get['order']; 122 } else { 123 $order = 'DESC'; 124 } 125 126 if (isset($this->request->get['page'])) { 127 $page = $this->request->get['page']; 128 } else { 129 $page = 1; 130 } 131 132 $url = ''; 133 134 if (isset($this->request->get['sort'])) { 135 $url .= '&sort=' . $this->request->get['sort']; 136 } 137 138 if (isset($this->request->get['order'])) { 139 $url .= '&order=' . $this->request->get['order']; 140 } 141 142 if (isset($this->request->get['page'])) { 143 $url .= '&page=' . $this->request->get['page']; 144 } 145 146 $data['breadcrumbs'] = array(); 147 148 $data['breadcrumbs'][] = array( 149 'text' => $this->language->get('text_home'), 150 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true) 151 ); 152 153 $data['breadcrumbs'][] = array( 154 'text' => $this->language->get('heading_title'), 155 'href' => $this->url->link('sale/voucher', 'user_token=' . $this->session->data['user_token'] . $url, true) 156 ); 157 158 $data['add'] = $this->url->link('sale/voucher/add', 'user_token=' . $this->session->data['user_token'] . $url, true); 159 $data['delete'] = $this->url->link('sale/voucher/delete', 'user_token=' . $this->session->data['user_token'] . $url, true); 160 161 $data['vouchers'] = array(); 162 163 $filter_data = array( 164 'sort' => $sort, 165 'order' => $order, 166 'start' => ($page - 1) * $this->config->get('config_limit_admin'), 167 'limit' => $this->config->get('config_limit_admin') 168 ); 169 170 $voucher_total = $this->model_sale_voucher->getTotalVouchers(); 171 172 $results = $this->model_sale_voucher->getVouchers($filter_data); 173 174 foreach ($results as $result) { 175 if ($result['order_id']) { 176 $order_href = $this->url->link('sale/order/info', 'user_token=' . $this->session->data['user_token'] . '&order_id=' . $result['order_id'] . $url, true); 177 } else { 178 $order_href = ''; 179 } 180 181 $data['vouchers'][] = array( 182 'voucher_id' => $result['voucher_id'], 183 'code' => $result['code'], 184 'from' => $result['from_name'], 185 'to' => $result['to_name'], 186 'theme' => $result['theme'], 187 'amount' => $this->currency->format($result['amount'], $this->config->get('config_currency')), 188 'status' => ($result['status'] ? $this->language->get('text_enabled') : $this->language->get('text_disabled')), 189 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])), 190 'edit' => $this->url->link('sale/voucher/edit', 'user_token=' . $this->session->data['user_token'] . '&voucher_id=' . $result['voucher_id'] . $url, true), 191 'order' => $order_href 192 ); 193 } 194 195 $data['user_token'] = $this->session->data['user_token']; 196 197 if (isset($this->error['warning'])) { 198 $data['error_warning'] = $this->error['warning']; 199 } else { 200 $data['error_warning'] = ''; 201 } 202 203 if (isset($this->session->data['success'])) { 204 $data['success'] = $this->session->data['success']; 205 206 unset($this->session->data['success']); 207 } else { 208 $data['success'] = ''; 209 } 210 211 if (isset($this->request->post['selected'])) { 212 $data['selected'] = (array)$this->request->post['selected']; 213 } else { 214 $data['selected'] = array(); 215 } 216 217 $url = ''; 218 219 if ($order == 'ASC') { 220 $url .= '&order=DESC'; 221 } else { 222 $url .= '&order=ASC'; 223 } 224 225 if (isset($this->request->get['page'])) { 226 $url .= '&page=' . $this->request->get['page']; 227 } 228 229 $data['sort_code'] = $this->url->link('sale/voucher', 'user_token=' . $this->session->data['user_token'] . '&sort=v.code' . $url, true); 230 $data['sort_from'] = $this->url->link('sale/voucher', 'user_token=' . $this->session->data['user_token'] . '&sort=v.from_name' . $url, true); 231 $data['sort_to'] = $this->url->link('sale/voucher', 'user_token=' . $this->session->data['user_token'] . '&sort=v.to_name' . $url, true); 232 $data['sort_theme'] = $this->url->link('sale/voucher', 'user_token=' . $this->session->data['user_token'] . '&sort=theme' . $url, true); 233 $data['sort_amount'] = $this->url->link('sale/voucher', 'user_token=' . $this->session->data['user_token'] . '&sort=v.amount' . $url, true); 234 $data['sort_status'] = $this->url->link('sale/voucher', 'user_token=' . $this->session->data['user_token'] . '&sort=v.status' . $url, true); 235 $data['sort_date_added'] = $this->url->link('sale/voucher', 'user_token=' . $this->session->data['user_token'] . '&sort=v.date_added' . $url, true); 236 237 $url = ''; 238 239 if (isset($this->request->get['sort'])) { 240 $url .= '&sort=' . $this->request->get['sort']; 241 } 242 243 if (isset($this->request->get['order'])) { 244 $url .= '&order=' . $this->request->get['order']; 245 } 246 247 $pagination = new Pagination(); 248 $pagination->total = $voucher_total; 249 $pagination->page = $page; 250 $pagination->limit = $this->config->get('config_limit_admin'); 251 $pagination->url = $this->url->link('sale/voucher', 'user_token=' . $this->session->data['user_token'] . $url . '&page={page}', true); 252 253 $data['pagination'] = $pagination->render(); 254 255 $data['results'] = sprintf($this->language->get('text_pagination'), ($voucher_total) ? (($page - 1) * $this->config->get('config_limit_admin')) + 1 : 0, ((($page - 1) * $this->config->get('config_limit_admin')) > ($voucher_total - $this->config->get('config_limit_admin'))) ? $voucher_total : ((($page - 1) * $this->config->get('config_limit_admin')) + $this->config->get('config_limit_admin')), $voucher_total, ceil($voucher_total / $this->config->get('config_limit_admin'))); 256 257 $data['sort'] = $sort; 258 $data['order'] = $order; 259 260 $data['header'] = $this->load->controller('common/header'); 261 $data['column_left'] = $this->load->controller('common/column_left'); 262 $data['footer'] = $this->load->controller('common/footer'); 263 264 $this->response->setOutput($this->load->view('sale/voucher_list', $data)); 265 } 266 267 protected function getForm() { 268 $data['text_form'] = !isset($this->request->get['voucher_id']) ? $this->language->get('text_add') : $this->language->get('text_edit'); 269 270 if (isset($this->request->get['voucher_id'])) { 271 $data['voucher_id'] = $this->request->get['voucher_id']; 272 } else { 273 $data['voucher_id'] = 0; 274 } 275 276 if (isset($this->error['warning'])) { 277 $data['error_warning'] = $this->error['warning']; 278 } else { 279 $data['error_warning'] = ''; 280 } 281 282 if (isset($this->error['code'])) { 283 $data['error_code'] = $this->error['code']; 284 } else { 285 $data['error_code'] = ''; 286 } 287 288 if (isset($this->error['from_name'])) { 289 $data['error_from_name'] = $this->error['from_name']; 290 } else { 291 $data['error_from_name'] = ''; 292 } 293 294 if (isset($this->error['from_email'])) { 295 $data['error_from_email'] = $this->error['from_email']; 296 } else { 297 $data['error_from_email'] = ''; 298 } 299 300 if (isset($this->error['to_name'])) { 301 $data['error_to_name'] = $this->error['to_name']; 302 } else { 303 $data['error_to_name'] = ''; 304 } 305 306 if (isset($this->error['to_email'])) { 307 $data['error_to_email'] = $this->error['to_email']; 308 } else { 309 $data['error_to_email'] = ''; 310 } 311 312 if (isset($this->error['amount'])) { 313 $data['error_amount'] = $this->error['amount']; 314 } else { 315 $data['error_amount'] = ''; 316 } 317 318 $url = ''; 319 320 if (isset($this->request->get['sort'])) { 321 $url .= '&sort=' . $this->request->get['sort']; 322 } 323 324 if (isset($this->request->get['order'])) { 325 $url .= '&order=' . $this->request->get['order']; 326 } 327 328 if (isset($this->request->get['page'])) { 329 $url .= '&page=' . $this->request->get['page']; 330 } 331 332 $data['breadcrumbs'] = array(); 333 334 $data['breadcrumbs'][] = array( 335 'text' => $this->language->get('text_home'), 336 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true) 337 ); 338 339 $data['breadcrumbs'][] = array( 340 'text' => $this->language->get('heading_title'), 341 'href' => $this->url->link('sale/voucher', 'user_token=' . $this->session->data['user_token'] . $url, true) 342 ); 343 344 if (!isset($this->request->get['voucher_id'])) { 345 $data['action'] = $this->url->link('sale/voucher/add', 'user_token=' . $this->session->data['user_token'] . $url, true); 346 } else { 347 $data['action'] = $this->url->link('sale/voucher/edit', 'user_token=' . $this->session->data['user_token'] . '&voucher_id=' . $this->request->get['voucher_id'] . $url, true); 348 } 349 350 $data['cancel'] = $this->url->link('sale/voucher', 'user_token=' . $this->session->data['user_token'] . $url, true); 351 352 if (isset($this->request->get['voucher_id']) && (!$this->request->server['REQUEST_METHOD'] != 'POST')) { 353 $voucher_info = $this->model_sale_voucher->getVoucher($this->request->get['voucher_id']); 354 } 355 356 $data['user_token'] = $this->session->data['user_token']; 357 358 if (isset($this->request->post['code'])) { 359 $data['code'] = $this->request->post['code']; 360 } elseif (!empty($voucher_info)) { 361 $data['code'] = $voucher_info['code']; 362 } else { 363 $data['code'] = ''; 364 } 365 366 if (isset($this->request->post['from_name'])) { 367 $data['from_name'] = $this->request->post['from_name']; 368 } elseif (!empty($voucher_info)) { 369 $data['from_name'] = $voucher_info['from_name']; 370 } else { 371 $data['from_name'] = ''; 372 } 373 374 if (isset($this->request->post['from_email'])) { 375 $data['from_email'] = $this->request->post['from_email']; 376 } elseif (!empty($voucher_info)) { 377 $data['from_email'] = $voucher_info['from_email']; 378 } else { 379 $data['from_email'] = ''; 380 } 381 382 if (isset($this->request->post['to_name'])) { 383 $data['to_name'] = $this->request->post['to_name']; 384 } elseif (!empty($voucher_info)) { 385 $data['to_name'] = $voucher_info['to_name']; 386 } else { 387 $data['to_name'] = ''; 388 } 389 390 if (isset($this->request->post['to_email'])) { 391 $data['to_email'] = $this->request->post['to_email']; 392 } elseif (!empty($voucher_info)) { 393 $data['to_email'] = $voucher_info['to_email']; 394 } else { 395 $data['to_email'] = ''; 396 } 397 398 $this->load->model('sale/voucher_theme'); 399 400 $data['voucher_themes'] = $this->model_sale_voucher_theme->getVoucherThemes(); 401 402 if (isset($this->request->post['voucher_theme_id'])) { 403 $data['voucher_theme_id'] = $this->request->post['voucher_theme_id']; 404 } elseif (!empty($voucher_info)) { 405 $data['voucher_theme_id'] = $voucher_info['voucher_theme_id']; 406 } else { 407 $data['voucher_theme_id'] = ''; 408 } 409 410 if (isset($this->request->post['message'])) { 411 $data['message'] = $this->request->post['message']; 412 } elseif (!empty($voucher_info)) { 413 $data['message'] = $voucher_info['message']; 414 } else { 415 $data['message'] = ''; 416 } 417 418 if (isset($this->request->post['amount'])) { 419 $data['amount'] = $this->request->post['amount']; 420 } elseif (!empty($voucher_info)) { 421 $data['amount'] = $voucher_info['amount']; 422 } else { 423 $data['amount'] = ''; 424 } 425 426 if (isset($this->request->post['status'])) { 427 $data['status'] = $this->request->post['status']; 428 } elseif (!empty($voucher_info)) { 429 $data['status'] = $voucher_info['status']; 430 } else { 431 $data['status'] = true; 432 } 433 434 $data['header'] = $this->load->controller('common/header'); 435 $data['column_left'] = $this->load->controller('common/column_left'); 436 $data['footer'] = $this->load->controller('common/footer'); 437 438 $this->response->setOutput($this->load->view('sale/voucher_form', $data)); 439 } 440 441 protected function validateForm() { 442 if (!$this->user->hasPermission('modify', 'sale/voucher')) { 443 $this->error['warning'] = $this->language->get('error_permission'); 444 } 445 446 if ((utf8_strlen($this->request->post['code']) < 3) || (utf8_strlen($this->request->post['code']) > 10)) { 447 $this->error['code'] = $this->language->get('error_code'); 448 } 449 450 $voucher_info = $this->model_sale_voucher->getVoucherByCode($this->request->post['code']); 451 452 if ($voucher_info) { 453 if (!isset($this->request->get['voucher_id'])) { 454 $this->error['warning'] = $this->language->get('error_exists'); 455 } elseif ($voucher_info['voucher_id'] != $this->request->get['voucher_id']) { 456 $this->error['warning'] = $this->language->get('error_exists'); 457 } 458 } 459 460 if ((utf8_strlen($this->request->post['to_name']) < 1) || (utf8_strlen($this->request->post['to_name']) > 64)) { 461 $this->error['to_name'] = $this->language->get('error_to_name'); 462 } 463 464 if ((utf8_strlen($this->request->post['to_email']) > 96) || !filter_var($this->request->post['to_email'], FILTER_VALIDATE_EMAIL)) { 465 $this->error['to_email'] = $this->language->get('error_email'); 466 } 467 468 if ((utf8_strlen($this->request->post['from_name']) < 1) || (utf8_strlen($this->request->post['from_name']) > 64)) { 469 $this->error['from_name'] = $this->language->get('error_from_name'); 470 } 471 472 if ((utf8_strlen($this->request->post['from_email']) > 96) || !filter_var($this->request->post['from_email'], FILTER_VALIDATE_EMAIL)) { 473 $this->error['from_email'] = $this->language->get('error_email'); 474 } 475 476 if ($this->request->post['amount'] < 1) { 477 $this->error['amount'] = $this->language->get('error_amount'); 478 } 479 480 return !$this->error; 481 } 482 483 protected function validateDelete() { 484 if (!$this->user->hasPermission('modify', 'sale/voucher')) { 485 $this->error['warning'] = $this->language->get('error_permission'); 486 } 487 488 $this->load->model('sale/order'); 489 490 foreach ($this->request->post['selected'] as $voucher_id) { 491 $order_voucher_info = $this->model_sale_order->getOrderVoucherByVoucherId($voucher_id); 492 493 if ($order_voucher_info) { 494 $this->error['warning'] = sprintf($this->language->get('error_order'), $this->url->link('sale/order/info', 'user_token=' . $this->session->data['user_token'] . '&order_id=' . $order_voucher_info['order_id'], true)); 495 496 break; 497 } 498 } 499 500 return !$this->error; 501 } 502 503 public function history() { 504 $this->load->language('sale/voucher'); 505 506 $this->load->model('sale/voucher'); 507 508 $data['text_no_results'] = $this->language->get('text_no_results'); 509 510 $data['column_order_id'] = $this->language->get('column_order_id'); 511 $data['column_customer'] = $this->language->get('column_customer'); 512 $data['column_amount'] = $this->language->get('column_amount'); 513 $data['column_date_added'] = $this->language->get('column_date_added'); 514 515 if (isset($this->request->get['page'])) { 516 $page = $this->request->get['page']; 517 } else { 518 $page = 1; 519 } 520 521 $data['histories'] = array(); 522 523 $results = $this->model_sale_voucher->getVoucherHistories($this->request->get['voucher_id'], ($page - 1) * 10, 10); 524 525 foreach ($results as $result) { 526 $data['histories'][] = array( 527 'order_id' => $result['order_id'], 528 'customer' => $result['customer'], 529 'amount' => $this->currency->format($result['amount'], $this->config->get('config_currency')), 530 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])) 531 ); 532 } 533 534 $history_total = $this->model_sale_voucher->getTotalVoucherHistories($this->request->get['voucher_id']); 535 536 $pagination = new Pagination(); 537 $pagination->total = $history_total; 538 $pagination->page = $page; 539 $pagination->limit = 10; 540 $pagination->url = $this->url->link('sale/voucher/history', 'user_token=' . $this->session->data['user_token'] . '&voucher_id=' . $this->request->get['voucher_id'] . '&page={page}', true); 541 542 $data['pagination'] = $pagination->render(); 543 544 $data['results'] = sprintf($this->language->get('text_pagination'), ($history_total) ? (($page - 1) * 10) + 1 : 0, ((($page - 1) * 10) > ($history_total - 10)) ? $history_total : ((($page - 1) * 10) + 10), $history_total, ceil($history_total / 10)); 545 546 $this->response->setOutput($this->load->view('sale/voucher_history', $data)); 547 } 548 549 public function send() { 550 $this->load->language('mail/voucher'); 551 552 $json = array(); 553 554 if (!$this->user->hasPermission('modify', 'sale/voucher')) { 555 $json['error'] = $this->language->get('error_permission'); 556 } 557 558 if (!$json) { 559 $this->load->model('sale/voucher'); 560 561 $vouchers = array(); 562 563 if (isset($this->request->post['selected'])) { 564 $vouchers = $this->request->post['selected']; 565 } elseif (isset($this->request->post['voucher_id'])) { 566 $vouchers[] = $this->request->post['voucher_id']; 567 } 568 569 if ($vouchers) { 570 foreach ($vouchers as $voucher_id) { 571 $voucher_info = $this->model_sale_voucher->getVoucher($voucher_id); 572 573 if ($voucher_info) { 574 if ($voucher_info['order_id']) { 575 $order_id = $voucher_info['order_id']; 576 } else { 577 $order_id = 0; 578 } 579 580 $this->load->model('sale/order'); 581 582 $order_info = $this->model_sale_order->getOrder($order_id); 583 584 // If voucher belongs to an order 585 if ($order_info) { 586 $this->load->model('localisation/language'); 587 588 $language = new Language($order_info['language_code']); 589 $language->load($order_info['language_code']); 590 $language->load('mail/voucher'); 591 592 // HTML Mail 593 $data['title'] = sprintf($language->get('text_subject'), $voucher_info['from_name']); 594 595 $data['text_greeting'] = sprintf($language->get('text_greeting'), $this->currency->format($voucher_info['amount'], (!empty($order_info['currency_code']) ? $order_info['currency_code'] : $this->config->get('config_currency')), (!empty($order_info['currency_value']) ? $order_info['currency_value'] : $this->currency->getValue($this->config->get('config_currency'))))); 596 $data['text_from'] = sprintf($language->get('text_from'), $voucher_info['from_name']); 597 $data['text_message'] = $language->get('text_message'); 598 $data['text_redeem'] = sprintf($language->get('text_redeem'), $voucher_info['code']); 599 $data['text_footer'] = $language->get('text_footer'); 600 601 $this->load->model('sale/voucher_theme'); 602 603 $voucher_theme_info = $this->model_sale_voucher_theme->getVoucherTheme($voucher_info['voucher_theme_id']); 604 605 if ($voucher_theme_info && is_file(DIR_IMAGE . $voucher_theme_info['image'])) { 606 $data['image'] = HTTP_CATALOG . 'image/' . $voucher_theme_info['image']; 607 } else { 608 $data['image'] = ''; 609 } 610 611 $data['store_name'] = $order_info['store_name']; 612 $data['store_url'] = $order_info['store_url']; 613 $data['message'] = nl2br($voucher_info['message']); 614 615 $mail = new Mail($this->config->get('config_mail_engine')); 616 $mail->parameter = $this->config->get('config_mail_parameter'); 617 $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); 618 $mail->smtp_username = $this->config->get('config_mail_smtp_username'); 619 $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'); 620 $mail->smtp_port = $this->config->get('config_mail_smtp_port'); 621 $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout'); 622 623 $mail->setTo($voucher_info['to_email']); 624 $mail->setFrom($this->config->get('config_email')); 625 $mail->setSender(html_entity_decode($order_info['store_name'], ENT_QUOTES, 'UTF-8')); 626 $mail->setSubject(sprintf($language->get('text_subject'), html_entity_decode($voucher_info['from_name'], ENT_QUOTES, 'UTF-8'))); 627 $mail->setHtml($this->load->view('mail/voucher', $data)); 628 $mail->send(); 629 630 // If voucher does not belong to an order 631 } else { 632 $data['title'] = sprintf($this->language->get('text_subject'), $voucher_info['from_name']); 633 634 $data['text_greeting'] = sprintf($this->language->get('text_greeting'), $this->currency->format($voucher_info['amount'], $this->config->get('config_currency'))); 635 $data['text_from'] = sprintf($this->language->get('text_from'), $voucher_info['from_name']); 636 $data['text_message'] = $this->language->get('text_message'); 637 $data['text_redeem'] = sprintf($this->language->get('text_redeem'), $voucher_info['code']); 638 $data['text_footer'] = $this->language->get('text_footer'); 639 640 $this->load->model('sale/voucher_theme'); 641 642 $voucher_theme_info = $this->model_sale_voucher_theme->getVoucherTheme($voucher_info['voucher_theme_id']); 643 644 if ($voucher_theme_info && is_file(DIR_IMAGE . $voucher_theme_info['image'])) { 645 $data['image'] = HTTP_CATALOG . 'image/' . $voucher_theme_info['image']; 646 } else { 647 $data['image'] = ''; 648 } 649 650 $data['store_name'] = $this->config->get('config_name'); 651 $data['store_url'] = HTTP_CATALOG; 652 $data['message'] = nl2br($voucher_info['message']); 653 654 $mail = new Mail($this->config->get('config_mail_engine')); 655 $mail->parameter = $this->config->get('config_mail_parameter'); 656 $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); 657 $mail->smtp_username = $this->config->get('config_mail_smtp_username'); 658 $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'); 659 $mail->smtp_port = $this->config->get('config_mail_smtp_port'); 660 $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout'); 661 662 $mail->setTo($voucher_info['to_email']); 663 $mail->setFrom($this->config->get('config_email')); 664 $mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); 665 $mail->setSubject(html_entity_decode(sprintf($this->language->get('text_subject'), $voucher_info['from_name']), ENT_QUOTES, 'UTF-8')); 666 $mail->setHtml($this->load->view('mail/voucher', $data)); 667 $mail->send(); 668 } 669 } 670 } 671 672 $json['success'] = $this->language->get('text_sent'); 673 } 674 } 675 676 $this->response->addHeader('Content-Type: application/json'); 677 $this->response->setOutput(json_encode($json)); 678 } 679 }