Erster Zyklus des Forks: Modernisierung des Fundaments, Härtung der Sicherheit und eine breite Welle neuer Funktionen.
Hinzugefügt
Plattform & Werkzeuge
- Datenbankmigrationen mit Versionsnummern (
tools/migrate.php, mit einem Befehlbaseline, um eine bestehende Datenbank zu übernehmen) und erste automatisierte Tests (PHPUnit). - Neuer Web-Installer, der den des ursprünglichen NeoFrag ersetzt: ein Assistent in fünf Schritten (Voraussetzungen → Datenbank → Module → Administrator → Fertig). Der Schritt „Module“ bot drei Website-Profile an (Community, Gaming / E-Sport, einfache Website) und konnte Addons aus dem Marketplace hinzufügen.
- Entfernter Marketplace (Katalog und Archive von neofrag-reborn.xyz ausgeliefert): Der Installer (Schritt „Module“) und die Administration (Schaltfläche „Marketplace“ der Seite Themes & Addons) fügen mit einem Klick die Addons des offiziellen Katalogs hinzu, die nicht mit der Website ausgeliefert werden. Sicherheit: HTTPS Pflicht, SHA-256-Prüfsumme geprüft, Archiv Eintrag für Eintrag kontrolliert (kein Pfad, der den Ordner des Addons verlässt, kein symbolischer Link), feste Katalogadresse, begrenzte Größen und Zeitlimits.
- Werkzeuge zum Paketbau:
package-addonserstellt den Katalog des Marketplace,build-releasedie per FTP hochzuladenden Archive. - Wartungsskript (
tools/maintenance.php, von einer geplanten Aufgabe auszuführen): leert den Papierkorb von allem, was dort seit mehr als 30 Tagen liegt (einstellbar), und löscht nie bestätigte Konten nach 7 Tagen, wenn die Bestätigung der Registrierungen aktiviert ist — nie einen Administrator.
Themes & Oberfläche
- Vier für NeoFrag Reborn geschaffene Themes: Nebula, für Community-Websites gedacht, Forge, Blockcraft und
Granite. Gemeinsame Farbvariablen (
--nf-*) kleiden Module und Widgets in die Farben jedes Themes. - Vollständige Neugestaltung der Administration: neues Erscheinungsbild, Seitenleiste, Befehlspalette (Strg+K), Hell- und Dunkelmodus.
- Auswahl von Theme und Sprache in der Fußzeile (auch für Besucher).
- Menüs: mehrstufiger Menü-Baukasten, nutzbar im Widget Navigation (Option „Verwaltetes Menü“).
Inhalte
- News und Artikel: geplante Veröffentlichung — der Inhalt erscheint zur gewählten Zeit, und Benachrichtigungen, Webhooks und Punkte gehen erst in diesem Moment hinaus, nicht mehr beim Speichern (eine Adresse, die eine geplante Aufgabe aufruft, durch einen Schlüssel geschützt); Sammelaktionen; Suche, Filter und Seitenumbruch in der Administration; eine eigene Seite zum Lesen einer News. Artikel erhalten ein Titelbild, wie es News bereits hatten, und der Aufrufzähler der News, der nie stieg, zählt endlich.
- Geplante Veröffentlichung auch für Seiten, Galerien und Events (bei Events ist das Erscheinungsdatum vom Datum der Durchführung getrennt).
- Wiki: dient als Dokumentation auf der Website (Inhaltsverzeichnis als Karten, verlässliche Markdown-Darstellung); Suche und Seitenumbruch; visueller Zeile-für-Zeile-Vergleich zweier Revisionen einer Seite.
- Medien: bearbeitbarer Titel und Beschreibung für jede Datei, Suche, Filter nach Typ und Seitenumbruch. Suche, Filter und Seitenumbruch auch in der Administration von Downloads, Linkverzeichnis, FAQ, Umfragen und Gästebuch.
- RSS-2.0-Feed (News + Artikel), Schaltflächen zum Teilen in sozialen Netzwerken, SEO (Meta-Description, Canonical, Open Graph, Twitter Card, Meta-Angaben pro Seite).
Community & Engagement
- Benachrichtigungszentrale auf der Website (Glocke und Zahl der ungelesenen), mit Abonnements (einem Inhalt oder einer Kategorie folgen). Die Benachrichtigungen melden Kommentare, Antworten im Forum, @Benutzername-Erwähnungen, private Nachrichten und Einladungen zu einem Event.
- Reaktionen „Gefällt mir“ auf News, Artikel, Kommentare und Forenbeiträge; Revisionen der Inhalte (Verlauf und Wiederherstellung); Widget „Neueste Kommentare“.
- Gemeinsamer Papierkorb: Gelöschte News, Artikel, Galerien, Kommentare und Forenbeiträge landen dort und können wiederhergestellt werden.
- Forum: Kategorie für VIP-Mitglieder reserviert, Bild pro Kategorie.
Gaming
- Events: vollständige Verwaltung der Gegner (Liste, Bearbeiten, Löschen; das ursprüngliche NeoFrag erlaubte nur, einen aus einem Match heraus hinzuzufügen), Live-Countdown, Einladungsbenachrichtigung.
Monetarisierung & Gamification
- Karma/Ruf → Punkte (einstellbare Skala) → Shop (Zahlung in Punkten) → VIP-Status.
- Stripe (Kauf von Punkten und VIP-Paketen), Werbeverwaltung (für VIP-Mitglieder ausgeblendet), Spenden (Modul und Widget, portiert aus „Donation v3“ von HiddenBlob, nach majiid; LGPLv3).
Verbindungen zwischen Modulen
- Statistiken auf 19 Module erweitert (das ursprüngliche NeoFrag deckte 3 ab: Kommentare, Forum, Mitglieder);
Aktivitätswand im Profil, die die Aktivität eines Mitglieds über alle Module zusammenführt; Dashboard
„Zu erledigen“ in der Administration; Seitenblöcke: Der Shortcode
[block:…]fügt einen Block eines Moduls in eine Seite ein (News, Artikel, Downloads).
Webhooks & Audit
- Signierte (HMAC) ausgehende Webhooks, aus der Administration verwaltet. Das Audit-Protokoll erfasst auch die Installation und Deinstallation von Addons, die Aktivierung eines Themes oder Moduls und das Speichern von Einstellungen.
Kontenverwaltung
- Mitglieder: Export der Mitglieder als CSV oder JSON (DSGVO); Moderatoren mit dem entsprechenden Recht stellen die Moderation aus ihrem Mitgliederbereich ein. Das Bearbeiten und Löschen eines Mitglieds aus der Administration, schon im ursprünglichen NeoFrag vorhanden, ist wieder an die neue Mitgliederliste angebunden.
Geändert
- Versionierung in den Abhängigkeiten der Addons auf reines SemVer vereinheitlicht (Wegfall der Bezeichnungen „Alpha“).
- Seiten gehört jetzt zum Kern; News, Forum und Galerien lassen sich deinstallieren.
- Rich-Text-Editor: Er funktioniert endlich — das HTML, das er erzeugt, wird bereinigt, statt als Text angezeigt zu werden.
Entfernt
- Die beiden Themes des ursprünglichen NeoFrag, „Thème par défaut“ (
default) und Azuro, ersetzt durch die Themes von NeoFrag Reborn. - Der BBCode-Editor des ursprünglichen NeoFrag (WysiBB) und die BBCode-Umwandlung: Der Rich-Text-Editor ersetzt ihn, und ein in BBCode geschriebener Text wird jetzt unverändert angezeigt.
Behoben
- Zehn Fehler behoben, darunter: Events ohne Teilnehmer oder Match erschienen nicht; das Bearbeiten oder Löschen eines Spielmodus schlug fehl; das Löschen eines Rekrutierungsangebots schlug fehl; der Link zu einem Partner führte zu einer nicht gefundenen Seite (er führt jetzt zu dessen Website); der Verfasser einer Meldung wurde nie gezeigt, nicht einmal berechtigten Moderatoren; die Widgets Galerien und Forum prüften ihre Einstellungen oder die Rechte falsch. Die Aufrufzähler zählen jetzt nur einmal pro Besuch und ignorieren Bots.
- Ein geplanter Inhalt ist über seine direkte Adresse nicht mehr vor seiner Zeit sichtbar. Wirkungslose Schaltflächen funktionieren jetzt: Zeiträume der Statistiken, Aktivierung der E-Mail-Vorlagen, soziale Netzwerke (alle sechs werden angezeigt), Schaltflächen „Hinzufügen“ bei News, Seiten und Galerien.
- Themes: Kontrast der Schaltflächen auf WCAG AA angehoben, Anmeldefelder mit ihrem Symbol verbunden, Ausrichtungen korrigiert.
- Kleine und große Bildschirme (geprüft von 390 bis 2560 Pixel Breite): in der Administration ausklappbares Seitenmenü und Inhalt in voller Breite auf dem Telefon; Mitgliederprofil; kompakte Kontoleiste in Nebula, Forge, Blockcraft und Granite.
- Die Administrationsseiten Mitglieder, Statistiken und Live-Editor zeigten einen Fehler 500; einige Zähler blieben bei
1 stehen (Moderationsabzeichen, Abonnenten des Newsletters, Statistiken der Medien), und eine leere Kategorie von
Downloads, FAQ oder Links ließ sich nicht löschen. (Für Entwickler: Fehler der strikten Typisierung in
timetostr()und den Helfern;(int)aufrow(FALSE)einesCOUNT/SUMergab immer 1.)
Sicherheit
- Von Mitgliedern gesendetes HTML wird serverseitig bereinigt (HTMLPurifier) gegen Codeeinschleusung; eine hochgeladene Datei wird anhand ihres tatsächlichen Inhalts geprüft, nicht nur anhand ihrer Endung; HSTS aktiviert (Browser fallen nicht mehr auf HTTP zurück).
- Anti-CSRF-Token in konstanter Zeit verglichen. IP-Adresse: Die Ratenbegrenzung und die IP-Sperrliste vertrauen
fälschbaren Headern (
X-Forwarded-For…) nicht mehr, es sei denn, ein vertrauenswürdiger Proxy ist angegeben. Berechtigungen: Rechteprüfungen hinzugefügt, wo sie fehlten (Gästebuch, Spiele, Galerien, Events, Statistiken). - Alte Upgrade-Skripte können beim Wiedereinlesen der Einstellungen keine beliebigen PHP-Objekte mehr erzeugen
(
unserializedurchallowed_classeseingeschränkt). - Sitzungs-Fingerabdruck gegen Sitzungsübernahme: Ein angemeldetes Mitglied wird abgemeldet, wenn sich sein Browser (User-Agent) während der Sitzung deutlich ändert — ein bloßes Browser-Update genügt dafür nicht. Die Adresse der geplanten Veröffentlichung ist durch einen in konstanter Zeit verglichenen Schlüssel geschützt.