File "rating-ajax.php"
Full Path: /var/www/bvnghean.vn/save_bvnghean.vn/wp-content/plugins/sneeit-framework/includes/rating/rating-ajax.php
File size: 4.17 KB
MIME-type: text/x-php
Charset: utf-8
<?php
function sneeit_rating_user_rating_callback() {
$target_value = sneeit_get_server_request('value');
$post_id = sneeit_get_server_request('id');
if (!$post_id) {die();}
if (!is_numeric($target_value)) {die();}
global $Sneeit_Rating_Declaration;
$id = $Sneeit_Rating_Declaration['id'];
$display = $Sneeit_Rating_Declaration['display'];
if (!isset($display['text_n_user_vote_x_score'])) {
$display['text_n_user_vote_x_score'] = esc_html__('%1$s user %2$s x %3$s', 'sneeit');
}
if (!isset($display['text_vote'])) {
$display['text_vote'] = esc_html__('vote', 'sneeit');
}
if (!isset($display['text_votes'])) {
$display['text_votes'] = esc_html__('votes', 'sneeit');
}
$target_value = (int) $target_value;
$post_review = get_post_meta($post_id, $id, true);
if (is_array($post_review) && !empty($post_review['type']) && is_array($post_review[$post_review['type']])) {
$post_review_allow_visitor = (!empty($post_review['support-visitor-review']) &&
in_array('visitor', $Sneeit_Rating_Declaration['support']));
if (!$post_review_allow_visitor) {die();}
$post_review_type = $post_review['type'];
$post_review_items = $post_review[$post_review_type];
$post_review_author_total_score = 0;
$post_review_author_total_item = 0;
// valid target value
if ('star' == $post_review_type && $target_value > 5) {
$target_value = 5;
} elseif ('star' != $post_review_type && $target_value > 10) {
$target_value = 10;
}
if ($target_value < 0) {
$target_value = 0;
}
// calculate average score of author rating
foreach ($post_review_items as $item) {
if (isset($item['value']) && is_numeric($item['value'])) {
$post_review_author_total_item++;
$post_review_author_total_score += (int) $item['value'];
}
}
$post_review_author_average_score = 0;
if ($post_review_author_total_item) {
$post_review_author_average_score = $post_review_author_total_score / $post_review_author_total_item;
}
// calculate total average score
$post_review_user = get_post_meta($post_id, $id.'-user-'.$post_review_type, true);
if (!$post_review_user) {
$post_review_user = array('count' => 0, 'total' => 0);
}
$post_review_user['count']++;
$post_review_user['total'] += $target_value;
$post_review_total_item = $post_review_user['count'] + 1;
$post_review_total_score = $post_review_user['total'] + $post_review_author_average_score;
$post_review_average_score = $post_review_total_score / $post_review_total_item;
$post_review_average_scale_score = $post_review_average_score;
$post_review_user_average_score = 0;
if ($post_review_user['count']) {
$post_review_user_average_score = $post_review_user['total'] / $post_review_user['count'];
}
// change to 0-100 ratio
$post_review_author_average_scale_score = $post_review_author_average_score;
if ('star' == $post_review_type ) {
$post_review_average_scale_score = $post_review_average_score * 100 / 5;
$post_review_author_average_scale_score = $post_review_author_average_score * 100 / 5;
$post_review_user_average_scale_score = $post_review_user_average_scale_score * 100 / 5;
} elseif ('point' == $post_review_type) {
$post_review_average_scale_score = $post_review_average_score * 100 / 10;
$post_review_author_average_scale_score = $post_review_author_average_score * 100 / 10;
$post_review_user_average_scale_score = $post_review_user_average_scale_score * 100 / 01;
}
// update review average field for index query post
update_post_meta($post_id, $id.'-average', $post_review_average_scale_score);
update_post_meta($post_id, $id.'-user-'.$post_review_type, $post_review_user);
// output rating box: http://circle.firchow.net/
echo sprintf(
$display['text_n_user_vote_x_score']
, $post_review_user['count']
, $post_review_user['count'] > 1 ? $display['text_vote']:$display['text_votes']
, number_format($post_review_user_average_score, 1)
) . '**********'.$post_review_average_score;
}
die();
}
if (is_admin()) :
add_action( 'wp_ajax_nopriv_sneeit_post_review_user_rating', 'sneeit_rating_user_rating_callback' );
add_action( 'wp_ajax_sneeit_post_review_user_rating', 'sneeit_rating_user_rating_callback' );
endif;// is_admin for ajax