function chado_feature_delete

2.x tripal_feature.chado_node.inc chado_feature_delete($node)
3.x tripal_feature.chado_node.inc chado_feature_delete($node)
1.x tripal_feature.module chado_feature_delete($node)

Implements hook_delete().

Related topics

File

tripal_feature/includes/tripal_feature.chado_node.inc, line 597
Implementation of hooks to create a feature content type

Code

function chado_feature_delete($node) {

  $feature_id = chado_get_id_from_nid('feature', $node->nid);

  // If we don't have a feature id for this node then this isn't a node of
  // type chado_library or the entry in the chado_library table was lost.
  if (!$feature_id) {
    return;
  }

  // Remove the drupal content.
  $sql_del = "DELETE FROM {chado_feature} WHERE nid = :nid AND vid = :vid";
  db_query($sql_del, array(':nid' => $node->nid, ':vid' => $node->vid));
  $sql_del = "DELETE FROM {node} WHERE nid = :nid AND vid = :vid";
  db_query($sql_del, array(':nid' => $node->nid, ':vid' => $node->vid));
  $sql_del = "DELETE FROM {node_revision} WHERE nid = :nid AND vid = :vid";
  db_query($sql_del, array(':nid' => $node->nid, ':vid' => $node->vid));


  // Remove data from feature tables of chado database.  This will
  // cause a cascade delete and remove all data in referencing tables
  // for this feature. However, we need t specifically delete from the
  // featureloc table because the box() PLSQL function calls another
  // function that does not reference the 'chado' schema and causes an error
  // the chado_query function can handle this problem so we specificall delete
  // from that table to prevent the error. The same problem exists for the
  // frange.featuregroup table
  $previous_db = chado_set_active('chado');
  db_query("DELETE FROM frange.featuregroup WHERE subject_id = :feature_id", array(':feature_id' => $feature_id));
  db_query("DELETE FROM frange.featuregroup WHERE object_id = :feature_id", array(':feature_id' => $feature_id));
  db_query("DELETE FROM frange.featuregroup WHERE group_id = :feature_id", array(':feature_id' => $feature_id));
  db_query("DELETE FROM frange.featuregroup WHERE srcfeature_id = :feature_id", array(':feature_id' => $feature_id));
  chado_set_active($previous_db);

  chado_query("DELETE FROM {featureloc} WHERE feature_id = :feature_id", array(':feature_id' => $feature_id));
  chado_query("DELETE FROM {featureloc} WHERE srcfeature_id = :feature_id", array(':feature_id' => $feature_id));
  chado_query("DELETE FROM {feature} WHERE feature_id = :feature_id", array(':feature_id' => $feature_id));

  drupal_set_message(t("The feature and all associated data were removed"));
}