diff --git a/lib/moodlelib.php b/lib/moodlelib.php index 877c57d..92328b7 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -3673,6 +3673,23 @@ function get_extra_user_fields($context, $already = array()) { } /** + * Checks if current user can view emails of users based on showuseridentity setting + * and moodle/site:viewuseridentity capability + * + * @param object $context Context + * @return boolean $canviewuseremail True if user can view emails, false otherwise + */ +function can_view_user_email($context) { + global $CFG; + + $canviewuseremail = !empty($CFG->showuseridentity) && + in_array('email', explode(',', $CFG->showuseridentity)) && + has_capability('moodle/site:viewuseridentity', $this->context); + + return $canviewuseremail; +} + +/** * If the current user is to be shown extra user fields when listing or * selecting users, returns a string suitable for including in an SQL select * clause to retrieve those fields. diff --git a/mod/forum/renderer.php b/mod/forum/renderer.php index 3463504..f15c737 100644 --- a/mod/forum/renderer.php +++ b/mod/forum/renderer.php @@ -86,6 +86,8 @@ class mod_forum_renderer extends plugin_renderer_base { if (!$users || !is_array($users) || count($users)===0) { $output .= $this->output->heading(get_string("nosubscribers", "forum")); } else { + $cm = get_coursemodule_from_instance('forum', $forum->id, $course->id, false, MUST_EXIST); + $canviewemail = can_view_user_email(context_module::instance($cm->id)); $output .= $this->output->heading(get_string("subscribersto","forum", "'".format_string($forum->name)."'")); $table = new html_table(); $table->cellpadding = 5; @@ -93,7 +95,11 @@ class mod_forum_renderer extends plugin_renderer_base { $table->tablealign = 'center'; $table->data = array(); foreach ($users as $user) { - $table->data[] = array($this->output->user_picture($user, array('courseid'=>$course->id)), fullname($user), $user->email); + $info = array($this->output->user_picture($user, array('courseid'=>$course->id)), fullname($user)); + if ($canviewemail) { + array_push($info, $user->email); + } + $table->data[] = $info; } $output .= html_writer::table($table); } diff --git a/mod/quiz/override_form.php b/mod/quiz/override_form.php index 80976ec..facaa48 100644 --- a/mod/quiz/override_form.php +++ b/mod/quiz/override_form.php @@ -157,10 +157,15 @@ class quiz_override_form extends moodleform { } $userchoices = array(); + $canviewemail = can_view_user_email($this->context); foreach ($users as $id => $user) { if (empty($invalidusers[$id]) || (!empty($override) && $id == $override->userid)) { - $userchoices[$id] = fullname($user) . ', ' . $user->email; + if ($canviewemail) { + $userchoices[$id] = fullname($user) . ', ' . $user->email; + } else { + $userchoices[$id] = fullname($user); + } } } unset($users);