diff --git a/group/classes/reportbuilder/local/entities/group_member.php b/group/classes/reportbuilder/local/entities/group_member.php index 8eea70e2d4d..7db5bd34c67 100644 --- a/group/classes/reportbuilder/local/entities/group_member.php +++ b/group/classes/reportbuilder/local/entities/group_member.php @@ -18,8 +18,8 @@ declare(strict_types=1); namespace core_group\reportbuilder\local\entities; -use core_reportbuilder\local\filters\date; -use lang_string; +use core\lang_string; +use core_reportbuilder\local\filters\{date, text}; use core_reportbuilder\local\entities\base; use core_reportbuilder\local\helpers\format; use core_reportbuilder\local\report\{column, filter}; @@ -127,6 +127,16 @@ class group_member extends base { )) ->add_joins($this->get_joins()); + // Component filter. + $filters[] = (new filter( + text::class, + 'component', + new lang_string('plugin', 'core'), + $this->get_entity_name(), + "{$groupsmembersalias}.component" + )) + ->add_joins($this->get_joins()); + return $filters; } } diff --git a/group/tests/reportbuilder/datasource/groups_test.php b/group/tests/reportbuilder/datasource/groups_test.php index cdf20c3251a..11989df3339 100644 --- a/group/tests/reportbuilder/datasource/groups_test.php +++ b/group/tests/reportbuilder/datasource/groups_test.php @@ -314,6 +314,12 @@ final class groups_test extends core_reportbuilder_testcase { 'group_member:timeadded_operator' => date::DATE_RANGE, 'group_member:timeadded_to' => 1622502000, ], false], + 'Filter group member component' => ['group_member:component', [ + 'group_member:component_operator' => text::IS_EMPTY, + ], true], + 'Filter group member component (no match)' => ['group_member:component', [ + 'group_member:component_operator' => text::IS_NOT_EMPTY, + ], false], // User (just to test join). 'Filter user username' => ['user:username', [