瀏覽代碼

Tripal: Fixed stock sync'ing and deleting

laceysanderson 13 年之前
父節點
當前提交
efb89f21c9
共有 2 個文件被更改,包括 32 次插入13 次删除
  1. 9 5
      tripal_stock/tripal_stock-administration.inc
  2. 23 8
      tripal_stock/tripal_stock.module

+ 9 - 5
tripal_stock/tripal_stock-administration.inc

@@ -322,7 +322,7 @@ function tripal_stock_admin_validate($form, &$form_state) {
       // $r is the current stock to be sync'd
       $stocks_attempted++;
 
-      print 'Processing '.$r->uniquename."\n";
+      print 'Processing '.$r->uniquename."... ";
 
       // check not already in drupal
       $in_drupal_query = db_query(
@@ -339,6 +339,8 @@ function tripal_stock_admin_validate($form, &$form_state) {
 	 			$new_node->type_id = $r->type_id;
 	 			$new_node->organism_id = $r->organism_id;
 	 			$new_node->stock_id = $r->stock_id;
+        $new_node->chado_stock_exists = TRUE;
+        
 	 			//print 'New Node:';
 	 			//print_r($new_node);
 	 			
@@ -352,20 +354,22 @@ function tripal_stock_admin_validate($form, &$form_state) {
           	$stocks_created_count++;
 	 
 						//Add stock id to chado_stock table
+						/**
 	 					db_query(
-	   	  			"UPDATE {chado_stock} SET stock_id=%d WHERE nid=%d AND vid=%d",
+	   	  			"INSERT INTO chado_stock (stock_id, nid, vid) VALUES (%d, %d, %d)",
 	   	  			$r->stock_id,
 	   	  			$node->nid,
 	   	  			$node->vid
 	 					);
+	 					*/
           }
         } else {
-        	print "\tCreate Stock Form Errors: ";
+        	print "Not completed due to errors:\nCreate Stock Form Errors: ";
 	 				print_r(form_get_errors());
         }
-	 			print "\n\tNid=".$node->nid."\n";
+	 			print "Nid=".$node->nid."\n";
 			} else {
-				print "\tSkipped $r->uniquename because it's already in drupal.\n";
+				print "Skipped $r->uniquename because it's already in drupal.\n";
       } //end of if not already in drupal
     } //end of while still stocks to be sync'd
   } //end of if organism_id not supplied

+ 23 - 8
tripal_stock/tripal_stock.module

@@ -638,7 +638,22 @@ function chado_stock_validate($node, &$form) {
  * @ingroup tripal_stock
  */
 function chado_stock_insert($node) {
-
+  
+  //If the chado stock exists
+  // then don't create but simply link to node
+  if ($node->chado_stock_exists) {
+  	if (!empty($node->stock_id)) {
+  		db_query(
+    		"INSERT INTO {chado_stock} (nid, vid, stock_id) "
+    		."VALUES (%d, %d, %d)",
+    		$node->nid,
+    		$node->vid,
+    		$node->stock_id
+  		);
+  	}
+    return $node;
+  }
+  
 	// create dbxref
   if ( !empty($node->accession) ) {
     if ( !empty($node->database) ) { 
@@ -857,19 +872,19 @@ function chado_stock_update($node) {
  */
 function chado_stock_delete($node) {
 
-  //remove drupal node and all revisions
-  db_query(
-    "DELETE FROM {chado_stock} WHERE nid=%d",
-    $node->nid
-  );
-  
   // Set stock in chado: is_obsolete = TRUE
   $previous_db = tripal_db_set_active('chado');
   db_query(
     "DELETE FROM stock WHERE stock_id=%d",
-    $node->stock_id
+    $node->stock->stock_id
   );
   tripal_db_set_active($previous_db);
+  
+  //remove drupal node and all revisions
+  db_query(
+    "DELETE FROM {chado_stock} WHERE nid=%d",
+    $node->nid
+  );
 }
 
 /**