diff --git a/user/index.php b/user/index.php index 7528aa14677..0a2b522e67d 100644 --- a/user/index.php +++ b/user/index.php @@ -3,6 +3,7 @@ // Lists all the users within a given course require_once("../config.php"); + require_once($CFG->libdir.'/tablelib.php'); define('USER_SMALL_CLASS', 20); // Below this is considered small define('USER_LARGE_CLASS', 200); // Above this is considered large @@ -17,7 +18,6 @@ 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"); } @@ -38,6 +38,19 @@ $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 { @@ -126,8 +139,56 @@ $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) { - if ($teachers = get_course_teachers($course->id)) { + + 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 "