Для группы "Зарегистрированные пользователи" (та, что изначально уже шла в пакете движка после его установки) в "Форумные права групп" для форума установлено: Размещение сообщений: "Может создавать темы" - Да, "Может читать форум" - "Нет". Когда участник данной группы (членств в других группах нет, только в этой) переходит в данный форум, видит: "Вы не можете читать темы в данном форуме", что правильно, но при этом отсутствует кнопка создания новой темы, ответа и при попытке перейти posting.php?mode=post&f= вместо того, что перекинуть на форму создания темы, получает сообщение об ошибке:
Код: Выделить всё
trigger_error('USER_CANNOT_READ');
Для чего такое нужно? И что мне нужно? Нужно, чтобы группа, не имеющая прав постинга могла просматривать форум и темы в нем, а все остальные группы, включая гостей и зареганых и исключая администраторские группы, - нет.
posting.php:
Код: Выделить всё
// Check permissions
if ($user->data['is_bot'])
{
redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
}
// Is the user able to read within this forum?
if (!$auth->acl_get('f_read', $forum_id))
{
if ($user->data['user_id'] != ANONYMOUS)
{
trigger_error('USER_CANNOT_READ');
}
login_box('', $user->lang['LOGIN_EXPLAIN_POST']);
}
// start mod clone posts
$clone = $clone_posterid = false;
if (isset($_POST['clone']) || isset($_POST['clone_posterid']))
{
include($phpbb_root_path . 'includes/functions_clone.' . $phpEx);
clone_reset_vars($mode, $forum_id, $post_data, $clone, $clone_posterid);
}
// end mod clone posts
// Permission to do the action asked?
$is_authed = false;
switch ($mode)
{
case 'post':
if ($auth->acl_get('f_post', $forum_id))
{
$is_authed = true;
}
break;
case 'bump':
if ($auth->acl_get('f_bump', $forum_id))
{
$is_authed = true;
}
break;
case 'quote':
$post_data['post_edit_locked'] = 0;
// no break;
case 'reply':
if ($auth->acl_get('f_reply', $forum_id))
{
$is_authed = true;
}
break;
case 'edit':
if ($user->data['is_registered'] && ($auth->acl_gets('f_edit', 'm_edit', $forum_id) || ($auth->acl_get('f_author', $forum_id) && $post_data['topic_poster'] == $user->data['user_id'])))
{
$is_authed = true;
}
break;
case 'delete':
if ($user->data['is_registered'] && $auth->acl_gets('f_delete', 'm_delete', $forum_id))
{
$is_authed = true;
}
break;
}
if (!$is_authed)
{
$check_auth = ($mode == 'quote') ? 'reply' : $mode;
if ($user->data['is_registered'])
{
trigger_error('USER_CANNOT_' . strtoupper($check_auth));
login_box('', $user->lang['LOGIN_EXPLAIN_' . strtoupper($mode)]);
}
// Is the user able to post within this forum?
if ($post_data['forum_type'] != FORUM_POST && in_array($mode, array('post', 'bump', 'quote', 'reply')))
{
trigger_error('USER_CANNOT_FORUM_POST');
}

