/**          RATING HTML HELPER
 * This function is a helper function to set up the rating html
 * 
 * @param boolean $use_schema user option
 * @param boolean $use_ratings user option
 * @param boolean $use_css_ratings user option
 * @param array $katb_widget_tdata testimonial data
 * @param integer $i where we are in the $katb_widget_tdata loop
 * 
 * @return $html which is the html for the for title bar
 */
function katb_widget_insert_rating($use_schema, $use_ratings, $use_css_ratings, $katb_widget_tdata, $i)
{
    $html = '';
    $html2 = '';
    $html3 = '';
    $html_meta = '';
    if ($use_ratings == 1) {
        $html2 .= '<div class="katb_widget_rating">';
        //Display the rating if selected
        if ($use_ratings == 1) {
            $rating = $katb_widget_tdata[$i]['tb_rating'];
            if ($rating == '') {
                $rating = 0;
            }
            if ($rating > 0) {
                if ($use_css_ratings == 1) {
                    $html .= '<span class="katb_css_rating">';
                    $html .= katb_css_rating($rating);
                    $html .= '</span>';
                } else {
                    $html .= '<span class="rateit smallstars katb_widget_display_rating" data-rateit-starwidth="12" data-rateit-starheight="12" data-rateit-value="' . esc_attr($rating) . '" data-rateit-ispreset="true" data-rateit-readonly="true"></span>';
                }
                //schema schema schema :)
                if ($use_schema == 1) {
                    $html_meta .= '<div itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating"> ';
                    $html_meta .= '<meta itemprop="worstRating" content="0" />';
                    $html_meta .= '<meta itemprop="ratingValue" content="' . esc_attr($rating) . '" />';
                    $html_meta .= '<meta itemprop="bestRating" content="5" />';
                    $html_meta .= '</div>';
                }
            }
        }
        $html3 .= '</div>';
    }
    $html_return = '';
    if ($html == '') {
        if ($html_meta != '') {
            $html_return .= $html_meta;
        }
    } else {
        $html_return .= $html2 . $html . $html_meta . $html3;
    }
    return $html_return;
}
/**
 * This function sets up the html string for the aggregate markup
 * 
 * The database is queried for the group name to get the average rating, the 
 * review count with ratings and the total review count. It then sets up the 
 * return string based on whether or not the summary is to be dispayed or hidden with
 * meta tags
 * 
 * @param boolean $display_aggregate
 * @param string $group_name
 * @param boolean $use_group_name_for_aggregate
 * @param string $custom_aggregate_name
 * 
 * @return $agg_html string of html
 */
