| 
					
				 | 
			
			
				@@ -490,12 +490,12 @@ function tripal_core_chado_select($table,$columns,$values,$options = null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (!$options['order_by']) { $options['order_by'] = array(); } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    if (!is_array($columns)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      watchdog('tripal_feature', 'the $columns argument for tripal_core_chado_select must be an array.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      watchdog('tripal_core', 'the $columns argument for tripal_core_chado_select must be an array.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    if (!is_array($values)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      watchdog('tripal_feature', 'the $values argument for tripal_core_chado_select must be an array.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      watchdog('tripal_core', 'the $values argument for tripal_core_chado_select must be an array.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -687,7 +687,11 @@ function tripal_core_chado_get_foreign_key($table_desc,$field,$values, $options 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // TODO: what do we do if we get to this point and we have a fk  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // relationship expected but we don't have any definition for one in the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // table schema?? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      $message = "There is no foreign key relationship defined for ".$field.". To define a foreign key relationship, determine the table this foreign key referrs to (<foreign table>) and then implement hook_chado_<foreign table>_schema(). See tripal_feature_chado_feature_schema for an example."; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $message = "There is no foreign key relationship defined for ".$field.".  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         To define a foreign key relationship, determine the table this foreign  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         key referrs to (<foreign table>) and then implement  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         hook_chado_<foreign table>_schema(). See  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         tripal_feature_chado_feature_schema for an example."; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       watchdog('tripal_core', $message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       drupal_set_message($message,'error');       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1269,10 +1273,12 @@ function chado_get_node_id ($table, $id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * @ingroup tripal_api 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function tripal_core_get_property($basetable, $record_id, $property,$cv_name){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function tripal_core_get_property($basetable, $record_id, $property, $cv_name){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   // get the foreign key for this property table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    $table_desc = module_invoke_all('chado_'.$basetable.'prop_schema'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    $fkcol = key($table_desc['foreign keys'][$basetable]['columns']); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    // construct the array of values to be inserted   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    $values = array ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       $fkcol => $record_id, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1293,23 +1299,29 @@ function tripal_core_get_property($basetable, $record_id, $property,$cv_name){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * @ingroup tripal_core.api 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function tripal_core_insert_property($proptable, $feature_id,$property,$value,$update_if_present = 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function tripal_core_insert_property($basetable, $record_id, $property,  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   $cv_name, $value, $update_if_present = 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    // first see if the property already exists, if so we can't insert 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   $prop = tripal_feature_get_property($feature_id,$property); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   if(count($prop)>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   $prop = tripal_core_get_property($basetable,$record_id,$property,$cv_name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   if(count($prop)>0){  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if($update_if_present){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return tripal_feature_update_property($feature_id,$property,$value) ; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return tripal_core_update_property($basetable,$record_id,$property,$cv_name,$value) ; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return FALSE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   // get the foreign key for this property table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   $table_desc = module_invoke_all('chado_'.$basetable.'prop_schema'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   $fkcol = key($table_desc['foreign keys'][$basetable]['columns']); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    // construct the array of values to be inserted   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    $values = array ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      'feature_id' => $feature_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $fkcol => $record_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       'type_id' => array (  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          'cv_id' => array ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            'name' => 'tripal', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'name' => $cv_name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          'name' => $property, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          'is_obsolete' => 0 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1317,31 +1329,37 @@ function tripal_core_insert_property($proptable, $feature_id,$property,$value,$u 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       'value' => $value,  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       'rank' => 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   return tripal_core_chado_insert('featureprop',$values); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   return tripal_core_chado_insert($basetable.'prop',$values); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-* Adds a single property to an existing feature record. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+* Adds a single property to an existing record. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * @ingroup tripal_api 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function tripal_core_update_property($proptable, $feature_id,$property,$value,$insert_if_missing = 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function tripal_core_update_property($basetable, $record_id,$property,$cv_name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   $value,$insert_if_missing = 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    // first see if the property is missing (we can't update a missing property 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   $prop = tripal_feature_get_property($feature_id,$property); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   $prop = tripal_core_get_property($basetable,$record_id,$property,$cv_name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    if(count($prop)==0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if($insert_if_missing){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return tripal_feature_insert_property($feature_id,$property,$value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return tripal_core_insert_property($basetable,$record_id,$property,$cv_name,$value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return FALSE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   // get the foreign key for this property table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   $table_desc = module_invoke_all('chado_'.$basetable.'prop_schema'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   $fkcol = key($table_desc['foreign keys'][$basetable]['columns']); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    // construct the array that will match the exact record to update 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    $match = array ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      'feature_id' => $feature_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $fkcol => $record_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       'type_id' => array (  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          'cv_id' => array ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            'name' => 'tripal', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'name' => $cv_name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          'name' => $property, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       ), 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1350,24 +1368,27 @@ function tripal_core_update_property($proptable, $feature_id,$property,$value,$i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    $values = array (       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       'value' => $value,  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   return tripal_core_chado_update('featureprop',$match,$values); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   return tripal_core_chado_update($basetable.'prop',$match,$values); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-* Adds a single property to an existing feature record. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+* Adds a single property to an existing record. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * @ingroup tripal_api 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function tripal_core_delete_property($proptable, $feature_id,$property){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function tripal_core_delete_property($basetable, $record_id,$property,$cv_name){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   // get the foreign key for this property table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   $table_desc = module_invoke_all('chado_'.$basetable.'prop_schema'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   $fkcol = key($table_desc['foreign keys'][$basetable]['columns']); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    // construct the array that will match the exact record to update 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    $match = array ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      'feature_id' => $feature_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $fkcol => $record_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       'type_id' => array (  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          'cv_id' => array ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            'name' => 'tripal', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'name' => $cv_name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          'name' => $property, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   return tripal_core_chado_delete('featureprop',$match); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   return tripal_core_chado_delete($basetable.'prop',$match); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |