|
@@ -1,5 +1,5 @@
|
|
|
<?php
|
|
|
-use Redis\Logger\Writer;
|
|
|
+use Redis\Logger\Reader;
|
|
|
|
|
|
/**
|
|
|
* @file
|
|
@@ -7,19 +7,153 @@ use Redis\Logger\Writer;
|
|
|
*/
|
|
|
|
|
|
function redis_logger_form_overview($form, $form_state) {
|
|
|
- $logger = Redis\Logger\Writer::instance();
|
|
|
+ $redis = Redis_Client::getClient();
|
|
|
+ $reader = new Reader($redis);
|
|
|
+ $severity_levels = $reader->getSettings()->getSeverityLevels();
|
|
|
|
|
|
- $form['levels'] = array(
|
|
|
- '#description' => t('The semantics of these levels are defined by RFC5424.'),
|
|
|
- '#options' => watchdog_severity_levels(),
|
|
|
- '#title' => t('Severity'),
|
|
|
- '#type' => 'select',
|
|
|
+ $base_form = $form;
|
|
|
+ $form['redis_logger_filter_form'] = _redis_logger_filter_form($base_form, $reader);
|
|
|
+ $form['redis_logger_clear_log_form'] = _redis_logger_clear_log_form($base_form);
|
|
|
+
|
|
|
+ $header = array(
|
|
|
+ t('Type'),
|
|
|
+ t('Level'),
|
|
|
+ t('Message template'),
|
|
|
+ t('Occurrences'),
|
|
|
);
|
|
|
- $form['channels'] = array(
|
|
|
- '#description' => t('The channels listed here are those which have emitted at least one message.'),
|
|
|
- '#options' => Writer::instance()->getChannels(),
|
|
|
- '#title' => t('Severity'),
|
|
|
- '#type' => 'select',
|
|
|
+
|
|
|
+ $templates = $reader->getTemplates();
|
|
|
+ dsm($templates);
|
|
|
+ $regex = $reader->getSettings()->getSplittingRegex();
|
|
|
+ $rows = array();
|
|
|
+ foreach ($templates as $template) {
|
|
|
+ preg_match($regex, $template, $matches);
|
|
|
+ list(, $channel, $severity, $template) = $matches;
|
|
|
+ $occurrences = l(t('Occurrences'), 'admin/reports/redis/logger/' . $template);
|
|
|
+ $rows[] = array(
|
|
|
+ $channel,
|
|
|
+ $severity_levels[$severity],
|
|
|
+ $template,
|
|
|
+ $occurrences,
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ $form['redis_logger_table'] = array(
|
|
|
+ '#theme' => 'table',
|
|
|
+ '#header' => $header,
|
|
|
+ '#rows' => $rows,
|
|
|
+ '#attributes' => array('id' => 'admin-dblog'),
|
|
|
+ '#empty' => t('No log messages available.'),
|
|
|
);
|
|
|
+ $build['dblog_pager'] = array('#theme' => 'pager');
|
|
|
+
|
|
|
+
|
|
|
return $form;
|
|
|
}
|
|
|
+
|
|
|
+/**
|
|
|
+ * TODO implement. Beware of XSS.
|
|
|
+ *
|
|
|
+ * @param string $template
|
|
|
+ *
|
|
|
+ * @return string
|
|
|
+ */
|
|
|
+function redis_logger_page_event($template) {
|
|
|
+ return check_plain($template);
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * Form constructor for the form that clears out the log.
|
|
|
+ *
|
|
|
+ * TODO implement.
|
|
|
+ *
|
|
|
+ * @see dblog_clear_log_submit()
|
|
|
+ * @ingroup forms
|
|
|
+ */
|
|
|
+function _redis_logger_clear_log_form($form) {
|
|
|
+ $form['redis_logger_clear'] = array(
|
|
|
+ '#type' => 'fieldset',
|
|
|
+ '#title' => t('Clear log messages'),
|
|
|
+ '#description' => t('NOT IMPLEMENTED YET. This will permanently remove the log messages from the Redis store.'),
|
|
|
+ '#collapsible' => TRUE,
|
|
|
+ '#collapsed' => TRUE,
|
|
|
+ );
|
|
|
+ $form['redis_logger_clear']['clear'] = array(
|
|
|
+ '#type' => 'submit',
|
|
|
+ '#value' => t('Clear log messages'),
|
|
|
+ '#submit' => array('redis_logger_clear_log_submit'),
|
|
|
+ );
|
|
|
+
|
|
|
+ return $form;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * Helper for the Redis logger filter form builder.
|
|
|
+ *
|
|
|
+ * @param \Redis\Logger\Reader $reader
|
|
|
+ *
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+function _redis_logger_filters(Reader $reader) {
|
|
|
+ $filters = array();
|
|
|
+
|
|
|
+ $filters['type'] = array(
|
|
|
+ 'title' => t('Type'),
|
|
|
+ 'options' => $reader->getChannels(),
|
|
|
+ );
|
|
|
+
|
|
|
+ $filters['severity'] = array(
|
|
|
+ 'title' => t('Severity'),
|
|
|
+ 'options' => $reader->getSettings()->getSeverityLevels(),
|
|
|
+ );
|
|
|
+
|
|
|
+ return $filters;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * Build the filter form. Shares session status with DBLog.
|
|
|
+ *
|
|
|
+ * @param array $form
|
|
|
+ * @param \Redis\Logger\Reader $reader
|
|
|
+ *
|
|
|
+ * @return mixed
|
|
|
+ */
|
|
|
+function _redis_logger_filter_form($form, Reader $reader) {
|
|
|
+ $filters = _redis_logger_filters($reader);
|
|
|
+
|
|
|
+ $form['filters'] = array(
|
|
|
+ '#type' => 'fieldset',
|
|
|
+ '#title' => t('Filter log messages'),
|
|
|
+ '#collapsible' => TRUE,
|
|
|
+ '#collapsed' => empty($_SESSION['dblog_overview_filter']),
|
|
|
+ );
|
|
|
+ foreach ($filters as $key => $filter) {
|
|
|
+ $form['filters']['status'][$key] = array(
|
|
|
+ '#title' => $filter['title'],
|
|
|
+ '#type' => 'select',
|
|
|
+ '#multiple' => TRUE,
|
|
|
+ '#size' => 8,
|
|
|
+ '#options' => $filter['options'],
|
|
|
+ );
|
|
|
+ if (!empty($_SESSION['dblog_overview_filter'][$key])) {
|
|
|
+ $form['filters']['status'][$key]['#default_value'] = $_SESSION['dblog_overview_filter'][$key];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $form['filters']['actions'] = array(
|
|
|
+ '#type' => 'actions',
|
|
|
+ '#attributes' => array('class' => array('container-inline')),
|
|
|
+ );
|
|
|
+ $form['filters']['actions']['submit'] = array(
|
|
|
+ '#type' => 'submit',
|
|
|
+ '#value' => t('Filter'),
|
|
|
+ );
|
|
|
+ if (!empty($_SESSION['dblog_overview_filter'])) {
|
|
|
+ $form['filters']['actions']['reset'] = array(
|
|
|
+ '#type' => 'submit',
|
|
|
+ '#value' => t('Reset')
|
|
|
+ );
|
|
|
+ }
|
|
|
+ return $form;
|
|
|
+
|
|
|
+}
|