You are here

function _varbase_workflow_node_type_add_form in Varbase Workflow 2.0.x

Varbase workflow node type add form.

1 string reference to '_varbase_workflow_node_type_add_form'
varbase_workflow_form_alter in ./varbase_workflow.module
Implements hook_form_alter().

File

./varbase_workflow.module, line 89
Contains varbase_workflow.module.

Code

function _varbase_workflow_node_type_add_form(array &$form, FormStateInterface &$form_state) {
  $node_type = $form_state
    ->getFormObject()
    ->getEntity()
    ->get('type');
  $content_moderation_workflow = $form_state
    ->getFormObject()
    ->getEntity()
    ->get('content_moderation_workflow');
  if (isset($content_moderation_workflow) && $content_moderation_workflow != '' && $content_moderation_workflow != '_none') {
    $config_factory = \Drupal::service('config.factory');
    $workflow_type_settings = $config_factory
      ->getEditable($content_moderation_workflow)
      ->get('type_settings');
    if (isset($workflow_type_settings['entity_types'])) {
      if (isset($workflow_type_settings['entity_types']['node'])) {
        if (!in_array($node_type, $workflow_type_settings['entity_types']['node'])) {
          $workflow_type_settings['entity_types']['node'][] = $node_type;
          $config_factory
            ->getEditable($content_moderation_workflow)
            ->set('type_settings', $workflow_type_settings)
            ->save(TRUE);
        }
      }
      else {
        $workflow_type_settings['entity_types']['node'] = [];
        $workflow_type_settings['entity_types']['node'][] = $node_type;
        $config_factory
          ->getEditable($content_moderation_workflow)
          ->set('type_settings', $workflow_type_settings)
          ->save(TRUE);
      }

      // Entity updates to clear up any mismatched entity and/or field definitions
      // And Fix changes were detected in the entity type and field definitions.
      \Drupal::classResolver()
        ->getInstanceFromDefinition(EntityDefinitionUpdateManager::class)
        ->applyUpdates();
    }
  }
}