diff --git a/modules/content_profile_tokens.module b/modules/content_profile_tokens.module index 212ab70..946f600 100644 --- a/modules/content_profile_tokens.module +++ b/modules/content_profile_tokens.module @@ -25,9 +25,23 @@ function content_profile_tokens_token_values($type, $object = NULL, $options = a } $fields = content_types($type_name); foreach ($fields['fields'] as $field_name => $field) { - if (!$field['multiple'] && ($field['widget']['type'] == 'text_textfield' || $field['widget']['type'] == 'number')) { + if (in_array($field['widget']['type'], _content_profile_tokens_allowed_widget_types())) { + if ($field['multiple']) { + if (is_array($profile->{$field_name})) { + foreach ($profile->{$field_name} as $v) { + if (isset($v['value'])) { + $vals[] = $v['value']; + } + $value = (is_array($vals)) ? implode(',', $vals) : '' ; + } + $values['content-profile-'. $type_name .'-'. substr($field_name, 6)] = check_plain($value); + $values['content-profile-'. $type_name .'-'. substr($field_name, 6) .'-raw'] = $value; + } + } + else { $values['content-profile-'. $type_name .'-'. substr($field_name, 6)] = check_plain($profile->{$field_name}[0]['value']); $values['content-profile-'. $type_name .'-'. substr($field_name, 6) .'-raw'] = $profile->{$field_name}[0]['value']; + } } } } @@ -64,10 +78,9 @@ function content_profile_tokens_token_list($type = 'all') { if ($type == 'user' || $type == 'all') { $types = content_profile_get_types('types'); foreach ($types as $type_name => $type) { - $fields = content_types($type_name); foreach ($fields['fields'] as $field_name => $field) { - if (!$field['multiple'] && ($field['widget']['type'] == 'text_textfield' || $field['widget']['type'] == 'number')) { + if (in_array($field['widget']['type'], _content_profile_tokens_allowed_widget_types())) { $tokens['user']['content-profile-'. $type_name .'-'. substr($field_name, 6)] = t($fields['description']) .'-'. t($field['widget']['label']); $tokens['user']['content-profile-'. $type_name .'-'. substr($field_name, 6) .'-raw'] = t($fields['description']) .'-'. t($field['widget']['label']) .' '. t('WARNING - raw user input'); } @@ -91,3 +104,17 @@ function content_profile_tokens_token_list($type = 'all') { } return $tokens; } + +/** + * Return a list of allowed widget types. + */ +function _content_profile_tokens_allowed_widget_types() { + return array( + 'text_textfield', + 'number', + 'optionwidgets_select', + 'optionwidgets_buttons', + 'date_select', + 'nodereference_select', + ); +} \ No newline at end of file