. declare(strict_types=1); namespace core_reportbuilder\output; use html_writer; use plugin_renderer_base; use core_reportbuilder\table\custom_report_table; use core_reportbuilder\table\custom_report_table_view; use core_reportbuilder\table\system_report_table; /** * Report renderer class * * @package core_reportbuilder * @copyright 2020 Paul Holden * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class renderer extends plugin_renderer_base { /** * Render a system report * * @param system_report $report * @return string */ protected function render_system_report(system_report $report): string { $context = $report->export_for_template($this); return $this->render_from_template('core_reportbuilder/system_report', $context); } /** * Render a system report table * * @param system_report_table $table * @return string */ protected function render_system_report_table(system_report_table $table): string { ob_start(); $table->out($table->get_default_per_page(), false); $output = ob_get_contents(); ob_end_clean(); return $output; } /** * Render a custom report * * @param custom_report $report * @return string */ protected function render_custom_report(custom_report $report): string { $context = $report->export_for_template($this); return $this->render_from_template('core_reportbuilder/custom_report', $context); } /** * Render a custom report table * * @param custom_report_table $table * @return string */ protected function render_custom_report_table(custom_report_table $table): string { ob_start(); $table->out($table->get_default_per_page(), false); $output = ob_get_contents(); ob_end_clean(); return $output; } /** * Render a custom report table (view only mode) * * @param custom_report_table_view $table * @return string */ protected function render_custom_report_table_view(custom_report_table_view $table): string { ob_start(); $table->out($table->get_default_per_page(), false); $output = ob_get_contents(); ob_end_clean(); return $output; } /** * Renders the New report button * * @return string */ public function render_new_report_button(): string { return html_writer::tag('button', get_string('newreport', 'core_reportbuilder'), [ 'class' => 'btn btn-primary my-auto', 'data-action' => 'report-create', ]); } }