|  | @@ -63,13 +63,13 @@ function tripal_core_exclude_field_from_feature_by_default() {
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  | - * Generates an array containing the full details of a record(s) in chado. The 
 | 
	
		
			
				|  |  | + * Generates an array containing the full details of a record(s) in chado. The
 | 
	
		
			
				|  |  |   * returned array differs from the array returned by chado_select_record as all foreign key
 | 
	
		
			
				|  |  |   * relationships have been followed and those data are also included. The array
 | 
	
		
			
				|  |  |   * returned by this function can be used with chado_expand_var function to add
 | 
	
		
			
				|  |  |   * additional FK relationships that were not included because they were not
 | 
	
		
			
				|  |  |   * a one-to-one mapping or for fields that were excluded such as large text fields.
 | 
	
		
			
				|  |  | - *  
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  |   * @param $table
 | 
	
		
			
				|  |  |   *   The name of the base table to generate a variable for
 | 
	
	
		
			
				|  | @@ -695,7 +695,7 @@ function chado_expand_var($object, $type, $to_expand, $table_options = array())
 | 
	
		
			
				|  |  |      case "table": //--------------------------------------------------------------------------------
 | 
	
		
			
				|  |  |        $foreign_table = $to_expand;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      // RECURSIVE BASE CASE: don't expand the table it already is expanded
 | 
	
		
			
				|  |  | +      // BASE CASE: don't expand the table it already is expanded
 | 
	
		
			
				|  |  |        if (array_key_exists($foreign_table, $object)) {
 | 
	
		
			
				|  |  |          return $object;
 | 
	
		
			
				|  |  |        }
 | 
	
	
		
			
				|  | @@ -762,7 +762,18 @@ function chado_expand_var($object, $type, $to_expand, $table_options = array())
 | 
	
		
			
				|  |  |          $did_expansion = 0;
 | 
	
		
			
				|  |  |          foreach ((array) $object as $field_name => $field_value) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -          // if we have a nested object ->expand the table in it
 | 
	
		
			
				|  |  | +          // CASE #1: This field is an already expanded foreign key and the table to be
 | 
	
		
			
				|  |  | +          // expanded is in the table referenced by the foreign key
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          // First of all it can only be expanded if it's an object
 | 
	
		
			
				|  |  | +          // And if it's a foreign key it should have a tablename property
 | 
	
		
			
				|  |  | +          if (is_object($field_value) AND property_exists($field_value, 'tablename')) {
 | 
	
		
			
				|  |  | +            $object->{$field_name} = chado_expand_var($field_value, 'table', $foreign_table);
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          // CASE #2: This field is an already expanded object (ie: the field is actually
 | 
	
		
			
				|  |  | +          // the expanded table name) and the table to be expanded si related to it
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |            // check to see if the $field_name is a valid chado table, we don't need
 | 
	
		
			
				|  |  |            // to call chado_expand_var on fields that aren't tables
 | 
	
		
			
				|  |  |            $check = chado_get_schema($field_name);
 |