You are here

function wbm2cm_install in Workbench Moderation to Content Moderation 8.2

Implements hook_install().

2 calls to wbm2cm_install()
TestBase::doMigration in tests/src/Functional/TestBase.php
Migrates from Workbench Moderation to Content Moderation.
WorkflowCollectorTest::setUp in tests/src/Kernel/WorkflowCollectorTest.php

File

./wbm2cm.install, line 6

Code

function wbm2cm_install() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('workbench_moderation')) {
    return;
  }
  $state = \Drupal::state();

  /** @var \Drupal\wbm2cm\WorkflowCollector $collector */
  $collector = \Drupal::service('wbm2cm.workflow_collector');
  $state
    ->set('moderation_workflows', $collector
    ->getWorkflows());
  $entity_types = [];

  /** @var \Drupal\Core\Config\Entity\ConfigEntityInterface $bundle */
  foreach ($collector
    ->supported() as $bundle) {
    array_push($entity_types, $bundle
      ->getEntityType()
      ->getBundleOf());
  }
  $state
    ->set('moderation_entity_types', array_unique($entity_types));

  // Find every Views filter and field which filter by, or display, the
  // moderation state.
  $filters = $fields = [];
  $views = \Drupal::configFactory()
    ->listAll('views.view');
  foreach ($views as $view_id) {
    $view = \Drupal::config($view_id);
    $displays = $view
      ->get('display');
    foreach ($displays as $display_id => $display) {
      if (isset($display['display_options']['filters'])) {
        foreach ($display['display_options']['filters'] as $filter_id => $filter) {
          if (isset($filter['entity_field']) && $filter['entity_field'] == 'moderation_state') {
            array_push($filters, [
              $view_id,
              $display_id,
              $filter_id,
            ]);
          }
        }
      }
      if (isset($display['display_options']['fields'])) {
        foreach ($display['display_options']['fields'] as $field_id => $field) {
          if (isset($field['entity_field']) && $field['entity_field'] == 'moderation_state') {
            array_push($fields, [
              $view_id,
              $display_id,
              $field_id,
            ]);
          }
        }
      }
    }
  }
  $state
    ->set('moderation_filters', $filters);
  $state
    ->set('moderation_fields', $fields);
}