voucher.php (4391B)
1 <?php 2 class ControllerExtensionTotalVoucher extends Controller { 3 public function index() { 4 if ($this->config->get('total_voucher_status')) { 5 $this->load->language('extension/total/voucher'); 6 7 if (isset($this->session->data['voucher'])) { 8 $data['voucher'] = $this->session->data['voucher']; 9 } else { 10 $data['voucher'] = ''; 11 } 12 13 return $this->load->view('extension/total/voucher', $data); 14 } 15 } 16 17 public function voucher() { 18 $this->load->language('extension/total/voucher'); 19 20 $json = array(); 21 22 $this->load->model('extension/total/voucher'); 23 24 if (isset($this->request->post['voucher'])) { 25 $voucher = $this->request->post['voucher']; 26 } else { 27 $voucher = ''; 28 } 29 30 $voucher_info = $this->model_extension_total_voucher->getVoucher($voucher); 31 32 if (empty($this->request->post['voucher'])) { 33 $json['error'] = $this->language->get('error_empty'); 34 } elseif ($voucher_info) { 35 $this->session->data['voucher'] = $this->request->post['voucher']; 36 37 $this->session->data['success'] = $this->language->get('text_success'); 38 39 $json['redirect'] = $this->url->link('checkout/cart'); 40 } else { 41 $json['error'] = $this->language->get('error_voucher'); 42 } 43 44 $this->response->addHeader('Content-Type: application/json'); 45 $this->response->setOutput(json_encode($json)); 46 } 47 48 public function send($route, $args, $output) { 49 $this->load->model('checkout/order'); 50 51 $order_info = $this->model_checkout_order->getOrder($args[0]); 52 53 // If order status in the complete range create any vouchers that where in the order need to be made available. 54 if (in_array($order_info['order_status_id'], $this->config->get('config_complete_status'))) { 55 $voucher_query = $this->db->query("SELECT *, vtd.name AS theme FROM `" . DB_PREFIX . "voucher` v LEFT JOIN " . DB_PREFIX . "voucher_theme vt ON (v.voucher_theme_id = vt.voucher_theme_id) LEFT JOIN " . DB_PREFIX . "voucher_theme_description vtd ON (vt.voucher_theme_id = vtd.voucher_theme_id) WHERE v.order_id = '" . (int)$order_info['order_id'] . "' AND vtd.language_id = '" . (int)$order_info['language_id'] . "'"); 56 57 if ($voucher_query->num_rows) { 58 // Send out any gift voucher mails 59 $language = new Language($order_info['language_code']); 60 $language->load($order_info['language_code']); 61 $language->load('mail/voucher'); 62 63 foreach ($voucher_query->rows as $voucher) { 64 // HTML Mail 65 $data = array(); 66 67 $data['title'] = sprintf($language->get('text_subject'), $voucher['from_name']); 68 69 $data['text_greeting'] = sprintf($language->get('text_greeting'), $this->currency->format($voucher['amount'], $order_info['currency_code'], $order_info['currency_value'])); 70 $data['text_from'] = sprintf($language->get('text_from'), $voucher['from_name']); 71 $data['text_message'] = $language->get('text_message'); 72 $data['text_redeem'] = sprintf($language->get('text_redeem'), $voucher['code']); 73 $data['text_footer'] = $language->get('text_footer'); 74 75 if (is_file(DIR_IMAGE . $voucher['image'])) { 76 $data['image'] = $this->config->get('config_url') . 'image/' . $voucher['image']; 77 } else { 78 $data['image'] = ''; 79 } 80 81 $data['store_name'] = $order_info['store_name']; 82 $data['store_url'] = $order_info['store_url']; 83 $data['message'] = nl2br($voucher['message']); 84 85 $mail = new Mail($this->config->get('config_mail_engine')); 86 $mail->parameter = $this->config->get('config_mail_parameter'); 87 $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); 88 $mail->smtp_username = $this->config->get('config_mail_smtp_username'); 89 $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'); 90 $mail->smtp_port = $this->config->get('config_mail_smtp_port'); 91 $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout'); 92 93 $mail->setTo($voucher['to_email']); 94 $mail->setFrom($this->config->get('config_email')); 95 $mail->setSender(html_entity_decode($order_info['store_name'], ENT_QUOTES, 'UTF-8')); 96 $mail->setSubject(html_entity_decode(sprintf($language->get('text_subject'), $voucher['from_name']), ENT_QUOTES, 'UTF-8')); 97 $mail->setHtml($this->load->view('mail/voucher', $data)); 98 $mail->send(); 99 } 100 } 101 } 102 } 103 }