|
@@ -290,6 +290,50 @@ function chado_stock_form($node, $form_state) {
|
|
|
'#default_value' => $dbxref_database
|
|
|
);
|
|
|
|
|
|
+ // PROPERTIES FORM
|
|
|
+ //---------------------------------------------
|
|
|
+ $ontology = variable_get('chado_stock_prop_types_cv', FALSE);
|
|
|
+ if (!$ontology) {
|
|
|
+ tripal_core_report_error(
|
|
|
+ 'chado_stock',
|
|
|
+ TRIPAL_ERROR,
|
|
|
+ 'Stock property type controlled vocabulary is not set. please set it in the Stock configuration form.'
|
|
|
+ );
|
|
|
+ tripal_core_report_error(
|
|
|
+ 'chado_stock',
|
|
|
+ TRIPAL_ERROR,
|
|
|
+ 'Unable to add properties form to the node form because stock property type controlled vocabulary is not set'
|
|
|
+ );
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // ontology name needed for properties api
|
|
|
+ $cv = tripal_core_chado_select('cv',array('name'),array('cv_id' => $ontology));
|
|
|
+ $ontology_name = $cv[0]->name;
|
|
|
+
|
|
|
+ // get the stockprop types for the property drop-down
|
|
|
+ $properties = array();
|
|
|
+ $properties[] = 'Select a Property';
|
|
|
+ $sql = "
|
|
|
+ SELECT DISTINCT CVT.cvterm_id, CVT.name, CVT.definition
|
|
|
+ FROM {cvterm} CVT
|
|
|
+ INNER JOIN {cv} CV ON CVT.cv_id = CV.cv_id
|
|
|
+ WHERE
|
|
|
+ CV.name = :ontology AND
|
|
|
+ NOT CVT.is_obsolete = 1
|
|
|
+ ORDER BY CVT.name ASC
|
|
|
+ ";
|
|
|
+ $prop_types = chado_query($sql, array(':ontology' => $ontology_name));
|
|
|
+ while ($prop = $prop_types->fetchObject()) {
|
|
|
+ $properties[$prop->cvterm_id] = $prop->name;
|
|
|
+ }
|
|
|
+
|
|
|
+ $exclude = array();
|
|
|
+ $include = array();
|
|
|
+ $instructions = t('To add additional properties to the drop down. ' . l("Add terms to the ".$ontology_name." vocabulary", "admin/tripal/chado/tripal_cv/cvterm/add") . ".");
|
|
|
+ tripal_core_properties_form($form, $form_state, 'stockprop', 'stock_id', $ontology_name,
|
|
|
+ $properties, $stock_id, $exclude, $include, $instructions, 'Properties');
|
|
|
+ }
|
|
|
+
|
|
|
return $form;
|
|
|
}
|
|
|
|
|
@@ -303,7 +347,7 @@ function chado_stock_form($node, $form_state) {
|
|
|
*
|
|
|
* @ingroup tripal_stock
|
|
|
*/
|
|
|
-function chado_stock_validate($node, $form, &$form_state) {
|
|
|
+function chado_stock_validate(&$node, $form, &$form_state) {
|
|
|
|
|
|
// remove surrounding whitespace
|
|
|
$node->uniquename = trim($node->uniquename);
|
|
@@ -507,6 +551,35 @@ function chado_stock_insert($node) {
|
|
|
else {
|
|
|
$stock_added = FALSE;
|
|
|
}
|
|
|
+
|
|
|
+ // Now add properties
|
|
|
+ if ($stock_added) {
|
|
|
+ $ontology = variable_get('chado_stock_prop_types_cv', FALSE);
|
|
|
+ $cv = tripal_core_chado_select('cv',array('name'),array('cv_id' => $ontology));
|
|
|
+ $ontology_name = $cv[0]->name;
|
|
|
+
|
|
|
+ $properties = tripal_core_properties_form_retreive($node, $ontology_name);
|
|
|
+ foreach ($properties as $property => $elements) {
|
|
|
+ foreach ($elements as $rank => $value) {
|
|
|
+ $success = tripal_core_insert_property(
|
|
|
+ 'stock',
|
|
|
+ $stock_id,
|
|
|
+ $property,
|
|
|
+ $ontology_name,
|
|
|
+ $value
|
|
|
+ );
|
|
|
+
|
|
|
+ if (!$success) {
|
|
|
+ watchdog(
|
|
|
+ 'tripal_stock',
|
|
|
+ 'Stock Insert: Unable to insert property %cvterm %value.',
|
|
|
+ array('%cvterm' => $property, '%value' => $value),
|
|
|
+ WATCHDOG_ERROR
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
} //end of adding stock to chado
|
|
|
else {
|
|
|
// stock already exists since this is a sync
|
|
@@ -650,6 +723,40 @@ function chado_stock_update($node) {
|
|
|
$values = array('stock_id' => $node->stock_id);
|
|
|
$stock = tripal_core_chado_select('stock', array('*'), $values);
|
|
|
}
|
|
|
+
|
|
|
+ // now update the properties
|
|
|
+ if ($node->stock_id > 0) {
|
|
|
+ $stock_id = $node->stock_id;
|
|
|
+
|
|
|
+ $ontology = variable_get('chado_stock_prop_types_cv', FALSE);
|
|
|
+ $cv = tripal_core_chado_select('cv',array('name'),array('cv_id' => $ontology));
|
|
|
+ $ontology_name = $cv[0]->name;
|
|
|
+
|
|
|
+ // now add in the properties by first removing any the stock
|
|
|
+ // already has and adding the ones we have
|
|
|
+ tripal_core_chado_delete('stockprop', array('stock_id' => $stock_id));
|
|
|
+ $properties = tripal_core_properties_form_retreive($node, $ontology_name);
|
|
|
+ foreach ($properties as $property => $elements) {
|
|
|
+ foreach ($elements as $rank => $value) {
|
|
|
+ $success = tripal_core_insert_property(
|
|
|
+ 'stock',
|
|
|
+ $stock_id,
|
|
|
+ $property,
|
|
|
+ $ontology_name,
|
|
|
+ $value
|
|
|
+ );
|
|
|
+
|
|
|
+ if (!$success) {
|
|
|
+ watchdog(
|
|
|
+ 'tripal_stock',
|
|
|
+ 'Stock Update: Unable to insert property %cvterm %value.',
|
|
|
+ array('%cvterm' => $property, '%value' => $value),
|
|
|
+ WATCHDOG_ERROR
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|