$name); $options = array('statement_name' => 'sel_contact_na'); $contact = tripal_core_chado_select('contact', array('contact_id'), $values, $options); if (count($contact) == 0) { $cvterm = tripal_cv_get_cvterm_by_name($type, NULL, 'tripal_contact'); if (!$cvterm) { watchdog('tripal_contact',"Cannot find contact type '%type'", array('%type' => $type), WATCHDOG_ERROR); return FALSE; } $values = array( 'name' => $name, 'description' => '', 'type_id' => $cvterm->cvterm_id, ); $options = array('statement_name' => 'ins_contact_nadety'); $contact = tripal_core_chado_insert('contact', $values, $options); if (!$contact) { watchdog('tripal_contact','Could not add the contact', array(), WATCHDOG_ERROR); return FALSE; } } else { $contact = (array) $contact[0]; } // add the description property. We don't store this in the contact.description // field because it is only 255 characters long and may not be enough if ($description) { tripal_contact_insert_property($contact['contact_id'], 'contact_description', $description, TRUE); } // add in the other properties provided foreach ($properties as $key => $value) { $success = tripal_contact_insert_property($contact['contact_id'], $key,$value, TRUE); if (!$success) { watchdog('tripal_contact',"Could not add the contact property '%prop'", array('%prop' => $key), WATCHDOG_ERROR); return FALSE; } } return $contact; }