Topic Restriction (право может смотреть тему)

Поддержка старых модов или модов, созданных авторами не из нашего сообщества, а также любые вопросы, связанные с модами для phpBB 3.0.x, кроме относящихся к форуму Для авторов (phpBB 3.0.x).
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
MenX
phpBB 1.4.2
Сообщения: 63
Стаж: 17 лет 7 месяцев
Благодарил (а): 4 раза

Topic Restriction (право может смотреть тему)

Сообщение MenX »

Всем привет!

Столкнулся с тем, что в правах доступа к форумам нет возможности отображать форум с листингом тем, но без возможности чтения тем.
Неужели данная возможность не реализована в правах доступа к форумам?
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Re: Листинг тем без чтения (права доступа)

Сообщение Shredder »

Не реализована. Ищи мод topic restrictions.
Аватара пользователя
МайскийЖук
phpBB 3.0.7-PL1
Сообщения: 2535
Стаж: 16 лет 11 месяцев
Благодарил (а): 17 раз
Поблагодарили: 366 раз

Листинг тем без чтения (права доступа)

Сообщение МайскийЖук »

Неужели данная возможность не реализована в правах доступа к форумам?
А зачем это вообще надо?

Пользователь либо имеет доступ к определенному форуму, либо не имеет. На фига ему листинг тем, если он к ним доступа все равно не имеет?

Topic Restriction здесь.
Любовь и боль, покой и бой я как любой несу с собой…
MenX
phpBB 1.4.2
Сообщения: 63
Стаж: 17 лет 7 месяцев
Благодарил (а): 4 раза

Re: Листинг тем без чтения (права доступа)

Сообщение MenX »

Shredder писал(а):Ищи мод topic restrictions.
Подскажите аналоги, у данного мода есть глюк, он не работает при SEF ссылках без передачи id форума в url. Или может кто из спецов исходного кода phpBB подскажет как из идентификатора темы получить идентификатор форума? Код мода следующий:

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

if($auth->acl_get('f_view_topics', $forum_id))
{
    if (!$auth->acl_get('u_view_topics'))
    {
    	if($user->data['user_id'] != ANONYMOUS)
    	{
    	  trigger_error('NOT_AUTHORISED');
    	}
    	else
    	{
    	  login_box('');
    	}
    }
}
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Re: Листинг тем без чтения (права доступа)

Сообщение Shredder »

Это не глюк, это конфликт.
Насколько мне известно, аналогов нет.

Добавлено спустя 47 секунд:
MenX писал(а):не работает при SEF ссылках
Для начала неплохо бы знать, что за мод делает эти ссылки.

Добавлено спустя 3 минуты 20 секунд:
В моде ещё и бэкдор оказывается есть:
http://www.phpbb.com/customise/db/mod/t ... r_-t_86373

Посмотрите вот по этой ссылке, там обсуждается альтернатива (без мода, только правки кода):
http://www.phpbb.com/community/viewtopi ... &t=1206115
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 16 лет 10 месяцев
Благодарил (а): 42 раза
Поблагодарили: 506 раз

Re: Листинг тем без чтения (права доступа)

Сообщение Pazh »

MenX писал(а):как из идентификатора темы получить идентификатор форума?

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

select forum_id from phpbb_topics where topic_id = XXXX
А вообще: создаете новое право - может видеть список тем и прописываете его во viewtopic.php и можно еще в search.php
Помощь в ЛС/email только за WM или ЮMoney
MenX
phpBB 1.4.2
Сообщения: 63
Стаж: 17 лет 7 месяцев
Благодарил (а): 4 раза

Re: Листинг тем без чтения (права доступа)

Сообщение MenX »

Shredder писал(а):В моде ещё и бэкдор оказывается есть
Вот об этом я и говорил! Что мод ограничивает чтение тем только при условии, что URL передает идентификатор форума, а если URL не передает id форума, а передает только id темы то правило не работает.

Может есть у кого-нибудь соображение, как можно подправить мод?

Добавлено спустя 4 минуты 16 секунд:
Вот здесь у нас идет проверка.

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

if($auth->acl_get('f_view_topics', $forum_id))
Надо что-то вроде этого, если я не ошибаюсь:

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

if($auth->acl_get('f_view_topics', get_forum_id ($topic_id)))
Это я просто логическую структуру привел. Как можно стандартными функциями phpBB получить id форума из id топика?
Аватара пользователя
HAMMER663
Former team member
Сообщения: 2032
Стаж: 16 лет 5 месяцев
Откуда: Зеленоград
Благодарил (а): 77 раз
Поблагодарили: 249 раз

Re: Листинг тем без чтения (права доступа)

Сообщение HAMMER663 »

