Seit TYPO3 4.3 gibt es im TYPO3 Backend das Modul „Berichte“ (englisch „Reports“). TYPO3 liefert bereits einen Statusbericht und eine Liste der installierten Dienste mit. Der Statusbericht gibt Informationen über das System, die Sicherheit der Installation und die Konfiguration wieder. Außerdem wird der Status von ein paar Extensions angezeigt. Es gibt mittlerweile auch eine Reihe von Extensions, die das Berichts Modul um eigene Berichte erweitern, z.B. memcached_reports, additional_reports oder solr.
Dieser Artikel soll einen kurzen Einblick geben, wie leicht sich das Modul um eigene Berichte erweitern lässt.
Die System Extension reports liefert zwei Interfaces mit, je nach dem, was man tun möchte.
interface tx_reports_StatusProvider { } |
tx_reports_StatusProvider wird verwendet, wenn man sich in den bestehenden Statusbericht einklinken möchte und diesen um einen eigenen Test erweitern möchte.
interface tx_reports_Report { } |
Mit tx_reports_Report kann ein komplett eigenständiger Bericht erstellt werden.
Statusbericht erweitern
In der eigenen Extension wird eine Datei class.tx_myext_report_mystatus.php angelegt, der Ordnung halber idealerweise in einem Unterordner „reports“. Die Grundstuktur kann so aussehen:
class tx_myext_report_MyStatus implements tx_reports_StatusProvider { /** * Constructor for class tx_myext_report_MyStatus */ public function __construct() { $GLOBALS['LANG']->includeLLFile('EXT:myext/report/locallang.xml'); } /** * do custom check * * @see typo3/sysext/reports/interfaces/tx_reports_StatusProvider::getStatus() * @return array */ public function getStatus() { $reports = array(); $status = t3lib_div::makeInstance('tx_reports_reports_status_Status', $GLOBALS['LANG']->getLL('title'), $GLOBALS['LANG']->getLL('value'), $GLOBALS['LANG']->getLL('message'), tx_reports_reports_status_Status::OK ); $reports[] = $status; return $reports; } } |
Außer der im Beispiel verwendeten Severity OK gibt es noch WARNING, ERROR, INFO und NOTICE.
Damit die neue Klasse von TYPO3 erkannt wird, muss noch eine ext_autoload.php erstellt werden. Über die Extension extdeveval kann man das auch automatisch erledigen lassen.
Zum Schluss muss nur noch in ext_tables.php der neue Status Provider registriert werden:
if (TYPO3_MODE == 'BE') { $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['reports']['tx_reports']['status']['providers']['myext'] = array('tx_myext_report_MyStatus'); } |
eigenständiger Bericht
Für einen neuen Bericht muss ext_tables.php wie folgt erweitert werden:
if (TYPO3_MODE == 'BE') { $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['reports']['tx_myext']['myreport'] = array( 'title' => 'LLL:EXT:myext/locallang.xml:report_myreport_title', 'description' => 'LLL:EXT:myext/locallang.xml:report_myreport_description', 'report' => 'tx_myext_report_MyReport', 'icon' => 'EXT:myext/reports/tx_myext_report.gif' ); } |
Die dazugehörige class.tx_myext_report_myreport.php sieht dann so aus:
class tx_myext_report_MyReport implements tx_reports_Report { protected $reportsModule; /** * constructor for class tx_myext_report_MyReport */ public function __construct(tx_reports_Module $reportsModule) { $this->reportsModule = $reportsModule; $this->reportsModule->doc->addStyleSheet( 'tx_myext', '../' . t3lib_extMgm::siteRelPath('myext') . 'resources/css/reports/myreport.css' ); } public function getReport() { $content = 'Content of my report'; return $content; } } |
Auch hier muss die ext_autoload.php entsprechend angepasst werden.
Fazit
Mit wenigen Zeilen Code können der Statusbericht erweitert oder eigenständige Berichte erstellt werden. Für die Admins von TYPO3 Webseiten bieten die Berichte einen großen Mehrwert, da sie so schnell neue oder geänderte Zustände erkennen können.
Die eingangs genannten Extensions bieten Inspirationen, was man alles machen kann. Viel Spaß beim ausprobieren!
(Achtung: in meinen Code Beispielen hat es die Pfeile zerlegt. > muss entsprechend durch einen Pfeil nach rechts ersetzt werden!)