function social_group_invite_preprocess_group in Open Social 10.3.x
Same name and namespace in other branches
- 8.9 modules/social_features/social_group/modules/social_group_invite/social_group_invite.module \social_group_invite_preprocess_group()
- 10.0.x modules/social_features/social_group/modules/social_group_invite/social_group_invite.module \social_group_invite_preprocess_group()
- 10.1.x modules/social_features/social_group/modules/social_group_invite/social_group_invite.module \social_group_invite_preprocess_group()
- 10.2.x modules/social_features/social_group/modules/social_group_invite/social_group_invite.module \social_group_invite_preprocess_group()
Implements hook_preprocess_group().
File
- modules/
social_features/ social_group/ modules/ social_group_invite/ social_group_invite.module, line 438 - The Social Invite group module.
Code
function social_group_invite_preprocess_group(&$variables) {
/** @var \Drupal\group\Entity\GroupInterface $group */
$group = $variables['group'];
$group_type = $group
->getGroupType();
$variables['user_is_invited'] = FALSE;
// Only for groups that have invites enabled.
if (!$group_type
->hasContentPlugin('group_invitation')) {
return;
}
// Only for LU.
$account = \Drupal::currentUser();
if ($account
->isAnonymous()) {
return;
}
// Check if the user (entity_id) has a pending invite for the group.
$properties = [
'entity_id' => $account
->id(),
'gid' => $group
->id(),
'invitation_status' => GroupInvitation::INVITATION_PENDING,
];
/** @var \Drupal\ginvite\GroupInvitationLoaderInterface $loader */
$loader = \Drupal::service('ginvite.invitation_loader');
$invitations = $loader
->loadByProperties($properties);
// We have pending invites, let's build a button to accept or decline one.
if ($invitations > 0) {
// Build routes.
$invitation = reset($invitations);
if ($invitation instanceof GroupInvitationWrapper) {
// Lets grab the group content so we can build the URL.
$group_content = $invitation
->getGroupContent();
if ($group_content instanceof GroupContent) {
$variables['user_is_invited'] = TRUE;
// It will become two links with a dropdown button.
$variables['group_invite_accept_operations_url'] = Url::fromRoute('ginvite.invitation.accept', [
'group_content' => $group_content
->id(),
]);
$variables['group_invite_decline_operations_url'] = Url::fromRoute('ginvite.invitation.decline', [
'group_content' => $group_content
->id(),
]);
$variables['#cache']['tags'][] = 'group_content_list:entity:' . $account
->id();
$variables['#cache']['tags'][] = 'group_content_list:plugin:group_invitation:entity:' . $account
->id();
$variables['#cache']['contexts'][] = 'user';
}
}
}
}