[РЕШЕНО] hook_comment

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

Аватар пользователя anrn@drupal.org anrn@drupal.org 25 мая 2009 в 1:01

Все мучаю простую на первый взгляд задачку с дополнительной оценкой комментариев нажатием дополнительных кнопок submit (может задачка и правда простая, но вот никак не могу найти приемлемого решения), и сейчас столкнулся с тем, что не получается достать ID (cid) комментария в процессе его создания.
В общем, ситуация такая:

<?php
/* хук комментария во время публикации, API говорит что к этому времени комментарий уже
находится в таблице, и следовательно имеет ID
*/

function tcomment_comment($comment, $op) {
switch ($op) {
case 'publish':
tcomment_add_votes($comment->cid);

}
}
/*я использую модуль Voting API для внесения данных, и здесь должна
произойти запись, но вот cid не прописывается, пустое значение.
*/

function tcomment_add_votes($cid){

$votes[] = array(
'content_type' => 'comment',
'content_id' => $cid,
'value_type' => 'points',
'value' => 1,
);
votingapi_set_votes($votes);
}
?>

Где может быть ошибка?

Комментарии

Аватар пользователя batbug batbug 25 мая 2009 в 9:12

"<a href="mailto:anrn@drupal.org">anrn@drupal.org</a>" wrote:
switch ($op) {
case 'publish':
tcomment_add_votes($comment->cid);

Вот здесь проверяйте.
Хук_коммент в разных OP возвращает то массив, то объект, отсюда и путаница.

Аватар пользователя anrn@drupal.org anrn@drupal.org 26 мая 2009 в 2:03

Решение мне не нравится, вот здесь подробности почему мы получаем вачдог вместо cid - http://drupal.org/node/369520
пришлось пользоваться такой схемой:
<?php
$cid = db_result(db_query('SELECT MAX(cid) FROM {comments}'));
?>
Правда, поставил его прямо на перехват submit, так что есть надежда, что если одновременно два пользователя оприходуют функцию, каждому достанется его результат...