function field_ui_update_8001

Upgrade Field UI permissions.

File

drupal/core/modules/field_ui/field_ui.install, line 11
Install, update, and uninstall functions for the Field UI module.

Code

function field_ui_update_8001() {
  $permissions = array(
    'administer comments' => array(
      'administer comment fields',
      'administer comment display',
    ),
    'administer content types' => array(
      'administer node fields',
      'administer node display',
    ),
    'administer users' => array(
      'administer user fields',
      'administer user display',
    ),
    'administer taxonomy' => array(
      'administer taxonomy_term fields',
      'administer taxonomy_term display',
    ),
  );

  // We can not call user_permission_get_modules() as that will start
  // invoking hooks which we can't during update hooks. Directly query
  // for the permissions and insert them into the database.
  foreach ($permissions as $old_permission => $new_permissions) {
    $results = db_query("SELECT rid FROM {role_permission} WHERE permission = :permission", array(
      ':permission' => $old_permission,
    ));
    foreach ($results as $record) {
      $query = db_insert('role_permission')
        ->fields(array(
        'rid',
        'permission',
        'module',
      ));
      foreach ($new_permissions as $new_permission) {
        $query
          ->values(array(
          $record->rid,
          $new_permission,
          'field_ui',
        ));
      }
      $query
        ->execute();
    }
  }
}