|  | @@ -155,7 +155,7 @@ function tripal_views_integration_add_entry($defn_array) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // Need to update the tripal_views record so base_table can be false
 | 
	
		
			
				|  |  |      // this is a fix because drupal_write_record() puts in defaults if !isset()
 | 
	
		
			
				|  |  | -    // and a variable is considered not set if its null!
 | 
	
		
			
				|  |  | +    // and a variable is considered not set if it's null!
 | 
	
		
			
				|  |  |      db_query(
 | 
	
		
			
				|  |  |        "UPDATE {tripal_views} SET base_table=%d WHERE table_name='%s' AND priority=%d",
 | 
	
		
			
				|  |  |        $defn_array['base_table'],
 | 
	
	
		
			
				|  | @@ -176,7 +176,7 @@ function tripal_views_integration_add_entry($defn_array) {
 | 
	
		
			
				|  |  |          $status = drupal_write_record('tripal_views_field', $field_record);
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        else {
 | 
	
		
			
				|  |  | -        drupal_set_message(t('Unable to integrate %name field due to a missing required fields.', array('%name' => $field['name'])), 'error');
 | 
	
		
			
				|  |  | +        drupal_set_message(t('Unable to integrate %name field due to missing required fields.', array('%name' => $field['name'])), 'error');
 | 
	
		
			
				|  |  |          $status = FALSE;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -248,7 +248,7 @@ function tripal_views_integration_add_entry($defn_array) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        else {
 | 
	
		
			
				|  |  | -        drupal_set_message(t('Unable to integrate field: %field_name', array('%field_name' => $field['name'])), 'error');
 | 
	
		
			
				|  |  | +        drupal_set_message(t('Unable to integrate %field_name field', array('%field_name' => $field['name'])), 'error');
 | 
	
		
			
				|  |  |          $no_errors = FALSE;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -479,18 +479,27 @@ function tripal_views_get_integration_array_for_chado_table($table_name, $base_t
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  // Add Joins to fields
 | 
	
		
			
				|  |  | +  // Add Joins & Relationship Handlers to fields
 | 
	
		
			
				|  |  |    if (!isset($schema['foreign keys'])) {
 | 
	
		
			
				|  |  |      $schema['foreign keys'] = array();
 | 
	
		
			
				|  |  |      watchdog('tripal_views','There are no foreign keys defined for %table in the Chado Schema API.', array('%table' => $table_name), WATCHDOG_WARNING);
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    foreach ($schema['foreign keys'] as $foreign_key_schema) {
 | 
	
		
			
				|  |  |      foreach ($foreign_key_schema['columns'] as $left_field => $right_field) {
 | 
	
		
			
				|  |  | +      // Join
 | 
	
		
			
				|  |  |        $defn_array['fields'][$left_field]['joins'][ $foreign_key_schema['table'] ] = array(
 | 
	
		
			
				|  |  |          'table' => $foreign_key_schema['table'],
 | 
	
		
			
				|  |  |          'field' => $right_field,
 | 
	
		
			
				|  |  |          'handler' => 'views_handler_join_chado_aggregator'
 | 
	
		
			
				|  |  |        );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // Relationship Handler
 | 
	
		
			
				|  |  | +      $defn_array['fields'][$left_field]['handlers']['relationship'] = array(
 | 
	
		
			
				|  |  | +        'name' => 'chado_views_handler_relationship',
 | 
	
		
			
				|  |  | +        'base' => $foreign_key_schema['table'],
 | 
	
		
			
				|  |  | +        'base field' => $right_field,
 | 
	
		
			
				|  |  | +        'label' => $table_name . ' ' . $left_field . ' to ' . $foreign_key_schema['table'] . ' ' .$right_field
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 |