/** * Function executed from the Scheduler. * Sends an email * * @return boolean */ public function execute() { $success = TRUE; $taskId = $this->taskUid; tx_rnbase::load('tx_rnbase_util_Misc'); try { $lastRun = $this->getLastRunTime($taskId); /* @var $srv tx_mklog_srv_WatchDog */ $srv = tx_rnbase_util_Misc::getService('mklog', 'WatchDog'); $filters = array(); $options = array(); $options['minimalSeverity'] = $this->getMinimalSeverity(); $options['forceSummaryMail'] = $this->getForceSummaryMail(); $options['includeDataVar'] = $this->getIncludeDataVar(); //damit jede Nachricht nur einmal kommt, auch wenn sie mehrmals vorhanden ist if ($this->getGroupEntries()) { $options['groupby'] = Tx_Mklog_Utility_Devlog::getMessageFieldName() . ',extkey'; // wir wollen aber wissen wie oft jede Nachricht vorhanden ist $options['count'] = TRUE; } $srv->triggerMails($this->getEmailReceiver(), $lastRun, $filters, $options); $this->updateLastRunTime($taskId); } catch (Exception $e) { tx_rnbase_util_Logger::fatal('WatchDog failed!', 'mklog', array('Exception' => $e->getMessage())); $success = FALSE; } return $success; }
/** * @return string */ protected function getDevlogTableName() { tx_rnbase::load('Tx_Mklog_Utility_Devlog'); return Tx_Mklog_Utility_Devlog::getTableName(); }
/** * @group unit */ public function testRemoveLogTablesFromTablesThatCanBeCopied() { $mklogTable = 'tx_mklog_devlog_entry'; $devLogTable = Tx_Mklog_Utility_Devlog::getTableName(); $dataHandler = tx_rnbase::makeInstance('Tx_Mklog_Hooks_DataHandler'); $dataHandlerParent = tx_rnbase::makeInstance(tx_rnbase_util_Typo3Classes::getDataHandlerClass()); $dataHandlerParent = $this->getMock(tx_rnbase_util_Typo3Classes::getDataHandlerClass(), array('compileAdminTables')); $dataHandlerParent->expects(self::once())->method('compileAdminTables')->will(self::returnValue(array('pages', 'tt_content', 'sys_template', $devLogTable, $mklogTable))); $this->callInaccessibleMethod($dataHandler, 'removeLogTablesFromTablesThatCanBeCopied', $dataHandlerParent); self::assertNotSame('*', $dataHandlerParent->copyWhichTables, 'es sollte nicht per default auf * stehen'); $copyWhichTables = array_flip(explode(',', $dataHandlerParent->copyWhichTables)); self::assertTrue(is_array($copyWhichTables), 'das sollte ein array sein'); self::assertGreaterThan(2, count($copyWhichTables), 'es sollte mehr als eine Tabelle enthalten sein'); self::assertArrayNotHasKey($devLogTable, $copyWhichTables, 'devlog Tabelle noch enthalten'); self::assertArrayNotHasKey($mklogTable, $copyWhichTables, 'mklog Tabelle noch enthalten'); }
/** * * @param array $infos * @param DateTime $lastRun * @param array $options * @return array */ protected function buildMailContents(array $infos, DateTime $lastRun, array $options = array()) { $messageFieldName = Tx_Mklog_Utility_Devlog::getMessageFieldName(); $extraDataFieldName = Tx_Mklog_Utility_Devlog::getExtraDataFieldName(); $levels = $this->getSeverities(); $textPart = 'This is an automatic email from TYPO3. Don\'t answer!' . "\n\n"; $htmlPart = '<strong>This is an automatic email from TYPO3. Don\'t answer!</strong>'; $textPart .= '== Developer Log summary since ' . $lastRun->format('Y-m-d H:i:s') . "==\n\n"; $htmlPart .= '<h2>Developer Log summary since ' . $lastRun->format('Y-m-d H:i:s') . '</h2>'; $htmlPart .= "\n<ul>\n"; foreach ($infos['summary'] as $data) { $textPart .= sprintf('Level %s (%d): %d items found', $levels[$data['severity']], $data['severity'], $data['cnt']); $textPart .= "\n"; $htmlPart .= sprintf('<li><a href="#%s">Level %s (Severity Number: %d)</a>: %d items found</li>', strtolower($levels[$data['severity']]), $levels[$data['severity']], $data['severity'], $data['cnt']); } $htmlPart .= "\n</ul>\n"; if ($infos['datafound']) { $textPart .= "\n== Latest entries by log level ==\n"; $htmlPart .= '<h2>Latest entries by log level</h2>' . "\n"; foreach ($infos['latest'] as $level => $records) { if (!count($records)) { continue; } $textPart .= sprintf("\nLevel %s (%d):\n", $levels[$level], $data['severity']); $htmlPart .= sprintf('<h3><a name="%s">Level %s (Severity Number: %d)</a></h3>', strtolower($levels[$level]), $levels[$level], $data['severity']); foreach ($records as $record) { $datavar = $options['includeDataVar'] ? 'Extra Data: ' . ($record[$extraDataFieldName] ? print_r(Tx_Mklog_Utility_Devlog::getExtraDataAsArray($record[$extraDataFieldName]), TRUE) : '') : ''; $textPart .= sprintf("Time: %s Extension: %s\nMessage: %s\nCount: %s\n%s", date('Y-m-d H:i:s', $record['crdate']), $record['extkey'], $record[$messageFieldName], $record['msgCount'], $datavar); $htmlPart .= sprintf("<p>Time: %s<br />Extension: %s<br />Message: %s</p><br />Count: %s\n<pre>%s</pre>", date('Y-m-d H:i:s', $record['crdate']), $record['extkey'], $record[$messageFieldName], $record['msgCount'], $datavar); } } } return array('text' => $textPart, 'html' => $htmlPart); }