function node_update_7012

7.x node.install node_update_7012()

Switches body fields to untranslatable while upgrading from D6 and makes them language neutral.

Related topics

File

drupal-7.x/modules/node/node.install, line 885
Install, update and uninstall functions for the node module.

Code

function node_update_7012() {
  // If we are upgrading from D6, then body fields should be set back to
  // untranslatable, as D6 did not know about the idea of translating fields,
  // but only nodes. If a D7 > D7 update is running we need to skip this update,
  // as it is a valid use case to have translatable body fields in this context.
  if (variable_get('update_d6', FALSE)) {
    // Make node bodies untranslatable: field_update_field() cannot be used
    // throughout the upgrade process and we do not have an update counterpart
    // for _update_7000_field_create_field(). Hence we are forced to update the
    // 'field_config' table directly. This is a safe operation since it is
    // being performed while upgrading from D6. Perfoming the same operation
    // during a D7 update is highly discouraged.
    db_update('field_config')
      ->fields(array('translatable' => 0))
      ->condition('field_name', 'body')
      ->execute();

    // Switch field languages to LANGUAGE_NONE, since initially they were
    // assigned the node language.
    foreach (array('field_data_body', 'field_revision_body') as $table) {
      db_update($table)
        ->fields(array('language' => LANGUAGE_NONE))
        ->execute();
    }

    node_type_cache_reset();
  }
}