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.