Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Form Validator
- *
- * @author Ivaylo Ivanov
- */
- class Validator {
- private $_errors = array();
- private $_data;
- /**
- *
- * @var \Database
- */
- private $_databseInstance;
- public function __construct() {
- }
- public function validate($data) {
- if (!empty($data)) {
- $this->_data = $data;
- foreach ($data as $field_params) {
- foreach ($field_params['rules'] as $rule => $rule_value) {
- if ($rule == 'required' || $rule == 'email' || $rule == 'available') {
- $this->{$rule}($field_params['name'], $field_params['data']);
- } else {
- $this->{$rule}($field_params['name'], $field_params['data'], $rule_value);
- }
- }
- }
- }
- }
- private function required($field_name, $field_data) {
- ($field_data == '') ? $this->_errors[] = 'Полето <strong>' . $field_name . '</strong> не е въведено !' : '';
- }
- private function email($field_name, $field_data) {
- $field_name = '';
- (!filter_var($field_data, FILTER_VALIDATE_EMAIL)) ? $this->_errors[] = 'Невалиден имейл !' : '';
- }
- public function getErrors() {
- return $this->_errors;
- }
- }
- /**
- * Sending Mails
- *
- * @author Ivaylo Ivanov
- */
- class Mailer {
- /**
- * This is destination email address
- * @var string
- */
- private $toEmail;
- /**
- *
- * @var string
- */
- private $toName;
- /**
- * This is source email address
- * @var string
- */
- private $fromEmail;
- /**
- * This is from sender
- * @var string
- */
- private $fromName;
- /**
- * This is return path email address
- * @var string
- */
- private $return;
- /**
- * This is subject for email
- * @var string
- */
- private $subject;
- /**
- * This is header for email
- * @var string
- */
- private $header;
- /**
- * Pass Variable
- * @param string $from_email Content from email address
- * @param string $from_name Sender Name
- * @param string $to_email Content to email address
- * @param string $subject Content subject email
- * @param string $return Content return path email address
- * No return value. Pass variable into this class
- */
- function __construct() {
- }
- public function setToEmail($toEmail) {
- $this->toEmail = $toEmail;
- return $this;
- }
- public function setToName($toName) {
- $this->toName = $toName;
- return $this;
- }
- public function setFromEmail($fromEmail) {
- $this->fromEmail = $fromEmail;
- return $this;
- }
- public function setFromName($fromName) {
- $this->fromName = $fromName;
- return $this;
- }
- public function setReturn($return) {
- $this->return = $return;
- return $this;
- }
- public function setSubject($subject) {
- $this->subject = $subject;
- return $this;
- }
- /**
- * Изпраща обикновен Имейл
- * @param string $message Content for this email
- * No return value. Send email
- * @access public
- * @access static
- */
- public function simpleMail($message) {
- $this->header = "From: " . $this->fromName . ' <' . $this->fromEmail . ">\n";
- $this->header .= "Reply-To: " . $this->fromEmail . "\n";
- $this->header .= "Return-Path: " . $this->return . "\n";
- $this->header .= "X-Mailer: PHP/" . phpversion() . "\n";
- $this->send($message);
- }
- /**
- * Изпраща HTML емаил
- * @param type $html
- * @param type $plainText
- */
- public function htmlMail($html) {
- // Уникално ид
- $boundary = md5(uniqid(time()));
- // Хедъри
- $this->header = "From: " . $this->fromName . ' <' . $this->fromEmail . ">" . "\r\n";
- $this->header .= "To: " . $this->toEmail . "\r\n";
- $this->header .= "Return-Path: " . $this->return . "\r\n";
- $this->header .= "MIME-Version: 1.0\n";
- $this->header .= 'Content-Type: multipart/alternative; boundary="' . $boundary . '"' . "\r\n";
- // Текст версия
- $msgPlainText = "--" . $boundary . "\r\n";
- $msgPlainText .= 'Content-Type: text/plain; charset="iso-8589-1"' . "\r\n";
- $msgPlainText .= "Content-Transfer-Encoding: 8bit" . "\r\n";
- $msgPlainText .= "If you are seeing this is because you may need to change your" . "\r\n";
- $msgPlainText .= "preferred message format from HTML to plain text." . "\r\n" . "\r\n";
- // HTML Версия
- $msgHtml = "--" . $boundary . "\r\n";
- $msgHtml .= 'Content-Type: text/html; charset="iso-8589-1"' . "\r\n";
- $msgHtml .= "Content-Transfer-Encoding: 8bit" . "\r\n" . "\r\n";
- $msgHtml .= $html;
- // Събиране
- $message = $msgPlainText . $msgHtml . PHP_EOL;
- // Изпращане
- $this->send($message);
- }
- /**
- * Send simple email with attachment
- * @param string $file File for attachment (file name or path of file)
- * @param string $plainText Message in plain text format
- * No return value. Send simple email with attachment
- * @access public
- * @access static
- */
- public function simpleAttachment($file, $plainText = '') {
- $handle = fopen($file, 'rb');
- $data = fread($handle, filesize($file));
- $data = chunk_split(base64_encode($data));
- $filetype = mime_content_type($file);
- $boundary = md5(uniqid(time()));
- $this->header = "From: " . $this->fromEmail . "\r\n";
- $this->header .= "To: " . $this->toEmail . "\r\n";
- $this->header .= "Return-Path: " . $this->return . "\r\n";
- $this->header .= "MIME-Version: 1.0\r\n";
- $this->header .= 'Content-Type: multipart/mixed; boundary="' . $boundary . '"';
- // Text Version
- $msgPlainText = "--" . $boundary . "\n";
- $msgPlainText .= "Content-Type: text/plain; charset=utf-8\r\n";
- $msgPlainText .= "Content-Transfer-Encoding: 8bit\r\n";
- if ($plainText != '') {
- $msgPlainText .= $plainText . "\r\n";
- }
- // Attachment Version
- $attach = "--" . $boundary . "\r\n";
- $attach .= "Content-Type: " . $filetype . "; name=\"" . $file . "\"\r\n";
- $attach .= "Content-Transfer-Encoding: base64 \r\n";
- // Need two end of lines
- $attach .= "Content-Disposition: attachment; filename=\"" . $file . "\"\r\n\r\n";
- $attach .= $data . "\r\n\r\n";
- $message = $msgPlainText . $attach;
- // Send Email
- $this->send($message);
- }
- /**
- * Изпраща HTML емаил с прикачен файл
- * @param type $file
- * @param type $html
- * @param type $plainText
- */
- public function htmlAttachment($file, $html, $plainText = '') {
- $handle = fopen($file, 'rb');
- $data = fread($handle, filesize($file));
- $data = chunk_split(base64_encode($data));
- $filetype = mime_content_type($file);
- $boundary = md5(uniqid(time()));
- $this->header = "From: " . $this->fromEmail . "\n";
- $this->header .= "To: " . $this->toEmail . "\n";
- $this->header .= "Return-Path: " . $this->return . "\n";
- $this->header .= "MIME-Version: 1.0\n";
- $this->header .= "Content-Type: multipart/related; boundary=\"" . $boundary . "\"\n";
- // Text Version
- $msgPlainText = "--" . $boundary . "\n";
- $msgPlainText .= "Content-Type: text/plain; charset=iso-8589-1\n";
- $msgPlainText .= "Content-Transfer-Encoding: 8bit\n";
- $msgPlainText .= "If you are seeing this is because you may need to change your\n";
- $msgPlainText .= "preferred message format from HTML to plain text.\n\n";
- if ($plainText == '') {
- $plainText = strip_tags($html);
- }
- $msgPlainText .= $plainText . "\n";
- // HTML Version
- $msgHtml = "--" . $boundary . "\n";
- $msgHtml .= "Content-Type: text/html; charset=iso-8589-1\n";
- $msgHtml .= "Content-Transfer-Encoding: 8bit\n";
- $msgHtml .= $html . "\n";
- // Attachment Version
- $attach = "--" . $boundary . "\n";
- $attach .= "Content-Type: " . $filetype . "; name=\"" . $file . "\"\n";
- $attach .= "Content-Transfer-Encoding: base64 \n";
- // Need two end of lines
- $attach .= "Content-Disposition: attachment; filename=\"" . $file . "\"\n\n";
- $attach .= $data . "\n\n";
- $message = "Content-Type: multipart/alternative; boundary=\"" . $boundary . "\"";
- $message .= $msgPlainText . $msgHtml . $attach;
- // Send Email
- $this->send($message);
- }
- /**
- * return function mail()
- * @param string $message Content for this email
- * return function mail()
- * @access private
- * @access static
- */
- private function send($message) {
- return mail($this->toEmail, $this->subject, $message, $this->header, '-f' . $this->return);
- }
- }
- if (!empty($_POST)) {
- $fromEmail = 'mail@mail.com';
- $fromName = 'Име на фирмата';
- $subject = '';
- header('Content-Type: application/json; charset=utf-8');
- $return = [];
- $validate = new Validator();
- $postData = [
- 'name' => ['name' => 'Име', 'data' => filter_input(INPUT_POST, 'name'), 'rules' => ['required' => true]],
- 'family' => ['name' => 'Фамилия', 'data' => filter_input(INPUT_POSTt, 'family'), 'rules' => ['required' => true]],
- 'address' => ['name' => 'Адрес', 'data' => filter_input(INPUT_POST, 'address'), 'rules' => ['required' => true]],
- 'email' => ['name' => 'Емейл', 'data' => filter_input(INPUT_POST, 'email'), 'rules' => ['required' => true, 'email' => true]],
- 'total' => ['name' => 'Тотал', 'data' => filter_input(INPUT_POST, 'total'), 'rules' => ['required' => true]],
- 'selectedItems' => ['name' => 'Избрани продукти', 'data' => filter_input(INPUT_POST, 'selectedItems'), 'rules' => ['required' => true]],
- 'phone' => ['name' => 'Телефон', 'data' => filter_input(INPUT_POST, 'phone'), 'rules' => ['required' => true]],
- 'text' => ['name' => 'Допълнителна информация', 'data' => filter_input(INPUT_POST, 'text'), 'rules' => []]
- ];
- $validate->validate($postData);
- $errors = $validate->getErrors();
- if (!empty($errors)) {
- $return['success'] = false;
- foreach ($errors as $error) {
- $return['errors'][] = $error;
- }
- echo json_encode($return);
- die();
- } else {
- $html = '<table>';
- $html .= "<tr><td colspan='2'>Вашата заявка бе приета успешно.</td></tr>";
- $html .= "<tr><td>Име и фамилия</td><td>{$postData['name']['data']} {$postData['family']['data']}</td></tr>";
- $html .= "<tr><td>Телефон:/td><td>{$postData['phone']['data']}</td></tr>";
- $html .= "<tr><td>Имейл:/td><td>{$postData['email']['data']}</td></tr>";
- $html .= "<tr><td>Адрес:/td><td>{$postData['address']['data']}</td></tr>";
- $html .= "<tr><td>Избрани продукти:td><td>{$postData['selectedItems']['data']}</td></tr>";
- $html .= "<tr><td>Допълнителна Информация:<br/>{$postData['text']['data']}</td></tr>";
- $html .= "<tr><td>Цена:<br/>{$postData['total']['data']}</td></tr>";
- $html .= '</table';
- $mailer = new Mailer();
- $mailer->setFromEmail($fromEmail)
- ->setFromName($fromName)
- ->setSubject($subject)
- ->setToEmail($postData['email']['data'])
- ->setToName($postData['email']['data'])
- ->htmlMail($html);
- $mailer->setFromEmail($fromEmail)
- ->setFromName($fromName)
- ->setSubject($subject)
- ->setToEmail($fromEmail)
- ->setToName($fromName)
- ->htmlMail($html);
- $return = [
- 'success' => true,
- 'message' => 'Вашата заявка бе приета успешно !'
- ];
- echo json_encode($return);
- die();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement