diff --git a/mod/assign/externallib.php b/mod/assign/externallib.php
index d9777d4a560..36048007e3b 100644
--- a/mod/assign/externallib.php
+++ b/mod/assign/externallib.php
@@ -432,7 +432,7 @@ class mod_assign_external extends external_api {
'id' => $module->assignmentid,
'cmid' => $module->id,
'course' => $module->course,
- 'name' => $module->name,
+ 'name' => external_format_string($module->name, $context),
'nosubmissions' => $module->nosubmissions,
'submissiondrafts' => $module->submissiondrafts,
'sendnotifications' => $module->sendnotifications,
@@ -528,7 +528,7 @@ class mod_assign_external extends external_api {
'id' => new external_value(PARAM_INT, 'assignment id'),
'cmid' => new external_value(PARAM_INT, 'course module id'),
'course' => new external_value(PARAM_INT, 'course id'),
- 'name' => new external_value(PARAM_TEXT, 'assignment name'),
+ 'name' => new external_value(PARAM_RAW, 'assignment name'),
'nosubmissions' => new external_value(PARAM_INT, 'no submissions'),
'submissiondrafts' => new external_value(PARAM_INT, 'submissions drafts'),
'sendnotifications' => new external_value(PARAM_INT, 'send notifications'),
diff --git a/mod/assign/tests/externallib_test.php b/mod/assign/tests/externallib_test.php
index b5a2ea552bf..2f3bcec710a 100644
--- a/mod/assign/tests/externallib_test.php
+++ b/mod/assign/tests/externallib_test.php
@@ -140,6 +140,13 @@ class mod_assign_external_testcase extends externallib_advanced_testcase {
$this->resetAfterTest(true);
+ // Enable multilang filter to on content and heading.
+ filter_set_global_state('multilang', TEXTFILTER_ON);
+ filter_set_applies_to_strings('multilang', 1);
+ // Set WS filtering.
+ $wssettings = external_settings::get_instance();
+ $wssettings->set_filter(true);
+
$category = self::getDataGenerator()->create_category(array(
'name' => 'Test category'
));
@@ -166,7 +173,7 @@ class mod_assign_external_testcase extends externallib_advanced_testcase {
// Create the assignment module with links to a filerecord.
$assign1 = self::getDataGenerator()->create_module('assign', array(
'course' => $course1->id,
- 'name' => 'lightwork assignment',
+ 'name' => 'EnglishEspañol',
'intro' => 'the assignment intro text here link',
'introformat' => FORMAT_HTML,
'markingworkflow' => 1,
@@ -221,7 +228,7 @@ class mod_assign_external_testcase extends externallib_advanced_testcase {
$assignment = $course['assignments'][0];
$this->assertEquals($assign1->id, $assignment['id']);
$this->assertEquals($course1->id, $assignment['course']);
- $this->assertEquals('lightwork assignment', $assignment['name']);
+ $this->assertEquals('English', $assignment['name']);
$this->assertContains('the assignment intro text here', $assignment['intro']);
$this->assertNotEmpty($assignment['configs']);
// Check the url of the file attatched.
@@ -249,7 +256,7 @@ class mod_assign_external_testcase extends externallib_advanced_testcase {
$assignment = $course['assignments'][0];
$this->assertEquals($assign1->id, $assignment['id']);
$this->assertEquals($course1->id, $assignment['course']);
- $this->assertEquals('lightwork assignment', $assignment['name']);
+ $this->assertEquals('English', $assignment['name']);
$this->assertArrayNotHasKey('intro', $assignment);
$this->assertArrayNotHasKey('introattachments', $assignment);
$this->assertEquals(1, $assignment['markingworkflow']);
@@ -287,7 +294,7 @@ class mod_assign_external_testcase extends externallib_advanced_testcase {
$assignment = $course['assignments'][0];
$this->assertEquals($assign1->id, $assignment['id']);
$this->assertEquals($course1->id, $assignment['course']);
- $this->assertEquals('lightwork assignment', $assignment['name']);
+ $this->assertEquals('English', $assignment['name']);
$this->assertArrayNotHasKey('intro', $assignment);
$this->assertArrayNotHasKey('introattachments', $assignment);
$this->assertEquals(1, $assignment['markingworkflow']);
diff --git a/mod/data/classes/external.php b/mod/data/classes/external.php
index 649a6336a49..4811a6c5445 100644
--- a/mod/data/classes/external.php
+++ b/mod/data/classes/external.php
@@ -125,7 +125,9 @@ class mod_data_external extends external_api {
}
}
$exporter = new database_summary_exporter($database, array('context' => $context));
- $arrdatabases[] = $exporter->export($PAGE->get_renderer('core'));
+ $data = $exporter->export($PAGE->get_renderer('core'));
+ $data->name = external_format_string($data->name, $context);
+ $arrdatabases[] = $data;
}
}
diff --git a/mod/data/tests/externallib_test.php b/mod/data/tests/externallib_test.php
index d2314aae9b6..c49c9be96fb 100644
--- a/mod/data/tests/externallib_test.php
+++ b/mod/data/tests/externallib_test.php
@@ -122,7 +122,8 @@ class mod_data_external_testcase extends externallib_advanced_testcase {
* Test get databases by courses
*/
public function test_mod_data_get_databases_by_courses() {
- global $DB;
+ global $DB, $CFG;
+ require_once($CFG->libdir . '/externallib.php');
$this->resetAfterTest(true);
@@ -141,6 +142,8 @@ class mod_data_external_testcase extends externallib_advanced_testcase {
$record = new stdClass();
$record->introformat = FORMAT_HTML;
$record->course = $course1->id;
+ // Set multilang text to check that is properly filtered to "en" only.
+ $record->name = 'EnglishEspañol';
$record->intro = '';
$database1 = self::getDataGenerator()->create_module('data', $record);
@@ -168,6 +171,14 @@ class mod_data_external_testcase extends externallib_advanced_testcase {
}
$enrol->enrol_user($instance2, $student->id, $studentrole->id);
+ // Enable multilang filter to on content and heading.
+ filter_manager::reset_caches();
+ filter_set_global_state('multilang', TEXTFILTER_ON);
+ filter_set_applies_to_strings('multilang', true);
+ // Set WS filtering.
+ $wssettings = external_settings::get_instance();
+ $wssettings->set_filter(true);
+
// Create what we expect to be returned when querying the two courses.
// First for the student user.
$expectedfields = array('id', 'coursemodule', 'course', 'name', 'comments', 'timeavailablefrom',
@@ -192,6 +203,7 @@ class mod_data_external_testcase extends externallib_advanced_testcase {
$expected1[$field] = $database1->{$field};
$expected2[$field] = $database2->{$field};
}
+ $expected1['name'] = 'English'; // Lang filtered expected.
$expected1['comments'] = (bool) $expected1['comments'];
$expected2['comments'] = (bool) $expected2['comments'];
diff --git a/mod/lesson/classes/external.php b/mod/lesson/classes/external.php
index d3ff0190b56..fc99b71d0f0 100644
--- a/mod/lesson/classes/external.php
+++ b/mod/lesson/classes/external.php
@@ -143,7 +143,9 @@ class mod_lesson_external extends external_api {
$lessonrecord = self::get_lesson_summary_for_exporter($lessonrecord);
$exporter = new lesson_summary_exporter($lessonrecord, array('context' => $context));
- $returnedlessons[] = $exporter->export($PAGE->get_renderer('core'));
+ $lesson = $exporter->export($PAGE->get_renderer('core'));
+ $lesson->name = external_format_string($lesson->name, $context);
+ $returnedlessons[] = $lesson;
}
}
$result = array();
diff --git a/mod/lesson/tests/external_test.php b/mod/lesson/tests/external_test.php
index 27ae4ae8ea6..95246491516 100644
--- a/mod/lesson/tests/external_test.php
+++ b/mod/lesson/tests/external_test.php
@@ -99,7 +99,8 @@ class mod_lesson_external_testcase extends externallib_advanced_testcase {
* Test test_mod_lesson_get_lessons_by_courses
*/
public function test_mod_lesson_get_lessons_by_courses() {
- global $DB;
+ global $DB, $CFG;
+ require_once($CFG->libdir . '/externallib.php');
// Create additional course.
$course2 = self::getDataGenerator()->create_course();
@@ -107,6 +108,7 @@ class mod_lesson_external_testcase extends externallib_advanced_testcase {
// Second lesson.
$record = new stdClass();
$record->course = $course2->id;
+ $record->name = 'EnglishEspañol';
$lesson2 = self::getDataGenerator()->create_module('lesson', $record);
// Execute real Moodle enrolment as we'll call unenrol() method on the instance later.
@@ -122,6 +124,14 @@ class mod_lesson_external_testcase extends externallib_advanced_testcase {
self::setUser($this->student);
+ // Enable multilang filter to on content and heading.
+ filter_manager::reset_caches();
+ filter_set_global_state('multilang', TEXTFILTER_ON);
+ filter_set_applies_to_strings('multilang', true);
+ // Set WS filtering.
+ $wssettings = external_settings::get_instance();
+ $wssettings->set_filter(true);
+
$returndescription = mod_lesson_external::get_lessons_by_courses_returns();
// Create what we expect to be returned when querying the two courses.
@@ -157,6 +167,7 @@ class mod_lesson_external_testcase extends externallib_advanced_testcase {
$expected2[$field] = $lesson2->{$field};
}
+ $expected2['name'] = 'English'; // Lang filtered expected.
$expectedlessons = array($expected2, $expected1);
// Call the external function passing course ids.