function social_private_message_entity_view_alter in Open Social 8
Same name and namespace in other branches
- 8.9 modules/social_features/social_private_message/social_private_message.module \social_private_message_entity_view_alter()
- 8.2 modules/social_features/social_private_message/social_private_message.module \social_private_message_entity_view_alter()
- 8.3 modules/social_features/social_private_message/social_private_message.module \social_private_message_entity_view_alter()
- 8.4 modules/social_features/social_private_message/social_private_message.module \social_private_message_entity_view_alter()
- 8.5 modules/social_features/social_private_message/social_private_message.module \social_private_message_entity_view_alter()
- 8.6 modules/social_features/social_private_message/social_private_message.module \social_private_message_entity_view_alter()
- 8.7 modules/social_features/social_private_message/social_private_message.module \social_private_message_entity_view_alter()
- 8.8 modules/social_features/social_private_message/social_private_message.module \social_private_message_entity_view_alter()
- 10.3.x modules/social_features/social_private_message/social_private_message.module \social_private_message_entity_view_alter()
- 10.0.x modules/social_features/social_private_message/social_private_message.module \social_private_message_entity_view_alter()
- 10.1.x modules/social_features/social_private_message/social_private_message.module \social_private_message_entity_view_alter()
- 10.2.x modules/social_features/social_private_message/social_private_message.module \social_private_message_entity_view_alter()
Implements hook_entity_view_alter().
File
- modules/
social_features/ social_private_message/ social_private_message.module, line 155 - The Social Privagte Message module.
Code
function social_private_message_entity_view_alter(array &$build, EntityInterface $entity, EntityViewDisplayInterface $display) {
// Threads.
if ($entity
->getEntityTypeId() === 'private_message_thread') {
// View mode inbox.
if ($build['#view_mode'] === 'inbox') {
/* @var \Drupal\private_message\Entity\PrivateMessageThread $thread */
$thread = $entity;
$members = $thread
->getMembers();
$members_string = [];
$display_name = '';
// Remove myself from the array.
/* @var Drupal\user\Entity\User $member */
foreach ($members as $key => $member) {
if (Drupal::currentUser()
->id() === $member
->id()) {
unset($members[$key]);
}
else {
$members_string[] = $member
->getDisplayName();
}
}
// Count the amount of members.
$member_count = count($members);
$profile_picture = [];
if ($member_count === 1) {
$recipient = end($members);
// Load compact notification view mode of the attached profile.
if ($recipient instanceof User) {
$display_name = $recipient
->getDisplayName();
$storage = \Drupal::entityTypeManager()
->getStorage('profile');
if (!empty($storage)) {
$user_profile = $storage
->loadByUser($recipient, 'profile');
if ($user_profile) {
$content = \Drupal::entityTypeManager()
->getViewBuilder('profile')
->view($user_profile, 'compact_notification');
// Add to a new field, so twig can render it.
$profile_picture = $content;
}
}
}
}
// Add either the profile picture or the group picture.
if ($member_count > 1) {
$build['members']['#markup'] = '<div class="avatar-icon avatar-group-icon avatar-group-icon--medium"></div>';
// Add members names.
$build['membernames']['#markup'] = implode(', ', $members_string);
$build['membernames']['#prefix'] = '<strong>';
$build['membernames']['#suffix'] = '</strong>';
}
else {
$build['members'] = $profile_picture;
// Add members name.
$build['membernames']['#markup'] = $display_name;
$build['membernames']['#prefix'] = '<strong>';
$build['membernames']['#suffix'] = '</strong>';
}
}
elseif ($build['#view_mode'] === 'full') {
$socialPrivateMessageService = Drupal::service('social_private_message.service');
$socialPrivateMessageService
->updateLastThreadCheckTime($entity);
$build['#prefix'] = '';
$build['#suffix'] = '';
}
}
// Private message entity.
if ($entity
->getEntityTypeId() === 'private_message') {
// View mode inbox.
if ($build['#view_mode'] === 'inbox') {
// Remove prefix and suffix.
$build['#prefix'] = '';
$build['#suffix'] = '';
}
elseif ($build['#view_mode'] === 'full') {
/* @var \Drupal\private_message\Entity\PrivateMessage $entity */
if (Drupal::currentUser()
->id() === $entity
->getOwnerId()) {
$build['#prefix'] = '<div class="message__by-me">' . $build['#prefix'];
$build['#suffix'] = '</div>' . $build['#suffix'];
// Current user is 'You'.
$build['owner'][0]['#plain_text'] = t('You');
}
}
}
}