Add new capability to control who gets warning emails.
authorDan Marsden <dan@danmarsden.com>
Sun, 25 Jun 2017 22:43:14 +0000 (10:43 +1200)
committerDan Marsden <dan@danmarsden.com>
Sun, 25 Jun 2017 22:43:14 +0000 (10:43 +1200)
classes/add_warning_form.php
classes/task/notify.php
db/access.php
lang/en/attendance.php
version.php

index a8682a2..f337ce8 100644 (file)
@@ -75,7 +75,7 @@ class mod_attendance_add_warning_form extends moodleform {
         $mform->setType('emailcontent', PARAM_RAW);
         $mform->addHelpButton('emailcontent', 'emailcontent', 'mod_attendance');
 
-        $users = get_users_by_capability(context_course::instance($COURSE->id), 'mod/attendance:viewreports');
+        $users = get_users_by_capability(context_course::instance($COURSE->id), 'mod/attendance:warningemails');
         $options = array();
         foreach ($users as $user) {
             $options[$user->id] = fullname($user);
index 01531b1..a5a8a3c 100644 (file)
@@ -80,12 +80,18 @@ class notify extends \core\task\scheduled_task {
             if (!empty($record->thirdpartyemails)) {
                 $sendto = explode(',', $record->thirdpartyemails);
                 $record->percent = round($record->percent * 100)."%";
+                $context = context_module::instance($record->cmid);
                 foreach ($sendto as $senduser) {
-                    if (empty($thirdpartynotifications[$senduser])) {
-                        $thirdpartynotifications[$senduser] = array();
-                    }
-                    if (!isset($thirdpartynotifications[$senduser][$record->aid.'_'.$record->userid])) {
-                        $thirdpartynotifications[$senduser][$record->aid.'_'.$record->userid] = get_string('thirdpartyemailtext', 'attendance', $record);
+                    // Check user is allowed to receive warningemails.
+                    if (has_capability('mod/attendance:warningemails', $context, $senduser)) {
+                        if (empty($thirdpartynotifications[$senduser])) {
+                            $thirdpartynotifications[$senduser] = array();
+                        }
+                        if (!isset($thirdpartynotifications[$senduser][$record->aid . '_' . $record->userid])) {
+                            $thirdpartynotifications[$senduser][$record->aid . '_' . $record->userid] = get_string('thirdpartyemailtext', 'attendance', $record);
+                        }
+                    } else {
+                        mtrace("user".$senduser. "does not have capablity in cm".$record->cmid);
                     }
                 }
             }
index 25a2bf0..22841ed 100644 (file)
@@ -141,4 +141,16 @@ $capabilities = array(
             'manager' => CAP_ALLOW
         )
     ),
+    // Users that can receive extra warning e-mails.
+    'mod/attendance:warningemails' => array(
+        'riskbitmask' => RISK_DATALOSS,
+
+        'captype' => 'write',
+        'contextlevel' => CONTEXT_MODULE,
+        'archetypes' => array(
+            'teacher' => CAP_ALLOW,
+            'editingteacher' => CAP_ALLOW,
+            'manager' => CAP_ALLOW
+        )
+    )
 );
index a69e975..a80554a 100644 (file)
@@ -52,6 +52,7 @@ $string['attendance:takeattendances'] = 'Taking Attendances';
 $string['attendance:view'] = 'Viewing Attendances';
 $string['attendance:viewreports'] = 'Viewing Reports';
 $string['attendance:viewsummaryreports'] = 'View course summary reports';
+$string['attendance:warningemails'] = 'Can be subscribed to emails with at-risk users';
 $string['attendance_already_submitted'] = 'You may not self register attendance that has already been set.';
 $string['attendancedata'] = 'Attendance data';
 $string['attendanceforthecourse'] = 'Attendance for the course';
index 629f535..e90db9b 100644 (file)
@@ -23,7 +23,7 @@
  */
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version  = 2017062200;
+$plugin->version  = 2017062201;
 $plugin->requires = 2017042100;
 $plugin->release = '3.3.9';
 $plugin->maturity  = MATURITY_ALPHA;