Example #1
0
 */
// Get input
$entity_guid = (int) get_input('answer_guid');
$user_guid = elgg_get_logged_in_user_guid();
if ($entity = get_entity($entity_guid)) {
    $container = get_entity($entity->container_guid);
    // check if the user voted to an owned entity
    if ($entity->getOwnerGUID() == $user_guid) {
        register_error(elgg_echo('answers:vote:failure:owner'));
        return true;
    }
    // check if user can vote on this group
    if (!$container->canWriteToContainer()) {
        register_error(elgg_echo('answers:vote:failure:notmember'));
        return true;
    }
    elgg_load_library('answers:utilities');
    // check the actual user opinion
    if (answers_does_user_dislike_answer($entity, $user_guid)) {
        $action_result = answers_unlike($entity, $user_guid);
    } else {
        $action_result = answers_dislike($entity, $user_guid);
    }
    if ($action_result) {
        echo json_encode(array('score' => answers_overall_rating($entity), 'like_dislike' => answers_get_like_dislike($entity, $user_guid)));
    } else {
        register_error(elgg_echo('answers:vote:failure'));
    }
} else {
    register_error(elgg_echo('answers:notfound'));
}
Example #2
0
<?php

/**
 * Voting area view
 */
$answer = $vars['entity'];
$question = get_question_for_answer($answer);
$chosen_answer = $question->chosen_answer == $answer->getGUID();
$count_like = answers_count_likes($answer);
$count_dislike = answers_count_dislikes($answer);
$owns_question = $question->getOwnerGUID() == $_SESSION['guid'];
$owns_answer = $answer->getOwnerGUID() == $_SESSION['guid'];
$can_rate = elgg_is_logged_in() && !$owns_answer;
if ($can_rate) {
    $user_like_dislike = answers_get_like_dislike($answer, $_SESSION['user']->getGUID());
    $user_like = $user_like_dislike == "like";
    $user_dislike = $user_like_dislike == "dislike";
    $ts = time();
    $token = generate_action_token($ts);
    $url_token = "&__elgg_token={$token}&__elgg_ts={$ts}";
    $like_url = $vars['url'] . "action/answer/like?answer_id=" . $answer->getGUID() . $url_token;
    $dislike_url = $vars['url'] . "action/answer/dislike?answer_id=" . $answer->getGUID() . $url_token;
    $unlike_url = $vars['url'] . "action/answer/unlike?answer_id=" . $answer->getGUID() . $url_token;
}
?>
<div class="answers_rating_block">
<?php 
if ($can_rate) {
    echo elgg_view("answers/rating_icon", array('type' => 'like', 'tooltip' => $user_like ? 'unlike' : 'like', 'href' => $user_like ? $unlike_url : $like_url, 'selected' => $user_like));
}
?>