function dblog_view_presave in Drupal 8
Implements hook_ENTITY_TYPE_presave() for views entities.
This hook ensures there are no views based that are using a wrong plugin for wid and uid fields on views that use watchdog as base table.
Deprecated
in drupal:8.4.0 and is removed from drupal:9.0.0.
See also
https://www.drupal.org/node/2876378
File
- core/
modules/ dblog/ dblog.module, line 133 - System monitoring and logging for administrators.
Code
function dblog_view_presave(ViewEntityInterface $view) {
// Only interested in watchdog based views.
if ($view
->get('base_table') != 'watchdog') {
return;
}
$displays = $view
->get('display');
$update = FALSE;
foreach ($displays 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',
], TRUE)) {
$displays[$display_name]['display_options']['fields'][$field_name]['plugin_id'] = 'standard';
// Delete all the attributes related to numeric fields.
unset($displays[$display_name]['display_options']['fields'][$field_name]['set_precision'], $displays[$display_name]['display_options']['fields'][$field_name]['precision'], $displays[$display_name]['display_options']['fields'][$field_name]['decimal'], $displays[$display_name]['display_options']['fields'][$field_name]['separator'], $displays[$display_name]['display_options']['fields'][$field_name]['format_plural'], $displays[$display_name]['display_options']['fields'][$field_name]['format_plural_string'], $displays[$display_name]['display_options']['fields'][$field_name]['prefix'], $displays[$display_name]['display_options']['fields'][$field_name]['suffix']);
$update = TRUE;
@trigger_error("The numeric plugin for watchdog.{$field_name} field is deprecated in Drupal 8.4.0 and will be removed before Drupal 9.0.0. Must use standard plugin instead. See https://www.drupal.org/node/2876378.", E_USER_DEPRECATED);
}
}
}
// 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') {
$displays[$display_name]['display_options']['filters'][$filter_name]['plugin_id'] = 'dblog_types';
$update = TRUE;
@trigger_error("The in_operator plugin for watchdog.type filter is deprecated in Drupal 8.4.0 and will be removed before Drupal 9.0.0. Must use dblog_types plugin instead. See https://www.drupal.org/node/2876378.", E_USER_DEPRECATED);
}
}
}
}
if ($update) {
$view
->set('display', $displays);
}
}