You are here

function webform_workflow_tokens in Webform Workflow 7

Implements hook_tokens().

File

./webform_workflow.tokens.inc, line 53
Builds placeholder replacement tokens for webform_workflow-related data.

Code

function webform_workflow_tokens($type, $tokens, array $data = array(), array $options = array()) {
  $replacements = array();
  $sanitize = !empty($options['sanitize']);
  if ($type == 'submission' && !empty($data['webform-submission'])) {
    $submission = $data['webform-submission'];
    $state = webform_workflow_state_load_by_submission($submission);
    foreach ($tokens as $name => $original) {
      switch ($name) {
        case 'state':
          $replacement = $state->label;
          $replacements[$original] = $sanitize ? check_plain($replacement) : $replacement;
          break;
      }
    }
    if ($state_tokens = token_find_with_prefix($tokens, 'state')) {
      $replacements += token_generate('webform_workflow_state', $state_tokens, array(
        'webform_workflow_state' => $state,
        'sanitize' => $sanitize,
      ));
    }
  }
  if ($type == 'webform-workflow-transition' && !empty($data['webform-workflow-transition'])) {
    $transition = $data['webform-workflow-transition'];
    foreach ($tokens as $name => $original) {
      switch ($name) {
        case 'previous-state':
          $replacement = $transition['previous_state']->label;
          $replacements[$original] = $sanitize ? check_plain($replacement) : $replacement;
          break;
        case 'new-state':
          $replacement = $transition['new_state']->label;
          $replacements[$original] = $sanitize ? check_plain($replacement) : $replacement;
          break;
        case 'message':
          if (!empty($transition['message'])) {
            $replacement = $transition['message'];
            $replacements[$original] = $sanitize ? check_plain($replacement) : $replacement;
          }
          break;
        case 'user':
          if (!empty($transition['account'])) {
            $replacement = format_username($transition['account']);
            $replacements[$original] = $sanitize ? check_plain($replacement) : $replacement;
          }
          break;
        case 'timestamp':
          $replacements[$original] = format_date($transition['timestamp']);
          break;
      }
    }
    if ($new_state_tokens = token_find_with_prefix($tokens, 'new-state')) {
      $replacements += token_generate('webform_workflow_state', $new_state_tokens, array(
        'webform_workflow_state' => $transition['new_state'],
        'sanitize' => $sanitize,
      ));
    }
    if ($previous_state_tokens = token_find_with_prefix($tokens, 'previous-state')) {
      $replacements += token_generate('webform_workflow_state', $previous_state_tokens, array(
        'webform_workflow_state' => $transition['previous_state'],
        'sanitize' => $sanitize,
      ));
    }
    if ($timestamp_tokens = token_find_with_prefix($tokens, 'timestamp')) {
      $replacements += token_generate('date', $timestamp_tokens, array(
        'date' => $transition['timestamp'],
        'sanitize' => $sanitize,
      ));
    }
    if ($user_tokens = token_find_with_prefix($tokens, 'user')) {
      $replacements += token_generate('user', $user_tokens, array(
        'account' => $transition['account'],
        'sanitize' => $sanitize,
      ));
    }
  }
  return $replacements;
}