From 041ff27245391ae525acb20dd2e4e3a26de2b328 Mon Sep 17 00:00:00 2001 From: Simey Lameze <simey@moodle.com> Date: Tue, 4 Feb 2020 15:18:49 +0800 Subject: [PATCH] MDL-67846 mod_forum: export user full name --- mod/forum/export.php | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/mod/forum/export.php b/mod/forum/export.php index 725c1aba0a3..360c1d533ca 100644 --- a/mod/forum/export.php +++ b/mod/forum/export.php @@ -117,9 +117,11 @@ if ($form->is_cancelled()) { $striphtml = !empty($data->striphtml); $humandates = !empty($data->humandates); - $fields = ['id', 'discussion', 'parent', 'userid', 'created', 'modified', 'mailed', 'subject', 'message', + $fields = ['id', 'discussion', 'parent', 'userid', 'userfullname', 'created', 'modified', 'mailed', 'subject', 'message', 'messageformat', 'messagetrust', 'attachment', 'totalscore', 'mailnow', 'deleted', 'privatereplyto', - 'wordcount', 'charcount']; + 'privatereplytofullname', 'wordcount', 'charcount']; + + $canviewfullname = has_capability('moodle/site:viewfullnames', $forum->get_context()); $datamapper = $legacydatamapperfactory->get_post_data_mapper(); $exportdata = new ArrayObject($datamapper->to_legacy_objects($posts)); @@ -132,8 +134,29 @@ if ($form->is_cancelled()) { $dataformat, $fields, $iterator, - function($exportdata) use ($fields, $striphtml, $humandates) { - $data = $exportdata; + function($exportdata) use ($fields, $striphtml, $humandates, $canviewfullname) { + $data = new stdClass(); + + foreach ($fields as $field) { + // Set data field's value from the export data's equivalent field by default. + $data->$field = $exportdata->$field ?? null; + + if ($field == 'userfullname') { + $user = \core_user::get_user($data->userid); + $data->userfullname = fullname($user, $canviewfullname); + } + + if ($field == 'privatereplytofullname' && !empty($data->privatereplyto)) { + $user = \core_user::get_user($data->privatereplyto); + $data->privatereplytofullname = fullname($user, $canviewfullname); + } + + // Convert any boolean fields to their integer equivalent for output. + if (is_bool($data->$field)) { + $data->$field = (int) $data->$field; + } + } + if ($striphtml) { // The following call to html_to_text uses the option that strips out // all URLs, but format_text complains if it finds @@PLUGINFILE@@ tokens. @@ -147,12 +170,6 @@ if ($form->is_cancelled()) { $data->created = userdate($data->created); $data->modified = userdate($data->modified); } - foreach ($fields as $field) { - // Convert any boolean fields to their integer equivalent for output. - if (is_bool($data->$field)) { - $data->$field = (int) $data->$field; - } - } return $data; }); die;