/** * Test get_enrolled_users */ public function test_get_enrolled_users() { global $USER; $this->resetAfterTest(true); $course = self::getDataGenerator()->create_course(); $user1 = self::getDataGenerator()->create_user(); $user2 = self::getDataGenerator()->create_user(); $user3 = self::getDataGenerator()->create_user(); $this->setUser($user3); // Set the required capabilities by the external function. $context = context_course::instance($course->id); $roleid = $this->assignUserCapability('moodle/course:viewparticipants', $context->id); $this->assignUserCapability('moodle/user:viewdetails', $context->id, $roleid); // Enrol the users in the course. $this->getDataGenerator()->enrol_user($user1->id, $course->id, $roleid, 'manual'); $this->getDataGenerator()->enrol_user($user2->id, $course->id, $roleid, 'manual'); $this->getDataGenerator()->enrol_user($user3->id, $course->id, $roleid, 'manual'); // Call the external function. $enrolledusers = core_enrol_external::get_enrolled_users($course->id); // We need to execute the return values cleaning process to simulate the web service server. $enrolledusers = external_api::clean_returnvalue(core_enrol_external::get_enrolled_users_returns(), $enrolledusers); // Check the result set. $this->assertEquals(3, count($enrolledusers)); $this->assertArrayHasKey('email', $enrolledusers[0]); // Call the function with some parameters set. $enrolledusers = core_enrol_external::get_enrolled_users($course->id, array(array('name' => 'limitfrom', 'value' => 2), array('name' => 'limitnumber', 'value' => 1), array('name' => 'userfields', 'value' => 'id'))); // We need to execute the return values cleaning process to simulate the web service server. $enrolledusers = external_api::clean_returnvalue(core_enrol_external::get_enrolled_users_returns(), $enrolledusers); // Check the result set, we should only get the 3rd result, which is $user3. $this->assertCount(1, $enrolledusers); $this->assertEquals($user3->id, $enrolledusers[0]['id']); $this->assertArrayHasKey('id', $enrolledusers[0]); $this->assertArrayNotHasKey('email', $enrolledusers[0]); // Call without required capability. $this->unassignUserCapability('moodle/course:viewparticipants', $context->id, $roleid); $this->setExpectedException('moodle_exception'); $categories = core_enrol_external::get_enrolled_users($course->id); }
/** * Test get_enrolled_users */ public function test_get_enrolled_users() { global $USER; $this->resetAfterTest(true); $course = self::getDataGenerator()->create_course(); $user1 = self::getDataGenerator()->create_user(); $user2 = self::getDataGenerator()->create_user(); // Set the required capabilities by the external function. $context = context_course::instance($course->id); $roleid = $this->assignUserCapability('moodle/course:viewparticipants', $context->id); $this->assignUserCapability('moodle/user:viewdetails', $context->id, $roleid); // Enrol the users in the course. // We use the manual plugin. $enrol = enrol_get_plugin('manual'); $enrolinstances = enrol_get_instances($course->id, true); foreach ($enrolinstances as $courseenrolinstance) { if ($courseenrolinstance->enrol == "manual") { $instance = $courseenrolinstance; break; } } $enrol->enrol_user($instance, $user1->id, $roleid); $enrol->enrol_user($instance, $user2->id, $roleid); $enrol->enrol_user($instance, $USER->id, $roleid); // Call the external function. $enrolledusers = core_enrol_external::get_enrolled_users($course->id); // We need to execute the return values cleaning process to simulate the web service server. $enrolledusers = external_api::clean_returnvalue(core_enrol_external::get_enrolled_users_returns(), $enrolledusers); // Check we retrieve the good total number of enrolled users. $this->assertEquals(3, count($enrolledusers)); // Call without required capability. $this->unassignUserCapability('moodle/course:viewparticipants', $context->id, $roleid); $this->setExpectedException('moodle_exception'); $categories = core_enrol_external::get_enrolled_users($course->id); }
/** * Test get_enrolled_users */ public function test_enrol_users() { global $USER, $CFG; $this->resetAfterTest(true); $course = self::getDataGenerator()->create_course(); $user1 = self::getDataGenerator()->create_user(); $user2 = self::getDataGenerator()->create_user(); // Set the required capabilities by the external function. $context = context_course::instance($course->id); $roleid = $this->assignUserCapability('enrol/manual:enrol', $context->id); $this->assignUserCapability('moodle/course:view', $context->id, $roleid); // Add manager role to $USER. // So $USER is allowed to assign 'manager', 'editingteacher', 'teacher' and 'student'. role_assign(1, $USER->id, context_system::instance()->id); // Call the external function. enrol_manual_external::enrol_users(array(array('roleid' => 3, 'userid' => $user1->id, 'courseid' => $course->id), array('roleid' => 3, 'userid' => $user2->id, 'courseid' => $course->id))); // Check we retrieve the good total number of enrolled users. require_once $CFG->dirroot . '/enrol/externallib.php'; $enrolledusers = core_enrol_external::get_enrolled_users($course->id); $this->assertEquals(2, count($enrolledusers)); // Call without required capability. $this->unassignUserCapability('enrol/manual:enrol', $context->id, $roleid); $this->setExpectedException('moodle_exception'); $categories = enrol_manual_external::enrol_users($course->id); }
/** * Get course participants details * * @param int $courseid course id * @param array $options options { * 'name' => option name * 'value' => option value * } * @return array An array of users * @since Moodle 2.1 * @deprecated Moodle 2.2 MDL-29106 - Please do not call this function any more. * @todo MDL-31194 This will be deleted in Moodle 2.5. * @see core_enrol_external::get_enrolled_users() */ public static function get_users_by_courseid($courseid, $options) { global $CFG; require_once $CFG->dirroot . '/enrol/externallib.php'; return core_enrol_external::get_enrolled_users($courseid, $options); }
/** * Test get_enrolled_users from core_enrol_external with capability to * viewparticipants removed. */ public function test_get_enrolled_users_without_capability() { $capability = 'moodle/course:viewparticipants'; $data = $this->get_enrolled_users_setup($capability); // Call without required capability. $this->unassignUserCapability($capability, $data->context->id, $data->roleid); $this->setExpectedException('moodle_exception'); $categories = core_enrol_external::get_enrolled_users($data->course->id); }