? .svn
Index: email.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/email/email.module,v
retrieving revision 1.9.2.8
diff -b -U3 -r1.9.2.8 email.module
--- email.module	15 Apr 2008 11:56:09 -0000	1.9.2.8
+++ email.module	9 May 2008 12:51:14 -0000
@@ -33,9 +33,62 @@
         'email' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => "''"),
       );
       return $columns;
+      break;
+    case 'filters':
+      $allowed_values = email_allowed_values($field);
+       if (count($allowed_values)) {
+         return array(
+           'default' => array(
+            'list' => $allowed_values,
+             'list-type' => 'list',
+             'operator' => 'views_handler_operator_or',
+             'value-type' => 'array',
+            ),
+          );
+        }
+      else {
+        return array(
+          'like' => array(
+            'operator' => 'views_handler_operator_like',
+            'handler' => 'views_handler_filter_like',
+          ),
+        );
+      }
+      break;
   }
 }
 
+/**
+ *  Create an array of the allowed values for this field
+ */
+function email_allowed_values($field) {
+  static $allowed_values;
+
+  if ($allowed_values[$field['field_name']]) {
+    return $allowed_values[$field['field_name']];
+  }
+
+  $allowed_values[$field['field_name']] = array();
+  if ($field['allowed_values_php']) {
+    ob_start();
+    $result = eval($field['allowed_values_php']);
+    if (is_array($result)) {
+      $allowed_values[$field['field_name']] = $result;
+    }
+    ob_end_clean();
+  }
+  if (!$allowed_values[$field['field_name']]) {
+
+    $list = explode("\n", $field['allowed_values']);
+    $list = array_map('trim', $list);
+    $list = array_filter($list, 'strlen');
+    foreach ($list as $opt) {
+      list($key, $value) = explode('|', $opt);
+      $allowed_values[$field['field_name']][$key] = $value ? $value : $key;
+    }
+  }
+  return $allowed_values[$field['field_name']];
+}
 
 /**
  * Implementation of hook_field_formatter_info().
