'Table that contains logs of all system events.', 'fields' => [ 'wid' => [ 'type' => 'serial', 'not null' => TRUE, 'description' => 'Primary Key: Unique watchdog event ID.', ], 'uid' => [ 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'description' => 'The {users}.uid of the user who triggered the event.', ], 'type' => [ 'type' => 'varchar_ascii', 'length' => 64, 'not null' => TRUE, 'default' => '', 'description' => 'Type of log message, for example "user" or "page not found."', ], 'message' => [ 'type' => 'text', 'not null' => TRUE, 'size' => 'big', 'description' => 'Text of log message to be passed into the t() function.', ], 'variables' => [ 'type' => 'blob', 'not null' => TRUE, 'size' => 'big', 'description' => 'Serialized array of variables that match the message string and that is passed into the t() function.', ], 'severity' => [ 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'size' => 'tiny', 'description' => 'The severity level of the event; ranges from 0 (Emergency) to 7 (Debug)', ], 'link' => [ 'type' => 'text', 'not null' => FALSE, 'description' => 'Link to view the result of the event.', ], 'location' => [ 'type' => 'text', 'not null' => TRUE, 'description' => 'URL of the origin of the event.', ], 'referer' => [ 'type' => 'text', 'not null' => FALSE, 'description' => 'URL of referring page.', ], 'hostname' => [ 'type' => 'varchar_ascii', 'length' => 128, 'not null' => TRUE, 'default' => '', 'description' => 'Hostname of the user who triggered the event.', ], 'timestamp' => [ 'type' => 'int', 'not null' => TRUE, 'default' => 0, 'description' => 'Unix timestamp of when event occurred.', ], ], 'primary key' => ['wid'], 'indexes' => [ 'type' => ['type'], 'uid' => ['uid'], 'severity' => ['severity'], ], ]; return $schema; } /** * Use standard plugin for wid and uid fields. Use dblog_types for type filter. */ function dblog_update_8400() { $config_factory = \Drupal::configFactory(); foreach ($config_factory->listAll('views.view.') as $view_config_name) { $view = $config_factory->getEditable($view_config_name); if ($view->get('base_table') != 'watchdog') { continue; } $save = FALSE; foreach ($view->get('display') as $display_name => $display) { // Iterate through all the fields of watchdog views based tables. if (isset($display['display_options']['fields'])) { foreach ($display['display_options']['fields'] as $field_name => $field) { // We are only interested in wid and uid fields from the watchdog // table that still use the numeric id. if (isset($field['table']) && $field['table'] === 'watchdog' && $field['plugin_id'] == 'numeric' && in_array($field['field'], ['wid', 'uid'])) { $save = TRUE; $new_value = $field; $new_value['plugin_id'] = 'standard'; // Delete all the attributes related to numeric fields. unset( $new_value['set_precision'], $new_value['precision'], $new_value['decimal'], $new_value['separator'], $new_value['format_plural'], $new_value['format_plural_string'], $new_value['prefix'], $new_value['suffix'] ); $view->set("display.$display_name.display_options.fields.$field_name", $new_value); } } } // Iterate all filters looking for type filters to update. if (isset($display['display_options']['filters'])) { foreach ($display['display_options']['filters'] as $filter_name => $filter) { if (isset($filter['table']) && $filter['table'] === 'watchdog' && $filter['plugin_id'] == 'in_operator' && $filter['field'] == 'type') { $save = TRUE; $filter['plugin_id'] = 'dblog_types'; $view->set("display.$display_name.display_options.filters.$filter_name", $filter); } } } } if ($save) { $view->save(); } } } /** * Change 'No logs message available.' area plugin type. */ function dblog_update_8600() { $config_factory = \Drupal::configFactory(); $view = \Drupal::configFactory()->getEditable('views.view.watchdog'); if (empty($view)) { return; } $empty_text = $view->get('display.default.display_options.empty'); if (!isset($empty_text['area']['content']['value'])) { return; } // Only update the empty text if is untouched from the original version. if ($empty_text['area']['id'] == 'area' && $empty_text['area']['plugin_id'] == 'text' && $empty_text['area']['field'] == 'area' && $empty_text['area']['content']['value'] == 'No log messages available.') { $new_config = [ 'id' => 'area_text_custom', 'table' => 'views', 'field' => 'area_text_custom', 'relationship' => 'none', 'group_type' => 'group', 'admin_label' => 'No log messages available.', 'empty' => TRUE, 'tokenize' => FALSE, 'content' => 'No log messages available.', 'plugin_id' => 'text_custom', ]; $view->set('display.default.display_options.empty.area', $new_config); $view->save(); } }