Merge branch 'MDL-80936-403' of https://github.com/paulholden/moodle into MOODLE_403_STABLE

This commit is contained in:
Huong Nguyen
2024-02-20 10:28:31 +07:00
2 changed files with 34 additions and 2 deletions
@@ -179,9 +179,13 @@ class custom_fields {
->add_join($this->get_table_join($field))
->add_field($datafieldsql, $datafield)
->add_fields($selectfields)
->add_field($this->tablefieldalias, 'tablefieldalias')
->set_type($columntype)
->set_is_sortable($columntype !== column::TYPE_LONGTEXT)
->add_callback(static function($value, stdClass $row, field_controller $field): string {
if ($row->tablefieldalias === null) {
return '';
}
return (string) data_controller::create(0, $row, $field)->export_value();
}, $field)
// Important. If the handler implements can_view() function, it will be called with parameter $instanceid=0.
@@ -28,7 +28,7 @@ use core_reportbuilder\local\filters\select;
use core_reportbuilder\local\filters\text;
use core_reportbuilder\local\report\column;
use core_reportbuilder\local\report\filter;
use core_course\reportbuilder\datasource\courses;
use core_course\reportbuilder\datasource\{categories, courses};
defined('MOODLE_INTERNAL') || die();
@@ -177,7 +177,7 @@ class custom_fields_test extends core_reportbuilder_testcase {
$generator = $this->getDataGenerator()->get_plugin_generator('core_reportbuilder');
$report = $generator->create_report(['name' => 'Courses', 'source' => courses::class, 'default' => 0]);
// Add user profile field columns to the report.
// Add custom field columns to the report.
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course:fullname']);
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course:customfield_text']);
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course:customfield_textarea']);
@@ -197,6 +197,34 @@ class custom_fields_test extends core_reportbuilder_testcase {
], array_values($content[0]));
}
/**
* Test that adding custom field columns to report returns expected default values for fields
*/
public function test_custom_report_content_column_defaults(): void {
$this->resetAfterTest();
$this->generate_customfields();
$category = $this->getDataGenerator()->create_category(['name' => 'Zebras']);
$course = $this->getDataGenerator()->create_course(['category' => $category->id]);
/** @var core_reportbuilder_generator $generator */
$generator = $this->getDataGenerator()->get_plugin_generator('core_reportbuilder');
$report = $generator->create_report(['name' => 'Categories', 'source' => categories::class, 'default' => 0]);
// Add custom field columns to the report.
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course_category:name',
'sortenabled' => 1]);
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course:fullname']);
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course:customfield_select']);
$content = $this->get_custom_report_content($report->get('id'));
$this->assertEquals([
['Category 1', '', ''],
[$category->name, $course->fullname, 'Cat'],
], array_map('array_values', $content));
}
/**
* Data provider for {@see test_custom_report_filter}
*