diff --git a/backup/moodle2/restore_stepslib.php b/backup/moodle2/restore_stepslib.php index d0036cf3fbc..94255c2d05f 100644 --- a/backup/moodle2/restore_stepslib.php +++ b/backup/moodle2/restore_stepslib.php @@ -1472,11 +1472,14 @@ class restore_course_structure_step extends restore_structure_step { $data->fullname = $fullname; $data->shortname= $shortname; + // Only allow the idnumber to be set if the user has permission and the idnumber is not already in use by + // another course on this site. $context = context::instance_by_id($this->task->get_contextid()); - if (has_capability('moodle/course:changeidnumber', $context, $this->task->get_userid())) { - $data->idnumber = ''; + if (!empty($data->idnumber) && has_capability('moodle/course:changeidnumber', $context, $this->task->get_userid()) && + $this->task->is_samesite() && !$DB->record_exists('course', array('idnumber' => $data->idnumber))) { + // Do not reset idnumber. } else { - unset($data->idnumber); + $data->idnumber = ''; } // Any empty value for course->hiddensections will lead to 0 (default, show collapsed).