tripal_organism.admin.inc 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <?php
  2. /**
  3. *
  4. */
  5. function tripal_organism_admin_organism_view() {
  6. $output = '';
  7. // set the breadcrumb
  8. $breadcrumb = array();
  9. $breadcrumb[] = l('Home', '<front>');
  10. $breadcrumb[] = l('Administration', 'admin');
  11. $breadcrumb[] = l('Tripal', 'admin/tripal');
  12. $breadcrumb[] = l('Chado', 'admin/tripal/chado');
  13. $breadcrumb[] = l('Organisms', 'admin/tripal/chado/tripal_organism');
  14. drupal_set_breadcrumb($breadcrumb);
  15. // Add the view
  16. $view = views_embed_view('tripal_organism_admin_organisms','default');
  17. if (isset($view)) {
  18. $output .= $view;
  19. }
  20. else {
  21. $output .= '<p>The Organism module uses primarily views to provide an '
  22. . 'administrative interface. Currently one or more views needed for this '
  23. . 'administrative interface are disabled. <strong>Click each of the following links to '
  24. . 'enable the pertinent views</strong>:</p>';
  25. $output .= '<ul>';
  26. $output .= '<li>'.l('Organisms View', 'admin/tripal/chado/tripal_organism/views/organisms/enable').'</li>';
  27. $output .= '</ul>';
  28. }
  29. return $output;
  30. }
  31. /**
  32. * Administrative settings for chado_orgnism
  33. *
  34. * @ingroup tripal_organism
  35. */
  36. function tripal_organism_admin() {
  37. $form = array();
  38. $form['nothing'] = array(
  39. '#markup' => t('There are currently no settings to configure.')
  40. );
  41. return system_settings_form($form);
  42. }
  43. /**
  44. *
  45. * @ingroup tripal_organism
  46. */
  47. function tripal_organism_admin_validate($form, &$form_state) {
  48. global $user; // we need access to the user info
  49. $job_args = array();
  50. // -------------------------------------
  51. // Submit the Reindex Job if selected
  52. if ($form_state['values']['op'] == t('Reindex Features')) {
  53. $organisms = $form_state['values']['re-organisms'];
  54. foreach ($organisms as $organism_id) {
  55. if ($organism_id and preg_match("/^\d+$/i" , $organism_id)) {
  56. // get the organism info
  57. $sql = "SELECT * FROM {organism} WHERE organism_id = :organism_id";
  58. $organism = chado_query($sql, array(':organism_id' => $organism_id))->fetchObject();
  59. $job_args[0] = $organism_id;
  60. tripal_add_job("Reindex features for organism: $organism->genus " .
  61. "$organism->species", 'tripal_organism' ,
  62. 'tripal_organism_reindex_features', $job_args, $user->uid);
  63. }
  64. }
  65. }
  66. // -------------------------------------
  67. // Submit the taxonomy Job if selected
  68. if ($form_state['values']['op'] == t('Set Feature Taxonomy')) {
  69. $organisms = $form_state['values']['tx-organisms'];
  70. foreach ($organisms as $organism_id) {
  71. if ($organism_id and preg_match("/^\d+$/i", $organism_id)) {
  72. // get the organism info
  73. $sql = "SELECT * FROM {organism} WHERE organism_id = :organism_id";
  74. $organism = chado_query($sql, array(':organism_id' => $organism_id))->fetchObject();
  75. $job_args[0] = $organism_id;
  76. tripal_add_job("Set taxonomy for features in organism: " .
  77. "$organism->genus $organism->species" , 'tripal_organism',
  78. 'tripal_organism_taxonify_features', $job_args, $user->uid);
  79. }
  80. }
  81. }
  82. }
  83. /**
  84. *
  85. * @ingroup tripal_organism
  86. */
  87. function tripal_organism_reindex_features($organism_id = NULL, $job_id = NULL) {
  88. $i = 0;
  89. if (!$organism_id) {
  90. return;
  91. }
  92. $sql = "
  93. SELECT *
  94. FROM {feature}
  95. WHERE organism_id = :organism_id
  96. ORDER BY feature_id";
  97. $results = chado_query($sql, array(':organism_id' => $organism_id));
  98. // load into ids array
  99. $count = 0;
  100. $ids = array();
  101. foreach ($results as $id) {
  102. $ids[$count] = $id->feature_id;
  103. $count++;
  104. }
  105. $interval = intval($count * 0.01);
  106. foreach ($ids as $feature_id) {
  107. // update the job status every 1% features
  108. if ($job_id and $i % $interval == 0) {
  109. tripal_set_job_progress($job_id , intval(($i/$count)*100));
  110. }
  111. $i++;
  112. }
  113. }
  114. /**
  115. *
  116. * @ingroup tripal_organism
  117. */
  118. function tripal_organism_taxonify_features($organism_id = NULL, $job_id = NULL) {
  119. $i = 0;
  120. if (!$organism_id) {
  121. return;
  122. }
  123. $sql = "
  124. SELECT *
  125. FROM {feature}
  126. WHERE organism_id = :organism_id
  127. ORDER BY feature_id
  128. ";
  129. $results = chado_query($sql, array(':organism_id' => $organism_id));
  130. // load into ids array
  131. $count = 0;
  132. $ids = array();
  133. foreach ($results as $id) {
  134. $ids[$count] = $id->feature_id;
  135. $count++;
  136. }
  137. // make sure our vocabularies are set before proceeding
  138. tripal_feature_set_vocabulary();
  139. // use this SQL for getting the nodes
  140. $nsql = "SELECT * FROM {chado_feature} CF " .
  141. " INNER JOIN {node} N ON N.nid = CF.nid " .
  142. "WHERE feature_id = :feature_id";
  143. // iterate through the features and set the taxonomy
  144. $interval = intval($count * 0.01);
  145. foreach ($ids as $feature_id) {
  146. // update the job status every 1% features
  147. if ($job_id and $i % $interval == 0) {
  148. tripal_set_job_progress($job_id, intval(($i/$count)*100));
  149. }
  150. $node = db_query($nsql, array(':feature_id' => $feature_id))->fetchObject();
  151. tripal_feature_set_taxonomy($node, $feature_id);
  152. $i++;
  153. }
  154. }