Primer ciclo del fork: modernización de la base, refuerzo de la seguridad y una amplia ola de nuevas funciones.
Añadido
Plataforma y herramientas
- Migraciones de base de datos numeradas (
tools/migrate.php, con un comandobaselinepara retomar una base de datos existente) y primeras pruebas automatizadas (PHPUnit). - Nuevo instalador web, que sustituye al del NeoFrag original: un asistente en cinco pasos (Requisitos → Base de datos → Módulos → Administrador → Terminado). El paso «Módulos» proponía tres perfiles de sitio (Comunidad, Gaming / eSports, Sitio sencillo) y podía añadir addons desde el marketplace.
- Marketplace remoto (catálogo y archivos servidos por neofrag-reborn.xyz): el instalador (paso «Módulos») y la administración (botón «Marketplace» de la página Temas & Addons) añaden con un clic los addons del catálogo oficial que no vienen con el sitio. Seguridad: HTTPS obligatorio, huella SHA-256 verificada, archivo comprobado entrada por entrada (ninguna ruta que salga de la carpeta del addon, ningún enlace simbólico), dirección del catálogo fija, tamaños y tiempos de espera limitados.
- Herramientas para fabricar los paquetes:
package-addonsprepara el catálogo del marketplace,build-releaselos archivos que se suben por FTP. - Script de mantenimiento (
tools/maintenance.php, para lanzar con una tarea programada): vacía la papelera de lo que lleva en ella más de 30 días (ajustable) y elimina las cuentas nunca confirmadas al cabo de 7 días, cuando la validación de los registros está activada — nunca un administrador.
Temas e interfaz
- Cuatro temas creados para NeoFrag Reborn: Nebula, pensado para los sitios de comunidad, Forge, Blockcraft y
Granite. Unas variables de color comunes (
--nf-*) visten módulos y widgets con los colores de cada tema. - Rediseño completo de la administración: nueva presentación, barra lateral, paleta de comandos (Ctrl+K), modos claro y oscuro.
- Selectores de tema y de idioma en el pie de página (visitantes incluidos).
- Menús: constructor de menús de varios niveles, utilizable en el widget Navegación (opción «Menú gestionado»).
Contenido
- Noticias y artículos: publicación programada — el contenido aparece a la hora elegida, y las notificaciones, webhooks y puntos solo salen en ese momento, ya no al guardar (una dirección a la que llama una tarea programada, protegida por una clave); acciones en lote; búsqueda, filtros y paginación en la administración; una página propia para leer una noticia. Los artículos reciben una imagen destacada, como ya tenían las noticias, y el contador de visitas de las noticias, que nunca subía, por fin cuenta.
- Publicación programada también en páginas, galerías y eventos (fecha de publicación distinta de la fecha en que se celebra, para los eventos).
- Wiki: sirve de documentación en el sitio (índice en tarjetas, renderizado Markdown fiable); búsqueda y paginación; comparación visual de dos revisiones de una página, línea por línea.
- Medios: título y descripción editables para cada archivo, búsqueda, filtro por tipo y paginación. Búsqueda, filtros y paginación también en la administración de Descargas, el Directorio de enlaces, FAQ, Encuestas y el Libro de visitas.
- Feed RSS 2.0 (noticias + artículos), botones para compartir en redes sociales, SEO (meta description, canonical, Open Graph, Twitter Card, meta por página).
Comunidad y participación
- Centro de notificaciones en el sitio (campana y número de no leídas), con suscripciones (seguir un contenido o una categoría). Avisan de los comentarios, las respuestas del foro, las menciones @usuario, los mensajes privados y las invitaciones a un evento.
- Reacciones «me gusta» en las noticias, artículos, comentarios y mensajes del foro; revisiones de los contenidos (historial y restauración); widget «Últimos comentarios».
- Papelera común: las noticias, artículos, galerías, comentarios y mensajes del foro eliminados pasan por ella, y pueden restaurarse desde ella.
- Foro: categoría reservada a los miembros VIP, imagen por categoría.
Gaming
- Eventos: gestión completa de los adversarios (lista, edición, eliminación; el NeoFrag original solo permitía añadir uno desde un partido), cuenta atrás en directo, notificación de invitación.
Monetización y gamificación
- Karma/reputación → puntos (escala configurable) → tienda (pago en puntos) → estado VIP.
- Stripe (compra de puntos y de paquetes VIP), gestión de publicidad (oculta para los miembros VIP), donaciones (módulo y widget portados del «Donation v3» de HiddenBlob, a partir de majiid; LGPLv3).
Vínculos entre módulos
- Estadísticas ampliadas a 19 módulos (el NeoFrag original cubría 3: comentarios, foro, miembros); muro de
actividad en el perfil, que reúne la actividad de un miembro en todos los módulos; panel «Por gestionar» en la
administración; bloques de página: el código corto
[block:…]inserta en una página un bloque de un módulo (noticias, artículos, descargas).
Webhooks y auditoría
- Webhooks salientes firmados (HMAC), gestionados desde la administración. El registro de auditoría registra también la instalación y desinstalación de un addon, la activación de un tema o de un módulo y el guardado de los ajustes.
Administración de las cuentas
- Miembros: exportación de los miembros en CSV o JSON (RGPD); los moderadores que tienen el permiso ajustan la moderación desde su área de miembro. La edición y la eliminación de un miembro desde la administración, ya presentes en el NeoFrag original, vuelven a estar conectadas a la nueva lista de miembros.
Cambiado
- Versionado normalizado en SemVer puro en las dependencias de los addons (retirada de las etiquetas «Alpha»).
- Páginas forma parte ahora del núcleo; Noticias, Foro y Galerías se pueden desinstalar.
- Editor de texto enriquecido: por fin funciona — el HTML que produce se limpia en lugar de mostrarse como texto.
Eliminado
- Los dos temas del NeoFrag original, «Thème par défaut» (
default) y Azuro, sustituidos por los temas de NeoFrag Reborn. - El editor BBCode del NeoFrag original (WysiBB) y la conversión del BBCode: el editor de texto enriquecido lo sustituye, y un texto escrito en BBCode se muestra ahora tal cual.
Corregido
- Diez defectos corregidos, entre ellos: los eventos sin participantes ni partido no aparecían; editar o eliminar un modo de juego fallaba; eliminar una oferta de reclutamiento fallaba; el enlace a un socio llevaba a una página no encontrada (ahora lleva a su sitio); el autor de una denuncia nunca se mostraba, ni siquiera a los moderadores autorizados; los widgets Galerías y Foro comprobaban mal sus ajustes o los permisos. Los contadores de visitas ya solo cuentan una vez por visita e ignoran a los robots.
- Un contenido programado ya no es visible por su dirección directa antes de su hora. Funcionan botones que no hacían nada: periodos de las estadísticas, activación de las plantillas de correo, redes sociales (se muestran las seis), botones «Añadir» de las noticias, páginas y galerías.
- Temas: contraste de los botones elevado al nivel WCAG AA, campos de inicio de sesión unidos a su icono, alineaciones corregidas.
- Pantallas pequeñas y grandes (comprobado de 390 a 2560 píxeles de ancho): en la administración, menú lateral deslizante y contenido a todo lo ancho en el móvil; perfil de miembro; barra de cuenta compacta en Nebula, Forge, Blockcraft y Granite.
- Las páginas Miembros, Estadísticas y Editor en vivo de la administración mostraban un error 500; algunos contadores
se quedaban bloqueados en 1 (distintivo de moderación, suscriptores de la newsletter, estadísticas de los medios), y
una categoría vacía de Descargas, FAQ o enlaces no se podía eliminar. (Para los desarrolladores: errores de tipado
estricto en
timetostr()y los helpers;(int)sobrerow(FALSE)de unCOUNT/SUMvalía siempre 1.)
Seguridad
- El HTML enviado por los miembros se limpia en el servidor (HTMLPurifier) contra la inyección de código; un archivo subido se comprueba por su contenido real, no solo por su extensión; HSTS activado (los navegadores ya no vuelven a HTTP).
- Tokens anti-CSRF comparados en tiempo constante. Dirección IP: la limitación de frecuencia y la lista de IP
baneadas ya no confían en cabeceras falsificables (
X-Forwarded-For…), salvo si se declara un proxy de confianza. Permisos: comprobaciones de permisos añadidas donde faltaban (Libro de visitas, Juegos, Galerías, Eventos, Estadísticas). - Los antiguos scripts de actualización ya no pueden recrear objetos PHP arbitrarios al releer los ajustes
(
unserializelimitado porallowed_classes). - Huella de sesión contra el robo de sesión: un miembro con la sesión iniciada se desconecta si su navegador (user-agent) cambia notablemente durante la sesión — una simple actualización del navegador no basta para ello. La dirección de la publicación programada está protegida por una clave comparada en tiempo constante.