Modulare Architektur
BeamReactor basiert auf einer vollständig modularen Architektur. Jede Funktion ist in einem eigenständigen Plugin gekapselt, das an beliebiger Stelle im Code oder direkt in WYSIWYG-Editoren integriert werden kann.
Die Engine zentralisiert alle Aufrufe: Kein PHP-Skript kann ausgeführt werden, ohne sie zu durchlaufen. Dieses Design gewährleistet vollständige Kontrolle über Ein-/Ausgabeflüsse und strikte Isolation zwischen den Komponenten.
Automatisches Laden
Wenn ein Plugin aufgerufen wird, übernimmt die Engine automatisch:
- Das Laden der Konfiguration (
conf/plugin.conf.inc.php) - Die Bibliotheksinjektion (
lib/plugin.lib.inc.php) - Die Sprachauswahl basierend auf der Benutzersprache
- Die Registrierung von Routen und Handlern
Mehrere Plugins können auf derselben Seite koexistieren, ohne Konflikte zu verursachen. Jedes Plugin arbeitet in seinem eigenen Namensraum, mit eigenen CSS- und JavaScript-Ressourcen.
Datenfilterung
Alle ein- und ausgehenden Daten durchlaufen die Klasse Sanitizer\Parser. Das System validiert jeden Wert anhand strenger Typen:
Primitive Typen
Bool, Int, Float, String mit Längen- und Formatbeschränkungen.
Strukturierte Typen
E-Mail, URL, UUID, IP, Datum, JSON mit Syntaxvalidierung.
Rich Types
HTML (Tag-Whitelist), Markdown, SQL (nur vorbereitete Anweisungen).
Geschäftstypen
Dateien (MIME, Größe, Erweiterung), Bilder (Abmessungen, Format), Tokens.
Alle Datenbankinteraktionen verwenden ausschließlich vorbereitete Anweisungen. Die direkte Parameterverkettung ist durch die SQL-Abstraktionsschicht strukturell untersagt.
Rechteverwaltung
Das System implementiert eine Rechtehierarchie, die sowohl global als auch pro Plugin konfigurierbar ist:
OVERMIND → ADMIN → MODERATOR → HIGHUSER → USER
Jedes Plugin kann seine eigenen Zugriffsschwellen definieren. Ein Statistik-Plugin kann auf Administratoren beschränkt sein, während ein Forum für registrierte Benutzer offen sein kann. Die Granularität reicht bis auf einzelne Aktionen innerhalb eines einzelnen Plugins.
BASE_LEVEL_*, PLUGIN_LEVEL_*). Numerische Werte werden in der Geschäftslogik niemals fest kodiert.
Plugin-Struktur
Plugin-Katalog
Bildergalerien und technische Dokumentation (.md) für registrierte Benutzer verfügbar.