You are here

public function EntityProcessorBase::mappingFormAlter in Feeds 8.3

Alter mapping form.

Parameters

array $form: The mapping form definition.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the mapping form.

Overrides MappingPluginFormInterface::mappingFormAlter

File

src/Feeds/Processor/EntityProcessorBase.php, line 904

Class

EntityProcessorBase
Defines a base entity processor.

Namespace

Drupal\feeds\Feeds\Processor

Code

public function mappingFormAlter(array &$form, FormStateInterface $form_state) {
  $added_target = $form_state
    ->getValue('add_target');
  if (!$added_target) {

    // No target was added this time around. Abort.
    return;
  }

  // When adding a mapping target to entity ID, tick 'unique' by default.
  $id_key = $this->entityType
    ->getKey('id');
  $mappings = $this->feedType
    ->getMappings();
  $last_delta = array_keys($mappings)[count($mappings) - 1];
  $mapping = end($mappings);
  if ($mapping['target'] != $added_target) {
    return;
  }
  $target_definition = $this->feedType
    ->getTargetPlugin($last_delta)
    ->getTargetDefinition();
  if (!$target_definition instanceof FieldTargetDefinition) {
    return;
  }

  /** @var \Drupal\Core\Field\FieldDefinitionInterface $field_definition */
  $field_definition = $target_definition
    ->getFieldDefinition();
  if ($field_definition
    ->getName() != $id_key) {
    return;
  }

  // We made it! Set property as unique.
  $form['mappings'][$last_delta]['unique'][$field_definition
    ->getMainPropertyName()]['#default_value'] = TRUE;
}