- constants need quotes when being defined - update hook_help signature - more useful hook_help content - honor SQL coding standard
71 lines
2.4 KiB
Text
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;
|
|
}
|
|
}
|
|
}
|