prepare( 'SELECT t.*, p.name AS priority_name, p.color AS priority_color, d.name AS department_name, s.name AS staff_name FROM tickets t JOIN priorities p ON p.id = t.priority_id JOIN departments d ON d.id = t.department_id LEFT JOIN staff s ON s.id = t.assigned_staff_id WHERE t.ticket_number = ?' ); $stmt->execute([$number]); $ticket = $stmt->fetch(); if (!$ticket) { http_response_code(404); die('Ticket nicht gefunden.'); } if (!staff_can_access_department($staff, (int) $ticket['department_id'])) { http_response_code(403); die('Sie haben keinen Zugriff auf Tickets dieser Abteilung.'); } // Thread laden $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(); // Anhänge $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']) ?> – <?= e($ticket['subject']) ?>
← Zurück
Ticket-Nr.:#
Status:
Absender: <>
Priorität:
Abteilung:
Zugewiesen:
Erstellt:
Fällig bis:
Verlauf ( Nachricht)
execute([$msg['id']]); $atts = $attStmt->fetchAll(); ?>
'.nl2br(e($p)).'

'; } ?>
📎 Anhänge: e($a['original_name']), $atts)) ?>