You are here

function apigee_edge_teams_tokens in Apigee Edge 8

Implements hook_tokens().

File

modules/apigee_edge_teams/apigee_edge_teams.tokens.inc, line 65
Implements tokens for apigee_edge_teams module.

Code

function apigee_edge_teams_tokens($type, $tokens, array $data, array $options, BubbleableMetadata $bubbleable_metadata) {
  if (!isset($data['team_invitation'])) {
    return [];
  }

  /** @var \Drupal\apigee_edge_teams\Entity\TeamInvitationInterface $team_invitation */
  $team_invitation = $data['team_invitation'];
  $team = $team_invitation
    ->getTeam();
  $replacements = [];
  foreach ($tokens as $field_name => $original) {
    switch ($field_name) {
      case "team_name":
        $replacements[$original] = $team
          ->label();
        break;
      case "url_accept":
        $query = [
          'destination' => $team_invitation
            ->toUrl('accept-form')
            ->setRouteParameter('team', $team
            ->id())
            ->toString(),
        ];
        $replacements[$original] = Url::fromRoute('user.login', [], [
          'query' => $query,
          'absolute' => TRUE,
        ])
          ->toString();
        break;
      case "url_decline":
        $query = [
          'destination' => $team_invitation
            ->toUrl('decline-form')
            ->setRouteParameter('team', $team
            ->id())
            ->toString(),
        ];
        $replacements[$original] = Url::fromRoute('user.login', [], [
          'query' => $query,
          'absolute' => TRUE,
        ])
          ->toString();
        break;
      case "url_register":
        $query = [
          'destination' => $team_invitation
            ->toUrl('accept-form')
            ->setRouteParameter('team', $team
            ->id())
            ->toString(),
        ];
        $replacements[$original] = Url::fromRoute('user.register', [], [
          'query' => $query,
          'absolute' => TRUE,
        ])
          ->toString();
        break;
      case "expiry_days":
        $replacements[$original] = Drupal::config('apigee_edge_teams.team_settings')
          ->get('team_invitation_expiry_days');
        break;
    }
  }
  return $replacements;
}