function comment_update_8200

Add the 'view_mode' setting to displays having 'comment_default' formatter.

File

core/modules/comment/comment.install, line 161

Code

function comment_update_8200() {
    $config_factory = \Drupal::configFactory();
    $displays = [];
    // Iterate on all entity view displays.
    foreach ($config_factory->listAll('core.entity_view_display.') as $name) {
        $changed = FALSE;
        $display = $config_factory->getEditable($name);
        $components = $display->get('content') ?: [];
        foreach ($components as $field_name => $component) {
            if (isset($component['type']) && $component['type'] === 'comment_default') {
                if (empty($display->get("content.{$field_name}.settings.view_mode"))) {
                    $display->set("content.{$field_name}.settings.view_mode", 'default');
                    $displays[] = $display->get('id');
                    $changed = TRUE;
                }
            }
        }
        if ($changed) {
            $display->save(TRUE);
        }
    }
    if ($displays) {
        return new PluralTranslatableMarkup(count($displays), '1 entity display updated: @displays.', '@count entity displays updated: @displays.', [
            '@displays' => implode(', ', $displays),
        ]);
    }
    else {
        return new TranslatableMarkup('No entity view display updated.');
    }
}

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