Hola, @pfaffman, ¡felices fiestas y gracias por responder!
Intenté crear un diagrama de flujo para que quede claro:
flowchart TB
A0(El usuario intenta crear un nuevo tema en la Categoría A o B) --> A1{¿Está el usuario en un grupo exento<br>Administrador, Moderador, TL3, TL4, Suscriptores?}
A1 -- No --> B1(Verificar el último tema del usuario en las Categorías A, B o C,<br>incluyendo registros ocultos o eliminados)
A1 -- Sí --> Z1(Permitir publicación)
B1 --> B2{¿Se creó ese último tema<br>dentro de los 14 días?}
B2 -- Sí --> C1(Bloquear publicación + mostrar error,<br>mostrar tiempo de espera,<br>enlace a las reglas)
C1 --> E1(Guardar borrador +<br>deshabilitar botón de enviar) --> Fin(Fin)
B2 -- No --> D1(Permitir publicación)
D1 --> Fin(Fin)
Z1 --> Fin(Fin)
Y también intenté crear una especificación simple para ayudar a aclarar
```mermaid
flowchart TB
A0(El usuario intenta crear un nuevo tema en la Categoría A o B) --> A1{¿Está el usuario en un grupo exento<br>Administrador, Moderador, TL3, TL4, Suscriptores?}
A1 -- No --> B1(Verificar el último tema del usuario en las Categorías A, B o C,<br>incluyendo registros ocultos o eliminados)
A1 -- Sí --> Z1(Permitir publicación)
B1 --> B2{¿Se creó ese último tema<br>dentro de los 14 días?}
B2 -- Sí --> C1(Bloquear publicación + mostrar error,<br>mostrar tiempo de espera,<br>enlace a las reglas)
C1 --> E1(Guardar borrador +<br>deshabilitar botón de enviar) --> Fin(Fin)
B2 -- No --> D1(Permitir publicación)
D1 --> Fin(Fin)
Z1 --> Fin(Fin)
Explicación del Flujo
-
A0: Un usuario intenta crear un nuevo tema en la Categoría A o B.
-
A1: El sistema verifica si el usuario pertenece a algún grupo exento:
- Administradores
- Moderadores
- Nivel de Confianza 3 (TL3)
- Nivel de Confianza 4 (TL4)
- Un grupo personalizado de “Suscriptores”
- Si Sí, omite la verificación del tiempo de espera y permite la publicación inmediatamente (Z1).
- Si No, procede a B1.
-
B1: El sistema recupera el último tema creado por el usuario en las Categorías A, B o C. Esta búsqueda debe incluir:
- Temas eliminados suavemente (no eliminados permanentemente de la base de datos).
- Temas movidos a categorías ocultas o de cumplimiento (por ejemplo, Categoría C).
-
B2: El sistema verifica si la fecha de creación de ese último tema está dentro de los últimos 14 días.
- Sí → Continúa a C1 (la publicación se bloquea).
- No → Procede a D1 (permite la publicación).
-
C1: El sistema muestra un mensaje de error informando al usuario que todavía está en tiempo de espera. El mensaje debe incluir:
- Una declaración simplificada de que aún no puede publicar.
- El tiempo restante en días y horas (sin minutos).
- Un enlace a la página de reglas de la comunidad (proporcionado a continuación).
-
E1: Después de mostrar el error, el contenido del usuario se guarda automáticamente como borrador y el botón “Enviar” o “Crear Tema” se deshabilita.
-
D1: Si han pasado más de 14 días desde el último tema del usuario, el sistema permite publicar el nuevo tema.
-
Z1: El usuario pertenece a un grupo exento, por lo que puede publicar sin restricciones.
2. Especificación Detallada
2.1 Grupos Restringidos vs. Grupos Exentos
- Grupos Restringidos:
- Cualquier usuario no perteneciente a los siguientes grupos exentos (comúnmente TL0, TL1, TL2).
- Grupos Exentos:
- Administradores
- Moderadores
- Nivel de Confianza 3 (TL3)
- Nivel de Confianza 4 (TL4)
- Suscriptores (un grupo personalizado)
Estos grupos exentos omiten la verificación de 14 días por completo.
2.2 Categorías Incluidas
- Intento de Nuevo Tema:
- Se activa cuando un usuario (en un grupo restringido) intenta crear un nuevo tema en la Categoría A o B.
- Verificación del Último Tema:
- El sistema verifica el último tema creado por el usuario en las Categorías A, B o C (donde C es la categoría “oculta” o de “cumplimiento”).
Nota: La Categoría C se incluye para capturar situaciones en las que el tema de un usuario se mueve para su eliminación/ocultación/cumplimiento. Si el usuario creó un tema en la Categoría C dentro de los últimos 14 días, también cuenta para el tiempo de espera.
2.3 Lógica de Tiempo de Espera de 14 Días
- Si el tema más reciente del usuario (en A/B/C) se creó dentro de los 14 días, bloquea la creación de nuevos temas en A o B.
- Si han pasado más de 14 días, permítelo.
Cálculo del Tiempo
- Muestra el tiempo restante en días y horas (por ejemplo, “faltan 3 días y 12 horas”).
- No es necesario mostrar minutos o segundos.
2.4 Bloqueo y Guardado de Borradores
-
Comportamiento de Bloqueo:
- Cuando el usuario es bloqueado, muestra un mensaje de error (C1).
- El sistema guarda automáticamente el contenido del usuario como un borrador.
- El botón “Enviar” se deshabilita para que el usuario no pueda continuar.
-
Mensaje de Error de Ejemplo (simplificado):
Lo sentimos, aún no puedes crear un nuevo tema en esta categoría.
Tu último tema se publicó hace menos de 14 días,
y te quedan {X días y Y horas} antes de que puedas volver a publicar.
Para más detalles, consulta las reglas de nuestra comunidad:
https://community.lezismore.org/t/topic/26/2
2.5 Flexibilidad Futura
- Categorías Adicionales:
- Actualmente solo están configuradas A, B y C.
- Si necesitas agregar o eliminar categorías de este tiempo de espera en el futuro, asegúrate de que el sistema o plugin pueda extenderse sin cambios importantes en el código.
- Períodos de Tiempo Diferentes:
- El período de 14 días podría ser configurable en la configuración del plugin (en caso de que desees 7 días, 30 días, etc.).
- Asignaciones Dinámicas de Grupos:
- Grupos exentos adicionales o menos (por ejemplo, si agregas “Suscriptores” o lo eliminas) deberían ser compatibles.
3. Resumen
- Los Grupos Restringidos (TL0, TL1, TL2, o cualquier usuario que no pertenezca a un grupo exento) están sujetos a un tiempo de espera de 14 días antes de crear otro tema en las Categorías A o B.
- Los Grupos Exentos (Admin, Moderador, TL3, TL4, “Suscriptores”) pueden publicar sin restricciones.
- El sistema verifica la creación del tema más reciente en las Categorías A, B o C (incluyendo eliminados suavemente u ocultos). Si se creó dentro de los 14 días, el nuevo tema se bloquea.
- Mensaje de Error: Muestra el tiempo restante en días/horas y enlaza a las reglas de la comunidad en:
- Borrador: Cuando se bloquea, la publicación del usuario se guarda como borrador y el botón de enviar se deshabilita.
- Esta especificación puede extenderse a categorías adicionales o plazos diferentes en el futuro.
¡Agradecería cualquier sugerencia!