You are here

function _cms_content_sync_set_entity_push_pools 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_pools()
  2. 2.0.x cms_content_sync.module \_cms_content_sync_set_entity_push_pools()

Entity status update.

Update the EntityStatus for the given entity, setting the EntityStatus::FLAG_EDIT_OVERRIDE flag accordingly.

Parameters

array $form:

\Drupal\Core\Form\FormStateInterface $form_state:

1 string reference to '_cms_content_sync_set_entity_push_pools'
_cms_content_sync_add_push_pool_form in ./cms_content_sync.module
Add the push widgets to the form, providing flow and pool selection.

File

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

Code

function _cms_content_sync_set_entity_push_pools(array $form, FormStateInterface $form_state) {
  $flow_id = $form_state
    ->getValue('cms_content_sync_flow');
  if (!$flow_id) {
    return;
  }
  $values = $form_state
    ->getValue('cms_content_sync_pool');
  $processed = [];
  if (is_array($values)) {
    foreach ($values as $id => $selected) {
      if ($selected && $id !== 'ignore') {
        $processed[] = $id;
      }
    }
  }
  else {
    if ($values !== 'ignore') {
      $processed[] = $values;
    }
  }

  /**
   * @var \Drupal\Core\Entity\EntityInterface $entity
   */
  $entity = $form_state
    ->getFormObject()
    ->getEntity();
  EntityStatus::saveSelectedPoolsToPushTo($entity, $flow_id, $processed);
  if ($entity instanceof FieldableEntityInterface) {
    $entityFieldManager = Drupal::service('entity_field.manager');

    /** @var \Drupal\Core\Field\FieldDefinitionInterface[] $fields */
    $fields = $entityFieldManager
      ->getFieldDefinitions($entity
      ->getEntityTypeId(), $entity
      ->bundle());
    _cms_content_sync_set_entity_push_subform($entity, $form, $form_state, $fields);
  }
}