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
13 calls to chado_update_node_form_dbxrefs()
- chado_featuremap_insert in legacy/
tripal_featuremap/ includes/ tripal_featuremap.chado_node.inc - Implements hook_insert().
- chado_featuremap_update in legacy/
tripal_featuremap/ includes/ tripal_featuremap.chado_node.inc - Implements hook_update(). Update nodes
- chado_feature_insert in legacy/
tripal_feature/ includes/ tripal_feature.chado_node.inc - Implements hook_insert().
- chado_feature_update in legacy/
tripal_feature/ includes/ tripal_feature.chado_node.inc - Implements hook_update().
- chado_library_insert in legacy/
tripal_library/ includes/ tripal_library.chado_node.inc - Implements hook_insert().
1 string reference to 'chado_update_node_form_dbxrefs'
- chado_node_additional_dbxrefs_form_update_dbxrefs in legacy/
tripal_core/ api/ tripal_core.DEPRECATED.inc
File
- legacy/
tripal_core/ api/ tripal_core.chado_nodes.dbxrefs.api.inc, line 661 - 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)
);
}
}
}
}
}
}
}