libdir.'/tablelib.php');
define('USER_SMALL_CLASS', 20); // Below this is considered small
define('USER_LARGE_CLASS', 200); // Above this is considered large
require_variable($id); //course
optional_variable($sort, "lastaccess"); //how to sort students
optional_variable($dir,"desc"); //how to sort students
optional_variable($page, "0"); // which page to show
optional_variable($lastinitial, ""); // only show students with this last initial
optional_variable($firstinitial, ""); // only show students with this first initial
optional_variable($perpage, "20"); // how many per page
optional_variable($group, "-1"); // Group to show
$mode = optional_param('mode', NULL); // '0' for less details, '1' for more
if (! $course = get_record("course", "id", $id)) {
error("Course ID is incorrect");
}
require_login($course->id);
if (!$course->category) {
if (!$CFG->showsiteparticipantslist and !isteacher(SITEID)) {
notice(get_string('sitepartlist0'));
}
if ($CFG->showsiteparticipantslist < 2 and !isteacherinanycourse()) {
notice(get_string('sitepartlist1'));
}
}
add_to_log($course->id, "user", "view all", "index.php?id=$course->id", "");
$isteacher = isteacher($course->id);
$showteachers = ($page == 0 and $sort == "lastaccess" and $dir == "desc");
$countries = get_list_of_countries();
$strnever = get_string("never");
$datestring->day = get_string("day");
$datestring->days = get_string("days");
$datestring->hour = get_string("hour");
$datestring->hours = get_string("hours");
$datestring->min = get_string("min");
$datestring->mins = get_string("mins");
$datestring->sec = get_string("sec");
$datestring->secs = get_string("secs");
if ($showteachers) {
$participantslink = get_string("participants");
} else {
$participantslink = "id\">".get_string("participants")."";
}
if ($mode !== NULL) {
$SESSION->userindexmode = $fullmode = ($mode == 1);
} else if (isset($SESSION->userindexmode)) {
$fullmode = $SESSION->userindexmode;
} else {
$fullmode = false;
}
/// Check to see if groups are being used in this forum
/// and if so, set $currentgroup to reflect the current group
$changegroup = isset($_GET['group']) ? $_GET['group'] : -1; // Group change requested?
$groupmode = groupmode($course); // Groups are being used
$currentgroup = get_and_set_current_group($course, $groupmode, $changegroup);
$isseparategroups = ($course->groupmode == SEPARATEGROUPS and $course->groupmodeforce and
!isteacheredit($course->id));
if ($isseparategroups and (!$currentgroup) ) { //XXX
print_heading(get_string("notingroup", "forum"));
print_footer($course);
exit;
}
if (!$currentgroup) { // To make some other functions work better later
$currentgroup = NULL;
}
/// Print headers
if ($course->category) {
print_header("$course->shortname: ".get_string("participants"), "$course->fullname",
"id\">$course->shortname -> ".
"$participantslink", "", "", true, " ", navmenu($course));
} else {
print_header("$course->shortname: ".get_string("participants"), "$course->fullname",
"$participantslink", "", "", true, " ", navmenu($course));
}
/// Print settings and things in a table across the top
echo '
';
if ($groupmode == VISIBLEGROUPS or ($groupmode and isteacheredit($course->id))) {
if ($groups = get_records_menu("groups", "courseid", $course->id, "name ASC", "id,name")) {
echo '
';
if ($currentgroup and (!$isseparategroups or isteacheredit($course->id))) { /// Display info about the group
if ($group = get_record('groups', 'id', $currentgroup)) {
if (!empty($group->description) or (!empty($group->picture) and empty($group->hidepicture))) {
echo '
';
}
}
}
$exceptions = ''; // This will be a list of userids that are shown as teachers and thus
// do not have to be shown as users as well. Only relevant on site course.
if($showteachers) {
echo '';
$tablecolumns = array('picture', 'fullname', 'city', 'country', 'lastaccess');
$tableheaders = array('', get_string('fullname'), get_string('city'), get_string('country'), get_string('lastaccess'));
$table = new flexible_table('user-index-teacher');
$table->define_columns($tablecolumns);
$table->define_headers($tableheaders);
$table->define_baseurl($CFG->wwwroot.'/user/index.php?id='.$course->id);
$table->sortable(true);
$table->set_attribute('cellspacing', '0');
$table->set_attribute('id', 'teachers');
$table->set_attribute('class', 'generaltable generalbox');
$table->setup();
if($whereclause = $table->get_sql_where()) {
$whereclause .= ' AND ';
}
$teachersql = "SELECT u.id, u.username, u.firstname, u.lastname, u.maildisplay, u.mailformat, u.maildigest,
u.email, u.city, u.country, u.lastlogin, u.picture, u.lang, u.timezone,
u.emailstop, t.authority,t.role,t.editall,t.timeaccess as lastaccess, m.groupid
FROM {$CFG->prefix}user u
LEFT JOIN {$CFG->prefix}user_teachers t ON t.userid = u.id
LEFT JOIN {$CFG->prefix}groups_members m ON m.userid = u.id ";
if($isseparategroups) {
$whereclause .= '(t.editall OR groupid = '.$currentgroup.') AND ';
}
else if ($currentgroup) { // Displaying a group by choice
$whereclause .= 'groupid = '.$currentgroup.' AND ';
}
$teachersql .= 'WHERE '.$whereclause.' t.course = '.$course->id.' AND u.deleted = 0 AND u.confirmed = 1 AND t.authority > 0';
if($sortclause = $table->get_sql_sort()) {
$teachersql .= ' ORDER BY '.$sortclause;
}
$teachers = get_records_sql($teachersql);
if(!empty($teachers)) {
echo "
$course->teachers";
if (isadmin() or ($course->category and (iscreator() or (isteacheredit($course->id) and !empty($CFG->teacherassignteachers))))) {
echo ' ';
echo '';
}
echo '