dblog.install in Drupal 8
Same filename and directory in other branches
Install, update and uninstall functions for the dblog module.
File
core/modules/dblog/dblog.installView source
<?php
/**
* @file
* Install, update and uninstall functions for the dblog module.
*/
/**
* Implements hook_schema().
*/
function dblog_schema() {
$schema['watchdog'] = [
'description' => '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();
}
}
Functions
Name | Description |
---|---|
dblog_schema | Implements hook_schema(). |
dblog_update_8400 | Use standard plugin for wid and uid fields. Use dblog_types for type filter. |
dblog_update_8600 | Change 'No logs message available.' area plugin type. |