voteapi_set_votes是否处理投票和未投票

时间:2016-03-30 14:26:52

标签: drupal drupal-7

voteapi_set_votes是否处理投票和取消投票。我将尝试使用与此Drupal Creating Votes in Voting API Through Code相同的逻辑来创建投票。我要问的是如何处理投票和不投票。

1 个答案:

答案 0 :(得分:1)

通常,您使用votingapi_set_votes添加投票,并使用votingapi_delete_votes删除投票。 http://www.drupalcontrib.org/似乎没有votingapi模块的实际代码,所以请查看源代码。

对于这两个功能,您需要一个基本标准,如下所示:

$criteria = array(
  'entity_type' => 'node',
  'entity_id' => $node->nid,
  'uid' => $user->uid,
  'value_type' => 'points',
  'tag' => 'vote',
);

对于设置投票,您需要其值,该值通常仅与值字段的条件不同:

$votes = $copy_of_criteria;
$votes['value'] = 666;

然后

votingapi_set_votes($votes, $criteria);

删除$criteria匹配的所有投票,然后添加新投票(由$votes指定)。此函数还负责重新计算投票缓存(即聚合值)。

要删除投票(“unvote”),您首先需要选择所需的投票,然后将其传递到votingapi_delete_votes函数中:

$votes = votingapi_select_votes($criteria);
votingapi_delete_votes($votes);

此功能不会重新计算投票缓存,因此您需要明确地执行此操作:

votingapi_recalculate_results('node', $node->nid);