function widget($args, $instance) { if (RWLogger::IsOn()) { $params = func_get_args(); RWLogger::LogEnterence("RWTopRated.widget", $params, true); } if (!defined("WP_RW__USER_KEY") || false === WP_RW__USER_KEY) { return; } if (RatingWidgetPlugin::$WP_RW__HIDE_RATINGS) { return; } extract($args, EXTR_SKIP); $types = array("posts" => array("rclass" => "blog-post", "classes" => "front-post,blog-post,new-blog-post,user-post", "options" => WP_RW__BLOG_POSTS_OPTIONS), "pages" => array("rclass" => "page", "classes" => "page,user-page", "options" => WP_RW__PAGES_OPTIONS), "comments" => array("rclass" => "comment", "classes" => "comment,new-blog-comment,user-comment", "options" => WP_RW__COMMENTS_OPTIONS), "activity_updates" => array("rclass" => "activity-update", "classes" => "activity-update,user-activity-update", "options" => WP_RW__ACTIVITY_UPDATES_OPTIONS), "activity_comments" => array("rclass" => "activity-comment", "classes" => "activity-comment,user-activity-comment", "options" => WP_RW__ACTIVITY_COMMENTS_OPTIONS), "forum_posts" => array("rclass" => "forum-post", "classes" => "forum-post,new-forum-post,user-forum-post", "options" => WP_RW__FORUM_POSTS_OPTIONS), "users" => array("rclass" => "user", "classes" => "user", "options" => WP_RW__FORUM_POSTS_OPTIONS)); $show_any = false; foreach ($types as $type => $data) { if (false !== $instance["show_{$type}"]) { $show_any = true; break; } } if (false === $show_any) { // Nothing to show. return; } $details = array("uid" => WP_RW__USER_KEY); $queries = array(); foreach ($types as $type => $type_data) { if ($instance["show_{$type}"] && $instance["{$type}_count"] > 0) { $options = json_decode(RatingWidgetPlugin::_getOption($type_data["options"])); $queries[$type] = array("rclasses" => $type_data["classes"], "votes" => max(1, (int) $instance["{$type}_min_votes"]), "orderby" => $instance["{$type}_orderby"], "order" => $instance["{$type}_order"], "limit" => (int) $instance["{$type}_count"], "types" => isset($options->type) ? $options->type : "star"); } } $details["queries"] = urlencode(json_encode($queries)); $rw_ret_obj = RatingWidgetPlugin::RemoteCall("action/query/ratings.php", $details); if (false === $rw_ret_obj) { return; } $rw_ret_obj = json_decode($rw_ret_obj); if (null === $rw_ret_obj || true !== $rw_ret_obj->success) { return; } echo $before_widget; $title = empty($instance['title']) ? __('Top Rated', WP_RW__ID) : apply_filters('widget_title', $instance['title']); echo $before_title . $title . $after_title; $empty = true; if (count($rw_ret_obj->data) > 0) { foreach ($rw_ret_obj->data as $type => $ratings) { if (is_array($ratings) && count($ratings) > 0) { echo '<div id="rw_top_rated_' . $type . '">'; if ($instance["show_{$type}_title"]) { /* (1.3.3) - Conditional title display */ $instance["{$type}_title"] = empty($instance["{$type}_title"]) ? ucwords($type) : $instance["{$type}_title"]; echo '<p style="margin: 0;">' . $instance["{$type}_title"] . '</p>'; } echo '<ul class="rw-top-rated-list">'; foreach ($ratings as $rating) { $urid = $rating->urid; $rclass = $types[$type]["rclass"]; RatingWidgetPlugin::QueueRatingData($urid, "", "", $rclass); switch ($type) { case "posts": case "pages": $id = RatingWidgetPlugin::Urid2PostId($urid); $post = get_post($id); $title = trim(strip_tags($post->post_title)); $permalink = get_permalink($post->ID); break; case "comments": $id = RatingWidgetPlugin::Urid2CommentId($urid); $comment = get_comment($id); $title = trim(strip_tags($comment->comment_content)); $permalink = get_permalink($comment->comment_post_ID) . '#comment-' . $comment->comment_ID; break; case "activity_updates": case "activity_comments": $id = RatingWidgetPlugin::Urid2ActivityId($urid); $activity = new bp_activity_activity($id); $title = trim(strip_tags($activity->content)); $permalink = bp_activity_get_permalink($id); break; case "users": $id = RatingWidgetPlugin::Urid2UserId($urid); $title = trim(strip_tags(bp_core_get_user_displayname($id))); $permalink = bp_core_get_user_domain($id); break; case "forum_posts": $id = RatingWidgetPlugin::Urid2ForumPostId($urid); $forum_post = bp_forums_get_post($id); $title = trim(strip_tags($forum_post->post_text)); $page = bb_get_page_number($forum_post->post_position); $permalink = get_topic_link($id, $page) . "#post-{$id}"; break; } $short = mb_strlen($title) > 30 ? trim(mb_substr($title, 0, 30)) . "..." : $title; echo '<li>' . '<a href="' . $permalink . '" title="' . $title . '">' . $short . '</a>' . '<br />' . '<div class="rw-ui-container rw-class-' . $rclass . ' rw-urid-' . $urid . '"></div>' . '</li>'; } echo "</ul>"; echo "</div>"; $empty = false; } } } if (true === $empty) { echo '<p style="margin: 0;">There are no rated items for this period.</p>'; } else { // Set a flag that the widget is loaded. RatingWidgetPlugin::TopRatedWidgetLoaded(); ?> <script type="text/javascript"> // Hook render widget. if (typeof(RW_HOOK_READY) === "undefined"){ RW_HOOK_READY = []; } RW_HOOK_READY.push(function(){ RW._foreach(RW._getByClassName("rw-top-rated-list", "ul"), function(list){ RW._foreach(RW._getByClassName("rw-ui-container", "div", list), function(rating){ // Deactivate rating. RW._Class.remove(rating, "rw-active"); var i = (RW._getByClassName("rw-report-link", "a", rating))[0]; if (RW._is(i)){ i.parentNode.removeChild(i); } // Update size to small. if (!RW._Class.has(rating, "rw-size-small")) { RW._Class.add(rating, "rw-size-small"); RW._Class.remove(rating, "rw-size-medium"); RW._Class.remove(rating, "rw-size-large"); } if (RW._Class.has(rating, "rw-ui-star")) { RW._foreach(RW._getByTagName("li", rating), function(star){ // Clear star event handlers. star.onmouseover = star.onmouseout = star.onclick = ""; }); } else { RW._foreach(RW._getByTagName("i", rating), function(thumb){ // Clear star event handlers. thumb.onmouseover = thumb.onmouseout = thumb.onclick = ""; }); var like_label = RW._getByClassName("rw-ui-like-label", "span", rating); if (like_label.length == 1) { like_label = like_label[0]; like_label.style.fontSize = like_label.style.lineHeight = ""; } var dislike_label = RW._getByClassName("rw-ui-dislike-label", "span", rating); if (dislike_label.length == 1) { dislike_label = dislike_label[0]; dislike_label.style.fontSize = dislike_label.style.lineHeight = ""; } } var label = (RW._getByClassName("rw-ui-info", "span", rating))[0]; label.style.fontSize = label.style.lineHeight = ""; }); }); }); </script> <?php } echo $after_widget; }