drupal_module__project_issu.../project_issue_extend.module
Frederic G. Marand 8c7bbd4b59 D6 port and code review
- constants need quotes when being defined
- update hook_help signature
- more useful hook_help content
- honor SQL coding standard
2009-12-03 21:35:05 +00:00

71 lines
2.4 KiB
Text

<?php
// $Id: project_issue_extend.module,v 1.2 2009-12-03 21:35:05 fgm Exp $
/**
* 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
*
* @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($path, $arg) {
switch ($path) {
case 'admin/help#project_issue_extend':
return t('<p>This module allows users with the "assign" permission a right to assign issues to users with a "be assigned" permissions. Do not combine with the "assign and be assigned" permission in project_issue.module.</p>')
. t('<p>Note that unlike usual permissions, these permissions are only checked for an explicit role: granting them to the anonymous account or to the "authenticated user" pseudo-role will not make them assignable.</p>');
}
}
/**
* 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, $form_state, $form_id) {
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;
}
}
}