mirror of
https://github.com/moodle/moodle.git
synced 2025-04-19 07:25:30 +02:00
MDL-66877 mod: Fix WebServices returning unfiltered activity names
This commit is contained in:
parent
a5f618d6a9
commit
62ff1b954f
@ -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'),
|
||||
|
@ -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' => '<span lang="en" class="multilang">English</span><span lang="es" class="multilang">Español</span>',
|
||||
'intro' => 'the assignment intro text here <a href="@@PLUGINFILE@@/intro.txt">link</a>',
|
||||
'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']);
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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 = '<span lang="en" class="multilang">English</span><span lang="es" class="multilang">Español</span>';
|
||||
$record->intro = '<button>Test with HTML allowed.</button>';
|
||||
$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'];
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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 = '<span lang="en" class="multilang">English</span><span lang="es" class="multilang">Español</span>';
|
||||
$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.
|
||||
|
Loading…
x
Reference in New Issue
Block a user