Ciao, @pfaffman, buone feste e grazie per la risposta!
Ho provato a creare un diagramma di flusso per chiarire:
flowchart TB
A0(L'utente tenta di creare un nuovo argomento nella Categoria A o B) --> A1{L'utente fa parte di un gruppo esente<br>- Admin, Mod, TL3, TL4, Iscritti?}
A1 -- No --> B1(Controlla l'ultimo argomento dell'utente nelle Categorie A, B o C,<br>inclusi record nascosti o eliminati)
A1 -- Sì --> Z1(Consenti la pubblicazione)
B1 --> B2{L'ultimo argomento è stato<br>creato entro 14 giorni?}
B2 -- Sì --> C1(Blocca post + mostra errore,<br>visualizza cooldown,<br>link alle regole)
C1 --> E1(Salva bozza +<br>disabilita pulsante invio) ---> End(Fine)
B2 -- No --> D1(Consenti post)
D1 --> End(Fine)
Z1 --> End(Fine)
E ho anche provato a creare una semplice specifica per aiutare a chiarire
```mermaid
flowchart TB
A0(L'utente tenta di creare un nuovo argomento nella Categoria A o B) --> A1{L'utente fa parte di un gruppo esente<br>- Admin, Mod, TL3, TL4, Iscritti?}
A1 -- No --> B1(Controlla l'ultimo argomento dell'utente nelle Categorie A, B o C,<br>inclusi record nascosti o eliminati)
A1 -- Sì --> Z1(Consenti la pubblicazione)
B1 --> B2{L'ultimo argomento è stato<br>creato entro 14 giorni?}
B2 -- Sì --> C1(Blocca post + mostra errore,<br>visualizza cooldown,<br>link alle regole)
C1 --> E1(Salva bozza +<br>disabilita pulsante invio) ---> End(Fine)
B2 -- No --> D1(Consenti post)
D1 --> End(Fine)
Z1 --> End(Fine)
Spiegazione del Flusso
-
A0: Un utente tenta di creare un nuovo argomento nella Categoria A o B.
-
A1: Il sistema verifica se l’utente appartiene a un gruppo esente:
• Amministratori
• Moderatori
• Livello di Fiducia 3 (TL3)
• Livello di Fiducia 4 (TL4)
• Un gruppo personalizzato “Iscritti”
• Se Sì, salta il controllo del cooldown e consenti immediatamente la pubblicazione (Z1).
• Se No, procedi a B1.
-
B1: Il sistema recupera l’ultimo argomento creato dall’utente nelle Categorie A, B o C. Questa ricerca deve includere:
• Argomenti eliminati in modo “soft” (non rimossi permanentemente dal database).
• Argomenti spostati in categorie nascoste o di conformità (ad es. Categoria C).
-
B2: Il sistema verifica se la data di creazione dell’ultimo argomento rientra negli ultimi 14 giorni.
• Sì → Continua a C1 (il post viene bloccato).
• No → Procedi a D1 (consenti il post).
-
C1: Il sistema mostra un messaggio di errore che informa l’utente che è ancora in cooldown. Il messaggio dovrebbe includere:
• Un’affermazione semplificata che non può ancora pubblicare.
• Il tempo rimanente in giorni e ore (nessun minuto).
• Un link alla pagina delle regole della community (fornita di seguito).
-
E1: Dopo aver mostrato l’errore, il contenuto dell’utente viene salvato automaticamente come bozza e il pulsante “Invia” o “Crea Argomento” viene disabilitato.
-
D1: Se sono trascorsi più di 14 giorni dall’ultimo argomento dell’utente, il sistema consente la pubblicazione del nuovo argomento.
-
Z1: L’utente fa parte di un gruppo esente, quindi può pubblicare senza restrizioni.
2. Specifica Dettagliata
2.1 Gruppi Ristretti vs. Gruppi Esenti
• Gruppi Ristretti:
• Tutti gli utenti non appartenenti ai seguenti gruppi esenti (comunemente TL0, TL1, TL2).
• Gruppi Esenti:
- Amministratori
- Moderatori
- Livello di Fiducia 3 (TL3)
- Livello di Fiducia 4 (TL4)
- Iscritti (un gruppo personalizzato)
Questi gruppi esenti saltano del tutto il controllo dei 14 giorni.
2.2 Categorie Coinvolte
• Tentativo di Nuovo Argomento:
• Attivato quando un utente (in un gruppo ristretto) tenta di creare un nuovo argomento nella Categoria A o B.
• Controllo Ultimo Argomento:
• Il sistema controlla l’ultimo argomento creato dall’utente nelle Categorie A, B o C (dove C è la categoria “nascosta” o di “conformità”).
Nota: La Categoria C è inclusa per catturare situazioni in cui l’argomento di un utente viene spostato per eliminazione/nascondimento/conformità. Se l’utente ha creato un argomento nella Categoria C negli ultimi 14 giorni, conta anche per il cooldown.
2.3 Logica del Cooldown di 14 Giorni
• Se l’argomento più recente dell’utente (in A/B/C) è stato creato entro 14 giorni, blocca la creazione di nuovi argomenti in A o B.
• Se sono trascorsi più di 14 giorni, consentila.
Calcolo del Tempo
• Visualizza il tempo rimanente in giorni e ore (ad es. “3 giorni e 12 ore rimanenti”).
• Non è necessario mostrare minuti o secondi.
2.4 Blocco e Salvataggio Bozze
• Comportamento di Blocco:
• Quando l’utente viene bloccato, mostra un messaggio di errore (C1).
• Il sistema salva automaticamente il contenuto dell’utente come bozza.
• Il pulsante “Invia” diventa disabilitato in modo che l’utente non possa procedere.
• Messaggio di Errore di Esempio (semplificato):
Mi dispiace, non puoi ancora creare un nuovo argomento in questa categoria.
Il tuo ultimo argomento è stato pubblicato meno di 14 giorni fa,
e ti rimangono {X giorni e Y ore} prima di poter pubblicare di nuovo.
Per maggiori dettagli, consulta le nostre regole della community:
https://community.lezismore.org/t/topic/26/2
2.5 Flessibilità Futura
-
Categorie Aggiuntive:
• Attualmente sono configurate solo A, B e C.
• Se è necessario aggiungere o rimuovere categorie da questo cooldown in futuro, assicurarsi che il sistema o il plugin possano essere estesi senza modifiche significative al codice.
-
Periodi di Tempo Diversi:
• Il periodo di 14 giorni potrebbe essere configurabile nelle impostazioni del plugin (nel caso in cui si desiderino 7 giorni, 30 giorni, ecc.).
-
Assegnazioni Dinamiche di Gruppi:
• Dovrebbero essere supportati gruppi aggiuntivi o meno (ad es. se si aggiungono “Iscritti” o li si rimuovono).
3. Riepilogo
-
Gruppi Ristretti (TL0, TL1, TL2, o qualsiasi utente non in un gruppo esente) sono soggetti a un cooldown di 14 giorni prima di creare un altro argomento nelle Categorie A o B.
-
Gruppi Esenti (Admin, Moderatore, TL3, TL4, “Iscritti”) possono pubblicare senza restrizioni.
-
Il sistema controlla la creazione dell’argomento più recente nelle Categorie A, B o C (inclusi quelli eliminati in modo “soft” o nascosti). Se è stato creato entro 14 giorni, il nuovo argomento viene bloccato.
-
Messaggio di Errore: Visualizza il tempo rimanente in giorni/ore e link alle regole della community su:
• https://community.lezismore.org/t/topic/26/2
-
Bozza: Quando bloccato, il post dell’utente viene salvato come bozza e il pulsante di invio viene disabilitato.
-
Questa specifica può essere estesa a categorie aggiuntive o a periodi di tempo diversi in futuro.
Apprezzerei qualsiasi suggerimento!