'reviewimmediately', QUIZ_REVIEW_OPEN => 'reviewopen', QUIZ_REVIEW_CLOSED => 'reviewclosed'); private static $things = array( QUIZ_REVIEW_RESPONSES => 'responses', QUIZ_REVIEW_ANSWERS => 'answers', QUIZ_REVIEW_FEEDBACK => 'feedback', QUIZ_REVIEW_GENERALFEEDBACK => 'generalfeedback', QUIZ_REVIEW_SCORES => 'scores', QUIZ_REVIEW_OVERALLFEEDBACK => 'overallfeedback'); public function __construct($name, $visiblename, $description, $defaultsetting) { $this->plugin = 'quiz'; parent::__construct($name, $visiblename, $description, $defaultsetting); } private function normalise_data($data) { $value = 0; foreach (admin_setting_quiz_reviewoptions::$times as $timemask => $timestring) { foreach (admin_setting_quiz_reviewoptions::$things as $thingmask => $thingstring) { if (!empty($data[$timemask][$thingmask])) { $value += $timemask & $thingmask; } } } return $value; } public function get_setting() { $value = $this->config_read($this->name); $adv = $this->config_read($this->name.'_adv'); if (is_null($value) or is_null($adv)) { return NULL; } return array('value' => $value, 'adv' => $adv); } public function write_setting($data) { if (!isset($data['value'])) { $data['value'] = $this->normalise_data($data); } $this->config_write($this->name, $data['value']); $value = empty($data['adv']) ? 0 : 1; $this->config_write($this->name.'_adv', $value); return ''; } public function output_html($data, $query='') { if (!isset($data['value'])) { $data['value'] = $this->normalise_data($data); } $return = '