You are here

function user_update_7010 in Drupal 7

Update the {user}.signature_format column.

Related topics

File

modules/user/user.install, line 654
Install, update and uninstall functions for the user module.

Code

function user_update_7010() {

  // Update the database column to allow NULL values.
  db_change_field('users', 'signature_format', 'signature_format', array(
    'type' => 'int',
    'unsigned' => TRUE,
    'not null' => FALSE,
    'description' => 'The {filter_format}.format of the signature.',
  ));

  // Replace the signature format with NULL if the signature is empty and does
  // not already have a stored text format.
  //
  // In Drupal 6, "0" (the former FILTER_FORMAT_DEFAULT constant) could be used
  // to indicate this situation, but in Drupal 7, only NULL is supported. This
  // update therefore preserves the ability of user accounts which were never
  // given a signature (for example, if the site did not have user signatures
  // enabled, or if the user never edited their account information) to not
  // have a particular text format assumed for them the first time the
  // signature is edited.
  db_update('users')
    ->fields(array(
    'signature_format' => NULL,
  ))
    ->condition('signature', '')
    ->condition('signature_format', 0)
    ->execute();

  // There are a number of situations in which a Drupal 6 site could store
  // content with a nonexistent text format. This includes text formats that
  // had later been deleted, or non-empty content stored with a value of "0"
  // (the former FILTER_FORMAT_DEFAULT constant). Drupal 6 would filter this
  // content using whatever the site-wide default text format was at the moment
  // the text was being displayed.
  //
  // In Drupal 7, this behavior is no longer supported, and all content must be
  // stored with an explicit text format (or it will not be displayed when it
  // is filtered). Therefore, to preserve the behavior of the site after the
  // upgrade, we must replace all instances described above with the current
  // value of the (old) site-wide default format at the moment of the upgrade.
  $existing_formats = db_query("SELECT format FROM {filter_format}")
    ->fetchCol();
  $default_format = variable_get('filter_default_format', 1);
  db_update('users')
    ->fields(array(
    'signature_format' => $default_format,
  ))
    ->isNotNull('signature_format')
    ->condition('signature_format', $existing_formats, 'NOT IN')
    ->execute();
}