Salut, @pfaffman, joyeuses fêtes et merci pour ta réponse !
J’ai essayé de créer un organigramme pour clarifier :
flowchart TB
A0(L'utilisateur tente de créer un nouveau sujet dans la catégorie A ou B) -- --> A1{L'utilisateur fait-il partie d'un groupe exempt ?<br/>Admin, Mod, TL3, TL4, Abonnés ?}
A1 -- Non --> B1(Vérifier le dernier sujet de l'utilisateur dans les catégories A, B ou C,<br/>y compris les enregistrements masqués ou supprimés)
A1 -- Oui --> Z1(Autoriser la publication)
B1 --> B2{Ce dernier sujet a-t-il été créé il y a moins de 14 jours ?}
B2 -- Oui --> C1(Bloquer la publication + afficher une erreur,<br/>afficher le délai de récupération,<br/>lien vers les règles)
C1 --> E1(Sauvegarder le brouillon +<br/>désactiver le bouton de soumission) ---> Fin(Fin)
B2 -- Non --> D1(Autoriser la publication)
D1 --> Fin(Fin)
Z1 --> Fin(End)
Et j'ai aussi essayé de créer une spécification simple pour aider à clarifier
```mermaid
flowchart TB
A0(L'utilisateur tente de créer un nouveau sujet dans la catégorie A ou B) -- --> A1{L'utilisateur fait-il partie d'un groupe exempt ?<br/>Admin, Mod, TL3, TL4, Abonnés ?}
A1 -- Non --> B1(Vérifier le dernier sujet de l'utilisateur dans les catégories A, B ou C,<br/>y compris les enregistrements masqués ou supprimés)
A1 -- Oui --> Z1(Autoriser la publication)
B1 --> B2{Ce dernier sujet a-t-il été créé il y a moins de 14 jours ?}
B2 -- Oui --> C1(Bloquer la publication + afficher une erreur,<br/>afficher le délai de récupération,<br/>lien vers les règles)
C1 --> E1(Sauvegarder le brouillon +<br/>désactiver le bouton de soumission) ---> Fin(Fin)
B2 -- Non --> D1(Autoriser la publication)
D1 --> Fin(Fin)
Z1 --> Fin(End)
Explication du flux
-
A0 : Un utilisateur tente de créer un nouveau sujet dans la catégorie A ou B.
-
A1 : Le système vérifie si l’utilisateur appartient à un groupe exempt :
- Administrateurs
- Modérateurs
- Niveau de confiance 3 (TL3)
- Niveau de confiance 4 (TL4)
- Un groupe personnalisé “Abonnés”
- Si Oui, ignorer la vérification du délai de récupération et autoriser immédiatement la publication (Z1).
- Si Non, passer à B1.
-
B1 : Le système récupère le dernier sujet créé par l’utilisateur dans les catégories A, B ou C. Cette recherche doit inclure :
- Les sujets supprimés logiquement (pas définitivement retirés de la base de données).
- Les sujets déplacés vers des catégories masquées ou de conformité (par exemple, Catégorie C).
-
B2 : Le système vérifie si la date de création du dernier sujet est inférieure à 14 jours.
- Oui → Continuer vers C1 (la publication est bloquée).
- Non → Passer à D1 (autoriser la publication).
-
C1 : Le système affiche un message d’erreur informant l’utilisateur qu’il est toujours sous délai de récupération. Le message doit inclure :
- Une déclaration simplifiée indiquant qu’il ne peut pas encore publier.
- Le temps restant en jours et heures (pas de minutes).
- Un lien vers la page des règles de la communauté (fournie ci-dessous).
-
E1 : Après l’affichage de l’erreur, le contenu de l’utilisateur est automatiquement enregistré comme brouillon, et le bouton “Soumettre” ou “Créer un sujet” est désactivé.
-
D1 : Si plus de 14 jours se sont écoulés depuis le dernier sujet de l’utilisateur, le système autorise la publication du nouveau sujet.
-
Z1 : L’utilisateur fait partie d’un groupe exempt, il peut donc publier sans restriction.
2. Spécification détaillée
2.1 Groupes restreints vs. exempts
- Groupes restreints :
- Tous les utilisateurs ne faisant pas partie des groupes exempts suivants (généralement TL0, TL1, TL2).
- Groupes exempts :
- Administrateurs
- Modérateurs
- Niveau de confiance 3 (TL3)
- Niveau de confiance 4 (TL4)
- Abonnés (un groupe personnalisé)
Ces groupes exempts sautent complètement la vérification des 14 jours.
2.2 Catégories concernées
- Tentative de nouveau sujet :
- Déclenché lorsqu’un utilisateur (dans un groupe restreint) tente de créer un nouveau sujet dans la catégorie A ou B.
- Vérification du dernier sujet :
- Le système vérifie le dernier sujet créé par l’utilisateur dans les catégories A, B ou C (où C est la catégorie “masquée” ou “de conformité”).
Note : La catégorie C est incluse pour capturer les situations où le sujet d’un utilisateur est déplacé pour suppression/masquage/conformité. Si l’utilisateur a créé un sujet dans la catégorie C dans les 14 derniers jours, cela compte également pour le délai de récupération.
2.3 Logique de délai de récupération de 14 jours
- Si le sujet le plus récent de l’utilisateur (dans A/B/C) a été créé il y a moins de 14 jours, bloquer la création d’un nouveau sujet dans A ou B.
- Si plus de 14 jours se sont écoulés, l’autoriser.
Calcul du temps
- Afficher le temps restant en jours et heures (par exemple, “3 jours 12 heures restantes”).
- Pas besoin d’afficher les minutes ou les secondes.
2.4 Blocage et sauvegarde de brouillon
- Comportement de blocage :
- Lorsque l’utilisateur est bloqué, afficher un message d’erreur (C1).
- Le système enregistre automatiquement le contenu de l’utilisateur comme brouillon.
- Le bouton “Soumettre” devient désactivé afin que l’utilisateur ne puisse pas continuer.
- Exemple de message d’erreur (simplifié) :
Désolé, vous ne pouvez pas encore créer de nouveau sujet dans cette catégorie.
Votre dernier sujet a été publié il y a moins de 14 jours,
et il vous reste {X jours et Y heures} avant de pouvoir publier à nouveau.
Pour plus de détails, consultez nos règles communautaires :
https://community.lezismore.org/t/topic/26/2
2.5 Flexibilité future
-
Catégories supplémentaires :
- Actuellement, seules les catégories A, B et C sont configurées.
- Si vous avez besoin d’ajouter ou de supprimer des catégories de ce délai de récupération à l’avenir, assurez-vous que le système ou le plugin peut être étendu sans modifications majeures du code.
-
Périodes de temps différentes :
- La période de 14 jours pourrait être configurable dans les paramètres du plugin (au cas où vous voudriez 7 jours, 30 jours, etc.).
-
Attributions de groupes dynamiques :
- Des groupes exempts supplémentaires ou moins nombreux (par exemple, si vous ajoutez “Abonnés” ou le supprimez) devraient être pris en charge.
3. Résumé
- Les groupes restreints (TL0, TL1, TL2, ou tout utilisateur n’appartenant pas à un groupe exempt) sont soumis à un délai de récupération de 14 jours avant de créer un autre sujet dans les catégories A ou B.
- Les groupes exempts (Admin, Modérateur, TL3, TL4, “Abonnés”) peuvent publier sans restriction.
- Le système vérifie la création du sujet le plus récent dans les catégories A, B ou C (y compris les sujets supprimés logiquement ou masqués). S’il a été créé il y a moins de 14 jours, le nouveau sujet est bloqué.
- Message d’erreur : Affiche le temps restant en jours/heures et renvoie aux règles de la communauté à l’adresse :
- Brouillon : Lorsqu’il est bloqué, la publication de l’utilisateur est enregistrée comme brouillon et le bouton de soumission est désactivé.
- Cette spécification peut être étendue à des catégories supplémentaires ou à des périodes différentes à l’avenir.
J’apprécierais toute suggestion !