"Aussteller", "email" => $email, "values" => [ "shop_name" => htmlspecialchars($_POST['shop_name'] ?? '', ENT_QUOTES, 'UTF-8'), "contact_name" => htmlspecialchars($_POST['contact_name'] ?? '', ENT_QUOTES, 'UTF-8'), "tax_id" => htmlspecialchars($_POST['tax_id'] ?? '', ENT_QUOTES, 'UTF-8'), "address" => htmlspecialchars($_POST['address'] ?? '', ENT_QUOTES, 'UTF-8'), "email" => $email, "phone" => htmlspecialchars($_POST['phone'] ?? '', ENT_QUOTES, 'UTF-8'), "description" => htmlspecialchars($_POST['description'] ?? '', ENT_QUOTES, 'UTF-8'), "meters" => (int)($_POST['meters'] ?? 0), "tables" => (int)($_POST['tables'] ?? 0), "total_price" => htmlspecialchars($_POST['total_price'] ?? '0,00 €', ENT_QUOTES, 'UTF-8'), "check_dealer" => ($stand_type === 'Händler') ? "X" : "", "check_artist" => ($stand_type === 'Künstler') ? "X" : "", "strom_klein" => ($power_option === 'klein') ? "X" : "", "strom_groß" => ($power_option === 'gross') ? "X" : "", "check_terms" => "X", "check_privacy"=> "X" ] ]]; break; case 4: if (isset($_POST['discord_role']) && $_POST['discord_role'] == '1' && !empty($_POST['discord_name'])) { $discord_data = [ 'discord_name' => $_POST['discord_name'], 'discord_role' => true ]; $ch_disc = curl_init($config['discord_url']); curl_setopt($ch_disc, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch_disc, CURLOPT_POST, true); curl_setopt($ch_disc, CURLOPT_POSTFIELDS, json_encode($discord_data)); curl_setopt($ch_disc, CURLOPT_TIMEOUT, 10); curl_setopt($ch_disc, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json', 'Authorization: ' . $config['discord_auth'] ]); $disc_response = curl_exec($ch_disc); $disc_error = curl_error($ch_disc); $disc_http_code = curl_getinfo($ch_disc, CURLINFO_HTTP_CODE); if ($disc_error) { file_put_contents('bot_debug.log', "cURL Fehler: $disc_error" . PHP_EOL, FILE_APPEND); } elseif ($disc_http_code !== 200) { file_put_contents('bot_debug.log', "Bot Fehler HTTP-Code: $disc_http_code | Resp: $disc_response" . PHP_EOL, FILE_APPEND); } usleep(500000); } $geburtsdatum_raw = $_POST['geburtstag'] ?? ''; $date_obj = DateTime::createFromFormat('d.m.Y', $geburtsdatum_raw); $geburtsdatum_iso = $date_obj ? $date_obj->format('Y-m-d') : $geburtsdatum_raw; $tage = $_POST['tage'] ?? []; $bereiche = $_POST['bereiche'] ?? []; $anrede = $_POST['anrede'] ?? ''; $submitters_data = [[ "role" => "Helfer", "email" => $_POST['email'] ?? '', "fields" => [ ["name" => "herr", "value" => (strtolower($anrede) === 'herr') ? "true" : "false"], ["name" => "frau", "value" => (strtolower($anrede) === 'frau') ? "true" : "false"], ["name" => "divers", "value" => (strtolower($anrede) === 'divers') ? "true" : "false"], ["name" => "Vorname", "value" => $_POST['vorname'] ?? ''], ["name" => "Nachname", "value" => $_POST['nachname'] ?? ''], ["name" => "Geburtstag", "value" => $geburtsdatum_iso], ["name" => "T-Shirt", "value" => $_POST['tshirt'] ?? ''], ["name" => "Strasse", "value" => $_POST['strasse'] ?? ''], ["name" => "PLZ_Ort", "value" => $_POST['plz_ort'] ?? ''], ["name" => "Email", "value" => $_POST['email'] ?? ''], ["name" => "Handy", "value" => $_POST['handy'] ?? ''], ["name" => "Notfallkontakt", "value" => $_POST['notfall'] ?? ''], ["name" => "Tag_Fr", "value" => in_array("Fr", $tage) ? "true" : "false"], ["name" => "Tag_Sa", "value" => in_array("Sa", $tage) ? "true" : "false"], ["name" => "Bereich_Kasse", "value" => in_array("Kasse", $bereiche) ? "true" : "false"], ["name" => "Bereich_Security", "value" => in_array("Security", $bereiche) ? "true" : "false"], ["name" => "Bereich_Info", "value" => in_array("Info", $bereiche) ? "true" : "false"], ["name" => "Bereich_Catering", "value" => in_array("Catering", $bereiche) ? "true" : "false"], ["name" => "Bereich_Technik", "value" => in_array("Technik", $bereiche) ? "true" : "false"], ["name" => "Bereich_Springer", "value" => in_array("Springer", $bereiche) ? "true" : "false"], ["name" => "Faehigkeiten", "value" => $_POST['skills'] ?? ''], ["name" => "Essen", "value" => $_POST['essen'] ?? ''], ["name" => "Allergie_Vorhanden", "value" => (!empty($_POST['allergien'])) ? "true" : "false"], ["name" => "Allergien_Text", "value" => $_POST['allergien'] ?? ''], ["name" => "Einwilligung_Checkbox", "value" => isset($_POST['einwilligung']) ? "true" : "false"], ["name" => "WhatsApp_Checkbox", "value" => isset($_POST['whatsapp']) ? "true" : "false"] ] ]]; break; case 5: $email = filter_var(trim($_POST['email'] ?? ''), FILTER_VALIDATE_EMAIL); $act_name = trim($_POST['act_name'] ?? ''); $contact_name = trim($_POST['contact_name'] ?? ''); $terms_accepted = isset($_POST['terms']) ? true : false; if (!$email || empty($act_name) || empty($contact_name)) die("Validierungsfehler: Pflichtfelder fehlen."); if (!$terms_accepted) die("Validierungsfehler: Teilnahmebedingungen müssen akzeptiert werden."); $has_equipment = trim($_POST['has_equipment'] ?? 'Nein'); $music_source = trim($_POST['music_source'] ?? ''); $submitters_data = [[ "email" => $email, "name" => $contact_name, "fields" => [ ["name" => "act_name", "default_value" => $act_name], ["name" => "ansprechpartner", "default_value" => $contact_name], ["name" => "email", "default_value" => $email], ["name" => "anzahl_personen", "default_value" => (string)intval($_POST['person_count'] ?? 1)], ["name" => "dauer_minuten", "default_value" => (string)intval($_POST['duration'] ?? 0)], ["name" => "beschreibung", "default_value" => trim($_POST['description'] ?? '')], ["name" => "technik", "default_value" => trim($_POST['tech_needs'] ?? '')], ["name" => "ja_equipment_vorhanden", "default_value" => ($has_equipment === 'Ja')], ["name" => "nein_equipment_vorhanden", "default_value" => ($has_equipment === 'Nein')], ["name" => "equipment_beschreibung", "default_value" => trim($_POST['equipment_description'] ?? '')], ["name" => "Keine_Musik", "default_value" => ($music_source === 'Keine Musik')], ["name" => "wir_reichen_ein", "default_value" => ($music_source === 'Vorab eingereicht')], ["name" => "wir_bringen_mit", "default_value" => ($music_source === 'USB-Stick am Tag')], ["name" => "gesamtbetrag", "default_value" => trim($_POST['total_price'] ?? '')], ["name" => "teilnahmebedingungen", "default_value" => $terms_accepted] ] ]]; break; default: die("Fehler: Unbekannte Formular-ID (Template $template_id)."); } $payload = [ "template_id" => $template_id, "send_email" => false, "submitters" => $submitters_data ]; $ch = curl_init($docuseal_url . "/api/submissions/"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload)); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'X-Auth-Token: ' . $api_key, 'Content-Type: application/json' ]); $response = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); $curl_error = curl_error($ch); if ($http_code === 200 || $http_code === 201) { $result = json_decode($response, true); $slug = $result[0]['slug'] ?? $result['slug'] ?? null; $signing_url = $result[0]['url'] ?? $result['url'] ?? null; if (!$signing_url && $slug) { $signing_url = $docuseal_url . "/s/" . $slug; } if ($signing_url) { header("Location: " . $signing_url); exit(); } else { echo "

Fehler: Konnte den Signatur-Link nicht generieren!

"; echo "Rohe API-Antwort:
" . htmlspecialchars($response) . "
"; } } else { echo "

🚨 VERBINDUNG ZU DOCUSEAL FEHLGESCHLAGEN 🚨

"; echo "

HTTP-Code: " . htmlspecialchars($http_code) . "

"; if ($curl_error) echo "

cURL Fehler: " . htmlspecialchars($curl_error) . "

"; echo "

API-Antwort: " . htmlspecialchars($response) . "

"; } ?>