Index: relativity_access.module
===================================================================
--- relativity_access.module	(revision 63)
+++ relativity_access.module	(working copy)
@@ -2,6 +2,11 @@
 
 /* $Id: relativity_access.module,v 1.1.2.4 2007/09/05 12:41:25 agaric Exp $ */  
 
+if (module_exists('views')) {
+  // Include views if applicable
+  include 'relativity_access_views.inc';
+}
+
 /**
 * Display help and module information
 * @param section which section of the site we're displaying help
Index: relativity_access_views.inc
===================================================================
--- relativity_access_views.inc	(revision 64)
+++ relativity_access_views.inc	(working copy)
@@ -0,0 +1,51 @@
+<?php
+
+// $Id$
+
+/**
+ * @file
+ *   Views hooks for relativity access
+ */
+
+function relativity_access_views_tables() {
+  $tables['relativity_access'] = array(
+    'name' => 'relativity_access',
+    'join' => array(
+      'left' => array('table' => 'node',
+                      'field' => 'nid'),
+      'right' => array(
+        'field' => 'nid')
+    ),
+    'filters' => array(
+      'uid' => array(
+        'name' => t('Relativity Access: User ID'),
+        'operator' => 'views_handler_operator_eqneq',
+        'list' => array('***CURRENT_USER***' => t('Currently Logged In User'), '***ANY_USER***' => t('Any user')),
+        'list-type' => 'select',
+        'handler' => 'relativity_access_handler_filter_uid_assigned',
+        'help' => t('Filter nodes by whether the currently logged in user has been assigned.'),
+        'content_type' => 'node',
+      ),
+    ),
+  );
+  return $tables;
+}
+
+function relativity_access_handler_filter_uid_assigned($op, $filter, $filterinfo, &$query) {
+  $table_data = _views_get_tables();
+  $joininfo = $table_data['relativity_access']['join'];
+  $joininfo['type'] = 'inner';
+  $table_num = $query->add_table('relativity_access', FALSE, 1, $joininfo);
+  $table = $query->get_table_name('relativity_access', $table_num);
+  $query->set_distinct();
+
+  switch($filter['value']) {
+    case '***CURRENT_USER***':
+      $query->add_where("$table.uid = ***CURRENT_USER***");
+      break;
+    case '***ANY_USER***':
+      // No special processing needed, since we do an inner join anyways
+      break;
+  }
+}
+
