Merge branch 'MDL-71796-311' of git://github.com/lameze/moodle into MOODLE_311_STABLE

This commit is contained in:
Ilya Tregubov
2021-07-05 12:35:35 +02:00
3 changed files with 12 additions and 10 deletions
@@ -67,18 +67,14 @@ class custom_completion extends activity_custom_completion {
// Get available status list.
$statuses = array_flip(\scorm_status_options());
$statusbits = 0;
$requiredcompletionstatusid = $this->cm->customdata['customcompletionrules']['completionstatusrequired'] ?? 0;
$isanystatus = ($requiredcompletionstatusid == array_sum($statuses));
// Check at least one track meets the required completion status value(s).
foreach ($tracks as $track) {
if (array_key_exists($track->value, $statuses)) {
$statusbits |= $statuses[$track->value];
}
// All completion status requirements met.
if ($statusbits == $requiredcompletionstatusid) {
if (array_key_exists($track->value, $statuses)
&& ($isanystatus || $statuses[$track->value] == $requiredcompletionstatusid)) {
$status = COMPLETION_COMPLETE;
break;
}
@@ -93,7 +93,7 @@ Feature: View activity completion in the SCORM activity
And the "Receive a score of 3 or more" completion condition of "Music history" is displayed as "failed"
And the "Do all parts of this activity" completion condition of "Music history" is displayed as "done"
And the "Receive a grade" completion condition of "Music history" is displayed as "done"
And the "Complete and pass the activity" completion condition of "Music history" is displayed as "failed"
And the "Complete and pass the activity" completion condition of "Music history" is displayed as "done"
@javascript
Scenario: Use manual completion
+8 -2
View File
@@ -105,11 +105,17 @@ class custom_completion_test extends advanced_testcase {
'completionstatusrequired', 4, [$completioncompleted], 1, COMPLETION_COMPLETE, null
],
'Completion status Passed and Completed required, user has only completed, can make another attempt' => [
'completionstatusrequired', 6, [$completioncompleted], 0, COMPLETION_INCOMPLETE, null
'completionstatusrequired', 6, [$completioncompleted], 0, COMPLETION_COMPLETE, null
],
'Completion status Passed and Completed required, user has completed and passed' => [
'completionstatusrequired', 6, [$completionpassed, $completioncompleted], 0, COMPLETION_COMPLETE, null
],
'Completion status Passed and Completed required, user has not passed or completed, but has another attempt' => [
'completionstatusrequired', 6, [$completionincomplete], 2, COMPLETION_INCOMPLETE, null
],
'Completion status Passed and Completed required, user has used all attempts, but not passed or completed' => [
'completionstatusrequired', 6, [$completionincomplete], 1, COMPLETION_COMPLETE_FAIL, null
],
'Completion status Passed required, user has used all attempts and completed, but not passed' => [
'completionstatusrequired', 2, [$completioncompleted], 1, COMPLETION_COMPLETE_FAIL, null
],
@@ -117,7 +123,7 @@ class custom_completion_test extends advanced_testcase {
'completionstatusrequired', 4, [$completionincomplete], 1, COMPLETION_COMPLETE_FAIL, null
],
'Completion status Passed and Completed required, user has used all attempts, but not passed' => [
'completionstatusrequired', 6, [$completionincomplete, $completioncompleted], 2, COMPLETION_COMPLETE_FAIL, null
'completionstatusrequired', 6, [$completionincomplete, $completioncompleted], 2, COMPLETION_COMPLETE, null
],
'Completion score required, user has no score' => [
'completionscorerequired', 80, [], 0, COMPLETION_INCOMPLETE, null