From 5b468f74af093470933970dd195e34329dcd7ce5 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Tue, 27 Sep 2016 11:25:34 +1300 Subject: [PATCH] Fixes #223 allow student attendance to be disabled at site-level --- add_form.php | 9 +++++++-- attendance.php | 4 ++++ lang/en/attendance.php | 1 + renderer.php | 3 ++- sessions.php | 4 ++++ settings.php | 3 +++ 6 files changed, 21 insertions(+), 3 deletions(-) diff --git a/add_form.php b/add_form.php index f216caa..95ed2b5 100644 --- a/add_form.php +++ b/add_form.php @@ -106,8 +106,13 @@ class mod_attendance_add_form extends moodleform { $mform->addHelpButton('addmultiply', 'createmultiplesessions', 'attendance'); // Students can mark own attendance. - $mform->addElement('checkbox', 'studentscanmark', '', get_string('studentscanmark','attendance')); - $mform->addHelpButton('studentscanmark', 'studentscanmark', 'attendance'); + if (!empty(get_config('attendance', 'studentscanmark'))) { + $mform->addElement('checkbox', 'studentscanmark', '', get_string('studentscanmark', 'attendance')); + $mform->addHelpButton('studentscanmark', 'studentscanmark', 'attendance'); + } else { + $mform->addElement('hidden', 'studentscanmark', '0'); + $mform->settype('studentscanmark', PARAM_INT); + } $mform->addElement('date_time_selector', 'sessiondate', get_string('sessiondate', 'attendance')); diff --git a/attendance.php b/attendance.php index f08b89d..48e4e8e 100644 --- a/attendance.php +++ b/attendance.php @@ -41,6 +41,10 @@ $course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST) // Require the user is logged in. require_login($course, true, $cm); +if (empty(get_config('attendance', 'studentscanmark')) || empty($attforsession->studentscanmark)) { + redirect(new moodle_url('/mod/attendance/view.php', array('id' => $cm->id))); + exit; +} $pageparams->sessionid = $id; $att = new attendance($attendance, $cm, $course, $PAGE->context, $pageparams); diff --git a/lang/en/attendance.php b/lang/en/attendance.php index 9299464..f1aa353 100644 --- a/lang/en/attendance.php +++ b/lang/en/attendance.php @@ -294,6 +294,7 @@ $string['eventstatusupdated'] = 'Status updated'; $string['eventstatusadded'] = 'Status added'; $string['studentscanmark'] = 'Allow students to record own attendance'; +$string['studentscanmark_desc'] = 'If checked, teachers will be able to allow students to mark their own attendance.'; $string['studentscanmark_help'] = 'If checked students will be able to change their own attendance status for the session.'; $string['set_by_student'] = 'Self-recorded'; $string['attendance_already_submitted'] = 'You may not self register attendance that has already been set.'; diff --git a/renderer.php b/renderer.php index d358aef..f4af1ec 100644 --- a/renderer.php +++ b/renderer.php @@ -768,7 +768,8 @@ class mod_attendance_renderer extends plugin_renderer_base { $cell->colspan = 2; $row->cells[] = $cell; } else { - if (!empty($sess->studentscanmark)) { // Student can mark their own attendance. + if (!empty(get_config('attendance', 'studentscanmark')) && !empty($sess->studentscanmark)) { + // Student can mark their own attendance. // URL to the page that lets the student modify their attendance. $url = new moodle_url('/mod/attendance/attendance.php', array('sessid' => $sess->id, 'sesskey' => sesskey())); diff --git a/sessions.php b/sessions.php index f65aedd..e24e29a 100644 --- a/sessions.php +++ b/sessions.php @@ -194,6 +194,10 @@ function construct_sessions_data_for_add($formdata) { $duration = $formdata->durtime['hours']*HOURSECS + $formdata->durtime['minutes']*MINSECS; $now = time(); + if (empty(get_config('attendance', 'studentscanmark'))) { + $formdata->studentscanmark = 0; + } + $sessions = array(); if (isset($formdata->addmultiply)) { $startdate = $formdata->sessiondate; diff --git a/settings.php b/settings.php index 66c5805..81ebf6c 100644 --- a/settings.php +++ b/settings.php @@ -41,4 +41,7 @@ if ($ADMIN->fulltree) { $settings->add(new admin_setting_configselect('attendance/resultsperpage', get_string('resultsperpage', 'attendance'), get_string('resultsperpage_desc', 'attendance'), 25, $options)); + + $settings->add(new admin_setting_configcheckbox('attendance/studentscanmark', + get_string('studentscanmark', 'attendance'), get_string('studentscanmark_desc', 'attendance'), 1)); }