我的论坛将有很多私密话题,这些话题会被锁定在按群组划分的分类下。这是一个课堂环境,因此匿名发帖非常重要。问题在于,当用户切换到匿名模式时(这在意料之中),群组信息并不会随之转移。
我从未写过插件,但看来通过插件是解决此问题的最佳方案。当用户启用匿名模式时,系统会创建一个匿名账户,我会将他们当前的所有群组分配给该匿名账户。这样可行吗?我使用 API 来分配和移除群组。能否设置一个触发器,将这些更改也应用到匿名用户身上?
我是否忽略了其他潜在影响?
我的论坛将有很多私密话题,这些话题会被锁定在按群组划分的分类下。这是一个课堂环境,因此匿名发帖非常重要。问题在于,当用户切换到匿名模式时(这在意料之中),群组信息并不会随之转移。
我从未写过插件,但看来通过插件是解决此问题的最佳方案。当用户启用匿名模式时,系统会创建一个匿名账户,我会将他们当前的所有群组分配给该匿名账户。这样可行吗?我使用 API 来分配和移除群组。能否设置一个触发器,将这些更改也应用到匿名用户身上?
我是否忽略了其他潜在影响?
或许可以通过使用 数据探索器 查询来测试该概念,该查询将返回与属于特定组的真实用户关联的匿名用户名列表。然后,您可以使用“批量添加到组”功能将这些用户添加到该组。
以下是将返回属于某组的真实用户的匿名用户名的查询。在运行查询之前,您需要提供 group_name 参数的值。
--[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
如果该组的任何成员已进入匿名模式,运行该查询将返回类似以下结果:
如果您处理的不是大量用户,只需将用户名复制并粘贴到该组的“批量添加”表单中即可:
您需要了解“匿名账户持续时间(分钟)”站点设置。它设定了用户退出匿名模式后匿名账户保留的时间长度。
另一个需要考虑的因素是,这可能会让用户觉得匿名用户并不那么匿名。或许值得告知用户,站点管理员有能力将匿名用户与其非匿名账户关联起来。
请注意,匿名模式与从管理员页面匿名化用户时发生的情况无关。在后一种情况下,用户确实是匿名的,所有识别信息都已被移除。
我对您试图实现的目标很感兴趣,但我不知道有任何站点以类似方式使用匿名模式。在投入大量精力开发插件之前,先在小范围用户群体中测试一下可能是个好主意。
感谢提供详细信息!
这是一个课堂环境。我们希望学生们能够畅所欲言,提出任何问题(包括他们可能觉得“很蠢”的问题)。匿名功能在公共论坛中表现良好,但我们大部分的讨论都将限定在特定小组内。
我们已将此功能从短期目标中移除。
我不希望每次都需要手动操作。如果我要实现自动化,是否需要编写一个插件?能否设置一个触发器,在创建匿名账户时自动获取用户所属的群组并关联到该匿名账户?我想我不需要担心清除这些匿名账户的群组信息,因为这些账户会在一段时间后自动删除。