Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*------------------------------------
- SUBMIT EMAIL FORM
- ------------------------------------*/
- add_action('wp_ajax_nopriv_submit_simple_form', 'ajax_submit_simple_form');
- add_action('wp_ajax_submit_simple_form', 'ajax_submit_simple_form');
- function ajax_submit_simple_form()
- {
- $eol = "\r\n";
- $separator = md5(time());
- $form_name = isset($_REQUEST['form_name']) ? sanitize_text_field($_REQUEST['form_name']) : '';
- $captcha = isset($_REQUEST['g-recaptcha-response']) ? sanitize_text_field($_REQUEST['g-recaptcha-response']) : '';
- $secret = 'secret_key';
- $no_form_name = false;
- $errors = array();
- $to = '';
- $json = json_decode(file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=". $secret . "&response=" . $captcha), true);
- if($json['success']) {
- echo "ok";
- } else {
- echo "recaptcha error";
- }
- switch ($form_name) {
- case 'order':
- case 'order-modal':
- $fields = array(
- 'name' => isset($_REQUEST['name']) ? sanitize_text_field($_REQUEST['name']) : '',
- 'email' => isset($_REQUEST['email']) ? sanitize_email($_REQUEST['email']) : '',
- 'phone' => isset($_REQUEST['phone']) ? sanitize_text_field($_REQUEST['phone']) : '',
- 'people_count' => isset($_REQUEST['people_count']) ? sanitize_text_field($_REQUEST['people_count']) : '',
- 'payment_type' => isset($_REQUEST['payment_type']) ? sanitize_text_field($_REQUEST['payment_type']) : '',
- 'date_from' => isset($_REQUEST['date_from']) ? sanitize_text_field($_REQUEST['date_from']) : '',
- 'date_to' => isset($_REQUEST['date_to']) ? sanitize_text_field($_REQUEST['date_to']) : '',
- 'path' => isset($_REQUEST['path']) ? sanitize_text_field($_REQUEST['path']) : '',
- 'additional' => isset($_REQUEST['additional']) ? sanitize_text_field($_REQUEST['additional']) : '',
- );
- $labels = array(
- 'name' => 'Имя или компания',
- 'email' => 'Электронная почта',
- 'phone' => 'Телефон',
- 'people_count' => 'Количество человек',
- 'payment_type' => 'Вид оплаты',
- 'date_from' => 'Дата и время подачи',
- 'date_to' => 'Дата и время окончания',
- 'path' => 'Маршрут',
- 'additional' => 'Дополнительная информация',
- );
- $required = array(
- 'name' => $fields['name'],
- // 'email' => $fields['email'],
- 'phone' => $fields['phone'],
- // 'people_count' => $fields['people_count'],
- // 'payment_type' => $fields['payment_type'],
- // 'date_from' => $fields['date_from'],
- // 'date_to' => $fields['date_to'],
- // 'path' => $fields['path'],
- );
- $subject = 'Заказ аренды с сайта ' . $_SERVER['SERVER_NAME'];
- break;
- case 'order-special-modal':
- $fields = array(
- 'name' => isset($_REQUEST['name']) ? sanitize_text_field($_REQUEST['name']) : '',
- 'email' => isset($_REQUEST['email']) ? sanitize_email($_REQUEST['email']) : '',
- 'phone' => isset($_REQUEST['phone']) ? sanitize_text_field($_REQUEST['phone']) : '',
- 'additional' => isset($_REQUEST['additional']) ? sanitize_text_field($_REQUEST['additional']) : '',
- 'date_from' => isset($_REQUEST['date_from']) ? sanitize_text_field($_REQUEST['date_from']) : '',
- 'date_to' => isset($_REQUEST['date_to']) ? sanitize_text_field($_REQUEST['date_to']) : '',
- );
- $labels = array(
- 'name' => 'Имя или компания',
- 'email' => 'Электронная почта',
- 'phone' => 'Телефон',
- 'additional' => 'Дополнительная информация',
- 'date_from' => 'Дата и время подачи',
- 'date_to' => 'Дата и время окончания',
- );
- $required = array(
- 'name' => $fields['name'],
- 'phone' => $fields['phone'],
- );
- $subject = 'Заказ аренды спецтехники с сайта ' . $_SERVER['SERVER_NAME'];
- break;
- case 'callme-modal':
- $fields = array(
- 'name' => isset($_REQUEST['name']) ? sanitize_text_field($_REQUEST['name']) : '',
- 'phone' => isset($_REQUEST['phone']) ? sanitize_text_field($_REQUEST['phone']) : '',
- );
- $labels = array(
- 'name' => 'Имя или компания',
- 'phone' => 'Телефон',
- );
- $required = array(
- 'name' => $fields['name'],
- 'phone' => $fields['phone'],
- );
- $subject = 'Заказ обратного звонка с сайта ' . $_SERVER['SERVER_NAME'];
- break;
- case 'testimonial-modal':
- $fields = array(
- 'name' => isset($_REQUEST['name']) ? sanitize_text_field($_REQUEST['name']) : '',
- 'email' => isset($_REQUEST['email']) ? sanitize_email($_REQUEST['email']) : '',
- 'phone' => isset($_REQUEST['phone']) ? sanitize_text_field($_REQUEST['phone']) : '',
- 'rating' => isset($_REQUEST['rating']) ? sanitize_text_field($_REQUEST['rating']) : '',
- 'service' => isset($_REQUEST['service']) ? sanitize_text_field($_REQUEST['service']) : '',
- 'comment' => isset($_REQUEST['comment']) ? sanitize_text_field($_REQUEST['comment']) : '',
- 'gallery' => $_FILES['gallery'] ?? [],
- );
- $labels = array(
- 'name' => 'Имя или компания',
- 'email' => 'Электронная почта',
- 'phone' => 'Телефон',
- 'rating' => 'Оценка',
- 'service' => 'Услуга',
- 'comment' => 'Комментарий',
- );
- $required = array(
- 'name' => $fields['name'],
- 'email' => $fields['email'],
- 'phone' => $fields['phone'],
- 'rating' => $fields['rating'],
- 'service' => $fields['service'],
- 'comment' => $fields['comment'],
- );
- $subject = 'Новый отзыв на сайте ' . $_SERVER['SERVER_NAME'];
- break;
- default:
- $no_form_name = true;
- }
- // Return errors if there are some
- if ($no_form_name) {
- echo 0;
- exit;
- }
- $errors = array_merge($errors, check_required_fields($required));
- // Return errors if there are some
- if ($errors) {
- $data = array(
- 'errors' => $errors,
- );
- send_ajax_response('fail', $data);
- }
- // Form and send message to administrator
- $headers = "From: {$_SERVER['SERVER_NAME']} <robot@{$_SERVER['SERVER_NAME']}>{$eol}";
- if ($to === '') {
- $emails = get_field('simple_forms_emails', 'option');
- foreach ($emails as $e => $item) {
- $to .= $item['email'];
- if ($e !== count($emails) - 1) {
- $to .= ', ';
- }
- }
- }
- $message = '';
- foreach ($labels as $key => $label) {
- if ('' === $fields[$key]) {
- continue;
- }
- $message .= "{$label}: {$fields[$key]}\r\n";
- }
- $message .= "\r\n";
- $message .= 'Сообщение сгенерировано роботом и отправлено с сайта http://' . $_SERVER['SERVER_NAME'];
- $mailed = wp_mail($to, $subject, $message, $headers, '');
- if ($mailed) {
- if ($form_name === 'testimonial-modal') {
- $postId = wp_insert_post([
- 'post_type' => 'testimonial',
- 'post_author' => 1,
- 'post_status' => 'draft',
- 'post_title' => $fields['name'],
- 'post_content' => $fields['comment'],
- ]);
- update_field('email', $fields['email'], $postId);
- update_field('phone', $fields['phone'], $postId);
- update_field('service', $fields['service'], $postId);
- update_field('rating', $fields['rating'], $postId);
- if (!empty($fields['gallery'])) {
- $mediaIds = [];
- foreach ($fields['gallery']['name'] as $i => $fileName) {
- $mediaIds[] = media_handle_sideload([
- 'name' => $fields['gallery']['name'][$i],
- 'type' => $fields['gallery']['type'][$i],
- 'tmp_name' => $fields['gallery']['tmp_name'][$i],
- 'error' => $fields['gallery']['error'][$i],
- 'size' => $fields['gallery']['size'][$i],
- ], $postId);
- }
- update_field('gallery', $mediaIds, $postId);
- }
- }
- $data = array(
- 'success_msg' => 'Ваша заявка успешно отправлена',
- );
- send_ajax_response('success', $data);
- } else {
- $data = array(
- 'errors' => array(
- array(
- 'field' => 'general',
- 'text' => 'При отправке формы произошла ошибка.<br />Попробуйте ещё раз или повторите попытку позднее.',
- ),
- ),
- );
- send_ajax_response('fail', $data);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement