function chado_organism_delete

2.x tripal_organism.chado_node.inc chado_organism_delete($node)
3.x tripal_organism.chado_node.inc chado_organism_delete($node)
1.x tripal_organism.module chado_organism_delete($node)

Delete organism from both drupal and chado databases. Check dependency before deleting from chado.

Related topics

File

tripal_organism/tripal_organism.module, line 373
tripal_organism Organism Module

Code

function chado_organism_delete($node) {
  $organism_id = chado_get_id_for_node('organism', $node);

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

  // Remove data from the {chado_organism}, {node}, and {node_revisions} tables
  $sql_del = "DELETE FROM {chado_organism} " .
    "WHERE nid = %d " .
    "AND vid = %d";
  db_query($sql_del, $node->nid, $node->vid);
  $sql_del = "DELETE FROM {node} " .
    "WHERE nid = %d " .
    "AND vid = %d";
  db_query($sql_del, $node->nid, $node->vid);
  $sql_del = "DELETE FROM {node_revisions} " .
    "WHERE nid = %d " .
    "AND vid = %d";
  db_query($sql_del, $node->nid, $node->vid);

  // Test dependency before deleting from chado database. If a library or
  // feature depends on this organism, don't delete it

  $sql = "SELECT feature_id FROM {feature} WHERE organism_id = %d";
  $check_feature = db_result(chado_query($sql, $organism_id));
  $sql = "SELECT library_id FROM {library} WHERE organism_id = %d";
  $check_lib = db_result(chado_query($sql, $organism_id));

  if ($check_lib == 0 && $check_feature == 0) {
    tripal_core_chado_delete('organism', array('organism_id' => $organism_id));
  }
  else {
    drupal_set_message(t("Organism deleted from drupal. Warning: at least one " .
      "library or feature depends on this organism. It was " .
      "not removed from chado."));
  }
}