diff --git a/modules/contrib/commons_profile_base/commons_profile_base.module b/modules/contrib/commons_profile_base/commons_profile_base.module new file mode 100644 index 0000000..b655925 --- /dev/null +++ b/modules/contrib/commons_profile_base/commons_profile_base.module @@ -0,0 +1,55 @@ + t('Short name'), + 'description' => t('First name if set, username otherwise.'), + 'needs-data' => 'user', + ); + + return array( + 'tokens' => array('user' => $user), + ); +} + +/** + * Implements hook_tokens(). + */ +function commons_profile_base_tokens($type, $tokens, array $data = array(), array $options = array()) { + $replacements = array(); + $sanitize = !empty($options['sanitize']); + + if ($type == 'user') { + if (isset($data['user'])) { + $user = $data['user']; + // The default global $user doesn't have the fields loaded by default. + // I reload it to make sure it's not an error. + if (!isset($user->field_name_first)) { + $user = user_load($user->uid); + } + $short_name = ''; + + $user_wrapper = entity_metadata_wrapper('user', $user); + + if ($user_wrapper->field_name_first->value() !== NULL) { + $short_name = $user_wrapper->field_name_first->value(); + } + else { + $short_name = $user_wrapper->name->value(); + } + + $replacements['[user:short-name]'] = $sanitize ? check_plain($short_name) : $short_name; + } + } + + return $replacements; +}