From d08e6c31fb87d2a81362b15e147d1e765e37fdf5 Mon Sep 17 00:00:00 2001 From: Damyon Wiese Date: Fri, 22 Feb 2013 10:12:20 +0800 Subject: [PATCH] MDL-38061 Assignment - Use $CFG->showuseridentity to add extra fields to the assignment grading table/user summary. --- mod/assign/gradingtable.php | 18 +++++++++++++++++- mod/assign/locallib.php | 3 ++- mod/assign/renderable.php | 9 ++++++++- mod/assign/renderer.php | 10 +++++++++- 4 files changed, 36 insertions(+), 4 deletions(-) diff --git a/mod/assign/gradingtable.php b/mod/assign/gradingtable.php index 526ae857b09..8e91f127651 100644 --- a/mod/assign/gradingtable.php +++ b/mod/assign/gradingtable.php @@ -117,7 +117,9 @@ class assign_grading_table extends table_sql implements renderable { $params['assignmentid1'] = (int)$this->assignment->get_instance()->id; $params['assignmentid2'] = (int)$this->assignment->get_instance()->id; - $fields = user_picture::fields('u') . ', '; + $extrauserfields = get_extra_user_fields($this->assignment->get_context()); + + $fields = user_picture::fields('u', $extrauserfields) . ', '; $fields .= 'u.id as userid, '; $fields .= 's.status as status, '; $fields .= 's.id as submissionid, '; @@ -187,6 +189,11 @@ class assign_grading_table extends table_sql implements renderable { // Fullname. $columns[] = 'fullname'; $headers[] = get_string('fullname'); + + foreach ($extrauserfields as $extrafield) { + $columns[] = $extrafield; + $headers[] = get_user_field_name($extrafield); + } } else { // Record ID. $columns[] = 'recordid'; @@ -300,6 +307,9 @@ class assign_grading_table extends table_sql implements renderable { // Set the columns. $this->define_columns($columns); $this->define_headers($headers); + foreach ($extrauserfields as $extrafield) { + $this->column_class($extrafield, $extrafield); + } // We require at least one unique column for the sort. $this->sortable(true, 'userid'); $this->no_sorting('recordid'); @@ -896,6 +906,12 @@ class assign_grading_table extends table_sql implements renderable { * @return mixed string or NULL */ public function other_cols($colname, $row) { + // For extra user fields the result is already in $row. + if (empty($this->plugincache[$colname])) { + return $row->$colname; + } + + // This must be a plugin field. $plugincache = $this->plugincache[$colname]; $plugin = $plugincache[0]; diff --git a/mod/assign/locallib.php b/mod/assign/locallib.php index e428889dd20..9a54dccba34 100644 --- a/mod/assign/locallib.php +++ b/mod/assign/locallib.php @@ -2375,7 +2375,8 @@ class assign { $this->get_course()->id, $viewfullnames, $this->is_blind_marking(), - $this->get_uniqueid_for_user($user->id)); + $this->get_uniqueid_for_user($user->id), + get_extra_user_fields($this->get_context())); $o .= $this->get_renderer()->render($usersummary); } $submission = $this->get_user_submission($userid, false); diff --git a/mod/assign/renderable.php b/mod/assign/renderable.php index 02b7c3519e0..c62a4cbc687 100644 --- a/mod/assign/renderable.php +++ b/mod/assign/renderable.php @@ -119,23 +119,30 @@ class assign_user_summary implements renderable { public $blindmarking = false; /** @var int $uniqueidforuser */ public $uniqueidforuser; + /** @var array $extrauserfields */ + public $extrauserfields; /** * Constructor * @param stdClass $user * @param int $courseid * @param bool $viewfullnames + * @param bool $blindmarking + * @param int $uniqueidforuser + * @param array $extrauserfields */ public function __construct(stdClass $user, $courseid, $viewfullnames, $blindmarking, - $uniqueidforuser) { + $uniqueidforuser, + $extrauserfields) { $this->user = $user; $this->courseid = $courseid; $this->viewfullnames = $viewfullnames; $this->blindmarking = $blindmarking; $this->uniqueidforuser = $uniqueidforuser; + $this->extrauserfields = $extrauserfields; } } diff --git a/mod/assign/renderer.php b/mod/assign/renderer.php index 181e353ebdb..7fd5c42cf78 100644 --- a/mod/assign/renderer.php +++ b/mod/assign/renderer.php @@ -137,7 +137,15 @@ class mod_assign_renderer extends plugin_renderer_base { $o .= $this->output->spacer(array('width'=>30)); $urlparams = array('id' => $summary->user->id, 'course'=>$summary->courseid); $url = new moodle_url('/user/view.php', $urlparams); - $o .= $this->output->action_link($url, fullname($summary->user, $summary->viewfullnames)); + $fullname = fullname($summary->user, $summary->viewfullnames); + $extrainfo = array(); + foreach ($summary->extrauserfields as $extrafield) { + $extrainfo[] = $summary->user->$extrafield; + } + if (count($extrainfo)) { + $fullname .= ' (' . implode(', ', $extrainfo) . ')'; + } + $o .= $this->output->action_link($url, $fullname); } $o .= $this->output->box_end(); $o .= $this->output->container_end();