mirror of
https://github.com/moodle/moodle.git
synced 2025-08-03 16:13:28 +02:00
MDL-80392 completion: Fix exporter for Web Services
This commit is contained in:
parent
3fc907e3d8
commit
408d7c0c9c
5 changed files with 24 additions and 3 deletions
|
@ -349,7 +349,9 @@ class core_completion_external extends external_api {
|
||||||
VALUE_DEFAULT,
|
VALUE_DEFAULT,
|
||||||
[]
|
[]
|
||||||
),
|
),
|
||||||
|
'isoverallcomplete' => new external_value(PARAM_BOOL,
|
||||||
|
'Whether the overall completion state of this course module should be marked as complete or not.',
|
||||||
|
VALUE_OPTIONAL),
|
||||||
], 'Activity'
|
], 'Activity'
|
||||||
), 'List of activities status'
|
), 'List of activities status'
|
||||||
),
|
),
|
||||||
|
|
|
@ -83,9 +83,9 @@ class completion_info_exporter extends \core\external\exporter {
|
||||||
'hascompletion' => $cmcompletion->has_completion(),
|
'hascompletion' => $cmcompletion->has_completion(),
|
||||||
'isautomatic' => $cmcompletion->is_automatic(),
|
'isautomatic' => $cmcompletion->is_automatic(),
|
||||||
'istrackeduser' => $cmcompletion->is_tracked_user(),
|
'istrackeduser' => $cmcompletion->is_tracked_user(),
|
||||||
'overallstatus' => $cmcompletion->get_overall_completion(),
|
|
||||||
'uservisible' => $this->cminfo->uservisible,
|
'uservisible' => $this->cminfo->uservisible,
|
||||||
'details' => $details,
|
'details' => $details,
|
||||||
|
'isoverallcomplete' => $cmcompletion->is_overall_complete(),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,6 +148,11 @@ class completion_info_exporter extends \core\external\exporter {
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
'isoverallcomplete' => [
|
||||||
|
'type' => PARAM_BOOL,
|
||||||
|
'description' => 'Whether the overall completion state of this course module should be marked as complete or not.',
|
||||||
|
'optional' => true,
|
||||||
|
],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,7 @@ require_once($CFG->dirroot . '/webservice/tests/helpers.php');
|
||||||
* @copyright 2015 Juan Leyva <juan@moodle.com>
|
* @copyright 2015 Juan Leyva <juan@moodle.com>
|
||||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||||
* @since Moodle 2.9
|
* @since Moodle 2.9
|
||||||
|
* @coversDefaultClass \core_completion_external
|
||||||
*/
|
*/
|
||||||
class externallib_test extends externallib_advanced_testcase {
|
class externallib_test extends externallib_advanced_testcase {
|
||||||
|
|
||||||
|
@ -177,6 +178,7 @@ class externallib_test extends externallib_advanced_testcase {
|
||||||
$this->assertTrue($status['uservisible']);
|
$this->assertTrue($status['uservisible']);
|
||||||
$details = $status['details'];
|
$details = $status['details'];
|
||||||
$this->assertCount(0, $details);
|
$this->assertCount(0, $details);
|
||||||
|
$this->assertTrue($status['isoverallcomplete']);
|
||||||
} else if ($status['cmid'] == $forumautocompletion->cmid) {
|
} else if ($status['cmid'] == $forumautocompletion->cmid) {
|
||||||
$activitiesfound++;
|
$activitiesfound++;
|
||||||
$this->assertEquals(COMPLETION_INCOMPLETE, $status['state']);
|
$this->assertEquals(COMPLETION_INCOMPLETE, $status['state']);
|
||||||
|
@ -190,7 +192,7 @@ class externallib_test extends externallib_advanced_testcase {
|
||||||
$this->assertCount(1, $details);
|
$this->assertCount(1, $details);
|
||||||
$this->assertEquals('completionview', $details[0]['rulename']);
|
$this->assertEquals('completionview', $details[0]['rulename']);
|
||||||
$this->assertEquals(0, $details[0]['rulevalue']['status']);
|
$this->assertEquals(0, $details[0]['rulevalue']['status']);
|
||||||
|
$this->assertFalse($status['isoverallcomplete']);
|
||||||
} else if ($status['cmid'] == $assignautocompletion->cmid) {
|
} else if ($status['cmid'] == $assignautocompletion->cmid) {
|
||||||
$activitiesfound++;
|
$activitiesfound++;
|
||||||
$this->assertEquals(COMPLETION_INCOMPLETE, $status['state']);
|
$this->assertEquals(COMPLETION_INCOMPLETE, $status['state']);
|
||||||
|
@ -200,6 +202,7 @@ class externallib_test extends externallib_advanced_testcase {
|
||||||
$this->assertTrue($status['isautomatic']);
|
$this->assertTrue($status['isautomatic']);
|
||||||
$this->assertTrue($status['istrackeduser']);
|
$this->assertTrue($status['istrackeduser']);
|
||||||
$this->assertTrue($status['uservisible']);
|
$this->assertTrue($status['uservisible']);
|
||||||
|
$this->assertFalse($status['isoverallcomplete']);
|
||||||
$details = $status['details'];
|
$details = $status['details'];
|
||||||
$this->assertCount(3, $details);
|
$this->assertCount(3, $details);
|
||||||
$expecteddetails = [
|
$expecteddetails = [
|
||||||
|
@ -223,6 +226,7 @@ class externallib_test extends externallib_advanced_testcase {
|
||||||
$this->assertTrue($status['uservisible']);
|
$this->assertTrue($status['uservisible']);
|
||||||
$details = $status['details'];
|
$details = $status['details'];
|
||||||
$this->assertCount(0, $details);
|
$this->assertCount(0, $details);
|
||||||
|
$this->assertFalse($status['isoverallcomplete']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$this->assertEquals(4, $activitiesfound);
|
$this->assertEquals(4, $activitiesfound);
|
||||||
|
@ -250,6 +254,7 @@ class externallib_test extends externallib_advanced_testcase {
|
||||||
$this->assertEquals(COMPLETION_INCOMPLETE, $status['state']);
|
$this->assertEquals(COMPLETION_INCOMPLETE, $status['state']);
|
||||||
$this->assertEquals(COMPLETION_TRACKING_MANUAL, $status['tracking']);
|
$this->assertEquals(COMPLETION_TRACKING_MANUAL, $status['tracking']);
|
||||||
$this->assertEquals($teacher->id, $status['overrideby']);
|
$this->assertEquals($teacher->id, $status['overrideby']);
|
||||||
|
$this->assertFalse($status['isoverallcomplete']);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -273,14 +278,17 @@ class externallib_test extends externallib_advanced_testcase {
|
||||||
$activitiesfound++;
|
$activitiesfound++;
|
||||||
$this->assertEquals(COMPLETION_COMPLETE, $status['state']);
|
$this->assertEquals(COMPLETION_COMPLETE, $status['state']);
|
||||||
$this->assertEquals(COMPLETION_TRACKING_MANUAL, $status['tracking']);
|
$this->assertEquals(COMPLETION_TRACKING_MANUAL, $status['tracking']);
|
||||||
|
$this->assertTrue($status['isoverallcomplete']);
|
||||||
} else if (in_array($status['cmid'], [$forumautocompletion->cmid, $assignautocompletion->cmid])) {
|
} else if (in_array($status['cmid'], [$forumautocompletion->cmid, $assignautocompletion->cmid])) {
|
||||||
$activitiesfound++;
|
$activitiesfound++;
|
||||||
$this->assertEquals(COMPLETION_INCOMPLETE, $status['state']);
|
$this->assertEquals(COMPLETION_INCOMPLETE, $status['state']);
|
||||||
$this->assertEquals(COMPLETION_TRACKING_AUTOMATIC, $status['tracking']);
|
$this->assertEquals(COMPLETION_TRACKING_AUTOMATIC, $status['tracking']);
|
||||||
|
$this->assertFalse($status['isoverallcomplete']);
|
||||||
} else {
|
} else {
|
||||||
$activitiesfound++;
|
$activitiesfound++;
|
||||||
$this->assertEquals(COMPLETION_INCOMPLETE, $status['state']);
|
$this->assertEquals(COMPLETION_INCOMPLETE, $status['state']);
|
||||||
$this->assertEquals(COMPLETION_TRACKING_MANUAL, $status['tracking']);
|
$this->assertEquals(COMPLETION_TRACKING_MANUAL, $status['tracking']);
|
||||||
|
$this->assertFalse($status['isoverallcomplete']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$this->assertEquals(5, $activitiesfound);
|
$this->assertEquals(5, $activitiesfound);
|
||||||
|
|
|
@ -10,6 +10,8 @@ information provided here is intended especially for developers.
|
||||||
* The following previously deprecated methods have been removed and can no longer be used:
|
* The following previously deprecated methods have been removed and can no longer be used:
|
||||||
- `completion_info::display_help_icon`
|
- `completion_info::display_help_icon`
|
||||||
- `completion_info::print_help_icon`
|
- `completion_info::print_help_icon`
|
||||||
|
* The \core_completion\completion_info_exporter class has been updated to return a new field "isverallcomplete" to return the result of the
|
||||||
|
new cm_completion_details::is_overall_complete() method.
|
||||||
|
|
||||||
=== 4.3 ===
|
=== 4.3 ===
|
||||||
* A trait class, core_completion/form/form_trait has been added to reuse code for adding and validation completion settings to any
|
* A trait class, core_completion/form/form_trait has been added to reuse code for adding and validation completion settings to any
|
||||||
|
|
|
@ -1514,6 +1514,7 @@ class externallib_test extends externallib_advanced_testcase {
|
||||||
$this->assertFalse($completiondata['isautomatic']);
|
$this->assertFalse($completiondata['isautomatic']);
|
||||||
$this->assertFalse($completiondata['istrackeduser']);
|
$this->assertFalse($completiondata['istrackeduser']);
|
||||||
$this->assertTrue($completiondata['uservisible']);
|
$this->assertTrue($completiondata['uservisible']);
|
||||||
|
$this->assertFalse($completiondata['isoverallcomplete']);
|
||||||
|
|
||||||
// Set activity completed.
|
// Set activity completed.
|
||||||
core_completion_external::update_activity_completion_status_manually($forumcm->id, true);
|
core_completion_external::update_activity_completion_status_manually($forumcm->id, true);
|
||||||
|
@ -1524,6 +1525,7 @@ class externallib_test extends externallib_advanced_testcase {
|
||||||
$result = external_api::clean_returnvalue(core_course_external::get_course_contents_returns(), $result);
|
$result = external_api::clean_returnvalue(core_course_external::get_course_contents_returns(), $result);
|
||||||
|
|
||||||
$this->assertEquals(COMPLETION_COMPLETE, $result[0]['modules'][0]["completiondata"]['state']);
|
$this->assertEquals(COMPLETION_COMPLETE, $result[0]['modules'][0]["completiondata"]['state']);
|
||||||
|
$this->assertTrue($result[0]['modules'][0]["completiondata"]['isoverallcomplete']);
|
||||||
$this->assertNotEmpty($result[0]['modules'][0]["completiondata"]['timecompleted']);
|
$this->assertNotEmpty($result[0]['modules'][0]["completiondata"]['timecompleted']);
|
||||||
$this->assertEmpty($result[0]['modules'][0]["completiondata"]['overrideby']);
|
$this->assertEmpty($result[0]['modules'][0]["completiondata"]['overrideby']);
|
||||||
|
|
||||||
|
@ -1545,6 +1547,7 @@ class externallib_test extends externallib_advanced_testcase {
|
||||||
$this->assertFalse($completiondata['isautomatic']);
|
$this->assertFalse($completiondata['isautomatic']);
|
||||||
$this->assertFalse($completiondata['istrackeduser']);
|
$this->assertFalse($completiondata['istrackeduser']);
|
||||||
$this->assertTrue($completiondata['uservisible']);
|
$this->assertTrue($completiondata['uservisible']);
|
||||||
|
$this->assertFalse($completiondata['isoverallcomplete']);
|
||||||
|
|
||||||
// Disable completion.
|
// Disable completion.
|
||||||
$CFG->enablecompletion = 0;
|
$CFG->enablecompletion = 0;
|
||||||
|
@ -1595,6 +1598,7 @@ class externallib_test extends externallib_advanced_testcase {
|
||||||
$this->assertFalse($completiondata['istrackeduser']);
|
$this->assertFalse($completiondata['istrackeduser']);
|
||||||
$this->assertTrue($completiondata['uservisible']);
|
$this->assertTrue($completiondata['uservisible']);
|
||||||
$this->assertCount(1, $completiondata['details']);
|
$this->assertCount(1, $completiondata['details']);
|
||||||
|
$this->assertFalse($completiondata['isoverallcomplete']);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue