Fixes #223 allow student attendance to be disabled at site-level MOODLE_27_STABLE
authorDan Marsden <dan@danmarsden.com>
Mon, 26 Sep 2016 22:25:34 +0000 (11:25 +1300)
committerDan Marsden <dan@danmarsden.com>
Mon, 26 Sep 2016 22:31:07 +0000 (11:31 +1300)
add_form.php
attendance.php
lang/en/attendance.php
renderer.php
sessions.php
settings.php

index 9786f40..4cbaf85 100644 (file)
@@ -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'));
 
index f08b89d..48e4e8e 100644 (file)
@@ -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);
 
index 60788fd..c048f86 100644 (file)
@@ -231,6 +231,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.';
index d8d17c1..4887982 100644 (file)
@@ -748,7 +748,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()));
index ffd0c48..a1d9ed6 100644 (file)
@@ -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;
index 66c5805..81ebf6c 100644 (file)
@@ -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));
 }