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