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.

Os níveis são definidos por constantes (BASE_LEVEL_*, PLUGIN_LEVEL_*). Os valores numéricos nunca são escritos em bruto na lógica de negócio.

Estrutura de um plugin

/plugins/exemplo/ ├── exemplo.php # Interface principal ├── /conf/ │ ├── exemplo.conf.inc.php # Configuração (carregada automaticamente) │ ├── exemplo.moderation.json # Mapeamento para o apagamento ou a anonimização dos dados de utilizador │ └── exemplo.sitemap.json # Mapeamento para o motor de pesquisa ├── /doc/ │ ├── exemplo.md # Documentação técnica │ └── exemplo.help.json # Ajuda contextual ├── /lib/ │ ├── coisa.class.php # Classe carregada pelo autoloader do plugin, se configurado (exemplo.conf.inc.php) │ └── exemplo.lib.inc.php # Biblioteca (carregada automaticamente) ├── /locale/ │ ├── exemplo.en.inc.php # Tradução inglesa │ └── exemplo.fr.inc.php # Tradução francesa ├── /handlers/ │ ├── exemplo.mod.php # Endpoint AJAX principal │ └── exemplo_blabla.mod.php # Endpoint AJAX secundário ├── /css/ │ └── exemplo.css # Estilos específicos ├── /js/ │ └── exemplo.js # Scripts específicos ├── /sql/ │ └── exemplo.sql # Esquema inicial └── /tests/ └── exemplo.test.php # Testes unitários

Catálogo de plugins

Galerias de imagens e documentação técnica (.md) disponíveis para os utilizadores registados.

📦 Catálogo de plugins BeamReactor

110 plugins disponíveis em 10 categorias
📝

Conteúdo

18 plugins

O meu blogue

v2.3.0
* XDP plugin: blogs

O meu calendário

v2.0.0
Calendário pessoal com opção de partilha pública.

Parser CAP

v3.2.1
Monitor de alertas CAP - Multifonte com cache Redis

Editor de conteúdos

v3.4.0
Plugin de gestão de conteúdos - Gestão de artigos e famílias de conteúdos

Editor web

v5.3.0
* BeamReactor Web Page Editor

Editorial

v1.7.0
* XDP plugin: edito (éditorial)

Perguntas frequentes

v4.4.1
* XDP engine faq plugin

Modificar as galerias

v2.4.0
* XDP plugin: gallery_handler

A minha galeria

v1.0.4
Gira a sua galeria pessoal

Ligações

v1.3.0
* XDP web links plugin

Leitor MD

v2.4.0
Suporta a base de conhecimento e a documentação dos plugins

Pesquisa

v1.0.8
* narrowsearch - Moteur de recherche Full-Text (MariaDB NATURAL LANGUAGE MODE)