Ошибка в JComments

Есть для Joomla очень хороший компонент JComments. Позволяет добавлять практически для любого материала на сайте возможность комментирования. Обнаружился у них интересный баг. При добавлении комментария JavaScript считает количество введеных символов и выводит это под полем. И вот пишет она например что остался 1-2 символа. Сохраняем комментарий, а в результате получаем сообщение о том что превышена допустимая длина.
Все оказалось очень забавно

При небольшом тестировании выяснилось, что ошибка возникает при большом количестве переводов строк в вводимом комментарии.
Анализ кода дал следующие:
1. При подсчете с помощью JavaScript каждый перевод строки считается как два символа.
2. Дальше форма отправляется через AJAX. И здесь перевод строки — это один символ.
3. Самое интересное. При обработке данных в PHP скрипте все переводы строк заменяются на тег br и начинает занимать аж 6 символов.
4. Для подсчета символов используется функция компонента JCommentsText::strlen. А по сути все сводится к функции PHP strlen.
5. В результате длина строки считалась больше чем было на самом деле.

Самым простым способом было исправить функцию JCommentsText::strlen, добавив в нее первым оператором следующую строку:

$str = preg_replace('#]*?/?>#si', "\r\n", $str);

Дешево и сердито.

Запись опубликована в рубрике Полезности, Фриланс с метками , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий