diff options
author | Dries <dries@buytaert.net> | 2012-01-24 20:18:44 -0500 |
---|---|---|
committer | Dries <dries@buytaert.net> | 2012-01-24 20:18:44 -0500 |
commit | b0ac4796a69d1640b0e6150cc2b02a6ae7e59cff (patch) | |
tree | 520d45139e1bffc6a8fccb4187b53b075f6c4e81 | |
parent | b7d049cae366a203b5410922abf3c33a53ed74d8 (diff) | |
download | brdo-b0ac4796a69d1640b0e6150cc2b02a6ae7e59cff.tar.gz brdo-b0ac4796a69d1640b0e6150cc2b02a6ae7e59cff.tar.bz2 |
- Patch #1346166 by Dave Reid: Improve performance of token_replace() if there are no tokens to replace.
-rw-r--r-- | includes/token.inc | 7 | ||||
-rw-r--r-- | modules/system/system.test | 3 |
2 files changed, 9 insertions, 1 deletions
diff --git a/includes/token.inc b/includes/token.inc index edc8a962f..0b05c68f4 100644 --- a/includes/token.inc +++ b/includes/token.inc @@ -77,8 +77,13 @@ * Text with tokens replaced. */ function token_replace($text, array $data = array(), array $options = array()) { + $text_tokens = token_scan($text); + if (empty($text_tokens)) { + return $text; + } + $replacements = array(); - foreach (token_scan($text) as $type => $tokens) { + foreach ($text_tokens as $type => $tokens) { $replacements += token_generate($type, $tokens, $data, $options); if (!empty($options['clear'])) { $replacements += array_fill_keys($tokens, ''); diff --git a/modules/system/system.test b/modules/system/system.test index 7f84d1751..ccb237d74 100644 --- a/modules/system/system.test +++ b/modules/system/system.test @@ -1861,6 +1861,9 @@ class TokenReplaceTestCase extends DrupalWebTestCase { $generated = token_generate('node', $raw_tokens, array('node' => $node), array('sanitize' => FALSE)); $this->assertEqual($generated['[node:title]'], $node->title, t('Unsanitized token generated properly.')); + + // Test token replacement when the string contains no tokens. + $this->assertEqual(token_replace('No tokens here.'), 'No tokens here.'); } /** |