@props(['comments', 'level' => 0, 'ticket' => null, 'canSeeInternalNotes' => false])
@foreach ($comments as $comment) @php $commentUser = $comment->relationLoaded('user') ? $comment->getRelation('user') : null; $commentAttachments = $comment->relationLoaded('attachments') ? $comment->getRelation('attachments') : collect(); $commentReplies = $comment->relationLoaded('replies') ? $comment->getRelation('replies') : collect(); $replyFormId = 'helpdesk-reply-form-'.$comment->id; $currentTicket = $ticket ?? $comment->ticket ?? null; $replyCount = $commentReplies->count(); $isInternal = (bool) $comment->is_internal; $borderClass = $isInternal ? 'border-amber-300 dark:border-amber-700' : 'border-red-200 dark:border-red-900/70'; $railClass = $isInternal ? 'bg-amber-500' : 'bg-red-500'; $renderedBody = html_entity_decode((string) $comment->body, ENT_QUOTES | ENT_HTML5, 'UTF-8'); while (str_contains($renderedBody, '<') || str_contains($renderedBody, '>') || str_contains($renderedBody, '&lt;')) { $decodedBody = html_entity_decode($renderedBody, ENT_QUOTES | ENT_HTML5, 'UTF-8'); if ($decodedBody === $renderedBody) { break; } $renderedBody = $decodedBody; } if ($currentTicket !== null) { $renderedBody = strtr($renderedBody, [ '{{ ticket.reference }}' => (string) e((string) ($currentTicket->reference ?? '')), '{{ ticket.subject }}' => (string) e((string) ($currentTicket->subject ?? '')), '{{ ticket.status }}' => (string) e((string) ($currentTicket->status?->name ?? '')), '{{ ticket.priority }}' => (string) e((string) ($currentTicket->priority?->name ?? '')), '{{ ticket.category }}' => (string) e((string) ($currentTicket->category?->name ?? '')), '{{ ticket.project }}' => (string) e((string) ($currentTicket->project?->title ?? '')), '{{ ticket.team }}' => (string) e((string) ($currentTicket->team?->name ?? '')), '{{ requester.name }}' => (string) e((string) ($currentTicket->owner?->name ?? $currentTicket->user?->name ?? '')), '{{ agent.name }}' => (string) e((string) ($currentTicket->agent?->name ?? '')), '{{ actor.name }}' => (string) e((string) ($commentUser?->name ?? '')), '{{ ticket.url }}' => (string) e(route('helpdesk.tickets.show', ['ticket' => $currentTicket->getKey()])), ]); } $containsHtml = $renderedBody !== strip_tags($renderedBody); $renderedBody = preg_replace('/<\s*(script|style)[^>]*>.*?<\s*\/\s*\1\s*>/is', '', $renderedBody) ?: ''; $renderedBody = preg_replace('/\s+on[a-z]+\s*=\s*("[^"]*"|\'[^\']*\'|[^\s>]+)/i', '', $renderedBody) ?: ''; $renderedBody = preg_replace('/javascript\s*:/i', '', $renderedBody) ?: ''; $renderedBody = strip_tags($renderedBody, '