You are here

function varbase_media_tokens in Varbase Media 8.7

Same name and namespace in other branches
  1. 8.5 varbase_media.module \varbase_media_tokens()
  2. 8.6 varbase_media.module \varbase_media_tokens()
  3. 9.0.x varbase_media.module \varbase_media_tokens()

Implements hook_tokens().

File

./varbase_media.module, line 669
Contains varbase_media.module.

Code

function varbase_media_tokens($type, $tokens, array $data, array $options, BubbleableMetadata $bubbleable_metadata) {
  if (isset($options['langcode'])) {
    $langcode = $options['langcode'];
  }
  else {
    $langcode = LanguageInterface::LANGCODE_DEFAULT;
  }
  $replacements = [];
  if ($type === 'media' && !empty($data['media'])) {

    /** @var \Drupal\media\MediaInterface $media_entity */
    $media_entity = \Drupal::service('entity.repository')
      ->getTranslationFromContext($data['media'], $langcode, [
      'operation' => 'media_entity_tokens',
    ]);
    foreach ($tokens as $token_name => $original) {
      switch ($token_name) {

        // Social Large (1200x630) image for the selected media type.
        case 'social_large':
          $replacements[$original] = _varbase_media_image_url($media_entity, 'social_large');
          break;

        // Social Medium (600x315) image for the selected media type.
        case 'social_medium':
          $replacements[$original] = _varbase_media_image_url($media_entity, 'social_medium');
          break;

        // Social Small (280x150) image for the selected media type.
        case 'social_small':
          $replacements[$original] = _varbase_media_image_url($media_entity, 'social_small');
          break;
      }
    }
  }
  return $replacements;
}