You are here

function _cms_content_sync_set_entity_push_subform in CMS Content Sync 8

Same name and namespace in other branches
  1. 2.1.x cms_content_sync.module \_cms_content_sync_set_entity_push_subform()
  2. 2.0.x cms_content_sync.module \_cms_content_sync_set_entity_push_subform()

Parameters

\Drupal\Core\Entity\FieldableEntityInterface $entity:

array $form:

\Drupal\Core\Form\FormStateInterface $form_state:

\Drupal\Core\Field\FieldDefinitionInterface[] $fields:

array $tree_position:

1 call to _cms_content_sync_set_entity_push_subform()
_cms_content_sync_set_entity_push_pools in ./cms_content_sync.module
Entity status update.

File

./cms_content_sync.module, line 1039
Module file for cms_content_sync.

Code

function _cms_content_sync_set_entity_push_subform(FieldableEntityInterface $entity, array $form, FormStateInterface $form_state, array $fields, $tree_position = []) {
  $entityFieldManager = Drupal::service('entity_field.manager');
  foreach ($fields as $name => $definition) {
    if ($definition
      ->getType() == 'entity_reference_revisions') {
      $subform =& $form[$name]['widget'];
      $count = $subform['#max_delta'];
      for ($i = 0; $i <= $count; $i++) {
        $refflow = $form_state
          ->getValue(array_merge($tree_position, [
          $name,
          $i,
          'subform',
          'cms_content_sync_group',
          'cms_content_sync_flow',
        ]));
        $refvalues = $form_state
          ->getValue(array_merge($tree_position, [
          $name,
          $i,
          'subform',
          'cms_content_sync_group',
          'cms_content_sync_pool',
        ]));
        $refuuid = $form_state
          ->getValue(array_merge($tree_position, [
          $name,
          $i,
          'subform',
          'cms_content_sync_group',
          'cms_content_sync_uuid',
        ]));
        if (!empty($refflow) && !empty($refvalues)) {
          EntityStatus::accessTemporaryPushToPoolInfoForField($entity
            ->getEntityTypeId(), $entity
            ->uuid(), $name, $i, $tree_position, $refflow, $refvalues, $refuuid);
        }
        if (!empty($subform[$i]['subform'])) {
          $entity_type = $definition
            ->getSetting('target_type');
          $bundle = $subform[$i]['#paragraph_type'];

          /** @var \Drupal\Core\Field\FieldDefinitionInterface[] $fields */
          $fields = $entityFieldManager
            ->getFieldDefinitions($entity_type, $bundle);
          _cms_content_sync_set_entity_push_subform($entity, $subform[$i]['subform'], $form_state, $fields, array_merge($tree_position, [
            $name,
            $i,
            'subform',
          ]));
        }
      }
    }
  }
}