Includes support for the table display, plus the AJAX, including search. (The fallback version uses user selector so is already supported.)
$key = md5("$sort-$direction-$page-$perpage");
if (!array_key_exists($key, $this->users)) {
list($instancessql, $params, $filter) = $this->get_instance_sql();
- $ufields = user_picture::fields('u', array('lastaccess', 'email'));
+ $extrafields = get_extra_user_fields($this->get_context());
+ $extrafields[] = 'lastaccess';
+ $ufields = user_picture::fields('u', $extrafields);
$sql = "SELECT DISTINCT $ufields, ul.timeaccess AS lastseen
FROM {user} u
JOIN {user_enrolments} ue ON (ue.userid = u.id AND ue.enrolid $instancessql)
$tests = array("id <> :guestid", 'u.deleted = 0', 'u.confirmed = 1');
$params = array('guestid' => $CFG->siteguest);
if (!empty($search)) {
- $conditions = array(
- $DB->sql_concat('u.firstname', "' '", 'u.lastname'),
- 'u.email'
- );
+ $conditions = get_extra_user_fields($this->get_context());
+ $conditions[] = $DB->sql_concat('u.firstname', "' '", 'u.lastname');
if ($searchanywhere) {
$searchparam = '%' . $search . '%';
} else {
}
$wherecondition = implode(' AND ', $tests);
- $ufields = user_picture::fields('u', array('username', 'lastaccess'));
+ $extrafields = get_extra_user_fields($this->get_context(), array('username', 'lastaccess'));
+ $extrafields[] = 'username';
+ $extrafields[] = 'lastaccess';
+ $ufields = user_picture::fields('u', $extrafields);
$fields = 'SELECT '.$ufields;
$countfields = 'SELECT COUNT(1)';
$canmanagegroups = has_capability('moodle/course:managegroups', $context);
$url = new moodle_url($pageurl, $this->get_url_params());
+ $extrafields = get_extra_user_fields($context);
$userdetails = array();
foreach ($users as $user) {
'courseid' => $courseid,
'picture' => new user_picture($user),
'firstname' => fullname($user, true),
- 'email' => $user->email,
'lastseen' => $strnever,
'roles' => array(),
'groups' => array(),
'enrolments' => array()
);
+ foreach ($extrafields as $field) {
+ $details[$field] = $user->{$field};
+ }
if ($user->lastaccess) {
$details['lastseen'] = format_time($now - $user->lastaccess);
$search = optional_param('search', '', PARAM_RAW);
$page = optional_param('page', 0, PARAM_INT);
$outcome->response = $manager->get_potential_users($enrolid, $search, true, $page);
+ $extrafields = get_extra_user_fields($context);
foreach ($outcome->response['users'] as &$user) {
$user->picture = $OUTPUT->user_picture($user);
$user->fullname = fullname($user);
+ $fieldvalues = array();
+ foreach ($extrafields as $field) {
+ $fieldvalues[] = s($user->{$field});
+ unset($user->{$field});
+ }
+ $user->extrafields = implode(', ', $fieldvalues);
}
$outcome->success = true;
break;
PICTURE : 'picture',
DETAILS : 'details',
FULLNAME : 'fullname',
- EMAIL : 'email',
+ EXTRAFIELDS : 'extrafields',
OPTIONS : 'options',
ODD : 'odd',
EVEN : 'even',
.append(create(user.picture)))
.append(create('<div class="'+CSS.DETAILS+'"></div>')
.append(create('<div class="'+CSS.FULLNAME+'">'+user.fullname+'</div>'))
- .append(create('<div class="'+CSS.EMAIL+'">'+user.email+'</div>')))
+ .append(create('<div class="'+CSS.EXTRAFIELDS+'">'+user.extrafields+'</div>')))
.append(create('<div class="'+CSS.OPTIONS+'"></div>')
.append(create('<input type="button" class="'+CSS.ENROL+'" value="'+M.str.enrol.enrol+'" />')))
);
* @static
* @var array
*/
- protected static $sortablefields = array('firstname', 'lastname', 'email');
+ protected static $sortablefields = array('firstname', 'lastname', 'idnumber', 'email',
+ 'phone1', 'phone2', 'institution', 'department' );
/**
* Constructs the table
$renderer = $PAGE->get_renderer('core_enrol');
+$userdetails = array (
+ 'picture' => false,
+ 'firstname' => get_string('firstname'),
+ 'lastname' => get_string('lastname'),
+);
+$extrafields = get_extra_user_fields($context);
+foreach ($extrafields as $field) {
+ $userdetails[$field] = get_user_field_name($field);
+}
+
$fields = array(
- 'userdetails' => array (
- 'picture' => false,
- 'firstname' => get_string('firstname'),
- 'lastname' => get_string('lastname'),
- 'email' => get_string('email')
- ),
+ 'userdetails' => $userdetails,
'lastseen' => get_string('lastaccess'),
'role' => get_string('roles', 'role'),
'group' => get_string('groups', 'group'),