Index: casetracker.views.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/casetracker/casetracker.views.inc,v
retrieving revision 1.3.2.1
diff -u -p -r1.3.2.1 casetracker.views.inc
--- casetracker.views.inc	2 Mar 2009 15:59:54 -0000	1.3.2.1
+++ casetracker.views.inc	11 Mar 2010 20:04:07 -0000
@@ -53,6 +53,17 @@ function casetracker_views_data_casetrac
       'help' => t('Filter Case Tracker cases by the assigned user.'),
     ),
   );
+  $data['casetracker_case']['assign_to_extra'] = array(
+    'title' => t('Case assigned to or created by current user'),
+    'filter' => array(
+      'handler' => 'casetracker_views_handler_filter_user_created_or_assigned',
+      'help' => t('Filter Case Tracker cases that were created or assigned to the current user.'),
+    ),
+    'argument' => array(
+      'handler' => 'casetracker_views_handler_argument_user_created_or_assigned',
+      'help' => t('Filter Case Tracker cases that were created or assigned to a determinate user.'),
+    ),
+  );
   $data['casetracker_case']['case_priority_id'] = array(
     'title' => t('Case priority'),
     'field' => array(
@@ -208,6 +219,9 @@ function casetracker_views_handlers() {
       'casetracker_views_handler_filter_project_options' => array(
         'parent' => 'views_handler_filter_many_to_one',
       ),
+      'casetracker_views_handler_filter_user_created_or_assigned' => array(
+        'parent' => 'views_handler_filter',
+      ),
 
       // arguments: casetracker_case
       'casetracker_views_handler_argument_status' => array(
@@ -219,6 +233,9 @@ function casetracker_views_handlers() {
       'casetracker_views_handler_argument_type' => array(
         'parent' => 'views_handler_argument_numeric',
       ),
+      'casetracker_views_handler_argument_user_created_or_assigned' => array(
+        'parent' => 'views_handler_argument_user_uid',
+      ),
 
       // filters: casetracker_project
       'casetracker_views_handler_filter_project_published' => array(
Index: includes/casetracker_views_handler_argument_user_created_or_assigned.inc
===================================================================
RCS file: includes/casetracker_views_handler_argument_user_created_or_assigned.inc
diff -N includes/casetracker_views_handler_argument_user_created_or_assigned.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ includes/casetracker_views_handler_argument_user_created_or_assigned.inc	11 Mar 2010 20:04:07 -0000
@@ -0,0 +1,27 @@
+<?php
+// $Id$
+
+class casetracker_views_handler_argument_user_created_or_assigned extends views_handler_argument_user_uid {
+
+  function query() {
+    $this->ensure_my_table();
+    $node_table = $this->query->ensure_table('node', $this->relationship);
+
+    if (!empty($this->options['break_phrase'])) {
+      views_break_phrase($this->argument, $this);
+    }
+    else {
+      $this->value = array($this->argument);
+    }
+
+    if (count($this->value) > 1) {
+      $operator = empty($this->options['not']) ? 'IN' : 'NOT IN';
+      $placeholders = implode(', ', array_fill(0, sizeof($this->value), '%d'));
+      $this->query->add_where(0, "$this->table_alias.assign_to $operator ($placeholders) OR $node_table.uid $operator ($placeholders)", $this->value, $this->value);
+    }
+    else {
+      $operator = empty($this->options['not']) ? '=' : '!=';
+      $this->query->add_where(0, "$this->table_alias.assign_to $operator %d OR $node_table.uid $operator %d", $this->argument, $this->argument);
+    }
+  }
+}
Index: includes/casetracker_views_handler_filter_user_created_or_assigned.inc
===================================================================
RCS file: includes/casetracker_views_handler_filter_user_created_or_assigned.inc
diff -N includes/casetracker_views_handler_filter_user_created_or_assigned.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ includes/casetracker_views_handler_filter_user_created_or_assigned.inc	11 Mar 2010 20:04:08 -0000
@@ -0,0 +1,14 @@
+<?php
+// $Id$
+
+class casetracker_views_handler_filter_user_created_or_assigned extends views_handler_filter {
+  function admin_summary() { }
+  function operator_form() { }
+  function can_expose() { }
+
+  function query() {
+    $case_table = $this->ensure_my_table();
+    $node_table = $this->query->ensure_table('node', $this->relationship);
+    $this->query->add_where($this->options['group'], "***CURRENT_USER*** <> 0 AND ($case_table.assign_to = ***CURRENT_USER*** OR $node_table.uid = ***CURRENT_USER***)");
+  }
+}
