Parcourir la source

Add some general function apis

ccheng il y a 14 ans
Parent
commit
af02e80bad
2 fichiers modifiés avec 55 ajouts et 0 suppressions
  1. 12 0
      tripal_core/cvterms.php
  2. 43 0
      tripal_core/tripal_core.api.inc

+ 12 - 0
tripal_core/cvterms.php

@@ -119,3 +119,15 @@ function tripal_add_cv($cv_name,$definition){
    tripal_db_set_active($previous_db);  // now use drupal database	
    return $cv->cv_id;
 }
+
+/************************************************************************
+* Get cvterm_id for a tripal cvterm by passing its name
+*/
+function tripal_get_cvterm_id ($cvterm){
+	$sql = "SELECT CVT.cvterm_id FROM {cvterm} CVT
+         	    INNER JOIN cv ON cv.cv_id = CVT.cv_id 
+            	 WHERE CVT.name = '$cvterm' 
+                AND CV.name = 'tripal'";
+	return db_result(chado_query($sql));
+}
+

+ 43 - 0
tripal_core/tripal_core.api.inc

@@ -1165,3 +1165,46 @@ function tripal_core_exclude_type_by_default() {
 function tripal_core_exclude_field_from_feature_by_default() {
   return array();
 }
+
+/************************************************************************
+ *  Use this function instead of db_query() to avoid switching databases
+ *  when making query to the chado database
+ */
+function chado_query($sql) {
+	$args = func_get_args();
+	array_shift($args);
+	$sql = db_prefix_tables($sql);
+	if (isset($args[0]) and is_array($args[0])) { // 'All arguments in one array' syntax
+		$args = $args[0];
+	}
+	_db_query_callback($args, TRUE);
+	$sql = preg_replace_callback(DB_QUERY_REGEXP, '_db_query_callback', $sql);
+	$previous_db = db_set_active('chado');
+	$results = _db_query($sql);
+	db_set_active($previous_db);
+	return $results;
+}
+
+/************************************************************************
+ * Get chado id for a node. E.g, if you want to get 'analysis_id' from the 
+ * 'analysis' table for a synced 'chado_analysis' node, use:
+ * $analysis_id = chado_get_id_for_node ('analysis', $node)
+ * Likewise,
+ * $organism_id = chado_get_id_for_node ('organism', $node)
+ * $feature_id = chado_get_id_for_node ('feature', $node)
+ */
+function chado_get_id_for_node ($table, $node) {
+	 return db_result(db_query("SELECT $table"."_id FROM {chado_".$table."} WHERE nid = $node->nid"));
+}
+
+/************************************************************************
+ *  Get node id for a chado feature/organism/analysis. E.g, if you want to
+ *  get the node id for an analysis, use:
+ *  $nid = chado_get_node_id ('analysis', $analysis_id)
+ *  Likewise,
+ *  $nid = chado_get_node_id ('organism', $organism_id)
+ *  $nid = chado_get_node_id ('feature', $feature_id) 
+ */
+function chado_get_node_id ($table, $id) {
+	 return db_result(db_query("SELECT nid FROM {chado_".$table."} WHERE $table"."_id = $id"));
+}