MDL-77055 mod_scorm: Add SCORM options to get_scorms_by_courses WS

This commit is contained in:
Rodrigo Mady 2023-06-08 15:36:47 -03:00
parent 8dbb6183ff
commit a75e81e6cf
3 changed files with 38 additions and 3 deletions

View File

@ -742,9 +742,17 @@ class mod_scorm_external extends external_api {
}
}
$result = array();
$result['scorms'] = $returnedscorms;
$result['warnings'] = $warnings;
$settings = [
[
'name' => 'scormstandard',
'value' => get_config('scorm', 'scormstandard'),
]
];
$result = [
'scorms' => $returnedscorms,
'options' => $settings,
'warnings' => $warnings
];
return $result;
}
@ -813,6 +821,14 @@ class mod_scorm_external extends external_api {
]
), 'SCORM')
),
'options' => new external_multiple_structure(
new external_single_structure(
[
'name' => new external_value(PARAM_RAW, 'Options name'),
'value' => new external_value(PARAM_RAW, 'Option value')
]
), 'Global SCORM options', VALUE_OPTIONAL
),
'warnings' => new external_warnings(),
)
);

View File

@ -670,6 +670,12 @@ class externallib_test extends externallib_advanced_testcase {
$result = mod_scorm_external::get_scorms_by_courses(array($course1->id));
$result = external_api::clean_returnvalue($returndescription, $result);
// Test default SCORM settings.
$this->assertCount(1, $result['options']);
$this->assertEquals('scormstandard', $result['options'][0]['name']);
$this->assertEquals(0, $result['options'][0]['value']);
$this->assertCount(1, $result['warnings']);
// Only 'id', 'coursemodule', 'course', 'name', 'intro', 'introformat', 'introfiles'.
$this->assertCount(8, $result['scorms'][0]);
@ -679,8 +685,17 @@ class externallib_test extends externallib_advanced_testcase {
$scorm1->timeclose = $scorm1->timeopen + DAYSECS;
$DB->update_record('scorm', $scorm1);
// Set the SCORM config values.
set_config('scormstandard', 1, 'scorm');
$result = mod_scorm_external::get_scorms_by_courses(array($course1->id));
$result = external_api::clean_returnvalue($returndescription, $result);
// Test SCORM settings.
$this->assertCount(1, $result['options']);
$this->assertEquals('scormstandard', $result['options'][0]['name']);
$this->assertEquals(1, $result['options'][0]['value']);
$this->assertCount(1, $result['warnings']);
// Only 'id', 'coursemodule', 'course', 'name', 'intro', 'introformat', 'introfiles'.
$this->assertCount(8, $result['scorms'][0]);
@ -780,6 +795,7 @@ class externallib_test extends externallib_advanced_testcase {
// Call for the second course we unenrolled the user from, expected warning.
$result = mod_scorm_external::get_scorms_by_courses(array($course2->id));
$this->assertCount(1, $result['options']);
$this->assertCount(1, $result['warnings']);
$this->assertEquals('1', $result['warnings'][0]['warningcode']);
$this->assertEquals($course2->id, $result['warnings'][0]['itemid']);

View File

@ -1,5 +1,8 @@
This files describes API changes in the mod_scorm code.
=== 4.3 ===
* Add SCORM options in get_scorms_by_courses() external/ws function.
=== 4.0 ===
* Setting 'displayactivityname' has been removed from scorm. This will be handled by activityheader and is theme dependent.