мод создаёт в модераторском разделе возможность блокировать комментарии конкретного пользователя в определённой теме. блокировка осуществляется по id пользователя. оригинальная тема здесь
Мод не имеет копируемых файлов, только SQL-запрос и редактирование уже имеющихся файлов.
Сканы получившихся изменений:
Вложение:
Комментарий к файлу: новое поле в модераторском разделе
Вложение:
Комментарий к файлу: ответ, который получает заблокированный пользователь
Итак, вот такие правки:
Сначала необходимо провести запрос к базе данных:
Код: Выделить всё
ALTER TABLE `phpbb_topics` ADD `denied_reply_users` VARCHAR(5000) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '0';
для тех, кому это сделать сложно по каким-то причинам - можно скачать установочный файл. распаковать, файл db_update.php загрузить в корень форума (где файл config.php) и запустить скрипт через браузер по адресу
Код: Выделить всё
http://ваш сайт/db_update.php
после выполнения запроса удалить скрипт с сервера.
Вложение:
Теперь редактируем файлы форума:
Открыть posting.php
Найти
Вставить после найденного
Код: Выделить всё
'post_approved' => (isset($post_data['post_approved'])) ? $post_data['post_approved'] : false,
);
Вставить после найденного
Код: Выделить всё
if ($mode != 'post' && $post_data['denied_reply_users'])
{
$denied_reply_users = explode(',', $post_data['denied_reply_users']);
if (in_array($user->data['user_id'], $denied_reply_users))
{
trigger_error('DENIED_REPLY');
}
}
Открыть includes/mcp/mcp_topic.php
Найти
Вставить перед найденным
Код: Выделить всё
$posts_per_page = max(0, request_var('posts_per_page', intval($config['posts_per_page'])));
Вставить перед найденным
Код: Выделить всё
$deny_reply = isset($_POST['deny_reply']) ? true : false;
$denied_reply_users = request_var('denied_reply_users', $topic_info['denied_reply_users']);
if ($deny_reply)
{
$denied_reply_users = explode(',', $denied_reply_users);
$denied_reply_users = array_map('intval', $denied_reply_users);
$denied_reply_users = implode(',', $denied_reply_users);
$sql = 'UPDATE ' . TOPICS_TABLE . "
SET denied_reply_users = '" . $db->sql_escape($denied_reply_users) . "'
WHERE topic_id = $topic_id";
$db->sql_query($sql);
}
Найти
Вставить перед найденным
Код: Выделить всё
'POSTS_PER_PAGE' => $posts_per_page,
Вставить перед найденным
Код: Выделить всё
'S_DENIED_REPLY_MOD' => true,
'DENIED_REPLY_USERS' => $denied_reply_users,
Открыть styles/prosilver/template/mcp_topic.html
Найти
Вставить перед найденным
Код: Выделить всё
<dl>
<dt><label>{L_DISPLAY_POSTS}:</label></dt>
Вставить перед найденным
Код: Выделить всё
<!-- IF S_DENIED_REPLY_MOD -->
<dl>
<dt><label for="denied_reply_users">{L_DENIED_REPLY_USERS}{L_COLON}</label><br /><span>{L_DENIED_REPLY_USERS_EXPLAIN}</span></dt>
<dd><input class="inputbox autowidth" type="text" name="denied_reply_users" id="denied_reply_users" size="30" value="{DENIED_REPLY_USERS}" /> <input type="submit" name="deny_reply" value="{L_SUBMIT}" class="button2" /></dd>
</dl>
<!-- ENDIF -->
Открыть styles/subsilver2/template/mcp_topic.html
Найти
Вставить после найденного
Код: Выделить всё
<td class="row2" colspan="2"><input class="post" type="text" name="posts_per_page" size="6" value="{POSTS_PER_PAGE}" /></td>
</tr>
Вставить после найденного
Код: Выделить всё
<!-- IF S_DENIED_REPLY_MOD -->
<tr>
<td class="row1" nowrap="nowrap"><span class="gen">{L_DENIED_REPLY_USERS}</span><br /><span class="gensmall">{L_DENIED_REPLY_USERS_EXPLAIN}</span></td>
<td class="row2" colspan="2"><input class="post" type="text" name="denied_reply_users" size="30" value="{DENIED_REPLY_USERS}" /> <input class="post" type="submit" name="deny_reply" value="{L_SUBMIT}" /></td>
</tr>
<!-- ENDIF -->
Всё. чистим кэш и можно проверять.
p.s. если кому интересно, то id пользователя можно легко узнать по ссылке на его профиль. например у меня ссылка имеет вид
Код: Выделить всё
https://phpbb-belk.ru/memberlist.php?mode=viewprofile&u=2
так вот: последняя цифра это и есть id.
