即使为空,群组收件箱和存档也可见

大家好,

我们的网站上有许多旧群组,它们的收件箱或存档中没有任何消息,但它们仍然显示在侧边栏和 /my/messages 页面上。

我找到了这个旧帖子,但它没有提供适合我的解决方案:Messaging: Group inboxes and archives show even after all messages deleted

还有其他建议吗?

3 个赞

这些旧群组……我想知道您是否可以编辑群组并将“谁可以给此群组发送消息?”更改为“无人”?

或者这些旧群组是否仍然需要群组邮箱?

1 个赞

对不起没有早点回复,但所有群组的“谁可以给这个群发消息”都设置为“无人”。

我还能检查其他什么吗?

1 个赞

这听起来确实像一个 bug。如果设置为“无人”,我认为该群组邮箱不应该可见。

我想到的一个变通方法是使用 #theme-component 将群组添加为类,然后使用每个群组类来隐藏设置为“无人”的群组邮箱。我说使用群组类是因为我想象如果使用 CSS 来隐藏它们,可能会也隐藏版主群组邮箱。

那些旧群组以前有消息吗?我的个人网站上有一个群组,里面只有一条消息,收件箱会显示在侧边栏。我刚刚删除了消息,群组收件箱仍然显示着。

已删除的消息不再显示在收件箱中,即使对我这个管理员来说也是如此。我能够通过浏览器历史记录浏览回它,并看到它仍然作为已删除消息存在。我尝试删除该群组,但它不允许我这样做。我取消了删除,然后删除了该群组。然后为了保险起见,我删除了消息。

收件箱仍然显示着——所以我怀疑该群组收件箱中仍然存在其他已删除的消息。

所以是的,我认为这里存在一个 bug——如果群组收件箱中唯一的消息已被删除,那么群组收件箱不应显示在侧边栏中。

目前唯一的解决方法是删除群组并重新创建它。

使用数据浏览器获取群组收件箱中任何已删除消息的帖子 ID 来证实我的理论,并查看这些帖子,这将很有趣。

2 个赞

你之后触发了数据库一致性作业吗?我认为一旦它运行完毕,收件箱就不再显示了。

2 个赞

好主意!对我来说奏效了。

编辑:帖子中的链接主题对我很有帮助。不知道你那边是怎么回事 @alehandrof.. 问题最终消失了吗?

1 个赞

我运行了数据库一致性作业,但收件箱仍然存在。如果这有什么区别的话,我是一个管理员用户。但它们应该消失,因为它们是空的——latestnewunreadarchive 都没有任何消息。

我卡住了 :frowning:

2 个赞

此数据浏览器查询是否返回任何主题?

-- [params]
-- group_id :inboxgroup

SELECT tg.topic_id, t.id AS topic_exists, t.deleted_at
FROM topic_allowed_groups tg
LEFT JOIN topics t ON t.id = tg.topic_id
WHERE tg.group_id = :inboxgroup
  AND (
    t.deleted_at IS NULL
    OR t.id IS NULL
  )

1 个赞

在我的情况并非如此。:+1:

1 个赞

只有当收件箱显示时,才应显示主题。

我已经找到了实现这一目标的方法,即使收件箱是空的:
在发送到该群组的消息被设为公开主题之后。

所以:

  1. 创建一个新群组
  2. 至少允许管理员向群组发送消息
  3. 添加成员到群组以检查收件箱是否显示
  4. 向群组发送消息
  5. 在管理员扳手菜单中使用“设为公开主题”选项
  6. 收件箱是空的,但即使在数据库一致性作业运行后,收件箱也不会消失

在这种情况下,上面的数据探索器查询会返回该主题。

2 个赞