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,
];
}
