From c3496f85999824a47b752b01a3ba3541fcd3f471 Mon Sep 17 00:00:00 2001 From: Paul Holden Date: Tue, 7 Jan 2020 16:18:56 +0000 Subject: [PATCH] MDL-67732 group: observe viewfullnames capability. Backport from MDL-67245. --- group/autogroup.php | 4 ++-- group/classes/output/user_groups_editable.php | 6 ++++-- group/externallib.php | 3 ++- group/index.php | 10 ++++++++-- group/overview.php | 4 +++- 5 files changed, 19 insertions(+), 8 deletions(-) diff --git a/group/autogroup.php b/group/autogroup.php index b66ca45cb3a..206cfd040ed 100644 --- a/group/autogroup.php +++ b/group/autogroup.php @@ -171,7 +171,7 @@ if ($editform->is_cancelled()) { $table->width = '90%'; } $table->data = array(); - + $viewfullnames = has_capability('moodle/site:viewfullnames', $context); foreach ($groups as $group) { $line = array(); if (groups_get_group_by_name($courseid, $group['name'])) { @@ -183,7 +183,7 @@ if ($editform->is_cancelled()) { if ($data->allocateby != 'no') { $unames = array(); foreach ($group['members'] as $user) { - $unames[] = fullname($user, true); + $unames[] = fullname($user, $viewfullnames); } $line[] = implode(', ', $unames); $line[] = count($group['members']); diff --git a/group/classes/output/user_groups_editable.php b/group/classes/output/user_groups_editable.php index aa6b98afd4b..13dba2adad9 100644 --- a/group/classes/output/user_groups_editable.php +++ b/group/classes/output/user_groups_editable.php @@ -77,8 +77,10 @@ class user_groups_editable extends \core\output\inplace_editable { foreach ($coursegroups as $group) { $options[$group->id] = format_string($group->name, true, ['context' => $this->context]); } - $this->edithint = get_string('editusersgroupsa', 'group', fullname($user)); - $this->editlabel = get_string('editusersgroupsa', 'group', fullname($user)); + + $fullname = fullname($user, has_capability('moodle/site:viewfullnames', $this->context)); + $this->edithint = get_string('editusersgroupsa', 'group', $fullname); + $this->editlabel = get_string('editusersgroupsa', 'group', $fullname); $attributes = ['multiple' => true]; $this->set_type_autocomplete($options, $attributes); diff --git a/group/externallib.php b/group/externallib.php index bebede4fd4b..341e72750a8 100644 --- a/group/externallib.php +++ b/group/externallib.php @@ -556,7 +556,8 @@ class core_group_external extends external_api { require_capability('moodle/course:managegroups', $context); if (!groups_remove_member_allowed($group, $user)) { - throw new moodle_exception('errorremovenotpermitted', 'group', '', fullname($user)); + $fullname = fullname($user, has_capability('moodle/site:viewfullnames', $context)); + throw new moodle_exception('errorremovenotpermitted', 'group', '', $fullname); } groups_remove_member($group, $user); } diff --git a/group/index.php b/group/index.php index 79c9e21aabd..ab3fb04d898 100644 --- a/group/index.php +++ b/group/index.php @@ -81,6 +81,9 @@ switch ($action) { case 'ajax_getmembersingroup': $roles = array(); if ($groupmemberroles = groups_get_members_by_role($groupids[0], $courseid, 'u.id, ' . get_all_user_name_fields(true, 'u'))) { + + $viewfullnames = has_capability('moodle/site:viewfullnames', $context); + foreach($groupmemberroles as $roleid=>$roledata) { $shortroledata = new stdClass(); $shortroledata->name = $roledata->name; @@ -88,7 +91,7 @@ switch ($action) { foreach($roledata->users as $member) { $shortmember = new stdClass(); $shortmember->id = $member->id; - $shortmember->name = fullname($member, true); + $shortmember->name = fullname($member, $viewfullnames); $shortroledata->users[] = $shortmember; } $roles[] = $shortroledata; @@ -190,12 +193,15 @@ $members = array(); if ($singlegroup) { $usernamefields = get_all_user_name_fields(true, 'u'); if ($groupmemberroles = groups_get_members_by_role(reset($groupids), $courseid, 'u.id, ' . $usernamefields)) { + + $viewfullnames = has_capability('moodle/site:viewfullnames', $context); + foreach ($groupmemberroles as $roleid => $roledata) { $users = array(); foreach ($roledata->users as $member) { $users[] = (object)[ 'value' => $member->id, - 'text' => fullname($member, true) + 'text' => fullname($member, $viewfullnames) ]; } $members[] = (object)[ diff --git a/group/overview.php b/group/overview.php index 785cc6356ff..d4619a65962 100644 --- a/group/overview.php +++ b/group/overview.php @@ -248,9 +248,11 @@ foreach ($members as $gpgid=>$groupdata) { $line[] = html_writer::tag('span', $name, array('class' => 'group_hoverdescription', 'data-groupid' => $gpid)); $hoverevents[$gpid] = get_string('descriptiona', null, $jsdescription); } + $viewfullnames = has_capability('moodle/site:viewfullnames', $context); $fullnames = array(); foreach ($users as $user) { - $fullnames[] = ''.fullname($user, true).''; + $fullnames[] = html_writer::link(new moodle_url('/user/view.php', ['id' => $user->id, 'course' => $course->id]), + fullname($user, $viewfullnames)); } $line[] = implode(', ', $fullnames); $line[] = count($users);