Browse Source

Added preprocess for stock relationships

spficklin 12 years ago
parent
commit
45c2fa95bd
1 changed files with 89 additions and 0 deletions
  1. 89 0
      tripal_stock/tripal_stock.module

+ 89 - 0
tripal_stock/tripal_stock.module

@@ -904,3 +904,92 @@ function tripal_stock_block($op = 'list', $delta = 0, $edit=array()) {
       }
   }
 }
+
+/**
+ *
+ *
+ * @ingroup tripal_stock
+ */
+function tripal_stock_preprocess_tripal_stock_relationships(&$variables) {
+  // we want to provide a new variable that contains the matched stocks.
+  $stock = $variables['node']->stock;
+   
+  // expand the stock object to include the stock relationships.
+  $stock = tripal_core_expand_chado_vars($stock,
+     'table', 'stock_relationship', array('order_by'=> array('rank' => 'ASC')));
+
+  // get the subject relationships
+  $srelationships = $stock->stock_relationship->subject_id;
+  if (!$srelationships) {
+     $srelationships = array();
+  } 
+  elseif (!is_array($srelationships)) { 
+     $srelationships = array($srelationships); 
+  }
+  
+  // get the object relationships
+  $orelationships = $stock->stock_relationship->object_id;
+  if (!$orelationships) {
+     $orelationships = array();
+  } 
+  elseif (!is_array($orelationships)) { 
+     $orelationships = array($orelationships); 
+  }
+  
+  // combine both object and subject relationshisp into a single array
+  $relationships = array();
+  $relationships['object'] = array();
+  $relationships['subject'] = array();
+  
+  // iterate through the object relationships
+// iterate through the object relationships
+  foreach ($orelationships as $relationship) {
+     $rel = new stdClass();      
+     $rel->record = $relationship;    
+     
+     // get the relationship and child types
+     $rel_type = t(preg_replace('/_/'," ",$relationship->type_id->name));
+     $child_type = $relationship->subject_id->type_id->name;
+     
+     // get the node id of the subject
+     $sql = "SELECT nid FROM chado_stock WHERE stock_id = %d";
+     $n = db_fetch_object(db_query($sql,$relationship->subject_id->stock_id));
+     if($n){
+        $rel->record->nid = $n->nid;
+     }
+
+     if (!array_key_exists($rel_type, $relationships['object'])) {
+       $relationships['object'][$rel_type] = array();   
+     }
+     if (!array_key_exists($child_type, $relationships['object'][$rel_type])) {
+       $relationships['object'][$rel_type][$child_type] = array();   
+     }
+     $relationships['object'][$rel_type][$child_type][] = $rel;     
+  }
+  
+  // now add in the subject relationships
+  foreach ($srelationships as $relationship) {
+     $rel = new stdClass(); 
+     
+     $rel->record = $relationship;
+     $rel_type = t(preg_replace('/_/'," ",$relationship->type_id->name));
+     $parent_type = $relationship->object_id->type_id->name;
+     
+     // get the node id of the subject
+     $sql = "SELECT nid FROM chado_stock WHERE stock_id = %d";
+     $n = db_fetch_object(db_query($sql,$relationship->object_id->stock_id));
+     if($n){
+        $rel->record->nid = $n->nid;
+     }
+     
+     if (!array_key_exists($rel_type, $relationships['subject'])) {
+       $relationships['subject'][$rel_type] = array();   
+     }
+     if (!array_key_exists($child_type, $relationships['subject'][$rel_type])) {
+       $relationships['subject'][$rel_type][$parent_type] = array();   
+     }
+     $relationships['subject'][$rel_type][$parent_type][] = $rel;
+  }
+  $stock->all_relationships = $relationships;
+
+}