array('id' => 3, 'value' => 'low', 'text' => $hesklang['low'], 'formatted' => $hesklang['low']), 'medium' => array('id' => 2, 'value' => 'medium', 'text' => $hesklang['medium'], 'formatted' => $hesklang['medium']), 'high' => array('id' => 1, 'value' => 'high', 'text' => $hesklang['high'], 'formatted' => $hesklang['high']), 'critical' => array('id' => 0, 'value' => 'critical', 'text' => $hesklang['critical'], 'formatted' => $hesklang['critical']), ); // Populate default values for creation $category = array( 'id' => 0, 'name' => '', 'priority' => $priorities['low']['id'], 'autoassign' => $hesk_settings['autoassign'], 'autoassign_config' => null, 'type' => 0, 'default_due_date_unit' => 'day', 'default_due_date_amount' => '' ); if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (defined('HESK_DEMO')) { hesk_process_messages($hesklang['ddemo'], 'manage_categories.php', 'NOTICE'); } // Attempt to save. If problematic, we'll get back the form data entered. $category = try_save_category(); } elseif (hesk_REQUEST('id')) { // Fetch category information $res = hesk_dbQuery("SELECT * FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."categories` WHERE `id` = ".intval(hesk_REQUEST('id'))); if ($row = hesk_dbFetchAssoc($res)) { $category['id'] = $row['id']; $category['name'] = $row['name']; $category['priority'] = intval($row['priority']); $category['autoassign'] = intval($row['autoassign']); $category['autoassign_config'] = $row['autoassign_config']; $category['type'] = intval($row['type']); $category['default_due_date_amount'] = $row['default_due_date_amount'] ? intval($row['default_due_date_amount']) : ''; $category['default_due_date_unit'] = $row['default_due_date_unit']; } // If we're still on ID 0, then the category ID passed in doesn't exist if ($category['id'] === 0) { hesk_process_messages($hesklang['cat_not_found'], 'manage_categories.php'); } } /* Print header */ require_once(HESK_PATH . 'inc/header.inc.php'); /* Print main manage users page */ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php'); /* This will handle error, success and notice messages */ if (hesk_SESSION('iserror')) { hesk_handle_messages(); } ?>

checked>
checked>
checked>

0"); $users_num = hesk_dbResult($users_all); $users_res = hesk_dbQuery("SELECT `id`, `name` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "users` WHERE (`isadmin` = '1' OR (FIND_IN_SET(".intval($category['id']).", `categories`) > 0) AND FIND_IN_SET('can_view_tickets', `heskprivileges`) > 0)"); $users_found = hesk_dbNumRows($users_res); if ($users_num > $users_found): ?>
'.$hesklang['autoassign_users'].':'; if ($users_found > 19) { // Only show search box if we have 20+ users ?>
checked>
 
checked>

:
'.stripslashes($category['name']).''),'manage_categories.php','SUCCESS'); exit(); } // End new_cat() function get_autoassign_state($id, $autoassign_setting, $autoassign_user_operator, $autoassign_users) { /* * 1 -> On, All * 2 -> On, Some * 3 -> Off */ // "On - All Users" or "On - Some Users" with 0 users being excluded if ($autoassign_setting === 1 || ($autoassign_setting === 2 && $autoassign_user_operator === '!' && count($autoassign_users) === 0)) { $autoassign = 1; $autoassign_config = null; } elseif ($autoassign_setting === 2 && count($autoassign_users) !== 0) { // "On - Some Users" with at least one user selected. Otherwise it'll be treated as "On - All Users" above if 0 exclusions, or "Off" if 0 inclusions $autoassign = 1; $autoassign_config = build_autoassign_config($id, $autoassign_users, $autoassign_user_operator); // All excluded == off // All included == on - all users if ($autoassign_config === 'ALL_EXCLUDED') { $autoassign = 0; $autoassign_config = null; } elseif ($autoassign_config === 'ALL_INCLUDED') { $autoassign_config = null; } } else { $autoassign = 0; $autoassign_config = null; } return array( 'autoassign' => $autoassign, 'autoassign_config' => $autoassign_config ); } // End update_autoassign() function build_autoassign_config($catid, $selected_users, $operator) { global $hesk_settings; // Make sure the entered operator is valid $operator = $operator === '=' ? '=' : '!'; $formatted_users = array(); $user_verification_clause = array_map(function($x) { return intval($x); }, $selected_users); $user_verification_rs = hesk_dbQuery("SELECT `id` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."users` WHERE (`isadmin` = '1' OR FIND_IN_SET(".intval($catid).", `categories`) > 0) AND `id` IN (".implode(',', $user_verification_clause).")"); while ($user = hesk_dbFetchAssoc($user_verification_rs)) { $formatted_users[] = $user['id']; } // Make sure we're not including/excluding the entire list of possible users, as we can simplify $users_with_category_access = hesk_dbQuery("SELECT 1 AS `cnt` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."users` WHERE (`isadmin` = '1' OR FIND_IN_SET(".intval($catid).", `categories`) > 0)"); if (hesk_dbNumRows($users_with_category_access) === count($formatted_users)) { return $operator === '=' ? 'ALL_INCLUDED' : 'ALL_EXCLUDED'; } $formatted_users = implode(',', $formatted_users); return "{$operator}({$formatted_users})"; } // End build_autoassign_config() function get_valid_date_unit($unit) { switch ($unit) { case 'week': return 'week'; break; case 'month': return 'month'; break; case 'year': return 'year'; break; default: return 'day'; } } // END get_valid_date_unit() ?>