social_event_invite_flow-1.0.0-beta3/social_event_invite_flow.install

social_event_invite_flow.install
<?php

use Drupal\Core\Field\BaseFieldDefinition;

function social_event_invite_flow_install($is_syncing) {
  // flush all caches
  drupal_flush_all_caches();  
}

/**
 * Adds new node.field_hide_enroll_button and updates view.event_manage_enrollment_invites
 */
function social_event_invite_flow_update_9001() {

  $configs_to_install = [
    'views.view.event_manage_enrollment_invites'
  ];

  foreach ($configs_to_install as $config_to_install) {
    _social_event_invite_flow_update_or_install_config($config_to_install, '9001', 'social_event_invite_flow');
  }

}

/**
 * Adds a new entity for logging invites.
 */
function social_event_invite_flow_update_9002() {

  // Install newly created entity.
  if (!\Drupal::database()->schema()->tableExists('event_invite_flow_log')) {
    \Drupal::entityTypeManager()->clearCachedDefinitions();
    \Drupal::entityDefinitionUpdateManager()
      ->installEntityType(\Drupal::entityTypeManager()->getDefinition('event_invite_flow_log'));
  }
  else {
    return 'Event Invite Flow entity already exists';
  }

}

/**
 * Adds a new base field for event invite flow log entity.
 */
function social_event_invite_flow_update_9003() {

  $field_storage_definition = BaseFieldDefinition::create('string')
  ->setLabel(t('Invite flow type'))
  ->setDescription(t('The used invite flow.'));   

  \Drupal::entityDefinitionUpdateManager()
    ->installFieldStorageDefinition('invite_flow', 'event_invite_flow_log', 'social_event_invite_flow', $field_storage_definition);

}

/**
 * Adds new base fields 'invitee_email' for event invite flow log entity.
 */
function social_event_invite_flow_update_9004() {

  $field_storage_definition = BaseFieldDefinition::create('email')
    ->setLabel(t('Invitee email'))
    ->setDescription(t('The email of the envitee.'));   

  \Drupal::entityDefinitionUpdateManager()
    ->installFieldStorageDefinition('invitee_email', 'event_invite_flow_log', 'social_event_invite_flow', $field_storage_definition);


}

/**
 * Adds new base fields 'shareable_link' for event invite flow log entity.
 */
function social_event_invite_flow_update_9005() {

  $field_storage_definition = BaseFieldDefinition::create('boolean')
    ->setLabel(t('Shareable link'))
    ->setDescription(t('The link type sent to the user.'));
    
  \Drupal::entityDefinitionUpdateManager()
    ->installFieldStorageDefinition('shareable_link', 'event_invite_flow_log', 'social_event_invite_flow', $field_storage_definition);

}

/**
 * Adds new base fields 'has_invitation_sent', 'has_invitee_enrolled', 'has_invitee_joined' for event invite flow log entity.
 */
function social_event_invite_flow_update_9006() {

  $field_storage_definition = BaseFieldDefinition::create('boolean')
    ->setLabel(t('Invitation sent'))
    ->setDescription(t('Was the invitation sent to the user?'));
    
  \Drupal::entityDefinitionUpdateManager()
    ->installFieldStorageDefinition('has_invitation_sent', 'event_invite_flow_log', 'social_event_invite_flow', $field_storage_definition);

  $field_storage_definition = BaseFieldDefinition::create('boolean')
    ->setLabel(t('Invitee enrolled'))
    ->setDescription(t('Has the invitee enrolled?'));
    
  \Drupal::entityDefinitionUpdateManager()
    ->installFieldStorageDefinition('has_invitee_enrolled', 'event_invite_flow_log', 'social_event_invite_flow', $field_storage_definition);

  $field_storage_definition = BaseFieldDefinition::create('boolean')
    ->setLabel(t('Invitee joined'))
    ->setDescription(t('Has the invitee joined the event')); 
    
  \Drupal::entityDefinitionUpdateManager()
    ->installFieldStorageDefinition('has_invitee_joined', 'event_invite_flow_log', 'social_event_invite_flow', $field_storage_definition);

}

/**
 * Adds new view views.view.invite_flow_log.
 */
function social_event_invite_flow_update_9007() {

  $configs_to_install = [
    'views.view.invite_flow_log'
  ];

  foreach ($configs_to_install as $config_to_install) {
    _social_event_invite_flow_update_or_install_config($config_to_install, '9007', 'social_event_invite_flow');
  }

}


function _social_event_invite_flow_update_or_install_config( String $prefix, String $update_id, String $module) {
  $updated = [];
  $created = [];

  /** @var \Drupal\Core\Config\ConfigManagerInterface $config_manager */
  $config_manager = \Drupal::service('config.manager');
  $files = glob(drupal_get_path('module', $module) . '/config/update_' . $update_id. '/' . $prefix . '*.yml') ;
  foreach ($files as $file) {
    $raw = file_get_contents($file);
    $value = \Drupal\Component\Serialization\Yaml::decode($raw);
    if(!is_array($value)) {
      throw new \RuntimeException(sprintf('Invalid YAML file %s'), $file);
    }

    $type = $config_manager->getEntityTypeIdByName(basename($file));
    $entity_manager = $config_manager->getEntityTypeManager();
    $definition = $entity_manager->getDefinition($type);
    $id_key = $definition->getKey('id');
    $id = $value[$id_key];

    /** @var \Drupal\Core\Config\Entity\ConfigEntityStorage $entity_storage */
    $entity_storage = $entity_manager->getStorage($type);
    $entity = $entity_storage->load($id);
    if ($entity) {
      $entity = $entity_storage->updateFromStorageRecord($entity, $value);
      $entity->save();
      $updated[] = $id;
    }
    else {
      $entity = $entity_storage->createFromStorageRecord($value);
      $entity->save();
      $created[] = $id;
    }
  }

  return [
    'udpated' => $updated,
    'created' => $created,
  ];
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc