From b08063eb1bff9a6e99e613ee6f80372f1dccd21b Mon Sep 17 00:00:00 2001 From: Kirik Date: Mon, 10 Nov 2025 19:10:07 +0100 Subject: [PATCH] Update December flights form and trip data MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Update form fields: Change 'Имя' to 'Фамилия, имя', add required phone field - Add PDF upload for drone registration notice (BVS notice) - Update trip conditions: Change 'Поездки с полетами дронов' to 'Дронослёты' - Update submission deadline from 7 days to 5 days for drone flights - Add detailed time departure info with location dependency - Update privacy consent text and add centered consent header - Hide November 2025 flights (set active: false) - Update December 2025 flights image to winter drone photo - Add backend validation for phone field and PDF file upload (max 5MB, PDF only) - Update email notification function for consistent handling --- forms/send_plan.php | 46 +++++++++++++++------------------ static/data/upcoming-trips.json | 6 ++--- 2 files changed, 24 insertions(+), 28 deletions(-) diff --git a/forms/send_plan.php b/forms/send_plan.php index 5b543fb..88b967c 100644 --- a/forms/send_plan.php +++ b/forms/send_plan.php @@ -13,17 +13,31 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $bvs_number = trim($_POST['bvs_number'] ?? ''); $trip_period = trim($_POST['trip_period'] ?? ''); $consent = isset($_POST['privacy_consent']) ? 'agree' : ''; - + $bvs_file = $_FILES['bvs_file'] ?? null; + // Валидация if (empty($name) || empty($consent)) { - $error = "Обязательные поля: Имя, Согласие на обработку данных."; + $error = "Обязательные поля: Фамилия, имя, Согласие на обработку данных."; + } elseif (empty($phone)) { + $error = "Обязательное поле: Телефон."; } elseif (empty($email) && empty($telegram)) { $error = "Укажите email или Telegram ник (одно из двух обязательно)."; } elseif (!empty($email) && !filter_var($email, FILTER_VALIDATE_EMAIL)) { $error = "Некорректный email адрес."; } elseif ($consent !== 'agree') { $error = "Для отправки заявки необходимо согласие на обработку персональных данных."; - } else { + } elseif (!empty($bvs_file) && $bvs_file['error'] !== UPLOAD_ERR_NO_FILE) { + // Проверка загруженного файла + if ($bvs_file['error'] !== UPLOAD_ERR_OK) { + $error = "Ошибка при загрузке файла. Попробуйте еще раз."; + } elseif ($bvs_file['size'] > 5242880) { // 5MB + $error = "Размер файла не должен превышать 5 МБ."; + } elseif (mime_content_type($bvs_file['tmp_name']) !== 'application/pdf') { + $error = "Допустим только формат PDF."; + } + } + + if (!isset($error)) { // Подготавливаем данные заявки $form_data = [ 'name' => $name, @@ -32,7 +46,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { 'telegram' => $telegram, 'bvs_number' => $bvs_number, 'trip_period' => $trip_period, - 'consent' => $consent + 'consent' => $consent, + 'bvs_file' => $bvs_file ? $bvs_file['name'] : '' ]; $success_messages = []; @@ -40,27 +55,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { // 1. Отправка email (если включено) if ($settings['send_email']) { - $to = "test@yourdomain.com"; // ЗАМЕНИТЕ на ваш тестовый email! - $email_subject = "Новая заявка на поездку от " . $name; - $email_body = "Новая заявка на планирование поездки:\n\n"; - $email_body .= "Имя: " . $name . "\n"; - $email_body .= "Email: " . $email . "\n"; - $email_body .= "Телефон: " . ($phone ?: 'не указан') . "\n"; - $email_body .= "Telegram: " . ($telegram ?: 'не указан') . "\n"; - $email_body .= "Учётный номер БВС/Вариант поездки: " . ($bvs_number ?: 'не указано') . "\n"; - $email_body .= "Период поездки: " . ($trip_period ?: 'не выбран') . "\n"; - $email_body .= "Согласие на обработку данных: Да\n\n"; - $email_body .= "---\n"; - $email_body .= "Отправлено с: " . $_SERVER['HTTP_HOST'] . "\n"; - $email_body .= "Дата: " . date('Y-m-d H:i:s') . "\n"; - $email_body .= "IP: " . $_SERVER['REMOTE_ADDR'] . "\n"; - - $headers = "From: noreply@sleeptrip.ru\r\n"; - $headers .= "Reply-To: " . $email . "\r\n"; - $headers .= "X-Mailer: PHP/" . phpversion(); - $headers .= "Content-Type: text/plain; charset=UTF-8\r\n"; - - if (mail($to, $email_subject, $email_body, $headers)) { + $email_sent = send_email_notification($form_data, 'plan'); + if ($email_sent) { $success_messages[] = "Email отправлен"; } else { $error_messages[] = "Ошибка отправки email"; diff --git a/static/data/upcoming-trips.json b/static/data/upcoming-trips.json index 505f23d..215ae8c 100644 --- a/static/data/upcoming-trips.json +++ b/static/data/upcoming-trips.json @@ -9,7 +9,7 @@ "meta": [ "Выезд: рано утром (5-6 утра)" ], - "active": true, + "active": false, "order": 1 }, { @@ -17,9 +17,9 @@ "title": "Полёты в декабре 2025 года", "period": "Декабрь 2025", "description": "Зимние полёты выходного дня во Владимирской / Московской / Тверской области.", - "image": "https://s3.regru.cloud/sleeptrip-dev/images/Klin_20241005_1.jpg", + "image": "/static/images/Rassvet_20231202_9.webp", "meta": [ - "Выезд: рано утром (5-6 утра)" + "Подача заявки минимум за 5 дней" ], "active": true, "order": 2