Modular Architecture
BeamReactor is built on a fully modular architecture. Every feature is encapsulated in a self-contained plugin that can be integrated anywhere in the codebase or directly within WYSIWYG editors.
The engine centralises all calls: no PHP script can execute without passing through it. This design ensures complete control over input/output flows and strict isolation between components.
Automated Loading
When a plugin is called, the engine automatically handles:
- Configuration loading (
conf/plugin.conf.inc.php) - Library injection (
lib/plugin.lib.inc.php) - Locale selection based on the user's language
- Route and handler registration
Multiple plugins can coexist on the same page without collision. Each plugin operates within its own namespace, with its own CSS and JavaScript resources.
Data Filtering
All incoming and outgoing data passes through the Sanitizer\Parser class. The system validates every value against strict types:
Primitive Types
Bool, Int, Float, String with length and format constraints.
Structured Types
Email, URL, UUID, IP, Date, JSON with syntax validation.
Rich Types
HTML (tag whitelist), Markdown, SQL (prepared statements only).
Business Types
Files (MIME, size, extension), Images (dimensions, format), Tokens.
All database interactions use prepared statements exclusively. Direct parameter concatenation is structurally forbidden by the SQL abstraction layer.
Privilege Management
The system implements a privilege hierarchy configurable both globally and per plugin:
OVERMIND → ADMIN → MODERATOR → HIGHUSER → USER
Each plugin can define its own access thresholds. A statistics plugin can be restricted to administrators, while a forum may be open to registered users. Granularity extends down to individual actions within a single plugin.
BASE_LEVEL_*, PLUGIN_LEVEL_*). Numeric values are never hardcoded in business logic.
Plugin Structure
Plugin Catalogue
Image galleries and technical documentation (.md) available to registered users.