/** * Returns list of course contacts (usually teachers) to display in course link * * Roles to display are set up in $CFG->coursecontact * * The result is the list of users where user id is the key and the value * is an array with elements: * - 'user' - object containing basic user information * - 'role' - object containing basic role information (id, name, shortname, coursealias) * - 'rolename' => role_get_name($role, $context, ROLENAME_ALIAS) * - 'username' => fullname($user, $canviewfullnames) * * @return array */ public function get_course_contacts() { global $CFG; if (empty($CFG->coursecontact)) { // No roles are configured to be displayed as course contacts. return array(); } if ($this->coursecontacts === null) { $this->coursecontacts = array(); $context = context_course::instance($this->id); if (!isset($this->record->managers)) { // Preload course contacts from DB. $courses = array($this->id => &$this->record); coursecat::preload_course_contacts($courses); } // Build return array with full roles names (for this course context) and users names. $canviewfullnames = has_capability('moodle/site:viewfullnames', $context); foreach ($this->record->managers as $ruser) { if (isset($this->coursecontacts[$ruser->id])) { // Only display a user once with the highest sortorder role. continue; } $user = new stdClass(); $user = username_load_fields_from_object($user, $ruser, null, array('id', 'username')); $role = new stdClass(); $role->id = $ruser->roleid; $role->name = $ruser->rolename; $role->shortname = $ruser->roleshortname; $role->coursealias = $ruser->rolecoursealias; $this->coursecontacts[$user->id] = array('user' => $user, 'role' => $role, 'rolename' => role_get_name($role, $context, ROLENAME_ALIAS), 'username' => fullname($user, $canviewfullnames)); } } return $this->coursecontacts; }