|  | @@ -114,7 +114,7 @@ class sbo__relationship_widget extends ChadoFieldWidget {
 | 
	
		
			
				|  |  |        $subject_uniquename = $form_state['values'][$field_name]['und'][$delta]['subject_name'];
 | 
	
		
			
				|  |  |        $type = $form_state['values'][$field_name]['und'][$delta]['type_name'];
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -   $widget['#table_name'] = $chado_table;
 | 
	
		
			
				|  |  | +   $widget['#table_name'] = $field_table;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      $widget['#fkeys'] = $schema['foreign keys'];
 | 
	
		
			
				|  |  |      $widget['#base_table'] = $base_table;
 | 
	
	
		
			
				|  | @@ -160,7 +160,7 @@ class sbo__relationship_widget extends ChadoFieldWidget {
 | 
	
		
			
				|  |  |        '#title' => t('Subject'),
 | 
	
		
			
				|  |  |        '#default_value' => $subject_uniquename,
 | 
	
		
			
				|  |  |        '#required' => $element['#required'],
 | 
	
		
			
				|  |  | -      '#maxlength' => array_key_exists('length', $schema['fields'][$subject_id_key]) ? $schema['fields'][$subject_id_key]['length'] : 255,
 | 
	
		
			
				|  |  | +      '#maxlength' => array_key_exists($subject_id_key, $schema['fields']) && array_key_exists('length', $schema['fields'][$subject_id_key]) ? $schema['fields'][$subject_id_key]['length'] : 255,
 | 
	
		
			
				|  |  |        '#size' => 35,
 | 
	
		
			
				|  |  |        '#autocomplete_path' => "admin/tripal/storage/chado/auto_name/$base_table",
 | 
	
		
			
				|  |  |      );
 | 
	
	
		
			
				|  | @@ -321,7 +321,7 @@ class sbo__relationship_widget extends ChadoFieldWidget {
 | 
	
		
			
				|  |  |        '#title' => t('Object'),
 | 
	
		
			
				|  |  |        '#default_value' => $object_uniquename,
 | 
	
		
			
				|  |  |        '#required' => $element['#required'],
 | 
	
		
			
				|  |  | -      '#maxlength' => array_key_exists('length', $schema['fields'][$object_id_key]) ? $schema['fields'][$object_id_key]['length'] : 255,
 | 
	
		
			
				|  |  | +      '#maxlength' => array_key_exists($object_id_key, $schema['fields']) && array_key_exists('length', $schema['fields'][$object_id_key]) ? $schema['fields'][$object_id_key]['length'] : 255,
 | 
	
		
			
				|  |  |        '#size' => 35,
 | 
	
		
			
				|  |  |        '#autocomplete_path' => "admin/tripal/storage/chado/auto_name/$base_table",
 | 
	
		
			
				|  |  |      );
 | 
	
	
		
			
				|  | @@ -354,10 +354,10 @@ class sbo__relationship_widget extends ChadoFieldWidget {
 | 
	
		
			
				|  |  |        $object_id_key = 'object_project_id';
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    $type_name = array_key_exists('type_name', $item) ? $item['type_name'] : '';
 | 
	
		
			
				|  |  | -    $subject_id = $form_state['values'][$field_name][$langcode][$delta]['chado' . $field_table . '__' . $subject_id_key];
 | 
	
		
			
				|  |  | -    $object_id = $form_state['values'][$field_name][$langcode][$delta]['chado' . $field_table . '__' . $object_id_key];
 | 
	
		
			
				|  |  | -    $type_id = $form_state['values'][$field_name][$langcode][$delta]['chado' . $field_table . '__type_id'];
 | 
	
		
			
				|  |  | +    $type_name = array_key_exists('type_name', $form_state['values'][$field_name][$langcode][$delta]) ? $form_state['values'][$field_name][$langcode][$delta]['type_name'] : '';
 | 
	
		
			
				|  |  | +    $subject_id = $form_state['values'][$field_name][$langcode][$delta]['chado-' . $field_table . '__' . $subject_id_key];
 | 
	
		
			
				|  |  | +    $object_id = $form_state['values'][$field_name][$langcode][$delta]['chado-' . $field_table . '__' . $object_id_key];
 | 
	
		
			
				|  |  | +    $type_id = $form_state['values'][$field_name][$langcode][$delta]['chado-' . $field_table . '__type_id'];
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      $subject_name = $form_state['values'][$field_name][$langcode][$delta]['subject_name'];
 | 
	
		
			
				|  |  |      $object_name = $form_state['values'][$field_name][$langcode][$delta]['object_name'];
 | 
	
	
		
			
				|  | @@ -367,6 +367,11 @@ class sbo__relationship_widget extends ChadoFieldWidget {
 | 
	
		
			
				|  |  |        return;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    // Do not proceed if subject ID or object ID does not exist
 | 
	
		
			
				|  |  | +    if (!key_exists('subject_id', $fkeys[$base_table]['columns']) || 
 | 
	
		
			
				|  |  | +        !key_exists('object_id', $fkeys[$base_table]['columns'])) {
 | 
	
		
			
				|  |  | +      return;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |      // Get the subject ID.
 | 
	
		
			
				|  |  |      $subject_id = '';
 | 
	
		
			
				|  |  |      $fkey_rcolumn = $fkeys[$base_table]['columns']['subject_id'];
 | 
	
	
		
			
				|  | @@ -377,7 +382,9 @@ class sbo__relationship_widget extends ChadoFieldWidget {
 | 
	
		
			
				|  |  |      else {
 | 
	
		
			
				|  |  |        $values = array('uniquename' => $subject_name);
 | 
	
		
			
				|  |  |        $subject = chado_select_record($base_table, array($fkey_rcolumn), $values);
 | 
	
		
			
				|  |  | -      $subject_id = $subject[0]->$fkey_rcolumn;
 | 
	
		
			
				|  |  | +      if(count($subject) > 0) {dpm($subject);
 | 
	
		
			
				|  |  | +        $subject_id = $subject[0]->$fkey_rcolumn;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // Get the object ID.
 | 
	
	
		
			
				|  | @@ -390,14 +397,16 @@ class sbo__relationship_widget extends ChadoFieldWidget {
 | 
	
		
			
				|  |  |      else {
 | 
	
		
			
				|  |  |        $values = array('uniquename' => $object_name);
 | 
	
		
			
				|  |  |        $object = chado_select_record($base_table, array($fkey_rcolumn), $values);
 | 
	
		
			
				|  |  | -      $object_id = $object[0]->$fkey_rcolumn;
 | 
	
		
			
				|  |  | +      if (count($object) > 0) {
 | 
	
		
			
				|  |  | +        $object_id = $object[0]->$fkey_rcolumn;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // Set the IDs according to the values that were determined above.
 | 
	
		
			
				|  |  | -    $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 . '__' . $object_id_key] = $object_id;
 | 
	
		
			
				|  |  | -    $form_state['values'][$field_name][$langcode][$delta]['chado' . $field_table . '__type_id'] = $type_name;
 | 
	
		
			
				|  |  | -    $form_state['values'][$field_name][$langcode][$delta]['chado' . $field_table . '__rank'] = $item['_weight'];
 | 
	
		
			
				|  |  | +    $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 . '__' . $object_id_key] = $object_id;
 | 
	
		
			
				|  |  | +    $form_state['values'][$field_name][$langcode][$delta]['chado-' . $field_table . '__type_id'] = $type_name;
 | 
	
		
			
				|  |  | +    $form_state['values'][$field_name][$langcode][$delta]['chado-' . $field_table . '__rank'] = $form_state['values'][$field_name][$langcode][$delta]['_weight'];
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /**
 |