//create the form, whose contents depend on on the current report's available filters if (!empty($filters)) { //report has filters $dynamic_report_filter_url = $CFG->wwwroot . '/blocks/php_report/dynamicreport.php?id=' . $report_shortname; $filter_object = new php_report_default_capable_filtering($filters, $dynamic_report_filter_url, null, $report_shortname, $report_shortname, $secondary_filterings); $params = array('filterobject' => $filter_object, 'showcancel' => $showcancel); $parameter_form = new parameter_form($action, $params); } else { //report does not have filters $params = array('showcancel' => $showcancel); $parameter_form = new parameter_form($action, $params); } //send report id to the form $parameter_form->set_data(array('id' => $report_shortname, 'showcancel' => $showcancel)); //update form with current settings php_report_filtering_update_form($report_shortname, $parameter_form); //determine if we are resetting the form $reset_form = optional_param('reset_form', '', PARAM_CLEAN); if (!empty($reset_form)) { //reset case - do not use get_data because it performs validation $data = data_submitted(); //store form settings as report-specific user preferences php_report_filtering_reset_form($data, $filter_object, $report_shortname, $parameter_form); } else { if ($data = $parameter_form->get_data()) { //NOTE: this has to be checked after get_data in this case //because get_data calls definition_after_data, which adds the cancel button if ($parameter_form->is_cancelled()) { //just re-display the report $instance->main('', '', 0, 20, '', $report_shortname); die;
public function display_step_parameters($errors) { global $CFG; //needed for execution mode constants require_once $CFG->dirroot . '/local/elisreports/php_report_base.php'; // get the parameters from the report $report = $this->workflow->get_report_instance(); $report->require_dependencies(); $report->init_filter($report->id); //Check for report filter if (isset($report->filter)) { $report_filter = $report->filter; //tell the filters that we're in scheduling mode $report_filter->set_execution_mode(php_report::EXECUTION_MODE_SCHEDULED); } else { $report_filter = null; } $form = new scheduling_form_step_parameters(null, array('page' => $this, 'filterobject' => $report_filter), 'post', '', array('id' => PHPREPORT_SCHEDULING_PARAMS)); if ($errors) { foreach ($errors as $element => $msg) { $form->setElementError($element, $msg); } } $workflowdata = $this->workflow->unserialize_data(array()); // First look in workflowdata if (isset($workflowdata['parameters'])) { $data = $workflowdata['parameters']; $form->set_data($data); } else { // Next try to find parameters in the session/database // Also sets the data onto the form php_report_filtering_update_form($report->id, $form, false); } //needed for Javascipt references echo '<div id="php_report_body_' . $report->get_report_shortname() . '">'; $form->display(); echo '</div>'; }