grant-1.x-dev/grant.install
grant.install
<?php
/**
* @file
* Install, update and uninstall functions for the Grant module.
*/
use Drupal\Core\Field\BaseFieldDefinition;
/**
* Implements hook_update_N().
*/
function grant_update_10001() {
$database = \Drupal::database();
$transaction = $database->startTransaction();
$definition_manager = \Drupal::entityDefinitionUpdateManager();
$values = $database->select('grant')->fields('grant', ['uuid', 'user', 'assignee'])->execute()->fetchAll();
$database->update('grant')->fields(['user' => NULL, 'assignee' => NULL])->execute();
$field_storage_definition = $definition_manager->getFieldStorageDefinition('user', 'grant');
$definition_manager->uninstallFieldStorageDefinition($field_storage_definition);
$field_storage_definition = $definition_manager->getFieldStorageDefinition('assignee', 'grant');
$definition_manager->uninstallFieldStorageDefinition($field_storage_definition);
$new_user_field = BaseFieldDefinition::create('string')->setLabel(t('User'))->setSetting('max_length', 128);
$new_assignee_field = BaseFieldDefinition::create('string')->setLabel(t('Assignee'))->setSetting('max_length', 128);
$definition_manager->installFieldStorageDefinition('user', 'grant', 'grant', $new_user_field);
$definition_manager->installFieldStorageDefinition('assignee', 'grant', 'grant', $new_assignee_field);
foreach ($values as $value) {
$database->update('grant')->fields(['user' => $value->user, 'assignee' => $value->assignee])
->condition('uuid', $value->uuid)->execute();
}
unset($transaction);
return t('All grants updated.');
}
/**
* Implements hook_update_N().
*/
function grant_update_10002() {
$database = \Drupal::database();
$transaction = $database->startTransaction();
$definition_manager = \Drupal::entityDefinitionUpdateManager();
$values = $database->select('grant')->fields('grant', ['uuid', 'role'])->execute()->fetchAll();
$database->update('grant')->fields(['role' => NULL])->execute();
$field_storage_definition = $definition_manager->getFieldStorageDefinition('role', 'grant');
$definition_manager->uninstallFieldStorageDefinition($field_storage_definition);
$new_field = BaseFieldDefinition::create('entity_reference')->setLabel(t('Grant role'))
->setRequired(TRUE)->setSetting('target_type', 'user_role')
->setDisplayOptions('form', ['type' => 'options_select', 'weight' => -5])
->setDisplayConfigurable('form', TRUE)->setDisplayConfigurable('view', TRUE);
$definition_manager->installFieldStorageDefinition('role', 'grant', 'grant', $new_field);
foreach ($values as $value) {
$database->update('grant')->fields(['role' => $value->role])->condition('uuid', $value->uuid)->execute();
}
unset($transaction);
return t('All grants updated.');
}
