Files
ptp/forms/send_ask.php
T
Kirik e5fc0fa4e4 Update departure time text and improve forms
Remove specific time details from departure info on plan page.
Add email domain blocking, extended validation, and multi-admin
Telegram notifications in forms.
2026-01-27 15:26:42 +01:00

101 lines
3.8 KiB
PHP
Executable File

<?php
require_once 'forms_helper.php';
// Загружаем настройки из .env
load_env_file(__DIR__ . '/.env');
$settings = get_forms_settings();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = trim($_POST['name'] ?? '');
$email = trim($_POST['email'] ?? '');
$telegram = trim($_POST['telegram'] ?? '');
$phone = trim($_POST['phone'] ?? '');
$subject = trim($_POST['subject'] ?? '');
$message = trim($_POST['message'] ?? '');
// Валидация
if (empty($name) || empty($subject) || empty($message)) {
$error = "Имя, тема и сообщение обязательны для заполнения.";
} elseif (empty($email) && empty($telegram)) {
$error = "Укажите email или Telegram ник (одно из двух обязательно).";
} elseif (!empty($email)) {
$email_validation = validate_email_extended($email);
if (!$email_validation['valid']) {
$error = $email_validation['error'];
}
}
if (empty($error)) {
// Подготавливаем данные заявки
$form_data = [
'name' => $name,
'email' => $email,
'telegram' => $telegram,
'phone' => $phone,
'subject' => $subject,
'message' => $message
];
$success_messages = [];
$error_messages = [];
// 1. Отправка email (если включено)
if ($settings['send_email']) {
$email_sent = send_email_notification($form_data, 'ask');
if ($email_sent) {
$success_messages[] = "Email отправлен";
} else {
$error_messages[] = "Ошибка отправки email";
}
}
// 2. Сохранение в JSON (если включено)
if ($settings['save_json']) {
$json_saved = save_application_to_json($form_data, 'ask');
if ($json_saved) {
$success_messages[] = "Вопрос сохранен";
} else {
$error_messages[] = "Ошибка сохранения вопроса";
}
}
// 3. Уведомление в Telegram (если включено)
if ($settings['send_telegram'] && $settings['notifications']) {
$telegram_sent = send_telegram_notification($form_data, 'ask');
if ($telegram_sent) {
$success_messages[] = "Уведомление отправлено";
} else {
$error_messages[] = "Ошибка уведомления в Telegram";
}
}
// Формируем итоговое сообщение
if (!empty($success_messages)) {
$success = "Сообщение отправлено! Мы ответим вам в ближайшее время.";
// Очистить форму
$name = $email = $telegram = $phone = $subject = $message = '';
}
if (!empty($error_messages) && empty($success_messages)) {
$error = "Ошибка отправки. Попробуйте еще раз или свяжитесь через Telegram.";
}
}
}
// Возвращаем JSON для AJAX совместимости
if (isset($success)) {
header('Content-Type: application/json; charset=utf-8');
echo json_encode([
'success' => true,
'message' => $success
], JSON_UNESCAPED_UNICODE);
exit;
} elseif (isset($error)) {
header('Content-Type: application/json; charset=utf-8');
echo json_encode([
'success' => false,
'error' => $error
], JSON_UNESCAPED_UNICODE);
exit;
}
?>