prepare( 'SELECT t.*, p.name AS priority_name, d.name AS department_name FROM tickets t JOIN priorities p ON p.id = t.priority_id JOIN departments d ON d.id = t.department_id WHERE t.ticket_number = ?' ); $stmt->execute([$number]); $ticket = $stmt->fetch(); if (!$ticket) { http_response_code(404); die('Ticket nicht gefunden.'); } // Zugangsprüfung: eingeloggter Kunde oder Gast-Zugang $user = current_user(); $allowed = ($user && $ticket['user_id'] == $user['id']) || !empty($_SESSION['guest_ticket_access'][$ticket['ticket_number']]); if (!$allowed) { redirect('/ticket_lookup.php?n=' . urlencode($number)); } // Nur öffentliche Nachrichten $thread = $pdo->prepare( 'SELECT tt.*, s.name AS staff_name, u.name AS user_name FROM ticket_threads tt LEFT JOIN staff s ON s.id = tt.staff_id LEFT JOIN users u ON u.id = tt.user_id WHERE tt.ticket_id = ? AND tt.is_internal_note = 0 ORDER BY tt.created_at ASC' ); $thread->execute([$ticket['id']]); $messages = $thread->fetchAll(); $attStmt = $pdo->prepare('SELECT * FROM ticket_attachments WHERE thread_id = ?'); $siteName = get_setting('display_name', config()['site']['name'] ?? 'DeskHub'); [$statusLabel] = status_label($ticket['status']); ?> Ticket #<?= e($ticket['ticket_number']) ?>
← Zurück
Ticket-Nr.:#
Status:
Abteilung:
Erstellt:
Nachrichtenverlauf
]*>/i', $body); $attStmt->execute([$msg['id']]); $atts = $attStmt->fetchAll(); ?>

📎 e($a['original_name']), $atts)) ?>