Premier cycle du fork : modernisation du socle, durcissement de la sécurité et large vague de fonctionnalités.
Ajouté
Plateforme & outillage
- Migrations de base de données numérotées (
tools/migrate.php, avec une commandebaselinepour reprendre une base existante) et premiers tests automatisés (PHPUnit). - Nouvel installeur web, qui remplace celui de NeoFrag d'origine : un assistant en cinq étapes (Prérequis → Base de données → Modules → Administrateur → Terminé). L'étape « Modules » propose trois profils de site (Communauté, Gaming / eSport, Site simple) et peut ajouter des addons depuis le marketplace.
- Marketplace distant (catalogue et archives servis par neofrag-reborn.xyz) : l'installeur (étape « Modules ») et l'administration (bouton « Marketplace » de la page Thèmes & Addons) y ajoutent en un clic les addons du catalogue officiel qui ne sont pas livrés avec le site. Sécurité : HTTPS obligatoire, empreinte SHA-256 vérifiée, archive contrôlée entrée par entrée (aucun chemin qui sorte du dossier de l'addon, aucun lien symbolique), adresse du catalogue fixe, tailles et délais bornés.
- Outils de fabrication des paquets :
package-addonsprépare le catalogue du marketplace,build-releaseles archives à déposer par FTP. - Script de maintenance (
tools/maintenance.php, à lancer par une tâche planifiée) : vide la corbeille de ce qui y dort depuis plus de 30 jours (réglable) et supprime les comptes jamais confirmés au bout de 7 jours, quand la validation des inscriptions est activée — jamais un administrateur.
Thèmes & interface
- Quatre thèmes créés pour NeoFrag Reborn : Nebula, pensé pour les sites de communauté, Forge, Blockcraft et
Granite. Des variables de couleur communes (
--nf-*) habillent modules et widgets aux couleurs de chaque thème. - Refonte complète de l'administration : nouvelle présentation, barre latérale, palette de commandes (Ctrl+K), modes clair et sombre.
- Sélecteurs de thème et de langue en pied de page (visiteurs inclus).
- Menus : constructeur de menus à plusieurs niveaux, utilisable dans le widget Navigation (option « Menu géré »).
Contenu
- Actualités et articles : publication programmée — le contenu paraît à l'heure choisie, et les notifications, webhooks et points ne partent qu'à ce moment-là, plus à l'enregistrement (adresse à appeler par une tâche planifiée, protégée par une clé) ; actions groupées ; recherche, filtres et pagination dans l'administration ; une page dédiée pour lire une actualité. Les articles reçoivent une image à la une, comme les actualités, et le compteur de vues des actualités, qui n'augmentait jamais, compte enfin.
- Publication programmée aussi sur pages, galeries et événements (date de parution distincte de la date de tenue pour les événements).
- Wiki : sert de documentation sur le site (sommaire en cartes, rendu Markdown fiable) ; recherche et pagination ; comparaison visuelle de deux révisions d'une page, ligne à ligne.
- Médias : titre et description modifiables pour chaque fichier, recherche, filtre par type et pagination. Recherche, filtres et pagination aussi dans l'administration des Téléchargements, de l'Annuaire de liens, de la FAQ, des Sondages et du Livre d'or.
- Flux RSS 2.0 (news + articles), boutons de partage social, SEO (meta description, canonical, Open Graph, Twitter Card, meta par page).
Communauté & engagement
- Centre de notifications sur le site (cloche et nombre de non-lues), avec abonnements (suivre un contenu ou une catégorie). Elles signalent les commentaires, les réponses du forum, les mentions @pseudo, les messages privés et les invitations à un événement.
- Réactions « j'aime » sur les actualités, articles, commentaires et messages du forum ; révisions des contenus (historique et restauration) ; widget « Derniers commentaires ».
- Corbeille commune : actualités, articles, galeries, commentaires et messages du forum supprimés y passent, et peuvent en être restaurés.
- Forum : catégorie réservée aux membres VIP, image par catégorie.
Gaming
- Événements : gestion complète des adversaires (liste, modification, suppression ; NeoFrag d'origine permettait seulement d'en ajouter depuis un match), compte à rebours en direct, notification d'invitation.
Monétisation & gamification
- Karma/réputation → points (barème configurable) → boutique (paiement en points) → statut VIP.
- Stripe (achat de points et de formules VIP), régie publicitaire (masquée pour les membres VIP), dons (module et widget portés du « Donation v3 » de HiddenBlob, d'après majiid ; LGPLv3).
Liens entre modules
- Statistiques étendues à 19 modules (NeoFrag d'origine en couvrait 3 : commentaires, forum, membres) ; mur
d'activité sur le profil, qui rassemble l'activité d'un membre dans tous les modules ; tableau de bord
« À traiter » dans l'administration ; blocs de page : le code court
[block:…]insère dans une page un bloc d'un module (actualités, articles, téléchargements).
Webhooks & audit
- Webhooks sortants signés (HMAC), gérés depuis l'administration. Le journal d'audit enregistre aussi l'installation et la désinstallation d'un addon, l'activation d'un thème ou d'un module et l'enregistrement des réglages.
Administration des comptes
- Membres : export des membres en CSV ou JSON (RGPD) ; les modérateurs qui en ont le droit règlent la modération depuis leur espace membre. La modification et la suppression d'un membre depuis l'administration, déjà présentes dans NeoFrag d'origine, sont rebranchées sur la nouvelle liste des membres.
Modifié
- Versionnage normalisé en SemVer pur dans les dépendances d'addons (retrait des libellés « Alpha »).
- Pages fait désormais partie du cœur ; Actualités, Forum et Galeries peuvent être désinstallés.
- Éditeur de texte riche : il fonctionne enfin — le HTML qu'il produit est nettoyé au lieu d'être affiché comme du texte.
Retiré
- Les deux thèmes de NeoFrag d'origine, « Thème par défaut » (
default) et Azuro, remplacés par les thèmes de NeoFrag Reborn. - L'éditeur BBCode de NeoFrag d'origine (WysiBB) et la conversion du BBCode : l'éditeur de texte riche le remplace, et un texte écrit en BBCode s'affiche désormais tel quel.
Corrigé
- Dix défauts corrigés, dont : les événements sans participant ni match n'apparaissaient pas ; modifier ou supprimer un mode de jeu échouait ; supprimer une offre de recrutement échouait ; le lien vers un partenaire menait à une page introuvable (il mène à son site) ; l'auteur d'un signalement n'était jamais montré, même aux modérateurs autorisés ; les widgets Galeries et Forum vérifiaient mal leurs réglages ou les droits. Les compteurs de vues ne comptent plus qu'une fois par visite et ignorent les robots.
- Un contenu programmé n'est plus visible par son adresse directe avant l'heure. Des boutons sans effet fonctionnent : périodes des statistiques, activation des modèles d'e-mail, réseaux sociaux (les six s'affichent), boutons « Ajouter » des actualités, pages et galeries.
- Thèmes : contrastes des boutons relevés au niveau WCAG AA, champs de connexion soudés à leur icône, alignements corrigés.
- Affichage sur petits et grands écrans (vérifié de 390 à 2 560 pixels de large) : dans l'administration, menu latéral en tiroir et contenu en pleine largeur sur téléphone ; profil membre ; barre du compte compacte dans Nebula, Forge, Blockcraft et Granite.
- Les pages Membres, Statistiques et Live Editor de l'administration affichaient une erreur 500 ; des compteurs
restaient bloqués à 1 (pastille de modération, abonnés de la newsletter, statistiques des médias), et une catégorie
vide de Téléchargements, de FAQ ou de liens ne pouvait pas être supprimée. (Pour les développeurs : erreurs de typage
strict dans
timetostr()et les helpers ;(int)surrow(FALSE)d'unCOUNT/SUMvalait toujours 1.)
Sécurité
- Le HTML envoyé par les membres est nettoyé côté serveur (HTMLPurifier) contre l'injection de code ; un fichier envoyé est vérifié d'après son contenu réel, pas seulement son extension ; HSTS activé (le navigateur ne revient plus en HTTP).
- Jetons anti-CSRF comparés en temps constant. Adresse IP : la limitation de débit et la liste des IP bannies ne
croient plus les en-têtes falsifiables (
X-Forwarded-For…), sauf proxy de confiance déclaré. Droits : contrôles de permission ajoutés là où ils manquaient (Livre d'or, Jeux, Galeries, Événements, Statistiques). - Les anciens scripts de mise à jour ne peuvent plus recréer n'importe quel objet PHP en relisant des réglages
(
unserializelimité parallowed_classes). - Empreinte de session contre le vol de session : un membre connecté est déconnecté si son navigateur (user-agent) change nettement en cours de session — une simple mise à jour du navigateur ne suffit pas. L'adresse de parution programmée est protégée par une clé comparée en temps constant.