/** * Process Register action */ public function processRegisterAction() { $db = $this->db; $form = new Owner_Registration(); if ($this->_request->isXmlHttpRequest() && $form->isValid($_POST)) { $data = $form->getValidValues($_POST); //mark as free trial $data["free_trial"] = 1; $newRecord = $this->ownerModel->create($data); //query newly create record $owner = $this->ownerModel->find($newRecord)->toArray(); try { //sends an email $mail = new Zend_Mail("utf-8"); $mail->addTo($owner["email"], $owner["first_name"] . " " . $owner["last_name"]); $mail->setBodyHtml(Mailer::getTemplate("welcome.phtml", array("fullname" => $owner["first_name"] . " " . $owner["last_name"]))); $mail->setSubject("welcome to Leadschat"); $mail->setFrom("*****@*****.**"); $mail->send(Mailer::getTransport()); } catch (Exception $e) { } $this->view->result = array("result" => true); } else { $this->view->result = array("result" => false, "errors" => $form->getErrors()); } $this->_helper->layout->setLayout("plain"); $this->_helper->viewRenderer("json"); }
public function index() { if ($this->user->isLogged()) { $this->redirect($this->url->link('common/home', '', 'SSL')); } if (!$this->config->get('admin_reset_password')) { $this->redirect($this->url->link('common/login', '', 'SSL')); } $this->document->setTitle(Language::getVar('SUMO_NOUN_FORGOT_PASSWORD')); $this->load->model('user/user'); if ($this->request->server['REQUEST_METHOD'] == 'POST' && $this->validate()) { $code = sha1(uniqid(mt_rand(), true) . $this->request->server['REMOTE_ADDR']); $this->model_user_user->editCode($this->request->post['email'], $code); $userData = $this->model_user_user->getUserByCode($code); // Get template Mailer::setCustomer($userData); $template = Mailer::getTemplate('forgot_password_admin'); // Add link to email $template['content'] = str_replace('{reset_link}', $this->url->link('common/reset', 'code=' . $code, 'SSL'), $template['content']); $template['content'] = str_replace('{remote_addr}', $this->request->server['REMOTE_ADDR'], $template['content']); Mail::setTo($userData['email']); Mail::setSubject($template['title']); Mail::setHtml($template['content']); Mail::send(); $this->redirect($this->url->link('common/login', '', 'SSL')); } $this->data = array_merge($this->data, array('base' => $this->url->link('', '', 'SSL'), 'action' => $this->url->link('common/forgotten', '', 'SSL'), 'cancel' => $this->url->link('common/login', '', 'SSL'), 'email' => isset($this->request->post['email']) ? $this->request->post['email'] : '', 'error_warning' => isset($this->error['warning']) ? $this->error['warning'] : '')); $this->data['settings'] = $this->config->get('details_account_' . $this->config->get('template')); if (!is_array($this->data['settings']) || !count($this->data['settings'])) { $this->data['settings']['left'][] = $this->getChild('app/widgetsimplesidebar/', array('type' => 'accountTree', 'data' => array())); } $this->template = 'common/forgotten.tpl'; $this->children = array('common/header', 'common/footer'); $this->response->setOutput($this->render()); }
public function send() { $this->load->model('sale/invoice'); $invoiceData = $this->model_sale_invoice->getInvoice($this->request->get['invoice_id']); $this->load->model('sale/customer'); $customerData = $this->model_sale_customer->getCustomer($invoiceData['customer_id']); // Save invoice in cache $pdf = $this->download(true); $handle = fopen(DIR_CACHE . $invoiceData['invoice_no'] . '.pdf', 'w+'); fwrite($handle, $pdf); fclose($handle); // Get template Mailer::setInvoice($invoiceData); Mailer::setCustomer($customerData); $template = Mailer::getTemplate('send_invoice'); Mail::setTo($invoiceData['customer_email']); Mail::setSubject($template['title']); Mail::setHtml($template['content']); Mail::addAttachment(DIR_CACHE . $invoiceData['invoice_no'] . '.pdf'); Mail::send(); // Mark invoice as sent $this->model_sale_invoice->markSent($invoiceData['invoice_id']); // Change status (if necessary) if ($invoiceData['status'] == 'CONCEPT') { $this->model_sale_invoice->changeStatus($invoiceData['invoice_id'], 'sent'); } // Remove invoice @unlink(DIR_CACHE . $invoiceData['invoice_no'] . '.pdf'); $this->redirect($this->url->link('sale/invoice', 'token=' . $this->session->data['token'], 'SSL')); }
public function addCustomer($data) { $this->load->model('account/customer_group'); if (empty($data['customer_group_id'])) { $data['customer_group_id'] = $this->config->get('customer_group_id'); } $group_info = $this->model_account_customer_group->getCustomerGroup($data['customer_group_id']); $salt = substr(md5(uniqid(rand(), true) . $this->request->server['REMOTE_ADDR']), 0, 9); $data['birthdate'] = date('Y-m-d', strtotime($data['birthdate'])); $this->query("INSERT INTO PREFIX_customer\n SET store_id = :store_id,\n firstname = :firstname,\n middlename = :middlename,\n lastname = :lastname,\n birthdate = :birthdate,\n email = :email,\n telephone = :telephone,\n mobile = :mobile,\n gender = :gender,\n fax = :fax,\n salt = :salt,\n password = :password,\n newsletter = :newsletter,\n customer_group_id = :group_id,\n language_id = :language_id,\n ip = :ip,\n status = 1,\n approved = :approval,\n date_added = :date", array('store_id' => $this->config->get('store_id'), 'firstname' => $data['firstname'], 'middlename' => $data['middlename'], 'lastname' => $data['lastname'], 'birthdate' => $data['birthdate'], 'email' => $data['email'], 'telephone' => $data['telephone'], 'mobile' => $data['mobile'], 'gender' => $data['gender'], 'fax' => $data['fax'], 'salt' => $salt, 'password' => sha1($salt . sha1($salt . sha1($data['password']))), 'newsletter' => $data['newsletter'], 'ip' => $this->request->server['REMOTE_ADDR'], 'group_id' => $data['customer_group_id'], 'language_id' => $this->config->get('language_id'), 'approval' => !$group_info['approval'], 'date' => date('Y-m-d H:i:s'))); $customer_id = $this->lastInsertId(); if (!$customer_id) { Logger::error('[ACCOUNT/CUSTOMER] The customer could not be created'); Logger::error(print_r(self::$connection->errorInfo(), true)); return false; } $this->query("INSERT INTO PREFIX_address\n SET customer_id = :id,\n firstname = :firstname,\n middlename = :middlename,\n lastname = :lastname,\n company = :company,\n company_id = :cid,\n tax_id = :tax,\n address_1 = :address_1,\n number = :number,\n addon = :addon,\n address_2 = :address_2,\n postcode = :postcode,\n city = :city,\n country_id = :country_id,\n zone_id = :zone_id", array('id' => $customer_id, 'firstname' => $data['firstname'], 'middlename' => $data['middlename'], 'lastname' => $data['lastname'], 'company' => $data['company'], 'cid' => $data['company_id'], 'tax' => $data['tax_id'], 'address_1' => $data['address_1'], 'number' => $data['number'], 'addon' => $data['addon'], 'address_2' => $data['address_2'], 'postcode' => $data['postcode'], 'city' => $data['city'], 'country_id' => $data['country_id'], 'zone_id' => $data['zone_id'])); $address_id = $this->lastInsertId(); $this->query("UPDATE PREFIX_customer SET address_id = :aid WHERE customer_id = :cid", array('aid' => $address_id, 'cid' => $customer_id)); if ($group_info['approval']) { $message = Language::getVar('SUMO_ACCOUNT_WAIT_FOR_APPROVAL'); } else { $message = Language::getVar('SUMO_ACCOUNT_GO_TO_LOGIN', $this->url->link('account/login', '', 'SSL')); } Mailer::setCustomer($data); $template = Mailer::getTemplate('account_register'); $template['content'] = str_replace('{approvalOrLogin}', $message, $template['content']); Mail::setTo($data['email']); Mail::setSubject($template['title']); Mail::setHtml($template['content']); Mail::send(); if ($this->config->get('admin_notify_email')) { $sendTo = array($this->config->get('email')); $extra = $this->config->get('extra_notify_email'); if (!empty($extra)) { $extra = explode(',', $extra); foreach ($extra as $mail) { if (!empty($mail) && filter_var($mail, \FILTER_VALIDATE_EMAIL)) { $sendTo[] = $mail; } } } $template = Mailer::getTemplate('account_register_admin_notify'); if ($group_info['approval']) { $template['content'] = str_replace('{action}', Language::getVar('SUMO_ADMIN_ACTIVATE_ACCOUNT', $this->url->link('account/login')), $template['content']); } else { $template['content'] = str_replace('{action}', '', $template['content']); } foreach ($sendTo as $to) { Mail::setTo($to); Mail::setSubject($template['title']); Mail::setHtml($template['content']); Mail::send(); } } Cache::removeAll(); return $customer_id; }
public function index() { if ($this->customer->isLogged()) { $this->redirect($this->url->link('account/account', '', 'SSL')); } $this->document->setTitle(Language::getVar('SUMO_ACCOUNT_FORGOTTEN_TITLE')); $this->load->model('account/customer'); if ($this->request->server['REQUEST_METHOD'] == 'POST' && $this->validate()) { $start = rand(0, 10); $end = rand(10, 14); $password = str_shuffle(substr(sha1(uniqid(mt_rand(), true) . $this->request->server['REMOTE_ADDR']), $start, $end)); $this->model_account_customer->editPassword($this->request->post['email'], $password); $customerData = $this->model_account_customer->getCustomerByEmail($this->request->post['email']); // Get template Mailer::setCustomer($customerData); $template = Mailer::getTemplate('forgot_password_customer'); // Add link to email $template['content'] = str_replace('{password}', $password, $template['content']); $template['content'] = str_replace('{remote_addr}', $this->request->server['REMOTE_ADDR'], $template['content']); Mail::setTo($customerData['email']); Mail::setSubject($template['title']); Mail::setHtml($template['content']); Mail::send(); $this->session->data['success'] = Language::getVar('SUMO_ACCOUNT_PASSWORD_SENT'); $this->redirect($this->url->link('account/login', '', 'SSL')); } $this->data['breadcrumbs'] = array(); $this->data['breadcrumbs'][] = array('text' => Language::getVar('SUMO_NOUN_HOME'), 'href' => $this->url->link('common/home'), 'separator' => false); $this->data['breadcrumbs'][] = array('text' => Language::getVar('SUMO_ACCOUNT_TITLE'), 'href' => $this->url->link('account/account', '', 'SSL')); $this->data['breadcrumbs'][] = array('text' => Language::getVar('SUMO_ACCOUNT_FORGOTTEN_TITLE'), 'href' => $this->url->link('account/forgotten', '', 'SSL')); $this->data['warning'] = ''; if (isset($this->error['warning'])) { $this->data['warning'] = $this->error['warning']; } $this->data['action'] = $this->url->link('account/forgotten', '', 'SSL'); $this->data['settings'] = $this->config->get('details_account_' . $this->config->get('template')); if (!is_array($this->data['settings']) || !count($this->data['settings'])) { $this->data['settings']['left'][] = $this->getChild('app/widgetsimplesidebar/', array('type' => 'accountTree', 'data' => array())); } $this->template = 'account/forgotten.tpl'; $this->children = array('common/footer', 'common/header'); $this->response->setOutput($this->render()); }
public function addReturnHistory($return_id, $data) { $this->query("UPDATE PREFIX_return\n SET return_status_id = :status_id,\n date_modified = :date\n WHERE return_id = :id", array('status_id' => $data['return_status_id'], 'date' => date('Y-m-d H:i:s'), 'id' => $return_id)); if (!isset($data['notify'])) { $data['notify'] = 0; } $data['date'] = date('Y-m-d H:i:s'); $data['return_id'] = $return_id; $this->query("INSERT INTO PREFIX_return_history\n SET return_id = :return_id,\n return_status_id = :return_status_id,\n notify = :notify,\n comment = :comment,\n date_added = :date", $data); if ($data['notify']) { $return_data = $this->getReturn($return_id); Mailer::setCustomer($return_data); Mailer::setReturn($return_data); $mail = Mailer::getTemplate('update_return_status_' . $data['return_status_id']); if (!empty($data['comment'])) { $mail['content'] = str_replace('{hasComments}', $data['comment'] . '<br /><br />', $mail['content']); } else { $mail['content'] = str_replace('{hasComments}', '', $mail['content']); } Mail::setTo($return_data['email']); Mail::setSubject($mail['title']); Mail::setHTML($mail['content']); Mail::send(); } Cache::removeAll(); }
public function addReward($customer_id, $description = '', $points = '', $order_id = 0) { $customer_info = $this->getCustomer($customer_id); if ($customer_info && !empty($description)) { $this->query("INSERT INTO PREFIX_customer_reward SET\n customer_id = '" . (int) $customer_id . "',\n order_id = '" . (int) $order_id . "',\n points = '" . (int) $points . "',\n description = :description,\n date_added = NOW()", array('description' => $description)); Mailer::setCustomer($customer_info); $template = Mailer::getTemplate('account_reward', !empty($customer_info['language_id']) ? $customer_info['language_id'] : null); Mail::setTo($customer_info['email']); Mail::setSubject($template['subject']); Mail::setHtml($template['content']); Mail::send(); } Cache::removeAll(); }
public function updateStatus($order_id, $status_id, $extra = '', $notify = null) { if ($status_id == 1) { $notify = true; } else { $old = $this->get($order_id); if (!isset($old['status_id']) || isset($old['status_id']) && isset($data['status_id']) && $old['status_id'] != $data['status_id']) { //$this->updateStatus($order_id, !empty($data['status_id']) ? $data['status_id'] : 1, !empty($data['status']['comment']) ? $data['status']['comment'] : !empty($data['comment']) ? $data['comment'] : ''); if ($notify == null) { $notify = $this->config->get('customer_notify_email'); } } else { //$this->updateStatus($order_id, 1, !empty($data['comment']) ? $data['comment'] : ''); if ($notify == null) { $notify = false; } } } $this->query("UPDATE PREFIX_orders\n SET order_status = :status\n WHERE order_id = :id", array('status' => $status_id, 'id' => $order_id)); if ($notify || $this->config->get('admin_notify_email')) { $template = Mailer::getTemplate('update_order_status_' . $status_id); $content = $template['content']; if ($status_id == 1) { $this->load->model('account/order'); $orderInfo = $this->model_account_order->getOrder($order_id); Mailer::setOrder($orderInfo); // Grab order totals foreach ($this->model_account_order->getOrderTotals($order_id) as $total) { if (!empty($total['label_inject'])) { $label = sprintf(Language::getVar($total['label'] . '_INJ'), $total['label_inject']); } else { $label = Language::getVar($total['label']); } $totals[] = array_merge($total, array('label' => $label)); } // Grab order products foreach ($this->model_account_order->getOrderProducts($order_id) as $product) { $price = $product['price'] * (1 + $product['tax_percentage'] / 100); $products[] = array_merge($product, array('price' => Formatter::currency($price), 'total' => Formatter::currency($price * $product['quantity']), 'return' => $this->url->link('account/return/insert', 'order_id=' . $orderInfo['order_id'] . '&product_id=' . $product['product_id'], 'SSL'))); } /** * Parse address info */ // 1. Shipping $shippingAddress = str_replace('{address_1}', '{address_1} {number}{addon}', $orderInfo['customer']['shipping_address']['address_format']); foreach ($orderInfo['customer']['shipping_address'] as $key => $value) { $shippingAddress = str_replace('{' . $key . '}', $value, $shippingAddress); } // 2. Payment $paymentAddress = str_replace('{address_1}', '{address_1} {number}{addon}', $orderInfo['customer']['payment_address']['address_format']); foreach ($orderInfo['customer']['payment_address'] as $key => $value) { $paymentAddress = str_replace('{' . $key . '}', $value, $paymentAddress); } // Remove remaining vars and excessive line breaks $shippingAddress = preg_replace("/\\{([a-z0-9_\\-]+)\\}/", '', $shippingAddress); $shippingAddress = preg_replace("/[\r\n]+/", "\n", $shippingAddress); // Remove remaining vars and excessive line breaks $paymentAddress = preg_replace("/\\{([a-z0-9_\\-]+)\\}/", '', $paymentAddress); $paymentAddress = preg_replace("/[\r\n]+/", "\n", $paymentAddress); // Other data $order_date = Formatter::date(time()); $order_id = str_pad($order_id, 6, 0, STR_PAD_LEFT); $payment_method = $orderInfo['payment']['name']; $shipping_method = $orderInfo['shipping']['name']; $order_view = '<hr /> <div class="row"> <div class="col-sm-6"> <h4>' . Language::getVar('SUMO_NOUN_INVOICE_ADDRESS') . '</h4> <p>' . nl2br($paymentAddress) . '</p> </div> <div class="col-sm-6"> <h4>' . Language::getVar('SUMO_NOUN_SHIPPING_ADDRESS') . '</h4> <p>' . nl2br($shippingAddress) . '</p> </div> </div> <hr> <div class="row"> <div class="col-sm-6"> <dl class="info"> <dt>' . Language::getVar('SUMO_NOUN_ORDER_NO') . ':</dt> <dd>' . $order_id . '</dd> </dl> </div> <div class="col-sm-6"> <dl class="info"> <dt>' . Language::getVar('SUMO_NOUN_ORDER_DATE') . ':</dt> <dd>' . $order_date . '</dd> </dl> </div> </div> <table class="table" style="margin-top: 30px; font-size: 100%;"> <thead> <tr> <th style="width: 65px; font-size: 14px;">' . Language::getVar('SUMO_NOUN_QUANTITY') . '</th> <th>' . Language::getVar('SUMO_NOUN_PRODUCT') . '</th> <th style="width: 75px;">' . Language::getVar('SUMO_NOUN_MODEL') . '</th> <th class="text-right" style="width: 75px;">' . Language::getVar('SUMO_NOUN_PRICE') . '</th> <th class="text-right" style="width: 75px;">' . Language::getVar('SUMO_NOUN_TOTAL') . '</th> <th style="width: 30px;"></th> </tr> </thead> <tbody>'; foreach ($products as $product) { $order_view .= ' <tr> <td>' . $product['quantity'] . '</td> <td>' . $product['name'] . '</td> <td>' . $product['model'] . '</td> <td class="text-right">' . $product['price'] . '</td> <td class="text-right">' . $product['total'] . '</td> </tr>'; } $order_view .= ' </tbody> </table> <hr> <div class="row"> <div class="col-sm-6"> <div class="content"> <dl class="info"> <dt>' . Language::getVar('SUMO_NOUN_PAYMENT_BY') . ':</dt> <dd>' . $payment_method . '</dd> </dl> <dl class="info"> <dt>' . Language::getVar('SUMO_NOUN_SHIPPING_METHOD') . ':</dt> <dd>' . $shipping_method . '</dd> </dl> </div> </div> <div class="col-sm-6"> <div class="content pull-right">'; foreach ($totals as $total) { $order_view .= ' <dl class="info"> <dt>' . $total['label'] . ':</dt> <dd class="text-right" style="min-width: 75px; padding-right: 38px;">' . $total['value_hr'] . '</dd> </dl>'; } $order_view .= ' </div> </div> </div>'; } if (!empty($content)) { if ($notify) { $data = $this->get($order_id); Mailer::setCustomer($data['customer']); Mailer::setOrder(array('order_id' => $order_id)); $template = Mailer::getTemplate('update_order_status_' . $status_id); $content = $template['content'] = str_replace('{hasComments}', '<br />' . $extra, $template['content']); if ($status_id == 1) { $template['content'] = str_replace('{orderView}', $order_view, $template['content']); } Mail::setTo($data['customer']['email']); Mail::setSubject($template['title']); Mail::setHtml($template['content']); Mail::send(); } if ($this->config->get('admin_notify_email')) { $sendTo = array($this->config->get('email')); $extraMails = $this->config->get('extra_notify_email'); if (!empty($extraMails)) { $extraMails = explode(',', $extraMails); foreach ($extraMails as $mail) { if (!empty($mail) && filter_var($mail, \FILTER_VALIDATE_EMAIL)) { $sendTo[] = $mail; } } } $data = $this->get($order_id); Mailer::setCustomer($data['customer']); Mailer::setOrder(array('order_id' => $order_id)); $template = Mailer::getTemplate('update_order_status_' . $status_id); $template['content'] = str_replace('{hasComments}', '<br />' . $extra, $template['content']); if ($status_id == 1) { $template['content'] = str_replace('{orderView}', $order_view, $template['content']); } foreach ($sendTo as $to) { Mail::setTo($to); Mail::setSubject($template['title']); Mail::setHtml($template['content']); Mail::send(); } } } } // Fallback if ($status_id != 1) { $template = Mailer::getTemplate('update_order_status_' . $status_id); $content = $template['content']; $content = str_replace('{hasComments}', '<br />' . $extra, $content); $content = str_replace('{orderView}', '', $content); } else { $content = $extra; } $this->query("INSERT INTO PREFIX_orders_history\n SET order_id = :id,\n status_id = :status,\n notify = :notify,\n comment = :comment,\n history_date = :date", array('id' => $order_id, 'status' => $status_id, 'notify' => $notify, 'comment' => !empty($content) ? $content : '', 'date' => date('Y-m-d H:i:s'))); Cache::removeAll(); return true; }
public function preview() { $mail_id = !empty($this->request->get['mail_id']) ? $this->request->get['mail_id'] : false; if (!$mail_id) { $this->backToHome(); } $content = Mailer::getTemplate($mail_id); $this->response->setOutput('<title>' . $content['title'] . '</title><strong>Subject: ' . $content['title'] . '</strong><br /><hr />' . html_entity_decode($content['content'])); }
public function updateStatus($order_id, $status_id, $sendMail = null, $comment = null) { $this->query("UPDATE PREFIX_orders SET order_status = :status WHERE order_id = :id", array('id' => $order_id, 'status' => $status_id)); if ($sendMail == null) { $sendMail = $this->config->get('customer_notify_email'); } if ($sendMail) { $order_info = $this->getOrder($order_id); Mailer::setOrder($order_info); Mailer::setCustomer($order_info['customer']); //$template = Mailer::getTemplate('update_order_status_' . $status_id, !empty($order_info['customer']['language_id']) ? $order_info['customer']['language_id'] : null); $template = Mailer::getTemplate('update_order_status_' . $status_id, null); Mail::setTo($order_info['customer']['email']); Mail::setSubject($template['title']); if ($comment != null) { $template['content'] = str_replace('{hasComments}', $comment, $template['content']); } else { $template['content'] = str_replace('{hasComments}', '', $template['content']); } Mail::setHTML($template['content']); Mail::send(); } }