Однобайтный шовинизм продолжает нависать над Друпал-разработкой (модуль Flexifilter)

Jun 26, 2012 10:26


Изрядную часть воскресенья убил на попытку организовать на Маоизм.ру wiki-проект с помощью модуля Wikitools. Точнее, я его установил и настроил раньше, и думал, что всё с ним в порядке, а тут попробовал написать на пробу - и убедился, что wiki-нотация не работает.

Не всё так просто. Потребовалось прикрутить ещё модуль Flexifilter для создания настраиваемых фильтров текста, а к нему импортировать фильтр Mediawiki Extended Format (весело, что последняя его версия просто не рабочая, нужно брать предпоследнюю). И после всего этого… не заработало!

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

Рядом используются Юникод-безопасные функции drupal_substr и drupal_strlen. Пошукал drupal_strpos, но, как ни удивительно, такой нету. Пришлось обойтись многобайтной mb_strpos, благо, заменять пришлось только в нескольких местах.

После этого wiki-нотация заработала, но я пришёл к радикальному выводу, что нужно ставить отдельный движок MediaWiki, со всеми уже заведомо работающими и отлаженными wiki-фичами, а к основному сайту его интегрировать с помощью модуля Mediawiki auth bridge. Почему я раньше об этом не подумал? …А, модуль интеграции для 7-й версии «Друпала» выпущен только 1 июня.

P. S. Нет, не поэтому. А потому что расширение для интеграции на стороне MediaWiki AuthDrupal устаревшее и не рассчитанное на работу с Postgre. Пришлось теперь его вразумлять с большим трудом.

drupal, php, кодировка, Web-разработка, Web-программирование, шовинизм

Previous post Next post
Up