From fec76accca9f226e14e7348be2b97f979fd0e695 Mon Sep 17 00:00:00 2001 From: Robert Sesek Date: Sun, 18 Mar 2007 17:10:21 +0000 Subject: [PATCH] r1498: In construct_custom_fields() and process_custom_fields(), change the query so we support multiple user group permissions --- includes/functions.php | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/includes/functions.php b/includes/functions.php index 8c14e7b..dc8088c 100755 --- a/includes/functions.php +++ b/includes/functions.php @@ -220,13 +220,14 @@ function construct_custom_fields($bug = array(), $ignore21mask = false, $nodefau { $fields = array(); $fields_fetch = $bugsys->db->query(" - SELECT bugfield.*, permission.mask + SELECT bugfield.*, MAX(permission.mask) AS mask FROM " . TABLE_PREFIX . "bugfield AS bugfield LEFT JOIN " . TABLE_PREFIX . "bugfieldpermission AS permission ON (bugfield.fieldid = permission.fieldid) WHERE (permission.mask = 2 OR permission.mask = 1) - AND permission.usergroupid = {$bugsys->userinfo['usergroupid']}" - ); + AND permission.usergroupid IN ({$bugsys->userinfo['usergroupid']}" . (sizeof($bugsys->userinfo['groupids']) != 0 ? ',' . implode(',', $bugsys->userinfo['groupids']) : '') . ") + GROUP BY (bugfield.fieldid) + "); while ($field = $bugsys->db->fetch_array($fields_fetch)) { $fields["$field[fieldid]"] = $field; @@ -370,16 +371,18 @@ function process_custom_fields(&$bugapi, &$msg, $errorbox = false, $searchMode = } $fields = $bugsys->db->query(" - SELECT bugfield.* + SELECT bugfield.*, MAX(permission.mask) AS mask 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']}" - ); + AND permission.usergroupid IN ({$bugsys->userinfo['usergroupid']}" . (sizeof($bugsys->userinfo['groupids']) != 0 ? ',' . implode(',', $bugsys->userinfo['groupids']) : '') . ") + GROUP BY (bugfield.fieldid) + "); while ($field = $bugsys->db->fetch_array($fields)) { $fieldname = "custom$field[fieldid]"; + if ($field['type'] == 'input_checkbox') { if ($searchMode AND intval($inputdata["$fieldname"]) == 0) @@ -389,10 +392,16 @@ function process_custom_fields(&$bugapi, &$msg, $errorbox = false, $searchMode = $bugapi->set($fieldname, intval($inputdata["$fieldname"])); continue; } + + // field data wasn't passed, so skip it + if (!isset($inputdata["$fieldname"])) + { + continue; + } if ($field['required'] AND empty($inputdata["$fieldname"]) AND !$searchMode) { - $errorlist[] = sprintf(_('The "%1$s" field is a required field.'), $field['name']); + $errorlist[] = sprintf(_('The field "%1$s" is a required.'), $field['name']); continue; } -- 2.22.5