/**
  * 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);
 }