$admin->row_yesno(phrase("permissions_$setting"), "perm[$setting]", ($usergroup['permissions'] & $_PERMISSION["$setting"]));
}
}
-
+
+ $admin->table_end();
+
+ // custom field permissions
+ $admin->table_start();
+ $admin->table_head('Custom Field Permissions');
+
+ if ($edit)
+ {
+ $perms = $db->query("SELECT fieldid, mask FROM " . TABLE_PREFIX . "bugfieldpermission WHERE usergroupid = $usergroup[usergroupid]");
+ while ($perm = $db->fetch_array($perms))
+ {
+ $permissions["$perm[fieldid]"] = $perm['mask'];
+ }
+ }
+
+ $fields = $db->query("SELECT fieldid, shortname, name FROM " . TABLE_PREFIX . "bugfield ORDER BY fieldid");
+ while ($field = $db->fetch_array($fields))
+ {
+ unset($listitem);
+ $admin->list_item('No Permission', 0, $permissions["$field[fieldid]"] == 0);
+ $admin->list_item('Can View Field', 1, $permissions["$field[fieldid]"] == 1);
+ $admin->list_item('Can View, Edit Field', 2, $permissions["$field[fieldid]"] == 2);
+ $admin->row_list($field['name'], "custom[$field[fieldid]]");
+ }
+
$admin->table_end();
// Submit
)"
);
+ $ugroupid = $db->insert_id();
+
build_usergroups();
+ foreach ($_POST['custom'] AS $fieldid => $mask)
+ {
+ $values[] = "$ugroupid, " . intval($fieldid) . ", " . intval($mask);
+ }
+
+ $db->query("
+ INSERT INTO " . TABLE_PREFIX . "bugfieldpermission
+ (usergroupid, fieldid, mask)
+ VALUES
+ (" . implode("\n\t\t\t", $values) . "
+ )"
+ );
+
$admin->redirect('usergroup.php?do=modify');
}
build_usergroups();
build_assignedto();
+ $ugroupid = intval($bugsys->in['usergroupid']);
+ foreach ($_POST['custom'] AS $fieldid => $mask)
+ {
+ $values[] = "$ugroupid, " . intval($fieldid) . ", " . intval($mask);
+ }
+
+ $db->query("
+ REPLACE INTO " . TABLE_PREFIX . "bugfieldpermission
+ (usergroupid, fieldid, mask)
+ VALUES
+ (" . implode("),\n\t\t\t(", $values) . ")"
+ );
+
+
$admin->redirect('usergroup.php?do=modify');
}
ALTER TABLE `bug` ADD `duplicateof` INT(10) UNSIGNED NOT NULL AFTER `assignedto`, ADD `dependency` MEDIUMTEXT NOT NULL AFTER `duplicateof`;
-DROP TABLE IF EXISTS `templateset`;
\ No newline at end of file
+DROP TABLE IF EXISTS `templateset`;
+
+CREATE TABLE `bugfieldpermission` (
+ `permissionid` INT(10) UNSIGNED NOT NULL,
+ `usergroupid` INT(10) UNSIGNED NOT NULL,
+ `fieldid` INT(10) UNSIGNED NOT NULL,
+ `mask` INT(5) UNSIGNED NOT NULL,
+ PRIMARY KEY (`permissionid`, `fieldid`)
+);
\ No newline at end of file
if (!is_array($fields))
{
$fields = array();
- $fields_fetch = $bugsys->db->query("SELECT * FROM " . TABLE_PREFIX . "bugfield");
+ $fields_fetch = $bugsys->db->query("
+ SELECT bugfield.*
+ FROM " . TABLE_PREFIX . "bugfield AS bugfield
+ LEFT JOIN " . TABLE_PREFIX . "bugfieldpermission AS permission
+ ON (bugfield.fieldid = permission.fieldid)
+ WHERE permission.mask = 2
+ AND permission.usergroupid = {$bugsys->userinfo['usergroupid']}"
+ );
while ($field = $bugsys->db->fetch_array($fields_fetch))
{
$fields["$field[fieldid]"] = $field;
$inputdata =& $bugsys->in;
}
- $fields = $bugsys->db->query("SELECT * FROM " . TABLE_PREFIX . "bugfield");
+ $fields = $bugsys->db->query("
+ SELECT bugfield.*
+ FROM " . TABLE_PREFIX . "bugfield AS bugfield
+ LEFT JOIN " . TABLE_PREFIX . "bugfieldpermission AS permission
+ ON (bugfield.fieldid = permission.fieldid)
+ WHERE permission.mask = 2
+ AND permission.usergroupid = {$bugsys->userinfo['usergroupid']}"
+ );
while ($field = $bugsys->db->fetch_array($fields))
{
if ($field['type'] == 'input_checkbox')
// custom fields
$customfields = '';
-$allfields = $db->query("SELECT * FROM " . TABLE_PREFIX . "bugfield");
+$allfields = $db->query("
+ SELECT bugfield.*
+ FROM " . TABLE_PREFIX . "bugfield AS bugfield
+ LEFT JOIN " . TABLE_PREFIX . "bugfieldpermission AS permission
+ ON (bugfield.fieldid = permission.fieldid)
+ WHERE permission.mask <> 0
+ AND permission.usergroupid = {$bugsys->userinfo['usergroupid']}"
+);
while ($field = $db->fetch_array($allfields))
{
$fieldlist["$field[shortname]"] = $field;
$fieldvalues = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "bugvaluefill WHERE bugid = $bug[bugid]");
-foreach ($fieldvalues AS $shortname => $value)
+foreach ($fieldlist AS $shortname => $field)
{
- if ($shortname == 'bugid')
- {
- continue;
- }
-
- $field =& $fieldlist["$shortname"];
-
$customfields .= "<div><strong>$field[name]:</strong> ";
- if (is_null($value))
+ if (is_null($fieldvalues["$shortname"]))
{
$value = $field['defaultvalue'];
}
+ else
+ {
+ $value = $fieldvalues["$shortname"];
+ }
- if ($field['type'] == 'input_text' OR $field['type'] == 'textarea' OR $field['type'] == 'select_single')
+ if ($field['type'] == 'input_text' OR $field['type'] == 'select_single')
{
$customfields .= $value;
}
{
$customfields .= (($value) ? 'True' : 'False');
}
- $customfields .= "</div>\n\n";
+ $customfeilds .= "</div>\n\n";
}
// -------------------------------------------------------------------