MDL-77701 mod_h5pactivity: Return admin settings in by_courses WS

This commit is contained in:
Dani Palou 2023-03-22 11:33:55 +01:00
parent 09fd61415e
commit 349774a9f3
3 changed files with 34 additions and 1 deletions

View File

@ -96,8 +96,16 @@ class get_h5pactivities_by_courses extends external_api {
}
}
$h5pglobalsettings = [
'enablesavestate' => get_config('mod_h5pactivity', 'enablesavestate'),
];
if (!empty($h5pglobalsettings['enablesavestate'])) {
$h5pglobalsettings['savestatefreq'] = get_config('mod_h5pactivity', 'savestatefreq');
}
$result = [
'h5pactivities' => $returnedh5pactivities,
'h5pglobalsettings' => $h5pglobalsettings,
'warnings' => $warnings
];
return $result;
@ -115,6 +123,14 @@ class get_h5pactivities_by_courses extends external_api {
'h5pactivities' => new external_multiple_structure(
h5pactivity_summary_exporter::get_read_structure()
),
'h5pglobalsettings' => new external_single_structure(
[
'enablesavestate' => new external_value(PARAM_BOOL, 'Whether saving state is enabled.'),
'savestatefreq' => new external_value(PARAM_INT, 'How often (in seconds) state is saved.', VALUE_OPTIONAL),
],
'H5P global settings',
VALUE_OPTIONAL,
),
'warnings' => new external_warnings(),
]
);

View File

@ -104,6 +104,10 @@ class get_h5pactivities_by_courses_test extends externallib_advanced_testcase {
$manual->enrol_user($maninstance1, $user->id, $studentrole->id);
$manual->enrol_user($maninstance2, $user->id, $studentrole->id);
// Set admin settings.
set_config('enablesavestate', 1, 'mod_h5pactivity');
set_config('savestatefreq', 120, 'mod_h5pactivity');
// Check the activities returned by the first course.
$this->setUser($user);
$courseids = [$course1->id];
@ -114,6 +118,8 @@ class get_h5pactivities_by_courses_test extends externallib_advanced_testcase {
$this->assert_activities($activities, $result);
$this->assertNotContains('deployedfile', $result['h5pactivities'][0]);
$this->assertNotContains('deployedfile', $result['h5pactivities'][1]);
$this->assertEquals(1, $result['h5pglobalsettings']['enablesavestate']);
$this->assertEquals(120, $result['h5pglobalsettings']['savestatefreq']);
// Call the external function without passing course id.
// Expected result, all the courses, course1 and course2.
@ -136,18 +142,25 @@ class get_h5pactivities_by_courses_test extends externallib_advanced_testcase {
$this->assertEquals($deployedfile['timemodified'], $result['h5pactivities'][2]['deployedfile']['timemodified']);
$this->assertEquals($deployedfile['mimetype'], $result['h5pactivities'][2]['deployedfile']['mimetype']);
$this->assertEquals($deployedfile['fileurl'], $result['h5pactivities'][2]['deployedfile']['fileurl']);
$this->assertEquals(1, $result['h5pglobalsettings']['enablesavestate']);
$this->assertEquals(120, $result['h5pglobalsettings']['savestatefreq']);
// Unenrol user from second course.
$manual->unenrol_user($maninstance2, $user->id);
// Remove the last activity from the array.
array_pop($activities);
// Disable save state.
set_config('enablesavestate', 0, 'mod_h5pactivity');
// Call the external function without passing course id.
$result = get_h5pactivities_by_courses::execute([]);
$result = external_api::clean_returnvalue(get_h5pactivities_by_courses::execute_returns(), $result);
$this->assertCount(0, $result['warnings']);
$this->assertCount(2, $result['h5pactivities']);
$this->assert_activities($activities, $result);
$this->assertEquals(0, $result['h5pglobalsettings']['enablesavestate']);
$this->assertNotContains('savestatefreq', $result['h5pglobalsettings']);
// Call for the second course we unenrolled the user from, expected warning.
$result = get_h5pactivities_by_courses::execute([$course2->id]);
@ -166,7 +179,7 @@ class get_h5pactivities_by_courses_test extends externallib_advanced_testcase {
*/
protected function assert_activities(array $activities, array $result): void {
$total = count($result);
$total = count($result['h5pactivities']);
for ($i = 0; $i < $total; $i++) {
$this->assertEquals($activities[$i]->id, $result['h5pactivities'][$i]['id']);
$this->assertEquals($activities[$i]->course, $result['h5pactivities'][$i]['course']);

View File

@ -1,6 +1,10 @@
This files describes API changes in /mod/h5pactivity/*,
information provided here is intended especially for developers.
=== 4.2 ===
* The WebService mod_h5pactivity_get_h5pactivities_by_courses now returns a `h5pglobalsettings` property that includes the global settings for H5P activities.
=== 4.1 ===
* The following methods now accept an optional `$currentgroup` parameter in order to better support groups: