/**
  * Generates the overall array for a single item in the display
  * @since  1.7.0
  * @param object $item The current item
  * @return array $column_data;
  */
 protected function get_row_data($item)
 {
     switch ($this->type) {
         case 'courses':
             // Get Learners (i.e. those who have started)
             $course_args = array('post_id' => $item->ID, 'type' => 'sensei_course_status', 'status' => 'any');
             $course_students = Sensei_Utils::sensei_check_for_activity(apply_filters('sensei_analysis_course_learners', $course_args, $item));
             // Get Course Completions
             $course_args = array('post_id' => $item->ID, 'type' => 'sensei_course_status', 'status' => 'complete');
             $course_completions = Sensei_Utils::sensei_check_for_activity(apply_filters('sensei_analysis_course_completions', $course_args, $item));
             // Course Lessons
             $course_lessons = Sensei()->lesson->lesson_count(array('publish', 'private'), $item->ID);
             // Get Percent Complete
             $grade_args = array('post_id' => $item->ID, 'type' => 'sensei_course_status', 'status' => 'any', 'meta_key' => 'percent');
             $percent_count = count(Sensei_Utils::sensei_check_for_activity(apply_filters('sensei_analysis_course_percentage', $grade_args, $item), true));
             $percent_total = Sensei_Grading::get_course_users_grades_sum($item->ID);
             $course_average_percent = 0;
             if ($percent_count > 0 && $percent_total > 0) {
                 $course_average_percent = abs(round(doubleval($percent_total / $percent_count), 2));
             }
             // Output course data
             if ($this->csv_output) {
                 $course_title = apply_filters('the_title', $item->post_title, $item->ID);
             } else {
                 $url = add_query_arg(array('page' => $this->page_slug, 'course_id' => $item->ID), admin_url('admin.php'));
                 $course_title = '<strong><a class="row-title" href="' . esc_url($url) . '">' . apply_filters('the_title', $item->post_title, $item->ID) . '</a></strong>';
                 $course_average_percent .= '%';
             }
             // End If Statement
             $column_data = apply_filters('sensei_analysis_overview_column_data', array('title' => $course_title, 'students' => $course_students, 'lessons' => $course_lessons, 'completions' => $course_completions, 'average_percent' => $course_average_percent), $item, $this);
             break;
         case 'lessons':
             // Get Learners (i.e. those who have started)
             $lesson_args = array('post_id' => $item->ID, 'type' => 'sensei_lesson_status', 'status' => 'any');
             $lesson_students = Sensei_Utils::sensei_check_for_activity(apply_filters('sensei_analysis_lesson_learners', $lesson_args, $item));
             // Get Course Completions
             $lesson_args = array('post_id' => $item->ID, 'type' => 'sensei_lesson_status', 'status' => array('complete', 'graded', 'passed', 'failed'), 'count' => true);
             $lesson_completions = Sensei_Utils::sensei_check_for_activity(apply_filters('sensei_analysis_lesson_completions', $lesson_args, $item));
             // Course
             $course_id = get_post_meta($item->ID, '_lesson_course', true);
             $course_title = $course_id ? get_the_title($course_id) : '';
             $lesson_average_grade = __('n/a', 'woothemes-sensei');
             if (false != get_post_meta($item->ID, '_quiz_has_questions', true)) {
                 // Get Percent Complete
                 $grade_args = array('post_id' => $item->ID, 'type' => 'sensei_lesson_status', 'status' => array('graded', 'passed', 'failed'), 'meta_key' => 'grade');
                 $grade_count = count(Sensei_Utils::sensei_check_for_activity(apply_filters('sensei_analysis_lesson_grades', $grade_args, $item), true));
                 $grade_total = Sensei_Grading::get_lessons_users_grades_sum($item->ID);
                 $lesson_average_grade = 0;
                 if ($grade_total > 0 && $grade_count > 0) {
                     $lesson_average_grade = abs(round(doubleval($grade_total / $grade_count), 2));
                 }
             }
             // Output lesson data
             if ($this->csv_output) {
                 $lesson_title = apply_filters('the_title', $item->post_title, $item->ID);
             } else {
                 $url = add_query_arg(array('page' => $this->page_slug, 'lesson_id' => $item->ID), admin_url('admin.php'));
                 $lesson_title = '<strong><a class="row-title" href="' . esc_url($url) . '">' . apply_filters('the_title', $item->post_title, $item->ID) . '</a></strong>';
                 if ($course_id) {
                     $url = add_query_arg(array('page' => $this->page_slug, 'course_id' => $course_id), admin_url('admin.php'));
                     $course_title = '<a href="' . esc_url($url) . '">' . $course_title . '</a>';
                 } else {
                     $course_title = __('n/a', 'woothemes-sensei');
                 }
                 if (is_numeric($lesson_average_grade)) {
                     $lesson_average_grade .= '%';
                 }
             }
             // End If Statement
             $column_data = apply_filters('sensei_analysis_overview_column_data', array('title' => $lesson_title, 'course' => $course_title, 'students' => $lesson_students, 'completions' => $lesson_completions, 'average_grade' => $lesson_average_grade), $item, $this);
             break;
         case 'users':
         default:
             // Get Started Courses
             $course_args = array('user_id' => $item->ID, 'type' => 'sensei_course_status', 'status' => 'any');
             $user_courses_started = Sensei_Utils::sensei_check_for_activity(apply_filters('sensei_analysis_user_courses_started', $course_args, $item));
             // Get Completed Courses
             $course_args = array('user_id' => $item->ID, 'type' => 'sensei_course_status', 'status' => 'complete');
             $user_courses_ended = Sensei_Utils::sensei_check_for_activity(apply_filters('sensei_analysis_user_courses_ended', $course_args, $item));
             // Get Quiz Grades
             $grade_args = array('user_id' => $item->ID, 'type' => 'sensei_lesson_status', 'status' => 'any', 'meta_key' => 'grade');
             $grade_count = count(Sensei_Utils::sensei_check_for_activity(apply_filters('sensei_analysis_user_lesson_grades', $grade_args, $item), true));
             $grade_total = Sensei_Grading::get_user_graded_lessons_sum($item->ID);
             $user_average_grade = 0;
             if ($grade_total > 0 && $grade_count > 0) {
                 $user_average_grade = abs(round(doubleval($grade_total / $grade_count), 2));
             }
             // Output the users data
             if ($this->csv_output) {
                 $user_name = Sensei_Learner::get_full_name($item->ID);
             } else {
                 $url = add_query_arg(array('page' => $this->page_slug, 'user_id' => $item->ID), admin_url('admin.php'));
                 $user_name = '<strong><a class="row-title" href="' . esc_url($url) . '">' . $item->display_name . '</a></strong>';
                 $user_average_grade .= '%';
             }
             // End If Statement
             $column_data = apply_filters('sensei_analysis_overview_column_data', array('title' => $user_name, 'registered' => $item->user_registered, 'active_courses' => $user_courses_started - $user_courses_ended, 'completed_courses' => $user_courses_ended, 'average_grade' => $user_average_grade), $item, $this);
             break;
     }
     // end switch
     return $column_data;
 }