//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;
Exemple #2
0
 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>';
 }