You are here

public function SocialGroupInviteConfigOverride::validateInviteData in Open Social 10.1.x

Same name and namespace in other branches
  1. 10.3.x modules/social_features/social_group/modules/social_group_invite/src/SocialGroupInviteConfigOverride.php \Drupal\social_group_invite\SocialGroupInviteConfigOverride::validateInviteData()
  2. 10.2.x modules/social_features/social_group/modules/social_group_invite/src/SocialGroupInviteConfigOverride.php \Drupal\social_group_invite\SocialGroupInviteConfigOverride::validateInviteData()

Validate invite data.

Parameters

string $invitee_mail: Encoded email address of invited user.

string $destination: The url of invited group.

Return value

bool TRUE if invited data is valid.

1 call to SocialGroupInviteConfigOverride::validateInviteData()
SocialGroupInviteConfigOverride::loadOverrides in modules/social_features/social_group/modules/social_group_invite/src/SocialGroupInviteConfigOverride.php
Load overrides.

File

modules/social_features/social_group/modules/social_group_invite/src/SocialGroupInviteConfigOverride.php, line 119

Class

SocialGroupInviteConfigOverride
Provides an overridden elements.

Namespace

Drupal\social_group_invite

Code

public function validateInviteData($invitee_mail, $destination) {
  if (empty($invitee_mail) || empty($destination)) {
    return FALSE;
  }

  // Get decoded email of invited user from params.
  $invitee_mail = base64_decode(str_replace([
    '-',
    '_',
  ], [
    '+',
    '/',
  ], $invitee_mail));
  if (!$this->emailValidator
    ->isValid($invitee_mail)) {
    return FALSE;
  }

  // Get group id to which user was invited from params.
  preg_match('/\\/social-group-invite\\/(\\d+)+\\/accept/', $destination, $matches);
  $entity_id = array_pop($matches);
  if (empty($entity_id) || !is_numeric($entity_id)) {
    return FALSE;
  }

  // Verify is it really was requested invite and it still is actual.
  $query = $this->database
    ->select('group_content__invitee_mail', 'gcim');
  $query
    ->fields('gcim', [
    'entity_id',
  ]);
  $query
    ->condition('gcim.invitee_mail_value', $invitee_mail);
  $query
    ->condition('gcim.entity_id', $entity_id);
  $query
    ->join('group_content__invitation_status', 'gcis', 'gcim.entity_id = gcis.entity_id');
  $query
    ->condition('gcis.invitation_status_value', '0');
  $invitations = $query
    ->execute()
    ->fetchField();
  if (empty($invitations)) {
    return FALSE;
  }
  else {
    return TRUE;
  }
}