--- old\user_badges.module	2011-09-13 16:52:48.000000000 -0400
+++ new\user_badges.module	2011-10-12 17:37:52.259000000 -0400
@@ -23,13 +23,13 @@ function user_badges_help($path, $arg) {
   switch ($path) {
     case 'admin/modules#description':
 
-    case 'admin/user/user_badges':
+    case 'admin/config/people/user_badges':
       return t('User badges are iconic images which can be assigned to users. They can represent accomplishments, status, or anything you\'d like. These badges will show up in the user\'s profile, and could also be used by a theme to appear with user postings on forums, comments, or nodes. Badges can be assigned manually by an administrator by visiting a user\'s profile. They also can be assigned automatically by role or ecommerce purchase (if ecommerce modules are installed). The excellent !link module can also be used to set and unset badges on a wide variety of conditions.', array('!link' => l('Rules', 'http://drupal.org/project/rules', array('absolute' => TRUE))));
 
-    case 'admin/user/user_badges/roles':
+    case 'admin/config/people/user_badges/roles':
       return t("Select the badge that you'd like to associate with each role.");
 
-    case 'admin/user/user_badges/images':
+    case 'admin/config/people/user_badges/images':
       return t("This is the user badges image library. Note that this area is not functional if you have private download active. Here you can upload images to display as a user badge, but you can also enter image URLs directly in the badge form, so this area is optional. The images can be anything you like, but it is recommended that you maintain a uniform icon size for all of your badges. Keep in mind that a user may have many badges displayed so you'll probably want to keep them as small as possible (like 16x16 pixels or smaller).");
 
     case 'user/%/badges':
@@ -79,7 +79,7 @@ function user_badges_menu() {
   $items = array();
   $access = array('manage badges');
 
-  $items['admin/user/user_badges'] = array(
+  $items['admin/config/people/user_badges'] = array(
     'title' => 'Badges',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('user_badges_badgelist_form'),
@@ -87,7 +87,7 @@ function user_badges_menu() {
     'file' => 'user_badges.admin.inc',
   );
 
-  $items['admin/user/user_badges/list'] = array(
+  $items['admin/config/people/user_badges/list'] = array(
     'title' => 'List',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('user_badges_badgelist_form'),
@@ -97,7 +97,7 @@ function user_badges_menu() {
     'file' => 'user_badges.admin.inc',
   );
 
-  $items['admin/user/user_badges/add'] = array(
+  $items['admin/config/people/user_badges/add'] = array(
     'title' => 'Add',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('user_badges_edit_form'),
@@ -106,7 +106,7 @@ function user_badges_menu() {
     'file' => 'user_badges.admin.inc',
   );
 
-  $items['admin/user/user_badges/images'] = array(
+  $items['admin/config/people/user_badges/images'] = array(
     'title' => 'Images',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('user_badges_images_form'),
@@ -115,7 +115,7 @@ function user_badges_menu() {
     'file' => 'user_badges.admin.inc',
   );
 
-  $items['admin/user/user_badges/roles'] = array(
+  $items['admin/config/people/user_badges/roles'] = array(
     'title' => 'Roles',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('user_badges_roles_form'),
@@ -124,7 +124,7 @@ function user_badges_menu() {
     'file' => 'user_badges.admin.inc',
   );
 
-  $items['admin/user/user_badges/settings'] = array(
+  $items['admin/config/people/user_badges/settings'] = array(
     'title' => 'Settings',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('user_badges_settings_form'),
@@ -133,19 +133,19 @@ function user_badges_menu() {
     'file' => 'user_badges.admin.inc',
   );
 
-  $items['admin/user/user_badges/edit/%'] = array(
+  $items['admin/config/people/user_badges/edit/%'] = array(
     'title' => 'Edit badge',
     'page callback' => 'drupal_get_form',
-    'page arguments' => array('user_badges_edit_form', 4),
+    'page arguments' => array('user_badges_edit_form', 5),
     'access arguments' => $access,
     'type' => MENU_CALLBACK,
     'file' => 'user_badges.admin.inc',
   );
 
-  $items['admin/user/user_badges/delete/%'] = array(
+  $items['admin/config/people/user_badges/delete/%'] = array(
     'title' => 'Delete badge',
     'page callback' => 'drupal_get_form',
-    'page arguments' => array('user_badges_delete_form', 4),
+    'page arguments' => array('user_badges_delete_form', 5),
     'access arguments' => $access,
     'type' => MENU_CALLBACK,
     'file' => 'user_badges.admin.inc',
@@ -190,47 +190,49 @@ function user_badges_menu() {
 
 /**
  * Implements hook_user_load().
+ * Gets all badges for the user and the limited badges.
  */
 function user_badges_user_load($users) {
-  global $user;
-  
-  // Have we loaded this user before?
-  if (isset($badges[$user->uid])) {
-    $user->badges = $badges[$user->uid];
-    break;
-  }
-
-  $user->badges = array();
-
-  if ($user->uid > 0) {
-    // Get all user badges for this user, regardless of whether we filter the ones we show.
-    $user->badges_all = user_badges_get_badges($user->uid, array('nolimit' => TRUE));
-
-    // Now make the array of badges we will show.
-    $user->badges = $user->badges_all;
-    if ($limit = variable_get('user_badges_showone', 0)) {
-//  dsm("Limit: $limit, account->badges: ".print_r($account->badges, true));
-      // Loop through all potential badges and get the ones we can show.
-//          if ($account->badges_all) {
-      foreach ($user->badges_all as $bid => $badge) {
-        $badge->class = 'badge ' . _user_badges_class($badge);
-        // Display the badge if there's no limit or if the badge is unhideable or if we are within our limit.
-        if ($limit > 0 || $badge->unhideable == 1) {
-          $user->badges[$bid] = $badge;
-          // Count down our limit, unless the badge doesn't count towards it.
-          if (!$badge->doesnotcounttolimit) {
-            $limit--;
+  static $badges = array();
+
+  foreach($users as $uid => $account) {
+    // Only handle authenticated users.
+    if ($uid > 0) {
+      // Have we loaded this user before?
+      if (isset($badges[$uid])) {
+        $users[$uid]->badges = $badges[$uid];
+      }
+
+      // Get all user badges for this user, regardless of
+      // whether we filter the ones we show.
+      // @TODO: Is this the right function to use? Certainly nolimit is wrong.
+      // @TODO: This also doesn't get role badges.
+      $badges_all = user_badges_get_badges($uid, array('nolimit' => TRUE));;
+      $users[$uid]->badges_all = $badges_all;
+      $badges[$uid] = array();
+
+      // Display the badge if there's no limit
+      // or if the badge is unhideable
+      // or if we are within our limit.
+      if ($limit = variable_get('user_badges_showone', 0)) {
+        // Loop through all potential badges and get the ones we can show.
+        foreach ($badges_all as $bid => $badge) {
+          $badge->class = 'badge ' . _user_badges_class($badge);
+          if ($limit > 0 || $badge->unhideable == 1) {
+            $badges[$uid][$bid] = $badge;
+            // Count down our limit, unless the badge doesn't count towards it.
+            if (!$badge->doesnotcounttolimit) {
+              $limit--;
+            }
           }
         }
+        $users[$uid]->badges = $badges[$uid];
+      }
+      else {
+        $users[$uid]->badges = $badges_all;
       }
-//          }
     }
-//        else {
-//          $account->badges = $account->badges_all;
-//        }
   }
-
-  $badges[$user->uid] = $user->badges;
 }
 
 /**
@@ -363,7 +365,6 @@ function _user_badges_class($badge) {
   $class = str_replace(array('"', "'"), '', $class);
   $class = str_replace(array('_', ' '), '-', $class);
 
-//  dsm("_user_badges_class: badge->name = $badge->name becomes $class.");
   return $class;
 }
 
@@ -388,7 +389,7 @@ function user_badges_theme() {
 }
 
 /**
- * form for users to weight their own badges
+ * Form for users to weight their own badges.
  */
 function user_badges_userweight_form($form, $form_state, $account) {
   $allbadges = $account->badges_all;
@@ -442,7 +443,7 @@ function user_badges_userweight_form($fo
 
   $form['submit'] = array(
     '#type' => 'submit',
-    '#value' => t('Submit'),
+    '#value' => t('Save configuration'),
   );
 
 
@@ -538,7 +539,7 @@ function user_badges_badge_autocomplete(
 
   if (preg_match('/^[^(]+/', $string, $searchstring)) {
     $trimstring = trim($searchstring[0]);
-    
+
     $result = db_select('user_badges_badges', 'ubb')
       -> fields('ubb')
       -> condition('name', '%' . db_like($trimstring) . '%', 'LIKE')
@@ -546,7 +547,7 @@ function user_badges_badge_autocomplete(
       -> limit(5)
       -> execute();
 
-    foreach ($result as $badge) {          
+    foreach ($result as $badge) {
       $matches[$badge->name . ' (' . t('Badge ID') . ' ' . $badge->bid . ')'] = check_plain($badge->name) . ' ' . theme('user_badge', array('badge' => $badge));
     }
   }
@@ -571,7 +572,7 @@ function user_badges_badge_autocomplete(
  */
 function user_badges_badge_autocomplete_validation($value) {
   if (preg_match('/\(' . t('Badge ID') . ' (\d+)\)/', $value, $matches)) {
-    //The format was correct, but we need to check the bid exists    
+    //The format was correct, but we need to check the bid exists
     $bid = $matches[1];
     $records = db_select('user_badges_badges', 'ubb')
       -> fields('ubb')
@@ -598,10 +599,7 @@ function user_badges_badge_autocomplete_
  * Define the page on user/uid/badges/edit.
  */
 function user_badges_page($uid) {
-  // TODO Convert "user_load" to "user_load_multiple" if "$uid" is other than a uid.
-  // To return a single user object, wrap "user_load_multiple" with "array_shift" or equivalent.
-  // Example: array_shift(user_load_multiple(array(), $uid))
-  $account = user_load($uid);
+  $account = array_shift(user_load_multiple(array($uid)));
 
   drupal_set_title(t('Edit badges for %user_name', array('%user_name' => $account->name)), PASS_THROUGH);
 
@@ -613,10 +611,8 @@ function user_badges_page($uid) {
  * Define the page on user/uid/badges.
  */
 function user_badges_userweight_page($uid) {
-  // TODO Convert "user_load" to "user_load_multiple" if "$uid" is other than a uid.
-  // To return a single user object, wrap "user_load_multiple" with "array_shift" or equivalent.
-  // Example: array_shift(user_load_multiple(array(), $uid))
-  $account = user_load($uid);
+  global $user;
+  $account = array_shift(user_load_multiple(array($uid)));
 
   drupal_set_title(t('Badges for %user_name', array('%user_name' => $account->name)), PASS_THROUGH);
 
@@ -629,7 +625,7 @@ function user_badges_userweight_page($ui
     // Otherwise, just list the badges on the page.
     $user_badges = user_badges_get_badges($account->uid, array('nolimit' => TRUE));
     $badges = array();
-    foreach ((array) $user_badges as $badge) {
+    foreach ($user_badges as $badge) {
       $badges[] = theme('user_badge', array('badge' => $badge, 'account' => $account));
     }
     if ($badges) {
@@ -640,7 +636,6 @@ function user_badges_userweight_page($ui
       return t('This user is not currently assigned any badges.');
     }
   }
-
 }
 
 /**
@@ -653,6 +648,7 @@ function user_badges_change_form($form, 
     '#type' => 'value',
     '#value' => $account->uid,
   );
+
   $form['add'] = array(
     '#type' => 'fieldset',
     '#title' => t('Add Badges'),
@@ -660,15 +656,17 @@ function user_badges_change_form($form, 
     '#collapsible' => TRUE,
     '#collapsed' => FALSE,
   );
+
   for ($i = 1; $i <= 5; $i++) {
     $form['add']['add' . $i] = array(
       '#type' => 'textfield',
-      '#title' => t('New Badge !number', array('!number' => $i)),
+      '#title' => t('New Badge @number', array('@number' => $i)),
       '#size' => 40,
       '#maxlength' => 255,
       '#autocomplete_path' => 'user_badges/autocomplete',
     );
   }
+
   if (isset($account->badges_all) && count($account->badges_all)) {
     $form['remove'] = array(
       '#type' => 'fieldset',
@@ -677,6 +675,7 @@ function user_badges_change_form($form, 
       '#collapsible' => TRUE,
       '#collapsed' => FALSE,
     );
+
     foreach ($account->badges_all as $badge) {
       $form['remove'][$badge->bid] = array(
         '#type' => 'checkbox',
@@ -742,9 +741,10 @@ function user_badges_change_form_submit(
     foreach ($badges_to_go as $bid) {
       user_badges_user_remove_badge($uid, $bid);
     }
-    drupal_set_message(t('!removalcount badge(s) removed.', array('!removalcount' => count($badges_to_go))));
+    drupal_set_message(t('@removalcount badge(s) removed.', array('@removalcount' => count($badges_to_go))));
   }
 
+  $form_state['redirect'] = "user/$uid/badges";
 }
 
 /**
@@ -847,7 +847,6 @@ function user_badges_user_remove_badge($
   }
 }
 
-
 /**
  * Return array of user badges where keys are badge ids (bid)
  *   and values are object containing badge info.
@@ -862,6 +861,9 @@ function user_badges_user_remove_badge($
 function user_badges_get_badges($uid, $options = array()) {
   static $badges = array(), $past_uid, $past_options;
 
+  $defaults = array('nolimit' => FALSE);
+  $options = array_merge($defaults, $options);
+
   if (isset($badges[$uid])) {
     return $badges[$uid];
   }
@@ -890,7 +892,7 @@ function user_badges_get_badges($uid, $o
           WHERE u.uid = :uid AND r.rid = :rid
           ORDER BY coalescedweight, b.name', array(':uid' => $uid, ':rid' => 0));
       }
-      else {        
+      else {
         $sql = db_query('SELECT DISTINCT b.bid, b.weight, b.name, b.image, b.href,
           b.unhideable, b.fixedweight, b.doesnotcounttolimit, u.userweight, b.tid,
           CASE WHEN b.fixedweight = 1 THEN b.weight ELSE COALESCE(u.userweight,b.weight) END coalescedweight
@@ -911,8 +913,8 @@ function user_badges_get_badges($uid, $o
       // Set to -1 for no limit.
       $limit = -1;
     }
-  
-    foreach ($sql as $badge) {          
+
+    foreach ($sql as $badge) {
       // Display the badge if there's no limit or if the badge is unhideable or if we are within our limit.
       if ($limit != 0 || $badge->unhideable == 1) {
         if ($uid == 'select') {
@@ -934,16 +936,17 @@ function user_badges_get_badges($uid, $o
   return $badges[$uid];
 }
 
-
 /**
  * Return badge object for given badge id
  */
 function user_badges_get_badge($bid) {
-  return db_fetch_object(db_query('SELECT * FROM {user_badges_badges} WHERE bid = :bid', array(':bid' => $bid)));
+//  return db_query('SELECT * FROM {user_badges_badges} WHERE bid = :bid', array(':bid' => $bid));
+  return db_select('user_badges_badges', 'ubb')
+    ->fields('ubb')
+    ->execute()
+    ->fetchObject();
 }
 
-
-
 /**
  * @todo Please document this function.
  * @see http://drupal.org/node/1354
@@ -956,7 +959,7 @@ function user_badges_delete_form($form, 
       '#type' => 'value',
       '#value' => $bid,
     );
-    return confirm_form($form, t('Are you sure you want to delete the badge %name?', array('%name' => $badge->name)), 'admin/user/user_badges');
+    return confirm_form($form, t('Are you sure you want to delete the badge %name?', array('%name' => $badge->name)), 'admin/config/people/user_badges');
   }
   form_set_error('', t('This badge does not exist.'));
 }
@@ -983,39 +986,34 @@ function user_badges_delete_form_submit(
   ->condition('bid', $bid)
   ->execute();
   drupal_set_message(t('Badge deleted.'));
-  $form_state['redirect'] = 'admin/user/user_badges';
+  $form_state['redirect'] = 'admin/config/people/user_badges';
 }
 
-
 /**
- * Returns an array where keys are role ids (rid) and values are the badge ids (bid) associated with that role
- * These values are assigned on admin/user/user_badges/roles
+ * Returns an array where keys are role ids (rid) and values are the
+ * badge ids (bid) associated with that role
+ * These values are assigned on admin/config/people/user_badges/roles
  *
  * @param $rid - if set, return only values for this role
  *
  * @param $options - array of options
  * $options['returnbadges'] - if TRUE, return badge objects, not just bids
  *
- * @return a list of roles
+ * @return a list of roles pt the whole badge object.
  */
 function user_badges_get_roles($rid = NULL, $options = array()) {
   $roles = array();
   $options = array_merge(array('returnbadges' => 'FALSE'), $options);
 
-  $query = db_select('user_badges_roles', 'ubr')    
-    -> fields('ubr', array('rid', 'bid'))  
-    -> fields('ubb', array('name', 'image', 'weight', 'href', 'tid'));
-    
   if ($rid) {
-    $query -> condition('ubr.rid', $rid);
+    $records = db_query("SELECT ubr.rid, ubb.* FROM {user_badges_roles} ubr INNER JOIN {user_badges_badges} ubb ON ubb.bid = ubr.bid WHERE ubr.rid = :rid ", array(':rid' => $rid));
+  }
+  else {
+    $records = db_query("SELECT ubr.rid, ubb.* FROM {user_badges_roles} ubr INNER JOIN {user_badges_badges} ubb ON ubb.bid = ubr.bid ");
   }
-    
-  $alias = $query -> join('user_badges_badges', 'ubb', 'ubr.bid = ubb.bid');
-  $records = $query -> execute();
 
-  foreach ($records as $row) {      
+  foreach ($records as $row) {
     if ($options['returnbadges']) {
-      $row->image = _user_badges_build_image($row);
       $roles[$row->rid] = $row;
     }
     else {
@@ -1032,13 +1030,16 @@ function user_badges_get_roles($rid = NU
  *   An array in the format rid => bid for each role/badge relationship.
  */
 function user_badges_save_roles($roles) {
+  // @TODO: I (Nancy) think this is all wrong.
+  // user_badges_for_uid can easily pick stuff up by the user's roles.
+  // Otherwise, we can have stale data in the user table.
   if (is_array($roles)) {
     // We have to clear out all badges first.
     $success = TRUE;
 
     db_delete('user_badges_roles')
       ->execute();
-    
+
     db_delete('user_badges_user')
       ->condition('type', 'role')
       ->execute();
@@ -1048,11 +1049,11 @@ function user_badges_save_roles($roles) 
     foreach ($roles as $rid => $bid) {
       if ($bid) {
         // First of all, insert all the role and badge relationship
-        // into user_badges_roles.  
+        // into user_badges_roles.
         $id = db_insert('user_badges_roles')
           ->fields(array(
-              'rid' => $rid, 
-              'bid' => $bid,
+            'rid' => $rid,
+            'bid' => $bid,
             ))
           ->execute();
         $success = $success && $id;
@@ -1064,6 +1065,8 @@ function user_badges_save_roles($roles) 
 
         // The blocked user "role" (represented as rid 0) has no entry in
         // the users_role table, so it needs its own special query.
+
+        // @TODO: fix these queries.
         if ($rid == 0) {
           $success = $success && db_query("
             INSERT INTO {user_badges_user} (uid, bid, type)
@@ -1122,12 +1125,19 @@ function user_badges_for_uid($uid, $refr
       return $cache[$uid];
     }
     else {
+      // TODO: User can also have role badges.
       $user_badges = user_badges_get_badges($uid);
-      foreach ((array) $user_badges as $badge) {
-        // TODO Convert "user_load" to "user_load_multiple" if "$uid" is other than a uid.
-        // To return a single user object, wrap "user_load_multiple" with "array_shift" or equivalent.
-        // Example: array_shift(user_load_multiple(array(), $uid))
-        $badges[] = theme('user_badge', array('badge' => $badge, 'account' => user_load($uid)));
+
+      $account = array_shift(user_load_multiple(array($uid)));
+
+      foreach ($account->roles as $rid => $role_name) {
+        $rb = user_badges_get_roles($rid, array('returnbadges' => TRUE));
+        foreach ($rb as $rid => $b) {
+          $user_badges[$b->bid] = $b;
+        }
+      }
+      foreach ($user_badges as $badge) {
+        $badges[] = theme('user_badge', array('badge' => $badge, 'account' => $account));
       }
       $cache[$uid] = isset($badges) ? theme('user_badge_group', array('badgeimages' => $badges)) : '';
       return $cache[$uid];
@@ -1191,20 +1201,16 @@ function _user_badges_build_image($badge
     $badge->class = 'badge ' . _user_badges_class($badge);
   }
 
-  if (variable_get('user_badges_imagecache', 0)) {
-    // TODO Please change this theme call to use an associative array for the $variables parameter.
-    $image = theme('imagecache', 'user-badges', $badge->image, $badge->name, $badge->name, array('class' => $badge->class));    
-  }
-  else {
-    // If we have a full image URL, don't require theme_image to get the size
-    // (it only breaks).
-    if ($get_size = valid_url($badge->image, TRUE)) {
-      $image = theme('image', array('path' => $badge->image, 'width' => $badge->name, 'height' => $badge->name, 'alt' => array('class' => $badge->class), 'title' => !$get_size));
-    }
-    else {
-      $image = theme('image', array('path' => 'public://badges/' . $badge->image, 'width' => $badge->name, 'height' => $badge->name, 'alt' => array('class' => $badge->class), 'title' => !$get_size)); 
-    }
-  }
+  $style_name = variable_get('user_badges_imagecache', '');
+  $variables = array(
+    'style_name' => $style_name,
+    'path' => $badge->image,
+    'alt' => $badge->name,
+    'title' => $badge->name,
+    'attributes' => array('class' => $badge->class),
+    );
+  $theme = $style_name ? 'image_style' : 'image';
+  $image = theme($theme, $variables);
 
   return $image;
 }
@@ -1230,8 +1236,8 @@ function theme_user_badge($variables) {
 
   // We don't link the badge if there is no link and no default,
   // or if the default is overridden.
-  if (($badge->href == "" && !variable_get('user_badges_defaulthref', ''))
-     || drupal_strtolower($badge->href) == '<none>') {
+  if (($badge->href == '' && !variable_get('user_badges_defaulthref', ''))
+    || drupal_strtolower($badge->href) == '<none>') {
     return $image;
   }
   else {
@@ -1239,7 +1245,7 @@ function theme_user_badge($variables) {
 
     // Implement token replacement.
     if (module_exists('token')) {
-      $href = token_replace($href, array('userbadge' => $badge, 'user' => $account));      
+      $href = token_replace($href, array('userbadge' => $badge, 'user' => $account));
     }
 
     $pieces = parse_url($href);
@@ -1414,27 +1420,67 @@ function user_badges_remove_badge_action
 }
 
 /**
- * Implements hook_token_values().
+ * Implements hook_tokens().
  * @TODO: Add tokens for Submitted By module?
  */
-function user_badges_token_values($type, $object = NULL) {
+function user_badges_tokens($type, $tokens, array $data = array(), array $options = array()) {
+  $url_options = array('absolute' => TRUE);
+  if (isset($options['language'])) {
+    $url_options['language'] = $options['language'];
+    $language_code = $options['language']->language;
+  }
+  else {
+    $language_code = NULL;
+  }
+
+  $replacements = array();
+ dsm(print_r($type,true));
+ dsm(print_r($tokens,true));
+ dsm(print_r($data,true));
+
   if ($type == 'userbadge') {
-    $badge = $object;
-    $tokens['userbadge-name'] = $badge->name;
-    $tokens['userbadge-bid'] = $badge->bid;
-    return $tokens;
+    $badge = $data;
+    foreach ($tokens as $name => $original) {
+      switch ($name) {
+        case 'userbadge-name':
+          $replacements[$original] = check_plain($badge['name']);
+          break;
+
+        case 'userbadge-bid':
+          $replacements[$original] = $badge['bid'];
+          break;
+      }
+    }
   }
+
+  return $replacements;
 }
 
 /**
- * Implements hook_token_list().
+ * Implements hook_token_info().
  */
-function user_badges_token_list($type = 'all') {
-  if ($type == 'userbadge' || $type == 'all') {
-    $tokens['userbadge']['userbadge-name'] = t("The badge name");
-    $tokens['userbadge']['userbadge-bid'] = t("The badge id number (bid)");
-    return $tokens;
-  }
+function user_badges_token_info() {
+ drupal_set_message('user_badges_token_info');
+  $type = array(
+    'name' => t('User Badges'),
+    'description' => t('Tokens related to user badges.'),
+    'needs-data' => 'userbadge',
+    );
+
+  $userbadge['userbadge-name'] = array(
+    'name' => t('Badge Name'),
+    'description' => t('The badge name.'),
+    );
+
+  $userbadge['userbadge-bid'] = array(
+    'name' => t('Badge ID'),
+    'description' => t('The badge id number (bid).'),
+    );
+
+  return array(
+    'types' => array('userbadge' => $type),
+    'tokens' => array('userbadge' => $userbadge),
+  );
 }
 
 /**
@@ -1508,7 +1554,7 @@ function user_badges_block_save($delta =
 }
 
 /**
- * Implements hook_cron()
+ * Implements hook_cron().
  * UNCOMMENT in order to get User Badges to work along with Auto Assign Role
  * notes: - this is a quite fast solution in order to solve Auto Assign Role issue
  *        - do not forget to set up your cron
