Arquitetura modular
O BeamReactor assenta numa arquitetura inteiramente modular. Cada funcionalidade está encapsulada num plugin autónomo, que pode ser integrado em qualquer ponto do código ou diretamente nos editores WYSIWYG.
O motor centraliza todas as chamadas: nenhum script PHP pode ser executado sem passar por ele. Esta conceção garante um controlo total sobre os fluxos de entrada/saída e um isolamento estrito entre os componentes.
Carregamento automatizado
Quando um plugin é chamado, o motor trata automaticamente de:
- Carregar a configuração (
conf/plugin.conf.inc.php) - Injetar as bibliotecas (
lib/plugin.lib.inc.php) - Selecionar a locale segundo a língua do utilizador
- Registar as rotas e os handlers
Vários plugins podem coexistir numa mesma página sem colisão. Cada plugin opera no seu próprio espaço de nomes, com os seus próprios recursos CSS e JavaScript.
Filtragem dos dados
Todos os dados que entram ou saem passam pela classe Sanitizer\Parser. O sistema valida cada valor contra tipos estritos:
Tipos primitivos
Bool, Int, Float, String com restrições de comprimento e de formato.
Tipos estruturados
Email, URL, UUID, IP, Date, JSON com validação sintática.
Tipos ricos
HTML (whitelist de etiquetas), Markdown, SQL (apenas consultas preparadas).
Tipos de negócio
Ficheiros (MIME, tamanho, extensão), Imagens (dimensões, formato), Tokens.
As interações com a base de dados usam exclusivamente consultas preparadas. A concatenação direta de parâmetros é estruturalmente proibida pela abstração SQL.
Gestão de privilégios
O sistema implementa uma hierarquia de privilégios configurável globalmente e por plugin:
OVERMIND → ADMIN → MODERATOR → HIGHUSER → USER
Cada plugin pode definir os seus próprios limiares de acesso. Um plugin de estatísticas pode ficar reservado aos administradores, enquanto um fórum estará aberto aos utilizadores registados. A granularidade estende-se até às ações individuais dentro de um mesmo plugin.
BASE_LEVEL_*, PLUGIN_LEVEL_*). Os valores numéricos nunca são escritos em bruto na lógica de negócio.
Estrutura de um plugin
Catálogo de plugins
Galerias de imagens e documentação técnica (.md) disponíveis para os utilizadores registados.