Browse Source

Added code to check access permissions for analysis nodes when listing in the GO Summary

spficklin 13 years ago
parent
commit
63adb9584f

+ 19 - 0
tripal_analysis/tripal_analysis.api.inc

@@ -205,3 +205,22 @@ function tripal_analysis_update_property($analysis_id,$property,$value,$insert_i
 function tripal_analysis_delete_property($analysis_id,$property){
    return tripal_core_delete_property('analysis',$analysis_id,$property,'tripal');
 }
+/**
+ * Retreives the node of a sync'ed analysis
+ *
+ * @param $analysis_id
+ *   The analysis_id of the property to delete
+ *
+ * @return
+ *   node of analysis on success, null otherwise 
+ *
+ * @ingroup tripal_analysis_api
+ */
+function tripal_analysis_get_node($analysis_id){
+   $sql = "SELECT * 
+           FROM chado_analysis CA
+              INNER JOIN node N on CA.nid = N.nid
+           WHERE analysis_id = %d";
+   $node = db_fetch_object(db_query($sql,$analysis_id));
+   return $node;
+}

+ 1 - 1
tripal_analysis_go/theme/tripal_organism/tripal_organism_go_summary.tpl.php

@@ -10,7 +10,7 @@
         print $form;
      } else {
        ?><div class="tripal-no-results">
-           There are no GO reports avaialble
+           There are no GO reports available
            <?php if(user_access('access administration pages')){ ?>
               <p><br>Administrators, to view a GO report you must:
               <ul>

+ 15 - 7
tripal_analysis_go/tripal_analysis_go.module

@@ -261,7 +261,11 @@ function tripal_analysis_go_select_form(&$form_state = NULL,$node){
    $analyses = array();
    $analyses[''] = '';
    while($analysis = db_fetch_object($results)){
-   		$analyses[$analysis->analysis_id."-".$analysis->organism_id] = "$analysis->name";
+      # check to see if the user has permission to see this analysis
+      $node = tripal_analysis_get_node($analysis->analysis_id);
+      if(node_access("view",$node)){
+         $analyses[$analysis->analysis_id."-".$analysis->organism_id] = "$analysis->name";
+      }
    }
   
    # create the select box
@@ -310,22 +314,26 @@ function tripal_analysis_go_org_charts ($element) {
 /************************************************************************
 */
 function tripal_analysis_go_load_organism_go_summary($node) {
-   $organism = $node->organism;
-
+  $organism = $node->organism;
+	
    // check to see if we have any analyses
    $sql = "
-     SELECT count(*) as cnt
+     SELECT A.analysis_id
      FROM {go_count_analysis} GCA
        INNER JOIN Analysis A on GCA.analysis_id = A.analysis_id
      WHERE organism_id = %d
    ";
    $previous_db = tripal_db_set_active('chado');
-   $results = db_fetch_object(db_query($sql,$organism->organism_id));
+   $results = db_query($sql,$organism->organism_id);
    tripal_db_set_active($previous_db);
 
+   # check to ensure we have access to at least one of the GO analyses
    $has_results = 0;
-   if($results->cnt > 0){
-      $has_results = 1;
+   while($analysis = db_fetch_object($results)){
+      $node = tripal_analysis_get_node($analysis->analysis_id);
+      if(node_access("view",$node)){
+         $has_results = 1;
+      }
    }
    return array (
       'has_results' => $has_results,