From 48a7b182f1573ac976df314ddfaa5be627afd6ed Mon Sep 17 00:00:00 2001 From: Jerome Mouneyrac Date: Fri, 22 Jun 2012 16:48:51 +0800 Subject: [PATCH] MDL-33869 user_get_user_details: add support for 'Show user identity' fields set by administrator --- user/lib.php | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/user/lib.php b/user/lib.php index 8aeef9c9eccca..a0d121c85cafd 100644 --- a/user/lib.php +++ b/user/lib.php @@ -237,6 +237,8 @@ function user_get_user_details($user, $course = null, array $userfields = array( $currentuser = ($user->id == $USER->id); $isadmin = is_siteadmin($USER); + $showuseridentityfields = get_extra_user_fields($context); + if (!empty($course)) { $canviewhiddenuserfields = has_capability('moodle/course:viewhiddenuserfields', $context); } else { @@ -319,16 +321,19 @@ function user_get_user_details($user, $course = null, array $userfields = array( if ($user->address && in_array('address', $userfields)) { $userdetails['address'] = $user->address; } - if ($user->phone1 && in_array('phone1', $userfields)) { - $userdetails['phone1'] = $user->phone1; - } - if ($user->phone2 && in_array('phone2', $userfields)) { - $userdetails['phone2'] = $user->phone2; - } } else { $hiddenfields = array_flip(explode(',', $CFG->hiddenuserfields)); } + if ($user->phone1 && in_array('phone1', $userfields) && + (isset($showuseridentityfields['phone1']) or $canviewhiddenuserfields)) { + $userdetails['phone1'] = $user->phone1; + } + if ($user->phone2 && in_array('phone2', $userfields) && + (isset($showuseridentityfields['phone2']) or $canviewhiddenuserfields)) { + $userdetails['phone2'] = $user->phone2; + } + if (isset($user->description) && (!isset($hiddenfields['description']) or $isadmin)) { if (!$cannotviewdescription) { @@ -393,6 +398,7 @@ function user_get_user_details($user, $course = null, array $userfields = array( if (in_array('email', $userfields) && ($isadmin // The admin is allowed the users email or $currentuser // Of course the current user is as well or $canviewuseremail // this is a capability in course context, it will be false in usercontext + or isset($showuseridentityfields['email']) or $user->maildisplay == 1 or ($user->maildisplay == 2 and enrol_sharing_course($user, $USER)))) { $userdetails['email'] = $user->email; @@ -406,13 +412,17 @@ function user_get_user_details($user, $course = null, array $userfields = array( } //Departement/Institution/Idnumber are not displayed on any profile, however you can get them from editing profile. - if ($isadmin or $currentuser) { - if (in_array('idnumber', $userfields) && $user->idnumber) { + if ($isadmin or $currentuser or isset($showuseridentityfields['idnumber'])) { + if (in_array('idnumber', $userfields) && $user->idnumber) { $userdetails['idnumber'] = $user->idnumber; } + } + if ($isadmin or $currentuser or isset($showuseridentityfields['institution'])) { if (in_array('institution', $userfields) && $user->institution) { $userdetails['institution'] = $user->institution; } + } + if ($isadmin or $currentuser or isset($showuseridentityfields['department'])) { if (in_array('department', $userfields) && isset($user->department)) { //isset because it's ok to have department 0 $userdetails['department'] = $user->department; }