project_issue_extend.module 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. /**
  3. * A small module to assign issues to users
  4. * Derived from Nedjo Rogers' module for 4.7
  5. * See http://drupal.org/node/4354 for the discussion
  6. *
  7. * @version $Id: project_issue_extend.module,v 1.1 2009-12-03 20:55:33 root Exp $
  8. * @license GPL 2.0
  9. *
  10. */
  11. define(PROJECT_ISSUE_PERM_SETTER, 'assign project issues to others');
  12. define(PROJECT_ISSUE_PERM_GETTER, 'be assigned project issues');
  13. /**
  14. * Implementation of hook_help().
  15. */
  16. function project_issue_extend_help($section) {
  17. switch ($section) {
  18. case 'admin/modules#description':
  19. return t('Allow assigning of issues to any member with appropriate permissions.');
  20. }
  21. }
  22. /**
  23. * Implementation of hook_perm().
  24. */
  25. function project_issue_extend_perm() {
  26. return array(
  27. PROJECT_ISSUE_PERM_SETTER,
  28. PROJECT_ISSUE_PERM_GETTER,
  29. );
  30. }
  31. /**
  32. * Implementation of hook_form_alter().
  33. *
  34. * Add all users to select for assigning issues.
  35. */
  36. function project_issue_extend_form_alter($form_id, &$form) {
  37. if (in_array($form_id, array('project_issue_node_form', 'comment_form', /* was 'project_comment_form' */))
  38. && user_access(PROJECT_ISSUE_PERM_SETTER)) {
  39. $options = array();
  40. $result = db_query(
  41. "SELECT DISTINCT u.uid, u.name "
  42. . "FROM {users} u "
  43. . "INNER JOIN {users_roles} ur ON u.uid = ur.uid "
  44. . "INNER JOIN {role} r ON ur.rid = r.rid "
  45. . "INNER JOIN {permission} p ON p.rid = r.rid "
  46. . "WHERE p.perm like '%%%s%%' "
  47. . "ORDER BY u.name",
  48. PROJECT_ISSUE_PERM_GETTER);
  49. while ($user = db_fetch_object($result)) {
  50. $options[$user->uid] = $user->name;
  51. }
  52. switch ($form_id) {
  53. case 'project_issue_node_form':
  54. if ($form['issue_info']['assigned']) {
  55. $form['issue_info']['assigned']['#options'] += $options;
  56. }
  57. break;
  58. case 'comment_form': // project_comment_form
  59. if ($form['original_issue']['issue_info']['assigned']) {
  60. $form['original_issue']['issue_info']['assigned']['#options'] += $options;
  61. }
  62. break;
  63. }
  64. }
  65. }