? .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().