Browse Source

Fixed bugs in organism stock browser

spficklin 12 years ago
parent
commit
6fe311ea52
1 changed files with 45 additions and 0 deletions
  1. 45 0
      tripal_stock/tripal_stock.module

+ 45 - 0
tripal_stock/tripal_stock.module

@@ -1038,4 +1038,49 @@ function tripal_stock_nodeapi(&$node, $op, $teaser, $page) {
       }
       break;
   }
+}
+
+/**
+ *
+ *
+ * @ingroup tripal_stock
+ */
+function tripal_stock_preprocess_tripal_organism_stocks(&$variables) {
+  $organism = $variables['node']->organism;
+
+  if (!$organism) {
+    return;
+  }
+  
+  // get the stocks for this organism
+  $sql  = "SELECT S.name, S.stock_id, S.uniquename, CVT.name as cvname ".
+          "FROM {stock} S ".
+          "  INNER JOIN {cvterm} CVT on S.type_id = CVT.cvterm_id ".
+          "WHERE organism_id = %s".
+          "ORDER BY stock_id ASC";
+
+  // the counting SQL
+  $csql  = "SELECT count(*) ".
+           "FROM {stock} S".
+           "  INNER JOIN {cvterm} CVT on S.type_id = CVT.cvterm_id ".
+           "WHERE organism_id = %s ".
+           "GROUP BY organism_id ";
+
+  $previous_db = tripal_db_set_active('chado');  // use chado database
+  $org_stocks = pager_query($sql, 10, 0, $csql, $organism->organism_id);
+  tripal_db_set_active($previous_db);  // now use drupal database
+  $pager = theme('pager');
+
+  // prepare the query that will lookup node ids
+  $sql = "SELECT nid FROM {chado_stock} ".
+         "WHERE stock_id = %d";
+  $i=0;
+  $stocks = array();
+  while ($stock = db_fetch_object($org_stocks)) {
+    $node = db_fetch_object(db_query($sql, $stock->stock_id));
+    $stock->nid = $node->nid;
+    $stocks[$i++] = $stock;
+  }
+  
+  $organism->stock_browser =  array('stocks' => $stocks, 'pager' => $pager, 'enabled' => TRUE );
 }