Фильтр мата (и не только) текстовых полей ноды.

Главные вкладки

Аватар пользователя Alexza Alexza 23 января 2013 в 14:46

Доброго времени суток.

В общем, есть нода, в которой имеется 2 текстового поля.
- Для одного поля требуется полная фильтровка мата (либо запретить создание ноды, либо заменить мат на спец. слово, указанное в настройках (пример, [цензара])).
- Для другого поля требуется фильтр по некоторой базе слов. Если вдруг совпадает - запрет на создание, без замен.

Есть ли какие-нибудь готовые решения по введению ограничений для отдельных полей ноды, нежели для всех типов материала?
На данный момент вижу только один выход: хуком перед созданием ноды получать текстовые поля и их фильтровать готовыми функциями. Но боюсь, что с фильтром мата свой костыль может ухудшить производительность, поэтому интересны готовые, простестированные, решения.

Комментарии

Аватар пользователя Alexza Alexza 25 января 2013 в 0:04

С этим ознакамливался.
Смущает только то, что нельзя определить именно в конкретной ноде, нежели на весь "Plain Text", либо "Full HTML".
Ну, думаю, что придется первый пункт решать этим способом, а второй - своим хуком.

Аватар пользователя Alexza Alexza 25 января 2013 в 14:21

Не подскажете, есть ли возможность запретить создание ноды без замены цензурой, если обнаружен мат?

Аватар пользователя arraynull arraynull 29 января 2013 в 6:51

"Alexza" wrote:
Не подскажете, есть ли возможность запретить создание ноды без замены цензурой, если обнаружен мат?

В друпале это делается через your_form_name_validate вашей формы.

Кстати вот еще вариант борьбы с матом http://www.sooource.net/drupal-antimat-module

Аватар пользователя Alexza Alexza 29 января 2013 в 15:47

arraynull wrote:
"Alexza" wrote:
Не подскажете, есть ли возможность запретить создание ноды без замены цензурой, если обнаружен мат?

В друпале это делается через your_form_name_validate вашей формы.

Кстати вот еще вариант борьбы с матом http://www.sooource.net/drupal-antimat-module[/quote]

В том-то и дело, что фильтр работает с форматом ввода.
Хотя, как я понял из вашего коммента, можно использовать функцию фильтра в своем модуле, так? Вроде не работает такой способ.

Аватар пользователя Alexza Alexza 31 января 2013 в 22:02

arraynull wrote:
Можно и без фильтра
"arraynull" wrote:
В друпале это делается через your_form_name_validate вашей формы.

Хм.. Такой хук реализовать и получить значение поля я могу, но вот как отфильтровать его готовым решением? Модуль фильтра API не предлагает, как я знаю.

Аватар пользователя arraynull arraynull 31 января 2013 в 23:06

Вы писали

"Alexza" wrote:
Не подскажете, есть ли возможность запретить создание ноды без замены цензурой, если обнаружен мат?

это делается в хуке _validate. В нем если есть мат делаете form_set_error

Аватар пользователя Alexza Alexza 1 февраля 2013 в 13:45

arraynull wrote:
Вы писали
"Alexza" wrote:
Не подскажете, есть ли возможность запретить создание ноды без замены цензурой, если обнаружен мат?

это делается в хуке _validate. В нем если есть мат делаете form_set_error

Это я понимаю. Как в хуке validate узнать о том, что есть мат? Какая функция из фильтра может проверить значение поля?

Аватар пользователя Alexza Alexza 2 февраля 2013 в 0:23

Кто-нибудь может помочь внятным ответом?
Меня не интересует регулярка, я знаю как хукать валидацию формы.
Мне нужно именно при валидации проверить поле на содержание мата. Какой модуль антимата предоставляет API для использования в своих модулях?
Писать свои регулярки не собираюсь, дабы пойдет изобретение велосипеда.