Push Details
HTML; if ($commitCount > 0) { $eventContent .= '
Commits
'; foreach (array_slice($commits, 0, 10) as $commit) { $message = esc($commit['message'] ?? ''); $author = htmlspecialchars($commit['author']['name'] ?? 'Unknown', ENT_QUOTES, 'UTF-8'); $sha = htmlspecialchars(substr($commit['id'] ?? '', 0, 7), ENT_QUOTES, 'UTF-8'); $url = htmlspecialchars($commit['url'] ?? '', ENT_QUOTES, 'UTF-8'); $shaHtml = $url ? "$sha" : "$sha"; $eventContent .= "
$shaHtml $author
$message
"; } $eventContent .= '
'; } break; case 'pull_request': $eventIcon = '🔀'; $pr = $payload['pull_request'] ?? []; $prNumber = htmlspecialchars($pr['number'] ?? 'N/A', ENT_QUOTES, 'UTF-8'); $prTitle = htmlspecialchars($pr['title'] ?? 'N/A', ENT_QUOTES, 'UTF-8'); $prUrl = htmlspecialchars($pr['html_url'] ?? '#', ENT_QUOTES, 'UTF-8'); $prState = htmlspecialchars($pr['state'] ?? 'N/A', ENT_QUOTES, 'UTF-8'); $prBase = htmlspecialchars($pr['base']['ref'] ?? 'N/A', ENT_QUOTES, 'UTF-8'); $prHead = htmlspecialchars($pr['head']['ref'] ?? 'N/A', ENT_QUOTES, 'UTF-8'); $eventContent = <<
Pull Request Details
HTML; break; case 'issues': $eventIcon = '📝'; $issue = $payload['issue'] ?? []; $issueNumber = htmlspecialchars($issue['number'] ?? 'N/A', ENT_QUOTES, 'UTF-8'); $issueTitle = htmlspecialchars($issue['title'] ?? 'N/A', ENT_QUOTES, 'UTF-8'); $issueUrl = htmlspecialchars($issue['html_url'] ?? '#', ENT_QUOTES, 'UTF-8'); $issueState = htmlspecialchars($issue['state'] ?? 'N/A', ENT_QUOTES, 'UTF-8'); $eventContent = <<
Issue Details
HTML; break; case 'release': $eventIcon = '🚀'; $release = $payload['release'] ?? []; $tagName = htmlspecialchars($release['tag_name'] ?? 'N/A', ENT_QUOTES, 'UTF-8'); $releaseName = htmlspecialchars($release['name'] ?? 'N/A', ENT_QUOTES, 'UTF-8'); $releaseUrl = htmlspecialchars($release['html_url'] ?? '#', ENT_QUOTES, 'UTF-8'); $eventContent = <<
Release Details
HTML; break; default: // Generic event display - render as structured tables $eventContent = '
Event Details
'; $eventContent .= renderDataAsTable($payload); $eventContent .= '
'; } $actionDisplay = $actionSafe ? " ($actionSafe)" : ''; $emailTitle = "$eventIcon GitHub: $eventSafe$actionDisplay"; $emailStamp = "$dateSafe"; $body = <<
📋 Repository Information
$eventContent HTML; $html = emailShell($emailTitle, $emailStamp, $body, "This GitHub webhook was automatically forwarded to your email address."); $subject = "$eventIcon GitHub $eventSafe$actionDisplay - $repoSafe"; return [ 'html' => $html, 'subject' => $subject ]; }