Автоцензор в phpBB3 - использование html кода

Небольшие моды и хаки для форума phpBB3
Правила форума
При размещении мода/статьи взятой с другого форума/сайта обязательно необходимо указывать первоисточник сообщения.
 • Просмотры: 3600
Аватара пользователя
PPK
Администратор
Благодарил (а): 82 раза
Поблагодарили: 1621 раз
Сообщения: 10284
Зарегистрирован: 21 мар 2009, 17:13
Сообщение

Автоцензор в phpBB3 - использование html кода

25 июл 2013, 10:56

В форуме 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('/<\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);
Скриншоты:
Адм. раздел




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


Результат


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

Автоцензор в phpBB3 - использование html кода

15 авг 2013, 17:19

Гениальнейшая вещь, спасибо за труды)
co
coder
Откуда: Украина, Запорожье
Благодарил (а): 22 раза
Поблагодарили: 7 раз
Сообщения: 697
Зарегистрирован: 18 мар 2013, 13:44
Сообщение

Автоцензор в phpBB3 - использование html кода

15 авг 2013, 17:57

Надо внедрить, спасибо!!
vu
vulkan3
Благодарил (а): 45 раз
Поблагодарили: 36 раз
Сообщения: 1801
Зарегистрирован: 28 сен 2009, 03:36
Сообщение

Автоцензор в phpBB3 - использование html кода

29 сен 2013, 14:14

а ссылками будет работать ?
Pritoc.org Свободный торрент трекер
Аватара пользователя
PPK
Администратор
Благодарил (а): 82 раза
Поблагодарили: 1621 раз
Сообщения: 10284
Зарегистрирован: 21 мар 2009, 17:13
Сообщение

Автоцензор в phpBB3 - использование html кода

29 сен 2013, 14:45

а в html нельзя использовать ссылки?
vu
vulkan3
Благодарил (а): 45 раз
Поблагодарили: 36 раз
Сообщения: 1801
Зарегистрирован: 28 сен 2009, 03:36
Сообщение

Автоцензор в phpBB3 - использование html кода

29 сен 2013, 15:15

ну обычный цензор сами ссылки не изменяет только название, и кстати в название темы тоже изменяет на ссылку ( как я понял полный набор символов ) или нет ?

Последний раз редактировалось vulkan3 29 сен 2013, 15:16, всего редактировалось 2 раза.
Pritoc.org Свободный торрент трекер
Аватара пользователя
PPK
Администратор
Благодарил (а): 82 раза
Поблагодарили: 1621 раз
Сообщения: 10284
Зарегистрирован: 21 мар 2009, 17:13
Сообщение

Автоцензор в phpBB3 - использование html кода

29 сен 2013, 15:26

PPK писал(а):2. Замена с html кодом работает только на странице списка сообщений (и только в сообщениях)
vulkan3 писал(а):ну обычный цензор сами ссылки не изменяет только название

в ссылке невозможно сделать ещё одну ссылку.
Be
Beer
Благодарил (а): 9 раз
Поблагодарили: 2 раза
Сообщения: 36
Зарегистрирован: 04 янв 2017, 17:38
Сообщение

Автоцензор в phpBB3 - использование html кода

25 фев 2017, 22:21

На 3.2

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

	$parse_flags = ($row['bbcode_bitfield'] ? OPTION_FLAG_BBCODE : 0) | OPTION_FLAG_SMILIES;
	$message = generate_text_for_display($row['post_text'], $row['bbcode_uid'], $row['bbcode_bitfield'], $parse_flags, true);
Заменил на:

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

$message = censor_text($row['post_text'], true);
Все работает.
Но гложет вопрос - а правильно ли это? :shock:

Отправлено спустя 58 минут 11 секунд:
Не, не все работает. слова заменяются как надо, но отваливаются частично bbcode, например spoiler
Аватара пользователя
PPK
Администратор
Благодарил (а): 82 раза
Поблагодарили: 1621 раз
Сообщения: 10284
Зарегистрирован: 21 мар 2009, 17:13
Сообщение

Автоцензор в phpBB3 - использование html кода

02 мар 2017, 10:11

Ну в 3.1/3.2 не рекомендуется править код форума, а есть ли там нужные события для того, чтобы сделать расширения - я не смотрел
Be
Beer
Благодарил (а): 9 раз
Поблагодарили: 2 раза
Сообщения: 36
Зарегистрирован: 04 янв 2017, 17:38
Сообщение

Автоцензор в phpBB3 - использование html кода

06 мар 2017, 19:56

Хорошие и полезные расширения от ppk, это было бы тоже популярным. Лично я раньше на SMF заменял многие словосочетания новичков типо: как вставить фото, залить видео, не могу найти, как сделать и пр.
Юзер написал (типо пожаловался) - а вот тебе и ответ сразу. :cry:

Если будет желание и время.... :good:

Вернуться в «Минимоды и хаки для phpBB3»