<?php /** * @file * Installation functionality for the recurring events registration module. */ use Drupal\Core\Field\BaseFieldDefinition; use Drupal\recurring_events_registration\Plugin\Field\ComputedRegistrantTitleFieldItemList; /** * Install the schema updates for eventseries entities to add registration. * * @see hook_install() */ function recurring_events_registration_install() { $storage_definition = BaseFieldDefinition::create('event_registration') ->setName('event_registration') ->setLabel(t('Event Registration')) ->setDescription('The event registration configuration.') ->setDisplayConfigurable('form', TRUE) ->setDisplayConfigurable('view', TRUE) ->setRevisionable(TRUE) ->setTranslatable(FALSE) ->setCardinality(1) ->setRequired(FALSE) ->setDisplayOptions('form', [ 'type' => 'event_registration', 'weight' => 4, ]); \Drupal::entityDefinitionUpdateManager() ->installFieldStorageDefinition('event_registration', 'eventseries', 'eventseries', $storage_definition); // When enabling registrations make sure we create all the registrant types // to match the existing series and instance types. foreach (\Drupal::entityTypeManager()->getStorage('eventseries_type')->loadMultiple() as $type) { $registrant_type = \Drupal::entityTypeManager()->getStorage('registrant_type')->load($type->id()); if (empty($registrant_type)) { $registrant_type = \Drupal::entityTypeManager()->getStorage('registrant_type')->create([ 'id' => $type->id(), 'label' => $type->label(), 'description' => $type->getDescription(), ]); $registrant_type->save(); } } } /** * Add the computed title field to registrants. */ function recurring_events_registration_update_8001() { $storage_definition = BaseFieldDefinition::create('string') ->setLabel(t('Title')) ->setReadOnly(TRUE) ->setComputed(TRUE) ->setClass(ComputedRegistrantTitleFieldItemList::class); \Drupal::entityDefinitionUpdateManager() ->installFieldStorageDefinition('title', 'registrant', 'registrant', $storage_definition); // Configure the registrants title field. \Drupal::configFactory()->getEditable('recurring_events_registration.registrant.config') ->set('title', '[registrant:email]') ->save(TRUE); } /** * Install the new type basefields for registrant. */ function recurring_events_registration_update_8002() { $registrant_type = BaseFieldDefinition::create('entity_reference') ->setLabel(t('Bundle')) ->setDescription(t('The registrant type.')) ->setSetting('target_type', 'registrant_type') ->setReadOnly(TRUE); \Drupal::entityDefinitionUpdateManager()->installFieldStorageDefinition('bundle', 'registrant', 'registrant', $registrant_type); }