. /** * Download a report * * @package core_reportbuilder * @copyright 2021 David Matamoros * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ declare(strict_types=1); use core_reportbuilder\system_report_factory; require_once(__DIR__ . '/../config.php'); require_login(); $reportid = required_param('id', PARAM_INT); $download = required_param('download', PARAM_ALPHA); $parameters = optional_param('parameters', null, PARAM_RAW); $reportpersistent = new \core_reportbuilder\local\models\report($reportid); $context = $reportpersistent->get_context(); $PAGE->set_context($context); $PAGE->set_url(new moodle_url('/reportbuilder/download.php')); $systemreport = system_report_factory::create($reportpersistent->get('source'), $context); if (!$systemreport->can_be_downloaded()) { throw new \core_reportbuilder\report_access_exception(); } // Combine original report parameters with 'download' parameter. $reportparameters = ['download' => $download]; if ($parameters) { $reportparameters = array_merge($reportparameters, (array) json_decode($parameters)); } $outputreport = new \core_reportbuilder\output\system_report($reportpersistent, $systemreport, $reportparameters); echo $PAGE->get_renderer('core_reportbuilder')->render($outputreport);