function template_preprocess_username in Drupal 9
Same name and namespace in other branches
- 8 core/modules/user/user.module \template_preprocess_username()
- 7 includes/theme.inc \template_preprocess_username()
Prepares variables for username templates.
Default template: username.html.twig.
Modules that make any changes to variables like 'name' or 'extra' must ensure that the final string is safe.
Parameters
array $variables: An associative array containing:
- account: The user account (\Drupal\Core\Session\AccountInterface).
File
- core/
modules/ user/ user.module, line 375 - Enables the user registration and login system.
Code
function template_preprocess_username(&$variables) {
$account = $variables['account'] ?: new AnonymousUserSession();
$variables['extra'] = '';
$variables['uid'] = $account
->id();
if (empty($variables['uid'])) {
if (theme_get_setting('features.comment_user_verification')) {
$variables['extra'] = ' (' . t('not verified') . ')';
}
}
// Set the name to a formatted name that is safe for printing and
// that won't break tables by being too long. Keep an unshortened,
// unsanitized version, in case other preprocess functions want to implement
// their own shortening logic or add markup. If they do so, they must ensure
// that $variables['name'] is safe for printing.
$name = $account
->getDisplayName();
$variables['name_raw'] = $account
->getAccountName();
if (mb_strlen($name) > 20) {
$name = Unicode::truncate($name, 15, FALSE, TRUE);
$variables['truncated'] = TRUE;
}
else {
$variables['truncated'] = FALSE;
}
$variables['name'] = $name;
if ($account instanceof AccessibleInterface) {
$variables['profile_access'] = $account
->access('view');
}
else {
$variables['profile_access'] = \Drupal::currentUser()
->hasPermission('access user profiles');
}
$external = FALSE;
// Populate link path and attributes if appropriate.
if ($variables['uid'] && $variables['profile_access']) {
// We are linking to a local user.
$variables['attributes']['title'] = t('View user profile.');
$variables['link_path'] = 'user/' . $variables['uid'];
}
elseif (!empty($account->homepage)) {
// Like the 'class' attribute, the 'rel' attribute can hold a
// space-separated set of values, so initialize it as an array to make it
// easier for other preprocess functions to append to it.
$variables['attributes']['rel'] = 'nofollow';
$variables['link_path'] = $account->homepage;
$variables['homepage'] = $account->homepage;
$external = TRUE;
}
// We have a link path, so we should generate a URL.
if (isset($variables['link_path'])) {
if ($external) {
$variables['attributes']['href'] = Url::fromUri($variables['link_path'], $variables['link_options'])
->toString();
}
else {
$variables['attributes']['href'] = Url::fromRoute('entity.user.canonical', [
'user' => $variables['uid'],
])
->toString();
}
}
}