From 43f98f633618604db895f85e2d4197e645f3586f Mon Sep 17 00:00:00 2001 From: Ilya Tregubov Date: Thu, 4 Aug 2022 14:01:57 +0400 Subject: [PATCH] MDL-75173 core_completion: Fix completion for different settings. --- completion/classes/api.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/completion/classes/api.php b/completion/classes/api.php index edec5a49e8a..6a1bc31be9a 100644 --- a/completion/classes/api.php +++ b/completion/classes/api.php @@ -142,6 +142,7 @@ class api { INNER JOIN {course} c ON cr.course = c.id INNER JOIN {context} con ON con.instanceid = c.id INNER JOIN {role_assignments} ra ON ra.contextid = con.id + INNER JOIN {course_modules} cm ON cm.id = cr.moduleinstance INNER JOIN {course_modules_completion} mc ON mc.coursemoduleid = cr.moduleinstance AND mc.userid = ra.userid LEFT JOIN {course_completion_crit_compl} cc ON cc.criteriaid = cr.id AND cc.userid = ra.userid WHERE cr.criteriatype = :criteriatype @@ -150,14 +151,17 @@ class api { AND cc.id IS NULL AND ( mc.completionstate = :completionstate - OR mc.completionstate = :completionstatepass + OR (cm.completionpassgrade = 1 AND mc.completionstate = :completionstatepass1) + OR (cm.completionpassgrade = 0 AND (mc.completionstate = :completionstatepass2 OR mc.completionstate = :completionstatefail)) )"; $params = [ 'criteriatype' => COMPLETION_CRITERIA_TYPE_ACTIVITY, 'contextlevel' => CONTEXT_COURSE, 'completionstate' => COMPLETION_COMPLETE, - 'completionstatepass' => COMPLETION_COMPLETE_PASS, + 'completionstatepass1' => COMPLETION_COMPLETE_PASS, + 'completionstatepass2' => COMPLETION_COMPLETE_PASS, + 'completionstatefail' => COMPLETION_COMPLETE_FAIL ]; if ($userdata) {