--- conditional_fields.old 2011-11-15 11:59:39.907063904 -0800 +++ conditional_fields.module 2011-11-15 12:02:15.808411932 -0800 @@ -986,20 +986,40 @@ function conditional_fields_node_editing * Checks if a submitted field value is empty */ function conditional_fields_check_empty($field) { - // Normal fields - if (isset($field[0]['value'])) { - $value = $field[0]['value']; - } - // Node reference - elseif (isset($field[0]['nid'])) { - $value = $field[0]['nid']; + $ids = conditional_fields_get_checkoptions(); + foreach (array_unique($ids) AS $id) { + if (isset($field[0][$id]) { + $value = $field[0][$id]; + if (!count($value) || (is_string($value) && drupal_strlen(trim($value)) == 0)) { + return TRUE; + } + } } + return FALSE; +} - if (!count($value) || (is_string($value) && drupal_strlen(trim($value)) == 0)) { - return TRUE; +/** + * Returns a list of possible field ids to check for + */ +function conditional_fields_get_checkoptions($reset = FALSE) { + static $ids; + if (!isset($ids) || $reset) { + $ids = module_invoke_all('conditional_fields_checkoptions', $ids); } + return $ids; +} - return FALSE; +/** + * Implementation of hook_conditional_fields_checkoptions() + */ +function conditional_fields_conditional_fields_checkoptions() { + return array( + 'value', //Normal fields + 'nid', //Node reference + 'uid', //User reference + 'rid', //Role reference + 'email' //Email field + ); } /**