瀏覽代碼

Added back old-style views integration to link chado base tables to the node table

Lacey Sanderson 12 年之前
父節點
當前提交
296be581e8
共有 2 個文件被更改,包括 416 次插入0 次删除
  1. 8 0
      tripal_views/tripal_views.views.inc
  2. 408 0
      tripal_views/views/chado_linking.TMP.inc

+ 8 - 0
tripal_views/tripal_views.views.inc

@@ -4,6 +4,10 @@ include('views/handlers/views_handler_join_chado_through_linking.inc');
 include('views/handlers/views_handler_join_chado_aggregator.inc');
 include('tripal_views.api.inc');
 
+
+// TEMPORARY
+include('views/chado_linking.TMP.inc');
+
 /**
  * @file
  * Tripal Views Integration
@@ -579,6 +583,10 @@ function tripal_views_views_data() {
     }
   }
 
+  // TEMPORARY: needed to join chado base tables to node linking tables
+  // currently done using old-style data arrays
+  $data = tripal_views_TEMPORARY_chado_linking_data($data);
+
   return $data;
 }
 

+ 408 - 0
tripal_views/views/chado_linking.TMP.inc

@@ -0,0 +1,408 @@
+<?php
+
+/**
+ * This is a temporary function holding all the old-style views integration
+ * needed to link the base tables to their node. This will remain to keep things working
+ * until it has been best determined how to do this via the new tripal_views integration
+ *
+ * It's called att the bottom of tripal_views_views_data()
+ */
+function tripal_views_TEMPORARY_chado_linking_data($data) {
+  global $db_url;
+
+  // if the chado database is not local to the drupal database
+  // then we need to set the database name.  This should always
+  // be 'chado'.
+  if(is_array($db_url) and array_key_exists('chado',$db_url)){
+     // return empty data array b/c if chado is external then no join to the nodetable can be made
+     return $data;
+  }
+
+  // FEATURE ====================================
+  if (module_exists('tripal_feature')) {
+    // Basic table definition
+    $data['chado_feature']['table'] = array(
+      'field' => 'nid',
+      'group' => 'Chado Feature'
+    );
+
+    $data['chado_feature']['nid'] = array(
+      'title' => t('Feature Node ID'),
+      'help' => t('The node ID for this feature'),
+      'field' => array(
+        'handler' => 'views_handler_field_numeric',
+        'click sortable' => TRUE,
+      ),
+      'filter' => array(
+        'handler' => 'views_handler_filter_numeric',
+      ),
+      'sort' => array(
+        'handler' => 'views_handler_sort',
+      ),
+    );
+
+    // Note: No joins need to be made from $data['feature']['table']
+
+    // Join the chado feature table to feature
+    $data['chado_feature']['table']['join']['feature'] = array(
+      'left_field' => 'feature_id',
+      'field' => 'feature_id',
+    );
+
+    // Join the node table to chado feature
+    $data['node']['table']['join']['chado_feature'] = array(
+      'left_field' => 'nid',
+      'field' => 'nid',
+    );
+
+    // Join the node table to feature
+    $data['node']['table']['join']['feature'] = array(
+      'left_table' => 'chado_feature',
+      'left_field' => 'nid',
+      'field' => 'nid',
+    );
+
+    // Add relationship between chado_feature and feature
+    $data['chado_feature']['feature_nid'] = array(
+      'group' => 'Feature',
+      'title' => 'Feature Node',
+      'help' => 'Links Chado Feature Fields/Data to the Nodes in the current View.',
+      'real field' => 'feature_id',
+      'relationship' => array(
+        'handler' => 'views_handler_relationship',
+        'title' => t('Chado => Feature'),
+        'label' => t('Chado => Feature'),
+        'real field' => 'feature_id',
+        'base' => 'feature',
+        'base field' => 'feature_id'
+      ),
+    );
+
+    // Add node relationship to feature
+    $data['chado_feature']['feature_chado_nid'] = array(
+      'group' => 'Feature',
+      'title' => 'Feature Node',
+      'help' => 'Links Chado Feature Fields/Data to the Nodes in the current View.',
+      'real field' => 'nid',
+      'relationship' => array(
+        'handler' => 'views_handler_relationship',
+        'title' => t('Chado => Node'),
+        'label' => t('Chado => Node'),
+        'real field' => 'nid',
+        'base' => 'node',
+        'base field' => 'nid'
+      ),
+    );
+  }
+
+  // ANALYSIS ===================================
+  if (module_exists('tripal_analysis')) {
+    // Basic table definition
+    $data['chado_analysis']['table'] = array(
+      'field' => 'nid',
+      'group' => 'Chado Analysis'
+    );
+
+    $data['chado_analysis']['nid'] = array(
+      'title' => t('Analysis Node ID'),
+      'help' => t('The node ID for this analysis'),
+      'field' => array(
+        'handler' => 'views_handler_field_numeric',
+        'click sortable' => TRUE,
+      ),
+      'filter' => array(
+        'handler' => 'views_handler_filter_numeric',
+      ),
+      'sort' => array(
+        'handler' => 'views_handler_sort',
+      ),
+    );
+
+    // Note: No joins need to be made from $data['analysis']['table']
+
+    // Join the chado analysis table to analysis
+    $data['chado_analysis']['table']['join']['analysis'] = array(
+      'left_field' => 'analysis_id',
+      'field' => 'analysis_id',
+    );
+
+    // Join the node table to chado analysis
+    $data['node']['table']['join']['chado_analysis'] = array(
+      'left_field' => 'nid',
+      'field' => 'nid',
+    );
+
+    // Join the node table to analysis
+    $data['node']['table']['join']['analysis'] = array(
+      'left_table' => 'chado_analysis',
+      'left_field' => 'nid',
+      'field' => 'nid',
+    );
+
+    // Add relationship between chado_analysis and analysis
+    $data['chado_analysis']['analysis_nid'] = array(
+      'group' => 'Analysis',
+      'title' => 'Analysis Node',
+      'help' => 'Links Chado Analysis Fields/Data to the Nodes in the current View.',
+      'real field' => 'analysis_id',
+      'relationship' => array(
+        'handler' => 'views_handler_relationship',
+        'title' => t('Chado => Analysis'),
+        'label' => t('Chado => Analysis'),
+        'real field' => 'analysis_id',
+        'base' => 'analysis',
+        'base field' => 'analysis_id'
+      ),
+    );
+
+    // Add node relationship to analysis
+    $data['chado_analysis']['analysis_chado_nid'] = array(
+      'group' => 'Analysis',
+      'title' => 'Analysis Node',
+      'help' => 'Links Chado Analysis Fields/Data to the Nodes in the current View.',
+      'real field' => 'nid',
+      'relationship' => array(
+        'handler' => 'views_handler_relationship',
+        'title' => t('Chado => Node'),
+        'label' => t('Chado => Node'),
+        'real field' => 'nid',
+        'base' => 'node',
+        'base field' => 'nid'
+      ),
+    );
+  }
+
+  // ORGANISM ===================================
+  if (module_exists('tripal_organism')) {
+    // Basic table definition
+    $data['chado_organism']['table'] = array(
+      'field' => 'nid',
+      'group' => 'Chado Organism'
+    );
+
+    $data['chado_organism']['nid'] = array(
+      'title' => t('Organism Node ID'),
+      'help' => t('The node ID for this organism'),
+      'field' => array(
+        'handler' => 'views_handler_field_numeric',
+        'click sortable' => TRUE,
+      ),
+      'filter' => array(
+        'handler' => 'views_handler_filter_numeric',
+      ),
+      'sort' => array(
+        'handler' => 'views_handler_sort',
+      ),
+    );
+
+    // Note: No joins need to be made from $data['organism']['table']
+
+    // Join the chado organism table to organism
+    $data['chado_organism']['table']['join']['organism'] = array(
+      'left_field' => 'organism_id',
+      'field' => 'organism_id',
+    );
+
+    // Join the node table to chado organism
+    $data['node']['table']['join']['chado_organism'] = array(
+      'left_field' => 'nid',
+      'field' => 'nid',
+    );
+
+    // Join the node table to organism
+    $data['node']['table']['join']['organism'] = array(
+      'left_table' => 'chado_organism',
+      'left_field' => 'nid',
+      'field' => 'nid',
+    );
+
+    // Add relationship between chado_organism and organism
+    $data['chado_organism']['organism_id'] = array(
+      'group' => 'Organism',
+      'title' => 'Organism Node',
+      'help' => 'Links Chado Organism Fields/Data to the Nodes in the current View.',
+      'real field' => 'organism_id',
+      'relationship' => array(
+        'handler' => 'views_handler_relationship',
+        'title' => t('Chado => Organism'),
+        'label' => t('Chado => Organism'),
+        'real field' => 'organism_id',
+        'base' => 'organism',
+        'base field' => 'organism_id'
+      ),
+    );
+  /*
+    // Add node relationship to organism
+    $data['chado_organism']['nid'] = array(
+      'group' => 'Organism',
+      'title' => 'Organism Node',
+      'help' => 'Links Chado Organism Fields/Data to the Nodes in the current View.',
+      'real field' => 'nid',
+      'relationship' => array(
+        'handler' => 'views_handler_relationship',
+        'title' => t('Chado => Node'),
+        'label' => t('Chado => Node'),
+        'real field' => 'nid',
+        'base' => 'node',
+        'base field' => 'nid'
+      ),
+    );
+  */
+  }
+
+  // LIBRARY ====================================
+  if (module_exists('tripal_library')) {
+    // Basic table definition
+    $data['chado_library']['table'] = array(
+      'field' => 'nid',
+      'group' => 'Chado Library'
+    );
+
+    $data['chado_library']['nid'] = array(
+      'title' => t('Library Node ID'),
+      'help' => t('The node ID for this library'),
+      'field' => array(
+        'handler' => 'views_handler_field_numeric',
+        'click sortable' => TRUE,
+      ),
+      'filter' => array(
+        'handler' => 'views_handler_filter_numeric',
+      ),
+      'sort' => array(
+        'handler' => 'views_handler_sort',
+      ),
+    );
+
+    // Note: No joins need to be made from $data['library']['table']
+
+    // Join the chado library table to library
+    $data['chado_library']['table']['join']['library'] = array(
+      'left_field' => 'library_id',
+      'field' => 'library_id',
+    );
+
+    // Join the node table to chado library
+    $data['node']['table']['join']['chado_library'] = array(
+      'left_field' => 'nid',
+      'field' => 'nid',
+    );
+
+    // Join the node table to library
+    $data['node']['table']['join']['library'] = array(
+      'left_table' => 'chado_library',
+      'left_field' => 'nid',
+      'field' => 'nid',
+    );
+
+    // Add relationship between chado_library and library
+    $data['chado_library']['library_nid'] = array(
+      'group' => 'Library',
+      'title' => 'Library Node',
+      'help' => 'Links Chado Library Fields/Data to the Nodes in the current View.',
+      'real field' => 'library_id',
+      'relationship' => array(
+        'handler' => 'views_handler_relationship',
+        'title' => t('Chado => Library'),
+        'label' => t('Chado => Library'),
+        'real field' => 'library_id',
+        'base' => 'library',
+        'base field' => 'library_id'
+      ),
+    );
+
+    // Add node relationship to library
+    $data['chado_library']['library_chado_nid'] = array(
+      'group' => 'Library',
+      'title' => 'Library Node',
+      'help' => 'Links Chado Library Fields/Data to the Nodes in the current View.',
+      'real field' => 'nid',
+      'relationship' => array(
+        'handler' => 'views_handler_relationship',
+        'title' => t('Chado => Node'),
+        'label' => t('Chado => Node'),
+        'real field' => 'nid',
+        'base' => 'node',
+        'base field' => 'nid'
+      ),
+    );
+  }
+
+  // STOCK ======================================
+  if (module_exists('tripal_stock')) {
+    // Basic table definition
+    $data['chado_stock']['table'] = array(
+      'field' => 'stock_id',
+      'group' => 'Chado Stock',
+    );
+
+    $data['chado_stock']['nid'] = array(
+      'title' => t('Stock Node ID'),
+      'help' => t('The node ID for this analysis'),
+      'field' => array(
+        'handler' => 'views_handler_field_numeric',
+        'click sortable' => TRUE,
+      ),
+      'filter' => array(
+        'handler' => 'views_handler_filter_numeric',
+      ),
+      'sort' => array(
+        'handler' => 'views_handler_sort',
+      ),
+    );
+
+    // Note: No joins need to be made from $data['stock']['table']
+
+    // Join the chado stock table to stock
+    $data['chado_stock']['table']['join']['stock'] = array(
+      'left_field' => 'stock_id',
+      'field' => 'stock_id',
+    );
+
+    // Join the node table to chado stock
+    $data['node']['table']['join']['chado_stock'] = array(
+      'left_field' => 'nid',
+      'field' => 'nid',
+    );
+
+    // Join the node table to stock
+    $data['node']['table']['join']['stock'] = array(
+      'left_table' => 'chado_stock',
+      'left_field' => 'nid',
+      'field' => 'nid',
+    );
+
+    // Add relationship between chado_stock and stock
+    $data['chado_stock']['stock_nid'] = array(
+      'group' => 'Stock',
+      'title' => 'Stock Node',
+      'help' => 'Links Chado Stock Fields/Data to the Nodes in the current View.',
+      'real field' => 'stock_id',
+      'relationship' => array(
+        'handler' => 'views_handler_relationship',
+        'title' => t('Chado => Stock'),
+        'label' => t('Chado => Stock'),
+        'real field' => 'stock_id',
+        'base' => 'stock',
+        'base field' => 'stock_id'
+      ),
+    );
+
+    // Add node relationship to stock
+    $data['chado_stock']['stock_chado_nid'] = array(
+      'group' => 'Stock',
+      'title' => 'Stock Node',
+      'help' => 'Links Chado Stock Fields/Data to the Nodes in the current View.',
+      'real field' => 'nid',
+      'relationship' => array(
+        'handler' => 'views_handler_relationship',
+        'title' => t('Chado => Node'),
+        'label' => t('Chado => Node'),
+        'real field' => 'nid',
+        'base' => 'node',
+        'base field' => 'nid'
+      ),
+    );
+  }
+
+  return $data;
+}