if ($meeting->sessiontype == 2) { //This will get all the people in the course $course_users = get_records_sql("select u.id from mdl_role_assignments ra, mdl_context con, mdl_course c, mdl_user u where ra.userid=u.id and ra.contextid=con.id and con.instanceid=c.id and c.id=" . $meeting->course); $userids = array_keys($course_users); } else { if ($meeting->sessiontype == 3) { $userids = array_keys(groups_get_grouping_members($meeting->groupingid, 'distinct u.id', 'u.id')); } } } } /// Only care about non-moderators of the activity. if ($meeting->sessiontype == 1) { $userids = implode(', ', $userids); } else { if ($moderators = elive_get_users_by_capability($context, 'mod/elluminate:moderatemeeting', 'u.id', '', '', '', '', '', false)) { $userids = implode(', ', array_diff($userids, array_keys($moderators))); } else { $userids = implode(', ', $userids); } } $select = 'SELECT u.id, u.firstname, u.lastname '; $from = 'FROM ' . $CFG->prefix . 'user u '; $where = 'WHERE u.id IN (' . $userids . ') '; $order = 'ORDER BY u.firstname ASC, u.lastname ASC '; $sql = $select . $from . $where . $order; $usersavail = get_records_sql($sql); $table = new flexible_table('meeting-attendance-', $meeting->id); $tablecolumns = array('fullname', 'attended'); $tableheaders = array(get_string('fullname'), get_string('attended', 'elluminate')); $table->define_columns($tablecolumns);
foreach ($curmods as $curmod) { $modsexist[] = $curmod->id; } reset($curmods); } /// Get a list of existing participants for this meeting (if any) and assosciated /// information. $curusers = elluminate_get_meeting_participants($elluminate->id); if (!empty($curusers)) { foreach ($curusers as $curuser) { $modsexist[] = $curuser->id; } } /// Available moderators are teachers in this course who have an account on the /// Elluminate server. $allmods = elive_get_users_by_capability($modcontext, 'mod/elluminate:moderatemeeting', 'u.id, u.firstname, u.lastname, u.username', 'u.lastname, u.firstname', '', '', '', '', false); $ausers = array_keys($allmods); // if groupmembersonly used, only include members of the appropriate groups. if ($allmods and !empty($CFG->enablegroupings) and $cm->groupmembersonly) { if ($groupingusers = groups_get_grouping_members($cm->groupingid, 'u.id', 'u.id')) { $ausers = array_intersect($ausers, array_keys($groupingusers)); } } $ausers = array_diff($ausers, $modsexist); $availmods = array(); foreach ($ausers as $uid) { $availmods[$uid] = $allmods[$uid]; } unset($allmods); $cavailmods = empty($availmods) ? 0 : count($availmods); $ccurmods = empty($curmods) ? 0 : count($curmods) - 1;
function elluminate_get_participants($elluminateid) { //Must return an array of user records (all data) who are participants //for a given instance of elluminate. Must include every user involved //in the instance, independient of his role (student, teacher, admin...) //See other modules as example. if (!($meeting = get_record('elluminate', 'id', $elluminateid))) { return false; } $participants = array(); $cm = get_coursemodule_from_instance('elluminate', $meeting->id, $meeting->course); $ctx = get_context_instance(CONTEXT_MODULE, $cm->id); /// Get meeting moderators. if ($users = elive_get_users_by_capability($ctx, 'mod/elluminate:moderatemeeting', '', 'u.lastname, u.firstname', '', '', '', '', false)) { $participants = $users; } /// Get meeting participants. if ($users = elive_get_users_by_capability($ctx, 'mod/elluminate:joinmeeting', '', 'u.lastname, u.firstname', '', '', '', '', false)) { foreach ($users as $uid => $user) { if (!isset($participants[$uid])) { $participants[$uid] = $user; } } } /// Make sure we have the meeting creator as well. if (!isset($participants[$meeting->creator])) { $participants[$meeting->creator] = get_record('user', 'id', $meeting->creator); } if (!empty($participants)) { return $participants; } return false; }