function chado_update_node_form_dbxrefs
2.x tripal_core.chado_nodes.dbxrefs.api.inc | chado_update_node_form_dbxrefs($node, $details, $retrieved_dbxrefs = FALSE) |
3.x tripal_core.chado_nodes.dbxrefs.api.inc | chado_update_node_form_dbxrefs($node, $details, $retrieved_dbxrefs = FALSE) |
This function is used in hook_insert or hook_update and handles inserting of any new dbxrefs and creation of links between those dbxrefs and node content
Parameters
$node: The node passed into hook_insert & hook_update
$details:
- linking_table: the name of the _dbxref linking table (ie: feature_dbxref)
- foreignkey_name: the name of the foreign key used to link to the node content (ie: feature_id)
- foreignkey_value: the value of the foreign key (ie: 445, if there exists a feature where feature_id=445)
$retrieved_dbxrefs: An array of databa references from chado_retrieve_node_form_dbxrefs($node). This can be used if you need special handling for some of the database references
Related topics
15 calls to chado_update_node_form_dbxrefs()
- chado_example_insert in tripal_example/
includes/ tripal_example.chado_node.inc - Implementation of hook_insert(). This function is called after the node is inserted into the database. We need it so that we can insert appropriate fields as provided by the user into the database. And so that we can link the new Drupal node to the…
- chado_example_update in tripal_example/
includes/ tripal_example.chado_node.inc - Implementation of hook_update(). This function runs after the node has been inserted into the Drupal schema and allows us to update the record in Chado.
- chado_featuremap_insert in tripal_featuremap/
includes/ tripal_featuremap.chado_node.inc - Implements hook_insert().
- chado_featuremap_update in tripal_featuremap/
includes/ tripal_featuremap.chado_node.inc - Implements hook_update(). Update nodes
- chado_feature_insert in tripal_feature/
includes/ tripal_feature.chado_node.inc - Implements hook_insert().
1 string reference to 'chado_update_node_form_dbxrefs'
- chado_node_additional_dbxrefs_form_update_dbxrefs in tripal_core/
api/ tripal_core.DEPRECATED.api.inc
File
- tripal_core/
api/ tripal_core.chado_nodes.dbxrefs.api.inc, line 668 - API to manage the chado _dbxref table for various Tripal Node Types
Code
function chado_update_node_form_dbxrefs($node, $details, $retrieved_dbxrefs = FALSE) {
$linking_table = $details['linking_table'];
$foreignkey_name = $details['foreignkey_name'];
$foreignkey_value = $details['foreignkey_value'];
if (isset($node->dbxref_table) AND ($foreignkey_value > 0)) {
// First remove existing dbxref links
chado_delete_record($linking_table, array($foreignkey_name => $foreignkey_value));
// Add back in dbxref links and insert dbxrefs as needed
if ($retrieved_dbxrefs) {
$dbxrefs = $retrieved_dbxrefs;
}
else {
$dbxrefs = chado_retrieve_node_form_dbxrefs($node);
}
foreach ($dbxrefs as $db_id => $versions) {
foreach ($versions as $version => $elements) {
foreach ($elements as $dbxref_id => $accession) {
// If there is no dbxref then we have to create that first
if (preg_match('/^TEMP/', $dbxref_id)) {
$version = ($version == 'NONE') ? '' : $version;
$success = tripal_insert_dbxref(array(
'db_id' => $db_id,
'accession' => $accession,
'version' => $version,
'description' => NULL
));
if ($success) {
$dbxref_id = $success->dbxref_id;
}
else {
$dbxref_id = FALSE;
}
}
// add _dbxref linker
if ($dbxref_id) {
if (preg_match('/(\w+)_dbxref/', $linking_table, $matches)) {
$base_table = $matches[1];
$success_link = tripal_associate_dbxref(
$base_table,
$foreignkey_value,
array('dbxref_id' => $dbxref_id)
);
}
}
}
}
}
}
}