public function main()
 {
     //init controller data
     $this->extensions->hk_InitData($this, __FUNCTION__);
     $this->document->setTitle($this->language->get('heading_title'));
     $this->form = new AForm('ContactUsFrm');
     $this->form->loadFromDb('ContactUsFrm');
     $form = $this->form->getForm();
     if ($this->request->is_POST() && $this->_validate()) {
         // move all uploaded files to their directories
         $file_pathes = $this->form->processFileUploads($this->request->files);
         $mail = new AMail($this->config);
         $mail->setTo($this->config->get('store_main_email'));
         $mail->setFrom($this->request->post['email']);
         $mail->setSender($this->request->post['first_name']);
         $mail->setSubject(sprintf($this->language->get('email_subject'), $this->request->post['name']));
         $msg = $this->request->post['enquiry'] . "\r\n";
         $form_fields = $this->form->getFields();
         foreach ($form_fields as $field_name => $field_info) {
             if (has_value($this->request->post[$field_name]) && !in_array($field_name, array('first_name', 'email', 'enquiry', 'captcha'))) {
                 $field_details = $this->form->getField($field_name);
                 $msg .= "\r\n" . rtrim($field_details['name'], ':') . ":\t" . $this->request->post[$field_name];
             }
         }
         if ($file_pathes) {
             $msg .= "\r\n" . $this->language->get('entry_attached') . ": \r\n";
             foreach ($file_pathes as $file_info) {
                 $basename = pathinfo(str_replace(' ', '_', $file_info['path']), PATHINFO_BASENAME);
                 $msg .= "\t" . $file_info['display_name'] . ': ' . $basename . " (" . round(filesize($file_info['path']) / 1024, 2) . "Kb)\r\n";
                 $mail->addAttachment($file_info['path'], $basename);
             }
         }
         $mail->setText(strip_tags(html_entity_decode($msg, ENT_QUOTES, 'UTF-8')));
         $mail->send();
         //get success_page
         if ($form['success_page']) {
             $success_url = $this->html->getSecureURL($form['success_page']);
         } else {
             $success_url = $this->html->getSecureURL('content/contact/success');
         }
         $this->redirect($success_url);
     }
     if ($this->request->is_POST()) {
         foreach ($this->request->post as $name => $value) {
             $this->form->assign($name, $value);
         }
     }
     $this->document->resetBreadcrumbs();
     $this->document->addBreadcrumb(array('href' => $this->html->getURL('index/home'), 'text' => $this->language->get('text_home'), 'separator' => FALSE));
     $this->document->addBreadcrumb(array('href' => $this->html->getURL('content/contact'), 'text' => $this->language->get('heading_title'), 'separator' => $this->language->get('text_separator')));
     $this->view->assign('form_output', $this->form->getFormHtml());
     $this->view->assign('action', $this->html->getURL('content/contact'));
     $this->view->assign('store', $this->config->get('store_name'));
     $this->view->assign('address', nl2br($this->config->get('config_address')));
     $this->view->assign('telephone', $this->config->get('config_telephone'));
     $this->view->assign('fax', $this->config->get('config_fax'));
     $this->processTemplate('pages/content/contact.tpl');
     //init controller data
     $this->extensions->hk_UpdateData($this, __FUNCTION__);
 }
 public function main()
 {
     $this->loadModel('tool/forms_manager');
     $this->loadLanguage('forms_manager/forms_manager');
     $this->loadLanguage('forms_manager/default_email');
     if ($this->request->is_POST()) {
         $path = $_SERVER['HTTP_REFERER'];
         if (!isset($this->request->get['form_id'])) {
             $this->redirect($path);
             exit;
         }
         $form_id = $this->request->get['form_id'];
         $form_data = $this->model_tool_forms_manager->getForm($form_id);
         $form = new AForm($form_data['form_name']);
         $form->loadFromDb($form_data['form_name']);
         $errors = $form->validateFormData($this->request->post);
         if ($errors) {
             //save error and data to session
             $this->session->data['custom_form_' . $form_id] = $this->request->post;
             $this->session->data['custom_form_' . $form_id]['errors'] = $errors;
             $this->redirect($path);
             exit;
         } else {
             $mail = new AMail($this->config);
             $mail->setTo($this->config->get('store_main_email'));
             if (isset($this->request->post['email'])) {
                 $mail->setFrom($this->request->post['email']);
                 unset($this->request->post['email']);
             } else {
                 $sender_email = $this->config->get('forms_manager_default_sender_email');
                 $sender_email = !$sender_email ? $this->config->get('store_main_email') : $sender_email;
                 $mail->setFrom($sender_email);
             }
             if (isset($this->request->post['first_name'])) {
                 $mail->setSender($this->request->post['first_name']);
                 unset($this->request->post['first_name']);
             } else {
                 $sender_name = $this->config->get('forms_manager_default_sender_name');
                 $sender_name = !$sender_name ? $this->config->get('store_name') : $sender_name;
                 $mail->setSender($sender_name);
             }
             if (isset($this->request->post['email_subject'])) {
                 $mail->setSubject($this->request->post['email_subject']);
                 unset($this->request->post['email_subject']);
             } else {
                 $mail->setSubject($form_data['form_name']);
             }
             $msg = $this->config->get('store_name') . "\r\n" . $this->config->get('config_url') . "\r\n";
             $fields = $this->model_tool_forms_manager->getFields($form_id);
             foreach ($fields as $field) {
                 // skip files and captchas
                 if (in_array($field['element_type'], array('K', 'J', 'U'))) {
                     continue;
                 }
                 if (isset($this->request->post[$field['field_name']])) {
                     $val = $this->request->post[$field['field_name']];
                     $val = $this->_prepareValue($val);
                     //for zones
                     if ($field['element_type'] == 'Z') {
                         $msg .= $field['name'] . ': ' . $val . "";
                         $val = $this->request->post[$field['field_name'] . '_zones'];
                         $val = $this->_prepareValue($val);
                         $msg .= "\t" . $val . "\r\n";
                     } else {
                         $msg .= $field['name'] . ': ' . $val . "\r\n";
                     }
                 }
             }
             // add attachments
             $file_pathes = $form->processFileUploads($this->request->files);
             if ($file_pathes) {
                 $msg .= "\r\n" . $this->language->get('entry_attached') . ": \r\n";
                 foreach ($file_pathes as $file_info) {
                     $basename = pathinfo(str_replace(' ', '_', $file_info['path']), PATHINFO_BASENAME);
                     $msg .= "\t" . $file_info['display_name'] . ': ' . $basename . " (" . round(filesize($file_info['path']) / 1024, 2) . "Kb)\r\n";
                     $mail->addAttachment($file_info['path'], $basename);
                 }
             }
             $mail->setText(strip_tags(html_entity_decode($msg, ENT_QUOTES, 'UTF-8')));
             $mail->send();
             if (empty($mail->error)) {
                 if ($form_data['success_page']) {
                     $success_url = $this->html->getSecureURL($form_data['success_page']);
                 } else {
                     $success_url = $this->html->getSecureURL('forms_manager/default_email/success');
                 }
                 //clear form session
                 unset($this->session->data['custom_form_' . $form_id]);
                 $this->redirect($success_url);
                 exit;
             } else {
                 $this->session->data['warning'] = $mail->error;
                 $this->redirect($this->html->getSecureURL('forms_manager/default_email', '&form_id=' . $form_id));
                 exit;
             }
         }
     }
     $this->data['warning'] = $this->session->data['warning'];
     if (isset($this->session->data['warning'])) {
         unset($this->session->data['warning']);
     }
     $this->document->setTitle($this->language->get('text_default_email_title'));
     $this->document->resetBreadcrumbs();
     $this->document->addBreadcrumb(array('href' => $this->html->getURL('index/home'), 'text' => $this->language->get('text_home'), 'separator' => FALSE));
     $this->document->addBreadcrumb(array('href' => $this->html->getURL('forms_manager/default_email'), 'text' => $this->language->get('text_default_email_title'), 'separator' => $this->language->get('text_separator')));
     $this->data['continue'] = $_SERVER['HTTP_REFERER'];
     $continue = HtmlElementFactory::create(array('type' => 'button', 'name' => 'continue_button', 'text' => $this->language->get('button_continue'), 'style' => 'button', 'icon' => 'icon-arrow-right'));
     $this->data['continue_button'] = $continue;
     $this->view->batchAssign($this->data);
     $this->processTemplate('pages/default_email.tpl');
 }
