--- email.module.orig 2008-04-15 07:56:09.000000000 -0400 +++ email.module 2009-01-04 19:11:59.000000000 -0500 @@ -30,12 +30,65 @@ function email_field_settings($op, $fiel switch ($op) { case 'database columns': $columns = array( - 'email' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => "''"), + 'email' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => "''", 'sortable' => true), ); 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(). @@ -379,4 +432,4 @@ function email_token_values($type, $obje return $tokens; } } -?> \ No newline at end of file +?>