annotate core/modules/dblog/dblog.install @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 129ea1e6d783
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 /**
Chris@0 4 * @file
Chris@0 5 * Install, update and uninstall functions for the dblog module.
Chris@0 6 */
Chris@0 7
Chris@0 8 /**
Chris@0 9 * Implements hook_schema().
Chris@0 10 */
Chris@0 11 function dblog_schema() {
Chris@0 12 $schema['watchdog'] = [
Chris@0 13 'description' => 'Table that contains logs of all system events.',
Chris@0 14 'fields' => [
Chris@0 15 'wid' => [
Chris@0 16 'type' => 'serial',
Chris@0 17 'not null' => TRUE,
Chris@0 18 'description' => 'Primary Key: Unique watchdog event ID.',
Chris@0 19 ],
Chris@0 20 'uid' => [
Chris@0 21 'type' => 'int',
Chris@0 22 'unsigned' => TRUE,
Chris@0 23 'not null' => TRUE,
Chris@0 24 'default' => 0,
Chris@0 25 'description' => 'The {users}.uid of the user who triggered the event.',
Chris@0 26 ],
Chris@0 27 'type' => [
Chris@0 28 'type' => 'varchar_ascii',
Chris@0 29 'length' => 64,
Chris@0 30 'not null' => TRUE,
Chris@0 31 'default' => '',
Chris@0 32 'description' => 'Type of log message, for example "user" or "page not found."',
Chris@0 33 ],
Chris@0 34 'message' => [
Chris@0 35 'type' => 'text',
Chris@0 36 'not null' => TRUE,
Chris@0 37 'size' => 'big',
Chris@0 38 'description' => 'Text of log message to be passed into the t() function.',
Chris@0 39 ],
Chris@0 40 'variables' => [
Chris@0 41 'type' => 'blob',
Chris@0 42 'not null' => TRUE,
Chris@0 43 'size' => 'big',
Chris@0 44 'description' => 'Serialized array of variables that match the message string and that is passed into the t() function.',
Chris@0 45 ],
Chris@0 46 'severity' => [
Chris@0 47 'type' => 'int',
Chris@0 48 'unsigned' => TRUE,
Chris@0 49 'not null' => TRUE,
Chris@0 50 'default' => 0,
Chris@0 51 'size' => 'tiny',
Chris@0 52 'description' => 'The severity level of the event; ranges from 0 (Emergency) to 7 (Debug)',
Chris@0 53 ],
Chris@0 54 'link' => [
Chris@0 55 'type' => 'text',
Chris@0 56 'not null' => FALSE,
Chris@0 57 'description' => 'Link to view the result of the event.',
Chris@0 58 ],
Chris@0 59 'location' => [
Chris@0 60 'type' => 'text',
Chris@0 61 'not null' => TRUE,
Chris@0 62 'description' => 'URL of the origin of the event.',
Chris@0 63 ],
Chris@0 64 'referer' => [
Chris@0 65 'type' => 'text',
Chris@0 66 'not null' => FALSE,
Chris@0 67 'description' => 'URL of referring page.',
Chris@0 68 ],
Chris@0 69 'hostname' => [
Chris@0 70 'type' => 'varchar_ascii',
Chris@0 71 'length' => 128,
Chris@0 72 'not null' => TRUE,
Chris@0 73 'default' => '',
Chris@0 74 'description' => 'Hostname of the user who triggered the event.',
Chris@0 75 ],
Chris@0 76 'timestamp' => [
Chris@0 77 'type' => 'int',
Chris@0 78 'not null' => TRUE,
Chris@0 79 'default' => 0,
Chris@0 80 'description' => 'Unix timestamp of when event occurred.',
Chris@0 81 ],
Chris@0 82 ],
Chris@0 83 'primary key' => ['wid'],
Chris@0 84 'indexes' => [
Chris@0 85 'type' => ['type'],
Chris@0 86 'uid' => ['uid'],
Chris@0 87 'severity' => ['severity'],
Chris@0 88 ],
Chris@0 89 ];
Chris@0 90
Chris@0 91 return $schema;
Chris@0 92 }
Chris@0 93
Chris@0 94 /**
Chris@0 95 * Use standard plugin for wid and uid fields. Use dblog_types for type filter.
Chris@0 96 */
Chris@0 97 function dblog_update_8400() {
Chris@0 98 $config_factory = \Drupal::configFactory();
Chris@0 99
Chris@0 100 foreach ($config_factory->listAll('views.view.') as $view_config_name) {
Chris@0 101 $view = $config_factory->getEditable($view_config_name);
Chris@0 102 if ($view->get('base_table') != 'watchdog') {
Chris@0 103 continue;
Chris@0 104 }
Chris@0 105
Chris@0 106 $save = FALSE;
Chris@0 107 foreach ($view->get('display') as $display_name => $display) {
Chris@0 108 // Iterate through all the fields of watchdog views based tables.
Chris@0 109 if (isset($display['display_options']['fields'])) {
Chris@0 110 foreach ($display['display_options']['fields'] as $field_name => $field) {
Chris@0 111 // We are only interested in wid and uid fields from the watchdog
Chris@0 112 // table that still use the numeric id.
Chris@0 113 if (isset($field['table']) &&
Chris@0 114 $field['table'] === 'watchdog' &&
Chris@0 115 $field['plugin_id'] == 'numeric' &&
Chris@0 116 in_array($field['field'], ['wid', 'uid'])) {
Chris@0 117
Chris@0 118 $save = TRUE;
Chris@0 119 $new_value = $field;
Chris@0 120 $new_value['plugin_id'] = 'standard';
Chris@0 121
Chris@0 122 // Delete all the attributes related to numeric fields.
Chris@0 123 unset(
Chris@0 124 $new_value['set_precision'],
Chris@0 125 $new_value['precision'],
Chris@0 126 $new_value['decimal'],
Chris@0 127 $new_value['separator'],
Chris@0 128 $new_value['format_plural'],
Chris@0 129 $new_value['format_plural_string'],
Chris@0 130 $new_value['prefix'],
Chris@0 131 $new_value['suffix']
Chris@0 132 );
Chris@0 133 $view->set("display.$display_name.display_options.fields.$field_name", $new_value);
Chris@0 134 }
Chris@0 135 }
Chris@0 136 }
Chris@0 137
Chris@0 138 // Iterate all filters looking for type filters to update.
Chris@0 139 if (isset($display['display_options']['filters'])) {
Chris@0 140 foreach ($display['display_options']['filters'] as $filter_name => $filter) {
Chris@0 141 if (isset($filter['table']) &&
Chris@0 142 $filter['table'] === 'watchdog' &&
Chris@0 143 $filter['plugin_id'] == 'in_operator' &&
Chris@0 144 $filter['field'] == 'type') {
Chris@0 145
Chris@0 146 $save = TRUE;
Chris@0 147 $filter['plugin_id'] = 'dblog_types';
Chris@0 148 $view->set("display.$display_name.display_options.filters.$filter_name", $filter);
Chris@0 149 }
Chris@0 150 }
Chris@0 151 }
Chris@0 152 }
Chris@0 153
Chris@0 154 if ($save) {
Chris@0 155 $view->save();
Chris@0 156 }
Chris@0 157 }
Chris@0 158 }
Chris@17 159
Chris@17 160 /**
Chris@17 161 * Change 'No logs message available.' area plugin type.
Chris@17 162 */
Chris@17 163 function dblog_update_8600() {
Chris@17 164 $config_factory = \Drupal::configFactory();
Chris@17 165
Chris@17 166 $view = \Drupal::configFactory()->getEditable('views.view.watchdog');
Chris@17 167 if (empty($view)) {
Chris@17 168 return;
Chris@17 169 }
Chris@17 170
Chris@17 171 $empty_text = $view->get('display.default.display_options.empty');
Chris@17 172 if (!isset($empty_text['area']['content']['value'])) {
Chris@17 173 return;
Chris@17 174 }
Chris@17 175
Chris@17 176 // Only update the empty text if is untouched from the original version.
Chris@17 177 if ($empty_text['area']['id'] == 'area' &&
Chris@17 178 $empty_text['area']['plugin_id'] == 'text' &&
Chris@17 179 $empty_text['area']['field'] == 'area' &&
Chris@17 180 $empty_text['area']['content']['value'] == 'No log messages available.') {
Chris@17 181
Chris@17 182 $new_config = [
Chris@17 183 'id' => 'area_text_custom',
Chris@17 184 'table' => 'views',
Chris@17 185 'field' => 'area_text_custom',
Chris@17 186 'relationship' => 'none',
Chris@17 187 'group_type' => 'group',
Chris@17 188 'admin_label' => 'No log messages available.',
Chris@17 189 'empty' => TRUE,
Chris@17 190 'tokenize' => FALSE,
Chris@17 191 'content' => 'No log messages available.',
Chris@17 192 'plugin_id' => 'text_custom',
Chris@17 193 ];
Chris@17 194 $view->set('display.default.display_options.empty.area', $new_config);
Chris@17 195 $view->save();
Chris@17 196 }
Chris@17 197 }