Testseite
/**
* TSG Schönberg Vereinsformular
* Mitgliedschaftsantrag mit PDF-Generierung und E-Mail-Versand
*/
add_shortcode(‚vereinsformular‘, ‚render_vereinsformular‘);
function render_vereinsformular() {
ob_start();
if ($_SERVER[‚REQUEST_METHOD‘] === ‚POST‘ && isset($_POST[‚vereins_anmeldung_submit‘])) {
process_vereinsformular();
}
// Sportarten für Antragsteller (Erwachsene)
$sportarten_erwachsene = array(
‚Fitnessgymnastik‘ => 5,
‚Rhythmische Gymnastik‘ => 5,
‚Rhythmische Gymnastik Wettkampfgruppe‘ => 5,
‚Freizeit-Fußball‘ => 0,
‚Rückengymnastik‘ => 5,
‚Tischtennis‘ => 0,
‚Selbstverteidigung‘ => 5,
‚Fit im Alter‘ => 5,
‚Zumba‘ => 15,
);
// Sportarten für Kinder
$sportarten_kinder = array(
‚Ballett‘ => 25,
‚Sport für Jungs‘ => 5,
‚Trampolinturnen‘ => 20,
‚Trampolin Breitensport‘ => 5,
‚Hip Hop‘ => 25,
‚Geräteturnen Mädchen‘ => 5,
‚Sportkindergarten‘ => 5,
‚Sport für Mädchen‘ => 5,
‚Zumba‘ => 15,
);
// Kombinierte Liste für die Preisberechnung
$sportarten_liste = array_merge($sportarten_erwachsene, $sportarten_kinder);
?>
Sicherheitsüberprüfung fehlgeschlagen.
‚;
return;
}
// Kombinierte Preisliste für die Verarbeitung
$sportarten_preise = array(
// Sportarten für Antragsteller
‚Fitnessgymnastik‘ => 5,
‚Rhythmische Gymnastik‘ => 5,
‚Rhythmische Gymnastik Wettkampfgruppe‘ => 5,
‚Freizeit-Fußball‘ => 0,
‚Rückengymnastik‘ => 5,
‚Tischtennis‘ => 0,
‚Selbstverteidigung‘ => 5,
‚Fit im Alter‘ => 5,
‚Zumba‘ => 15,
// Kinder-Sportarten
‚Ballett‘ => 25,
‚Sport für Jungs‘ => 5,
‚Trampolinturnen‘ => 20,
‚Trampolin Breitensport‘ => 5,
‚Hip Hop‘ => 25,
‚Geräteturnen Mädchen‘ => 5,
‚Sportkindergarten‘ => 5,
‚Sport für Mädchen‘ => 5,
‚Zumba‘ => 15,
);
$vorname = sanitize_text_field($_POST[‚vorname‘] ?? “);
$nachname = sanitize_text_field($_POST[’nachname‘] ?? “);
$geschlecht = sanitize_text_field($_POST[‚geschlecht‘] ?? “);
$geburtsdatum_tag = sanitize_text_field($_POST[‚geburtsdatum_tag‘] ?? “);
$geburtsdatum_monat = sanitize_text_field($_POST[‚geburtsdatum_monat‘] ?? “);
$geburtsdatum_jahr = sanitize_text_field($_POST[‚geburtsdatum_jahr‘] ?? “);
$adresse = sanitize_text_field($_POST[‚adresse‘] ?? “);
$plz = sanitize_text_field($_POST[‚plz‘] ?? “);
$ort = sanitize_text_field($_POST[‚ort‘] ?? “);
$telefon = sanitize_text_field($_POST[‚telefon‘] ?? “);
$email = sanitize_email($_POST[‚email‘] ?? “);
$grundbeitrag = sanitize_text_field($_POST[‚grundbeitrag‘] ?? “);
$sportarten = isset($_POST[’sportarten‘]) && is_array($_POST[’sportarten‘]) ? array_map(’sanitize_text_field‘, $_POST[’sportarten‘]) : [];
$kontoinhaber = sanitize_text_field($_POST[‚kontoinhaber‘] ?? “);
$iban = sanitize_text_field($_POST[‚iban‘] ?? “);
$newsletter = isset($_POST[’newsletter‘]) ? ‚Ja‘ : ‚Nein‘;
$kinder = [];
$kinder_vornamen = $_POST[‚child_vorname‘] ?? [];
$kinder_nachnamen = $_POST[‚child_nachname‘] ?? [];
$kinder_geburtstage = $_POST[‚child_geburtsdatum_tag‘] ?? [];
$kinder_geburtsmonate = $_POST[‚child_geburtsdatum_monat‘] ?? [];
$kinder_geburtsjahre = $_POST[‚child_geburtsdatum_jahr‘] ?? [];
$kinder_geschlechter = $_POST[‚child_geschlecht‘] ?? [];
$kinder_sportarten = [];
foreach ($_POST as $key => $value) {
if (preg_match(‚/^child_sportarten_(\d+)$/‘, $key, $matches)) {
$kinder_sportarten[$matches[1]] = is_array($value) ? array_map(’sanitize_text_field‘, $value) : [];
}
}
for ($i = 0; $i < count($kinder_vornamen); $i++) {
$kinder[] = [
'vorname' => sanitize_text_field($kinder_vornamen[$i] ?? “),
’nachname‘ => sanitize_text_field($kinder_nachnamen[$i] ?? “),
‚geburtsdatum‘ => sprintf(‚%02d.%02d.%04d‘, $kinder_geburtstage[$i] ?? 0, $kinder_geburtsmonate[$i] ?? 0, $kinder_geburtsjahre[$i] ?? 0),
‚geschlecht‘ => sanitize_text_field($kinder_geschlechter[$i] ?? “),
’sportarten‘ => $kinder_sportarten[$i + 1] ?? []
];
}
$pdf_path = generate_vereins_pdf($vorname, $nachname, $geschlecht, $geburtsdatum_tag, $geburtsdatum_monat, $geburtsdatum_jahr, $adresse, $plz, $ort, $telefon, $email, $grundbeitrag, $sportarten, $sportarten_preise, $kinder, $kontoinhaber, $iban, $newsletter);
if (!$pdf_path) {
echo ‚Fehler bei der PDF-Erstellung.
‚;
return;
}
$headers = array(
‚Content-Type: text/html; charset=UTF-8‘,
‚From: TSG Schönberg ‚
);
// E-Mail an den Verein senden
$to_verein = ‚mitglieder@tsg-schoenberg.de‘;
$subject_verein = ‚Neuer Aufnahmeantrag – ‚ . $vorname . ‚ ‚ . $nachname;
$message_verein = get_email_template_verein($vorname, $nachname, $email, $telefon);
$mail_verein_sent = wp_mail($to_verein, $subject_verein, $message_verein, $headers, array($pdf_path));
// E-Mail an den Antragsteller senden
$subject_antragsteller = ‚Willkommen bei der TSG Schönberg / Taunus e.V.!‘;
$message_antragsteller = get_email_template_antragsteller($vorname, $nachname);
$mail_antragsteller_sent = wp_mail($email, $subject_antragsteller, $message_antragsteller, $headers, array($pdf_path));
// PDF-Datei löschen
if (file_exists($pdf_path)) {
unlink($pdf_path);
}
// Verbesserte Fehlerbehandlung
if ($mail_verein_sent && $mail_antragsteller_sent) {
echo ‚Vielen Dank für Ihre Anmeldung! Sie erhalten in Kürze eine Bestätigungs-E-Mail mit Ihren Anmeldedaten.
‚;
} elseif ($mail_verein_sent && !$mail_antragsteller_sent) {
echo ‚Ihre Anmeldung wurde erfolgreich übermittelt. Die Bestätigungs-E-Mail an Ihre Adresse konnte jedoch nicht zugestellt werden. Bitte überprüfen Sie Ihre E-Mail-Adresse oder kontaktieren Sie uns direkt.
‚;
} elseif (!$mail_verein_sent && $mail_antragsteller_sent) {
echo ‚Ihre Bestätigungs-E-Mail wurde versendet, aber es gab ein Problem bei der internen Weiterleitung. Wir werden uns so schnell wie möglich bei Ihnen melden.
‚;
} else {
echo ‚Beim Senden ist ein Fehler aufgetreten. Bitte versuchen Sie es später noch einmal oder kontaktieren Sie uns direkt.
‚;
}
}
function get_email_template_verein($vorname, $nachname, $email, $telefon) {
return “
Neuer Aufnahmeantrag
Von: “ . htmlspecialchars($vorname . ‚ ‚ . $nachname) . „
E-Mail: “ . htmlspecialchars($email) . „
Telefon: “ . htmlspecialchars($telefon) . „
Die vollständigen Daten sind im PDF-Anhang enthalten.
Diese E-Mail wurde automatisch generiert.
„;
}
function get_email_template_antragsteller($vorname, $nachname) {
return “
Willkommen!
Hallo “ . htmlspecialchars($vorname . ‚ ‚ . $nachname) . „,
vielen Dank für Ihre Anmeldung bei der TSG Schönberg / Taunus e.V.!
Wir haben Ihren Aufnahmeantrag erhalten und werden diesen zeitnah bearbeiten. Im Anhang finden Sie eine Kopie Ihrer Anmeldung zur Aufbewahrung.
Ihre nächsten Schritte:
- Sie erhalten in den nächsten Tagen eine Bestätigung Ihrer Mitgliedschaft
- Der Beitragseinzug erfolgt quartalsweise via SEPA-Lastschrift
- Bei Fragen stehen wir Ihnen gerne zur Verfügung
Wir freuen uns, Sie als neues Mitglied in unserem Verein begrüßen zu dürfen!
Sportliche Grüße
Ihr Team der TSG Schönberg / Taunus e.V.
TSG Schönberg / Taunus e.V. | Turn- und Sportgemeinde
Diese E-Mail wurde automatisch generiert.
„;
}
function generate_vereins_pdf($vorname, $nachname, $geschlecht, $geburtsdatum_tag, $geburtsdatum_monat, $geburtsdatum_jahr, $adresse, $plz, $ort, $telefon, $email, $grundbeitrag, $sportarten, $sportarten_preise, $kinder, $kontoinhaber, $iban, $newsletter) {
$tcpdf_path = get_stylesheet_directory() . ‚/tcpdf/tcpdf.php‘;
if (!file_exists($tcpdf_path)) {
error_log(‚TCPDF nicht gefunden unter: ‚ . $tcpdf_path);
return false;
}
require_once($tcpdf_path);
// Logo URL holen (WordPress Site Logo oder Custom Logo)
$logo_url = “;
$custom_logo_id = get_theme_mod(‚custom_logo‘);
if ($custom_logo_id) {
$logo_url = wp_get_attachment_image_src($custom_logo_id, ‚full‘)[0];
}
// Eigene Header/Footer-Klasse für TCPDF erstellen
class PDF_HeaderFooter extends TCPDF {
public $logo_url = “;
public function Header() {
// Logo links mit optimiertem Abstand
if ($this->logo_url) {
$this->Image($this->logo_url, 15, 16, 25, “, “, “, ‚T‘, false, 300, “, false, false, 0, false, false, false);
}
// Titel mittig mit optimalen Abständen
$this->SetY(19);
$this->SetFont(‚helvetica‘, ‚B‘, 18);
$this->Cell(0, 8, ‚AUFNAHMEANTRAG‘, 0, 1, ‚C‘);
$this->SetFont(‚helvetica‘, ‚B‘, 11);
$this->Cell(0, 5, ‚TSG Schönberg / Taunus e.V.‘, 0, 1, ‚C‘);
$this->Ln(10);
}
public function Footer() {
$this->SetY(-30);
$this->SetFont(‚helvetica‘, “, 7);
// Fußzeile mit optimiertem Format und Abständen
$footer_html = ‚
|
TSG Schönberg / Taunus 1920 e. V.
E-Mail: info@tsg-schoenberg.de • Adresse: Tulpenweg 5, 61476 Kronberg im Taunus • Telefon: (+49) 6173 32 34 12
www.tsg-schoenberg.de
|
‚;
$this->writeHTML($footer_html, true, false, true, false, “);
}
}
// PDF mit Header/Footer-Klasse erstellen
$pdf = new PDF_HeaderFooter(‚P‘, ‚mm‘, ‚A4‘, true, ‚UTF-8‘, false);
$pdf->logo_url = $logo_url;
$pdf->SetCreator(‚TSG Schönberg / Taunus e.V.‘);
$pdf->SetAuthor(‚TSG Schönberg / Taunus e.V.‘);
$pdf->SetTitle(‚Aufnahmeantrag‘);
$pdf->setPrintHeader(true);
$pdf->setPrintFooter(true);
$pdf->SetHeaderMargin(5);
$pdf->SetFooterMargin(14);
$pdf->SetMargins(15, 50, 15);
$pdf->SetAutoPageBreak(true, 35);
$pdf->AddPage();
$pdf->SetFont(‚helvetica‘, “, 10);
// Kosten berechnen
$grundbeitrag_preis = strpos($grundbeitrag, ‚Aktiv‘) !== false ? 7 : (strpos($grundbeitrag, ‚Familie‘) !== false ? 15 : 3);
$sportarten_summe = 0;
foreach ($sportarten as $sport) {
$sportarten_summe += $sportarten_preise[$sport] ?? 0;
}
$hauptmitglied_gesamt = $grundbeitrag_preis + $sportarten_summe;
// Grundbeitrag mit Preis in Klammern
$grundbeitrag_mit_preis = $grundbeitrag . ‚ (‚ . number_format($grundbeitrag_preis, 2, ‚,‘, ‚.‘) . ‚ €)‘;
// Sportarten untereinander auflisten
$sportarten_html = “;
if (!empty($sportarten)) {
foreach ($sportarten as $sport) {
$preis = $sportarten_preise[$sport] ?? 0;
$sportarten_html .= ‚• ‚ . htmlspecialchars($sport) . ‚ (‚ . number_format($preis, 2, ‚,‘, ‚.‘) . ‚ €)
‚;
}
} else {
$sportarten_html = ‚Keine
‚;
}
// Zustimmungen prüfen
$anmeldung_bindend = isset($_POST[‚anmeldung_bindend‘]) ? ‚[X]‘ : ‚[ ]‘;
$sepa_mandat = isset($_POST[’sepa_mandat‘]) ? ‚[X]‘ : ‚[ ]‘;
$datenschutz = isset($_POST[‚datenschutz‘]) ? ‚[X]‘ : ‚[ ]‘;
$newsletter_check = isset($_POST[’newsletter‘]) ? ‚[X]‘ : ‚[ ]‘;
// HTML generieren mit optimiertem Design
$html = ‚
PERSÖNLICHE DATEN
| Name: |
‚ . htmlspecialchars($vorname . ‚ ‚ . $nachname) . ‚ |
| Geschlecht: |
‚ . htmlspecialchars($geschlecht ?: ‚-‚) . ‚ |
| Geburtsdatum: |
‚ . sprintf(‚%02d.%02d.%04d‘, $geburtsdatum_tag, $geburtsdatum_monat, $geburtsdatum_jahr) . ‚ |
| Adresse: |
‚ . htmlspecialchars($adresse) . ‚ |
| PLZ / Ort: |
‚ . htmlspecialchars($plz . ‚ ‚ . $ort) . ‚ |
| Telefon: |
‚ . htmlspecialchars($telefon ?: ‚-‚) . ‚ |
| E-Mail: |
‚ . htmlspecialchars($email) . ‚ |
MITGLIEDSCHAFT
| Grundbeitrag: |
‚ . htmlspecialchars($grundbeitrag_mit_preis) . ‚ |
| Sportarten: |
‚ . $sportarten_html . ‚ |
‚;
// Kinder mit optimierten Abständen
if (!empty($kinder)) {
$html .= ‚‚;
$html .= ‚ANGEMELDETE KINDER
‚;
foreach ($kinder as $index => $kind) {
$kind_sportarten_html = “;
if (!empty($kind[’sportarten‘])) {
foreach ($kind[’sportarten‘] as $sport) {
$preis = $sportarten_preise[$sport] ?? 0;
$kind_sportarten_html .= ‚
• ‚ . htmlspecialchars($sport) . ‚ (‚ . number_format($preis, 2, ‚,‘, ‚.‘) . ‚ €)
‚;
}
} else {
$kind_sportarten_html = ‚
Keine
‚;
}
$html .= ‚
Kind ‚ . ($index + 1) . ‚
| Name: |
‚ . htmlspecialchars($kind[‚vorname‘] . ‚ ‚ . $kind[’nachname‘]) . ‚ |
| Geburtsdatum: |
‚ . htmlspecialchars($kind[‚geburtsdatum‘]) . ‚ |
| Geschlecht: |
‚ . htmlspecialchars($kind[‚geschlecht‘] ?: ‚-‚) . ‚ |
| Sportarten: |
‚ . $kind_sportarten_html . ‚ |
‚;
}
$html .= ‚
‚;
}
// Kostenübersicht mit optimierten Abständen
$html .= ‚‚;
$html .= ‚‚;
$html .= ‚
KOSTENÜBERSICHT (MONATLICH)
‚;
$html .= ‚
‚;
$html .= ‚| Antragsteller | ‚ . number_format($hauptmitglied_gesamt, 2, ‚,‘, ‚.‘) . ‚ € |
‚;
$gesamtkosten = $hauptmitglied_gesamt;
foreach ($kinder as $index => $kind) {
$kind_summe = 0;
foreach ($kind[’sportarten‘] ?? [] as $sport) {
$kind_summe += $sportarten_preise[$sport] ?? 0;
}
if ($kind_summe > 0) {
$gesamtkosten += $kind_summe;
$html .= ‚| Kind ‚ . ($index + 1) . ‚ | ‚ . number_format($kind_summe, 2, ‚,‘, ‚.‘) . ‚ € |
‚;
}
}
// Spacer mit mehr Abstand vor Gesamtsumme
$html .= ‚ |
‚;
$html .= ‚| Gesamtbetrag pro Monat | ‚ . number_format($gesamtkosten, 2, ‚,‘, ‚.‘) . ‚ € |
‚;
$html .= ‚
‚;
$html .= ‚
‚;
// Bankdaten mit optimiertem SEPA-Abstand
$html .= ‚
BANKDATEN & SEPA-LASTSCHRIFT
| Kontoinhaber: |
‚ . htmlspecialchars($kontoinhaber) . ‚ |
| IBAN: |
‚ . htmlspecialchars($iban) . ‚ |
SEPA-LASTSCHRIFTMANDAT: Der Antragsteller ermächtigt die TSG Schönberg / Taunus e.V., Zahlungen von seinem Konto mittels Lastschrift einzuziehen. Der Einzug erfolgt quartalsweise. Erstattung innerhalb von 8 Wochen möglich gemäß den Bedingungen des Kreditinstituts.
‚;
// Zustimmungen
$html .= ‚
ZUSTIMMUNGEN
‚ . $anmeldung_bindend . ‚ Hiermit melde ich mich verbindlich an.
‚ . $sepa_mandat . ‚ Ich erteile das SEPA-Lastschriftmandat.
‚ . $datenschutz . ‚ Ich akzeptiere die Datenschutzerklärung.
‚ . $newsletter_check . ‚ Ich möchte den Vereinsnewsletter erhalten (optional)
‚;
// HTML ins PDF schreiben
$pdf->writeHTML($html, true, false, true, false, “);
$upload_dir = wp_upload_dir();
$filename = ‚aufnahmeantrag_‘ . sanitize_file_name($vorname . ‚_‘ . $nachname) . ‚_‘ . date(‚Y-m-d_H-i-s‘) . ‚.pdf‘;
$filepath = $upload_dir[‚path‘] . ‚/‘ . $filename;
file_put_contents($filepath, $pdf->Output(“, ‚S‘));
return $filepath;
}