. /** * Base class for the settings form for {@link quiz_attempts_report}s. * * @package mod_quiz * @copyright 2012 The Open University * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die(); require_once($CFG->libdir . '/formslib.php'); /** * Base class for the settings form for {@link quiz_attempts_report}s. * * @copyright 2012 The Open University * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ abstract class mod_quiz_attempts_report_form extends moodleform { protected function definition() { $mform = $this->_form; $mform->addElement('header', 'preferencespage', get_string('reportwhattoinclude', 'quiz')); $this->standard_attempt_fields($mform); $this->other_attempt_fields($mform); $mform->addElement('header', 'preferencesuser', get_string('reportdisplayoptions', 'quiz')); $this->standard_preference_fields($mform); $this->other_preference_fields($mform); $mform->addElement('submit', 'submitbutton', get_string('showreport', 'quiz')); } protected function standard_attempt_fields(MoodleQuickForm $mform) { $mform->addElement('select', 'attempts', get_string('reportattemptsfrom', 'quiz'), array( quiz_attempts_report::ENROLLED_WITH => get_string('reportuserswith', 'quiz'), quiz_attempts_report::ENROLLED_WITHOUT => get_string('reportuserswithout', 'quiz'), quiz_attempts_report::ENROLLED_ALL => get_string('reportuserswithorwithout', 'quiz'), quiz_attempts_report::ALL_WITH => get_string('reportusersall', 'quiz'), )); $stategroup = array( $mform->createElement('advcheckbox', 'stateinprogress', '', get_string('stateinprogress', 'quiz')), $mform->createElement('advcheckbox', 'stateoverdue', '', get_string('stateoverdue', 'quiz')), $mform->createElement('advcheckbox', 'statefinished', '', get_string('statefinished', 'quiz')), $mform->createElement('advcheckbox', 'stateabandoned', '', get_string('stateabandoned', 'quiz')), ); $mform->addGroup($stategroup, 'stateoptions', get_string('reportattemptsthatare', 'quiz'), array(' '), false); $mform->setDefault('stateinprogress', 1); $mform->setDefault('stateoverdue', 1); $mform->setDefault('statefinished', 1); $mform->setDefault('stateabandoned', 1); $mform->disabledIf('stateinprogress', 'attempts', 'eq', quiz_attempts_report::ENROLLED_WITHOUT); $mform->disabledIf('stateoverdue', 'attempts', 'eq', quiz_attempts_report::ENROLLED_WITHOUT); $mform->disabledIf('statefinished', 'attempts', 'eq', quiz_attempts_report::ENROLLED_WITHOUT); $mform->disabledIf('stateabandoned', 'attempts', 'eq', quiz_attempts_report::ENROLLED_WITHOUT); if (quiz_report_can_filter_only_graded($this->_customdata['quiz'])) { $gm = html_writer::tag('span', quiz_get_grading_option_name($this->_customdata['quiz']->grademethod), array('class' => 'highlight')); $mform->addElement('advcheckbox', 'onlygraded', '', get_string('reportshowonlyfinished', 'quiz', $gm)); $mform->disabledIf('onlygraded', 'attempts', 'eq', quiz_attempts_report::ENROLLED_WITHOUT); $mform->disabledIf('onlygraded', 'statefinished', 'notchecked'); } } protected function other_attempt_fields(MoodleQuickForm $mform) { } protected function standard_preference_fields(MoodleQuickForm $mform) { $mform->addElement('text', 'pagesize', get_string('pagesize', 'quiz')); $mform->setType('pagesize', PARAM_INT); } protected function other_preference_fields(MoodleQuickForm $mform) { } public function validation($data, $files) { $errors = parent::validation($data, $files); if ($data['attempts'] != quiz_attempts_report::ENROLLED_WITHOUT && !( $data['stateinprogress'] || $data['stateoverdue'] || $data['statefinished'] || $data['stateabandoned'])) { $errors['stateoptions'] = get_string('reportmustselectstate', 'quiz'); } return $errors; } }