function system_post_update_timestamp_formatter
Update timestamp formatter settings for entity view displays.
File
-
core/
modules/ system/ system.post_update.php, line 65
Code
function system_post_update_timestamp_formatter(array &$sandbox = NULL) : void {
/** @var \Drupal\Core\Field\FormatterPluginManager $field_formatter_manager */
$field_formatter_manager = \Drupal::service('plugin.manager.field.formatter');
\Drupal::classResolver(ConfigEntityUpdater::class)->update($sandbox, 'entity_view_display', function (EntityViewDisplayInterface $entity_view_display) use ($field_formatter_manager) : bool {
$update = FALSE;
foreach ($entity_view_display->getComponents() as $name => $component) {
if (empty($component['type'])) {
continue;
}
$plugin_definition = $field_formatter_manager->getDefinition($component['type'], FALSE);
// Check also potential plugins extending TimestampFormatter.
if (!is_a($plugin_definition['class'], TimestampFormatter::class, TRUE)) {
continue;
}
// The 'tooltip' and 'time_diff' settings might have been set, with their
// default values, if this entity has been already saved in a previous
// (post)update, such as layout_builder_post_update_timestamp_formatter().
// Ensure that existing timestamp formatters doesn't show any tooltip.
if (!isset($component['settings']['tooltip']) || !isset($component['settings']['time_diff']) || $component['settings']['tooltip']['date_format'] !== '') {
// Existing timestamp formatters don't have tooltip.
$component['settings']['tooltip'] = [
'date_format' => '',
'custom_date_format' => '',
];
$entity_view_display->setComponent($name, $component);
$update = TRUE;
}
}
return $update;
});
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.