Как phpbb3 узнает, является ли форум закрытым?

У меня установлена ​​доска сообщений phpbb3 с двумя форумами -

  • Публичное обсуждение
  • Частное обсуждение

Все могут видеть общедоступный форум, но только определенная группа может видеть закрытый форум.

Что такое и где хранится переменная, которую phpbb использует для различения частного и публичного форумов?

Спасибо!


person Dan.    schedule 14.01.2011    source источник
comment
Попробуйте прочитать эту статью phpbb.com/kb/article/create-a -private-forum чтобы узнать   -  person Mark Baker    schedule 15.01.2011


Ответы (2)


Как правило, видимость форума основана на двух вещах:

  • Пользователь, входящий в определенную группу пользователей
  • Эта группа имеет разрешение на просмотр этого форума.

Вы найдете элементы управления для этого в интерфейсе администратора. В разделе «Разрешения форума» вы увидите список групп, у которых есть какая-то роль, которая позволит им хотя бы видеть форум (правое верхнее поле). В «Управлении группами» или в разделе управления отдельными пользователями вы сможете увидеть, какой пользователь принадлежит к какой группе.

Хотя при необходимости все можно контролировать с гораздо более мелкой зернистостью, это нормальная базовая настройка. Если пользователь состоит в группе, и у этой группы есть разрешение на просмотр форума (у группы есть «роль», которая может его видеть), то пользователь может видеть форум.

Нет ни одной переменной, чтобы контролировать это. Разрешения для групп и форумов находятся в базе данных.

Хотя существует множество различных способов настройки, я предполагаю, что "переменная", которую вы ищете, вероятно, является таблицей базы данных phpbb_acl_groups, где строка может ассоциировать форум (обозначается forum_id из phpbb_forums) с ролью (auth_role_id из phpbb_acl_roles) и группой (group_id из phpbb_groups.)

Я думаю, что это лучший ответ, который я могу дать, если вы не можете дать нам более подробную информацию (например, в чем заключается настоящая проблема...)

person Matt Gibson    schedule 15.01.2011

Работая над ответом Мэтта, я придумал этот запрос:

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_NOACCESS (a.auth_role_id <> 16).

Я думал добавить опцию f_read (a.auth_option_id <> 20), но в моем случае это ничего не изменило.

Я хотел бы знать, если это плохая идея :p

person nerestaren    schedule 28.05.2017