Вложения только для определённых групп

На одном форуме возникла проблема с копирайтами файлов. Загруженные файлы (аттачи) могли скачать некоторые нехорошие люди и использовать их потом, выдавая за свои. В связи с этим возникла потребность в следующем функционале — вложения могут загружать все зарегистрированные пользователи, однако скачивать их могут только участники определённых групп, а также сами авторы вложений. Стандартными средствами phpBB такого не сделать, поэтому я опишу свою реализацию этого функционала.

Первым делом, нам надо получить список групп, в которых состоит пользователь, а также проверить, есть ли среди них группы из белого списка. Если хотя бы одна такая группа найдена, то пользователь получает возможность скачивать вложения. Это реализует следующий фрагмент кода:

Здесь переменная $attach_view_permission является индикатором возможности скачивания вложений. Изначально мы задаём ей значение 0, а потом меняем на 1 если хотя бы одно из условий будет выполнено. В условии мы проверяем совпадение групп пользователя и групп из белого списка. В данном примере в белом списке только две группы, их id 15674 и 15675 соответственно, однако вы можно добавить, по сути, любое количество групп.

Теперь нужно проверить, является ли пользователь тем самым юзером, который и загрузил данное вложение (а значит, является автором сообщения). Эту проверку реализует следующий код:

Теперь нужно передать переменную-индикатор в шаблон. Это делается одной строчкой:

Также нужно изменить шаблон форума, добавив туда новые условные конструкции. Используя полученный ранее индикатор, можно записать такое условие:

Окончательная инструкция

После того, как весь код разобран, я приведу окончательную инструкцию. Первым делом открываем файл viewtopic.php. Находим там строки:

Добавляем перед этими строками следующий код:

Далее находим строку:

После неё добавим такую строчку:

Теперь нужно отредактировать шаблоны. Для примера рассмотрим стиль subsilver2. В файле styles/subsilver2/template/viewtopic_body.html находим строки:

Весь этот участок кода надо заменить на такой:

Не забудьте проделать это для всех ваших шаблонов. После редактирования шаблонов нужно в админке их все обновить (Администраторский раздел — Стили — Шаблоны — ваш стиль [ обновить ] ).

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.