function layout_builder_entity_view_display_presave

Implements hook_ENTITY_TYPE_presave() for entity_view_display entities.

Provides a BC layer for modules providing old configurations.

@todo Remove this BC layer in drupal:11.0.0.

See also

https://www.drupal.org/node/2993639

File

core/modules/layout_builder/layout_builder.module, line 427

Code

function layout_builder_entity_view_display_presave(EntityViewDisplayInterface $entity_view_display) : void {
  if (!$entity_view_display instanceof LayoutEntityDisplayInterface || !$entity_view_display->isLayoutBuilderEnabled()) {
    return;
  }
  /** @var \Drupal\Core\Field\FormatterPluginManager $field_formatter_manager */
  $field_formatter_manager = \Drupal::service('plugin.manager.field.formatter');
  foreach ($entity_view_display->getSections() as $section) {
    foreach ($section->getComponents() as $component) {
      if (str_starts_with($component->getPluginId(), 'field_block:')) {
        $configuration = $component->get('configuration');
        $formatter =& $configuration['formatter'];
        if ($formatter && isset($formatter['type'])) {
          $plugin_definition = $field_formatter_manager->getDefinition($formatter['type'], FALSE);
          // Check also potential plugins extending TimestampFormatter.
          if (!$plugin_definition || !is_a($plugin_definition['class'], TimestampFormatter::class, TRUE)) {
            continue;
          }
          if (!isset($formatter['settings']['tooltip']) || !isset($formatter['settings']['time_diff'])) {
            @trigger_error("Using the 'timestamp' formatter plugin  without the 'tooltip' and 'time_diff' settings is deprecated in drupal:10.1.0 and is required in drupal:11.0.0. See https://www.drupal.org/node/2993639", E_USER_DEPRECATED);
            $formatter['settings'] += $plugin_definition['class']::defaultSettings();
            // Existing timestamp formatters don't have tooltip.
            $formatter['settings']['tooltip']['date_format'] = '';
            $component->set('configuration', $configuration);
          }
        }
      }
    }
  }
}

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