From 806d634359cbf9d1d5a2667ac97ad723d0a22f41 Mon Sep 17 00:00:00 2001
From: Shamim Rezaie <shamim@moodle.com>
Date: Fri, 6 Sep 2019 04:17:10 +1000
Subject: [PATCH] MDL-66298 forumreport_summary: Display full names
 consistently

Part of MDL-66076. Display full names and profile links consistent
with other areas of Moodle.
---
 .../report/summary/classes/summary_table.php  | 26 ++++++++++---------
 1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/mod/forum/report/summary/classes/summary_table.php b/mod/forum/report/summary/classes/summary_table.php
index eeec8d5c53e..551cb8e1d93 100644
--- a/mod/forum/report/summary/classes/summary_table.php
+++ b/mod/forum/report/summary/classes/summary_table.php
@@ -160,9 +160,9 @@ class summary_table extends table_sql {
      * @return string User's full name.
      */
     public function col_fullname($data): string {
-        $fullname = $data->firstname . ' ' . $data->lastname;
+        global $OUTPUT;
 
-        return $fullname;
+        return $OUTPUT->user_picture($data, array('size' => 35, 'courseid' => $this->cm->course, 'includefullname' => true));
     }
 
     /**
@@ -377,18 +377,20 @@ class summary_table extends table_sql {
     protected function define_base_sql(): void {
         $this->sql = new \stdClass();
 
+        $userfields = get_extra_user_fields($this->context);
+        $userfieldssql = \user_picture::fields('u', $userfields);
+
         // Define base SQL query format.
         // Ignores private replies as they are not visible to all participants.
         $this->sql->basefields = ' ue.userid AS userid,
-                                    e.courseid AS courseid,
-                                    f.id as forumid,
-                                    SUM(CASE WHEN p.parent = 0 THEN 1 ELSE 0 END) AS postcount,
-                                    SUM(CASE WHEN p.parent != 0 THEN 1 ELSE 0 END) AS replycount,
-                                    u.firstname,
-                                    u.lastname,
-                                    SUM(CASE WHEN att.attcount IS NULL THEN 0 ELSE att.attcount END) AS attachmentcount,
-                                    MIN(p.created) AS earliestpost,
-                                    MAX(p.created) AS latestpost';
+                                   e.courseid AS courseid,
+                                   f.id as forumid,
+                                   SUM(CASE WHEN p.parent = 0 THEN 1 ELSE 0 END) AS postcount,
+                                   SUM(CASE WHEN p.parent != 0 THEN 1 ELSE 0 END) AS replycount,
+                                   ' . $userfieldssql . ',
+                                   SUM(CASE WHEN att.attcount IS NULL THEN 0 ELSE att.attcount END) AS attachmentcount,
+                                   MIN(p.created) AS earliestpost,
+                                   MAX(p.created) AS latestpost';
 
         $this->sql->basefromjoins = '    {enrol} e
                                     JOIN {user_enrolments} ue ON ue.enrolid = e.id
@@ -409,7 +411,7 @@ class summary_table extends table_sql {
 
         $this->sql->basewhere = 'e.courseid = :courseid';
 
-        $this->sql->basegroupby = 'ue.userid, e.courseid, f.id, u.firstname, u.lastname';
+        $this->sql->basegroupby = 'ue.userid, e.courseid, f.id, u.id';
 
         if ($this->logreader) {
             $this->fill_log_summary_temp_table($this->context->id);