MDL-46705 admin: Validate unique shortname for frontpage course
authorMarina Glancy <marina@moodle.com>
Wed, 16 Sep 2015 06:38:52 +0000 (14:38 +0800)
committerMarina Glancy <marina@moodle.com>
Wed, 16 Sep 2015 06:38:52 +0000 (14:38 +0800)
lib/adminlib.php

index c812b3b..debcc5f 100644 (file)
@@ -4001,12 +4001,13 @@ class admin_setting_sitesettext extends admin_setting_configtext {
      * @return mixed true or message string
      */
     public function validate($data) {
-        global $DB;
+        global $DB, $SITE;
         $cleaned = clean_param($data, PARAM_TEXT);
         if ($cleaned === '') {
             return get_string('required');
         }
-        if ($this->name ==='shortname' && $DB->record_exists('course', array('shortname' => $data))) {
+        if ($this->name ==='shortname' &&
+                $DB->record_exists_sql('SELECT id from {course} WHERE shortname = ? AND id <> ?', array($data, $SITE->id))) {
             return get_string('shortnametaken', 'error', $data);
         }
         if ("$data" == "$cleaned") { // implicit conversion to string is needed to do exact comparison