diff --git a/modules/content_profile_tokens.module b/modules/content_profile_tokens.module index 212ab70..a8c9ad0 100644 --- a/modules/content_profile_tokens.module +++ b/modules/content_profile_tokens.module @@ -25,9 +25,24 @@ 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')) { - $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']; + if (in_array($field['widget']['type'], _content_profile_tokens_allowed_widget_types())) { + $labels = content_allowed_values($field); + if ($field['multiple']) { + if (is_array($profile->{$field_name})) { + foreach ($profile->{$field_name} as $v) { + if (isset($v['value'])) { + $vals[] = $labels[$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($labels[$profile->{$field_name}[0]['value']]); + $values['content-profile-' . $type_name . '-' . substr($field_name, 6) . '-raw'] = $labels[$profile->{$field_name}[0]['value']]; + } } } } @@ -67,9 +82,9 @@ function content_profile_tokens_token_list($type = 'all') { $fields = content_types($type_name); foreach ($fields['fields'] as $field_name => $field) { - if (!$field['multiple'] && ($field['widget']['type'] == 'text_textfield' || $field['widget']['type'] == 'number')) { - $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'); + 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 +106,18 @@ 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', + 'optionwidgets_onoff', + 'date_select', + 'nodereference_select', + ); +}