1.20.x token.inc token_get_invalid_tokens_by_context($value, array $valid_types = array())

Validate an tokens in raw text based on possible contexts.

Parameters

string $value: A string with the raw text containing the raw tokens, or an array of tokens from token_scan().

array $valid_types: An array of token types that will be used when token replacement is performed.

Return value

array: An array with the invalid tokens in their original raw forms.

File

includes/token.inc, line 745
Backdrop placeholder/token replacement system.

Code

function token_get_invalid_tokens_by_context($value, array $valid_types = array()) {
  if (in_array('all', $valid_types)) {
    $info = token_get_info();
    $valid_types = array_keys($info['types']);
  }
  else {
    // Add the token types that are always valid in global context.
    $valid_types = array_merge($valid_types, token_get_global_token_types());
  }

  $invalid_tokens = array();
  $value_tokens = is_string($value) ? token_scan($value) : $value;

  foreach ($value_tokens as $type => $tokens) {
    if (!in_array($type, $valid_types)) {
      // If the token type is not a valid context, its tokens are invalid.
      $invalid_tokens = array_merge($invalid_tokens, array_values($tokens));
    }
    else {
      // Check each individual token for validity.
      $invalid_tokens = array_merge($invalid_tokens, token_get_invalid_tokens($type, $tokens));
    }
  }

  array_unique($invalid_tokens);
  return $invalid_tokens;
}