Browse Source

Handle relationships when the entity is first being created.

Lacey Sanderson 6 years ago
parent
commit
47f66b0fb1

+ 21 - 3
tripal_chado/includes/TripalFields/sbo__relationship/sbo__relationship_widget.inc

@@ -452,7 +452,26 @@ class sbo__relationship_widget extends ChadoFieldWidget {
           $form_state['values'][$field_name][$langcode][$delta]['chado-' . $field_table . '__rank'] = $form_state['values'][$field_name][$langcode][$delta]['_weight'];
         }
       }
-      // Otherwise, leave them blank?
+      // Otherwise, maybe we are creating the entity...
+      // The storage API sohuld handle this case and automagically add the key in once
+      // the chado record is created... so all we need to do is set the other columns.
+      elseif ($subject_name && $object_id && $type_id) {
+        $form_state['values'][$field_name][$langcode][$delta]['value'] = 'value must be set but is not used';
+        $form_state['values'][$field_name][$langcode][$delta]['chado-' . $field_table . '__' . $object_id_key] = $object_id;
+        $form_state['values'][$field_name][$langcode][$delta]['chado-' . $field_table . '__type_id'] = $type_id;
+        if (array_key_exists('rank', $this->schema['fields'])) {
+          $form_state['values'][$field_name][$langcode][$delta]['chado-' . $field_table . '__rank'] = $form_state['values'][$field_name][$langcode][$delta]['_weight'];
+        }
+      }
+      elseif ($subject_id && $object_name && $type_id) {
+        $form_state['values'][$field_name][$langcode][$delta]['value'] = 'value must be set but is not used';
+        $form_state['values'][$field_name][$langcode][$delta]['chado-' . $field_table . '__' . $subject_id_key] = $subject_id;
+        $form_state['values'][$field_name][$langcode][$delta]['chado-' . $field_table . '__type_id'] = $type_id;
+        if (array_key_exists('rank', $this->schema['fields'])) {
+          $form_state['values'][$field_name][$langcode][$delta]['chado-' . $field_table . '__rank'] = $form_state['values'][$field_name][$langcode][$delta]['_weight'];
+        }
+      }
+      // Otherwise, we don't have a vallue to insert so leave them blank.
       else {
         $form_state['values'][$field_name][$langcode][$delta]['chado-' . $field_table . '__' . $subject_id_key] = '';
         $form_state['values'][$field_name][$langcode][$delta]['chado-' . $field_table . '__' . $object_id_key] = '';
@@ -463,8 +482,7 @@ class sbo__relationship_widget extends ChadoFieldWidget {
         }
       }
     }
-    // @debug
-    dpm($form_state['values'][$field_name][$langcode][$delta], "form state values: $delta");
+    // @debug dpm($form_state['values'][$field_name][$langcode][$delta], "form state values: $delta");
   }
 
   /**