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

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

"; } return $result; } protected function formatValue($record, $source, $info) { // Cast value if (!empty($info['casting'])) { $val = DBField::create_field($info['casting'], $record->source)->forTemplate(); } else { $val = Convert::raw2xml($record->$source); } // 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']) { $link = ($info['link'] === true && $record->hasMethod('getCMSEditLink')) ? $record->getCMSEditLink() : $info['link']; return $prefix . "$val"; } else { return $prefix . "$val"; } } }