mirror of
https://github.com/moodle/moodle.git
synced 2025-03-14 12:40:01 +01:00
Merge branch 'MDL-81699-main' of https://github.com/durenadev/moodle
This commit is contained in:
commit
388fb71f51
@ -3232,13 +3232,13 @@ class core_course_external extends external_api {
|
||||
shortname: course short name
|
||||
idnumber: course id number
|
||||
category: category id the course belongs to
|
||||
sectionid: section id that belongs to a course
|
||||
', VALUE_DEFAULT, ''),
|
||||
'value' => new external_value(PARAM_RAW, 'The value to match', VALUE_DEFAULT, '')
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get courses matching a specific field (id/s, shortname, idnumber, category)
|
||||
*
|
||||
@ -3267,6 +3267,7 @@ class core_course_external extends external_api {
|
||||
switch ($params['field']) {
|
||||
case 'id':
|
||||
case 'category':
|
||||
case 'sectionid':
|
||||
$value = clean_param($params['value'], PARAM_INT);
|
||||
break;
|
||||
case 'ids':
|
||||
@ -3297,6 +3298,9 @@ class core_course_external extends external_api {
|
||||
// more efficiently.
|
||||
list ($courses, $warnings) = util::validate_courses($courseids, [],
|
||||
false, true);
|
||||
} else if ($params['field'] === 'sectionid') {
|
||||
$courseid = $DB->get_field('course_sections', 'course', ['id' => $value]);
|
||||
$courses = $courseid ? [$DB->get_record('course', ['id' => $courseid])] : [];
|
||||
} else {
|
||||
$courses = $DB->get_records('course', array($params['field'] => $value), 'id ASC');
|
||||
}
|
||||
|
@ -2858,8 +2858,13 @@ final class externallib_test extends externallib_advanced_testcase {
|
||||
|
||||
$category1 = self::getDataGenerator()->create_category(array('name' => 'Cat 1'));
|
||||
$category2 = self::getDataGenerator()->create_category(array('parent' => $category1->id));
|
||||
$course1 = self::getDataGenerator()->create_course(
|
||||
array('category' => $category1->id, 'shortname' => 'c1', 'format' => 'topics'));
|
||||
$numsections = 4;
|
||||
$course1 = self::getDataGenerator()->create_course([
|
||||
'category' => $category1->id,
|
||||
'shortname' => 'c1',
|
||||
'format' => 'topics',
|
||||
'numsections' => $numsections,
|
||||
]);
|
||||
|
||||
$fieldcategory = self::getDataGenerator()->create_custom_field_category(['name' => 'Other fields']);
|
||||
$customfield = ['shortname' => 'test', 'name' => 'Custom field', 'type' => 'text',
|
||||
@ -3065,6 +3070,20 @@ final class externallib_test extends externallib_advanced_testcase {
|
||||
$result = core_course_external::get_courses_by_field('idnumber', 'x');
|
||||
$result = external_api::clean_returnvalue(core_course_external::get_courses_by_field_returns(), $result);
|
||||
$this->assertCount(0, $result['courses']);
|
||||
|
||||
$existingsections = $DB->get_records('course_sections', ['course' => $course1->id]);
|
||||
$this->assertEquals(count($existingsections), $numsections + 1); // Includes generic section.
|
||||
|
||||
$section = array_shift($existingsections);
|
||||
$result = core_course_external::get_courses_by_field('sectionid', $section->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']);
|
||||
|
||||
// Wrong section.
|
||||
$result = core_course_external::get_courses_by_field('sectionid', 1234);
|
||||
$result = external_api::clean_returnvalue(core_course_external::get_courses_by_field_returns(), $result);
|
||||
$this->assertCount(0, $result['courses']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user