Funktion Ticket per Mail reservieren
This commit is contained in:
+94
-6
@@ -147,14 +147,56 @@ $jsonld = render_event_jsonld_graph($upcoming);
|
||||
</div>
|
||||
|
||||
<?php
|
||||
// Ticket-URL aus "Ticket/VVK-Info" extrahieren (falls vorhanden)
|
||||
$ticketUrl = null;
|
||||
if (!empty($e['tickets_info']) && preg_match('~https?://[^\s]+~', $e['tickets_info'], $m)) {
|
||||
$ticketUrl = $m[0];
|
||||
}
|
||||
|
||||
// Optional: Ticket-Reservierung per E-Mail
|
||||
$reserveEnabled = !empty($e['reserve_by_mail']);
|
||||
$mailto = null;
|
||||
if ($reserveEnabled) {
|
||||
$reserveTo = trim((string)($e['reserve_email'] ?? ''));
|
||||
|
||||
// Fallback: E-Mail aus "Ticket/VVK-Info" erkennen
|
||||
if ($reserveTo === '' && !empty($e['tickets_info']) && preg_match('/[A-Z0-9._%+\-]+@[A-Z0-9.\-]+\.[A-Z]{2,}/i', $e['tickets_info'], $mm)) {
|
||||
$reserveTo = $mm[0];
|
||||
}
|
||||
|
||||
// Fallback: ggf. siteweite Konstante (falls vorhanden)
|
||||
if ($reserveTo === '') {
|
||||
foreach (['TICKETS_EMAIL','TICKETS_RESERVATION_EMAIL','CONTACT_EMAIL','SITE_EMAIL'] as $c) {
|
||||
if (defined($c) && is_string(constant($c)) && trim((string)constant($c)) !== '') {
|
||||
$reserveTo = trim((string)constant($c));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$dt = date('d.m.Y', strtotime($e['date'])) . ' · ' . ($e['time'] ?: '19:30');
|
||||
$subject = rawurlencode('Ticketreservierung: ' . $e['title'] . ' (' . $dt . ')');
|
||||
$body = rawurlencode(
|
||||
"Hallo,\n\n" .
|
||||
"ich möchte gerne Tickets reservieren für:\n" .
|
||||
$e['title'] . "\n" .
|
||||
"Termin: " . $dt . "\n\n" .
|
||||
"Anzahl Tickets: \n" .
|
||||
"Name: \n" .
|
||||
"Telefon: \n\n" .
|
||||
"Vielen Dank!"
|
||||
);
|
||||
$mailto = 'mailto:' . $reserveTo . '?subject=' . $subject . '&body=' . $body;
|
||||
}
|
||||
?>
|
||||
<?php if ($ticketUrl): ?>
|
||||
<div class="mt-3">
|
||||
<a class="btn btn-brand btn-sm" href="<?= h($ticketUrl) ?>" target="_blank" rel="noopener" onclick="event.stopPropagation()">Tickets sichern</a>
|
||||
<?php if (!empty($reserveEnabled) || $ticketUrl): ?>
|
||||
<div class="mt-3 d-grid gap-2 d-sm-flex justify-content-center">
|
||||
<?php if (!empty($reserveEnabled)): ?>
|
||||
<a class="btn btn-accent btn-sm" href="<?= h($mailto) ?>" onclick="event.stopPropagation()">Tickets per Mail reservierbar</a>
|
||||
<?php endif; ?>
|
||||
<?php if ($ticketUrl): ?>
|
||||
<a class="btn btn-brand btn-sm" href="<?= h($ticketUrl) ?>" target="_blank" rel="noopener" onclick="event.stopPropagation()">Tickets sichern</a>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php elseif (!empty($e['tickets_info'])): ?>
|
||||
<div class="mt-3 small text-muted"><strong>Tickets:</strong> <?= h($e['tickets_info']) ?></div>
|
||||
@@ -181,7 +223,7 @@ $jsonld = render_event_jsonld_graph($upcoming);
|
||||
<img src="<?= h($e['image']) ?>" alt="<?= h($e['title']) ?>" class="modal-img mb-3">
|
||||
<?php endif; ?>
|
||||
|
||||
<p class="text-muted small mb-2">
|
||||
<p class="text-muted small mb-2" style="text-align: center;">
|
||||
<?= date('d.m.Y', strtotime($e['date'])) ?> · <?= h($e['time'] ?: '19:30') ?>
|
||||
<?php if (!empty($e['speaker'])): ?> · mit <?= h($e['speaker']) ?><?php endif; ?>
|
||||
</p>
|
||||
@@ -205,8 +247,54 @@ $jsonld = render_event_jsonld_graph($upcoming);
|
||||
<?= render_rich_text($e['description'] ?? '') ?>
|
||||
</div>
|
||||
|
||||
<?php if (!empty($ticketUrl)): ?>
|
||||
<div class="text-center"><a class="btn btn-brand" href="<?= h($ticketUrl) ?>" target="_blank" rel="noopener">Tickets sichern</a></div>
|
||||
<?php
|
||||
// Ticket-URL / Mail-Reservierung auch im Modal korrekt berechnen
|
||||
$ticketUrl = null;
|
||||
if (!empty($e['tickets_info']) && preg_match('~https?://[^\s]+~', $e['tickets_info'], $m)) {
|
||||
$ticketUrl = $m[0];
|
||||
}
|
||||
|
||||
$reserveEnabled = !empty($e['reserve_by_mail']);
|
||||
$mailto = null;
|
||||
if ($reserveEnabled) {
|
||||
$reserveTo = trim((string)($e['reserve_email'] ?? ''));
|
||||
if ($reserveTo === '' && !empty($e['tickets_info']) && preg_match('/[A-Z0-9._%+\-]+@[A-Z0-9.\-]+\.[A-Z]{2,}/i', $e['tickets_info'], $mm)) {
|
||||
$reserveTo = $mm[0];
|
||||
}
|
||||
if ($reserveTo === '') {
|
||||
foreach (['TICKETS_EMAIL','TICKETS_RESERVATION_EMAIL','CONTACT_EMAIL','SITE_EMAIL'] as $c) {
|
||||
if (defined($c) && is_string(constant($c)) && trim((string)constant($c)) !== '') {
|
||||
$reserveTo = trim((string)constant($c));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$dt = date('d.m.Y', strtotime($e['date'])) . ' · ' . ($e['time'] ?: '19:30');
|
||||
$subject = rawurlencode('Ticketreservierung: ' . $e['title'] . ' (' . $dt . ')');
|
||||
$body = rawurlencode(
|
||||
"Hallo,\n\n" .
|
||||
"ich möchte gerne Tickets reservieren für:\n" .
|
||||
$e['title'] . "\n" .
|
||||
"Termin: " . $dt . "\n\n" .
|
||||
"Anzahl Tickets: \n" .
|
||||
"Name: \n" .
|
||||
"Telefon: \n\n" .
|
||||
"Vielen Dank!"
|
||||
);
|
||||
$mailto = 'mailto:' . $reserveTo . '?subject=' . $subject . '&body=' . $body;
|
||||
}
|
||||
?>
|
||||
|
||||
<?php if (!empty($reserveEnabled) || $ticketUrl): ?>
|
||||
<div class="text-center d-grid gap-2 d-sm-flex justify-content-center">
|
||||
<?php if (!empty($reserveEnabled)): ?>
|
||||
<a class="btn btn-accent" href="<?= h($mailto) ?>">Tickets per Mail reservieren</a>
|
||||
<?php endif; ?>
|
||||
<?php if ($ticketUrl): ?>
|
||||
<a class="btn btn-brand" href="<?= h($ticketUrl) ?>" target="_blank" rel="noopener">Tickets sichern</a>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php elseif (!empty($e['tickets_info'])): ?>
|
||||
<div class="small text-center"><strong>Tickets:</strong> <?= h($e['tickets_info']) ?></div>
|
||||
<?php endif; ?>
|
||||
|
||||
Reference in New Issue
Block a user