diff --git a/mod/scorm/classes/external.php b/mod/scorm/classes/external.php index ea3d7fd5cb3..cfc139a5348 100644 --- a/mod/scorm/classes/external.php +++ b/mod/scorm/classes/external.php @@ -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(), ) ); diff --git a/mod/scorm/tests/externallib_test.php b/mod/scorm/tests/externallib_test.php index 6713eb29539..deb7de9ec90 100644 --- a/mod/scorm/tests/externallib_test.php +++ b/mod/scorm/tests/externallib_test.php @@ -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']); diff --git a/mod/scorm/upgrade.txt b/mod/scorm/upgrade.txt index ac2e637ccac..54f6f361efe 100644 --- a/mod/scorm/upgrade.txt +++ b/mod/scorm/upgrade.txt @@ -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.