Форум web-мастеров phpBB3

Модификации и расширения phpBB




Ответить на тему
Пред. тема | След. тема 
Автор Сообщение
Местный тролль

Карма
0
Стаж: 5 лет 4 месяца
Сообщения: 12
Украина

Ответить с цитатой

В форуме phpBB3 есть функция автоцензора, для замены определённых, нежелательных (мат и т.д.) слов на что-то более "приличное", небольшой мод, который позволяет в тексте замены использовать html, что, не только немного расширяет возможности автоцензора, но и даёт возможность использовать его для других целей.

adm/style/acp_words.html заменить

         <dd><input id="replacement" type="text" name="replacement" value="{REPLACEMENT}" maxlength="255" /></dd>


на

         <dd><textarea id="replacement" name="replacement">{REPLACEMENT}</textarea></dd>


includes/acp/acp_words.php после

            $word         = utf8_normalize_nfc(request_var('word', '', true));
            $replacement   = utf8_normalize_nfc(request_var('replacement', '', true));


добавить

            $replacement=utf8_substr($replacement, 0, 255);


includes/functions_content.php заменить

function censor_text($text)


на

function censor_text($text, $html=false)


заменить

   if (sizeof($censors))
   {
      return preg_replace($censors['match'], $censors['replace'], $text);
   }


на

   if (sizeof($censors))
   {
      if(!isset($censors['match_html']) && !isset($censors['match_nohtml']))
      {
         foreach($censors['replace'] as $k => $v)
         {
            if(preg_match('/&lt;\w+/', $v))
            {
               $censors['match_html'][$k]=$censors['match'][$k];
               $censors['replace_html'][$k]=htmlspecialchars_decode($v);
            }
            else
            {
               $censors['match_html'][$k]=$censors['match'][$k];
               $censors['replace_html'][$k]=$censors['replace'][$k];
               $censors['match_nohtml'][$k]=$censors['match'][$k];
               $censors['replace_nohtml'][$k]=$censors['replace'][$k];
            }
         }
      }
      if($html && isset($censors['match_html']) && sizeof($censors['match_html']))
      {
         return preg_replace($censors['match_html'], $censors['replace_html'], $text);
      }
      else if(isset($censors['match_nohtml']) && sizeof($censors['match_nohtml']))
      {
         return preg_replace($censors['match_nohtml'], $censors['replace_nohtml'], $text);
      }
      else
      {
         return $text;
      }
   }

   /*if (sizeof($censors))
   {
      if(!isset($censors['no_html']))
      {
         $censors['replace']=array_map('htmlspecialchars_decode', $censors['replace']);
         $censors['no_html']=array_map('strip_tags', $censors['replace']);
      }
      return preg_replace($censors['match'], ($html ? $censors['replace'] : $censors['no_html']), $text);
   }*/


viewtopic.php заменить
   // Parse the message and subject
   $message = censor_text($row['post_text']);


на

   // Parse the message and subject
   $message = censor_text($row['post_text'], true);


Скриншоты:
Адм. раздел
#750

#750

Оригинал сообщения
#750

Результат
#750

1. Ограничение на длину текста в замене - 255 символов
2. Замена с html кодом работает только на странице списка сообщений (и только в сообщениях)
3. Т.к. функция автоцензора отключаемая (настраивается в правах), необходимо включить её (запретить отключение) для нужных групп пользователей
Источник: ppkbb3cker.ru
Профиль  Отправить личное сообщение
Идеальный заработок для торрент-трекеров
Страница 1 из 1
Показать сообщения за:  Поле сортировки  
Ответить на тему

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

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

cron