Index: advuser.info
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/advuser/advuser.info,v
retrieving revision 1.3.4.2
diff -u -p -r1.3.4.2 advuser.info
--- advuser.info	17 Apr 2010 02:09:31 -0000	1.3.4.2
+++ advuser.info	30 Jul 2010 15:35:33 -0000
@@ -2,3 +2,4 @@
 name = Advanced User Management
 description = Advanced user management providing advanced filtering of users and providing mass actions of selected filtered users across multiple pages of the users list.
 core = 6.x
+dependencies[] = 'token'
Index: advuser.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/advuser/advuser.install,v
retrieving revision 1.2.4.2
diff -u -p -r1.2.4.2 advuser.install
--- advuser.install	17 Apr 2010 02:09:31 -0000	1.2.4.2
+++ advuser.install	30 Jul 2010 15:35:33 -0000
@@ -1,7 +1,7 @@
 <?php
 
 /**
- * Implementation of hook_uninstall
+ * Implementation of hook_uninstall().
  *
  * Remove the variables from the variable table.
  */
@@ -34,4 +34,89 @@ function advuser_uninstall() {
   cache_clear_all('variables', 'cache');
 }
 
+/**
+ * Implementation of hook_requirements().
+ */
+function advuser_requirements($phase) {
+  $requirements = array();
+  // Ensure translations don't break at install time
+  $t = get_t();
+
+  if ($phase == 'runtime') {
+    /**
+     * This check is important to catch updates from previous versions the
+     * Token module wasn't yet a dependency.
+     */
+    if (!module_exists('token')) {
+      $requirements['advuser_token'] = array(
+        'title' => $t('!module module', array('!module' => $t('Token'))),
+        'value' => $t('Disabled'),
+        'severity' => REQUIREMENT_ERROR,
+        'description' => $t(
+          'Since version 6.x-3.x the !this_module module needs the !token module for token substitution. Please install and enable it.',
+          array(
+            '!token' => l($t('Token'), 'http://drupal.org/project/token'),
+            '!this_module' => $t('Advanced User')
+          )
+        ),
+      );
+    }
+  }
+
+  return $requirements;
+}
+
+/**
+ * Updating substitution tokens from Advanced User module only tokens to Token
+ * module tokens.
+ */
+function advuser_update_6300() {
+  $ret = array();
+  $variables_to_update = array(
+    'advuser_modify_mail',
+    'advuser_modify_subject',
+    'advuser_new_mail',
+    'advuser_new_subject',
+  );
+  $token_substitutions = array(
+    '%user_name' => '[user-raw]',
+    '%site' => '[site-name]',
+    '%uri' => '[account-url]',
+    '%user_email' => '[mail]',
+    '%user_status' => '[advuser-status]',
+    '%user_theme' => '[advuser-theme]',
+    '%user_created' => '[advuser-created]',
+    '%user_language' => '[advuser-language]',
+    '%user_timezone' => '[advuser-timezone]',
+    '%user_signature' => '[advuser-signature-raw]',
+  );
+
+  foreach ($variables_to_update as $variable) {
+    $current = db_result(db_query(
+      "SELECT value
+        FROM {variable}
+        WHERE name = '%s'",
+      $variable
+    ));
+    if (strlen($current) == 0) {
+      continue;
+    }
+    $new = str_replace(
+      array_keys($token_substitutions),
+      array_values($token_substitutions),
+      $current
+    );
+    $query = sprintf(
+      "UPDATE {variable}
+        SET value = '%s'
+        WHERE name = '%s'",
+      db_escape_string($new),
+      db_escape_string($variable)
+    );
+    $ret[] = update_sql($query);
+  }
+
+  return $ret;
+}
+
 // vim:ft=php:sts=2:sw=2:ts=2:et:ai:sta:ff=unix
