Questa è una versione SQL del report della dashboard per le policy non accettate.
Questo report richiede che il plugin Discourse Policy sia abilitato.
Questo report della dashboard identifica gli argomenti con policy che non sono stati accettati da determinati utenti. Questo report aiuta gli amministratori a garantire che gli utenti rispettino le policy dei post, a identificare chi non ha accettato le policy richieste, a far rispettare le regole del forum, a gestire gli aggiornamenti delle policy e a confermare che gli utenti accettano le linee guida.
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
Spiegazione della query SQL
Questa query esegue le seguenti operazioni:
- Unisce le tabelle
post_policies,post_policy_groups,posts,topicsegroup_usersper creare un elenco di argomenti e utenti soggetti alle policy dei post in base all’appartenenza al gruppo. - Utilizza un join sinistro con la tabella
policy_usersper trovare le istanze in cui un utente non ha accettato la policy (pu.id IS NULL), garantendo che vengano considerate solo le accettazioni delle policy correnti e pertinenti (non revocate, non scadute e corrispondenti alla versione corrente della policy). - Seleziona coppie distinte di
topic_ideuser_id, indicando argomenti con policy che non sono stati accettati da determinati utenti.
Risultati di esempio
| argomento | utente |
|---|---|
| Policy Topic 1 | user_1 |
| Policy Topic 1 | user_2 |
| Policy Topic 2 | user_1 |
| … | … |