]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-12655 set_config() should cast values to string because get_config does that...
authorskodak <skodak>
Wed, 19 Dec 2007 22:32:43 +0000 (22:32 +0000)
committerskodak <skodak>
Wed, 19 Dec 2007 22:32:43 +0000 (22:32 +0000)
lib/adminlib.php
lib/moodlelib.php

index 5ffa3ae7e5d12b32b3b4c56f2b1abf213749dd3b..56848ada6dd6bda2781002ee6c15710cba3d6145 100644 (file)
@@ -2162,6 +2162,19 @@ class admin_setting_configselect extends admin_setting {
             $defaultinfo = '';
         }
 
+        $current = $this->get_setting();
+        $warning = '';
+        if (is_null($current)) {
+            //first run
+        } else if (empty($current) and (array_key_exists('', $this->choices) or array_key_exists(0, $this->choices))) {
+            // no warning
+        } else if (!array_key_exists($current, $this->choices)) {
+            $warning = get_string('warningcurrentsetting', 'admin', s($current));
+            if (!is_null($default) and $data==$current) {
+                $data = $default; // use default instead of first value when showing the form
+            }
+        }
+
         $return = '<div class="form-select"><select id="'.$this->get_id().'" name="'.$this->get_full_name().'">';
         foreach ($this->choices as $key => $value) {
             // the string cast is needed because key may be integer - 0 is equal to most strings!
@@ -2169,7 +2182,7 @@ class admin_setting_configselect extends admin_setting {
         }
         $return .= '</select>'.$defaultinfo.'</div>';
 
-        return format_admin_setting($this, $this->visiblename, $return, $this->description);
+        return format_admin_setting($this, $this->visiblename, $return, $this->description, true, $warning);
     }
 
 }
@@ -4243,7 +4256,7 @@ function apply_default_exception_settings($defaults) {
  * @param string $description
  * @param bool $label link label to id
  */
-function format_admin_setting($setting, $title='', $form='', $description='', $label=true) {
+function format_admin_setting($setting, $title='', $form='', $description='', $label=true, $warning='') {
     global $CFG;
 
     $name     = $setting->name;
@@ -4257,14 +4270,18 @@ function format_admin_setting($setting, $title='', $form='', $description='', $l
     }
 
     if (empty($setting->plugin) and array_key_exists($name, $CFG->config_php_settings)) {
-        $override = '<span class="form-overridden">'.get_string('configoverride', 'admin').'</span>';
+        $override = '<div class="form-overridden">'.get_string('configoverride', 'admin').'</div>';
     } else {
         $override = '';
     }
 
+    if ($warning !== '') {
+        $warning = '<div class="form-warning">'.$warning.'</div>';
+    }
+
     $str = '
 <div class="form-item" id="admin-'.$setting->name.'">
-<div class="form-label"><label '.$labelfor.'>'.$title.'<span class="form-shortname">'.$name.'</span>'.$override.'</label></div>
+<div class="form-label"><label '.$labelfor.'>'.$title.'<span class="form-shortname">'.$name.'</span>'.$override.$warning.'</label></div>
 <div class="form-setting">'.$form.'</div>
 <div class="form-description">'.$description.'</div>
 </div>';
index a5f4eac8b3f00b28847a0cde3c6128f892cb9aa0..9dda931f39626738a39eec00687d630fcb3c68fd 100644 (file)
@@ -616,7 +616,7 @@ function set_config($name, $value, $plugin=NULL) {
             if (is_null($value)) {
                 unset($CFG->$name);
             } else {
-                $CFG->$name = $value;
+                $CFG->$name = (string)$value; // settings from db are always strings
             }
         }