Index: token_node.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/token/token_node.inc,v
retrieving revision 1.3.2.21
diff -u -p -r1.3.2.21 token_node.inc
--- token_node.inc	28 Oct 2007 16:10:41 -0000	1.3.2.21
+++ token_node.inc	1 Feb 2008 10:27:03 -0000
@@ -1,6 +1,48 @@
 <?php
 // $Id: token_node.inc,v 1.3.2.21 2007/10/28 16:10:41 greggles Exp $
 
+// Returns array of date types pointing to their formatted values.
+function _token_get_date_values($date, $date_type = 'created') {
+  // Node changed date.
+  if ($date_type == 'changed') {
+    $date_types_index = array(
+      'mod-yyyy'  => 'Y',
+      'mod-yy'    => 'y',
+      'mod-month' => 'F',
+      'mod-mon'   => 'M',
+      'mod-mm'    => 'm',
+      'mod-m'     => 'n',
+      'mod-ww'    => 'W',
+      'mod-date'  => 'N',
+      'mod-day'   => 'l',
+      'mod-ddd'   => 'D',
+      'mod-dd'    => 'd',
+      'mod-d'     => 'j'
+    );
+  }
+  // Node created date.
+  else {
+    $date_types_index = array(
+      'yyyy'  => 'Y',
+      'yy'    => 'y',
+      'month' => 'F',
+      'mon'   => 'M',
+      'mm'    => 'm',
+      'm'     => 'n',
+      'ww'    => 'W',
+      'date'  => 'N',
+      'day'   => 'l',
+      'ddd'   => 'D',
+      'dd'    => 'd',
+      'd'     => 'j'
+    );
+  }
+  return array_combine(
+    array_keys($date_types_index),
+    explode(',', format_date($date, 'custom', implode(',', $date_types_index)))
+  );
+}
+
 /**
  * Implementation of hook_token_values()
  */
@@ -19,37 +61,12 @@ function node_token_values($type, $objec
       $values['author-name']      = check_plain($node->name);
       $values['author-name-raw']  = $node->name;
       if (isset($node->created)) {
-        $date = (int)$node->created;
-        $values['yyyy']           = date('Y', $date);
-        $values['yy']             = date('y', $date);
-        $values['month']          = date('F', $date);
-        $values['mon']            = date('M', $date);
-        $values['mm']             = date('m', $date);
-        $values['m']              = date('n', $date);
-        $values['ww']             = date('W', $date);
-        $values['date']           = date('N', $date);
-        $values['day']            = date('l', $date);
-        $values['ddd']            = date('D', $date);
-        $values['dd']             = date('d', $date);
-        $values['d']              = date('j', $date);
+        $values = array_merge($values, _token_get_date_values((int)$node->created, 'created'));
       }
-
       if (isset($node->changed)) {
-        $date = (int)$node->changed;
-        $values['mod-yyyy']       = date('Y', $date);
-        $values['mod-yy']         = date('y', $date);
-        $values['mod-month']      = date('F', $date);
-        $values['mod-mon']        = date('M', $date);
-        $values['mod-mm']         = date('m', $date);
-        $values['mod-m']          = date('n', $date);
-        $values['mod-ww']         = date('W', $date);
-        $values['mod-date']       = date('N', $date);
-        $values['mod-day']        = date('l', $date);
-        $values['mod-ddd']        = date('D', $date);
-        $values['mod-dd']         = date('d', $date);
-        $values['mod-d']          = date('j', $date);
+        $values = array_merge($values, _token_get_date_values((int)$node->changed, 'changed'));
       }
-      
+
       // Now get the menu related information.
       global $_menu;
       $trail = array();
