You are here

voting_rules.tokens.inc in Voting Rules 7

Builds placeholder replacement tokens.

File

voting_rules.tokens.inc
View source
<?php

/**
 * @file
 * Builds placeholder replacement tokens.
 */

/**
 * Implements hook_tokens().
 */
function voting_rules_tokens($type, $tokens, array $data = array(), array $options = array()) {
  $replacements = array();
  $sanitize = !empty($options['sanitize']);
  if ($type == 'vote' && !empty($data['vote'])) {
    foreach ($tokens as $name => $original) {
      $replacements[$original] = $data[$type][str_replace('-', '_', $name)];
    }
  }
  elseif ($type == 'vote_results' && !empty($data['vote_results'])) {
    foreach ($tokens as $name => $original) {
      $explode = explode('_', str_replace('-', '_', $name));
      $function = $explode[0];
      unset($explode[0]);
      $property = implode('_', $explode);
      $replacements[$original] = $data[$type][$function][$property];
    }
  }
  return $replacements;
}

/**
 * Implements hook_token_info().
 */
function voting_rules_token_info() {
  module_load_include('inc', 'voting_rules', 'voting_rules.rules');
  $data_info = voting_rules_rules_data_info();
  foreach ($data_info as $type => $data) {
    $info['types'][$type] = array(
      'name' => $data['label'],
      'description' => isset($data['description']) ? $data['description'] : t('No description'),
      'needs-data' => $type,
    );
    _voting_rules_token_data_info_recursion($info, $type, $data);
  }
  return $info;
}

/**
 * Recursively build token info.
 */
function _voting_rules_token_data_info_recursion(&$info, $type, $data, $prefix = NULL) {
  if (isset($data['property info'])) {
    foreach ($data['property info'] as $property_name => $property_info) {
      $formatted_name = str_replace('_', '-', $property_name);
      $formatted_name = isset($prefix) ? $prefix . '-' . $formatted_name : $formatted_name;
      if (!isset($property_info['property info'])) {
        $info['tokens'][$type][$formatted_name] = array(
          'name' => $property_info['label'],
          'description' => isset($property_info['description']) ? $property_info['description'] : t('No description'),
        );
      }
      _voting_rules_token_data_info_recursion($info, $type, $property_info, $formatted_name);
    }
  }
}

Functions

Namesort descending Description
voting_rules_tokens Implements hook_tokens().
voting_rules_token_info Implements hook_token_info().
_voting_rules_token_data_info_recursion Recursively build token info.