diff --git a/course/externallib.php b/course/externallib.php index 6b00cccea27..1f1cb78c372 100644 --- a/course/externallib.php +++ b/course/externallib.php @@ -1718,7 +1718,7 @@ class core_course_external extends external_api { $categoryinfo = array(); $categoryinfo['id'] = $category->id; - $categoryinfo['name'] = $category->name; + $categoryinfo['name'] = external_format_string($category->name, $context); list($categoryinfo['description'], $categoryinfo['descriptionformat']) = external_format_text($category->description, $category->descriptionformat, $context->id, 'coursecat', 'description', null); @@ -1870,8 +1870,12 @@ class core_course_external extends external_api { external_validate_format($category['descriptionformat']); $newcategory = coursecat::create($category); + $context = context_coursecat::instance($newcategory->id); - $createdcategories[] = array('id' => $newcategory->id, 'name' => $newcategory->name); + $createdcategories[] = array( + 'id' => $newcategory->id, + 'name' => external_format_string($newcategory->name, $context), + ); } $transaction->allow_commit(); @@ -2275,6 +2279,11 @@ class core_course_external extends external_api { list($summary, $summaryformat) = external_format_text($course->summary, $course->summaryformat, $coursecontext->id, 'course', 'summary', null); + $categoryname = ''; + if (!empty($category)) { + $categoryname = external_format_string($category->name, $category->get_context()); + } + $displayname = get_course_display_name_for_list($course); $coursereturns = array(); $coursereturns['id'] = $course->id; @@ -2282,7 +2291,7 @@ class core_course_external extends external_api { $coursereturns['displayname'] = external_format_string($displayname, $coursecontext->id); $coursereturns['shortname'] = external_format_string($course->shortname, $coursecontext->id); $coursereturns['categoryid'] = $course->category; - $coursereturns['categoryname'] = $category == null ? '' : $category->name; + $coursereturns['categoryname'] = $categoryname; $coursereturns['summary'] = $summary; $coursereturns['summaryformat'] = $summaryformat; $coursereturns['summaryfiles'] = external_util::get_area_files($coursecontext->id, 'course', 'summary', false, false); diff --git a/course/tests/externallib_test.php b/course/tests/externallib_test.php index 94afbfab487..be0a7071f01 100644 --- a/course/tests/externallib_test.php +++ b/course/tests/externallib_test.php @@ -2045,7 +2045,7 @@ class core_course_externallib_testcase extends externallib_advanced_testcase { global $DB; $this->resetAfterTest(true); - $category1 = self::getDataGenerator()->create_category(); + $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')); @@ -2101,6 +2101,7 @@ 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(1, $result['courses']); $this->assertEquals($course1->id, $result['courses'][0]['id']); + $this->assertEquals('Cat 1', $result['courses'][0]['categoryname']); $result = core_course_external::get_courses_by_field('shortname', 'c1'); $result = external_api::clean_returnvalue(core_course_external::get_courses_by_field_returns(), $result);