info navigation

phpbb-belk.ru

темы, связанные с форумом phpbb 3.0.x



Новая тема  [ 1 сообщение ]  Просмотры: 1880

Автор Сообщение
Не в сети
(Андрей)  
Администратор
Аватара пользователя

Стаж: 9 лет 5 месяцев 28 дней
Сообщения: 1235
Откуда: здешние мы


Стиль: subsilver2


Репутация: 11


Russia

Тиц и PR

перейти на сайт пользователя
Найти темы пользователя


Ban users from topic - запрет отвечать в определённой теме

мод создаёт в модераторском разделе возможность блокировать комментарии конкретного пользователя в определённой теме. блокировка осуществляется по id пользователя. оригинальная тема здесь

Мод не имеет копируемых файлов, только SQL-запрос и редактирование уже имеющихся файлов.

Сканы получившихся изменений:

Вложение:
Комментарий к файлу: новое поле в модераторском разделе
topic_mcp.png
topic_mcp.png [ 19.28 КБ | Просмотров: 1831 ] topic_mcp.png



Вложение:
Комментарий к файлу: ответ, который получает заблокированный пользователь
zapret.png
zapret.png [ 3.1 КБ | Просмотров: 1831 ] zapret.png



Итак, вот такие правки:

Сначала необходимо провести запрос к базе данных:

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

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


после выполнения запроса удалить скрипт с сервера.

Вложение:
Комментарий к файлу: скрипт-установщик sql
db_update.rar [1.28 КБ]
Скачиваний: 183


Теперь редактируем файлы форума:

Открыть 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,


языковые правки en
Открыть language/en/mcp.php
Найти

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

   'DISAPPROVE'


Вставить перед найденным

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

   'DENIED_REPLY_USERS'            => 'Deny replies in this topic',
   'DENIED_REPLY_USERS_EXPLAIN'      => 'User ids separated by commas.',


Открыть language/en/posting.php
Найти

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

   'DISABLE_BBCODE'


Вставить перед найденным

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

   'DENIED_REPLY'            => 'You are not allowed to reply in this thread.',


языковые правки ru
Открыть language/ru/mcp.php
Найти

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

   'DISAPPROVE'


Вставить перед найденным

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

   'DENIED_REPLY_USERS'            => 'Запрет сообщений в теме',
   'DENIED_REPLY_USERS_EXPLAIN'      => 'Укажите id пользователей через запятую',


Открыть language/ru/posting.php
Найти

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

   'DISABLE_BBCODE'


Вставить перед найденным

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

   'DENIED_REPLY'            => 'Вам запрещено отвечать в этой теме',


Открыть 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. :)


трёхголовый белк семейства рептилоидов:
"три головы - хорошо, на как же трудно придти к согласию..."
Ban users from topic,Ban users from topic,форум,phpbb 3.0
Показать сообщения за:  Поле сортировки  
Ответить на тему  [ 1 сообщение ] 

Кто сейчас на сайте:

Всего посетителей: 1, из них зарегистрированных: 0, скрытых: 0 и гостей: 1 (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (122) здесь было 19 дек 2023, 12:10

Сейчас этот раздел просматривают: нет зарегистрированных пользователей и гости: 1



Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения
Вы не можете защищать свои темы паролем

Найти:
Перейти:  




cron

Текущее время: 19 мар 2025, 18:20

Создано на основе phpBB® Forum Software © phpBB Group
Яндекс.Метрика

Полная версия Мобильный вид