From 4a995a1fe7d42f18a6bafcc4cd0682153d8bd7aa Mon Sep 17 00:00:00 2001 From: Simey Lameze Date: Thu, 20 Apr 2017 10:06:09 +0800 Subject: [PATCH] MDL-58490 block_myoverview: separate course and activity completion --- .../classes/output/courses_view.php | 23 +++++++++---------- blocks/myoverview/classes/output/main.php | 14 +++++++++-- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/blocks/myoverview/classes/output/courses_view.php b/blocks/myoverview/classes/output/courses_view.php index c92346ae504..198deb6ef50 100644 --- a/blocks/myoverview/classes/output/courses_view.php +++ b/blocks/myoverview/classes/output/courses_view.php @@ -85,22 +85,13 @@ class courses_view implements renderable, templatable { $exportedcourse = $exporter->export($output); if (isset($this->coursesprogress[$courseid])) { - $courseprogress = $this->coursesprogress[$courseid]; + $coursecompleted = $this->coursesprogress[$courseid]['completed']; + $courseprogress = $this->coursesprogress[$courseid]['progress']; $exportedcourse->hasprogress = !is_null($courseprogress); $exportedcourse->progress = $courseprogress; } - if ($startdate > $today) { - // Courses that have not started yet. - $futurepages = floor($coursesbystatus['future'] / $this::COURSES_PER_PAGE); - - $coursesview['future']['pages'][$futurepages]['courses'][] = $exportedcourse; - $coursesview['future']['pages'][$futurepages]['active'] = ($futurepages == 0 ? true : false); - $coursesview['future']['pages'][$futurepages]['page'] = $futurepages + 1; - $coursesview['future']['haspages'] = true; - $coursesbystatus['future']++; - - } else if (!empty($enddate) && $enddate < $today) { + if ((isset($coursecompleted) && $coursecompleted) || (!empty($enddate) && $enddate < $today)) { // Courses that have already ended. $pastpages = floor($coursesbystatus['past'] / $this::COURSES_PER_PAGE); @@ -109,7 +100,15 @@ class courses_view implements renderable, templatable { $coursesview['past']['pages'][$pastpages]['page'] = $pastpages + 1; $coursesview['past']['haspages'] = true; $coursesbystatus['past']++; + } else if ($startdate > $today) { + // Courses that have not started yet. + $futurepages = floor($coursesbystatus['future'] / $this::COURSES_PER_PAGE); + $coursesview['future']['pages'][$futurepages]['courses'][] = $exportedcourse; + $coursesview['future']['pages'][$futurepages]['active'] = ($futurepages == 0 ? true : false); + $coursesview['future']['pages'][$futurepages]['page'] = $futurepages + 1; + $coursesview['future']['haspages'] = true; + $coursesbystatus['future']++; } else { // Courses still in progress. Either their end date is not set, or the end date is not yet past the current date. $inprogresspages = floor($coursesbystatus['inprogress'] / $this::COURSES_PER_PAGE); diff --git a/blocks/myoverview/classes/output/main.php b/blocks/myoverview/classes/output/main.php index 377697f9fa0..ee34bd37747 100644 --- a/blocks/myoverview/classes/output/main.php +++ b/blocks/myoverview/classes/output/main.php @@ -44,17 +44,27 @@ class main implements renderable, templatable { * @return stdClass */ public function export_for_template(renderer_base $output) { + global $USER; + $courses = enrol_get_my_courses('*', 'fullname ASC'); $coursesprogress = []; foreach ($courses as $course) { - $percentage = progress::get_course_progress_percentage($course); + $completion = new \completion_info($course); + + // First, let's make sure completion is enabled. + if (!$completion->is_enabled()) { + continue; + } + + $percentage = progress::get_course_progress_percentage($course); if (!is_null($percentage)) { $percentage = floor($percentage); } - $coursesprogress[$course->id] = $percentage; + $coursesprogress[$course->id]['completed'] = $completion->is_course_complete($USER->id); + $coursesprogress[$course->id]['progress'] = $percentage; } $coursesview = new courses_view($courses, $coursesprogress); -- 2.43.0