diff --git a/user/index.php b/user/index.php
index f54a5d24962..972364d897d 100644
--- a/user/index.php
+++ b/user/index.php
@@ -318,7 +318,14 @@
/// Define a table showing a list of users in the current role selection
$tablecolumns = array('userpic', 'fullname');
+ $extrafields = get_extra_user_fields($context);
$tableheaders = array(get_string('userpic'), get_string('fullnameuser'));
+ if ($mode === MODE_BRIEF) {
+ foreach ($extrafields as $field) {
+ $tablecolumns[] = $field;
+ $tableheaders[] = get_user_field_name($field);
+ }
+ }
if ($mode === MODE_BRIEF && !isset($hiddenfields['city'])) {
$tablecolumns[] = 'city';
$tableheaders[] = get_string('city');
@@ -338,7 +345,6 @@
}
$table = new flexible_table('user-index-participants-'.$course->id);
-
$table->define_columns($tablecolumns);
$table->define_headers($tableheaders);
$table->define_baseurl($baseurl->out());
@@ -373,11 +379,15 @@
$joins = array("FROM {user} u");
$wheres = array();
+ $extrasql = get_extra_user_fields_sql($context, 'u', '', array(
+ 'id', 'username', 'firstname', 'lastname', 'email', 'city', 'country',
+ 'picture', 'lang', 'timezone', 'maildisplay', 'imagealt', 'lastaccess'));
+
if ($isfrontpage) {
$select = "SELECT u.id, u.username, u.firstname, u.lastname,
u.email, u.city, u.country, u.picture,
u.lang, u.timezone, u.maildisplay, u.imagealt,
- u.lastaccess";
+ u.lastaccess$extrasql";
$joins[] = "JOIN ($esql) e ON e.id = u.id"; // everybody on the frontpage usually
if ($accesssince) {
$wheres[] = get_user_lastaccess_sql($accesssince);
@@ -387,7 +397,7 @@
$select = "SELECT u.id, u.username, u.firstname, u.lastname,
u.email, u.city, u.country, u.picture,
u.lang, u.timezone, u.maildisplay, u.imagealt,
- COALESCE(ul.timeaccess, 0) AS lastaccess";
+ COALESCE(ul.timeaccess, 0) AS lastaccess$extrasql";
$joins[] = "JOIN ($esql) e ON e.id = u.id"; // course enrolled users only
$joins[] = "LEFT JOIN {user_lastaccess} ul ON (ul.userid = u.id AND ul.courseid = :courseid)"; // not everybody accessed course yet
$params['courseid'] = $course->id;
@@ -607,9 +617,20 @@
$row->cells[1]->text .= get_string('role').get_string('labelsep', 'langconfig').$user->role.'
';
}
if ($user->maildisplay == 1 or ($user->maildisplay == 2 and ($course->id != SITEID) and !isguestuser()) or
- has_capability('moodle/course:viewhiddenuserfields', $context)) {
+ has_capability('moodle/course:viewhiddenuserfields', $context) or
+ in_array('email', $extrafields)) {
$row->cells[1]->text .= get_string('email').get_string('labelsep', 'langconfig').html_writer::link("mailto:$user->email", $user->email) . '
';
}
+ foreach ($extrafields as $field) {
+ if ($field === 'email') {
+ // Skip email because it was displayed with different
+ // logic above (because this page is intended for
+ // students too)
+ continue;
+ }
+ $row->cells[1]->text .= get_user_field_name($field) .
+ get_string('labelsep', 'langconfig') . s($user->{$field}) . '
';
+ }
if (($user->city or $user->country) and (!isset($hiddenfields['city']) or !isset($hiddenfields['country']))) {
$row->cells[1]->text .= get_string('city').get_string('labelsep', 'langconfig');
if ($user->city && !isset($hiddenfields['city'])) {
@@ -717,6 +738,11 @@
$data = array ($OUTPUT->user_picture($user, array('size' => 35, 'courseid'=>$course->id)), $profilelink);
+ if ($mode === MODE_BRIEF) {
+ foreach ($extrafields as $field) {
+ $data[] = $user->{$field};
+ }
+ }
if ($mode === MODE_BRIEF && !isset($hiddenfields['city'])) {
$data[] = $user->city;
}
@@ -752,7 +778,6 @@
$data[] = '';
}
$table->add_data($data);
-
}
}