? storm--332555-23.patch ? storm--332555-23b.patch ? stormproject_token_support.3_0.patch Index: stormperson/stormperson.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/storm/stormperson/stormperson.module,v retrieving revision 1.7.4.31 diff -u -p -r1.7.4.31 stormperson.module --- stormperson/stormperson.module 9 Sep 2010 22:16:37 -0000 1.7.4.31 +++ stormperson/stormperson.module 2 Jan 2011 00:53:21 -0000 @@ -538,3 +538,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.8.4.64 diff -u -p -r1.8.4.64 stormproject.module --- stormproject/stormproject.module 11 Oct 2010 15:40:14 -0000 1.8.4.64 +++ stormproject/stormproject.module 2 Jan 2011 00:53:23 -0000 @@ -810,3 +810,75 @@ function stormproject_storminvoice_auto_ return $invoice_nid; } + +/** +* 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.'); + 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; + 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