Primeiro ciclo do fork: modernização da base, reforço da segurança e uma ampla vaga de novas funcionalidades.
Adicionado
Plataforma e ferramentas
- Migrações de base de dados numeradas (
tools/migrate.php, com um comandobaselinepara retomar uma base de dados existente) e primeiros testes automatizados (PHPUnit). - Novo instalador web, que substitui o do NeoFrag original: um assistente em cinco passos (Requisitos → Base de dados → Módulos → Administrador → Concluído). O passo «Módulos» propunha três perfis de site (Comunidade, Gaming / eSports, Site simples) e podia acrescentar addons a partir do marketplace.
- Marketplace remoto (catálogo e arquivos servidos por neofrag-reborn.xyz): o instalador (passo «Módulos») e a administração (botão «Marketplace» da página Temas & Addons) acrescentam com um clique os addons do catálogo oficial que não vêm com o site. Segurança: HTTPS obrigatório, impressão SHA-256 verificada, arquivo controlado entrada a entrada (nenhum caminho que saia da pasta do addon, nenhuma ligação simbólica), endereço do catálogo fixo, tamanhos e tempos limite delimitados.
- Ferramentas de construção dos pacotes:
package-addonsprepara o catálogo do marketplace,build-releaseos arquivos a enviar por FTP. - Script de manutenção (
tools/maintenance.php, a lançar por uma tarefa agendada): esvazia a reciclagem do que lá está há mais de 30 dias (ajustável) e elimina as contas nunca confirmadas ao fim de 7 dias, quando a validação das inscrições está ativada — nunca um administrador.
Temas e interface
- Quatro temas criados para o NeoFrag Reborn: Nebula, pensado para os sites de comunidade, Forge, Blockcraft e
Granite. Variáveis de cor comuns (
--nf-*) vestem módulos e widgets com as cores de cada tema. - Redesenho completo da administração: novo aspeto, barra lateral, paleta de comandos (Ctrl+K), modos claro e escuro.
- Seletores de tema e de idioma no rodapé (visitantes incluídos).
- Menus: construtor de menus com vários níveis, utilizável no widget Navegação (opção «Menu gerido»).
Conteúdo
- Notícias e artigos: publicação agendada — o conteúdo aparece à hora escolhida, e as notificações, webhooks e pontos só partem nesse momento, já não ao guardar (um endereço a chamar por uma tarefa agendada, protegido por uma chave); ações em lote; pesquisa, filtros e paginação na administração; uma página própria para ler uma notícia. Os artigos recebem uma imagem de destaque, como as notícias já tinham, e o contador de visualizações das notícias, que nunca subia, conta finalmente.
- Publicação agendada também nas páginas, galerias e eventos (data de publicação distinta da data em que o evento se realiza, para os eventos).
- Wiki: serve de documentação no site (índice em cartões, apresentação Markdown fiável); pesquisa e paginação; comparação visual de duas revisões de uma página, linha a linha.
- Multimédia: título e descrição editáveis para cada ficheiro, pesquisa, filtro por tipo e paginação. Pesquisa, filtros e paginação também na administração das Transferências, do Diretório de ligações, da FAQ, das Sondagens e do Livro de visitas.
- Feed RSS 2.0 (notícias + artigos), botões de partilha nas redes sociais, SEO (meta description, canonical, Open Graph, Twitter Card, meta por página).
Comunidade e envolvimento
- Centro de notificações no site (sino e número de não lidas), com subscrições (seguir um conteúdo ou uma categoria). As notificações assinalam os comentários, as respostas do fórum, as menções @utilizador, as mensagens privadas e os convites para um evento.
- Reações «gosto» nas notícias, artigos, comentários e mensagens do fórum; revisões dos conteúdos (histórico e restauro); widget «Últimos comentários».
- Reciclagem comum: as notícias, artigos, galerias, comentários e mensagens do fórum eliminados passam por lá, e podem ser restaurados.
- Fórum: categoria reservada aos membros VIP, imagem por categoria.
Gaming
- Eventos: gestão completa dos adversários (lista, edição, eliminação; o NeoFrag original só permitia acrescentar um a partir de um jogo), contagem decrescente ao vivo, notificação de convite.
Monetização e gamificação
- Karma/reputação → pontos (escala configurável) → loja (pagamento em pontos) → estatuto VIP.
- Stripe (compra de pontos e de pacotes VIP), gestão de publicidade (escondida para os membros VIP), donativos (módulo e widget portados do «Donation v3» da HiddenBlob, a partir de majiid; LGPLv3).
Ligações entre módulos
- Estatísticas alargadas a 19 módulos (o NeoFrag original cobria 3: comentários, fórum, membros); mural de
atividade no perfil, que reúne a atividade de um membro em todos os módulos; painel «Por tratar» na
administração; blocos de página: o código curto
[block:…]insere numa página um bloco de um módulo (notícias, artigos, transferências).
Webhooks e auditoria
- Webhooks de saída assinados (HMAC), geridos a partir da administração. O registo de auditoria regista também a instalação e desinstalação de um addon, a ativação de um tema ou de um módulo e a gravação das definições.
Administração das contas
- Membros: exportação dos membros em CSV ou JSON (RGPD); os moderadores com essa permissão ajustam a moderação a partir da sua área de membro. A edição e a eliminação de um membro a partir da administração, já presentes no NeoFrag original, voltam a estar ligadas à nova lista de membros.
Alterado
- Versionamento normalizado em SemVer puro nas dependências dos addons (retirada das etiquetas «Alpha»).
- Páginas faz agora parte do núcleo; Notícias, Fórum e Galerias podem ser desinstalados.
- Editor de texto rico: funciona finalmente — o HTML que produz é limpo em vez de ser mostrado como texto.
Removido
- Os dois temas do NeoFrag original, «Thème par défaut» (
default) e Azuro, substituídos pelos temas do NeoFrag Reborn. - O editor BBCode do NeoFrag original (WysiBB) e a conversão do BBCode: o editor de texto rico substitui-o, e um texto escrito em BBCode é agora mostrado tal como está.
Corrigido
- Dez defeitos corrigidos, entre eles: os eventos sem participantes nem jogo não apareciam; editar ou eliminar um modo de jogo falhava; eliminar uma oferta de recrutamento falhava; a ligação para um parceiro levava a uma página não encontrada (leva agora ao seu site); o autor de uma denúncia nunca era mostrado, nem sequer aos moderadores autorizados; os widgets Galerias e Fórum verificavam mal as suas definições ou as permissões. Os contadores de visualizações só contam agora uma vez por visita e ignoram os robôs.
- Um conteúdo agendado já não é visível pelo seu endereço direto antes da hora. Botões que não faziam nada funcionam agora: períodos das estatísticas, ativação dos modelos de e-mail, redes sociais (as seis são mostradas), botões «Adicionar» das notícias, páginas e galerias.
- Temas: contraste dos botões elevado ao nível WCAG AA, campos de início de sessão unidos ao seu ícone, alinhamentos corrigidos.
- Ecrãs pequenos e grandes (verificado de 390 a 2560 píxeis de largura): na administração, menu lateral deslizante e conteúdo em toda a largura no telemóvel; perfil de membro; barra da conta compacta no Nebula, Forge, Blockcraft e Granite.
- As páginas Membros, Estatísticas e Editor ao vivo da administração mostravam um erro 500; alguns contadores ficavam
bloqueados em 1 (distintivo da moderação, subscritores da newsletter, estatísticas da multimédia), e uma categoria
vazia de Transferências, FAQ ou ligações não podia ser eliminada. (Para os programadores: erros de tipagem estrita em
timetostr()e nos helpers;(int)sobrerow(FALSE)de umCOUNT/SUMvalia sempre 1.)
Segurança
- O HTML enviado pelos membros é limpo do lado do servidor (HTMLPurifier) contra a injeção de código; um ficheiro enviado é verificado pelo seu conteúdo real, não só pela sua extensão; HSTS ativado (os navegadores já não recuam para HTTP).
- Tokens anti-CSRF comparados em tempo constante. Endereço IP: a limitação de frequência e a lista de IP
banidos já não confiam em cabeçalhos falsificáveis (
X-Forwarded-For…), a não ser que esteja declarado um proxy de confiança. Permissões: verificações de permissões acrescentadas onde faltavam (Livro de visitas, Jogos, Galerias, Eventos, Estatísticas). - Os antigos scripts de atualização já não podem recriar objetos PHP arbitrários ao reler as definições
(
unserializelimitado porallowed_classes). - Impressão digital da sessão contra o roubo de sessão: um membro com sessão iniciada é desligado se o seu navegador (user-agent) mudar de forma marcada durante a sessão — uma simples atualização do navegador não basta para isso. O endereço da publicação agendada está protegido por uma chave comparada em tempo constante.