From caddb3c628832aeb7448dc63f66bf66a5d420075 Mon Sep 17 00:00:00 2001 From: Paul Holden Date: Mon, 14 Apr 2025 12:12:07 +0100 Subject: [PATCH] MDL-85196 badges: report entity filter for badge language. --- .../classes/reportbuilder/local/entities/badge.php | 13 +++++++++++++ .../tests/reportbuilder/datasource/badges_test.php | 9 +++++++++ 2 files changed, 22 insertions(+) diff --git a/badges/classes/reportbuilder/local/entities/badge.php b/badges/classes/reportbuilder/local/entities/badge.php index e01831490d3..0692d0c621d 100644 --- a/badges/classes/reportbuilder/local/entities/badge.php +++ b/badges/classes/reportbuilder/local/entities/badge.php @@ -277,6 +277,19 @@ class badge extends base { )) ->add_joins($this->get_joins()); + // Language. + $filters[] = (new filter( + select::class, + 'language', + new lang_string('language'), + $this->get_entity_name(), + "{$badgealias}.language", + )) + ->add_joins($this->get_joins()) + ->set_options_callback( + fn() => get_string_manager()->get_list_of_translations(), + ); + // Version. $filters[] = (new filter( text::class, diff --git a/badges/tests/reportbuilder/datasource/badges_test.php b/badges/tests/reportbuilder/datasource/badges_test.php index 04917945fcc..d0b56f2c9d9 100644 --- a/badges/tests/reportbuilder/datasource/badges_test.php +++ b/badges/tests/reportbuilder/datasource/badges_test.php @@ -257,6 +257,14 @@ final class badges_test extends core_reportbuilder_testcase { 'badge:name_operator' => text::IS_EQUAL_TO, 'badge:name_value' => 'Other badge', ], false], + 'Filter badge language' => ['badge:language', [ + 'badge:language_operator' => select::EQUAL_TO, + 'badge:language_value' => 'en', + ], true], + 'Filter badge language (no match)' => ['badge:language', [ + 'badge:language_operator' => select::NOT_EQUAL_TO, + 'badge:language_value' => 'en', + ], false], 'Filter badge version' => ['badge:version', [ 'badge:version_operator' => text::IS_EQUAL_TO, 'badge:version_value' => '2.0', @@ -364,6 +372,7 @@ final class badges_test extends core_reportbuilder_testcase { $generator = $this->getDataGenerator()->get_plugin_generator('core_badges'); $badge = $generator->create_badge([ 'name' => 'Course badge', + 'language' => 'en', 'version' => '2.0', 'type' => BADGE_TYPE_COURSE, 'courseid' => $course->id,