Index: nodereferrer.views.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/nodereferrer/views/nodereferrer.views.inc,v
retrieving revision 1.1
diff -u -r1.1 nodereferrer.views.inc
--- nodereferrer.views.inc	5 Mar 2009 03:51:08 -0000	1.1
+++ nodereferrer.views.inc	24 May 2009 12:33:54 -0000
@@ -33,6 +33,20 @@
       'handler' => 'nodereferrer_view_handler_field_type',
     ),
   );
+  
+  $cache['node']['nodereferer_referers'] = array(
+    'group' => t('Node'),
+    'relationship' => array(
+      'title' => t('Referers'),
+      'label' => t('Referers Node'),
+      'help' => t('Add a relationship to gain access to referer nodes.'),
+      'relationship table' => 'node',
+      'relationship field' => 'nid',
+      'base' => 'node',
+      'field' => 'nid',
+      'handler' => 'nodereferrer_handler_relationship',
+    ),
+  );
 }
 
 /**
@@ -71,6 +85,9 @@
       'nodereferrer_view_handler_field_type' => array(
         'parent' => 'nodereferrer_view_handler_field',
       ),
+	  'nodereferrer_handler_relationship' => array(
+	    'parent' => 'views_handler_relationship',
+	  ),
     ),
   );
 }
--- nodereferrer_handler_relationship.inc
+++ nodereferrer_handler_relationship.inc
@@ -0,0 +1,58 @@
+<?php
+// $Id$
+
+class nodereferrer_handler_relationship extends views_handler_relationship {
+  var $content_field;
+  
+  function construct() {
+    parent::construct();
+
+    $this->content_field = content_fields($this->definition['content_field_name']);
+  }
+
+
+  function option_definition() {
+    $options = parent::option_definition();
+    $options['image_size'] = array('default' => IMAGE_PREVIEW);
+
+    return $options;
+  }
+
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+
+    $form['referer_field'] = array(
+      '#type' => 'select',
+      '#title' => t('Using field'),
+      '#options' => nodereferrer_nodereference_field_options(),
+      '#default_value' => empty($this->options['referer_field']) ? array() : $this->options['referer_field'],
+    );
+    
+    /*
+    $form['referer_delta'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Field delta'),
+      '#default_value' => empty($this->options['referer_delta']) ? array() : $this->options['referer_delta'],
+      '#description' => t('(optional) Leave blank to use all delta.'),
+    );
+    */
+  }
+
+  function ensure_my_table() {
+    if (!isset($this->table_alias)) {
+      $fieldname = $this->options['referer_field'];
+      $field = content_fields($fieldname);
+    	
+      $db_info = content_database_info($field);
+    	
+      $join = new views_join();
+      $join->construct($db_info['table'],'node','nid',$db_info['columns']['nid']['column']);
+      
+      // TODO: add delta condition
+
+      $this->table_alias = $this->query->add_table($this->table,$this->relationship,$join);
+    }
+
+    return $this->table_alias;
+  }
+}


