From 0c18577317beab490e21003ec099e769da3fc334 Mon Sep 17 00:00:00 2001 From: zbdd Date: Thu, 28 Aug 2014 04:13:39 +0000 Subject: [PATCH] MDL-37312 backup: Keep course idnumber on same site course restore When the course idnumber is set during a same site course restore, retain the course idnumber if there are no duplicates. --- backup/moodle2/restore_stepslib.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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).