From 05fdbe378a78c79a2f1d135587424c76bb2cf543 Mon Sep 17 00:00:00 2001 From: Shamim Rezaie Date: Fri, 20 Jan 2017 20:28:57 +1100 Subject: [PATCH 1/4] MDL-55915 mod_assign: let fullname() know if user has viewfullnames cap Instruct fullname() to format names on the assignment grading page with alternativefullnameformat when user has moodle/site:viewfullnames capability. --- mod/assign/gradingtable.php | 6 ++++-- mod/assign/locallib.php | 32 +++++++++++++++++++------------- mod/assign/renderable.php | 7 ++++++- mod/assign/renderer.php | 2 +- 4 files changed, 30 insertions(+), 17 deletions(-) diff --git a/mod/assign/gradingtable.php b/mod/assign/gradingtable.php index d2fc055b73d..82d3edff58b 100644 --- a/mod/assign/gradingtable.php +++ b/mod/assign/gradingtable.php @@ -652,8 +652,9 @@ class assign_grading_table extends table_sql implements renderable { list($sort, $params) = users_order_by_sql(); $markers = get_users_by_capability($this->assignment->get_context(), 'mod/assign:grade', '', $sort); $markerlist[0] = get_string('choosemarker', 'assign'); + $viewfullnames = has_capability('moodle/site:viewfullnames', $this->assignment->get_context()); foreach ($markers as $marker) { - $markerlist[$marker->id] = fullname($marker); + $markerlist[$marker->id] = fullname($marker, $viewfullnames); } } if (empty($markerlist)) { @@ -662,7 +663,8 @@ class assign_grading_table extends table_sql implements renderable { } if ($this->is_downloading()) { if (isset($markers[$row->allocatedmarker])) { - return fullname($markers[$row->allocatedmarker]); + return fullname($markers[$row->allocatedmarker], + has_capability('moodle/site:viewfullnames', $this->assignment->get_context())); } else { return ''; } diff --git a/mod/assign/locallib.php b/mod/assign/locallib.php index 2bdebc2ab36..6fa5f6bce8b 100644 --- a/mod/assign/locallib.php +++ b/mod/assign/locallib.php @@ -3548,7 +3548,7 @@ class assign { $extensionduedate = $flags->extensionduedate; } $showedit = $this->submissions_open($userid) && ($this->is_any_submission_plugin_enabled()); - $viewfullnames = has_capability('moodle/site:viewfullnames', $this->get_course_context()); + $viewfullnames = has_capability('moodle/site:viewfullnames', $this->get_context()); $usergroups = $this->get_all_groups($user->id); $submissionstatus = new assign_submission_status_compact($instance->allowsubmissionsfromdate, @@ -3711,7 +3711,7 @@ class assign { $user = $DB->get_record('user', array('id' => $userid)); if ($user) { $this->update_effective_access($userid); - $viewfullnames = has_capability('moodle/site:viewfullnames', $this->get_course_context()); + $viewfullnames = has_capability('moodle/site:viewfullnames', $this->get_context()); $usersummary = new assign_user_summary($user, $this->get_course()->id, $viewfullnames, @@ -3746,7 +3746,7 @@ class assign { $extensionduedate = $flags->extensionduedate; } $showedit = $this->submissions_open($userid) && ($this->is_any_submission_plugin_enabled()); - $viewfullnames = has_capability('moodle/site:viewfullnames', $this->get_course_context()); + $viewfullnames = has_capability('moodle/site:viewfullnames', $this->get_context()); $usergroups = $this->get_all_groups($user->id); $submissionstatus = new assign_submission_status($instance->allowsubmissionsfromdate, @@ -3972,8 +3972,9 @@ class assign { $markers = get_users_by_capability($this->context, 'mod/assign:grade', '', $sort); $markingallocationoptions[''] = get_string('filternone', 'assign'); $markingallocationoptions[ASSIGN_MARKER_FILTER_NO_MARKER] = get_string('markerfilternomarker', 'assign'); + $viewfullnames = has_capability('moodle/site:viewfullnames', $this->context); foreach ($markers as $marker) { - $markingallocationoptions[$marker->id] = fullname($marker); + $markingallocationoptions[$marker->id] = fullname($marker, $viewfullnames); } } @@ -4219,12 +4220,13 @@ class assign { $uniqueid = $user->recordid; } if ($hasviewblind) { - return get_string('participant', 'assign') . ' ' . $uniqueid . ' (' . fullname($user) . ')'; + return get_string('participant', 'assign') . ' ' . $uniqueid . ' (' . + fullname($user, has_capability('moodle/site:viewfullnames', $this->get_context())) . ')'; } else { return get_string('participant', 'assign') . ' ' . $uniqueid; } } else { - return fullname($user); + return fullname($user, has_capability('moodle/site:viewfullnames', $this->get_context())); } } @@ -4487,6 +4489,7 @@ class assign { $usercount = 0; $extrauserfields = get_extra_user_fields($this->get_context()); + $viewfullnames = has_capability('moodle/site:viewfullnames', $this->get_context()); foreach ($userlist as $userid) { if ($usercount >= 5) { $usershtml .= get_string('moreusers', 'assign', count($userlist) - 5); @@ -4496,8 +4499,7 @@ class assign { $usershtml .= $this->get_renderer()->render(new assign_user_summary($user, $this->get_course()->id, - has_capability('moodle/site:viewfullnames', - $this->get_course_context()), + $viewfullnames, $this->is_blind_marking(), $this->get_uniqueid_for_user($user->id), $extrauserfields, @@ -4551,6 +4553,7 @@ class assign { $usercount = 0; $extrauserfields = get_extra_user_fields($this->get_context()); + $viewfullnames = has_capability('moodle/site:viewfullnames', $this->get_context()); foreach ($userlist as $userid) { if ($usercount >= 5) { $usershtml .= get_string('moreusers', 'assign', count($userlist) - 5); @@ -4560,8 +4563,7 @@ class assign { $usershtml .= $this->get_renderer()->render(new assign_user_summary($user, $this->get_course()->id, - has_capability('moodle/site:viewfullnames', - $this->get_course_context()), + $viewfullnames, $this->is_blind_marking(), $this->get_uniqueid_for_user($user->id), $extrauserfields, @@ -4708,7 +4710,7 @@ class assign { if ($flags) { $extensionduedate = $flags->extensionduedate; } - $viewfullnames = has_capability('moodle/site:viewfullnames', $this->get_course_context()); + $viewfullnames = has_capability('moodle/site:viewfullnames', $this->get_context()); $gradingstatus = $this->get_grading_status($user->id); $usergroups = $this->get_all_groups($user->id); @@ -4820,6 +4822,8 @@ class assign { } } + $viewfullnames = has_capability('moodle/site:viewfullnames', $this->get_context()); + $feedbackstatus = new assign_feedback_status($gradefordisplay, $gradeddate, $grader, @@ -4827,7 +4831,8 @@ class assign { $grade, $this->get_course_module()->id, $this->get_return_action(), - $this->get_return_params()); + $this->get_return_params(), + $viewfullnames); return $feedbackstatus; } return; @@ -7097,8 +7102,9 @@ class assign { list($sort, $params) = users_order_by_sql(); $markers = get_users_by_capability($this->context, 'mod/assign:grade', '', $sort); $markerlist = array('' => get_string('choosemarker', 'assign')); + $viewfullnames = has_capability('moodle/site:viewfullnames', $this->context); foreach ($markers as $marker) { - $markerlist[$marker->id] = fullname($marker); + $markerlist[$marker->id] = fullname($marker, $viewfullnames); } $mform->addElement('select', 'allocatedmarker', get_string('allocatedmarker', 'assign'), $markerlist); $mform->addHelpButton('allocatedmarker', 'allocatedmarker', 'assign'); diff --git a/mod/assign/renderable.php b/mod/assign/renderable.php index 4d8b73c1cfe..6ee0e490ce7 100644 --- a/mod/assign/renderable.php +++ b/mod/assign/renderable.php @@ -287,6 +287,8 @@ class assign_feedback_status implements renderable { public $returnaction = ''; /** @var array returnparams */ public $returnparams = array(); + /** @var bool canviewfullnames */ + public $canviewfullnames = false; /** * Constructor @@ -298,6 +300,7 @@ class assign_feedback_status implements renderable { * @param int $coursemoduleid * @param string $returnaction The action required to return to this page * @param array $returnparams The list of params required to return to this page + * @param bool $canviewfullnames */ public function __construct($gradefordisplay, $gradeddate, @@ -306,7 +309,8 @@ class assign_feedback_status implements renderable { $grade, $coursemoduleid, $returnaction, - $returnparams) { + $returnparams, + $canviewfullnames) { $this->gradefordisplay = $gradefordisplay; $this->gradeddate = $gradeddate; $this->grader = $grader; @@ -315,6 +319,7 @@ class assign_feedback_status implements renderable { $this->coursemoduleid = $coursemoduleid; $this->returnaction = $returnaction; $this->returnparams = $returnparams; + $this->canviewfullnames = $canviewfullnames; } } diff --git a/mod/assign/renderer.php b/mod/assign/renderer.php index 665a0d3c002..0dae5e0cc91 100644 --- a/mod/assign/renderer.php +++ b/mod/assign/renderer.php @@ -389,7 +389,7 @@ class mod_assign_renderer extends plugin_renderer_base { $cell1 = new html_table_cell(get_string('gradedby', 'assign')); $userdescription = $this->output->user_picture($status->grader) . $this->output->spacer(array('width'=>30)) . - fullname($status->grader); + fullname($status->grader, $status->canviewfullnames); $cell2 = new html_table_cell($userdescription); $row->cells = array($cell1, $cell2); $t->data[] = $row; From 20b2bbb966ea1185808bf1a5e19185f8626a1951 Mon Sep 17 00:00:00 2001 From: Shamim Rezaie Date: Fri, 20 Jan 2017 20:29:39 +1100 Subject: [PATCH 2/4] MDL-55915 Gradebook: let fullname() know if user has viewfullnames cap Instruct fullname() to format names on the gradebook grader report with alternativefullnameformat when user has moodle/site:viewfullnames capability. --- grade/report/grader/lib.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/grade/report/grader/lib.php b/grade/report/grader/lib.php index 2d9378bfd04..b9de55272c2 100644 --- a/grade/report/grader/lib.php +++ b/grade/report/grader/lib.php @@ -183,6 +183,7 @@ class grade_report_grader extends grade_report { array_unshift($mygroups, $this->currentgroup); } } + $viewfullnames = has_capability('moodle/site:viewfullnames', $this->context); // always initialize all arrays $queue = array(); @@ -288,7 +289,7 @@ class grade_report_grader extends grade_report { $userfields = 'id, ' . get_all_user_name_fields(true); $user = $DB->get_record('user', array('id' => $userid), $userfields); $gradestr = new stdClass(); - $gradestr->username = fullname($user); + $gradestr->username = fullname($user, $viewfullnames); $gradestr->itemname = $gradeitem->get_name(); $warnings[] = get_string($errorstr, 'grades', $gradestr); if ($skip) { @@ -611,6 +612,7 @@ class grade_report_grader extends grade_report { 'moodle/grade:edit'), $this->context); } $hasuserreportcell = $canseeuserreport || $canseesingleview; + $viewfullnames = has_capability('moodle/site:viewfullnames', $this->context); $strfeedback = $this->get_lang_string("feedback"); $strgrade = $this->get_lang_string('grade'); @@ -682,7 +684,7 @@ class grade_report_grader extends grade_report { $usercell->text = $OUTPUT->user_picture($user, array('visibletoscreenreaders' => false)); } - $fullname = fullname($user); + $fullname = fullname($user, $viewfullnames); $usercell->text .= html_writer::link(new moodle_url('/user/view.php', array('id' => $user->id, 'course' => $this->course->id)), $fullname, array( 'class' => 'username', )); @@ -781,6 +783,8 @@ class grade_report_grader extends grade_report { $strexcludedgrades = get_string('excluded', 'grades'); $strerror = get_string('error'); + $viewfullnames = has_capability('moodle/site:viewfullnames', $this->context); + foreach ($this->gtree->get_levels() as $key => $row) { $headingrow = new html_table_row(); $headingrow->attributes['class'] = 'heading_name_row'; @@ -937,7 +941,7 @@ class grade_report_grader extends grade_report { $itemrow = new html_table_row(); $itemrow->id = 'user_'.$userid; - $fullname = fullname($user); + $fullname = fullname($user, $viewfullnames); $jsarguments['users'][$userid] = $fullname; foreach ($this->gtree->items as $itemid => $unused) { From ee8f39b7a29b4fdff0170f7e5d258f7b9b2e000e Mon Sep 17 00:00:00 2001 From: Shamim Rezaie Date: Fri, 20 Jan 2017 20:30:09 +1100 Subject: [PATCH 3/4] MDL-55915 core_user: let fullname() know if user has viewfullnames cap Added $viewfullnames property to the user_selector_base class so anyone using a child class of this class can let it know if user has viewfullnames capability or not. --- user/selector/lib.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/user/selector/lib.php b/user/selector/lib.php index b8c20c2a3c6..ee0619a4a13 100644 --- a/user/selector/lib.php +++ b/user/selector/lib.php @@ -82,6 +82,9 @@ abstract class user_selector_base { /** @var int this is used to define maximum number of users visible in list */ public $maxusersperpage = 100; + /** @var boolean Whether to override fullname() */ + public $viewfullnames = false; + /** * Constructor. Each subclass must have a constructor with this signature. * @@ -571,7 +574,7 @@ abstract class user_selector_base { * @return string a string representation of the user. */ public function output_user($user) { - $out = fullname($user); + $out = fullname($user, $this->viewfullnames); if ($this->extrafields) { $displayfields = array(); foreach ($this->extrafields as $field) { From d636015c8af943ae3f2a4dc5cb39c64d59f49209 Mon Sep 17 00:00:00 2001 From: Shamim Rezaie Date: Fri, 20 Jan 2017 20:30:38 +1100 Subject: [PATCH 4/4] MDL-55915 enrol_manual: let fullname()know if user has viewfullnames cap fullname() relies on its second parameter to determine wheter it should use fullnamedisplay or alternativefullnameformat. We need to check for moodle/site:viewfullnames capability and pass true as the second parameter to fullname() whereever the user has this capability. --- enrol/manual/ajax.php | 3 ++- enrol/manual/manage.php | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/enrol/manual/ajax.php b/enrol/manual/ajax.php index ad454c47a4c..8cb081a2bd4 100644 --- a/enrol/manual/ajax.php +++ b/enrol/manual/ajax.php @@ -80,9 +80,10 @@ switch ($action) { } else { $useroptions['link'] = false; } + $viewfullnames = has_capability('moodle/site:viewfullnames', $context); foreach ($outcome->response['users'] as &$user) { $user->picture = $OUTPUT->user_picture($user, $useroptions); - $user->fullname = fullname($user); + $user->fullname = fullname($user, $viewfullnames); $fieldvalues = array(); foreach ($extrafields as $field) { $fieldvalues[] = s($user->{$field}); diff --git a/enrol/manual/manage.php b/enrol/manual/manage.php index 17627f8d605..e3161d4b045 100644 --- a/enrol/manual/manage.php +++ b/enrol/manual/manage.php @@ -37,6 +37,7 @@ $context = context_course::instance($course->id, MUST_EXIST); require_login($course); $canenrol = has_capability('enrol/manual:enrol', $context); $canunenrol = has_capability('enrol/manual:unenrol', $context); +$viewfullnames = has_capability('moodle/site:viewfullnames', $context); // Note: manage capability not used here because it is used for editing // of existing enrolments which is not possible here. @@ -74,7 +75,9 @@ navigation_node::override_active_url(new moodle_url('/enrol/users.php', array('i $options = array('enrolid' => $enrolid, 'accesscontext' => $context); $potentialuserselector = new enrol_manual_potential_participant('addselect', $options); +$potentialuserselector->viewfullnames = $viewfullnames; $currentuserselector = new enrol_manual_current_participant('removeselect', $options); +$currentuserselector->viewfullnames = $viewfullnames; // Build the list of options for the enrolment period dropdown. $unlimitedperiod = get_string('unlimited');