? assign.patch
? project_issue.module.patch
Index: project_issue.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project_issue/project_issue.module,v
retrieving revision 1.38.2.3
diff -u -p -r1.38.2.3 project_issue.module
--- project_issue.module	13 Oct 2007 22:09:11 -0000	1.38.2.3
+++ project_issue.module	17 Oct 2007 10:34:35 -0000
@@ -1,6 +1,6 @@
 <?php
 // $Id: project_issue.module,v 1.38.2.3 2007/10/13 22:09:11 dww Exp $
-// $Name:  $
+// $Name: DRUPAL-5 $
 
 // issue nodes      -> project_issues
 // issue comments   -> project_comments
@@ -62,7 +62,9 @@ function project_issue_perm() {
     'create project issues',
     'access project issues',
     'edit own project issues',
-    'access own project issues'
+    'access own project issues',
+    'assign project issues to others',
+    'be assigned project issues',    
   );
   $states = project_issue_state();
   foreach($states as $key => $value) {
@@ -857,3 +859,45 @@ function _project_issue_roles($permissio
   }
   return $roles;
 }
+
+function _project_issue_additional_assignees() {
+  if (user_access('assign project issues to others')) {
+    $options = array();
+  	$result = db_query(
+        "SELECT u.uid, u.name "
+      . "FROM {users} u "
+      . "INNER JOIN {users_roles} ur ON u.uid  = ur.uid "
+      . "INNER JOIN {permission}  p  ON ur.rid = p.rid "
+      . "WHERE p.perm like '%%be assigned project issues%%' "
+      . "ORDER BY u.name"
+      );
+    while ($user = db_fetch_object($result)) {
+      $options[$user->uid] = $user->name;
+    }
+  }
+  else {
+    $options = NULL;
+  }
+  return $options;
+}
+
+function project_issue_form_alter($form_id, &$form) {
+  if (in_array($form_id, array('project_issue_node_form', 'project_comment_form'))) {
+    $options = _project_issue_additional_assignees();
+  }
+  
+  if (!empty($options)) {
+    switch ($form_id) {
+      case 'project_issue_node_form':
+        if ($form['issue_info']['assigned']) {
+          $form['issue_info']['assigned']['#options'] += $options;
+        }
+        break;
+      case 'project_comment_form':
+        if ($form['project_issue_form']['issue_info']['assigned']) {
+          $form['project_issue_form']['issue_info']['assigned']['#options'] += $options;
+        }
+        break;
+    }
+  }
+}
\ No newline at end of file
