Все мучаю простую на первый взгляд задачку с дополнительной оценкой комментариев нажатием дополнительных кнопок 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);
}
?>
Где может быть ошибка?
Комментарии
Вот здесь проверяйте.
Хук_коммент в разных OP возвращает то массив, то объект, отсюда и путаница.
Нет, не помогает, уже все "версии" испробовал.. Похоже надо искать какой-то другой хук, но даже ума не приложу какой)
Решение мне не нравится, вот здесь подробности почему мы получаем вачдог вместо cid - http://drupal.org/node/369520
пришлось пользоваться такой схемой:
<?php
$cid = db_result(db_query('SELECT MAX(cid) FROM {comments}'));
?>
Правда, поставил его прямо на перехват submit, так что есть надежда, что если одновременно два пользователя оприходуют функцию, каждому достанется его результат...
А если попробовать распечатать массив?
<?phpswitch ($op) {
case 'publish':
print_r($op);
print_r($comment);
}?>
нет там ID, в этом и фишка)