|
@@ -581,23 +581,33 @@ function chado_node_additional_dbxrefs_form_retreive($node) {
|
|
*
|
|
*
|
|
* @param $node
|
|
* @param $node
|
|
* The node passed into hook_insert & hook_update
|
|
* The node passed into hook_insert & hook_update
|
|
- * @param $linking_table
|
|
|
|
- * The name of the _dbxref linking table (ie: feature_dbxref)
|
|
|
|
- * @param $foreignkey_name
|
|
|
|
- * The name of the foreign key used to link to the node content (ie: feature_id)
|
|
|
|
- * @param $foreignkey_value
|
|
|
|
- * The value of the foreign key (ie: 445, if there exists a feature where feature_id=445)
|
|
|
|
|
|
+ * @param $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)
|
|
|
|
+ * @param $retrieved_dbxrefs
|
|
|
|
+ * An array of databa references from chado_node_additional_dbxrefs_form_retreive($node).
|
|
|
|
+ * This can be used if you need special handling for some of the database references
|
|
*
|
|
*
|
|
* @ingroup tripal_chado_node_api
|
|
* @ingroup tripal_chado_node_api
|
|
*/
|
|
*/
|
|
-function chado_node_additional_dbxrefs_form_update_dbxrefs($node, $linking_table, $foreignkey_name, $foreignkey_value) {
|
|
|
|
|
|
+function chado_node_additional_dbxrefs_form_update_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)) {
|
|
if (isset($node->dbxref_table) AND ($foreignkey_value > 0)) {
|
|
// First remove existing dbxref links
|
|
// First remove existing dbxref links
|
|
tripal_core_chado_delete($linking_table, array($foreignkey_name => $foreignkey_value));
|
|
tripal_core_chado_delete($linking_table, array($foreignkey_name => $foreignkey_value));
|
|
|
|
|
|
// Add back in dbxref links and insert dbxrefs as needed
|
|
// Add back in dbxref links and insert dbxrefs as needed
|
|
- $dbxrefs = chado_node_additional_dbxrefs_form_retreive($node);
|
|
|
|
|
|
+ if ($retrieved_dbxrefs) {
|
|
|
|
+ $dbxrefs = $retrieved_dbxrefs;
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ $dbxrefs = chado_node_additional_dbxrefs_form_retreive($node);
|
|
|
|
+ }
|
|
foreach ($dbxrefs as $db_id => $versions) {
|
|
foreach ($dbxrefs as $db_id => $versions) {
|
|
foreach ($versions as $version => $elements) {
|
|
foreach ($versions as $version => $elements) {
|
|
foreach ($elements as $dbxref_id => $accession) {
|
|
foreach ($elements as $dbxref_id => $accession) {
|