You are here

function _instagram_feeds_post_tokens in Instagram Feeds 8

Helper function to process Instagram account tokens.

See also

instagram_feeds_tokens()

1 call to _instagram_feeds_post_tokens()
instagram_feeds_tokens in ./instagram_feeds.tokens.inc
Implements hook_tokens().

File

./instagram_feeds.tokens.inc, line 128
Provides Token integration for Instagram Feeds.

Code

function _instagram_feeds_post_tokens(Token $token_service, $tokens, array $post, array $options, BubbleableMetadata $bubbleable_metadata) {
  $replacements = [];

  /** @var Drupal\Core\Datetime\DateFormatterInterface $date_formatter_service */
  $date_formatter_service = \Drupal::service('date.formatter');
  foreach ($tokens as $name => $original) {
    switch ($name) {
      case 'date':
        $date_format = DateFormat::load('medium');
        $bubbleable_metadata
          ->addCacheableDependency($date_format);
        $replacements[$original] = $date_formatter_service
          ->format($post['timestamp'], 'medium');
        break;
      case 'tags':
        $replacements[$original] = implode(', ', $post['tags']);
        break;
      default:
        if (isset($post[$name])) {
          $replacements[$original] = $post[$name];
        }
        break;
    }
  }
  if ($date_tokens = $token_service
    ->findWithPrefix($tokens, 'date')) {
    $replacements += $token_service
      ->generate('date', $date_tokens, [
      'date' => $post['timestamp'],
    ], $options, $bubbleable_metadata);
  }
  return $replacements;
}