示例#3
0
 public function main()
 {
     //init controller data
     $this->extensions->hk_InitData($this, __FUNCTION__);
     $this->document->setTitle($this->language->get('heading_title'));
     $this->form = new AForm('ContactUsFrm');
     $this->form->loadFromDb('ContactUsFrm');
     $form = $this->form->getForm();
     if ($this->request->is_POST() && $this->_validate()) {
         // move all uploaded files to their directories
         $file_pathes = $this->form->processFileUploads($this->request->files);
         $template = new ATemplate();
         $subject = sprintf($this->language->get('email_subject'), $this->request->post['name']);
         $template->data['subject'] = $subject;
         $mail = new AMail($this->config);
         $mail->setTo($this->config->get('store_main_email'));
         $mail->setFrom($this->config->get('store_main_email'));
         $mail->setReplyTo($this->request->post['email']);
         $mail->setSender($this->request->post['first_name']);
         $mail->setSubject($subject);
         $store_logo = md5(pathinfo($this->config->get('config_logo'), PATHINFO_FILENAME)) . '.' . pathinfo($this->config->get('config_logo'), PATHINFO_EXTENSION);
         $template->data['logo'] = 'cid:' . $store_logo;
         $template->data['store_name'] = $this->config->get('store_name');
         $template->data['store_url'] = $this->config->get('config_url');
         $template->data['text_project_label'] = project_base();
         $template->data['entry_enquiry'] = $msg = $this->language->get('entry_enquiry');
         $msg .= "\r\n" . $this->request->post['enquiry'] . "\r\n";
         $template->data['enquiry'] = nl2br($this->request->post['enquiry'] . "\r\n");
         $form_fields = $this->form->getFields();
         $template->data['form_fields'] = array();
         foreach ($form_fields as $field_name => $field_info) {
             if (has_value($this->request->post[$field_name]) && !in_array($field_name, array('first_name', 'email', 'enquiry', 'captcha'))) {
                 $field_details = $this->form->getField($field_name);
                 $msg .= "\r\n" . rtrim($field_details['name'], ':') . ":\t" . $this->request->post[$field_name];
                 $template->data['form_fields'][rtrim($field_details['name'], ':')] = $this->request->post[$field_name];
             }
         }
         if ($file_pathes) {
             $msg .= "\r\n" . $this->language->get('entry_attached') . ": \r\n";
             foreach ($file_pathes as $file_info) {
                 $basename = pathinfo(str_replace(' ', '_', $file_info['path']), PATHINFO_BASENAME);
                 $msg .= "\t" . $file_info['display_name'] . ': ' . $basename . " (" . round(filesize($file_info['path']) / 1024, 2) . "Kb)\r\n";
                 $mail->addAttachment($file_info['path'], $basename);
                 $template->data['form_fields'][$file_info['display_name']] = $basename . " (" . round(filesize($file_info['path']) / 1024, 2) . "Kb)";
             }
         }
         $mail_html = $template->fetch('mail/contact.tpl');
         $mail->setHtml($mail_html);
         $mail->addAttachment(DIR_RESOURCE . $this->config->get('config_logo'), $store_logo);
         $mail->setText(strip_tags(html_entity_decode($msg, ENT_QUOTES, 'UTF-8')));
         $mail->send();
         //get success_page
         if ($form['success_page']) {
             $success_url = $this->html->getSecureURL($form['success_page']);
         } else {
             $success_url = $this->html->getSecureURL('content/contact/success');
         }
         //notify admin
         $this->loadLanguage('common/im');
         $message_arr = array(1 => array('message' => sprintf($this->language->get('im_customer_contact_admin_text'), $this->request->post['email'], $this->request->post['first_name'])));
         $this->im->send('customer_contact', $message_arr);
         $this->extensions->hk_ProcessData($this);
         $this->redirect($success_url);
     }
     if ($this->request->is_POST()) {
         foreach ($this->request->post as $name => $value) {
             $this->form->assign($name, $value);
         }
     }
     $this->document->resetBreadcrumbs();
     $this->document->addBreadcrumb(array('href' => $this->html->getURL('index/home'), 'text' => $this->language->get('text_home'), 'separator' => false));
     $this->document->addBreadcrumb(array('href' => $this->html->getURL('content/contact'), 'text' => $this->language->get('heading_title'), 'separator' => $this->language->get('text_separator')));
     $this->view->assign('form_output', $this->form->getFormHtml());
     $this->view->assign('action', $this->html->getURL('content/contact'));
     $this->view->assign('store', $this->config->get('store_name'));
     $this->view->assign('address', nl2br($this->config->get('config_address')));
     $this->view->assign('telephone', $this->config->get('config_telephone'));
     $this->view->assign('fax', $this->config->get('config_fax'));
     $this->processTemplate('pages/content/contact.tpl');
     //init controller data
     $this->extensions->hk_UpdateData($this, __FUNCTION__);
 }