--- fivestar_field.inc.orig 2009-02-17 18:46:07.000000000 +0100 +++ fivestar_field.inc 2009-02-17 18:49:29.000000000 +0100 @@ -107,7 +107,6 @@ function fivestar_field_settings($op, $f */ function fivestar_field($op, &$node, $field, &$items, $teaser, $page) { $fieldname = $field['field_name']; - switch ($op) { case 'insert': case 'update': @@ -124,10 +123,12 @@ function fivestar_field($op, &$node, $fi $items[$delta]['target'] = $node->$field['dynamic_target']; } } - - if (is_numeric($items[$delta]['target'])) { + if (is_numeric($items[$delta]['target']) && $node->status == 1) { _fivestar_cast_vote('node', $items[$delta]['target'], $items[$delta]['rating'], $items[$delta]['axis'], $node->uid); votingapi_recalculate_results('node', $items[$delta]['target']); + } else { + _fivestar_cast_vote('node', $items[$delta]['target'], 0 , $items[$delta]['axis'], $node->uid); + votingapi_recalculate_results('node', $items[$delta]['target']); } } break; @@ -140,9 +141,9 @@ function fivestar_field($op, &$node, $fi // Use eval rather than drupal_eval to allow access to local variables. $items[$delta]['target'] = eval($item['target']); } - if (is_numeric($items[$delta]['target'])) { - _fivestar_cast_vote('node', $items[$delta]['target'], 0, $items[$delta]['axis'], $node->uid); - votingapi_recalculate_results('node', $items[$delta]['target']); + if (is_numeric($items[$delta]['target'][0]['nid'])) { + _fivestar_cast_vote('node', $items[$delta]['target'][0]['nid'], 0, $field['axis'], $node->uid); + votingapi_recalculate_results('node', $items[$delta]['target'][0]['nid']); } } break;