public function widget($args, $instance)
 {
     extract($instance);
     echo $args['before_widget'];
     if (isset($title) && !empty($title)) {
         echo $args['before_title'] . $title . $args['after_title'];
     }
     // Templates
     if (isset($template) && !is_array($template)) {
         $template = $template == 'all' ? array_keys($this->templates) : array($template);
     } elseif (!isset($template)) {
         $template = array_keys($this->templates);
     }
     // Sort
     $sort = $this->widget_field($instance, 'to_display', true);
     //Limit
     $limit = $this->widget_field($instance, 'to_display_count', true);
     // Get Ratings
     $ratings = self::query_ratings($template, $sort, $limit);
     $options = $this->widget_field($instance, 'options', true);
     echo '<ul class="rwp-widget-ratings">';
     foreach ($ratings as $i => $rating) {
         //RWP_Reviewer::pretty_print( $rating );
         $rank_num = '';
         if ($sort != 'latest') {
             $rank_num = '<span class="rwp-ranking-number">' . ($i + 1) . '</span>';
         }
         $has_rank = !empty($rank_num) ? 'rwp-has-ranking' : '';
         echo '<li class="' . $has_rank . '">';
         echo $rank_num;
         echo '<div class="rwp-wdj-content">';
         // Post
         if (in_array('rating_option_post_title', $options)) {
             echo '<span class="rwp-w-post-title">' . get_the_title($rating['rating_post_id']) . '</span>';
         }
         // Post
         echo '<div class="rwp-cell">';
         // Avatar
         $has_avatar = '';
         if (in_array('rating_option_avatar', $options)) {
             $avatar = $rating['rating_user_id'] == 0 && isset($rating['rating_user_email']) && !empty($rating['rating_user_email']) ? $rating['rating_user_email'] : $rating['rating_user_id'];
             echo get_avatar($avatar, 30);
             $has_avatar = 'rwp-has-avatar';
         }
         // Avatar
         echo '<div class="rwp-cell-content ' . $has_avatar . '">';
         // Username
         if (in_array('rating_option_name', $options)) {
             $name = $rating['rating_user_id'] > 0 ? get_user_by('id', $rating['rating_user_id'])->display_name : $rating['rating_user_name'];
             echo '<span class="rwp-w-name">' . $name . '</span>';
         }
         // Username
         // Date
         echo '<span class="rwp-w-date"> ' . date_i18n(get_option('date_format') . ', ' . get_option('time_format'), $rating['rating_date']) . '</span>';
         // Score
         if (in_array('rating_option_score', $options)) {
             $mode = $this->preferences['preferences_rating_mode'];
             $template = isset($rating['rating_template']) ? $this->templates[$rating['rating_template']] : array();
             switch ($mode) {
                 case 'five_stars':
                 case 'full_five_stars':
                     echo RWP_Reviewer::get_stars($rating['rating_score'], $template);
                     break;
                 default:
                     echo '<div class="rwp-criterion">';
                     echo '<div class="rwp-criterion-bar-base">';
                     echo RWP_Reviewer::get_score_bar($rating['rating_score'], $template);
                     echo '</div><!-- /criterion-bar -->';
                     echo '<span class="rwp-criterion-score">' . round(RWP_Reviewer::get_avg($rating['rating_score']), 1) . '</span>';
                     echo '</div><!-- /criterion -->';
                     break;
             }
         }
         // Score
         echo '</div><!-- /cell-content -->';
         echo '</div><!-- /cell -->';
         // Title
         if (in_array('rating_option_title', $options) && !empty($rating['rating_title'])) {
             echo '<span class="rwp-w-title">' . $rating['rating_title'] . '</span>';
         }
         // Title
         // Comment
         if (in_array('rating_option_comment', $options) && !empty($rating['rating_comment'])) {
             $comment = $rating['rating_comment'];
             if (strlen($comment) > $this->comment_limit) {
                 $comment = substr($comment, 0, $this->comment_limit) . '...';
             }
             echo '<p class="rwp-w-comment">' . $comment . '</p>';
         }
         // Comment
         // Show Link
         if (in_array('rating_option_link', $options)) {
             $url = add_query_arg('rwpurid', $rating['rating_id'], get_permalink($rating['rating_post_id']));
             echo '<a href="' . esc_url($url) . '">' . $this->widget_field($instance, 'show', true) . '</a>';
         }
         // link
         echo '</div> <!-- /content -->';
         echo '</li>';
     }
     echo '</ul>';
     echo $args['after_widget'];
 }