function dblog_update_8400

Use standard plugin for wid and uid fields. Use dblog_types for type filter.

File

core/modules/dblog/dblog.install, line 97

Code

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();
    }
  }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.