0; // A ticket started from somewhere that knows what it is about (a license's // Renewal Ticket) - plain text in, escaped here $prefill_subject = mb_substr(trim((string) ($_GET['subject'] ?? '')), 0, 500); $prefill_details = trim((string) ($_GET['details'] ?? '')); $prefill_details_html = $prefill_details !== '' ? '
' . nl2br(escapeHtml($prefill_details)) . '
' : ''; if ($client_id) { enforceClientAccess(); } // Raised about a service (its page's Report a problem) - one of this client's that is not archived $service = intval($_GET['service_id'] ?? 0) ? serviceRow($_GET['service_id']) : null; if ($service && (!$client_id || intval($service['service_client_id']) !== $client_id || $service['service_archived_at'])) { $service = null; } // ...and starts with what whoever picks it up needs: what it runs on, who to call, how it comes back if ($service) { if ($prefill_subject === '') { $prefill_subject = $service['service_name'] . ': '; } $service_assets = serviceLinked($service['service_id'], 'asset'); if ($prefill_details === '') { $prefill_details = serviceTicketDetails($service, $service_assets, serviceLinked($service['service_id'], 'vendor')); $prefill_details_html = '' . nl2br(escapeHtml($prefill_details)) . '
'; } // Runs on one thing - that is the asset $service_assets = array_values(array_filter($service_assets, function ($row) { return !$row['archived_at']; })); if (!$asset_id && count($service_assets) === 1) { $asset_id = intval($service_assets[0]['id']); } } ob_start(); ?>