Untitled
unknown
php
22 days ago
8.7 kB
4
Indexable
<?php require_once 'smarty/smarty.class.php'; require_once 'dompdf/autoload.inc.php'; require_once 'mail.class.php'; use Dompdf\Dompdf; function convertImage() : String { $filename = $_SERVER['DOCUMENT_ROOT'] . "/php/logo.jpg"; if (!file_exists($filename)) throw new Exception('File not found'); $mime = mime_content_type($filename); if ($mime === false) throw new Exception('Illegal MIME type.'); $raw_data = file_get_contents($filename); if (empty($raw_data)) throw new Exception('File not readable or empty.'); return "data:{$mime};base64," . base64_encode($raw_data); } class Form extends Mail { private $post; private $filename; private function view($template, array $data) { $smarty = new Smarty; $smarty->debugging = false; $smarty->setTemplateDir($_SERVER['DOCUMENT_ROOT'] . '/php/views'); $smarty->setCompileDir($_SERVER['DOCUMENT_ROOT'] . '/php/views/compiled'); $smarty->assign('pagehost', $_SERVER['DOCUMENT_ROOT']); $smarty->assign('data', $data); $smarty->assign('mail', $this->settings['smtp']['mail']); return $smarty->fetch("{$template}.tpl"); } private function filename() { $date = date('dmYHis'); $this->filename = "planwesela_{$this->post['email']}_{$date}.pdf"; return $this->filename; } private function renderPDF($html) { $dompdf = new Dompdf(); $dompdf->loadHtml($html, 'UTF-8'); $dompdf->setPaper('A4', 'portrait'); $dompdf->render(); $output = $dompdf->output(); if (!is_dir(dirname(dirname(__FILE__)) . $this->settings['config']['dir'])) { mkdir(dirname(dirname(__FILE__)) . $this->settings['config']['dir'], 0777, true); } if (file_put_contents(dirname(dirname(__FILE__)) . "{$this->settings['config']['dir']}{$this->filename()}", $output)) return true; return false; } private function mail(array $args) { $this->subject = $args['subject']; $this->send_to = $args['to']; $this->attachement = $args['attachement']; $this->body = $this->view($args['template'], $args); $this->send(); } private function validate($post) { $validation = array(); $validation['error'] = false; $inputsToValidate = [ 'wedding_date', 'lady_name', 'lady_phone_number', 'man_name', 'man_phone_number', 'wedding_place', 'wedding_hour', 'church_adress', 'expected_arrival_time', 'greetings', 'lady_parents', 'man_parents', 'man_march', 'lady_march', 'onsite_blessing', 'onsite_blessing_song', 'onsite_blessing_hour', 'first_dance', 'first_dance_details', 'first_dance_title', 'second_dance', 'second_dance_song', 'deser', 'tort', 'cake_song', 'parents_thanks', 'oczepiny', 'wedding_fun', 'afterparty' ]; if (isset($post['validator']) and !empty($post['validator'])) { $validation['error'] = true; $validation['elements'][] = 'validator'; } if (isset($post['g-recaptcha-response']) and empty($post['g-recaptcha-response'])) { $validation['error'] = true; $validation['elements'][] = 'g-captcha'; } foreach ($inputsToValidate as $input_name) { if (!isset($post[$input_name]) or empty($post[$input_name])) { $validation['error'] = true; $validation['elements'][] = $input_name; } if (isset($post[$input_name]) and is_array($post[$input_name])) { if (!isset($post[$input_name]['option'])) { $validation['error'] = true; $validation['elements'][] = "{$input_name}[option]"; } if (isset($post[$input_name]['option']) and $post[$input_name]['option'] === 'tak') { foreach ($post[$input_name]['inputs'] as $key => $value) { if (empty($value)) { $validation['error'] = true; $validation['elements'][] = "{$input_name}[inputs][{$key}]"; } if (is_array($post[$input_name]['inputs'][$key]) and count($post[$input_name]['inputs'][$key]) < 2) { $validation['error'] = true; $validation['elements'][] = "{$input_name}[inputs][{$key}][]"; } } } if (isset($post[$input_name]['option']) and $post[$input_name]['option'] === 'null') { $validation['error'] = true; $validation['elements'][] = "{$input_name}[option]"; } } } // email validations if (strlen($post['email']) === 0 or !preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $post['email'])) { $validation['error'] = true; $validation['elements'][] = 'email'; } return $validation; } function response($status, array $data) { ignore_user_abort(true); set_time_limit(0); ob_start(); $data['status'] = $status; echo json_encode($data); header('Connection: close'); header('Content-Length: '.ob_get_length()); ob_end_flush(); ob_flush(); flush(); return true; } function post($post) { $this->post = $post; $validation = $this->validate($post); if ($validation['error']) { $this->response('error', $validation); die; } else { $html = $this->view('formularz', $post); if ($this->renderPDF($html)) { $user = array( "to" => $post['email'], "subject" => "Formularz planu wesela", "attachement" => dirname(dirname(__FILE__)) . "{$this->settings['config']['dir']}{$this->filename}", "download" => "{$this->settings['config']['path']}{$this->filename}", "template" => "mail_user" ); $admin = array( "to" => $this->settings['smtp']['mail'], "subject" => "Formularz planu wesela", "attachement" => dirname(dirname(__FILE__)) . "{$this->settings['config']['dir']}{$this->filename}", "download" => "{$this->settings['config']['path']}{$this->filename}", "template" => "mail_admin", "post" => $post ); if ($this->response('success', $post)) { $this->mail($user); $this->mail($admin); } } } } } if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { $form = new Form; $form->post($_POST); } ?>
Editor is loading...
Leave a Comment