|  | @@ -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;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +}
 |