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

       

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

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

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

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

18 сообщений
  • 1
  • 2
  • След.
Просмотры: 4125 • 
  • Аватара пользователя
    PPK Сообщение 25.07.2013
    В форуме 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 Сообщение 15.08.2013
    Гениальнейшая вещь, спасибо за труды)
Bocman
  • coder Сообщение 15.08.2013
    Надо внедрить, спасибо!!
coder
  • vulkan3 Сообщение 29.09.2013
    а ссылками будет работать ?
    Pritoc.org Свободный торрент трекер
vulkan3
  • Аватара пользователя
    PPK Сообщение 29.09.2013
    а в html нельзя использовать ссылки?
PPK
  • vulkan3 Сообщение 29.09.2013
    ну обычный цензор сами ссылки не изменяет только название, и кстати в название темы тоже изменяет на ссылку ( как я понял полный набор символов ) или нет ?

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

    в ссылке невозможно сделать ещё одну ссылку.
PPK
  • Beer Сообщение 25.02.2017
    На 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 Сообщение 02.03.2017
    Ну в 3.1/3.2 не рекомендуется править код форума, а есть ли там нужные события для того, чтобы сделать расширения - я не смотрел
PPK
  • Beer Сообщение 06.03.2017
    Хорошие и полезные расширения от 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-2026 @ PPK
  • Часовой пояс: UTC+04:00
Участники темы
Список форумов Участники темы
Перейти
Сайт ↳   Новости по сайту ↳   Новости обновлений ↳   Вопросы по сайту ↳   Non-russian speakers forum Форумы по phpBB 3.1-3.3 ↳   Расширения для phpBB 3.1-3.3 ↳   Бета-версии и расширения в разработке ↳   База расширений ↳   Поиск и запросы расширений ↳   Расширения для phpBB 3.1-3.3 для донаторов ↳   Условно-бесплатные расширения ↳   Платные расширения ↳   Расширения для подписчиков ↳   Запросы расширений, функционала и переводов для подписчиков ↳   Переводы расширений для phpBB3.1-3.3 ↳   Стили для phpBB 3.1-3.3 ↳   Вопросы по phpBB 3.1-3.3 Форумы по phpBB 3.0 ↳   Мод трекера ppkBB3cker ↳   Новости по трекеру и обновлениям ↳   Ошибки, проблемы, недочёты ↳   Предложения по новым функциям и возможностям ↳   Вопросы, ответы и примеры решений ↳   Моды и стили для трекера ↳   Готовые стили для трекера ↳   Запросы стилей для трекера ↳   Стили в разработке ↳   Готовые моды для трекера ↳   Запросы модов для трекера ↳   Моды в разработке ↳   Остальное ↳   Часто задаваемые вопросы ↳   Ваши трекеры ↳   Мод трекера xbtBB3cker ↳   Новости по трекеру и обновлениям ↳   Вопросы, ответы, ошибки и обсуждение ↳   Другие моды для phpBB 3.0 ↳   Минимоды и хаки для phpBB3 ↳   phpBB 3.0 ppkBB3cker Edition ↳   Платные услуги, моды, стили для phpBB 3.0 ↳   BB2Spoiler/BB3Spoiler ↳   BB3Topics ↳   BB3Sape ↳   BB3UserAgentInfo ↳   Вопросы по phpBB 3.0 ↳   Вне тематики форума