Este es una versión SQL del Informe del Panel para Políticas No Aceptadas.
Este informe requiere que el plugin Discourse Policy esté habilitado.
Este informe del panel identifica temas con políticas que no han sido aceptadas por ciertos usuarios. Este informe ayuda a los administradores a garantizar que los usuarios cumplan con las políticas de publicación, identificar quién no ha aceptado las políticas requeridas, hacer cumplir las reglas del foro, administrar las actualizaciones de políticas y confirmar que los usuarios aceptan las directrices.
SELECT distinct t.id AS topic_id, gu.user_id AS user_id
FROM post_policies pp
JOIN post_policy_groups pg on pg.post_policy_id = pp.id
JOIN posts p ON p.id = pp.post_id AND p.deleted_at is null
JOIN topics t ON t.id = p.topic_id AND t.deleted_at is null
JOIN group_users gu ON gu.group_id = pg.group_id
LEFT JOIN policy_users pu ON
pu.user_id = gu.user_id AND
pu.post_policy_id = pp.id AND
pu.accepted_at IS NOT NULL AND
pu.revoked_at IS NULL AND
(pu.expired_at IS NULL OR pu.expired_at < pu.accepted_at) AND
((pu.version IS NULL AND pp.version IS NULL) OR
(pp.version IS NOT NULL AND pu.version IS NOT NULL AND pu.version = pp.version))
WHERE pu.id IS NULL
Explicación de la Consulta SQL
Esta consulta realiza las siguientes operaciones:
- Une las tablas
post_policies,post_policy_groups,posts,topicsygroup_userspara crear una lista de temas y usuarios que están sujetos a políticas de publicación según su membresía en el grupo. - Utiliza una unión izquierda con la tabla
policy_userspara encontrar instancias en las que un usuario no ha aceptado la política (pu.id IS NULL), asegurando que solo se consideren las aceptaciones de políticas actuales y relevantes (no revocadas, no expiradas y que coincidan con la versión actual de la política). - Selecciona pares distintos de
topic_idyuser_id, lo que indica temas con políticas que no han sido aceptadas por ciertos usuarios.
Resultados de Ejemplo
| tema | usuario |
|---|---|
| Tema de Política 1 | usuario_1 |
| Tema de Política 1 | usuario_2 |
| Tema de Política 2 | usuario_1 |
| … | … |