You are here

function content_moderation_post_update_views_field_plugin_id in Drupal 8

Update the moderation state views field plugin ID.

File

core/modules/content_moderation/content_moderation.post_update.php, line 177
Post update functions for the Content Moderation module.

Code

function content_moderation_post_update_views_field_plugin_id(&$sandbox) {

  // If Views is not installed, there is nothing to do.
  if (!\Drupal::moduleHandler()
    ->moduleExists('views')) {
    return;
  }
  \Drupal::classResolver(ConfigEntityUpdater::class)
    ->update($sandbox, 'view', function ($view) {

    /** @var \Drupal\views\ViewEntityInterface $view */
    $updated = FALSE;
    $displays = $view
      ->get('display');
    foreach ($displays as &$display) {
      if (empty($display['display_options']['fields'])) {
        continue;
      }
      foreach ($display['display_options']['fields'] as &$display_field) {
        if ($display_field['id'] === 'moderation_state' && $display_field['plugin_id'] === 'field') {
          $display_field['plugin_id'] = 'moderation_state_field';
          $updated = TRUE;
        }
      }
    }
    $view
      ->set('display', $displays);
    return $updated;
  });
}