123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266 |
- <?php
- function tripal_organism_admin_organism_view() {
- $output = '';
-
- $breadcrumb = array();
- $breadcrumb[] = l('Home', '<front>');
- $breadcrumb[] = l('Administration', 'admin');
- $breadcrumb[] = l('Tripal', 'admin/tripal');
- $breadcrumb[] = l('Chado', 'admin/tripal/chado');
- $breadcrumb[] = l('Organisms', 'admin/tripal/chado/tripal_organism');
- drupal_set_breadcrumb($breadcrumb);
-
- $view = views_embed_view('tripal_organism_admin_organisms','default');
- if (isset($view)) {
- $output .= $view;
- }
- else {
- $output .= '<p>The Organism module uses primarily views to provide an '
- . 'administrative interface. Currently one or more views needed for this '
- . 'administrative interface are disabled. <strong>Click each of the following links to '
- . 'enable the pertinent views</strong>:</p>';
- $output .= '<ul>';
- $output .= '<li>'.l('Organisms View', 'admin/tripal/chado/tripal_organism/views/organisms/enable').'</li>';
- $output .= '</ul>';
- }
- return $output;
- }
- function tripal_organism_admin() {
- $form = array();
- get_tripal_organism_admin_form_reindex_set($form);
- get_tripal_organism_admin_form_taxonomy_set($form);
- return system_settings_form($form);
- }
- function get_tripal_organism_admin_form_taxonomy_set(&$form) {
- $form['taxonify'] = array(
- '#type' => 'fieldset',
- '#title' => t('Assign Drupal Taxonomy to Organism Features')
- );
-
- $sql = "SELECT * FROM {Organism} ORDER BY genus,species";
- $org_rset = chado_query($sql);
-
- $org_boxes = array();
- foreach ($org_rset as $organism) {
- $org_boxes[$organism->organism_id] = "$organism->genus $organism->species";
- }
- $form['taxonify']['description'] = array(
- '#type' => 'item',
- '#value' => t(
- "Drupal allows for assignment of \"taxonomy\" or catagorical terms to " .
- "nodes. These terms allow for advanced filtering during searching. This option allows " .
- "for setting taxonomy only for features that belong to the selected organisms below. All " .
- "other features will be unaffected. To set taxonomy for all features in the site see the Feature Administration page."),
- '#weight' => 1,
- );
- $form['taxonify']['tx-organisms'] = array(
- '#title' => t('Organisms'),
- '#type' => t('checkboxes'),
- '#description' => t("Check the organisms whose features you want to reset taxonomy. Note: this list contains all organisms, even those that may not be synced."),
- '#required' => FALSE,
- '#prefix' => '<div id="lib_boxes">',
- '#suffix' => '</div>',
- '#options' => $org_boxes,
- '#weight' => 2
- );
- $form['taxonify']['tx-button'] = array(
- '#type' => 'submit',
- '#value' => t('Set Feature Taxonomy'),
- '#weight' => 3
- );
- }
- function get_tripal_organism_admin_form_reindex_set(&$form) {
-
- $form['reindex'] = array(
- '#type' => 'fieldset',
- '#title' => t('Reindex Organism Features')
- );
-
- $sql = "SELECT * FROM {Organism} ORDER BY genus,species";
- $org_rset = chado_query($sql);
-
- $org_boxes = array();
- foreach ($org_rset as $organism) {
- $org_boxes[$organism->organism_id] = "$organism->genus $organism->species";
- }
- $form['reindex']['description'] = array(
- '#type' => 'item',
- '#value' => t("This option allows for reindexing of only those features that belong to the selected organisms below. All other features will be unaffected. To reindex all features in the site see the Feature Administration page."),
- '#weight' => 1,
- );
- $form['reindex']['re-organisms'] = array(
- '#title' => t('Organisms'),
- '#type' => t('checkboxes'),
- '#description' => t("Check the organisms whose features you want to reindex. Note: this list contains all organisms, even those that may not be synced."),
- '#required' => FALSE,
- '#prefix' => '<div id="lib_boxes">',
- '#suffix' => '</div>',
- '#options' => $org_boxes,
- '#weight' => 2,
- );
- $form['reindex']['re-button'] = array(
- '#type' => 'submit',
- '#value' => t('Reindex Features'),
- '#weight' => 3,
- );
- }
- function tripal_organism_admin_validate($form, &$form_state) {
- global $user;
- $job_args = array();
-
-
- if ($form_state['values']['op'] == t('Reindex Features')) {
- $organisms = $form_state['values']['re-organisms'];
- foreach ($organisms as $organism_id) {
- if ($organism_id and preg_match("/^\d+$/i" , $organism_id)) {
-
- $sql = "SELECT * FROM {organism} WHERE organism_id = :organism_id";
- $organism = chado_query($sql, array(':organism_id' => $organism_id))->fetchObject();
- $job_args[0] = $organism_id;
- tripal_add_job("Reindex features for organism: $organism->genus " .
- "$organism->species", 'tripal_organism' ,
- 'tripal_organism_reindex_features', $job_args, $user->uid);
- }
- }
- }
-
-
- if ($form_state['values']['op'] == t('Set Feature Taxonomy')) {
- $organisms = $form_state['values']['tx-organisms'];
- foreach ($organisms as $organism_id) {
- if ($organism_id and preg_match("/^\d+$/i", $organism_id)) {
-
- $sql = "SELECT * FROM {organism} WHERE organism_id = :organism_id";
- $organism = chado_query($sql, array(':organism_id' => $organism_id))->fetchObject();
- $job_args[0] = $organism_id;
- tripal_add_job("Set taxonomy for features in organism: " .
- "$organism->genus $organism->species" , 'tripal_organism',
- 'tripal_organism_taxonify_features', $job_args, $user->uid);
- }
- }
- }
- }
- function tripal_organism_reindex_features($organism_id = NULL, $job_id = NULL) {
- $i = 0;
- if (!$organism_id) {
- return;
- }
- $sql = "
- SELECT *
- FROM {feature}
- WHERE organism_id = :organism_id
- ORDER BY feature_id";
- $results = chado_query($sql, array(':organism_id' => $organism_id));
-
- $count = 0;
- $ids = array();
- foreach ($results as $id) {
- $ids[$count] = $id->feature_id;
- $count++;
- }
- $interval = intval($count * 0.01);
- foreach ($ids as $feature_id) {
-
- if ($job_id and $i % $interval == 0) {
- tripal_job_set_progress($job_id , intval(($i/$count)*100));
- }
- $i++;
- }
- }
- function tripal_organism_taxonify_features($organism_id = NULL, $job_id = NULL) {
- $i = 0;
- if (!$organism_id) {
- return;
- }
- $sql = "
- SELECT *
- FROM {feature}
- WHERE organism_id = :organism_id
- ORDER BY feature_id
- ";
- $results = chado_query($sql, array(':organism_id' => $organism_id));
-
- $count = 0;
- $ids = array();
- foreach ($results as $id) {
- $ids[$count] = $id->feature_id;
- $count++;
- }
-
- tripal_feature_set_vocabulary();
-
- $nsql = "SELECT * FROM {chado_feature} CF " .
- " INNER JOIN {node} N ON N.nid = CF.nid " .
- "WHERE feature_id = :feature_id";
-
- $interval = intval($count * 0.01);
- foreach ($ids as $feature_id) {
-
- if ($job_id and $i % $interval == 0) {
- tripal_job_set_progress($job_id, intval(($i/$count)*100));
- }
- $node = db_query($nsql, array(':feature_id' => $feature_id))->fetchObject();
- tripal_feature_set_taxonomy($node, $feature_id);
- $i++;
- }
- }
|