Prechádzať zdrojové kódy

Fixed bug that prevented features from being deleted

Stephen Ficklin 11 rokov pred
rodič
commit
913de0f351

+ 9 - 11
tripal_cv/includes/tripal_cv.cvterm_form.inc

@@ -330,17 +330,15 @@ function tripal_cv_cvterm_add_form_validate($form, &$form_state) {
  */
 function tripal_cv_cvterm_edit_form_submit($form, &$form_state) {
 
-  $cv_id = array_key_exists('cv_id', $form_state['values']) ? $form_state['values']['cv_id'] : '';
-  $name = array_key_exists('name', $form_state['values']) ? $form_state['values']['name'] : '';
-  $definition = array_key_exists('definition', $form_state['values']) ? $form_state['values']['definition'] : '';
-  $is_relationship = array_key_exists('is_relationship', $form_state['values']) ? $form_state['values']['is_relationship'] : '';
-  $is_obsolete = array_key_exists('is_obsolete', $form_state['values']) ? $form_state['values']['is_obsolete'] : '';
-  $cvterm_id = array_key_exists('cvterm_id', $form_state['values']) ? $form_state['values']['cvterm_id'] : '';
-
-  $db_id = array_key_exists('db_id', $form_state['values']) ? $form_state['values']['db_id'] : '';
-  $accession = array_key_exists('accession', $form_state['values']) ? $form_state['values']['accession'] : '';
-
-  $op    = array_key_exists('op', $form_state['values'])         ? trim($form_state['values']['op']) : '';
+  $cv_id           = array_key_exists('cv_id', $form_state['values'])           ? trim($form_state['values']['cv_id']) : '';
+  $name            = array_key_exists('name', $form_state['values'])            ? trim($form_state['values']['name']) : '';
+  $definition      = array_key_exists('definition', $form_state['values'])      ? trim($form_state['values']['definition']) : '';
+  $is_relationship = array_key_exists('is_relationship', $form_state['values']) ? trim($form_state['values']['is_relationship']) : '';
+  $is_obsolete     = array_key_exists('is_obsolete', $form_state['values'])     ? trim($form_state['values']['is_obsolete']) : '';
+  $cvterm_id       = array_key_exists('cvterm_id', $form_state['values'])       ? trim($form_state['values']['cvterm_id']) : '';
+  $db_id           = array_key_exists('db_id', $form_state['values'])           ? trim($form_state['values']['db_id']) : '';
+  $accession       = array_key_exists('accession', $form_state['values'])       ? trim($form_state['values']['accession']) : '';
+  $op              = array_key_exists('op', $form_state['values'])              ? trim($form_state['values']['op']) : '';
 
 
   $step = $form_state['storage']['step'];

+ 16 - 4
tripal_feature/includes/tripal_feature.chado_node.inc

@@ -595,12 +595,24 @@ function chado_feature_delete($node) {
 
   // Remove data from feature tables of chado database.  This will
   // cause a cascade delete and remove all data in referencing tables
-  // for this feature
+  // 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 from") .
-  "chado");
-
+  drupal_set_message(t("The feature and all associated data were removed"));
 }
 
 /**