|
@@ -67,6 +67,9 @@ function tripal_stock_views_handlers() {
|
|
|
'views_handler_filter_stockprop_id' => array(
|
|
|
'parent' => 'views_handler_filter',
|
|
|
),
|
|
|
+ 'views_handler_argument_stockprop_id' => array(
|
|
|
+ 'parent' => 'views_handler_argument_string',
|
|
|
+ ),
|
|
|
),
|
|
|
);
|
|
|
}
|
|
@@ -92,75 +95,78 @@ function tripal_stock_views_pre_render (&$view) {
|
|
|
$stock_ids[$row_num] = $row->stock_id;
|
|
|
}
|
|
|
|
|
|
- //-----Properties------------------------------------------
|
|
|
- $field_names = array_keys($view->field);
|
|
|
- //if any property fields are in the current view
|
|
|
- $property_field_names = preg_grep('/properties/',$field_names);
|
|
|
- if (!empty($property_field_names)) {
|
|
|
- $sql = "SELECT stockprop.*, cvterm.name as type_name FROM stockprop "
|
|
|
- ."INNER JOIN cvterm cvterm ON stockprop.type_id=cvterm.cvterm_id "
|
|
|
- ."WHERE stockprop.stock_id IN (".implode(',',$stock_ids).")";
|
|
|
- $previous_db = db_set_active('chado');
|
|
|
- $resource = db_query($sql);
|
|
|
- db_set_active($previous_db);
|
|
|
+ if (sizeof($stock_ids)) {
|
|
|
+
|
|
|
+ //-----Properties------------------------------------------
|
|
|
+ $field_names = array_keys($view->field);
|
|
|
+ //if any property fields are in the current view
|
|
|
+ $property_field_names = preg_grep('/properties/',$field_names);
|
|
|
+ if (!empty($property_field_names)) {
|
|
|
+ $sql = "SELECT stockprop.*, cvterm.name as type_name FROM stockprop "
|
|
|
+ ."INNER JOIN cvterm cvterm ON stockprop.type_id=cvterm.cvterm_id "
|
|
|
+ ."WHERE stockprop.stock_id IN (".implode(',',$stock_ids).")";
|
|
|
+ $previous_db = db_set_active('chado');
|
|
|
+ $resource = db_query($sql);
|
|
|
+ db_set_active($previous_db);
|
|
|
|
|
|
- $view->result[$key]->properties = array();
|
|
|
- while ($r = db_fetch_object($resource)) {
|
|
|
- $key = array_search($r->stock_id, $stock_ids);
|
|
|
- $view->result[$key]->properties[] = $r;
|
|
|
+ $view->result[$key]->properties = array();
|
|
|
+ while ($r = db_fetch_object($resource)) {
|
|
|
+ $key = array_search($r->stock_id, $stock_ids);
|
|
|
+ $view->result[$key]->properties[] = $r;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- //-----Relationships----------------------------------------
|
|
|
- //if any relationship fields are in the current view
|
|
|
- $relationship_field_names = preg_grep('/relationships/', $field_names);
|
|
|
- if (!empty($relationship_field_names)) {
|
|
|
- $sql = "SELECT stock_relationship.*, cvterm.name as type_name, "
|
|
|
- ."subject_stock.name as subject_name, object_stock.name as object_name "
|
|
|
- ."FROM stock_relationship "
|
|
|
- ."LEFT JOIN stock subject_stock ON stock_relationship.subject_id=subject_stock.stock_id "
|
|
|
- ."LEFT JOIN stock object_stock ON stock_relationship.object_id=object_stock.stock_id "
|
|
|
- ."LEFT JOIN cvterm cvterm ON stock_relationship.type_id = cvterm.cvterm_id "
|
|
|
- ."WHERE stock_relationship.subject_id IN (".implode(',',$stock_ids).") "
|
|
|
- ."OR stock_relationship.object_id IN (".implode(',',$stock_ids).") ";
|
|
|
- $previous_db = db_set_active('chado');
|
|
|
- $resource = db_query($sql);
|
|
|
- db_set_active($previous_db);
|
|
|
+ //-----Relationships----------------------------------------
|
|
|
+ //if any relationship fields are in the current view
|
|
|
+ $relationship_field_names = preg_grep('/relationships/', $field_names);
|
|
|
+ if (!empty($relationship_field_names)) {
|
|
|
+ $sql = "SELECT stock_relationship.*, cvterm.name as type_name, "
|
|
|
+ ."subject_stock.name as subject_name, object_stock.name as object_name "
|
|
|
+ ."FROM stock_relationship "
|
|
|
+ ."LEFT JOIN stock subject_stock ON stock_relationship.subject_id=subject_stock.stock_id "
|
|
|
+ ."LEFT JOIN stock object_stock ON stock_relationship.object_id=object_stock.stock_id "
|
|
|
+ ."LEFT JOIN cvterm cvterm ON stock_relationship.type_id = cvterm.cvterm_id "
|
|
|
+ ."WHERE stock_relationship.subject_id IN (".implode(',',$stock_ids).") "
|
|
|
+ ."OR stock_relationship.object_id IN (".implode(',',$stock_ids).") ";
|
|
|
+ $previous_db = db_set_active('chado');
|
|
|
+ $resource = db_query($sql);
|
|
|
+ db_set_active($previous_db);
|
|
|
|
|
|
- while ($r = db_fetch_object($resource)) {
|
|
|
- if (in_array($r->subject_id, $stock_ids)) {
|
|
|
- $key = array_search($r->subject_id, $stock_ids);
|
|
|
- $r->stock_id = $r->subject_id;
|
|
|
- $view->result[$key]->relationships[] = clone $r;
|
|
|
- }
|
|
|
- if (in_array($r->object_id, $stock_ids)) {
|
|
|
- $key = array_search($r->object_id, $stock_ids);
|
|
|
- $r->stock_id = $r->object_id;
|
|
|
- $view->result[$key]->relationships[] = clone $r;
|
|
|
+ while ($r = db_fetch_object($resource)) {
|
|
|
+ if (in_array($r->subject_id, $stock_ids)) {
|
|
|
+ $key = array_search($r->subject_id, $stock_ids);
|
|
|
+ $r->stock_id = $r->subject_id;
|
|
|
+ $view->result[$key]->relationships[] = clone $r;
|
|
|
+ }
|
|
|
+ if (in_array($r->object_id, $stock_ids)) {
|
|
|
+ $key = array_search($r->object_id, $stock_ids);
|
|
|
+ $r->stock_id = $r->object_id;
|
|
|
+ $view->result[$key]->relationships[] = clone $r;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- //-----DB References--------------------------------------------
|
|
|
- //if any dbxref fields are in the current view
|
|
|
- $dbxref_field_names = preg_grep('/dbxref/',$field_names);
|
|
|
- if (!empty($dbxref_field_names)) {
|
|
|
- $sql = "SELECT stock_dbxref.*, dbxref.db_id, db.name as db_name, db.urlprefix, "
|
|
|
- ."dbxref.accession, dbxref.version, dbxref.description "
|
|
|
- ."FROM stock_dbxref "
|
|
|
- ."LEFT JOIN dbxref dbxref ON stock_dbxref.dbxref_id=dbxref.dbxref_id "
|
|
|
- ."LEFT JOIN db db ON dbxref.db_id=db.db_id "
|
|
|
- ."WHERE stock_dbxref.stock_id IN (".implode(',',$stock_ids).")";
|
|
|
- $previous_db = db_set_active('chado');
|
|
|
- $resource = db_query($sql);
|
|
|
- db_set_active($previous_db);
|
|
|
+ //-----DB References--------------------------------------------
|
|
|
+ //if any dbxref fields are in the current view
|
|
|
+ $dbxref_field_names = preg_grep('/dbxref/',$field_names);
|
|
|
+ if (!empty($dbxref_field_names)) {
|
|
|
+ $sql = "SELECT stock_dbxref.*, dbxref.db_id, db.name as db_name, db.urlprefix, "
|
|
|
+ ."dbxref.accession, dbxref.version, dbxref.description "
|
|
|
+ ."FROM stock_dbxref "
|
|
|
+ ."LEFT JOIN dbxref dbxref ON stock_dbxref.dbxref_id=dbxref.dbxref_id "
|
|
|
+ ."LEFT JOIN db db ON dbxref.db_id=db.db_id "
|
|
|
+ ."WHERE stock_dbxref.stock_id IN (".implode(',',$stock_ids).")";
|
|
|
+ $previous_db = db_set_active('chado');
|
|
|
+ $resource = db_query($sql);
|
|
|
+ db_set_active($previous_db);
|
|
|
|
|
|
- $view->result[$key]->dbxref = array();
|
|
|
- while ($r = db_fetch_object($resource)) {
|
|
|
- $key = array_search($r->stock_id, $stock_ids);
|
|
|
- $view->result[$key]->dbxref[] = $r;
|
|
|
+ $view->result[$key]->dbxref = array();
|
|
|
+ while ($r = db_fetch_object($resource)) {
|
|
|
+ $key = array_search($r->stock_id, $stock_ids);
|
|
|
+ $view->result[$key]->dbxref[] = $r;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
+
|
|
|
+ } //if there are stocks
|
|
|
} //if we're dealing with a stock view
|
|
|
}
|