Merge branch 'MDL-80936-403' of https://github.com/paulholden/moodle into MOODLE_403_STABLE
This commit is contained in:
@@ -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}
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user