$this->assertCount(2, enrol_get_course_users($course1->id, false));
$this->assertCount(1, enrol_get_course_users($course1->id, true));
}
+
+ /**
+ * Test count of enrolled users
+ *
+ * @return void
+ */
+ public function test_count_enrolled_users() {
+ global $DB;
+
+ $this->resetAfterTest(true);
+
+ $course = $this->getDataGenerator()->create_course();
+ $context = \context_course::instance($course->id);
+
+ $user1 = $this->getDataGenerator()->create_user();
+ $user2 = $this->getDataGenerator()->create_user();
+
+ $studentrole = $DB->get_record('role', ['shortname' => 'student']);
+
+ // Add each user to the manual enrolment instance.
+ $manual = enrol_get_plugin('manual');
+
+ $manualinstance = $DB->get_record('enrol', ['courseid' => $course->id, 'enrol' => 'manual'], '*', MUST_EXIST);
+
+ $manual->enrol_user($manualinstance, $user1->id, $studentrole->id);
+ $manual->enrol_user($manualinstance, $user2->id, $studentrole->id);
+
+ $this->assertEquals(2, count_enrolled_users($context));
+
+ // Create a self enrolment instance, enrol first user only.
+ $self = enrol_get_plugin('self');
+
+ $selfid = $self->add_instance($course,
+ ['status' => ENROL_INSTANCE_ENABLED, 'name' => 'Self', 'customint6' => 1, 'roleid' => $studentrole->id]);
+ $selfinstance = $DB->get_record('enrol', ['id' => $selfid], '*', MUST_EXIST);
+
+ $self->enrol_user($selfinstance, $user1->id, $studentrole->id);
+
+ // There are still only two distinct users.
+ $this->assertEquals(2, count_enrolled_users($context));
+ }
}
$capjoin = get_enrolled_with_capabilities_join(
$context, '', $withcapability, $groupid, $onlyactive);
- $sql = "SELECT count(u.id)
+ $sql = "SELECT COUNT(DISTINCT u.id)
FROM {user} u
$capjoin->joins
WHERE $capjoin->wheres AND u.deleted = 0";