Grupos de Usuários Anônimos

Meu fórum terá muitos tópicos privados bloqueados sob categorias com grupos. É um ambiente de sala de aula, então postagens anônimas são bastante importantes. O problema é que os grupos não são transferidos quando um usuário muda para o modo anônimo (como era de se esperar).

Nunca escrevi um plugin antes, mas parece que isso pode ser melhor feito com um. Quando um usuário ativa o anonimato, uma conta é criada e eu atribuo todos os seus grupos atuais ao usuário anônimo. Isso funcionará? Uso a API para atribuir e remover grupos. Posso ter um gatilho para aplicar essas mudanças também ao usuário anônimo?

Há outras implicações que não estou percebendo?

Pode ser possível testar o conceito usando uma consulta do Data Explorer que retorne uma lista de nomes de usuários anônimos associados aos usuários reais que são membros de um determinado grupo. Você poderia então usar a funcionalidade de Adicionar em Massa ao Grupo para adicionar os usuários ao grupo.

Aqui está uma consulta que retornará os nomes de usuários anônimos dos usuários reais que são membros de um grupo. Você precisa fornecer o valor do parâmetro group_name antes de executar a consulta.

--[params]
-- string :group_name

WITH target_users AS (
SELECT
user_id AS master_user_id
FROM group_users gu
JOIN groups g
ON g.id = gu.group_id
WHERE g.name = :group_name
)

SELECT
u.username
FROM target_users tu
JOIN anonymous_users au
ON au.master_user_id = tu.master_user_id
JOIN users u
ON u.id = au.user_id

Executar a consulta retornará resultados que se parecem mais ou menos com isso, se algum membro do grupo tiver entrado no modo anônimo:

Se você não estiver lidando com um grande número de usuários, pode simplesmente copiar e colar os nomes de usuários no formulário de Adicionar em Massa do grupo:

Você precisa estar ciente da configuração do site anonymous account duration minutes. Ela define o tempo de duração que as contas anônimas persistirão após um usuário ter saído do modo anônimo.

Outra coisa a considerar é que isso pode dar aos usuários a impressão de que os usuários anônimos não são muito anônimos. Pode valer a pena informar as pessoas de que os administradores do site têm a capacidade de associar usuários anônimos às suas contas não anônimas.

Observe que o modo anônimo não está relacionado ao que acontece quando você anonimiza um usuário a partir de sua página de administrador. Nesse caso, o usuário é realmente anônimo e todos os detalhes de identificação são removidos.

Estou interessado no que você está tentando realizar, mas não tenho conhecimento de nenhum site que esteja usando o modo anônimo de maneira semelhante. Pode ser uma boa ideia testar isso com um pequeno grupo de usuários e ver como funciona antes de dedicar muito esforço ao desenvolvimento de um plugin.

Obrigado pelos detalhes!

É um ambiente de sala de aula. Queremos que os alunos se sintam à vontade para falar sobre qualquer coisa (ou seja, perguntas que possam achar bobas). Suponho que o anonimato funcione bem, já que é comum em fóruns públicos, mas a maioria das nossas discussões será limitada a grupos específicos.

Removemos isso dos objetivos de curto prazo que queremos alcançar.

Não quero algo que precise ser feito toda vez. Se eu fosse automatizar isso, estaria escrevendo um plugin? É possível ter um gatilho que busque os grupos de um usuário e os vincule às contas anônimas delas à medida que são criadas? Acho que não preciso me preocupar em remover os grupos dessas contas anônimas, já que elas são excluídas após algum tempo.