Разрешение постинга при запрете чтения форума

Проблемы с установкой или работой phpBB 3.0.x? Получите помощь здесь!
С 1 января 2017 года phpBB Group прекращает поддержку phpBB версии 3.0.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.0 до 1 июля 2017 года.
Подробнее: Окончание поддержки phpBB 3.0.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
dnk
phpBB 2.0.4
Сообщения: 433
Стаж: 20 лет 1 месяц
Благодарил (а): 12 раз
Поблагодарили: 1 раз

Разрешение постинга при запрете чтения форума

Сообщение dnk »

phpbb 3.0.14
Для группы "Зарегистрированные пользователи" (та, что изначально уже шла в пакете движка после его установки) в "Форумные права групп" для форума установлено: Размещение сообщений: "Может создавать темы" - Да, "Может читать форум" - "Нет". Когда участник данной группы (членств в других группах нет, только в этой) переходит в данный форум, видит: "Вы не можете читать темы в данном форуме", что правильно, но при этом отсутствует кнопка создания новой темы, ответа и при попытке перейти 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');
}

Вопрос: Что и где менять/резать, в т.ч., может, в mcp_main.php и mcp_topic.php, чтобы было так как нужно по указанному выше сценарию?
Anvar
Former team member
Сообщения: 1964
Стаж: 16 лет 5 месяцев
Благодарил (а): 67 раз
Поблагодарили: 800 раз

Re: Разрешение постинга при запрете чтения форума

Сообщение Anvar »

dnk писал(а):

Код: Выделить всё

trigger_error('USER_CANNOT_READ');
Вопрос: Что и где менять/резать
Вы сами ответили на свой вопрос.

Найти:

Код: Выделить всё

// 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']);
}
Заменить:

Код: Выделить всё

// Is the user able to read within this forum?
if (!$auth->acl_get('f_read', $forum_id) && $user->data['user_id'] == ANONYMOUS)
{
   login_box('', $user->lang['LOGIN_EXPLAIN_POST']);
}
Не пишите вопросы лично, если можете задать их на форуме!
Спецзаказы не интересуют!
dnk
phpBB 2.0.4
Сообщения: 433
Стаж: 20 лет 1 месяц
Благодарил (а): 12 раз
Поблагодарили: 1 раз

Re: Разрешение постинга при запрете чтения форума

Сообщение dnk »

Понял, спасибо, а как вернуть кнопки "Новая тема" и "Ответить"?
Anvar
Former team member
Сообщения: 1964
Стаж: 16 лет 5 месяцев
Благодарил (а): 67 раз
Поблагодарили: 800 раз

Re: Разрешение постинга при запрете чтения форума

Сообщение Anvar »

Там тоже вызывается trigger_error();

Пробуйте, открываем viewforum.php
Найти

Код: Выделить всё

if (!$auth->acl_gets('f_list', 'f_read', $forum_id) || ($forum_data['forum_type'] == FORUM_LINK && $forum_data['forum_link'] && !$auth->acl_get('f_read', $forum_id)))
Для замены

Код: Выделить всё

// Permissions check
if (!$auth->acl_gets('f_list', $forum_id) || ($forum_data['forum_type'] == FORUM_LINK && $forum_data['forum_link'] && !$auth->acl_get('f_read', $forum_id)))
Не пишите вопросы лично, если можете задать их на форуме!
Спецзаказы не интересуют!
dnk
phpBB 2.0.4
Сообщения: 433
Стаж: 20 лет 1 месяц
Благодарил (а): 12 раз
Поблагодарили: 1 раз

Re: Разрешение постинга при запрете чтения форума

Сообщение dnk »

Пробуйте, открываем viewforum.php
Обновил, почистил кеш, кнопка не появилась...

Вернуться в «Поддержка phpBB 3.0.х»