function katb_schema_aggregate_markup($display_aggregate, $group_name, $use_group_name_for_aggregate, $custom_aggregate_name, $layout)
{
    //setup database table
    global $wpdb, $tablename;
    $tablename = $wpdb->prefix . 'testimonial_basics';
    $katb_options = katb_get_options();
    $use_css_ratings = $katb_options['katb_use_css_ratings'];
    if ($layout == "Side Meta") {
        $side_meta_class = "_side_meta";
    } else {
        $side_meta_class = '';
    }
    $agg_html = '';
    //query database
    if ($group_name != 'all') {
        $aggregate_data = $wpdb->get_results(" SELECT `tb_rating` FROM `{$tablename}` WHERE `tb_approved` = '1' AND `tb_group` = '{$group_name}' ", ARRAY_A);
        $aggregate_total_approved = $wpdb->num_rows;
    } else {
        $aggregate_data = $wpdb->get_results(" SELECT `tb_rating` FROM `{$tablename}` WHERE `tb_approved` = '1' ", ARRAY_A);
        $aggregate_total_approved = $wpdb->num_rows;
    }
    $count = 0;
    $sum = 0;
    for ($j = 0; $j < $aggregate_total_approved; $j++) {
        //wp_die($aggregate_data[j]['tb_rating']);
        $rating = (double) $aggregate_data[$j]['tb_rating'];
        if ($rating != '' && $rating > 0) {
            $count = $count + 1;
            $sum = $sum + (double) $aggregate_data[$j]['tb_rating'];
        }
    }
    $total_votes = $count;
    if ($count == 0) {
        $avg_rating = 0;
    } else {
        $avg_rating = round($sum / $count, 1);
    }
    if ($avg_rating == 0) {
        $rounded_avg_rating = 0;
    } else {
        //round to nearest 0.5 out of 5
        if ($avg_rating >= ceil($avg_rating) - 0.25) {
            $rounded_avg_rating = ceil($avg_rating);
        } elseif ($avg_rating >= ceil($avg_rating) - 0.75) {
            $rounded_avg_rating = ceil($avg_rating) - 0.5;
        } else {
            $rounded_avg_rating = floor($avg_rating);
        }
    }
    if ($count > 1 && $avg_rating > 0 && $rounded_avg_rating > 0) {
        if ($display_aggregate != 1) {
            $agg_html .= '<div class="katb_no_display" itemscope itemtype="http://data-vocabulary.org/Review-aggregate">';
            if ($use_group_name_for_aggregate == 1 && $group_name != 'all') {
                $agg_html .= '<meta content="' . stripcslashes(esc_attr($group_name)) . '" itemprop="itemreviewed" />';
            } else {
                if ($use_group_name_for_aggregate != 1 && $custom_aggregate_name != '') {
                    $agg_html .= '<meta content="' . stripcslashes(esc_attr($custom_aggregate_name)) . '" itemprop="itemreviewed" />';
                } else {
                    $agg_html .= '<meta content="' . esc_html__('All Reviews', 'testimonial-basics') . '" itemprop="itemreviewed" />';
                }
            }
            $agg_html .= '<span itemprop="rating" itemscope itemtype="http://data-vocabulary.org/Rating">';
            $agg_html .= '<meta content="' . stripcslashes(esc_attr($avg_rating)) . '" itemprop="average" />';
            $agg_html .= '<meta content="0" itemprop="worst" />';
            $agg_html .= '<meta content="5" itemprop="best" />';
            $agg_html .= '</span>';
            $agg_html .= '<meta content="' . stripcslashes(esc_attr($total_votes)) . '" itemprop="votes" />';
            $agg_html .= '<meta content="' . stripcslashes(esc_attr($aggregate_total_approved)) . '" itemprop="count" />';
            $agg_html .= '</div>';
        } else {
            $agg_html .= '<div class="katb_aggregate_wrap' . $side_meta_class . '" itemscope itemtype="http://data-vocabulary.org/Review-aggregate">';
            $agg_html .= '<span class="aggregate_review_label">' . esc_html__('Aggregate Review', 'testimonial-basics') . ' :</span> ';
            if ($use_group_name_for_aggregate == 1 && $group_name != 'all') {
                $agg_html .= '<span class="aggregate_itemreviewed" itemprop="itemreviewed">' . stripcslashes(esc_attr($group_name)) . '</span><br/>';
            } else {
                if ($use_group_name_for_aggregate != 1 && $custom_aggregate_name != '') {
                    $agg_html .= '<span class="aggregate_itemreviewed" itemprop="itemreviewed">' . stripcslashes(esc_attr($custom_aggregate_name)) . '</span><br/>';
                } else {
                    $agg_html .= '<span class="aggregate_itemreviewed" itemprop="itemreviewed">' . esc_html__('All Reviews', 'testimonial-basics') . '</span><br/>';
                }
            }
            if ($use_css_ratings != 1) {
                $agg_html .= '<span class="rateit katb_display_rating" data-rateit-value="' . stripcslashes(esc_attr($rounded_avg_rating)) . '" data-rateit-ispreset="true" data-rateit-readonly="true"></span>';
            } else {
                $agg_html .= '<span class="katb_css_rating katb_aggy">';
                $agg_html .= katb_css_rating($rounded_avg_rating);
                $agg_html .= '</span>';
            }
            $agg_html .= ' - ';
            $agg_html .= '<span itemprop="rating" itemscope itemtype="http://data-vocabulary.org/Rating">';
            $agg_html .= '<span class="average_number" itemprop="average">' . stripcslashes(esc_attr($avg_rating)) . '</span>';
            $agg_html .= '<span class="out_of">&nbsp;' . esc_html__('out of', 'testimonial-basics') . '&nbsp;</span>';
            $agg_html .= '<span class="best" itemprop="best">5</span>';
            $agg_html .= '</span>';
            $agg_html .= ', ';
            if ($total_votes == 1) {
                $agg_html .= '<span class="total_votes" itemprop="votes">' . stripcslashes(esc_attr($total_votes)) . '&nbsp;</span>';
                $agg_html .= '<span class="votes_label">' . esc_html__('vote', 'testimonial-basics') . '</span>';
            } else {
                if ($total_votes == 0) {
                    $agg_html .= '<span class="votes_label">' . esc_html__('not rated', 'testimonial-basics') . '</span>';
                } else {
                    $agg_html .= '<span class="total_votes" itemprop="votes">' . stripcslashes(esc_attr($total_votes)) . '&nbsp;</span>';
                    $agg_html .= '<span class="votes_label">' . esc_html__('votes', 'testimonial-basics') . '</span>';
                }
            }
            $agg_html .= ', ';
            if ($aggregate_total_approved == 0) {
                $agg_html .= '<span class="reviews_label">' . esc_html__('no reviews yet', 'testimonial-basics') . '</span>';
            } elseif ($aggregate_total_approved == 1) {
                $agg_html .= '<span class="total_reviews">' . stripcslashes(esc_attr($aggregate_total_approved)) . '&nbsp;</span>';
                $agg_html .= '<span class="reviews_label">' . esc_html__('review', 'testimonial-basics') . '</span>';
            } else {
                $agg_html .= '<span class="total_reviews">' . stripcslashes(esc_attr($aggregate_total_approved)) . '&nbsp;</span>';
                $agg_html .= '<span class="reviews_label">' . esc_html__('reviews', 'testimonial-basics') . '</span>';
            }
            $agg_html .= '</div>';
        }
    }
    return $agg_html;
}