You are here

heartbeat_like_comment.tokens.inc in Heartbeat 8

Token for heartbeat_like.

File

modules/heartbeat_like_comment/heartbeat_like_comment.tokens.inc
View source
<?php

/**
 * @file
 * Token for heartbeat_like.
 */
use Drupal\Core\Render\BubbleableMetadata;

/**
 * Implements hook_token_info().
 */
function heartbeat_like_comment_token_info() {
  $types = array();
  $tokens = array();

  // Flag tokens.
  $types['flagcount'] = array(
    'name' => t('Flags count'),
    'description' => t('Tokens related to flag count (heartbeat_like_comment) module.'),
  );
  $tokens['flagcount']['count'] = array(
    'name' => t('Count'),
    'description' => t('Number of times the flag has been flagged.'),
    'needs-data' => 'flag',
  );
  return array(
    'types' => $types,
    'tokens' => $tokens,
  );
}

/**
 * Implements hook_tokens().
 */
function heartbeat_like_comment_tokens($type, $tokens, array $data, array $options, BubbleableMetadata $bubbleable_metadata) {
  $replacements = array();
  if ($type == 'flagcount') {
    foreach ($tokens as $name => $original) {

      // Find the desired token by name
      switch ($name) {
        case 'count':
          if (isset($data['flag_id']) && isset($data['entity_id'])) {

            // Query the db for the count associated with this entity.
            $query = \Drupal::database()
              ->select('flag_counts', 'fc');
            $query
              ->fields('fc', [
              'count',
            ]);
            $query
              ->condition('fc.flag_id', $data['flag_id']);
            $query
              ->condition('fc.entity_id', $data['entity_id']);
            $count_db = $query
              ->execute()
              ->fetchAssoc();
            if (!isset($count_db['count'])) {
              $count_db['count'] = 0;
            }
            $replacements[$original] = $count_db['count'];
          }
          break;
      }
    }
  }

  // Return the replacements.
  return $replacements;
}