MDL-33869 user_get_user_details: add support for 'Show user identity' fields set...
[moodle.git] / user / lib.php
index a8086ed..0da89c7 100644 (file)
@@ -227,6 +227,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 {
@@ -309,16 +311,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) {
 
@@ -383,6 +388,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;
@@ -396,13 +402,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;
         }