function social_private_message_entity_view_alter in Open Social 8.2
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 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 221 - 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') {
/* @var \Drupal\private_message\Entity\PrivateMessageThread $thread */
$thread =& $entity;
$only_exist_members = $thread
->getMembers();
// View mode inbox.
if ($build['#view_mode'] === 'inbox') {
$members_with_deleted = $thread
->get('members')
->getValue();
$members_string = [];
$display_name = '';
foreach (array_keys($members_with_deleted) as $key) {
if (isset($only_exist_members[$key])) {
/** @var \Drupal\user\UserInterface $member */
$member = $only_exist_members[$key];
if (\Drupal::currentUser()
->id() === $member
->id()) {
unset($members_with_deleted[$key], $only_exist_members[$key]);
}
else {
$members_string[] = $member
->getDisplayName();
}
}
else {
$members_string[] = t('Deleted user');
}
}
// Count the amount of members.
$member_count = count($members_with_deleted);
$profile_picture = [];
if ($member_count === 1) {
$recipient = end($only_exist_members);
if ($recipient instanceof UserInterface) {
$display_name = $recipient
->getDisplayName();
}
else {
$display_name = t('Deleted user');
$recipient = User::load(1);
}
// Load compact notification view mode of the attached profile.
if ($recipient instanceof User) {
$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'] = '';
if ($display
->getComponent('private_message_form') && count($only_exist_members) == 1) {
$build['private_message_form'] = NULL;
}
}
}
elseif ($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') {
$wrapper_class = NULL;
/* @var \Drupal\private_message\Entity\PrivateMessage $entity */
if (\Drupal::currentUser()
->id() === $entity
->getOwnerId()) {
$wrapper_class = 'message__by-me';
// Current user is 'You'.
$build['owner'][0]['#plain_text'] = t('You');
}
elseif (empty($entity
->getOwner())) {
$wrapper_class = 'message__deleted';
}
if (!empty($wrapper_class)) {
$build['#prefix'] = '<div class="' . $wrapper_class . '">' . $build['#prefix'];
$build['#suffix'] = '</div>' . $build['#suffix'];
}
}
}
}