Пример #1
0
 function render_multi_rating($post, $user, $settings)
 {
     if ($this->is_bot) {
         return "";
     }
     if (is_feed()) {
         return "";
     }
     $set = gd_get_multi_set($settings["id"]);
     if ($set == null) {
         return "";
     }
     $dbg_allow = "F";
     $allow_vote = true;
     if ($this->is_ban && $this->o["ip_filtering"] == 1) {
         if ($this->o["ip_filtering_restrictive"] == 1) {
             return "";
         } else {
             $allow_vote = false;
         }
         $dbg_allow = "B";
     }
     if ($settings["read_only"] == 1) {
         $dbg_allow = "RO";
         $allow_vote = false;
     }
     if (is_single() || is_page() && $this->o["display_comment_page"] == 1) {
         $this->init_post();
     }
     $rd_post_id = intval($post->ID);
     $rd_user_id = intval($user->ID);
     $rd_is_page = $post->post_type == "page" ? "1" : "0";
     $remaining = 0;
     $deadline = "";
     if ($this->p) {
         $post_data = $this->p;
     } else {
         $post_data = GDSRDatabase::get_post_data($rd_post_id);
         if (count($post_data) == 0) {
             GDSRDatabase::add_default_vote($rd_post_id, $rd_is_page);
             $post_data = GDSRDatabase::get_post_data($rd_post_id);
         }
     }
     if ($post_data->rules_articles == "H") {
         return "";
     }
     if ($allow_vote) {
         if ($this->o["author_vote"] == 1 && $rd_user_id == $post->post_author) {
             $allow_vote = false;
             $dbg_allow = "A";
         }
     }
     if ($allow_vote) {
         if ($post_data->rules_articles == "" || $post_data->rules_articles == "A" || $post_data->rules_articles == "U" && $rd_user_id > 0 || $post_data->rules_articles == "V" && $rd_user_id == 0) {
             $allow_vote = true;
         } else {
             $allow_vote = false;
             $dbg_allow = "R_" . $post_data->rules_articles;
         }
     }
     if ($allow_vote && ($post_data->expiry_type == 'D' || $post_data->expiry_type == 'T')) {
         switch ($post_data->expiry_type) {
             case "D":
                 $remaining = GDSRHelper::expiration_date($post_data->expiry_value);
                 $deadline = $post_data->expiry_value;
                 break;
             case "T":
                 $remaining = GDSRHelper::expiration_countdown($post->post_date, $post_data->expiry_value);
                 $deadline = GDSRHelper::calculate_deadline($remaining);
                 break;
         }
         if ($remaining < 1) {
             GDSRDatabase::lock_post($rd_post_id);
             $allow_vote = false;
             $dbg_allow = "T";
         }
     }
     if ($allow_vote) {
         $allow_vote = GDSRDBMulti::check_vote($rd_post_id, $rd_user_id, $set->multi_id, 'multis', $_SERVER["REMOTE_ADDR"], $this->o["logged"] != 1, $this->o["mur_allow_mixed_ip_votes"] == 1);
         if (!$allow_vote) {
             $dbg_allow = "D";
         }
     }
     if ($allow_vote) {
         $allow_vote = $this->check_cookie($rd_post_id . "#" . $set->multi_id, "multis");
         if (!$allow_vote) {
             $dbg_allow = "C";
         }
     }
     $multi_record_id = GDSRDBMulti::get_vote($rd_post_id, $set->multi_id, count($set->object));
     $multi_data = GDSRDBMulti::get_values($multi_record_id);
     $votes = array();
     foreach ($multi_data as $md) {
         $single_vote = array();
         $single_vote["votes"] = 0;
         $single_vote["score"] = 0;
         if ($post_data->rules_articles == "A" || $post_data->rules_articles == "N") {
             $single_vote["votes"] = $md->user_voters + $md->visitor_voters;
             $single_vote["score"] = $md->user_votes + $md->visitor_votes;
         } else {
             if ($post_data->rules_articles == "V") {
                 $single_vote["votes"] = $md->visitor_voters;
                 $single_vote["score"] = $md->visitor_votes;
             } else {
                 $single_vote["votes"] = $md->user_voters;
                 $single_vote["score"] = $md->user_votes;
             }
         }
         if ($single_vote["votes"] > 0) {
             $rating = $single_vote["score"] / $single_vote["votes"];
         } else {
             $rating = 0;
         }
         if ($rating > $set->stars) {
             $rating = $set->stars;
         }
         $single_vote["rating"] = @number_format($rating, 1);
         $votes[] = $single_vote;
     }
     $debug = $rd_user_id == 0 ? "V" : "U";
     $debug .= $rd_user_id == $post->post_author ? "A" : "N";
     $debug .= ":" . $dbg_allow . " [" . STARRATING_VERSION . "]";
     $tags_css = array();
     $tags_css["MUR_CSS_BLOCK"] = $this->o["mur_class_block"];
     $tags_css["MUR_CSS_HEADER"] = $this->o["mur_class_header"];
     $tags_css["MUR_CSS_TEXT"] = $this->o["mur_class_text"];
     $tags_css["MUR_CSS_BUTTON"] = $this->o["mur_class_button"];
     if ($settings["tpl"] > 0) {
         $template_id = $settings["tpl"];
     } else {
         $template_id = $this->o["default_mrb_template"];
     }
     return GDSRRenderT2::render_mrb($this->o["mur_style"], $template_id, $allow_vote, $votes, $rd_post_id, $set, $this->o["mur_size"], $this->o["mur_header_text"], $tags_css, $settings["average_stars"], $settings["average_size"], $post_data->expiry_type, $remaining, $deadline, $this->o["mur_button_active"] == 1, $this->o["mur_button_text"], $debug, $this->loader_multis);
 }