commit a9b09b7a0e244734c92dbd0fc245a3851273434b Author: Francis Devine Date: Tue Sep 3 23:58:31 2013 +1200 adds duplicate idname and duplicate shortname checks to update_course, also adds duplicate idname validation to the course edit form diff --git a/course/edit_form.php b/course/edit_form.php index c845331..d4be40e 100644 --- a/course/edit_form.php +++ b/course/edit_form.php @@ -329,6 +329,7 @@ class course_edit_form extends moodleform { global $DB, $CFG; $errors = parent::validation($data, $files); + //check we don't have a duplicate shortname if ($foundcourses = $DB->get_records('course', array('shortname'=>$data['shortname']))) { if (!empty($data['id'])) { unset($foundcourses[$data['id']]); @@ -342,6 +343,18 @@ class course_edit_form extends moodleform { } } + //check we don't have a duplicate idnumber + if (!empty($data['idnumber'])) { + $foundcourses = $DB->get_records('course', array('idnumber'=>$data['idnumber'])); + if (!empty($data['id'])) { + unset($foundcourses[$data['id']]); + } + if (!empty($foundcourses)) { + $errors['idnumber']= get_string('idnumbertaken'); + } + } + + $errors = array_merge($errors, enrol_course_edit_validation($data, $this->context)); $courseformat = course_get_format((object)array('format' => $data['format'])); diff --git a/course/lib.php b/course/lib.php index 6ed5bb5..6561d73 100644 --- a/course/lib.php +++ b/course/lib.php @@ -2361,6 +2361,20 @@ function update_course($data, $editoroptions = NULL) { if ($overviewfilesoptions = course_overviewfiles_options($data->id)) { $data = file_postupdate_standard_filemanager($data, 'overviewfiles', $overviewfilesoptions, $context, 'course', 'overviewfiles', 0); } + + //check we don't have a duplicate shortname + if(!empty($data->shortname) and $oldcourse->shortname!= $data->shortname) { + if ($DB->record_exists('course', array('idnumber', => $data->shortname))) { + throw new moodle_exception('shortnametaken'); + } + } + + //check we don't have a duplicate idnumber + if (!empty($data->idnumber) and $oldcourse->idnumber != $data->idnumber) { + if ($DB->record_exists('course', array('idnumber' => $data->idnumber))) { + throw new moodle_exception('idnumbertaken'); + } + } if (!isset($data->category) or empty($data->category)) { // prevent nulls and 0 in category field