Bladeren bron

Merge pull request #295 from statonlab/7.x-3.x_add_cvalue_prop_support

add cvalue support for properties
Stephen Ficklin 7 jaren geleden
bovenliggende
commit
afc6f1c42d
1 gewijzigde bestanden met toevoegingen van 34 en 0 verwijderingen
  1. 34 0
      tripal_chado/api/tripal_chado.property.api.inc

+ 34 - 0
tripal_chado/api/tripal_chado.property.api.inc

@@ -169,6 +169,7 @@ function chado_insert_property($record, $property, $options = array()) {
   $cv_id       = array_key_exists('cv_id', $property) ? $property['cv_id'] : '';
   $value       = array_key_exists('value', $property) ? $property['value'] : '';
   $rank        = array_key_exists('rank', $property) ? $property['rank'] : 0;
+  $cvalue_id   = array_key_exists('cvalue_id', $property) ? $property['cvalue_id'] : '';
 
   $update_if_present = array_key_exists('update_if_present', $options) ? $options['update_if_present'] : FALSE;
   $force_rank = array_key_exists('force_rank', $options) ? $options['force_rank'] : FALSE;
@@ -249,6 +250,20 @@ function chado_insert_property($record, $property, $options = array()) {
       array('%property' => print_r($property, TRUE)));    return FALSE;
   }
 
+
+    //Check that the cvalue property exists
+    if ($cvalue_id){
+        $term = chado_select_record('cvterm', array('cvterm_id'), array('cvterm_id' => $cvalue_id), $options);
+       if (!$term or count($term) == 0) {
+            tripal_report_error('tripal_chado', TRIPAL_ERROR, "chado_insert_property: " .
+                "Cannot find the term for the property value described by: %property.",
+                array('%property' => print_r($property, TRUE)));
+           return FALSE;
+    }
+    $values['cvalue'] = $cvalue_id;
+  }
+
+
   // Get the foreign key for this property table
   $table_desc = chado_get_schema($base_table . 'prop');
   $fkcol = key($table_desc['foreign keys'][$base_table]['columns']);
@@ -287,6 +302,9 @@ function chado_insert_property($record, $property, $options = array()) {
  *     -cv_name: The name of the CV that contains the term.
  *     -value: The specific value for the property.
  *     -rank: The specific rank for the property.
+ *     -cvalue_id: The cvterm_id of the value for the property.
+ *      **note** cvalue_id is an anticipated column in the the next Chado release (1.4).  It is included here for early adopters.
+ *
  * @param $options
  *   An associative array containing the following keys:
  *     -insert_if_missing: A boolean indicating whether a record should be
@@ -310,6 +328,7 @@ function chado_update_property($record, $property, $options = array()) {
   $cv_id       = array_key_exists('cv_id', $property) ? $property['cv_id'] : '';
   $value       = array_key_exists('value', $property) ? $property['value'] : '';
   $rank        = array_key_exists('rank', $property) ? $property['rank'] : 0;
+  $cvalue_id   = array_key_exists('cvalue_id', $property) ? $property['cvalue_id'] : '';
 
   $insert_if_missing = array_key_exists('insert_if_missing', $options) ? $options['insert_if_missing'] : FALSE;
 
@@ -385,6 +404,18 @@ function chado_update_property($record, $property, $options = array()) {
     $values['rank'] = $rank;
   }
 
+  // If a cvalue_id is supplied, check that it is a valid cvterm
+    if ($cvalue_id) {
+        $term = chado_select_record('cvterm', array('cvterm_id'), array('cvterm_id' => $cvalue_id), $options);
+        if (!$term or count($term) == 0) {
+            tripal_report_error('tripal_chado', TRIPAL_ERROR, "chado_insert_property: " .
+                "Cannot find the term for the property value described by: %property.",
+                array('%property' => print_r($property, TRUE)));
+            return FALSE;
+    }
+    $values['cvalue_id'] = $cvalue_id;
+  }
+
   // If we have the unique property_id then we can also update the type
   // thus add it to the values to be updated
   if ($prop_id) {
@@ -516,6 +547,9 @@ function chado_delete_property($record, $property) {
  *     -cv_name: The name of the CV that contains the term.
  *     -value: The specific value for the property.
  *     -rank: The specific rank for the property.
+ *     -cvalue_id: The cvterm_id of the value for the property.
+ *      **note** cvalue_id is an anticipated column in the the next Chado release (1.4).  It is included here for early adopters.
+ * 
  * @param $options
  *   An array of options supported by chado_generate_var(). These keys
  *   are used for generating the cvterm objects returned by this function.