• File: comment.php
  • Full Path: /home/chassiw/www/wp-content/plugins/indutri-themer/includes/comment.php
  • File size: 4.73 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php
class Indutri_Themer_Comment{

  public static $instance;

  public static function getInstance() {
    if (!isset(self::$instance) && !(self::$instance instanceof Indutri_Themer_Comment)) {
      self::$instance = new Indutri_Themer_Comment();
    }
    return self::$instance;
  }

  public function __construct(){ 
    add_action('comment_post', array( $this, 'comment_ratings'));
  }

  public function comment_ratings($comment_id) {
    add_comment_meta($comment_id, 'rate', $_POST['rate']);
  }

  public function comment_field($aria_req){
    $html = '<div>
              <div class="comment-rating clearfix">
                <label class="field-label" for="comment">'.esc_html__('What is it like to Post?', 'kipso').'</label>
                <ul class="comment-star-rating">
                  <li><a href="#" title="Really bad - 1 star" class="one-star" data-rate="1"><i class="far fa-star"></i></a></li>
                  <li><a href="#" title="Bad - 2 stars" class="two-stars" data-rate="2"><i class="far fa-star"></i><i class="far fa-star"></i></a></li>
                  <li><a href="#" title="Good - 3 stars" class="three-stars" data-rate="3"><i class="far fa-star"></i><i class="far fa-star"></i><i class="far fa-star"></i></a></li>
                  <li><a href="#" title="Very good - 4 stars" class="four-stars" data-rate="4"><i class="far fa-star"></i><i class="far fa-star"></i><i class="far fa-star"></i><i class="far fa-star"></i></a></li>
                  <li><a href="#" title="Excellent - 5 stars" class="five-stars" data-rate="5"><i class="far fa-star"></i><i class="far fa-star"></i><i class="far fa-star"></i><i class="far fa-star"></i><i class="far fa-star"></i></a></li>
                </ul>
                <input type="hidden" id="comment-rating-ip" name="rate" id="rate" value="" />
              </div>
            </div>';
    return $html;
  }

  public function comment_rate($rate) {
    $alt = '';
    switch ($rate) {
      case '0':
        $alt = 'Zero - 0 stars';
        break;
      case '1':
        $alt = 'Really bad - 1 star';
        break;
      case '2':
        $alt = 'Bad - 2 stars';
        break;
      case '3':
        $alt = 'Good - 3 stars';
        break;
      case '4':
        $alt = 'Very good - 4 stars';
        break;
      case '5':
        $alt = 'Excellent - 5 stars';
        break;
      default:
        $alt = 'No grade';
        break;
    }

    for ($i = 0; $i < 5; $i++) {
      if ($rate > $i){
        echo '<i class="on fas fa-star"></i>';
      }else{
        echo '<i class="off far fa-star"></i>';
      }
    }
  }

  public function get_average_ratings($id) {
    $comment_array = get_approved_comments($id);
    $count = 0;
    if ($comment_array) {
      $i = 0;
      $total = 0;
      foreach($comment_array as $comment){
        $rate = get_comment_meta($comment->comment_ID, 'rate');
        if(isset($rate[0]) && $rate[0] !== '') {
          $i++;
          $total += $rate[0];
          $count++;
        }
      }
      if($i == 0)
        return array(
          'rate' =>  0,
          'count' => 0
        );
      else
        return array(
          'rate' =>  round($total/$i, 1),
          'count' => $count
        ); 
    } else {
      return array(
        'rate' =>  0,
        'count' => 0
      );
    }
  }

  public function rating_display($rate){
    $width = ($rate/5) * 100;
    $ouput = '';
    $ouput .= '<div class="course-review-wrapper">';
      $ouput .= '<ul class="base-starts">';
        for ($i=1; $i <= 5; $i++) { 
          $ouput .= '<li><i class="fa fa-star"></i></li>';
        }
      $ouput .= '</ul>';
      $ouput .= '<ul class="votes-starts" style="width: '.esc_attr($width).'%;">';
        for ($i=1; $i <= 5; $i++) { 
          $ouput .= '<li><i class="fa fa-star"></i></li>';
        }
      $ouput .= '</ul>';    
    $ouput .= '</div>';
    return $ouput;
  }

  public function rating_results($id){
    $comment_array = get_approved_comments($id);
    $results = array(
      '1_star' => 0,
      '2_star' => 0,
      '3_star' => 0,
      '4_star' => 0,
      '5_star' => 0,
      'count'  => 0
    );
    if ($comment_array) {
      $i = 0;
      $total = 0;
      foreach($comment_array as $comment){
        $rate = get_comment_meta($comment->comment_ID, 'rate');
        if(isset($rate[0]) && $rate[0] !== '') {
          $i++;
          $results['count']++;
          if($rate[0] == 1){
            $results['1_star']++;
          }elseif($rate[0] == 2){
            $results['2_star']++;
          }elseif($rate[0] == 3){
            $results['3_star']++;
          }elseif($rate[0] == 4){
            $results['4_star']++;
          }elseif($rate[0] == 5){
            $results['5_star']++;
          }
        }
      }
    }
    return $results;
  }

}

new Indutri_Themer_Comment();