Browse Source

Adjustment to cvtermpath loading

Stephen Ficklin 7 years ago
parent
commit
8368d0bcb2
1 changed files with 10 additions and 11 deletions
  1. 10 11
      tripal_chado/api/modules/tripal_chado.cv.api.inc

+ 10 - 11
tripal_chado/api/modules/tripal_chado.cv.api.inc

@@ -429,7 +429,9 @@ function tripal_update_cvtermpath_root_loop($rootid, $cvid){
   $result = $ttype->execute()->fetchObject();
 
   // Descends through the branch starting at this "root" term.
-  tripal_update_cvtermpath_loop($rootid, $rootid, $rootid, $cvid, $result->cvterm_id, 0, array());
+  $visited = array();
+  $depth = 0;
+  tripal_update_cvtermpath_loop($rootid, $rootid, $rootid, $cvid, $result->cvterm_id, $depth, $visited);
 
   // Get's the children terms of this "root" term and then recursively calls
   // this function making each child root.
@@ -458,13 +460,10 @@ function tripal_update_cvtermpath_root_loop($rootid, $cvid){
  *   The relationship type between the origin term and the child.
  * @param $depth
  *   The depth of the recursion.
- * @param $tree_path.
- *   The array of every term between the current child and the origin. The
- *   string identifier for the child that combines the origin, parent cvterm_id,
- *   child cvterm_id,cv_id, and the type_id.
- * @return multitype:
+ * @param $visited.
+ *   An array of every term visited in the descent of the ontology tree.
  */
-function tripal_update_cvtermpath_loop($origin, $parent_id, $child_id, $cv_id, $type_id, $depth, $tree_path){
+function tripal_update_cvtermpath_loop($origin, $parent_id, $child_id, $cv_id, $type_id, $depth, &$visited){
 
   // Check to see if a row with these values already exists.
   $count =  db_query(
@@ -491,9 +490,8 @@ function tripal_update_cvtermpath_loop($origin, $parent_id, $child_id, $cv_id, $
   }
 
   // If the child_id matches any other id in the array then we've hit a loop.
-  foreach ($tree_path as $element_id) {
+  foreach ($visited as $element_id) {
     if ($element_id == $term_id) {
-
       return;
     }
   }
@@ -510,7 +508,7 @@ function tripal_update_cvtermpath_loop($origin, $parent_id, $child_id, $cv_id, $
   $rows = $query->execute();
 
   // Then add that new entry to the $tree_path.
-  $tree_path[] =  $term_id;
+  $visited[] =  $term_id;
 
   // Get all of the relationships of this child term, and recursively
   // call the tripal_update_cvtermpath_loop() function to continue
@@ -521,8 +519,9 @@ function tripal_update_cvtermpath_loop($origin, $parent_id, $child_id, $cv_id, $
     ->execute();
   $cterm_relationships = $query->fetchAll();
   foreach ($cterm_relationships as $item) {
+    $next_depth = $depth + 1;
     tripal_update_cvtermpath_loop($origin, $child_id, $item->subject_id, $cv_id,
-        $item->type_id, $depth + 1, $tree_path);
+        $item->type_id, $next_depth, $visited);
   }
 }