mirror of
https://github.com/moodle/moodle.git
synced 2025-04-13 20:42:22 +02:00
MDL-61198 course: Return course format options in WS
This commit is contained in:
parent
ef184ad6e0
commit
cf58a2d528
@ -2458,6 +2458,15 @@ class core_course_external extends external_api {
|
||||
),
|
||||
'Course filters', VALUE_OPTIONAL
|
||||
),
|
||||
'courseformatoptions' => new external_multiple_structure(
|
||||
new external_single_structure(
|
||||
array(
|
||||
'name' => new external_value(PARAM_RAW, 'Course format option name.'),
|
||||
'value' => new external_value(PARAM_RAW, 'Course format option value.'),
|
||||
)
|
||||
),
|
||||
'Additional options for particular course format.', VALUE_OPTIONAL
|
||||
),
|
||||
);
|
||||
$coursestructure = array_merge($coursestructure, $extra);
|
||||
}
|
||||
@ -3084,6 +3093,14 @@ class core_course_external extends external_api {
|
||||
if (isset($coursesdata[$course->id]['lang'])) {
|
||||
$coursesdata[$course->id]['lang'] = clean_param($coursesdata[$course->id]['lang'], PARAM_LANG);
|
||||
}
|
||||
|
||||
$courseformatoptions = course_get_format($course)->get_config_for_external();
|
||||
foreach ($courseformatoptions as $key => $value) {
|
||||
$coursesdata[$course->id]['courseformatoptions'][] = array(
|
||||
'name' => $key,
|
||||
'value' => $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return array(
|
||||
|
@ -2045,7 +2045,8 @@ class core_course_externallib_testcase extends externallib_advanced_testcase {
|
||||
|
||||
$category1 = self::getDataGenerator()->create_category();
|
||||
$category2 = self::getDataGenerator()->create_category(array('parent' => $category1->id));
|
||||
$course1 = self::getDataGenerator()->create_course(array('category' => $category1->id, 'shortname' => 'c1'));
|
||||
$course1 = self::getDataGenerator()->create_course(
|
||||
array('category' => $category1->id, 'shortname' => 'c1', 'format' => 'topics'));
|
||||
$course2 = self::getDataGenerator()->create_course(array('visible' => 0, 'category' => $category2->id, 'idnumber' => 'i2'));
|
||||
|
||||
$student1 = self::getDataGenerator()->create_user();
|
||||
@ -2061,15 +2062,25 @@ class core_course_externallib_testcase extends externallib_advanced_testcase {
|
||||
$this->assertCount(3, $result['courses']);
|
||||
// Expect to receive all the fields.
|
||||
$this->assertCount(37, $result['courses'][0]);
|
||||
$this->assertCount(37, $result['courses'][1]);
|
||||
$this->assertCount(37, $result['courses'][2]);
|
||||
$this->assertCount(38, $result['courses'][1]); // One more field because is not the site course.
|
||||
$this->assertCount(38, $result['courses'][2]); // One more field because is not the site course.
|
||||
|
||||
$result = core_course_external::get_courses_by_field('id', $course1->id);
|
||||
$result = external_api::clean_returnvalue(core_course_external::get_courses_by_field_returns(), $result);
|
||||
$this->assertCount(1, $result['courses']);
|
||||
$this->assertEquals($course1->id, $result['courses'][0]['id']);
|
||||
// Expect to receive all the fields.
|
||||
$this->assertCount(37, $result['courses'][0]);
|
||||
$this->assertCount(38, $result['courses'][0]);
|
||||
// Check default values for course format topics.
|
||||
$this->assertCount(2, $result['courses'][0]['courseformatoptions']);
|
||||
foreach ($result['courses'][0]['courseformatoptions'] as $option) {
|
||||
if ($option['name'] == 'hiddensections') {
|
||||
$this->assertEquals(0, $option['value']);
|
||||
} else {
|
||||
$this->assertEquals('coursedisplay', $option['name']);
|
||||
$this->assertEquals(0, $option['value']);
|
||||
}
|
||||
}
|
||||
|
||||
$result = core_course_external::get_courses_by_field('id', $course2->id);
|
||||
$result = external_api::clean_returnvalue(core_course_external::get_courses_by_field_returns(), $result);
|
||||
@ -2112,14 +2123,14 @@ class core_course_externallib_testcase extends externallib_advanced_testcase {
|
||||
$result = external_api::clean_returnvalue(core_course_external::get_courses_by_field_returns(), $result);
|
||||
$this->assertCount(2, $result['courses']);
|
||||
$this->assertCount(30, $result['courses'][0]);
|
||||
$this->assertCount(30, $result['courses'][1]);
|
||||
$this->assertCount(31, $result['courses'][1]); // One field more (course format options), not present in site course.
|
||||
|
||||
$result = core_course_external::get_courses_by_field('id', $course1->id);
|
||||
$result = external_api::clean_returnvalue(core_course_external::get_courses_by_field_returns(), $result);
|
||||
$this->assertCount(1, $result['courses']);
|
||||
$this->assertEquals($course1->id, $result['courses'][0]['id']);
|
||||
// Expect to receive all the files that a student can see.
|
||||
$this->assertCount(30, $result['courses'][0]);
|
||||
$this->assertCount(31, $result['courses'][0]);
|
||||
|
||||
// Check default filters.
|
||||
$filters = $result['courses'][0]['filters'];
|
||||
|
Loading…
x
Reference in New Issue
Block a user