/** * Handler to view a generated report file * * @param type $data * @param type $form */ public function viewreport($request) { $item = 1; $allowed = array('html', 'pdf', 'csv'); $ext = $request->getExtension(); if (!in_array($ext, $allowed)) { return $this->httpError(404); } $reportID = (int) $request->param('ID'); $fileID = (int) $request->param('OtherID'); $report = AdvancedReport::get()->byID($reportID); if (!$report || !$report->canView()) { return $this->httpError(404); } $file = $report->{strtoupper($ext) . 'File'}(); if (!$file || !strlen($file->Content)) { return $this->httpError(404); } $mimeType = HTTP::get_mime_type($file->Name); header("Content-Type: {$mimeType}; name=\"" . addslashes($file->Name) . "\""); header("Content-Disposition: attachment; filename=" . addslashes($file->Name)); header("Content-Length: {$file->getSize()}"); header("Pragma: "); session_write_close(); ob_flush(); flush(); // Push the file while not EOF and connection exists echo base64_decode($file->Content); exit; }
public function getCMSFields($params = null) { $fields = new FieldList(); // tabbed or untabbed $fields->push(new TabSet("Root", $mainTab = new Tab("Main"))); $mainTab->setTitle(_t('SiteTree.TABMAIN', "Main")); $reports = array(); $reportObjs = AdvancedReport::get()->filter(array('ReportID' => 0)); if ($reportObjs && $reportObjs->count()) { foreach ($reportObjs as $obj) { if ($obj instanceof CombinedReport) { continue; } $reports[$obj->ID] = $obj->Title . '(' . $obj->ClassName . ')'; } } $fields->addFieldsToTab('Root.Main', array(new DropdownField('ReportID', 'Related report', $reports), new TextField('Title'), new KeyValueField('Parameters', 'Parameters to pass to the report'), new NumericField('Sort'))); return $fields; }
/** * @return AdvancedReport */ public function getReport() { return AdvancedReport::get()->byID($this->reportID); }