set('Cache.DefinitionImpl', null); // Disable cache by setting a non-existent directory or an invalid one $purifier_config->set('URI.AllowedSchemes', ['data' => true, 'src' => true, 'http' => true, 'https' => true]); $purifier = new HTMLPurifier($purifier_config); $allowed_extensions = array('jpg', 'jpeg', 'gif', 'png', 'webp', 'pdf', 'txt', 'md', 'doc', 'docx', 'csv', 'xls', 'xlsx', 'xlsm', 'zip', 'tar', 'gz'); if (isset($_GET['id']) && intval($_GET['id'])) { $ticket_id = intval($_GET['id']); $ticket_contact_snippet = "AND ticket_contact_id = $session_contact_id"; // Bypass ticket contact being session_id for a primary / technical contact viewing all tickets if ($session_contact_primary == 1 || $session_contact_is_technical_contact) { $ticket_contact_snippet = ''; } $ticket_sql = mysqli_query($mysqli, "SELECT * FROM tickets LEFT JOIN users on ticket_assigned_to = user_id LEFT JOIN ticket_statuses ON ticket_status = ticket_status_id LEFT JOIN categories ON ticket_category = category_id WHERE ticket_id = $ticket_id AND ticket_client_id = $session_client_id $ticket_contact_snippet" ); $ticket_row = mysqli_fetch_array($ticket_sql); if ($ticket_row) { $ticket_prefix = nullable_htmlentities($ticket_row['ticket_prefix']); $ticket_number = intval($ticket_row['ticket_number']); $ticket_status = nullable_htmlentities($ticket_row['ticket_status_name']); $ticket_priority = nullable_htmlentities($ticket_row['ticket_priority']); $ticket_subject = nullable_htmlentities($ticket_row['ticket_subject']); $ticket_details = $purifier->purify($ticket_row['ticket_details']); $ticket_assigned_to = nullable_htmlentities($ticket_row['user_name']); $ticket_resolved_at = nullable_htmlentities($ticket_row['ticket_resolved_at']); $ticket_closed_at = nullable_htmlentities($ticket_row['ticket_closed_at']); $ticket_feedback = nullable_htmlentities($ticket_row['ticket_feedback']); $ticket_category = nullable_htmlentities($ticket_row['category_name']); // Get Ticket Attachments (not associated with a specific reply) $sql_ticket_attachments = mysqli_query( $mysqli, "SELECT * FROM ticket_attachments WHERE ticket_attachment_reply_id IS NULL AND ticket_attachment_ticket_id = $ticket_id" ); // Get Tasks $sql_tasks = mysqli_query( $mysqli, "SELECT * FROM tasks WHERE task_ticket_id = $ticket_id ORDER BY task_order ASC, task_id ASC"); $task_count = mysqli_num_rows($sql_tasks); // Get Completed Task Count $sql_tasks_completed = mysqli_query($mysqli, "SELECT * FROM tasks WHERE task_ticket_id = $ticket_id AND task_completed_at IS NOT NULL" ); $completed_task_count = mysqli_num_rows($sql_tasks_completed); ?>