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"));
}