Show warning if teacher using mark on close and no status available.
authorDan Marsden <dan@danmarsden.com>
Thu, 1 Mar 2018 23:39:25 +0000 (12:39 +1300)
committerDan Marsden <dan@danmarsden.com>
Thu, 1 Mar 2018 23:39:25 +0000 (12:39 +1300)
add_form.php
lang/en/attendance.php
update_form.php

index b2b9c17..756bb02 100644 (file)
@@ -262,6 +262,7 @@ class mod_attendance_add_form extends moodleform {
      * @param array $files
      */
     public function validation($data, $files) {
+        global $DB;
         $errors = parent::validation($data, $files);
 
         $sesstarttime = $data['sestime']['starthour'] * HOURSECS + $data['sestime']['startminute'] * MINSECS;
@@ -299,6 +300,19 @@ class mod_attendance_add_form extends moodleform {
             $this->_form->setConstant('previoussessiondate', $data['sessiondate']);
         }
 
+        if ($data['automark'] == ATTENDANCE_AUTOMARK_CLOSE) {
+            $cm            = $this->_customdata['cm'];
+            // Check that the selected statusset has a status to use when unmarked.
+            $sql = 'SELECT id
+            FROM {attendance_statuses}
+            WHERE deleted = 0 AND (attendanceid = 0 or attendanceid = ?)
+            AND setnumber = ? AND setunmarked = 1';
+            $params = array($cm->instance, $data['statusset']);
+            if (!$DB->record_exists_sql($sql, $params)) {
+                $errors['automark'] = get_string('noabsentstatusset', 'attendance');
+            }
+        }
+
         return $errors;
     }
 
index 1f78da3..4cc1330 100644 (file)
@@ -272,6 +272,7 @@ $string['mustselectusers'] = 'Must select users to export';
 $string['newdate'] = 'New date';
 $string['newduration'] = 'New duration';
 $string['newstatusset'] = 'New set of statuses';
+$string['noabsentstatusset'] = 'The status set in use does not have a status to use when not marked.';
 $string['noattendanceusers'] = 'It is not possible to export any data as there are no students enrolled in the course.';
 $string['noautomark'] = 'Disabled';
 $string['noattforuser'] = 'No attendance records exist for the user';
index 2f9d538..ea2762e 100644 (file)
@@ -177,6 +177,7 @@ class mod_attendance_update_form extends moodleform {
      * @param array $files
      */
     public function validation($data, $files) {
+        global $DB;
         $errors = parent::validation($data, $files);
 
         $sesstarttime = $data['sestime']['starthour'] * HOURSECS + $data['sestime']['startminute'] * MINSECS;
@@ -185,6 +186,19 @@ class mod_attendance_update_form extends moodleform {
             $errors['sestime'] = get_string('invalidsessionendtime', 'attendance');
         }
 
+        if ($data['automark'] == ATTENDANCE_AUTOMARK_CLOSE) {
+            $cm            = $this->_customdata['cm'];
+            // Check that the selected statusset has a status to use when unmarked.
+            $sql = 'SELECT id
+            FROM {attendance_statuses}
+            WHERE deleted = 0 AND (attendanceid = 0 or attendanceid = ?)
+            AND setnumber = ? AND setunmarked = 1';
+            $params = array($cm->instance, $data['statusset']);
+            if (!$DB->record_exists_sql($sql, $params)) {
+                $errors['automark'] = get_string('noabsentstatusset', 'attendance');
+            }
+        }
+
         return $errors;
     }
 }