function likebtn_get_count in Like Button 7
Same name and namespace in other branches
- 8.2 likebtn.module \likebtn_get_count()
Get likes and dislikes count for the node.
1 call to likebtn_get_count()
- likebtn_likes_page in ./
likebtn.likes.inc - Generate the likes page.
File
- ./
likebtn.module, line 1427 - Implements the LikeBtn module.
Code
function likebtn_get_count($entity, $entity_type) {
list($entity_id, $entity_revision_id, $bundle) = entity_extract_ids($entity_type, $entity);
try {
$query = db_select('votingapi_vote', 'vv')
->fields('vv')
->condition('vv.entity_type', $entity_type)
->condition('vv.entity_id', $entity_id)
->condition('vv.value_type', 'points')
->condition('vv.tag', LIKEBTN_VOTING_TAG)
->orderBy('vv.vote_source', 'ASC');
$votingapi_results = $query
->execute();
} catch (Exception $e) {
}
// Display a table with like counts per button.
$rows = array();
// Like and dislike rows has been found.
$records_by_source = array();
while (1) {
$record = $votingapi_results
->fetchAssoc();
// Records with likes and dislikes go one after another.
if (!count($records_by_source) || $record['vote_source'] == $records_by_source[count($records_by_source) - 1]['vote_source']) {
// Do nothing.
}
elseif (count($records_by_source)) {
$first_record = $records_by_source[0];
$second_record = array(
'value' => 0,
);
if (!empty($records_by_source[1])) {
$second_record = $records_by_source[1];
}
if ($first_record['value'] >= 0 && $second_record['value'] <= 0) {
$likes = $first_record['value'];
$dislikes = abs($second_record['value']);
}
else {
$likes = $second_record['value'];
$dislikes = abs($first_record['value']);
}
$likes_minus_dislikes = $likes - $dislikes;
$rows[] = array(
'button' => _likebtn_get_name($first_record['vote_source']),
'likes' => $likes,
'dislikes' => $dislikes,
'likes_minus_dislikes' => $likes_minus_dislikes,
);
$records_by_source = array();
}
$records_by_source[] = $record;
if (!$record) {
break;
}
}
return $rows;
}