You are here

function social_like_tokens in Open Social 8.2

Same name and namespace in other branches
  1. 8.9 modules/social_features/social_like/social_like.tokens.inc \social_like_tokens()
  2. 8 modules/social_features/social_like/social_like.tokens.inc \social_like_tokens()
  3. 8.3 modules/social_features/social_like/social_like.tokens.inc \social_like_tokens()
  4. 8.4 modules/social_features/social_like/social_like.tokens.inc \social_like_tokens()
  5. 8.5 modules/social_features/social_like/social_like.tokens.inc \social_like_tokens()
  6. 8.6 modules/social_features/social_like/social_like.tokens.inc \social_like_tokens()
  7. 8.7 modules/social_features/social_like/social_like.tokens.inc \social_like_tokens()
  8. 8.8 modules/social_features/social_like/social_like.tokens.inc \social_like_tokens()
  9. 10.3.x modules/social_features/social_like/social_like.tokens.inc \social_like_tokens()
  10. 10.0.x modules/social_features/social_like/social_like.tokens.inc \social_like_tokens()
  11. 10.1.x modules/social_features/social_like/social_like.tokens.inc \social_like_tokens()
  12. 10.2.x modules/social_features/social_like/social_like.tokens.inc \social_like_tokens()

Implements hook_tokens().

File

modules/social_features/social_like/social_like.tokens.inc, line 43
Builds placeholder replacement tokens for Social Like module.

Code

function social_like_tokens($type, $tokens, array $data, array $options, BubbleableMetadata $bubbleable_metadata) {
  $replacements = [];
  if ($type == 'social_like' && !empty($data['message'])) {

    /** @var \Drupal\message\Entity\Message $message */
    $message = $data['message'];

    /** @var \Drupal\votingapi\Entity\Vote $vote */
    if ($vote = Vote::load($message->field_message_related_object->target_id)) {
      foreach ($tokens as $name => $original) {
        switch ($name) {
          case 'liked_entity':
            $storage = \Drupal::entityTypeManager()
              ->getStorage($vote
              ->getVotedEntityType());
            $entity = $storage
              ->load($vote
              ->getVotedEntityId());
            $url_options = [
              'absolute' => TRUE,
            ];
            $replacements[$original] = $entity
              ->toUrl('canonical', $url_options)
              ->toString();
            break;
          case 'liked_content_type':
            $storage = \Drupal::entityTypeManager()
              ->getStorage($vote
              ->getVotedEntityType());
            $entity = $storage
              ->load($vote
              ->getVotedEntityId());
            $content_type = $entity
              ->getEntityTypeId();

            // Check if the content type is node.
            if ($content_type === 'node') {

              // Then get the bundle name.
              $content_type = Unicode::strtolower(\Drupal::entityTypeManager()
                ->getStorage('node_type')
                ->load($entity
                ->bundle())
                ->label());
            }
            if ($content_type === 'post' || $content_type === 'photo' || $content_type === 'comment') {
              $content_type = Unicode::strtolower($entity
                ->getEntityType()
                ->getLabel());
            }
            $replacements[$original] = $content_type;
            break;
        }
      }
    }
  }
  return $replacements;
}