cvterms.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. //
  3. // Copyright 2009 Clemson University
  4. //
  5. /**
  6. *
  7. *
  8. * @ingroup tripal_core
  9. */
  10. function tripal_add_cvterms ($name,$definition,$cv_name = 'tripal',$db_name='tripal'){
  11. $previous_db = tripal_db_set_active('chado'); // use chado database
  12. $cv = db_fetch_object(db_query("SELECT * FROM {cv} WHERE name = '$cv_name'"));
  13. if (!$cv->cv_id) {
  14. tripal_db_set_active($previous_db);
  15. tripal_add_cv('tripal', 'Terms used by Tripal for modules to manage data such as that
  16. stored in property tables like featureprop, analysisprop, etc');
  17. tripal_db_set_active('chado');
  18. $cv = db_fetch_object(db_query("SELECT * FROM {cv} WHERE name = '$cv_name'"));
  19. }
  20. $db = db_fetch_object(db_query("SELECT * FROM {db} WHERE name = '$db_name'"));
  21. if (!$db->db_id) {
  22. tripal_db_set_active($previous_db);
  23. tripal_add_db('tripal', 'Used as a database placeholder for tripal defined objects such as tripal cvterms', '', '');
  24. tripal_db_set_active('chado');
  25. $db = db_fetch_object(db_query("SELECT * FROM {db} WHERE name = '$db_name'"));
  26. }
  27. // check to see if the dbxref already exists if not then add it
  28. $sql = "SELECT * FROM {dbxref} WHERE db_id = $db->db_id and accession = '$name'";
  29. $dbxref = db_fetch_object(db_query($sql));
  30. if(!$dbxref){
  31. db_query("INSERT INTO {dbxref} (db_id,accession) VALUES ($db->db_id,'$name')");
  32. $dbxref = db_fetch_object(db_query($sql));
  33. }
  34. // now add the cvterm only if it doesn't already exist
  35. $sql = "SELECT * FROM {cvterm} ".
  36. "WHERE cv_id = $cv->cv_id and dbxref_id = $dbxref->dbxref_id and name = '$name'";
  37. $cvterm = db_fetch_object(db_query($sql));
  38. if(!$cvterm){
  39. $result = db_query("INSERT INTO {cvterm} (cv_id,name,definition,dbxref_id) ".
  40. "VALUES ($cv->cv_id,'$name','$definition',$dbxref->dbxref_id)");
  41. }
  42. tripal_db_set_active($previous_db); // now use drupal database
  43. if(!$result){
  44. // TODO -- ERROR HANDLING
  45. }
  46. }
  47. /**
  48. *
  49. *
  50. * @ingroup tripal_core
  51. */
  52. function tripal_add_db($db_name,$description,$urlprefix,$url){
  53. $previous_db = tripal_db_set_active('chado'); // use chado database
  54. // use this SQL statement to get the db_id for the database name
  55. $id_sql = "SELECT db_id FROM {db} WHERE name = '%s'";
  56. $db = db_fetch_object(db_query($id_sql,$db_name));
  57. // if the database doesn't exist then let's add it.
  58. if(!$db->db_id){
  59. $sql = "
  60. INSERT INTO {db} (name,description,urlprefix,url) VALUES
  61. ('%s','%s','%s','%s');
  62. ";
  63. db_query($sql,$db_name,$description,$urlprefix,$url);
  64. # now get the id for this new db entry
  65. $db = db_fetch_object(db_query($id_sql,$db_name));
  66. }
  67. tripal_db_set_active($previous_db); // now use drupal database
  68. return $db->db_id;
  69. }
  70. /**
  71. *
  72. *
  73. * @ingroup tripal_core
  74. */
  75. function tripal_delete_db($db_name){
  76. $previous_db = tripal_db_set_active('chado'); // use chado database
  77. $sql = "DELETE FROM {db} WHERE name ='%s'";
  78. db_query($sql,$db_name);
  79. tripal_db_set_active($previous_db); // now use drupal database
  80. }
  81. /**
  82. *
  83. *
  84. * @ingroup tripal_core
  85. */
  86. function tripal_add_cv($cv_name,$definition){
  87. $previous_db = tripal_db_set_active('chado'); // use chado database
  88. // use this SQL statement to get the db_id for the database name
  89. $id_sql = "SELECT cv_id FROM {cv} WHERE name = '%s'";
  90. $cv = db_fetch_object(db_query($sql,$cv_name));
  91. // if the database doesn't exist then let's add it.
  92. if(!$cv){
  93. $sql = "
  94. INSERT INTO {cv} (name,definition) VALUES
  95. ('%s','%s');
  96. ";
  97. db_query($sql,$cv_name,$definition);
  98. # now get the id for this new db entry
  99. $cv = db_fetch_object(db_query($sql,$cv_name));
  100. }
  101. tripal_db_set_active($previous_db); // now use drupal database
  102. return $cv->cv_id;
  103. }
  104. /************************************************************************
  105. * Get cvterm_id for a tripal cvterm by passing its name
  106. */
  107. function tripal_get_cvterm_id ($cvterm){
  108. $sql = "SELECT CVT.cvterm_id FROM {cvterm} CVT
  109. INNER JOIN cv ON cv.cv_id = CVT.cv_id
  110. WHERE CVT.name = '$cvterm'
  111. AND CV.name = 'tripal'";
  112. return db_result(chado_query($sql));
  113. }