if (!empty($CFG->coursecontact)) {
$managerroles = explode(',', $CFG->coursecontact);
$namesarray = array();
- if (isset($course->managers)) {
- if (count($course->managers)) {
- $rusers = $course->managers;
- $canviewfullnames = has_capability('moodle/site:viewfullnames', $context);
-
- /// Rename some of the role names if needed
- if (isset($context)) {
- $aliasnames = $DB->get_records('role_names', array('contextid'=>$context->id), '', 'roleid,contextid,name');
- }
-
- // keep a note of users displayed to eliminate duplicates
- $usersshown = array();
- foreach ($rusers as $ra) {
-
- // if we've already displayed user don't again
- if (in_array($ra->user->id,$usersshown)) {
- continue;
- }
- $usersshown[] = $ra->user->id;
+ $rusers = array();
- $fullname = fullname($ra->user, $canviewfullnames);
-
- if (isset($aliasnames[$ra->roleid])) {
- $ra->rolename = $aliasnames[$ra->roleid]->name;
- }
-
- $namesarray[] = format_string($ra->rolename).': '.
- html_writer::link(new moodle_url('/user/view.php', array('id'=>$ra->user->id, 'course'=>SITEID)), $fullname);
- }
- }
+ if (!isset($course->managers)) {
+ $rusers = get_role_users($managerroles, $context, true,
+ 'ra.id AS raid, u.id, u.username, u.firstname, u.lastname,
+ r.name AS rolename, r.sortorder, r.id AS roleid',
+ 'r.sortorder ASC, u.lastname ASC');
} else {
- $rusers = get_role_users($managerroles, $context,
- true, '', 'r.sortorder ASC, u.lastname ASC');
- if (is_array($rusers) && count($rusers)) {
- $canviewfullnames = has_capability('moodle/site:viewfullnames', $context);
-
- /// Rename some of the role names if needed
- if (isset($context)) {
- $aliasnames = $DB->get_records('role_names', array('contextid'=>$context->id), '', 'roleid,contextid,name');
- }
+ // use the managers array if we have it for perf reasosn
+ // populate the datastructure like output of get_role_users();
+ foreach ($course->managers as $manager) {
+ $u = new stdClass();
+ $u = $manager->user;
+ $u->roleid = $manager->roleid;
+ $u->rolename = $manager->rolename;
+
+ $rusers[] = $u;
+ }
+ }
- foreach ($rusers as $teacher) {
- $fullname = fullname($teacher, $canviewfullnames);
+ /// Rename some of the role names if needed
+ if (isset($context)) {
+ $aliasnames = $DB->get_records('role_names', array('contextid'=>$context->id), '', 'roleid,contextid,name');
+ }
- /// Apply role names
- if (isset($aliasnames[$teacher->roleid])) {
- $teacher->rolename = $aliasnames[$teacher->roleid]->name;
- }
+ $namesarray = array();
+ $canviewfullnames = has_capability('moodle/site:viewfullnames', $context);
+ foreach ($rusers as $ra) {
+ if (isset($namesarray[$ra->id])) {
+ // only display a user once with the higest sortorder role
+ continue;
+ }
- $namesarray[] = format_string($teacher->rolename).': '.
- html_writer::link(new moodle_url('/user/view.php', array('id'=>$teacher->id, 'course'=>SITEID)), $fullname);
- }
+ if (isset($aliasnames[$ra->roleid])) {
+ $ra->rolename = $aliasnames[$ra->roleid]->name;
}
+
+ $fullname = fullname($ra, $canviewfullnames);
+ $namesarray[$ra->id] = format_string($ra->rolename).': '.
+ html_writer::link(new moodle_url('/user/view.php', array('id'=>$ra->id, 'course'=>SITEID)), $fullname);
}
if (!empty($namesarray)) {