You are here

function field_default_token_field_config_presave in Field default token 8

Implements hook_ENTITY_TYPE_presave() for field configuration.

File

./field_default_token.module, line 22
Enables to use tokens as field default values.

Code

function field_default_token_field_config_presave(FieldConfigInterface $field_config) {

  // See https://www.drupal.org/node/2818877.

  /** @var \Drupal\field\FieldConfigInterface|\Drupal\Core\Field\FieldConfigInterface $field_config */
  $has_tokens = FALSE;
  foreach ($field_config
    ->getDefaultValueLiteral() as $item) {
    foreach ($item as $property_value) {
      if (is_array($property_value)) {
        continue;
      }
      elseif (strpos($property_value, '[') !== FALSE) {
        $has_tokens = TRUE;
      }
    }
  }
  $callback = $field_config
    ->getDefaultValueCallback();
  if (!$callback && $has_tokens) {
    $field_config
      ->setDefaultValueCallback('field_default_token_default_value_callback');
  }
  elseif ($callback === 'field_default_token_default_value_callback' && !$has_tokens) {
    $field_config
      ->setDefaultValueCallback(NULL);
  }
}