如果论坛是私有的,phpbb3如何知道?

时间:2011-01-14 22:48:51

标签: php mysql phpbb3

我有一个安装了2个论坛的phpbb3留言板 -

  • 公开讨论
  • 私人讨论

每个人都可以看到公共论坛,但只有特定的群组才能看到私人论坛。

什么是哪里存储的变量是什么,phpbb用来区分私人论坛和公共论坛?

谢谢!

2 个答案:

答案 0 :(得分:3)

通常,论坛可见性基于两件事:

  • 属于特定用户组的用户
  • 该组有权查看该论坛。

您可以在管理界面中找到此控件。在“论坛权限”中,您将看到具有某种角色的组列表,这些组将允许他们至少看到论坛(右上方框)。在“管理组”或单个用户管理下,您将能够看到哪个用户属于哪个组。

虽然必要时可以控制更精细的颗粒,但这是正常的基本设置。如果用户在一个组中,并且该组有权查看该论坛(该组具有可以看到它的“角色”),则该用户可以看到该论坛。

没有一个变量可以控制它。组和论坛权限存在于数据库中。

虽然有很多不同的设置方法,但我猜测你正在寻找的“变量”可能是数据库表phpbb_acl_groups,其中一行可以关联一个论坛(由来自forum_id的{​​{1}}标识,其中包含一个角色(phpbb_forums来自auth_role_id)和一个群组(phpbb_acl_roles来自group_id。)

我认为这是我能给出的最佳答案,除非你能给我们更多细节(例如实际问题是什么......)

答案 1 :(得分:0)

根据马特的回答,我提出了这个问题:

SELECT f.forum_id, f.forum_name
FROM forums f
WHERE f.forum_type = 1 AND f.forum_id IN (
    SELECT a.forum_id
    FROM acl_groups a
    WHERE a.group_id = 1 AND (a.auth_role_id <> 16)
)

这将选择不属于类别的论坛(f.forum_type = 1),并且访问者未设置ROLE_FORUM_NOACCESSa.auth_role_id <> 16)。

我已考虑添加f_read选项(a.auth_option_id <> 20),但这并没有改变我的情况。

我想知道这是不是一个坏主意:p