diff --git a/handlers/views_handler_filter_combine.inc b/handlers/views_handler_filter_combine.inc
new file mode 100644
index 0000000..f09371a
--- /dev/null
+++ b/handlers/views_handler_filter_combine.inc
@@ -0,0 +1,101 @@
+<?php
+
+/**
+ * Filter handler which allows to search on multiple fields.
+ *
+ * @ingroup views_field_handlers
+ */
+class views_handler_filter_combine extends views_handler_filter_string {
+  /**
+   * @var views_plugin_query_default
+   */
+  var $query;
+
+  function option_definition() {
+    $options = parent::option_definition();
+    $options['fields'] = array('default' => array('title', 'type'));
+
+    return $options;
+  }
+
+
+  function query() {
+    $this->view->_build('field');
+    $fields = array();
+    foreach ($this->options['fields'] as $id) {
+      $field = $this->view->field[$id];
+      if (!empty($field->field_alias)) {
+        $fields[] = "$field->table_alias.$field->real_field";
+      }
+    }
+    if ($fields) {
+      $count = count($fields);
+      $seperated_fields = array();
+      foreach ($fields as $key => $field) {
+        $seperated_fields[] = $field;
+        if ($key < $count-1) {
+          $seperated_fields[] = "' '";
+        }
+      }
+      $expression = implode(', ', $seperated_fields);
+      $expression = "CONCAT($expression)";
+
+      $info = $this->operators();
+      if (!empty($info[$this->operator]['method'])) {
+        $this->{$info[$this->operator]['method']}($expression);
+      }
+    }
+  }
+
+  function op_equal($field) {
+    $placeholder = $this->placeholder();
+    $operator = $this->operator();
+    $this->query->add_where_expression($this->options['group'], "$field $operator $placeholder", array($placeholder => $this->value));
+  }
+
+  function op_contains($field) {
+    $placeholder = $this->placeholder();
+    $this->query->add_where_expression($this->options['group'], "$field LIKE $placeholder", array($placeholder => '%' . db_like($this->value) . '%'));
+  }
+
+  function op_starts($field) {
+    $placeholder = $this->placeholder();
+    $this->query->add_where_expression($this->options['group'], "$field LIKE $placeholder", array($placeholder => db_like($this->value) . '%'));
+  }
+
+  function op_not_starts($field) {
+    $placeholder = $this->placeholder();
+    $this->query->add_where_expression($this->options['group'], "$field NOT LIKE $placeholder", array($placeholder => db_like($this->value) . '%'));
+  }
+
+  function op_ends($field) {
+    $placeholder = $this->placeholder();
+    $this->query->add_where_expression($this->options['group'], "$field LIKE $placeholder", array($placeholder => '%' . db_like($this->value)));
+  }
+
+  function op_not_ends($field) {
+    $placeholder = $this->placeholder();
+    $this->query->add_where_expression($this->options['group'], "$field NOT LIKE $placeholder", array($placeholder => '%' . db_like($this->value)));
+  }
+
+  function op_not($field) {
+    $placeholder = $this->placeholder();
+    $this->query->add_where_expression($this->options['group'], "$field NOT LIKE $placeholder", array($placeholder => '%' . db_like($this->value) . '%'));
+  }
+
+  function op_regex($field) {
+    $placeholder = $this->placeholder();
+    $this->query->add_where_expression($this->options['group'], "$field RLIKE $placeholder", array($placeholder => $this->value));
+  }
+
+  function op_empty($field) {
+    if ($this->operator == 'empty') {
+      $operator = "IS NULL";
+    }
+    else {
+      $operator = "IS NOT NULL";
+    }
+
+    $this->query->add_where_expression($this->options['group'], "$field $operator");
+  }
+}
diff --git a/modules/comment.views.inc b/modules/comment.views.inc
index e22ccd5..0f525d8 100644
--- a/modules/comment.views.inc
+++ b/modules/comment.views.inc
@@ -256,9 +256,6 @@ function comment_views_data() {
     'field' => array(
       'handler' => 'views_handler_field_boolean',
       'click sortable' => TRUE,
-      'output formats' => array(
-        'approved-not-approved' => array(t('Approved'), t('Not Approved')),
-      ),
     ),
     'filter' => array(
       'handler' => 'views_handler_filter_boolean_operator',
diff --git a/modules/user.views.inc b/modules/user.views.inc
index 46641d8..7ac007d 100644
--- a/modules/user.views.inc
+++ b/modules/user.views.inc
@@ -302,9 +302,6 @@ function user_views_data() {
     'field' => array(
       'handler' => 'views_handler_field_boolean',
       'click sortable' => TRUE,
-      'output formats' => array(
-        'active-blocked' => array(t('Active'), t('Blocked')),
-      ),
     ),
     'filter' => array(
       'handler' => 'views_handler_filter_boolean_operator',
diff --git a/modules/views.views.inc b/modules/views.views.inc
index 5ad11c8..f8db043 100644
--- a/modules/views.views.inc
+++ b/modules/views.views.inc
@@ -76,6 +76,14 @@ function views_views_data() {
     ),
   );
 
+  $data['views']['combine'] = array(
+   'title' => t('Combine fields filter'),
+    'help' => t('Combine two fields together and search by them.'),
+    'filter' => array(
+      'handler' => 'views_handler_filter_combine',
+    ),
+  );
+
   if (module_invoke('ctools', 'api_version', '1.7.1')) {
     $data['views']['expression'] = array(
       'title' => t('Math expression'),
diff --git a/views.info b/views.info
index 9d54c04..3f28746 100644
--- a/views.info
+++ b/views.info
@@ -38,6 +38,7 @@ files[] = handlers/views_handler_field_url.inc
 files[] = handlers/views_handler_filter.inc
 files[] = handlers/views_handler_filter_boolean_operator.inc
 files[] = handlers/views_handler_filter_boolean_operator_string.inc
+files[] = handlers/views_handler_filter_combine.inc
 files[] = handlers/views_handler_filter_date.inc
 files[] = handlers/views_handler_filter_equality.inc
 files[] = handlers/views_handler_filter_group_by_numeric.inc
