Проблема с модулем Comment Notify

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

Аватар пользователя oos_s oos_s 28 октября 2008 в 17:08

Коллеги, поставил на 6-ку Comment Notify.
В настройках модуля вылезло:
warning: Invalid argument supplied for foreach() in /home/public_html/includes/form.inc on line 1189.

Начал построчно переводить... полезло дальше:
* warning: array_fill() [function.array-fill]: Number of elements must be positive in /home/public_html/includes/database.inc on line 240.
* warning: implode() [function.implode]: Invalid arguments passed in /home/public_html/includes/database.inc on line 240.
* warning: array_keys() [function.array-keys]: The first argument should be an array in /home/public_html/modules/user/user.module on line 500.
* user warning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1 query: SELECT p.perm FROM role r INNER JOIN permission p ON p.rid = r.rid WHERE r.rid IN () in /home/public_html/modules/user/user.module on line 500.

Подскажите пожалуйста куда копать? Может быть кто нибудь уже настраивал/правил этот модуль под себя?

Комментарии

Аватар пользователя freeyourself freeyourself 20 мая 2010 в 13:26

При установке comment_notify-6.x-1.4 на drupal 6.x в разделе "администрирование-установки сайта-уведомления о комментариях" могут возникать ошибки:

* warning: array_fill() [function.array-fill]: Number of elements must be positive in D:\WEB\www\freeyourself\htdocs\includes\database.inc on line 253.
* warning: implode() [function.implode]: Bad arguments. in D:\WEB\www\freeyourself\htdocs\includes\database.inc on line 253.
* warning: array_keys() [function.array-keys]: The first argument should be an array in D:\WEB\www\freeyourself\htdocs\modules\user\user.module on line 502.
* user warning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1 query: SELECT p.perm FROM role r INNER JOIN permission p ON p.rid = r.rid WHERE r.rid IN () in D:\WEB\www\freeyourself\htdocs\modules\user\user.module on line 502.

Причина ошибки:

При определенном условии форма администрирования данного модуля пытается сделать запись в системный лог. Для этого модуль использует права "пользователя по умолчанию" (uid=0). Зачем они это так делают - фиг знает. Но если пользователя с uid=0 в базе нет, то выскакивают эти ошибки.

Пользователя с uid=0 мне пришлось удалить при переносе сайта на хостинг, т.к. поле uid автоинкрементальное и может начинаться с 1. При попытке вставить запись с uid=0 sql-скрипт падает с ошибкой. С счел, что нулевой пользователь не нужен, т.к. у него все остальные поля пустые, и попросту удалил его.

Как исправить:

Найти в файле comment_notify.module в коде функции comment_notify_settings() следующий фрагмент:

if (isset($enabled_types[$type]) && $enabled_types[$type] && variable_get('comment_anonymous_'. $type, COMMENT_ANONYMOUS_MAYNOT_CONTACT) == COMMENT_ANONYMOUS_MAYNOT_CONTACT) {
$account = user_load(array('uid' => 0));
...

я просто заменил
'uid' => 0
на
'uid' => 1
это id админа, который уж точно имеет все права. В принципе, можно закоментировать всю строчку, ибо в раздел администрирования все равно может попасть только админ.

Аватар пользователя Dan Dan 20 мая 2010 в 14:05

Юзер 0 в системе должен быть обязательно. Если у вас кривой скрипт дампа, просто правьте ручками каждый раз или используйте другой дампер.

Аватар пользователя kardinal kardinal 9 января 2011 в 17:29

Не могу понять, почему отсылаются уведомления только на те комментарии, которые публикуются, только после премодерации?