• Авторизация


Модуль Comment Notify в Drupal 5.x - исправление бага 28-11-2007 17:08 к комментариям - к полной версии - понравилось!


Статья отсюда:

Думаю, практически в каждом блоге, посвещенном IT-тематике, рано или поздно всплывает тема CMS, на которой он основан. Я не исключение. Поэтому напишу решение одной из проблем в Drupal, с которой я столкнулся. Интересно только "друпалерам".

Захотел я прикрутить к сайту отсылку комментариев для зарегистрированных и анонимных пользователей на почту. Примерно так, как это сделано в LiveJournal. Выяснилось, что модуль Comment Notify для реализации этого функционала находится в стадии dev (разработка). Что само по себе странно. Ни за что не поверю, что такая возможность не востребована.


После установке модуля обнаружилось, что у меня он работает крайне криво. Во первых, письма отсылаются не от email, прописанном в настройках сайта, а от системного email типа root@номер_площадки.название_хостера.ру. Во вторых, при ответе на комментарии пользователь получал кучу предупреждений вида:

* user warning: Table 'comments' doesn't exist query: update comments set notify = 0 where cid = 40 in database.mysql.inc on line 172.
* warning: array_merge() [function.array-merge]: Argument #2 is not an array in common.inc on line 1940.
* warning: Invalid argument supplied for foreach() in common.inc on line 1971.
* warning: array_merge() [function.array-merge]: Argument #2 is not an array in common.inc on line 1940.
* warning: Invalid argument supplied for foreach() in common.inc on line 1971.
* warning: array_merge() [function.array-merge]: Argument #2 is not an array in common.inc on line 1940.
* warning: Invalid argument supplied for foreach() in common.inc on line 1971.

Хочу сразу сказать спасибо участникам проекта drupal.ru. Меня направили в нужном направлении.
Но для решения проблемы понадобились навыки программирования. Потому что в модуле я обнаружил следующие баги:
  • Один из SQL-запросов был составлен без учета префиксов таблиц. В случае, если префиксы не используются, все проходит нормально. Но у меня они как раз используются. Исправил.
  • Вызов функции для генерации email происходил с передачей неинициализированного массива. Вообще говоря, мои скудные познания PHP говорят мне, что такая конструкция по идее должна бы работать. Возможно, дело в особенностях конкретной сборки PHP у хостера. В любом случае, принудительная инициализация массива, которую я добавил, лишней не будет. В результате письма стали генерироваться с правильным email и исчезли предупреждения, связанные с массивом.

В общем, в итоге все вроде заработало. Уведомления о комментариях рассылаются.
Скачать можно здесь
вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник Модуль Comment Notify в Drupal 5.x - исправление бага | Как_делать_сайты - Сообщество "Как делать сайты" | Лента друзей Как_делать_сайты / Полная версия Добавить в друзья Страницы: раньше»