<?php /** * A small module to assign issues to users * Derived from Nedjo Rogers' module for 4.7 * See http://drupal.org/node/4354 for the discussion * * @version $Id: project_issue_extend.module,v 1.1 2009-12-03 20:55:33 root Exp $ * @license GPL 2.0 * */ define(PROJECT_ISSUE_PERM_SETTER, 'assign project issues to others'); define(PROJECT_ISSUE_PERM_GETTER, 'be assigned project issues'); /** * Implementation of hook_help(). */ function project_issue_extend_help($section) { switch ($section) { case 'admin/modules#description': return t('Allow assigning of issues to any member with appropriate permissions.'); } } /** * Implementation of hook_perm(). */ function project_issue_extend_perm() { return array( PROJECT_ISSUE_PERM_SETTER, PROJECT_ISSUE_PERM_GETTER, ); } /** * Implementation of hook_form_alter(). * * Add all users to select for assigning issues. */ function project_issue_extend_form_alter($form_id, &$form) { if (in_array($form_id, array('project_issue_node_form', 'comment_form', /* was 'project_comment_form' */)) && user_access(PROJECT_ISSUE_PERM_SETTER)) { $options = array(); $result = db_query( "SELECT DISTINCT u.uid, u.name " . "FROM {users} u " . "INNER JOIN {users_roles} ur ON u.uid = ur.uid " . "INNER JOIN {role} r ON ur.rid = r.rid " . "INNER JOIN {permission} p ON p.rid = r.rid " . "WHERE p.perm like '%%%s%%' " . "ORDER BY u.name", PROJECT_ISSUE_PERM_GETTER); while ($user = db_fetch_object($result)) { $options[$user->uid] = $user->name; } switch ($form_id) { case 'project_issue_node_form': if ($form['issue_info']['assigned']) { $form['issue_info']['assigned']['#options'] += $options; } break; case 'comment_form': // project_comment_form if ($form['original_issue']['issue_info']['assigned']) { $form['original_issue']['issue_info']['assigned']['#options'] += $options; } break; } } }