diff --git a/lib/moodlelib.php b/lib/moodlelib.php index decda4cfb6f..773e547ffa8 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -3700,7 +3700,7 @@ function get_all_user_name_fields($returnsql = false, $tableprefix = null, $pref * * @param object $addtoobject Object to add user name fields to. * @param object $secondobject Object that contains user name field information. - * @param string $prefix prefix to be added to the user name field e.g. authorfirstname. + * @param string $prefix prefix to be added to all fields (including $additionalfields) e.g. authorfirstname. * @param array $additionalfields Additional fields to be matched with data in the second object. * The key can be set to the user table field name. * @return object User name fields. @@ -3712,8 +3712,10 @@ function username_load_fields_from_object($addtoobject, $secondobject, $prefix = // the key is a number and then sets the key to the array value. foreach ($additionalfields as $key => $value) { if (is_numeric($key)) { - $additionalfields[$value] = $value; + $additionalfields[$value] = $prefix . $value; unset($additionalfields[$key]); + } else { + $additionalfields[$key] = $prefix . $value; } } $fields = array_merge($fields, $additionalfields); diff --git a/lib/tests/moodlelib_test.php b/lib/tests/moodlelib_test.php index 4d138668298..fe7a58bb711 100644 --- a/lib/tests/moodlelib_test.php +++ b/lib/tests/moodlelib_test.php @@ -2633,7 +2633,6 @@ class core_moodlelib_testcase extends advanced_testcase { $userinfo->imagealt = 'Michael Jordan draining another basket.'; $userinfo->idnumber = 3982; - // Just user name fields. $user = new stdClass(); $user = username_load_fields_from_object($user, $userinfo); @@ -2648,8 +2647,9 @@ class core_moodlelib_testcase extends advanced_testcase { // User information for showing a picture. $user = new stdClass(); - $additionalfields = array('id' => 'userid', 'imagealt', 'picture', 'email'); + $additionalfields = explode(',', user_picture::fields()); $user = username_load_fields_from_object($user, $userinfo, null, $additionalfields); + $user->id = $userinfo->userid; $expectedarray = new stdClass(); $expectedarray->id = 1; $expectedarray->firstname = 'Bruce'; @@ -2669,11 +2669,16 @@ class core_moodlelib_testcase extends advanced_testcase { $userinfo->authorfirstnamephonetic = 'ブルース'; $userinfo->authorlastnamephonetic = 'カンベッル'; $userinfo->authormiddlename = ''; + $userinfo->authorpicture = 23; + $userinfo->authorimagealt = 'Michael Jordan draining another basket.'; + $userinfo->authoremail = 'test@testing.net'; + // Return an object with user picture information. $user = new stdClass(); - $additionalfields = array('id' => 'userid', 'imagealt', 'picture', 'email'); + $additionalfields = explode(',', user_picture::fields()); $user = username_load_fields_from_object($user, $userinfo, 'author', $additionalfields); + $user->id = $userinfo->userid; $expectedarray = new stdClass(); $expectedarray->id = 1; $expectedarray->firstname = 'Bruce'; @@ -2682,7 +2687,7 @@ class core_moodlelib_testcase extends advanced_testcase { $expectedarray->lastnamephonetic = 'カンベッル'; $expectedarray->middlename = ''; $expectedarray->alternatename = ''; - $expectedarray->email = ''; + $expectedarray->email = 'test@testing.net'; $expectedarray->picture = 23; $expectedarray->imagealt = 'Michael Jordan draining another basket.'; $this->assertEquals($user, $expectedarray); diff --git a/mod/forum/lib.php b/mod/forum/lib.php index a4af6491605..1966ec12ef3 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -3330,8 +3330,9 @@ function forum_print_post($post, $discussion, $forum, &$cm, $course, $ownpost=fa // Build an object that represents the posting user $postuser = new stdClass; - $postuserfields = array('id' => 'userid', 'imagealt', 'picture', 'email'); + $postuserfields = explode(',', user_picture::fields()); $postuser = username_load_fields_from_object($postuser, $post, null, $postuserfields); + $postuser->id = $post->userid; $postuser->fullname = fullname($postuser, $cm->cache->caps['moodle/site:viewfullnames']); $postuser->profilelink = new moodle_url('/user/view.php', array('id'=>$post->userid, 'course'=>$course->id)); @@ -3767,8 +3768,9 @@ function forum_print_discussion_header(&$post, $forum, $group=-1, $datestring="" // Picture $postuser = new stdClass(); - $postuserfields = array('id' => 'userid', 'imagealt', 'picture', 'email'); + $postuserfields = explode(',', user_picture::fields()); $postuser = username_load_fields_from_object($postuser, $post, null, $postuserfields); + $postuser->id = $post->userid; echo ''; echo $OUTPUT->user_picture($postuser, array('courseid'=>$forum->course)); echo "\n"; @@ -3830,7 +3832,8 @@ function forum_print_discussion_header(&$post, $forum, $group=-1, $datestring="" $usedate = (empty($post->timemodified)) ? $post->modified : $post->timemodified; // Just in case $parenturl = (empty($post->lastpostid)) ? '' : '&parent='.$post->lastpostid; $usermodified = new stdClass(); - $usermodified = username_load_fields_from_object($usermodified, $post, 'um', array('id' => 'usermodified')); + $usermodified->id = $post->usermodified; + $usermodified = username_load_fields_from_object($usermodified, $post, 'um'); echo ''. fullname($usermodified).'
'; echo ''. @@ -6110,7 +6113,9 @@ function forum_get_recent_mod_activity(&$activities, &$index, $timestart, $cours $tmpactivity->user = new stdClass(); $additionalfields = array('id' => 'userid', 'picture', 'imagealt', 'email'); + $additionalfields = explode(',', user_picture::fields()); $tmpactivity->user = username_load_fields_from_object($tmpactivity->user, $post, null, $additionalfields); + $tmpactivity->user->id = $post->userid; $activities[$index++] = $tmpactivity; } diff --git a/mod/quiz/report/attemptsreport_table.php b/mod/quiz/report/attemptsreport_table.php index 5c56c505873..1b626aba8ab 100644 --- a/mod/quiz/report/attemptsreport_table.php +++ b/mod/quiz/report/attemptsreport_table.php @@ -121,8 +121,9 @@ abstract class quiz_attempts_report_table extends table_sql { public function col_picture($attempt) { global $OUTPUT; $user = new stdClass(); - $additionalfields = array('id' => 'userid', 'imagealt', 'picture', 'email'); + $additionalfields = explode(',', user_picture::fields()); $user = username_load_fields_from_object($user, $attempt, null, $additionalfields); + $user->id = $attempt->userid return $OUTPUT->user_picture($user); } diff --git a/mod/scorm/report/basic/report.php b/mod/scorm/report/basic/report.php index b2a6032d9c4..e97df4f6a48 100644 --- a/mod/scorm/report/basic/report.php +++ b/mod/scorm/report/basic/report.php @@ -381,8 +381,9 @@ class scorm_basic_report extends scorm_default_report { } if (in_array('picture', $columns)) { $user = new stdClass(); - $additionalfields = array('id' => 'userid', 'picture', 'imagealt', 'email'); + $additionalfields = explode(',', user_picture::fields()); $user = username_load_fields_from_object($user, $scouser, null, $additionalfields); + $user->id = $scouser->userid; $row[] = $OUTPUT->user_picture($user, array('courseid'=>$course->id)); } if (!$download) { diff --git a/mod/scorm/report/interactions/report.php b/mod/scorm/report/interactions/report.php index 66ea5cc9100..e886c8b0185 100644 --- a/mod/scorm/report/interactions/report.php +++ b/mod/scorm/report/interactions/report.php @@ -416,8 +416,9 @@ class scorm_interactions_report extends scorm_default_report { } if (in_array('picture', $columns)) { $user = new stdClass(); - $additionalfields = array('id' => 'userid', 'picture', 'imagealt', 'email'); + $additionalfields = explode(',', user_picture::fields()); $user = username_load_fields_from_object($user, $scouser, null, $additionalfields); + $user->id = $scouser->userid; $row[] = $OUTPUT->user_picture($user, array('courseid'=>$course->id)); } if (!$download) { diff --git a/mod/scorm/report/objectives/report.php b/mod/scorm/report/objectives/report.php index 7b26703a07f..199c0940d97 100644 --- a/mod/scorm/report/objectives/report.php +++ b/mod/scorm/report/objectives/report.php @@ -420,8 +420,9 @@ class scorm_objectives_report extends scorm_default_report { } if (in_array('picture', $columns)) { $user = new stdClass(); - $additionalfields = array('id' => 'userid', 'picture', 'imagealt', 'email'); + $additionalfields = explode(',', user_picture::fields()); $user = username_load_fields_from_object($user, $scouser, null, $additionalfields); + $user->id = $scouser->userid; $row[] = $OUTPUT->user_picture($user, array('courseid'=>$course->id)); } if (!$download) {