Skip to content

Instantly share code, notes, and snippets.

@champsupertramp
Last active November 29, 2017 06:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save champsupertramp/4dc5cc1a75ecd61365d664d6297deac4 to your computer and use it in GitHub Desktop.
Save champsupertramp/4dc5cc1a75ecd61365d664d6297deac4 to your computer and use it in GitHub Desktop.
Ultimate Member User Reviews - Adjust rating stats
<?php
function um_custom_review_adjust_rating( $post_id, $old_rating, $new_rating, $new_user_id, $new_reviewer_id ) {
update_post_meta( $post_id, '_rating', $new_rating );
$old_user_id = get_post_meta( $post_id, '_user_id', true );
$old_reviewer_id = get_post_meta( $post_id, '_reviewer_id', true );
update_post_meta( $post_id, '_reviewer_id', $new_reviewer_id );
update_post_meta( $post_id, '_user_id', $new_user_id );
$reviews = get_user_meta( $new_user_id, '_reviews', true );
if( ! is_array( $reviews ) ){
$reviews = array();
}
foreach ($reviews as $key => $value) {
if( empty( $key ) ){
unset( $reviews[ $key ] );
}
}
if ( ! isset( $reviews[ $new_reviewer_id ] ) ) {
$reviews[ $new_reviewer_id ] = $new_rating;
update_user_meta( $new_user_id, '_reviews', $reviews );
}else{
$reviews[ $new_reviewer_id ] = $new_rating;
update_user_meta( $new_user_id, '_reviews', $reviews );
}
$reviews_compound = get_user_meta( $new_user_id, '_reviews_compound', true );
if( $new_user_id == $old_user_id ){
$reviews_compound = (int)$reviews_compound - (int)$old_rating;
}
$reviews_compound = (int)$reviews_compound + (int)$new_rating;
update_user_meta( $new_user_id, '_reviews_compound', $reviews_compound );
// total reviews
if ( isset( $_REQUEST['publish'] ) ) {
$reviews_total = get_user_meta( $new_user_id, '_reviews_total', true );
if( ! $reviews_total ){
$reviews_total = 1;
}else{
$reviews_total = $reviews_total + 1;
}
update_user_meta( $new_user_id, '_reviews_total', $reviews_total );
}
if( ! isset( $_REQUEST['publish'] ) && $new_user_id != $old_user_id ){
// update new user review account
$reviews_total = get_user_meta( $new_user_id, '_reviews_total', true );
if( ! $reviews_total ){
$reviews_total = 1;
}else{
$reviews_total = $reviews_total + 1;
}
update_user_meta( $new_user_id, '_reviews_total', $reviews_total );
}
// total reviews
$reviews_total = get_user_meta( $new_user_id, '_reviews_total', true );
// update rating average
if ( $reviews_compound > 0 ) {
$reviews_avg = $reviews_compound / $reviews_total;
$reviews_avg = number_format( $reviews_avg, 2 );
update_user_meta( $new_user_id, '_reviews_avg', (float) $reviews_avg );
}
// change reviewer
$reviews = get_user_meta( $new_user_id, '_reviews', true );
if( ! is_array( $reviews ) ){
$reviews = array();
}
foreach ($reviews as $key => $value) {
if( empty( $key ) ){
unset( $reviews[ $key ] );
}
}
// change reviewer ID
if( ! empty( $new_reviewer_id ) && $new_reviewer_id != $old_reviewer_id ){
$reviews[ $new_reviewer_id ] = $new_rating;
if( isset( $reviews[ $old_reviewer_id ] ) ){
unset( $reviews[ $old_reviewer_id ] );
}
foreach ( $reviews as $key => $value ) {
if( empty( $key ) ){
unset( $reviews[ $key ] );
}
}
update_user_meta( $new_user_id, '_reviews', $reviews );
}
// change reciever
if( ! empty( $new_user_id ) && $new_user_id != $old_user_id ){
// update review count to abandoned profile
$reviews_total = get_user_meta( $old_user_id, '_reviews_total', true );
if( ! $reviews_total ){
$reviews_total = 0;
}else{
$reviews_total = $reviews_total - 1;
}
update_user_meta( $old_user_id, '_reviews_total', $reviews_total );
// update compounds of abandoned profile
$reviews_compound = get_user_meta( $old_user_id, '_reviews_compound', true );
$reviews_compound = (int)$reviews_compound - (int)$old_rating;
update_user_meta( $old_user_id, '_reviews_compound', $reviews_compound );
// total reviewews
$reviews_total = get_user_meta( $old_user_id, '_reviews_total', true );
// update rating average
$reviews_avg = $reviews_compound / $reviews_total;
$reviews_avg = number_format( $reviews_avg, 2 );
if( $reviews_avg < 0 ) $reviews_avg = 0;
update_user_meta( $old_user_id, '_reviews_avg', (float) $reviews_avg );
$reviews = get_user_meta( $old_user_id, '_reviews', true );
if( ! is_array( $reviews ) ){
$reviews = array();
}
if( isset( $reviews[ $old_reviewer_id ] ) ){
unset( $reviews[ $old_reviewer_id ] );
}
if( isset( $reviews[ $new_reviewer_id ] ) ){
unset( $reviews[ $new_reviewer_id ] );
}
foreach ( $reviews as $key => $value ) {
if( empty( $key ) ){
unset( $reviews[ $key ] );
}
}
update_user_meta( $old_user_id, '_reviews', $reviews );
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment