/** * 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; }