? storm--332555-23b.patch
? storm-6--1.kpf
? stormproject_token_support.2.patch
? stormproject_token_support.3.patch
Index: stormperson/stormperson.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/storm/stormperson/stormperson.module,v
retrieving revision 1.11
diff -u -p -r1.11 stormperson.module
--- stormperson/stormperson.module	1 Feb 2010 16:58:56 -0000	1.11
+++ stormperson/stormperson.module	15 Jan 2011 19:40:05 -0000
@@ -531,3 +531,22 @@ function stormperson_views_api() {
     'path' => drupal_get_path('module', 'stormperson'),
   );
 }
+
+/**
+ * @function
+ * A helper function to return the email address of a stormperson
+ */
+function stormperson_primary_email($node) {
+  if ($node->type !== 'stormperson') {
+    return NULL;
+  }
+  // If there is a Drupal user account use that email
+  if ($node->user_uid) {
+    $stormperson_person = user_load($node->user_uid);
+    return $stormperson_person->mail;
+  }
+  // Else use the stormperson email
+  elseif ($node->email) {
+    return $node->email;
+  }
+}
\ No newline at end of file
Index: stormproject/stormproject.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/storm/stormproject/stormproject.module,v
retrieving revision 1.18
diff -u -p -r1.18 stormproject.module
--- stormproject/stormproject.module	19 Jan 2010 18:35:11 -0000	1.18
+++ stormproject/stormproject.module	15 Jan 2011 19:40:06 -0000
@@ -692,3 +692,103 @@ function _stormproject_organization_proj
   print drupal_to_js($projects);
   exit();
 }
+
+/**
+*  Implementation of hook_token_list().
+*/
+function stormproject_token_list($type='all') {
+  $tokens = array();
+  if (($type == 'node') || ($type == 'all')) {
+    $tokens['node']['stormproject-projectstatus'] = t('Storm Project: Project Status.');
+    $tokens['node']['stormproject-projectcategory'] = t('Storm Project: Project Category.');
+    $tokens['node']['stormproject-projectpriority'] = t('Storm Project: Project Priority.');
+    $tokens['node']['stormproject-durationunit'] = t('Storm Project: Project Duration Unit.');
+    $tokens['node']['stormproject-duration'] = t('Storm Project: Project Duration.');
+    $tokens['node']['stormproject-datebegin'] = t('Storm Project: Project Begin Date.');
+    $tokens['node']['stormproject-dateend'] = t('Storm Project: Project End Date.');
+    $tokens['node']['stormproject-billable'] = t('Storm Project: Project Billable.');    
+    $tokens['node']['stormproject-billed'] = t('Storm Project: Project Billed.');    
+    $tokens['node']['stormproject-price'] = t('Storm Project: Project Price.');    
+    $tokens['node']['stormproject-pricemode'] = t('Storm Project: Project Price Mode.');    
+    if(module_exists('stormorganization')) {
+      $tokens['node']['stormproject-organization-nid'] = t('Storm Project: Organization Node ID.');
+      $tokens['node']['stormproject-organization-title'] = t('Storm Project: Organization Title.');
+    }    
+    if (module_exists('stormperson')) {
+      // Project Manager
+      $tokens['node']['stormproject-manager-title'] = t('Storm Project: Project Manager Title.');
+      $tokens['node']['stormproject-manager-uid'] = t('Storm Project: Project Manager User ID.');
+      $tokens['node']['stormproject-manager-name'] = t('Storm Project: Project Manager Name.');
+      $tokens['node']['stormproject-manager-fullname'] = t('Storm Project: Project Manager Full Name.');
+      $tokens['node']['stormproject-manager-email'] = t('Storm Project: Project Manager Email Address.');
+      // Assignee(s)
+      $tokens['node']['stormproject-assigned-to-email'] = t('Storm Project: Project Assignee(s) Email Address(s).');
+      $tokens['node']['stormproject-assigned-title'] = t('Storm Project: Project Assignee(s) Title(s).');
+    }
+  }
+  return $tokens;
+}
+
+/**
+*  Implementation of hook_token_values().
+*/
+function stormproject_token_values ($type, $object = NULL) {
+  $values = array();
+  $node = $object;
+  if ((($type == 'node') || ($type == 'all')) && ($node->type === 'stormproject')) {
+    $values['stormproject-projectstatus'] = $node->projectstatus;
+    $values['stormproject-projectpriority'] = $node->projectpriority;
+    $values['stormproject-projectcategory'] = $node->projectcategory;
+    $values['stormproject-durationunit'] = $node->durationunit;
+    $values['stormproject-duration'] = $node->duration;    
+    $values['stormproject-datebegin'] = format_date($node->datebegin,'medium','',variable_get('date_default_timezone',NULL));
+    $values['stormproject-dateend'] = format_date($node->dateend,'medium','',variable_get('date_default_timezone',NULL));
+    $values['stormproject-price'] = $node->price;
+    $values['stormproject-pricemode'] = $node->pricemode;
+    $values['stormproject-billable'] = $node->billable;
+    $values['stormproject-billed'] = $node->billed;
+    if(module_exists('stormorganization')) {
+      $values['stormproject-organization-nid'] = $node->organization_nid;
+      $vaues['stormproject-organization-title'] = $node->organization_title;
+    }    
+    if (module_exists('stormperson')) {
+      // Project Manager
+      if ($node->manager_nid) {
+        $manager = node_load($node->manager_nid);
+        $values['stormproject-manager-uid'] = $manager->user_uid;
+        $values['stormproject-manager-name'] = $manager->title;
+        $values['stormproject-manager-fullname'] = $manager->fullname;
+        $values['stormproject-manager-email'] = stormperson_primary_email($manager);
+        $values['stormproject-manager-title'] = $node->manager_title;
+      }
+      else {
+        $values['stormproject-manager-email'] = NULL;
+      }
+      // Project Assignee(s) e-mail
+      if ($node->assigned_nid) {
+        $values['stormproject-assigned-title'] = $node->assigned_title;
+        $assignees_node = node_load($node->assigned_nid);
+        // Assigned to one person
+        if ($assignees_node->type === 'stormperson') {
+          $values['stormproject-assigned-to-email'] = stormperson_primary_email($assignees_node);
+        }
+        // Assigned to a team
+        else {
+          $assignees_array = $assignees_node->members_array;
+          $assignees = array();
+          foreach ($assignees_array as $nid => $name) {
+            $assignee = node_load($nid);
+            $assignees[] = stormperson_primary_email($assignee);
+          }
+          $assigned = implode(", ", $assignees);
+          // Return comma separated list of emails
+          $values['stormproject-assigned-to-email'] = $assigned;
+        }
+      }
+      else {
+        $values['stormproject-assigned-to-email'] = NULL;
+      }
+    }
+  }
+  return $values;
+}
\ No newline at end of file
