Магазин
Правила Ответы на вопросы Конфиденциальность
Магазин
Правила Ответы на вопросы Конфиденциальность
  • Быстрые действия Ярлыки
    Общие действия
    Связаться с администрацией
    • Бот

       

Минимоды и хаки для phpBB3

  • Список форумов
  • phpBB 3.0
  • Другие моды для phpBB3
  • Минимоды и хаки для phpBB3

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

Небольшие моды и хаки для форума phpBB3
Правила форума
При размещении мода/статьи взятой с другого форума/сайта обязательно необходимо указывать первоисточник сообщения.

18 сообщений
  • 1
  • 2
  • След.
Просмотры: 3814 • 
Аватара пользователя
PPK
Администратор
Сообщения: 10513
Зарегистрирован: 21 мар 2009, 17:13
Сообщение 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. Т.к. функция автоцензора отключаемая (настраивается в правах), необходимо включить её (запретить отключение) для нужных групп пользователей
PPK
Bocman
VIP
Сообщения: 7
Зарегистрирован: 06 ноя 2012, 17:13
Сообщение 15 авг 2013, 17:19
Гениальнейшая вещь, спасибо за труды)
Bocman
coder
Донатор
Сообщения: 697
Зарегистрирован: 18 мар 2013, 13:44
Сообщение 15 авг 2013, 17:57
Надо внедрить, спасибо!!
coder
vulkan3
VIP
Сообщения: 1801
Зарегистрирован: 28 сен 2009, 03:36
Сообщение 29 сен 2013, 14:14
а ссылками будет работать ?
Pritoc.org Свободный торрент трекер
vulkan3
Аватара пользователя
PPK
Администратор
Сообщения: 10513
Зарегистрирован: 21 мар 2009, 17:13
Сообщение 29 сен 2013, 14:45
а в html нельзя использовать ссылки?
PPK
vulkan3
VIP
Сообщения: 1801
Зарегистрирован: 28 сен 2009, 03:36
Сообщение 29 сен 2013, 15:15
ну обычный цензор сами ссылки не изменяет только название, и кстати в название темы тоже изменяет на ссылку ( как я понял полный набор символов ) или нет ?

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

в ссылке невозможно сделать ещё одну ссылку.
PPK
Beer
Пользователь
Сообщения: 36
Зарегистрирован: 04 янв 2017, 17:38
Сообщение 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
Beer
Аватара пользователя
PPK
Администратор
Сообщения: 10513
Зарегистрирован: 21 мар 2009, 17:13
Сообщение 02 мар 2017, 10:11
Ну в 3.1/3.2 не рекомендуется править код форума, а есть ли там нужные события для того, чтобы сделать расширения - я не смотрел
PPK
Beer
Пользователь
Сообщения: 36
Зарегистрирован: 04 янв 2017, 17:38
Сообщение 06 мар 2017, 19:56
Хорошие и полезные расширения от ppk, это было бы тоже популярным. Лично я раньше на SMF заменял многие словосочетания новичков типо: как вставить фото, залить видео, не могу найти, как сделать и пр.
Юзер написал (типо пожаловался) - а вот тебе и ответ сразу. :cry:

Если будет желание и время.... :good:
Beer
18 сообщений
  • 1
  • 2
  • След.

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

Time: 0.000s | Queries: 0 | Peak Memory Usage: 0.00 МБ | GZIP: Unknown | SQL Explain
  • Список форумов
2018, made with by ThemeKita Создано на основе phpBB® Forum Software © phpBB Limited Русская поддержка phpBB (C) 2009-2025 @ PPK
  • Часовой пояс: UTC+04:00
Участники темы
Список форумов Участники темы
Перейти
Сайт ↳   Новости по сайту ↳   Новости обновлений ↳   Вопросы по сайту ↳   Non-russian speakers forum phpBB 3.1-3.3 ↳   Вопросы по phpBB 3.1-3.3 ↳   Расширения для phpBB 3.1-3.3 ↳   Условно-бесплатные расширения ↳   Платные расширения ↳   Расширения для подписчиков ↳   Расширения в разработке ↳   База расширений ↳   Стили для phpBB 3.1-3.3 ↳   Переводы расширений для phpBB3.1-3.3 ↳   Поиск и запросы расширений ↳   Запросы расширений, функционала и переводов для подписчиков ppkBB3cker ↳   Новости по трекеру и обновлениям ↳   Ошибки, проблемы, недочёты ↳   Предложения по новым функциям и возможностям ↳   Вопросы, ответы и примеры решений ↳   Моды и стили для трекера ↳   Готовые стили для трекера ↳   Запросы стилей для трекера ↳   Стили в разработке ↳   Готовые моды для трекера ↳   Запросы модов для трекера ↳   Моды в разработке ↳   Остальное ↳   F.A.Q. ↳   Ваши трекеры ↳   Оффтопик xbtBB3cker ↳   Новости по трекеру и обновлениям ↳   Вопросы, ответы, ошибки и обсуждение phpBB 3.0 ↳   Другие моды для phpBB3 ↳   Минимоды и хаки для phpBB3 ↳   Вопросы по phpBB3 ↳   phpBB3 ppkBB3cker Edition ↳   Платные услуги, моды, стили ↳   BB2Spoiler/BB3Spoiler ↳   BB3Topics ↳   BB3Sape ↳   BB3UserAgentInfo