diff --git a/files/classes/reportbuilder/local/entities/file.php b/files/classes/reportbuilder/local/entities/file.php index f378f784c12..5a61fdf248b 100644 --- a/files/classes/reportbuilder/local/entities/file.php +++ b/files/classes/reportbuilder/local/entities/file.php @@ -393,6 +393,16 @@ class file extends base { return $mimetypes; }); + // Author. + $filters[] = (new filter( + text::class, + 'author', + new lang_string('author', 'core_repository'), + $this->get_entity_name(), + "{$filesalias}.author" + )) + ->add_joins($this->get_joins()); + // License (consider null = 'unknown/license not specified' for filtering purposes). $filters[] = (new filter( select::class, diff --git a/files/tests/reportbuilder/datasource/files_test.php b/files/tests/reportbuilder/datasource/files_test.php index 8bc26ac8a3b..d1eac55236b 100644 --- a/files/tests/reportbuilder/datasource/files_test.php +++ b/files/tests/reportbuilder/datasource/files_test.php @@ -231,6 +231,12 @@ final class files_test extends core_reportbuilder_testcase { 'file:type_operator' => select::EQUAL_TO, 'file:type_value' => 'image/png', ], 0], + 'Filter author' => ['file:author', [ + 'file:author_operator' => text::IS_EMPTY, + ], 4], + 'Filter author (non match)' => ['file:author', [ + 'file:author_operator' => text::IS_NOT_EMPTY, + ], 0], 'Filter license' => ['file:license', [ 'file:license_operator' => select::EQUAL_TO, 'file:license_value' => 'unknown',