Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

Дизайн и модификация Invision Community

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

Минимальное количество символов в сообщении

Здравствуйте. Перечитал все подобные темы, никак не могу настроить минимальное количество символов для отправки сообщения (и новых тем), для борьбы с мелким спамом.

 

Метод отсюда - http://ipbskins.ru/forum/blog/69/entry-180-минимальная-длина-сообщений-в-ipboard-3х/ почему-то не работает вообще на версии 3.4.9.

 

Также есть хук (FC33) Minimum Character Limit, но он работает тоже как-то странно, то ограничивает отправку коротких сообщений, то нет. Точно не ограничивает, если отправить несколько сообщений подряд...

 

P.S. - где-то уже вроде отписывались по проблемам с этим хукам, но к сожалению не смог найти эту тему.

 

Не подскажите, пожалуйста, в чем там проблема? Хук прикрепляю. Заранее огромное спасибо

(FC33) Minimum Character Limit.xml

Рекомендованные сообщения

Метод отсюда - http://ipbskins.ru/f...й-в-ipboard-3х/ почему-то не работает вообще на версии 3.4.9.

В 3.1 редактор другой.

В 3.4 пост идет с тегами. Если Вы отправляете символ a (англ.), то пост будет

<p>a</p>

. А значение выражения (strlen( trim( IPSText::removeControlCharacters( IPSText::br2nl( $post['post'] ) ) ) )) будет равна 8. Если Вы отправите а (русс), то значение будет 9.

Используйте mb_strlen() или IPSText::mbstrlen(). Для удаления тегов - strip_tags() или IPSText::stripTags()

  • Автор

Странно, если поменять оригинальную строку

 

if ( strlen( trim( IPSText::removeControlCharacters( IPSText::br2nl( $post['post'] ) ) ) ) < 1 AND !$this->getIsPreview() )

На

 

if ( mb_strlen( trim( IPSText::removeControlCharacters( IPSText::br2nl( $post['post'] ) ) ) ) < 10 AND !$this->getIsPreview() )

То вообще нет изменений. А если поменять на то:

 

if ( strip_tags( trim( IPSText::removeControlCharacters( IPSText::br2nl( $post['post'] ) ) ) ) < 10 AND !$this->getIsPreview() )

То сообщение вообще не отправляется с любым кол-вом символов...

В первом случае Вы получаете значение (кол-во) вместе с тегами.

Во втором - строку, из которой удалены теги.

 

Нужно совместить.

  • Автор

@newbie, огромное спасибо за подсказку!

 

Для 3.4.x

 

admin\applications\forums\sources\classes\post\classPost.php

 

Найти (3 раза):

 

strlen( trim( IPSText::removeControlCharacters( IPSText::br2nl( $post['post'] ) ) ) ) < 1

Заменить на:

 

mb_strlen( strip_tags ( trim( IPSText::removeControlCharacters( IPSText::br2nl( $post['post'] ) ) ) ) ) < 10

< 10 - минимальная длина сообщений в символах.

Изменено пользователем Strategius

Есть в этом один интересный нюанс - если вставить смайлик, то ограничение на кол-во символов оно не влияет. Поставь хоть ограничение в сто символов, смайлик проходит без проблем.

Есть в этом один интересный нюанс - если вставить смайлик, то ограничение на кол-во символов оно не влияет. Поставь хоть ограничение в сто символов, смайлик проходит без проблем

Как так?

У Вас 3.1.4. Проверил. Смайлы не проходят.

Смайл - тег img. А мы теги вырезаем strip_tags.

  • Автор
Смайлы не проходят

В 3.4 проходят как ни странно...

У Вас 3.1.4. Проверил. Смайлы не проходят.

Смайл - тег img. А мы теги вырезаем strip_tags.

Хм... Может это ещё зависит от каких либо настроек?

 

Все остальные символы, и бб-коды и html-код - не проходит.

Сделайте var_dump( mb_strlen( strip_tags ( trim( IPSText::removeControlCharacters( IPSText::br2nl( $post['post'] ) ) ) ) ) ); exit;

и посмотрите что содержит очищенная строка.

var_dump( mb_strlen( strip_tags ( trim( IPSText::removeControlCharacters( IPSText::br2nl( $post['post'] ) ) ) ) ) ); exit;

Это поставить вместо чего?

Это поставить вместо чего?

Перед условием.

Перед условием.

Выдаёт int(число символов напечатанных в форму)

 

А вот если смайл вписать, то выдаёт - int(0)

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.