示例#1
0
 /**
  * Save the new settings passed in $data
  *
  * @todo Add vartype handling to ensure $data is array
  * @param array $data Associative array of value=>xx, forced=>xx, adv=>xx
  * @return string empty or error message
  */
 public function write_setting($data)
 {
     global $CFG;
     $value = $data['value'];
     $forced = empty($data['forced']) ? 0 : 1;
     $adv = empty($data['adv']) ? 0 : 2;
     $flag = $forced | $adv;
     //bitwise or
     if (!in_array($value, array_keys($this->choices))) {
         return 'Error setting ';
     }
     $oldvalue = $this->config_read($this->name);
     $oldflag = (int) $this->config_read($this->name . '_flag');
     $oldforced = 1 & $oldflag;
     // first bit
     $result1 = $this->config_write($this->name, $value);
     $result2 = $this->config_write($this->name . '_flag', $flag);
     // force regrade if needed
     if ($oldforced != $forced or $forced and $value != $oldvalue) {
         require_once $CFG->libdir . '/gradelib.php';
         grade_category::updated_forced_settings();
     }
     if ($result1 and $result2) {
         return '';
     } else {
         return get_string('errorsetting', 'admin');
     }
 }