diff --git a/user/lib.php b/user/lib.php index 03dc8ec6698..e975673301a 100644 --- a/user/lib.php +++ b/user/lib.php @@ -430,9 +430,7 @@ function user_get_user_details($user, $course = null, array $userfields = array( $hiddenfields = array_flip(explode(',', $CFG->hiddenuserfields)); } - - if (!empty($user->address) && (in_array('address', $userfields) - && in_array('address', $showuseridentityfields) || $isadmin)) { + if (!empty($user->address) && (in_array('address', $userfields) || $isadmin)) { $userdetails['address'] = $user->address; } if (!empty($user->phone1) && (in_array('phone1', $userfields) diff --git a/user/tests/userlib_test.php b/user/tests/userlib_test.php index 7271b2fed40..fa3d145a447 100644 --- a/user/tests/userlib_test.php +++ b/user/tests/userlib_test.php @@ -943,30 +943,33 @@ class userlib_test extends \advanced_testcase { // Get student details with required fields. $result = user_get_user_details($student1, $course, array('id', 'fullname', 'timezone', 'city', 'address', 'idnumber')); - $this->assertCount(4, $result); // Ensure address (never returned), idnumber (identity field) are not returned here. + $this->assertCount(5, $result); // Ensure idnumber (identity field) is not returned here. $this->assertEquals($student1->id, $result['id']); $this->assertEquals($student1fullname, $result['fullname']); $this->assertEquals($student1->timezone, $result['timezone']); $this->assertEquals($student1->city, $result['city']); + $this->assertEquals($student1->address, $result['address']); // Set new identity fields and hidden fields and try to retrieve them without permission. $CFG->showuseridentity = $CFG->showuseridentity . ',idnumber'; $CFG->hiddenuserfields = 'city'; $result = user_get_user_details($student1, $course, array('id', 'fullname', 'timezone', 'city', 'address', 'idnumber')); - $this->assertCount(3, $result); // Ensure address, city and idnumber are not returned here. + $this->assertCount(4, $result); // Ensure city and idnumber are not returned here. $this->assertEquals($student1->id, $result['id']); $this->assertEquals($student1fullname, $result['fullname']); $this->assertEquals($student1->timezone, $result['timezone']); + $this->assertEquals($student1->address, $result['address']); // Now, teacher should have permission to see the idnumber and city fields. $this->setUser($teacher); $result = user_get_user_details($student1, $course, array('id', 'fullname', 'timezone', 'city', 'address', 'idnumber')); - $this->assertCount(5, $result); // Ensure address is not returned here. + $this->assertCount(6, $result); $this->assertEquals($student1->id, $result['id']); $this->assertEquals($student1fullname, $result['fullname']); $this->assertEquals($student1->timezone, $result['timezone']); $this->assertEquals($student1->idnumber, $result['idnumber']); $this->assertEquals($student1->city, $result['city']); + $this->assertEquals($student1->address, $result['address']); // And admins can see anything. $this->setAdminUser();