You are here

function bat_event_type_add_event_state_reference in Booking and Availability Management Tools for Drupal 8

Same name and namespace in other branches
  1. 7 modules/bat_event/bat_event.module \bat_event_type_add_event_state_reference()

Create a field of type 'Bat Event State Reference' to reference an Event State.

1 call to bat_event_type_add_event_state_reference()
EventType::save in modules/bat_event/src/Entity/EventType.php
Saves an entity permanently.

File

modules/bat_event/bat_event.module, line 32
Manage Events - Events store the EventValue of a Unit over a period of time.

Code

function bat_event_type_add_event_state_reference($entity) {

  // Prevent interruption of config sync.
  if (Drupal::isConfigSyncing()) {
    return;
  }
  $field_name = 'event_state_reference';
  $field_storage = FieldStorageConfig::loadByName('bat_event', $field_name);
  $field = FieldConfig::loadByName('bat_event', $entity
    ->id(), $field_name);
  if (empty($field_storage)) {
    $field_storage = FieldStorageConfig::create([
      'field_name' => $field_name,
      'entity_type' => 'bat_event',
      'type' => 'entity_reference',
      'cardinality' => 1,
      'locked' => 1,
      'settings' => [
        'target_type' => 'state',
      ],
    ]);
    $field_storage
      ->save();
  }
  if (empty($field)) {
    $field = FieldConfig::create([
      'field_storage' => $field_storage,
      'entity_type' => 'bat_event',
      'label' => 'State',
      'bundle' => $entity
        ->id(),
      'required' => TRUE,
      'settings' => [
        'handler' => 'default',
        'handler_settings' => [],
      ],
    ]);
    $field
      ->save();
    $form_display = \Drupal::entityTypeManager()
      ->getStorage('entity_form_display')
      ->load('bat_event.' . $entity
      ->id() . '.default');
    if (!$form_display) {
      $form_display = EntityFormDisplay::create([
        'targetEntityType' => 'bat_event',
        'bundle' => $entity
          ->id(),
        'mode' => 'default',
        'status' => TRUE,
      ]);
    }
    $form_display
      ->setComponent($field_name, [
      'type' => 'entity_reference_autocomplete',
      'weight' => 3,
    ]);
    $form_display
      ->save();
  }
}