Added new RSVP-Form with translations
This commit is contained in:
1 parent
6101a72fd5
commit
060b3723a8
87 files changed
+3247
-1219
No files matched your search
+164
-18
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
require __DIR__ . '/vendor/autoload.php';
|
||||
|
||||
use PHPMailer\PHPMailer\PHPMailer;
|
||||
use PHPMailer\PHPMailer\Exception;
|
||||
use Dotenv\Dotenv;
|
||||
@@ -7,29 +8,101 @@ use Dotenv\Dotenv;
|
||||
$dotenv = Dotenv::createImmutable(__DIR__ . '/../');
|
||||
$dotenv->safeLoad();
|
||||
|
||||
// Get form values
|
||||
$first_name = $_POST['first_name'] ?? '';
|
||||
$last_name = $_POST['last_name'] ?? '';
|
||||
$name = trim("$first_name $last_name") ?: 'No Name';
|
||||
|
||||
// Drinks can be an array
|
||||
$drinks = $_POST['drinks'] ?? 'None';
|
||||
if (is_array($drinks)) {
|
||||
$drinks = implode(', ', $drinks);
|
||||
function checkboxArrayToString($value)
|
||||
{
|
||||
if (is_array($value) && count($value) > 0) {
|
||||
return implode(', ', $value);
|
||||
}
|
||||
return 'None';
|
||||
}
|
||||
|
||||
function yesNo($value)
|
||||
{
|
||||
return !empty($value) ? 'Yes' : 'No';
|
||||
}
|
||||
|
||||
// Honeypot spam protection
|
||||
if (!empty($_POST['website'])) {
|
||||
exit('Spam detected.');
|
||||
}
|
||||
|
||||
// Privacy consent required
|
||||
if (empty($_POST['privacy'])) {
|
||||
exit('Privacy consent required.');
|
||||
}
|
||||
|
||||
// Personal
|
||||
$first_name = trim($_POST['first_name'] ?? '');
|
||||
$last_name = trim($_POST['last_name'] ?? '');
|
||||
$name = trim("$first_name $last_name");
|
||||
|
||||
$email = trim($_POST['email'] ?? '');
|
||||
$phone = trim($_POST['phone'] ?? '');
|
||||
|
||||
// Attendance
|
||||
$attendance = $_POST['attendance'] ?? 'Unknown';
|
||||
|
||||
// Drinks
|
||||
$drinks = checkboxArrayToString($_POST['drinks'] ?? []);
|
||||
|
||||
// Diet
|
||||
$diet = $_POST['diet'] ?? 'Not specified';
|
||||
|
||||
// Allergies
|
||||
$allergies = $_POST['allergies'] ?? 'None';
|
||||
$allergies = checkboxArrayToString($_POST['allergies'] ?? []);
|
||||
$allergies_other = trim($_POST['allergies_other'] ?? '');
|
||||
|
||||
// Convert to UTF-8
|
||||
$name = mb_convert_encoding($name, 'UTF-8', 'auto');
|
||||
$drinks = mb_convert_encoding($drinks, 'UTF-8', 'auto');
|
||||
$allergies = mb_convert_encoding($allergies, 'UTF-8', 'auto');
|
||||
// Organization
|
||||
$parking = yesNo($_POST['parking'] ?? '');
|
||||
$ride_needed = yesNo($_POST['ride_needed'] ?? '');
|
||||
$ride_offer = yesNo($_POST['ride_offer'] ?? '');
|
||||
$hotel = yesNo($_POST['hotel'] ?? '');
|
||||
$hotel_booked = yesNo($_POST['hotel_booked'] ?? '');
|
||||
|
||||
// Memories
|
||||
$memory_card = yesNo($_POST['memory_card'] ?? '');
|
||||
$photo_link = yesNo($_POST['photo_link'] ?? '');
|
||||
|
||||
// Entertainment
|
||||
$music_request = trim($_POST['music_request'] ?? '');
|
||||
$contribution = checkboxArrayToString($_POST['contribution'] ?? []);
|
||||
|
||||
// Children
|
||||
$children = $_POST['children'] ?? 'No';
|
||||
$children_count = trim($_POST['children_count'] ?? '');
|
||||
$children_ages = trim($_POST['children_ages'] ?? '');
|
||||
|
||||
// Message
|
||||
$message = trim($_POST['message'] ?? '');
|
||||
|
||||
// UTF-8 conversion
|
||||
$fields = [
|
||||
&$name,
|
||||
&$email,
|
||||
&$phone,
|
||||
&$attendance,
|
||||
&$drinks,
|
||||
&$diet,
|
||||
&$allergies,
|
||||
&$allergies_other,
|
||||
&$music_request,
|
||||
&$contribution,
|
||||
&$children,
|
||||
&$children_count,
|
||||
&$children_ages,
|
||||
&$message
|
||||
];
|
||||
|
||||
foreach ($fields as &$field) {
|
||||
$field = mb_convert_encoding($field, 'UTF-8', 'auto');
|
||||
}
|
||||
|
||||
// PHPMailer setup
|
||||
$mail = new PHPMailer(true);
|
||||
|
||||
try {
|
||||
|
||||
$mail->CharSet = 'UTF-8';
|
||||
|
||||
$mail->isSMTP();
|
||||
$mail->Host = $_ENV['SMTP_HOST'];
|
||||
$mail->SMTPAuth = true;
|
||||
@@ -41,18 +114,91 @@ try {
|
||||
$mail->setFrom($_ENV['FROM_EMAIL'], $_ENV['FROM_NAME']);
|
||||
$mail->addAddress($_ENV['TO_EMAIL']);
|
||||
|
||||
$mail->Subject = mb_encode_mimeheader("New Wedding Guest: $name", 'UTF-8');
|
||||
$mail->Subject = mb_encode_mimeheader(
|
||||
"Wedding RSVP: $name",
|
||||
'UTF-8'
|
||||
);
|
||||
|
||||
$body = <<<EOD
|
||||
==================================================
|
||||
PERSONAL INFORMATION
|
||||
==================================================
|
||||
|
||||
Name: $name
|
||||
Drinks: $drinks
|
||||
Email: $email
|
||||
Phone: $phone
|
||||
|
||||
==================================================
|
||||
ATTENDANCE
|
||||
==================================================
|
||||
|
||||
Attendance: $attendance
|
||||
|
||||
==================================================
|
||||
DRINKS
|
||||
==================================================
|
||||
|
||||
Preferred Drinks: $drinks
|
||||
|
||||
==================================================
|
||||
FOOD
|
||||
==================================================
|
||||
|
||||
Diet: $diet
|
||||
|
||||
Allergies: $allergies
|
||||
Additional Details: $allergies_other
|
||||
|
||||
==================================================
|
||||
ORGANIZATION
|
||||
==================================================
|
||||
|
||||
Parking Needed: $parking
|
||||
Needs Ride: $ride_needed
|
||||
Can Offer Ride: $ride_offer
|
||||
Hotel Stay: $hotel
|
||||
Hotel Booked: $hotel_booked
|
||||
|
||||
==================================================
|
||||
MEMORIES & EXTRAS
|
||||
==================================================
|
||||
|
||||
Greeting Card: $memory_card
|
||||
Wedding Photo Link: $photo_link
|
||||
|
||||
==================================================
|
||||
ENTERTAINMENT
|
||||
==================================================
|
||||
|
||||
Song Request: $music_request
|
||||
|
||||
Contribution:
|
||||
$contribution
|
||||
|
||||
==================================================
|
||||
CHILDREN
|
||||
==================================================
|
||||
|
||||
Coming with Children: $children
|
||||
Number of Children: $children_count
|
||||
Children Ages: $children_ages
|
||||
|
||||
==================================================
|
||||
MESSAGE
|
||||
==================================================
|
||||
|
||||
$message
|
||||
|
||||
EOD;
|
||||
|
||||
$mail->Body = $body;
|
||||
|
||||
$mail->send();
|
||||
|
||||
echo 'RSVP submitted successfully.';
|
||||
header('Location: /thank-you/');
|
||||
exit;
|
||||
|
||||
} catch (Exception $e) {
|
||||
|
||||
echo "RSVP could not be sent. Mailer Error: {$mail->ErrorInfo}";
|
||||
}
|
||||
Reference in new issue
Block a user