. /** * Student form class. * * @package mod_attendance * @copyright 2011 Artem Andreev * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die(); require_once($CFG->libdir.'/formslib.php'); /** * Class mod_attendance_student_attendance_form * * @copyright 2011 Artem Andreev * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class mod_attendance_student_attendance_form extends moodleform { /** * Called to define this moodle form * * @return void */ public function definition() { global $USER; $mform =& $this->_form; $attforsession = $this->_customdata['session']; $attblock = $this->_customdata['attendance']; $statuses = $attblock->get_statuses(); // Check if user has access to all statuses. $disabledduetotime = false; foreach ($statuses as $status) { if ($status->studentavailability === '0') { unset($statuses[$status->id]); } if (!empty($status->studentavailability) && time() > $attforsession->sessdate + ($status->studentavailability * 60)) { unset($statuses[$status->id]); $disabledduetotime = true; } } $mform->addElement('hidden', 'sessid', null); $mform->setType('sessid', PARAM_INT); $mform->setConstant('sessid', $attforsession->id); $mform->addElement('hidden', 'sesskey', null); $mform->setType('sesskey', PARAM_INT); $mform->setConstant('sesskey', sesskey()); // Set a title as the date and time of the session. $sesstiontitle = userdate($attforsession->sessdate, get_string('strftimedate')).' ' .attendance_strftimehm($attforsession->sessdate); $mform->addElement('header', 'session', $sesstiontitle); // If a session description is set display it. if (!empty($attforsession->description)) { $mform->addElement('html', $attforsession->description); } if (!empty($attforsession->studentpassword)) { $mform->addElement('text', 'studentpassword', get_string('password', 'attendance')); $mform->setType('studentpassword', PARAM_TEXT); $mform->addRule('studentpassword', get_string('passwordrequired', 'attendance'), 'required'); } if (!$attforsession->autoassignstatus) { // Create radio buttons for setting the attendance status. $radioarray = array(); foreach ($statuses as $status) { $name = html_writer::span($status->description, 'statusdesc'); $radioarray[] =& $mform->createElement('radio', 'status', '', $name, $status->id, array()); } if ($disabledduetotime) { $warning = html_writer::span(get_string('somedisabledstatus', 'attendance'), 'somedisabledstatus'); $radioarray[] =& $mform->createElement('static', '', '', $warning); } // Add the radio buttons as a control with the user's name in front. $radiogroup = $mform->addGroup($radioarray, 'statusarray', $USER->firstname.' '.$USER->lastname.':', array(''), false); $radiogroup->setAttributes(array('class' => 'statusgroup')); $mform->addRule('statusarray', get_string('attendancenotset', 'attendance'), 'required', '', 'client', false, false); } $this->add_action_buttons(); } /** * Validate Form. * * @param array $data * @param array $files * @return array */ public function validation($data, $files) { $errors = array(); if (!($this->_customdata['session']->autoassignstatus)) { // Check if this status is allowed to be set. if (empty($data['status'])) { $errors['statusarray'] = get_string('invalidstatus', 'attendance'); } } return $errors; } }