|
@@ -0,0 +1,199 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+ * @file
|
|
|
+ * Logger Overview form
|
|
|
+ */
|
|
|
+
|
|
|
+namespace Drupal\redis_logger\Form;
|
|
|
+
|
|
|
+
|
|
|
+use Redis\Logger\Reader;
|
|
|
+
|
|
|
+class Overview {
|
|
|
+
|
|
|
+
|
|
|
+ * @var \Redis\Logger\Reader
|
|
|
+ */
|
|
|
+ protected $reader;
|
|
|
+
|
|
|
+ public function __construct(Reader $reader) {
|
|
|
+ $this->reader = $reader;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * Helper for the Redis logger filter form builder.
|
|
|
+ *
|
|
|
+ * @param \Redis\Logger\Reader $reader
|
|
|
+ *
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ protected function getFilters() {
|
|
|
+ $filters = array();
|
|
|
+
|
|
|
+ $filters['type'] = array(
|
|
|
+ 'title' => t('Type'),
|
|
|
+ 'options' => $this->reader->getChannels(),
|
|
|
+ );
|
|
|
+
|
|
|
+ $filters['severity'] = array(
|
|
|
+ 'title' => t('Severity'),
|
|
|
+ 'options' => $this->reader->getSettings()->getSeverityLevels(),
|
|
|
+ );
|
|
|
+
|
|
|
+ return $filters;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * Form constructor for the form that clears out the log.
|
|
|
+ *
|
|
|
+ * TODO implement.
|
|
|
+ *
|
|
|
+ * @see dblog_clear_log_submit()
|
|
|
+ * @ingroup forms
|
|
|
+ */
|
|
|
+ protected function buildClear(array $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;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * Build the filter form. Shares session status with DBLog.
|
|
|
+ *
|
|
|
+ * @param array $form
|
|
|
+ * @param \Redis\Logger\Reader $reader
|
|
|
+ *
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ protected function buildFilter(array $form) {
|
|
|
+ $filters = $this->getFilters();
|
|
|
+
|
|
|
+ $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'),
|
|
|
+ '#submit' => array('redis_logger_filter_submit'),
|
|
|
+ );
|
|
|
+ if (!empty($_SESSION['dblog_overview_filter'])) {
|
|
|
+ $form['filters']['actions']['reset'] = array(
|
|
|
+ '#type' => 'submit',
|
|
|
+ '#value' => t('Reset'),
|
|
|
+ '#submit' => array('redis_logger_filter_reset_submit'),
|
|
|
+ );
|
|
|
+ }
|
|
|
+ return $form;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function build($form, &$form_state) {
|
|
|
+ $reader = $this->reader;
|
|
|
+ $severity_levels = $reader->getSettings()->getSeverityLevels();
|
|
|
+
|
|
|
+ $base_form = $form;
|
|
|
+ $form['redis_logger_filter_form'] = $this->buildFilter($base_form);
|
|
|
+ $form['redis_logger_clear_log_form'] = $this->buildClear($base_form);
|
|
|
+
|
|
|
+ $header = array(
|
|
|
+ t('Level'),
|
|
|
+ t('Count'),
|
|
|
+ t('Type'),
|
|
|
+ t('Source'),
|
|
|
+ t('Message'),
|
|
|
+ );
|
|
|
+
|
|
|
+
|
|
|
+ $templates = $reader->getTemplates();
|
|
|
+
|
|
|
+ $regex = $reader->getSettings()->getSplittingRegex();
|
|
|
+ $rows = array();
|
|
|
+ foreach ($templates as $template) {
|
|
|
+ preg_match($regex, $template, $matches);
|
|
|
+ list(, $channel, $severity, $template) = $matches;
|
|
|
+ $rows[] = array(
|
|
|
+ $severity_levels[$severity],
|
|
|
+ rand(1, 100),
|
|
|
+ $channel,
|
|
|
+ 'somefile.module+' . rand(1, 500),
|
|
|
+ l($template, 'admin/reports/redis/logger/' . $template),
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ $form['redis_logger_table'] = array(
|
|
|
+ '#theme' => 'table',
|
|
|
+ '#header' => $header,
|
|
|
+ '#rows' => $rows,
|
|
|
+ '#attributes' => array('id' => 'admin-dblog'),
|
|
|
+ '#empty' => t('No log messages available.'),
|
|
|
+ );
|
|
|
+
|
|
|
+ $form_state['reader'] = $reader;
|
|
|
+ $form['#submit'][] = 'redis_logger_form_overview_submit';
|
|
|
+ $form['#validate'][] = 'redis_logger_form_overview_validate';
|
|
|
+ return $form;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function validate($form, &$form_state) {
|
|
|
+ dsm(__METHOD__);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function submit($form, &$form_state) {
|
|
|
+ dsm(__METHOD__);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public function submitClear($form, &$form_state) {
|
|
|
+ dsm(__METHOD__);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public function submitFilter($form, &$form_state) {
|
|
|
+ dsm($form_state, __METHOD__);
|
|
|
+ $_SESSION['dblog_overview_filter']['type'] = $_SESSION['dblog_overview_filter']['severity'] = array();
|
|
|
+ if (isset($form_state['values']['type'])) {
|
|
|
+ foreach ($form_state['values']['type'] as $channel) {
|
|
|
+ $_SESSION['dblog_overview_filter']['type'][$channel] = $channel;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (isset($form_state['values']['severity'])) {
|
|
|
+ foreach ($form_state['values']['severity'] as $severity) {
|
|
|
+ $_SESSION['dblog_overview_filter']['severity'][$severity] = $severity;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public function submitFilterReset($form, &$form_state) {
|
|
|
+ $_SESSION['dblog_overview_filter'] = array();
|
|
|
+ }
|
|
|
+}
|