You are here

function webform_protected_downloads_tokens in Webform Protected Downloads 8

Same name and namespace in other branches
  1. 7 webform_protected_downloads.module \webform_protected_downloads_tokens()

Implements hook_tokens().

File

./webform_protected_downloads.module, line 73

Code

function webform_protected_downloads_tokens($type, $tokens, array $data, array $options, BubbleableMetadata $bubbleable_metadata) {
  $replacements = [];
  if (isset($tokens['protected_download_url']) && isset($data['entity'])) {
    foreach ($tokens as $name => $original) {
      switch ($name) {
        case 'protected_download_url':

          // Find a file hash for current submission.
          $webformSubmission = $data['entity'];
          $webformProtectedDownloadsManager = \Drupal::service('webform_protected_downloads.manager');
          $webformProtectedDownload = $webformProtectedDownloadsManager
            ->getSubmissionByUuid($webformSubmission
            ->uuid());
          $hash = $webformProtectedDownload
            ->getHash();
          if (is_null($hash)) {
            $replacements[$original] = t("Download link not available");
            return $replacements;
          }
          $webform = $webformSubmission
            ->getWebform();
          $webformSettings = $webform
            ->getThirdPartySettings('webform_protected_downloads');
          $url = Url::fromRoute('webform_protected_downloads.download', [
            'hash' => $hash,
          ], [
            'absolute' => TRUE,
          ]);
          $link = Link::fromTextAndUrl(t($webformSettings['token_text']), $url)
            ->toString();
          $element = [
            '#theme' => 'webform_protected_downloads_token',
            '#link' => $link,
          ];
          $link = \Drupal::service('renderer')
            ->render($element);

          // Replace token.
          $replacements[$original] = $link;
          break;
      }
    }
  }
  return $replacements;
}