function tripal_organism_update_7200

2.x tripal_organism.install tripal_organism_update_7200()

This is the required update for tripal_organism when upgrading from Drupal core API 6.x.

File

tripal_organism/tripal_organism.install, line 134
Functions pertaining to the install/uninstall of this module

Code

function tripal_organism_update_7200() {

  // Make sure we have the full API loaded this will help during a
  // site upgrade when the tripal_core module is disabled.
  module_load_include('module', 'tripal_core', 'tripal_core');
  tripal_core_import_api();
  module_load_include('inc', 'tripal_cv', 'api/tripal_cv.api');

  // Add the new organism_property vocabulary
  // We cannot use the Tripal API calls in the 7000 update
  // because during upgrade the tripal_core should also be disabled
  try {
    tripal_insert_cv(
    'organism_property', 
    'Contains properties for organisms'
    );
    tripal_set_default_cv('organismprop', 'type_id', 'organism_property');
  }
  catch (\PDOException $e) {
    $error = $e->getMessage();
    throw new DrupalUpdateException('Failed to add organism_property vocabulary: ' . $error);
  }


  // During the upgrade from D6 to D7 the vocabulary terms assigned to organisms were
  // copied to the field_data_taxonomyextra table rather than to the correct
  // field_data_taxonomy_vocabulary_[vid] table. We'll move them.
  $vid = db_query("SELECT vid FROM {taxonomy_vocabulary} WHERE name = 'Organism'")->fetchField();
  if ($vid) {
    try {
      if (db_table_exists('field_data_taxonomyextra')) {
        // first move from the field_data_taxonomyextra table
        $sql = "
          INSERT INTO {field_data_taxonomy_vocabulary_$vid}
            (entity_type, bundle, deleted, entity_id, revision_id, language, delta, taxonomy_vocabulary_" . $vid . "_tid)
          (SELECT entity_type, bundle, deleted, entity_id, revision_id, language, delta, taxonomyextra_tid
           FROM field_data_taxonomyextra
           WHERE bundle = 'chado_feature')
        ";
        db_query($sql);
        $sql = "DELETE FROM field_data_taxonomyextra WHERE bundle = 'chado_organism'";
        db_query($sql);

        // next move from the field_revision_taxonomyextra table
        $sql = "
          INSERT INTO {field_revision_taxonomy_vocabulary_$vid}
            (entity_type, bundle, deleted, entity_id, revision_id, language, delta, taxonomy_vocabulary_" . $vid . "_tid)
          (SELECT entity_type, bundle, deleted, entity_id, revision_id, language, delta, taxonomyextra_tid
           FROM field_revision_taxonomyextra
           WHERE bundle = 'chado_feature')
        ";
        db_query($sql);
        $sql = "DELETE FROM field_revision_taxonomyextra WHERE bundle = 'chado_organism'";
        db_query($sql);
      }
    }
    catch (\PDOException $e) {
      $error = $e->getMessage();
      throw new DrupalUpdateException('Could not move organism taxonomy terms: ' . $error);
    }
  }
}