Tripal v1.0 (6.x-1.0)
|
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 }