? nodereferrer-modify-relationship-handler-545396-dev.patch.txt ? nodereferrer-modify-relationship-handler-545396.patch.txt Index: views/nodereferrer_view_handler_relationship.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/nodereferrer/views/nodereferrer_view_handler_relationship.inc,v retrieving revision 1.1.2.4 diff -u -r1.1.2.4 nodereferrer_view_handler_relationship.inc --- views/nodereferrer_view_handler_relationship.inc 29 Mar 2010 21:08:23 -0000 1.1.2.4 +++ views/nodereferrer_view_handler_relationship.inc 14 Dec 2010 18:59:48 -0000 @@ -76,4 +76,40 @@ return $this->table_alias; } + + /** + * Called to implement a relationship in a query. + */ + function query() { + // Figure out what base table this relationship brings to the party. + $table_data = views_fetch_data($this->definition['base']); + $base_field = empty($this->definition['base field']) ? $table_data['table']['base']['field'] : $this->definition['base field']; + + $this->ensure_my_table(); + + $def = $this->definition; + $def['table'] = $this->definition['base']; + $def['field'] = 'vid'; + $def['left_table'] = $this->table_alias; + $def['left_field'] = 'vid'; + if (!empty($this->options['required'])) { + $def['type'] = 'INNER'; + } + + if (!empty($def['join_handler']) && class_exists($def['join_handler'])) { + $join = new $def['join_handler']; + } + else { + $join = new views_join(); + } + + $join->definition = $def; + $join->construct(); + $join->adjusted = TRUE; + + // use a short alias for this: + $alias = $def['table'] . '_' . $this->table; + + $this->alias = $this->query->add_relationship($alias, $join, $this->definition['base'], $this->relationship); + } }