function render_multi_editor($settings) { $multi_id = $settings["multi_id"] == 0 ? $this->g->o["mur_review_set"] : $settings["multi_id"]; $post_id = $settings["post_id"]; $init_votes = $settings["votes"]; $set = gd_get_multi_set($multi_id); if (is_null($set)) { $set = gd_get_multi_set(); } $multi_id = !is_null($set) ? $set->multi_id : 0; if ($multi_id > 0 && $post_id > 0) { $vote_id = GDSRDBMulti::get_vote($post_id, $multi_id, count($set->object)); $multi_data = GDSRDBMulti::get_values($vote_id, 'rvw'); if (count($multi_data) == 0) { GDSRDBMulti::add_empty_review_values($vote_id, count($set->object)); $multi_data = GDSRDBMulti::get_values($vote_id, 'rvw'); } } else { $multi_data = array(); } $votes = array(); if (count($multi_data) > 0) { foreach ($multi_data as $md) { $single_vote = array(); $single_vote["votes"] = 1; $single_vote["score"] = $md->user_votes; $single_vote["rating"] = $md->user_votes; $votes[] = $single_vote; } } else { for ($i = 0; $i < count($set->object); $i++) { $iv = isset($init_votes[$i]) ? $init_votes[$i] : 0; $votes[] = array("votes" => $iv == 0 ? 0 : 1, "score" => $iv == 0 ? 0 : $iv, "rating" => $iv == 0 ? 0 : $iv); } } if ($settings["admin"]) { include $this->g->plugin_path . 'integrate/edit_multi.php'; } else { return GDSRRenderT2::render_mre(intval($settings["tpl"]), array("post_id" => $settings["post_id"], "style" => $settings["style"], "height" => $settings["size"], "votes" => $votes, "set" => $set, "allow_vote" => true)); } }
function recalculate_multi_review_db($post_id, $record_id, $set) { global $wpdb, $table_prefix; $multi_data = GDSRDBMulti::get_values($record_id, 'rvw'); if (count($multi_data) == 0) { GDSRDBMulti::add_empty_review_values($record_id, count($set->object)); $multi_data = GDSRDBMulti::get_values($record_id, 'rvw'); } $review = new GDSRArticleMultiReview($post_id); $review->set = $set; $i = 0; $weighted = 0; $weight_norm = array_sum($set->weight); foreach ($multi_data as $md) { $single_vote = array(); $single_vote["votes"] = 1; $single_vote["score"] = $md->user_votes; $single_vote["rating"] = $single_vote["score"]; $review->values = $single_vote; $weighted += $single_vote["rating"] * $set->weight[$i] / $weight_norm; $i++; } $review->rating = @number_format($weighted, 1); $sql = sprintf("update %sgdsr_multis_data set average_review = '%s' where id = %s", $table_prefix, $review->rating, $record_id); $wpdb->query($sql); return $review; }
/** * Renders multi rating review editor block. * * @param int $post_id id of the post to render review editor for * @param bool $admin wheter the rendering is for admin edit post page or not * @return string rendered result */ function blog_multi_review_editor($post_id, $settings = array(), $admin = true, $allow_vote = true) { if ($settings["id"] == "") { $multi_id = $this->o["mur_review_set"]; } else { $multi_id = $settings["id"]; } $set = gd_get_multi_set($multi_id); if ($multi_id > 0 && $post_id > 0) { $vote_id = GDSRDBMulti::get_vote($post_id, $multi_id, count($set->object)); $multi_data = GDSRDBMulti::get_values($vote_id, 'rvw'); if (count($multi_data) == 0) { GDSRDBMulti::add_empty_review_values($vote_id, count($set->object)); $multi_data = GDSRDBMulti::get_values($vote_id, 'rvw'); } } else { $multi_data = array(); } $votes = array(); foreach ($multi_data as $md) { $single_vote = array(); $single_vote["votes"] = 1; $single_vote["score"] = $md->user_votes; $single_vote["rating"] = $md->user_votes; $votes[] = $single_vote; } if ($admin) { include $this->plugin_path . 'integrate/edit_multi.php'; } else { return GDSRRenderT2::render_mre("oxygen", intval($settings["tpl"]), $allow_vote, $votes, $post_id, $set, 20); } }