function user_update_8002

Replace serial role IDs with machine name strings.

Related topics

File

drupal/core/modules/user/user.install, line 436
Install, update and uninstall functions for the user module.

Code

function user_update_8002() {

  // Change serial rid columns into strings.
  $column = array(
    'type' => 'varchar',
    'length' => 64,
    'not null' => TRUE,
    'description' => 'Primary Key: Unique role ID.',
  );
  db_change_field('role', 'rid', 'rid', $column);
  $column['description'] = 'Foreign Key: {role}.rid.';
  db_change_field('role_permission', 'rid', 'rid', $column);
  $column['description'] = 'Primary Key: {role}.rid for role.';
  db_change_field('users_roles', 'rid', 'rid', $column);

  // Enlarge the role name (label) column.
  $column = array(
    'type' => 'varchar',
    'length' => 255,
    'not null' => TRUE,
    'default' => '',
    'description' => 'Role label.',
    'translatable' => TRUE,
  );
  db_change_field('role', 'name', 'name', $column);

  // Remove unique index.
  db_drop_unique_key('role', 'name');

  // Rename the built-in serial role IDs into the hardcoded machine names.
  db_update('role')
    ->fields(array(
    'rid' => DRUPAL_ANONYMOUS_RID,
  ))
    ->condition('rid', 1)
    ->execute();
  db_update('role')
    ->fields(array(
    'rid' => DRUPAL_AUTHENTICATED_RID,
  ))
    ->condition('rid', 2)
    ->execute();
  db_update('role_permission')
    ->fields(array(
    'rid' => DRUPAL_ANONYMOUS_RID,
  ))
    ->condition('rid', 1)
    ->execute();
  db_update('role_permission')
    ->fields(array(
    'rid' => DRUPAL_AUTHENTICATED_RID,
  ))
    ->condition('rid', 2)
    ->execute();
  db_update('users_roles')
    ->fields(array(
    'rid' => DRUPAL_ANONYMOUS_RID,
  ))
    ->condition('rid', 1)
    ->execute();
  db_update('users_roles')
    ->fields(array(
    'rid' => DRUPAL_AUTHENTICATED_RID,
  ))
    ->condition('rid', 2)
    ->execute();
}