mirror of
https://github.com/moodle/moodle.git
synced 2025-04-13 04:22:07 +02:00
MDL-75349 course: include groups entity data in participants report.
This commit is contained in:
parent
b10b89ec74
commit
6c9b4d1e24
@ -22,6 +22,7 @@ use core_course\reportbuilder\local\entities\course_category;
|
||||
use core_course\reportbuilder\local\entities\access;
|
||||
use core_course\reportbuilder\local\entities\completion;
|
||||
use core_course\reportbuilder\local\entities\enrolment;
|
||||
use core_group\reportbuilder\local\entities\group;
|
||||
use core_reportbuilder\datasource;
|
||||
use core_reportbuilder\local\entities\course;
|
||||
use core_reportbuilder\local\entities\user;
|
||||
@ -72,6 +73,26 @@ class participants extends datasource {
|
||||
$userentity->add_join("LEFT JOIN {user} {$user} ON {$userenrolment}.userid = {$user}.id AND {$user}.deleted = 0");
|
||||
$this->add_entity($userentity);
|
||||
|
||||
// Join group entity.
|
||||
$groupentity = (new group())
|
||||
->set_table_alias('context', $courseentity->get_table_alias('context'));
|
||||
$groups = $groupentity->get_table_alias('groups');
|
||||
|
||||
// Sub-select for all course group members.
|
||||
$groupsinnerselect = "
|
||||
SELECT grs.*, grms.userid
|
||||
FROM {groups} grs
|
||||
JOIN {groups_members} grms ON grms.groupid = grs.id";
|
||||
|
||||
$this->add_entity($groupentity
|
||||
->add_join($courseentity->get_context_join())
|
||||
->add_joins($userentity->get_joins())
|
||||
->add_join("
|
||||
LEFT JOIN ({$groupsinnerselect}) {$groups}
|
||||
ON {$groups}.courseid = {$course}.id
|
||||
AND {$groups}.userid = {$user}.id")
|
||||
);
|
||||
|
||||
// Join completion entity.
|
||||
$completionentity = new completion();
|
||||
$completion = $completionentity->get_table_alias('course_completion');
|
||||
|
@ -69,6 +69,10 @@ class participants_test extends core_reportbuilder_testcase {
|
||||
$this->getDataGenerator()->enrol_user($user1->id, $course->id, 'student',
|
||||
'manual', $timestart, $timeend, ENROL_USER_ACTIVE);
|
||||
|
||||
// Add them to a group.
|
||||
$group = self::getDataGenerator()->create_group(['courseid' => $course->id]);
|
||||
self::getDataGenerator()->create_group_member(['groupid' => $group->id, 'userid' => $user1->id]);
|
||||
|
||||
// Mark course as completed for the user.
|
||||
$ccompletion = new completion_completion(array('course' => $course->id, 'userid' => $user1->id));
|
||||
$ccompletion->mark_enrolled($timestart);
|
||||
@ -97,6 +101,8 @@ class participants_test extends core_reportbuilder_testcase {
|
||||
'uniqueidentifier' => 'enrolment:method'])
|
||||
->set('sortenabled', true)
|
||||
->update();
|
||||
$generator->create_column(['reportid' => $report->get('id'),
|
||||
'uniqueidentifier' => 'group:name']);
|
||||
$generator->create_column(['reportid' => $report->get('id'),
|
||||
'uniqueidentifier' => 'completion:completed']);
|
||||
$generator->create_column(['reportid' => $report->get('id'),
|
||||
@ -139,6 +145,7 @@ class participants_test extends core_reportbuilder_testcase {
|
||||
'Music', // Course category name.
|
||||
fullname($user1), // User fullname.
|
||||
'Manual enrolments', // Enrolment method.
|
||||
$group->name, // Group name.
|
||||
'Yes', // Course completed.
|
||||
userdate($timelastaccess), // Time last access.
|
||||
'100.0%', // Progress percentage.
|
||||
|
Loading…
x
Reference in New Issue
Block a user