diff --git a/admin/tool/uploadcourse/classes/course.php b/admin/tool/uploadcourse/classes/course.php index c0f7b539b2f..6f2cffa410d 100644 --- a/admin/tool/uploadcourse/classes/course.php +++ b/admin/tool/uploadcourse/classes/course.php @@ -720,6 +720,12 @@ class tool_uploadcourse_course { } } + // Visibility can only be 0 or 1. + if (!empty($coursedata['visible']) AND !($coursedata['visible'] == 0 OR $coursedata['visible'] == 1)) { + $this->error('invalidvisibilitymode', new lang_string('invalidvisibilitymode', 'tool_uploadcourse')); + return false; + } + // Saving data. $this->data = $coursedata; $this->enrolmentdata = tool_uploadcourse_helper::get_enrolment_data($this->rawdata); diff --git a/admin/tool/uploadcourse/lang/en/tool_uploadcourse.php b/admin/tool/uploadcourse/lang/en/tool_uploadcourse.php index 6c20d8f4962..db95617ab7d 100644 --- a/admin/tool/uploadcourse/lang/en/tool_uploadcourse.php +++ b/admin/tool/uploadcourse/lang/en/tool_uploadcourse.php @@ -90,6 +90,7 @@ $string['invalidcsvfile'] = 'Invalid input CSV file'; $string['invalidencoding'] = 'Invalid encoding'; $string['invalidmode'] = 'Invalid mode selected'; $string['invalideupdatemode'] = 'Invalid update mode selected'; +$string['invalidvisibilitymode'] = 'Invalid visibility mode given'; $string['invalidroles'] = 'Invalid role names: {$a}'; $string['invalidshortname'] = 'Invalid shortname'; $string['missingmandatoryfields'] = 'Missing value for mandatory fields: {$a}'; diff --git a/admin/tool/uploadcourse/tests/course_test.php b/admin/tool/uploadcourse/tests/course_test.php index 092469fc364..c0d29e0d15a 100644 --- a/admin/tool/uploadcourse/tests/course_test.php +++ b/admin/tool/uploadcourse/tests/course_test.php @@ -82,6 +82,16 @@ class tool_uploadcourse_course_testcase extends advanced_testcase { $this->assertArrayHasKey('invalidshortname', $co->get_errors()); } + public function test_invalid_visibility() { + $this->resetAfterTest(true); + $mode = tool_uploadcourse_processor::MODE_CREATE_NEW; + $updatemode = tool_uploadcourse_processor::UPDATE_NOTHING; + $data = array('shortname' => 'test', 'fullname' => 'New course', 'summary' => 'New', 'category' => 1, 'visible' => 2); + $co = new tool_uploadcourse_course($mode, $updatemode, $data); + $this->assertFalse($co->prepare()); + $this->assertArrayHasKey('invalidvisibilitymode', $co->get_errors()); + } + public function test_create() { global $DB; $this->resetAfterTest(true);