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 '