$daten */ public function vorlage(string $datei, array $daten): string { $v = $this; extract($daten, EXTR_SKIP); ob_start(); require $datei; return (string) ob_get_clean(); } public function e(mixed $wert): string { return htmlspecialchars((string) $wert, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); } public function csrf(): string { return ''; } /** Ein Zeitpunkt in deutscher Ortszeit. */ public function zeit(?string $iso): string { if (null === $iso || '' === $iso || false === strtotime($iso)) { return '–'; } return (new \DateTimeImmutable($iso))->setTimezone(new \DateTimeZone('Europe/Berlin'))->format('d.m.Y, H:i'); } /** „vor 5 Minuten“ - für die letzte Meldung. */ public function vor(int $sekunden): string { return match (true) { $sekunden < 90 => 'gerade eben', $sekunden < 5400 => sprintf('vor %d Minuten', (int) round($sekunden / 60)), $sekunden < 129600 => sprintf('vor %d Stunden', (int) round($sekunden / 3600)), default => sprintf('vor %d Tagen', (int) round($sekunden / 86400)), }; } }