Index: issue.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/project_issue/issue.inc,v retrieving revision 1.295 diff -u -r1.295 issue.inc --- issue.inc 31 Jan 2008 00:22:17 -0000 1.295 +++ issue.inc 28 Feb 2008 14:36:30 -0000 @@ -682,20 +682,12 @@ // Setup the array of choices for who the issue is assigned to. $assigned = array(); - if (empty($node->assigned)) { - $assigned[0] = t('Unassigned'); + foreach (module_implements('project_issue_assignees') as $module) { + $function = "{$module}_project_issue_assignees"; + $function($assigned, $node); } - else { - // It's currently assigned, so always let people unassign it. - $assigned[0] = t('Unassign'); - if ($user->uid != $node->assigned) { - // Assigned to someone else, add the currently assigned user. - $account = user_load(array('uid' => $node->assigned)); - $assigned[$node->assigned] = $account->name; - } - } - // Always let the person replying assign it to themselves. - $assigned[$user->uid] = $user->name; + natcasesort($assigned); + $assigned = array(0 => empty($node->assigned) ? t('Unassigned') : t('Unassign')) + $assigned; if (trim($project->help)) { $form['project_help'] = array( @@ -884,6 +876,35 @@ } /** + * Implementation of hook_project_issue_assignees() + * + * This hook is used to modify the list of users presented to a user when + * editing or commenting on an issue. + * + * @param $assigned + * An array of key=>value pairs in the format of uid=>name that represent + * the list of users that the issue may be assigned to. This parameter + * is passed by reference so the hook may make changes, such as adding or + * removing elements. + * @param $node + * The node object for the issue being edited or commented on. The hook may + * use the node's information in order to determine which users to add to or + * remove from the list of potential assignees. + * @return + * None. + */ +function project_issue_project_issue_assignees(&$assigned, $node) { + global $user; + if ($user->uid != $node->assigned) { + // Assigned to someone else, add the currently assigned user. + $account = user_load(array('uid' => $node->assigned)); + $assigned[$node->assigned] = $account->name; + } + // Always let the person replying assign it to themselves. + $assigned[$user->uid] = $user->name; +} + +/** * Themes the metadata table and internal page links for issue nodes. * * @param $summary_table_rows