*/ // 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')); }
<?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)); } ?>