Index: views/webform.views.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/webform/views/webform.views.inc,v
retrieving revision 1.1
diff -u -p -r1.1 webform.views.inc
--- views/webform.views.inc	12 May 2009 16:04:30 -0000	1.1
+++ views/webform.views.inc	12 Oct 2009 15:29:56 -0000
@@ -122,6 +122,30 @@ function webform_views_data() {
     ),
   );
 
+  // user submitted
+  $data['webform_user_submitted']['table']['group']  = t('Node');
+  $data['webform_user_submitted']['table']['join'] = array(
+    'node' => array(
+      'table' => 'webform_submissions',
+      'left_field' => 'nid',
+      'field' => 'nid',
+      'extra' => array(
+        array(
+          'field' => 'uid',
+          'value' => '***CURRENT_USER***',
+          'numeric' => TRUE,
+        ),
+      ),
+    ),
+  );
+  $data['webform_user_submitted']['submitted'] = array(
+    'title' => t('Webform submitted by user'),
+    'filter' => array(
+      'handler' => 'webform_handler_filter_user_submitted',
+      'help' => t('Whether or not the user has submitted this webform.'),
+    ),
+  );
+
   return $data;
 }
 
@@ -180,6 +204,10 @@ function webform_views_handlers() {
         'parent' => 'views_handler_field',
         'file' => 'webform_handler_field_form_body.inc',
       ),
+      'webform_handler_filter_user_submitted' => array(
+        'parent' => 'views_handler_filter_boolean_operator',
+        'file' => 'webform_handler_filter_user_submitted.inc',
+      ),
     ),
   );
-}
\ No newline at end of file
+}
Index: views/webform_handler_filter_user_submitted.inc
===================================================================
RCS file: views/webform_handler_filter_user_submitted.inc
diff -N views/webform_handler_filter_user_submitted.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ views/webform_handler_filter_user_submitted.inc	12 Oct 2009 15:25:55 -0000
@@ -0,0 +1,26 @@
+<?php
+// $Id$
+
+/**
+ * Filter based on the current user's existing submissions.
+ */
+class webform_handler_filter_user_submitted extends views_handler_filter_boolean_operator {
+  function value_form(&$form, &$form_state) {
+    $form['value'] = array(
+      '#type' => 'radios',
+      '#title' => t('User has submitted the webform.'),
+      '#default_value' => $this->value,
+      '#options' => array(
+        1 => t('Yes'),
+        0 => t('No'),
+      ),
+    );
+  }
+
+  function query() {
+    $operator = $this->value ? 'IS NOT' : 'IS';
+
+    $this->ensure_my_table();
+    $this->query->add_where($this->options['group'], $this->table .'.nid '. $operator .' NULL');
+  }
+}
