function tripal_stock_update_property

1.x tripal_stock-properties.inc tripal_stock_update_property($stockprop_id, $cvterm_id, $value, $preferred, $nid)

Related topics

1 call to tripal_stock_update_property()

File

tripal_stock/includes/tripal_stock-properties.inc, line 288
@todo Add file header description

Code

function tripal_stock_update_property($stockprop_id, $cvterm_id, $value, $preferred, $nid) {

  $old_obj = db_fetch_object(chado_query("SELECT * FROM {stockprop} WHERE stockprop_id=%d", $stockprop_id));

  // if they changed the type need to check rank
  //   (if there is another property of the same type then rank needs to be increased to prevent collisions)
  if ($cvterm_id == $old_obj->type_id) {
    chado_query(
    "UPDATE {stockprop} SET type_id=%d, value='%s' WHERE stockprop_id=%d", 
    $cvterm_id, 
    $value, 
    $stockprop_id
    );
  }
  else {
    //determine the rank for this property
    $max_rank = get_max_chado_rank('stockprop', 
    array('stock_id' => array('type' => 'INT', 'value' => $old_obj->stock_id),
      'type_id' => array('type' => 'INT', 'value' => $cvterm_id)));
    if ($max_rank == -1) {
      $rank = 0;
    }
    else {
      $rank = $max_rank + 1;
    }
    chado_query(
    "UPDATE {stockprop} SET type_id=%d, value='%s', rank=%d WHERE stockprop_id=%d", 
    $cvterm_id, 
    $value, 
    $rank, 
    $stockprop_id
    );
  }

  // Set Preferred Synonym
  //use update node form so that both title and name get set
  if ($preferred) {
    $node = node_load($nid);
    $node->title = $value;
    $node_form_state = array(
      'values' => array(
        'title' => $value,
        'op' => 'Save'
      )
    );
    module_load_include('inc', 'node', 'node.pages');
    drupal_execute('chado_stock_node_form', $node_form_state, $node);
  }
}