Tripal v1.0 (6.x-1.0)
chado_views_handler_relationship_to_node.inc
Go to the documentation of this file.
00001 <?php
00023 class chado_views_handler_relationship_to_node extends views_handler_relationship {
00024 
00025   function query() {
00026 
00027     $this->ensure_my_table();
00028 
00029     // The base table in chado
00030     $base_table = $this->definition['base table'];
00031     $base_field = $this->definition['base field'];
00032 
00033     // The drupal linking table
00034     $chado_table = 'chado_' . $base_table;
00035 
00036     // Need to remove the incorrectly added node & chado_table join
00037     unset($this->query->table_queue['node'],
00038       $this->query->tables['stock']['node'],
00039       $this->query->table_queue[$chado_table],
00040       $this->query->tables['stock'][$chado_table]);
00041 
00042     // First add base => chado_base join
00043     $def = array();
00044     $def['table'] = $chado_table;
00045     $def['field'] = $base_field;
00046     $def['left_table'] = $base_table;
00047     $def['left_field'] = $base_field;
00048     //$def['handler'] = 'views_handler_join_chado_aggregator';
00049 
00050     $join = new views_join();
00051 
00052     $join->definition = $def;
00053     $join->construct();
00054     $join->adjusted = TRUE;
00055 
00056     $alias = $base_table . '_' . $chado_table;
00057     $this->linker_alias = $this->query->add_relationship($alias, $join, $this->table);
00058 
00059     // Now add chado_base => node join
00060     $def = array();
00061     $def['table'] = 'node';
00062     $def['field'] = 'nid';
00063     $def['left_table'] = $this->linker_alias;
00064     $def['left_field'] = 'nid';
00065     //$def['handler'] = 'views_handler_join_chado_aggregator';
00066 
00067     $join = new views_join();
00068 
00069     $join->definition = $def;
00070     $join->construct();
00071     $join->adjusted = TRUE;
00072 
00073     if ($base_table == $this->view->base_table) {
00074       $alias = 'node';
00075     }
00076     else {
00077       $alias = $chado_table . '_node';
00078     }
00079     $this->alias = $this->query->add_relationship($alias, $join, 'node');
00080   }
00081 }
 All Classes Files Functions Variables