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.');
}

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

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