public function view() { if (!$this->loadData()) { $this->dataError(); sendBack(); } $display_fields = array(); $measure_fields = array(); $aggregate_fields = array(); $search_fields = array(); $filter_fields = array(); // get report model $report = $this->_uses[$this->modeltype]; // unserialise the options from the db $options = unserialize($report->options); // overlay the defaults so we've got a full set of options $options = $this->expand_options($options, $report->tablename); // sort options by position $options = $this->sort_options($options); foreach ($options as $field => $field_options) { // ignore the filter field... it really isn't a field if (in_array($field, array('filter', 'search'))) { continue; } $position = $field_options['position']; // ignore fields that aren't meant to be displayed if ($field_options['normal_display_field'] !== 'false') { // we're always dealing with normal fields now $display_fields[$position] = $field; if ($field_options['normal_break_on'] == "true") { $measure_fields[$position] = $field; } if (!empty($field_options['normal_method']) && $field_options['normal_method'] != 'dont_total') { $aggregate_fields[$position] = $field_options['normal_method'] . '(' . $field . ') as ' . $field; // if we're setting an aggregate field... this must not be a display field unset($display_fields[$position]); } } // if the field is also a search field, add it to the search array if ($field_options['normal_enable_search'] === 'true') { $search_fields[$field] = $field; } } if (!empty($options['filter'])) { // loop through filter lines foreach (range(1, 3) as $number) { // filter line 1 will never have an operator if ($number == 1) { $operator = ''; } else { $operator = $options['filter']['filter_' . $number . '_operator'] . ' '; } $field = $options['filter']['filter_' . $number . '_field']; $condition = $options['filter']['filter_' . $number . '_condition']; $value = $options['filter']['filter_' . $number . '_value']; // if we're dealing with a valid filter line... if (($number == 1 or !empty($operator)) and !empty($field) and !empty($value)) { $filter_fields[$number] = $operator . $field . ' ' . $condition . ' ' . $value; } } } // output to smarty $this->view->set('display_fields', implode(',', $display_fields)); $this->view->set('break_on_fields', implode(',', $measure_fields)); $this->view->set('aggregate_fields', implode('<br />', $aggregate_fields)); $this->view->set('search_fields', implode(',', $search_fields)); $this->view->set('filter_fields', implode('<br />', $filter_fields)); $rd = ReportDefinition::getDefinitionByid($report->report_definition); $report_definition_name = $rd->_data['name']; $this->view->set('report_definition', $report_definition_name); $hasreport = new HasReport(); $report_list = $hasreport->getAssignedRoles($report->id); $this->view->set('roles', $report_list); // create sidebar $this->view->set('report', $report); $sidebar = new SidebarController($this->view); $sidebarlist = array(); $sidebarlist['all'] = array('tag' => 'All Reports', 'link' => array('modules' => $this->_modules, 'controller' => $this->name, 'action' => 'index')); $sidebarlist['edit'] = array('tag' => 'Edit Report', 'link' => array('modules' => $this->_modules, 'controller' => $this->name, 'action' => 'edit', $report->idField => $report->{$report->idField})); if ($report->owner == EGS_USERNAME) { $sidebarlist['delete'] = array('tag' => 'Delete Report', 'link' => array('modules' => $this->_modules, 'controller' => $this->name, 'action' => 'delete', $report->idField => $report->{$report->idField})); } $sidebarlist['copy'] = array('tag' => 'Copy Report', 'link' => array('modules' => $this->_modules, 'controller' => $this->name, 'action' => 'copy', $report->idField => $report->{$report->idField})); $sidebarlist['run'] = array('tag' => 'Run Report', 'link' => array('modules' => $this->_modules, 'controller' => $this->name, 'action' => 'run', $report->idField => $report->{$report->idField})); if ($report->owner == EGS_USERNAME) { if (empty($report_list)) { $tag = 'Publish Report'; } else { $tag = 'Amend Report Roles'; } $sidebarlist['publish'] = array('tag' => $tag, 'link' => array('modules' => $this->_modules, 'controller' => $this->name, 'action' => 'publish_report', $report->idField => $report->{$report->idField})); } $sidebar->addList('Actions', $sidebarlist); $this->view->register('sidebar', $sidebar); $this->view->set('sidebar', $sidebar); }