} $now = time(); $timefrom = 100 * floor(($now - $timetoshowusers) / 100); // Round to nearest 100 seconds for better query cache $params['now'] = $now; $params['timefrom'] = $timefrom; list($esqljoin, $eparams) = get_enrolled_sql($context_module); $params = array_merge($params, $eparams); $params['courseid'] = $cid; //var_dump($params); $userfields = user_picture::fields('u', array('username')); $csql = "SELECT COUNT(u.id)\n FROM {user} u {$groupmembers}\n WHERE u.lastaccess > :timefrom\n AND u.lastaccess <= :now\n AND u.deleted = 0\n {$groupselect}"; $usercount = $DB->count_records_sql($csql, $params); //var_dump($usercount); $manager = new course_enrolment_manager($PAGE, $course, $filter = '', $role = '', $search = '', $fgroup = '', $status = ''); $totalenrolled = $manager->get_total_users(); echo '<div class="container container-demo" style="width: 1170px;margin-right: auto;margin-left: auto;"> <div class="report">'; echo '<div id="flip" > <p id="fl" style="text-align:right;padding-right:20px;margin-top:5px" ><i class="fa fa-angle-double-up" style="font-size:18px;"></i> <span id="titile-status"> <span style="float:left;margin-right:180px;margin-left:40px;" id="ccourse">Course : ' . $course->fullname . ' </span><span id="ctopic" style="float:left;margin-right:180px;"> Topic : Inheritance</span> <span style="float:left;margin-right:180px;" id="cactivity">Activity : Quiz</span> <i style="float:right" class="fa fa-angle-double-down" style="font-size:18px;"></i> </span> </p> </div>'; echo '<div id="panel"><div class="tleft" ><form style="margin: 0px;padding-top: 0px;"> <table style="width:100%"> <tr> <td>
$PAGE->set_heading($pageheading); echo $OUTPUT->header(); echo $OUTPUT->heading(fullname($user)); if (!is_null($mform)) { $mform->display(); } else { echo $pagecontent; } echo $OUTPUT->footer(); exit; } } $renderer = $PAGE->get_renderer('core_enrol'); $fields = array('userdetails' => array('picture' => false, 'firstname' => get_string('firstname'), 'lastname' => get_string('lastname'), 'email' => get_string('email')), 'lastseen' => get_string('lastaccess'), 'role' => get_string('roles', 'role'), 'group' => get_string('groups', 'group'), 'enrol' => get_string('enrolmentinstances', 'enrol')); $table->set_fields($fields, $renderer); $canassign = has_capability('moodle/role:assign', $manager->get_context()); $users = $manager->get_users_for_display($renderer, $PAGE->url, $table->sort, $table->sortdirection, $table->page, $table->perpage); foreach ($users as $userid => &$user) { $user['picture'] = $OUTPUT->render($user['picture']); $user['role'] = $renderer->user_roles_and_actions($userid, $user['roles'], $manager->get_assignable_roles(), $canassign, $PAGE->url); $user['group'] = $renderer->user_groups_and_actions($userid, $user['groups'], $manager->get_all_groups(), has_capability('moodle/course:managegroups', $manager->get_context()), $PAGE->url); $user['enrol'] = $renderer->user_enrolments_and_actions($userid, $user['enrolments'], $PAGE->url); } $table->set_total_users($manager->get_total_users()); $table->set_users($users); $PAGE->set_title($PAGE->course->fullname . ': ' . get_string('totalenrolledusers', 'enrol', $manager->get_total_users())); $PAGE->set_heading($PAGE->title); echo $OUTPUT->header(); echo $OUTPUT->heading(get_string('enrolledusers', 'enrol')); echo $renderer->render($table); echo $OUTPUT->footer();
/** * Verify get_total_users() returned number of users expected in every situation. */ public function test_get_total_users() { global $PAGE; $this->resetAfterTest(); // All users filtering. $manager = new course_enrolment_manager($PAGE, $this->course); $totalusers = $manager->get_total_users(); $this->assertEquals(6, $totalusers, 'All users must be returned when no filtering is applied.'); // Student role filtering. $manager = new course_enrolment_manager($PAGE, $this->course, null, 5); $totalusers = $manager->get_total_users(); $this->assertEquals(5, $totalusers, 'Only students must be returned when student role filtering is applied.'); // Teacher role filtering. $manager = new course_enrolment_manager($PAGE, $this->course, null, 3); $totalusers = $manager->get_total_users(); $this->assertEquals(1, $totalusers, 'Only teacher must be returned when teacher role filtering is applied.'); // Search user filtering. $manager = new course_enrolment_manager($PAGE, $this->course, null, 0, 'userall'); $totalusers = $manager->get_total_users(); $this->assertEquals(1, $totalusers, 'Only searchable user must be returned when search filtering is applied.'); // Group 1 filtering. $manager = new course_enrolment_manager($PAGE, $this->course, null, 0, '', $this->groups['group1']->id); $totalusers = $manager->get_total_users(); $this->assertEquals(2, $totalusers, 'Only group members must be returned when group filtering is applied.'); // Group 2 filtering. $manager = new course_enrolment_manager($PAGE, $this->course, null, 0, '', $this->groups['group2']->id); $totalusers = $manager->get_total_users(); $this->assertEquals(3, $totalusers, 'Only group members must be returned when group filtering is applied.'); // 'No groups' filtering. $manager = new course_enrolment_manager($PAGE, $this->course, null, 0, '', -1); $totalusers = $manager->get_total_users(); $this->assertEquals(2, $totalusers, 'Only non-group members must be returned when \'no groups\' filtering is applied.'); // Active users filtering. $manager = new course_enrolment_manager($PAGE, $this->course, null, 0, '', 0, ENROL_USER_ACTIVE); $totalusers = $manager->get_total_users(); $this->assertEquals(5, $totalusers, 'Only active users must be returned when active users filtering is applied.'); // Suspended users filtering. $manager = new course_enrolment_manager($PAGE, $this->course, null, 0, '', 0, ENROL_USER_SUSPENDED); $totalusers = $manager->get_total_users(); $this->assertEquals(1, $totalusers, 'Only suspended users must be returned when suspended users filtering is applied.'); }
/** * enrol and add user to groups in course * @param object $course * @param csv_import_reader $reader * @param int $roleid */ public function process_uploaded_groups($course, $reader, $roleid) { global $DB, $PAGE; $usercol = null; // Index of username column. $groupcol = null; // Index of group column. // Find the index of the needed columns. $i = 0; foreach ($reader->get_columns() as $col) { $col = strtoupper(trim($col)); switch ($col) { case 'USERNAME': $usercol = $i; break; case 'GROUP': $groupcol = $i; break; } $i++; } // Get the manual enrolment plugin. $enrolinstances = enrol_get_instances($course->id, true); $manualinstance = null; foreach ($enrolinstances as $instance) { if ($instance->enrol == 'manual') { $manualinstance = $instance; break; } } $manualenroler = enrol_get_plugin('manual'); // Get the list of enrolled users for the course. $manager = new course_enrolment_manager($PAGE, $course); $totalusers = $manager->get_total_users(); /* * Since the number of fields being retrieved are limited (email, id, lastaccess, and lastseen), * I feel comfortable retrieving the entire enrolled userbase for this course. */ $users = $manager->get_users('firstname', 'ASC', 0, $totalusers); $groups = $manager->get_all_groups(); $groupids = array(); foreach ($groups as $group) { $groupids[$group->name] = $group->id; } // Prep the returned array. $output = array('group_created' => array(), 'user_enrolled' => array(), 'member_added' => array(), 'error' => array('user_not_found' => array(), 'group_failed' => array(), 'enrol_failed' => array(), 'member_failed' => array(), 'user_not_added' => array())); // Loop through the records. $reader->init(); while ($line = $reader->next()) { $username = trim($line[$usercol]); $groupname = trim($line[$groupcol]); // Check if the user exists. $user = $DB->get_record('user', array('username' => $username)); if ($user === false) { $output['error']['user_not_found'][] = $username; continue; } // Enroll the user as needed. if (!isset($users[$user->id])) { try { $manualenroler->enrol_user($manualinstance, $user->id, $roleid); $output['user_enrolled'][] = $username; } catch (Exception $e) { $output['error']['enroll_failed'][] = $username; } } // Create the group as needed. if (!isset($groupids[$groupname])) { if ($groupname != '') { $data = new stdClass(); $data->courseid = $course->id; $data->name = $groupname; $newgroupid = groups_create_group($data); } else { $newgroupid = false; } if ($newgroupid === false) { if ($groupname != '') { $output['error']['group_failed'][] = $groupname; } } else { $groupids[$groupname] = $newgroupid; $output['group_created'][] = $groupname; } } // Add the user to the group. if ($groupname != '') { if (groups_add_member($groupids[$groupname], $user->id)) { if (!isset($output['member_added'][$groupname])) { $output['member_added'][$groupname] = array(); } $output['member_added'][$groupname][] = $username; } else { if (!isset($output['error']['member_failed'][$groupname])) { $output['error']['member_failed'][$groupname] = array(); } $output['error']['member_failed'][$groupname][] = $username; } } else { // No group name was provided for this user. $output['error']['user_not_added'][] = $username; } } return $output; }