MenX писал(а):можно стандартными функциями phpBB получить id форума из id топика?
тебе же написали как

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

select forum_id from phpbb_topics where topic_id = XXXX
Добавлено спустя 1 минуту 48 секунд:
MenX вообще попробуй так

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

if (!$auth->acl_get('f_read', $forum_id))
замени на

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

if (!$auth->acl_get('f_read', $forum_id) || $user->data['user_id'] == ANONYMOUS)
Добавлено спустя 5 минут 8 секунд:
хотя нет, если право добавлено, то лучше так

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

if (!$auth->acl_get('f_read', $forum_id) || $auth->acl_get('f_view_topics', $forum_id))
MenX
phpBB 1.4.2
Сообщения: 63
Стаж: 17 лет 7 месяцев
Благодарил (а): 4 раза

Re: Листинг тем без чтения (права доступа)

Сообщение MenX »

HAMMER663 писал(а):тебе же написали как

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

select forum_id from phpbb_topics where topic_id = XXXX
Ну зачем мне выполнять лишние sql запросы если такая функция наверняка существует и уже описана в коде phpBB?
HAMMER663 писал(а):хотя нет, если право добавлено, то лучше так

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

if (!$auth->acl_get('f_view_topics', 'f_read', $forum_id))
Так вообще всех без разбора пускает.
Аватара пользователя
HAMMER663
Former team member
Сообщения: 2032
Стаж: 16 лет 5 месяцев
Откуда: Зеленоград
Благодарил (а): 77 раз
Поблагодарили: 249 раз

Re: Листинг тем без чтения (права доступа)

Сообщение HAMMER663 »

MenX я поправил, вот так надо

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

if (!$auth->acl_get('f_read', $forum_id) || $auth->acl_get('f_view_topics', $forum_id))
MenX
phpBB 1.4.2
Сообщения: 63
Стаж: 17 лет 7 месяцев
Благодарил (а): 4 раза

Re: Листинг тем без чтения (права доступа)

Сообщение MenX »

HAMMER663, так условие выполняется, но выполняется для всех форумов без разбора. А мне требуется ограничить доступ выборочно.

Добавлено спустя 1 минуту 10 секунд:
P.S. я имею в виду ситуацию когда не передается id форума.
Аватара пользователя
HAMMER663
Former team member
Сообщения: 2032
Стаж: 16 лет 5 месяцев
Откуда: Зеленоград
Благодарил (а): 77 раз
Поблагодарили: 249 раз

Re: Листинг тем без чтения (права доступа)

Сообщение HAMMER663 »

MenX установив вот этот мод http://www.phpbb.com/customise/db/mod/t ... striction/
Ты добавляешь право дополнительное в админку "Может смотреть сообщения".
Вот теперь мы смотрим. Ага. есть у нам право 'f_view_topics', и говорим:

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

if ($auth->acl_get('f_view_topics', $forum_id))
{
	if ($user->data['user_id'] != ANONYMOUS)
	{
		trigger_error('SORRY_AUTH_READ');
	}
	login_box('', $user->lang['LOGIN_VIEWFORUM']);
}
Всё. теперь мы в админке настраиваем в каких форумах можно смотреть, а в каких нельзя

Добавлено спустя 41 секунду:
MenX писал(а):я имею в виду ситуацию когда не передается id форума
В моей правке все обрабатывается корректно
MenX
phpBB 1.4.2
Сообщения: 63
Стаж: 17 лет 7 месяцев
Благодарил (а): 4 раза

Re: Листинг тем без чтения (права доступа)

Сообщение MenX »

HAMMER663 писал(а): Всё. теперь мы в админке настраиваем в каких форумах можно смотреть, а в каких нельзя
Ну естественно я это все проделал.
HAMMER663 писал(а):В моей правке все обрабатывается корректно
Кроме того, в вашей правке обнаружился еще один глюк, для зарегистрированных пользователей стало недоступно чтение некоторых тем.
Аватара пользователя
HAMMER663
Former team member
Сообщения: 2032
Стаж: 16 лет 5 месяцев
Откуда: Зеленоград
Благодарил (а): 77 раз
Поблагодарили: 249 раз

Re: Листинг тем без чтения (права доступа)

Сообщение HAMMER663 »

MenX каких? трассировка прав покажет правильно ли вы им все настроили. у меня данная правка работает нормально
MenX
phpBB 1.4.2
Сообщения: 63
Стаж: 17 лет 7 месяцев
Благодарил (а): 4 раза

Re: Листинг тем без чтения (права доступа)

Сообщение MenX »

HAMMER663 Для зарегистрированных пользователей недоступно чтение тем в которых появились новые сообщения с момента их последнего посещения.

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