Как phpbb3 узнает, является ли форум закрытым? - PullRequest
0 голосов
/ 15 января 2011

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

  • Публичное обсуждение
  • Личное обсуждение

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

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

Спасибо!

Ответы [ 2 ]

3 голосов
/ 15 января 2011

Обычно видимость форума основана на двух вещах:

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

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

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

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

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

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

0 голосов
/ 28 мая 2017

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

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

...