Index: advuser.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/advuser/advuser.module,v
retrieving revision 1.14.2.7.2.15
diff -u -p -r1.14.2.7.2.15 advuser.module
--- advuser.module	27 Apr 2010 11:32:12 -0000	1.14.2.7.2.15
+++ advuser.module	30 Jul 2010 15:35:34 -0000
@@ -12,33 +12,36 @@
  * @defgroup advuser_constants Advanced User constants
  * @{
  */
-define('ADVUSER_SUBSTITUTION_TEXT', '<strong>Substitution variables</strong> available in subject and email body<br/><em> %user_name, %user_email, %user_status, %user_created, %user_theme, %user_timezone, %user_language, %user_signature, %site, %uri</em>');
+define('ADVUSER_SUBSTITUTION_TEXT', '<strong>Substitution variables</strong> available in subject and email body:<br/>!tokens');
 
-define('ADVUSER_DEFAULT_NEW_SUBJECT', '[%site] On %user_created a new user registered as %user_name.');
+define('ADVUSER_DEFAULT_NEW_SUBJECT', '[[site-name]] On [advuser-created] a new user registered as [user-raw].');
 
 define('ADVUSER_DEFAULT_NEW_MAIL', "=====  New User Information:  =====
-    User: %user_name 
-    Mail: %user_email
- Created: %user_created 
-  Status: %user_status
-Timezone: %user_timezone
-Language: %user_language
-   Theme: %user_theme
+    User: [user-raw]
+    Mail: [mail]
+ Created: [advuser-created]
+  Status: [advuser-status]
+Timezone: [advuser-timezone]
+Language: [advuser-language]
+   Theme: [advuser-theme]
 
-Administor user at %uri for %site");
+User account administration page at [account-url] for [site-name]");
 
-define('ADVUSER_DEFAULT_MODIFY_SUBJECT', '[%site] User %user_name has modified their account.');
+define('ADVUSER_DEFAULT_MODIFY_SUBJECT', '[[site-name]] User [user-raw] has modified their account.');
 
 define('ADVUSER_DEFAULT_MODIFY_MAIL', "=====  Updated User Information:  =====
-    User: %user_name 
-    Mail: %user_email
- Created: %user_created 
-  Status: %user_status
-Timezone: %user_timezone
-Language: %user_language
-   Theme: %user_theme
+    User: [user-raw]
+    Mail: [mail]
+ Created: [advuser-created]
+  Status: [advuser-status]
+Timezone: [advuser-timezone]
+Language: [advuser-language]
+   Theme: [advuser-theme]
 
-Administor user at %uri for %site");
+User account administration page at [account-url] for [site-name]");
+
+define('ADVUSER_TOKEN_PREFIX', '[');
+define('ADVUSER_TOKEN_SUFFIX', ']');
 
 /**
  * @} End of "defgroup advuser_constants".
@@ -288,26 +291,6 @@ function advuser_mail($key, &$message, $
 }
 
 /**
- * Get a list of substitution variables for the user account
- * @param $user the user account
- * @return An associative array of substitution variables 
- */
-function _advuser_get_variables($user) {
-  return array(
-    '%user_name' => $user->name,
-    '%site' => variable_get("site_name", "drupal"), 
-    '%uri' => url('user/'. $user->uid, array('absolute' => TRUE)), 
-    '%user_email' => $user->mail,
-    '%user_status' => t($user->status ? 'Active' : 'Blocked'),
-    '%user_theme' => empty($user->theme) ? t('DEFAULT') : $user->theme,
-    '%user_created' => strftime('%x %X', $user->created),
-    '%user_language' => empty($user->language) ? t('DEFAULT') : $user->language,
-    '%user_timezone' => empty($user->timezone) ? '0' : "$user->timezone",
-    '%user_signature' => $user->signature,
-  );
-}
-
-/**
  * @private
  * Return a list of users to send notification of user changes.
  *
@@ -370,9 +353,21 @@ function _advuser_receive_notification_b
     } break;
   }
 
-  $variables = _advuser_get_variables($account);
-  $subject = strtr($subject, $variables);
-  $body = strtr($body, $variables);
+  $types = array('user' => $account);
+  $subject = token_replace_multiple(
+    $subject,
+    $types,
+    ADVUSER_TOKEN_PREFIX,
+    ADVUSER_TOKEN_SUFFIX
+  );
+  $body = token_replace_multiple(
+    $body,
+    $types,
+    ADVUSER_TOKEN_PREFIX,
+    ADVUSER_TOKEN_SUFFIX
+  );
+  unset($types);
+
 
   if ($notify) {
     if (variable_get('advuser_log_notifications', FALSE)) {
@@ -849,4 +844,63 @@ function advuser_reset_variables() {
   $advuser['deselected'] = array();
 }
 
+/**
+ * Implementation of hook_token_values().
+ */
+function advuser_token_values($type, $object = NULL, $options = array()) {
+  if ($type == 'user') {
+    $user = $object;
+    $tokens = array();
+    $tokens['advuser-status'] = $user->status ? t('Active') : t('Blocked');
+    $tokens['advuser-theme'] = empty($user->theme) ? t('DEFAULT') : $user->theme;
+    $tokens['advuser-created'] = strftime('%x %X', $user->created);
+    $tokens['advuser-language'] = empty($user->language) ? t('DEFAULT') : $user->language;
+    $tokens['advuser-timezone'] = empty($user->timezone) ? '0' : "$user->timezone";
+    $tokens['advuser-signature'] = check_plain($user->signature);
+    $tokens['advuser-signature-raw'] = $user->signature;
+    return $tokens;
+  }
+}
+
+/**
+ * Implementation of hook_token_list().
+ */
+function advuser_token_list($type = 'all') {
+  if ($type == 'user' || $type == 'all') {
+    $tokens = array();
+    $tokens['user']['advuser-status'] = t(
+      "The !this_module module user's status (either '!active' or '!blocked').",
+      array(
+        '!active' => t('Active'),
+        '!blocked' => t('Blocked'),
+        '!this_module' => t('Advanced User'),
+    ));
+    $tokens['user']['advuser-theme'] = t(
+      "The !this_module module user's theme (or '!default' if not defined).",
+      array('!default' => t('DEFAULT'), '!this_module' => t('Advanced User'),
+    ));
+    $tokens['user']['advuser-created'] = t(
+      "The !this_module module user's created date and time.",
+      array('!this_module' => t('Advanced User'),
+    ));
+    $tokens['user']['advuser-language'] = t(
+      "The !this_module module user's language (or '!default' if not defined).",
+      array('!default' => t('DEFAULT'), '!this_module' => t('Advanced User'),
+    ));
+    $tokens['user']['advuser-timezone'] = t(
+      "The !this_module module user's timezone (or '0' if not defined).",
+      array('!this_module' => t('Advanced User'),
+    ));
+    $tokens['user']['advuser-signature'] = t(
+      "The !this_module module user's signature.",
+      array('!this_module' => t('Advanced User'),
+    ));
+    $tokens['user']['advuser-signature-raw'] = t(
+      "The !this_module module unfiltered user's signature. WARNING - raw user input.",
+      array('!this_module' => t('Advanced User'),
+    ));
+    return $tokens;
+  }
+}
+
 // vim:ft=php:sts=2:sw=2:ts=2:et:ai:sta:ff=unix
Index: forms/advuser_multiple_email_confirm.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/advuser/forms/advuser_multiple_email_confirm.inc,v
retrieving revision 1.1.2.4
diff -u -p -r1.1.2.4 advuser_multiple_email_confirm.inc
--- forms/advuser_multiple_email_confirm.inc	17 Apr 2010 03:46:58 -0000	1.1.2.4
+++ forms/advuser_multiple_email_confirm.inc	30 Jul 2010 15:35:35 -0000
@@ -7,6 +7,8 @@
  * $Id: advuser_multiple_email_confirm.inc,v 1.1.2.4 2010/04/17 03:46:58 earnie Exp $
  */
 
+require_once 'advuser_settings.inc';
+
 /**
  * The menu callback function for
  * admin/user/user/advuser/confirm/email
@@ -61,7 +63,10 @@ function advuser_multiple_email_confirm(
   $form['variables'] = array(
     '#type' => 'markup', 
     '#prefix' => '<div class="advuser-inset-panel">',
-    '#value' => t(ADVUSER_SUBSTITUTION_TEXT),
+    '#value' => t(
+      ADVUSER_SUBSTITUTION_TEXT,
+      array('!tokens' => _advuser_get_tokens_list())
+    ),
     '#suffix' => '</div>' 
   );
 
@@ -113,11 +118,20 @@ function advuser_multiple_email_confirm_
   if ($form_state['values']['confirm']) {
     foreach ($accounts as $uid => $value) {
       $account = user_load(array('uid' => $uid));
-      // these are invariant for all sent emails
-      $variables = _advuser_get_variables($account);
       $from = $form_state['values']['mailfrom'];
-      $mail_subject = strtr($form_state['values']['mailsubject'], $variables);
-      $mail_body = strtr($form_state['values']['mailbody'], $variables);
+      $types = array('user' => $account);
+      $mail_subject = token_replace_multiple(
+        $form_state['values']['mailsubject'],
+        $types,
+        ADVUSER_TOKEN_PREFIX,
+        ADVUSER_TOKEN_SUFFIX
+      );
+      $mail_body = token_replace_multiple(
+        $form_state['values']['mailbody'],
+        $types,
+        ADVUSER_TOKEN_PREFIX,
+        ADVUSER_TOKEN_SUFFIX
+      );
       drupal_mail('advuser', 'advuser-mail', $account->mail, user_preferred_language($account), array('subject' => $mail_subject, 'body' => $mail_body), $from, TRUE);
     }
     drupal_set_message(t('The users have been mailed.'));
Index: forms/advuser_settings.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/advuser/forms/advuser_settings.inc,v
retrieving revision 1.1.2.8
diff -u -p -r1.1.2.8 advuser_settings.inc
--- forms/advuser_settings.inc	17 Apr 2010 03:46:58 -0000	1.1.2.8
+++ forms/advuser_settings.inc	30 Jul 2010 15:35:35 -0000
@@ -85,7 +85,10 @@ function advuser_settings() {
   $form['advuser_mail']['registration']['variables'] = array(
     '#type' => 'markup', 
     '#prefix' => '<div class="advuser-inset-panel">',
-    '#value' => t(ADVUSER_SUBSTITUTION_TEXT),
+    '#value' => t(
+      ADVUSER_SUBSTITUTION_TEXT,
+      array('!tokens' => _advuser_get_tokens_list())
+    ),
     '#suffix' => '</div>',
   );
 
@@ -125,7 +128,10 @@ function advuser_settings() {
   $form['advuser_mail']['update']['variables'] = array(
     '#type' => 'markup', 
     '#prefix' => '<div class="advuser-inset-panel">',
-    '#value' => t(ADVUSER_SUBSTITUTION_TEXT),
+    '#value' => t(
+      ADVUSER_SUBSTITUTION_TEXT,
+      array('!tokens' => _advuser_get_tokens_list())
+    ),
     '#suffix' => '</div>',
   );
 
@@ -243,4 +249,19 @@ function advuser_settings() {
   return system_settings_form($form);
 }
 
+/**
+ * Returns the HTML representation of the available tokens list.
+ *
+ * @return string The HTML representation of the list of usable tokens and their
+ * descriptions, organized by token type.
+ */
+function _advuser_get_tokens_list() {
+  static $tokens_list = '';
+
+  if(!$tokens_list) {
+    $tokens_list = theme('token_help', 'user');
+  }
+  return $tokens_list;
+}
+
 // vim:ft=php:sts=2:sw=2:ts=2:et:ai:sta:ff=unix
