controller = $controller; $this->report = $report; parent::__construct(); } public function group() { return _t('SideReport.OtherGroupTitle', "Other"); } public function sort() { return 0; } public function setParameters($parameters) { $this->parameters = $parameters; } public function forTemplate() { $records = $this->report->records($this->parameters); $columns = $this->report->columns(); if($records && $records->Count()) { $result = "\n"; } else { $result = "

" . _t( 'SideReport.REPEMPTY', 'The {title} report is empty.', array('title' => $this->report->title()) ) . "

"; } return $result; } protected function formatValue($record, $source, $info) { // Field sources //if(is_string($source)) { $val = Convert::raw2xml($record->$source); //} else { // $val = $record->val($source[0], $source[1]); //} // Casting, a la TableListField. We're deep-calling a helper method on TableListField that // should probably be pushed elsewhere... if(!empty($info['casting'])) { $val = TableListField::getCastedValue($val, $info['casting']); } // Formatting, a la TableListField if(!empty($info['formatting'])) { $format = str_replace('$value', "__VAL__", $info['formatting']); $format = preg_replace('/\$([A-Za-z0-9-_]+)/','$record->$1', $format); $format = str_replace('__VAL__', '$val', $format); $val = eval('return "' . $format . '";'); } $prefix = empty($info['newline']) ? "" : "
"; $classClause = ""; if(isset($info['title'])) { $cssClass = preg_replace('/[^A-Za-z0-9]+/', '', $info['title']); $classClause = "class=\"$cssClass\""; } if(isset($info['link']) && $info['link']) { $linkBase = singleton('CMSPageEditController')->Link('show') . '/'; $link = ($info['link'] === true) ? $linkBase . $record->ID : $info['link']; return $prefix . "$val"; } else { return $prefix . "$val"; } } } /** * A report wrapper that makes it easier to define slightly different behaviour for side-reports. * * This report wrapper will use sideReportColumns() for the report columns, instead of columns(). * * @package reports */ class SideReportWrapper extends SS_ReportWrapper { public function columns() { if($this->baseReport->hasMethod('sideReportColumns')) { return $this->baseReport->sideReportColumns(); } else { return parent::columns(); } } }