permission_process_update_tracker_permissions($group_id, $atid, $_REQUEST); } else { if ($reset) { //The user want to clear permissions permission_clear_all_tracker($group_id, $atid); } } } //display $ath->adminHeader(array('title' => $Language->getText('tracker_admin_field_usage', 'tracker_admin') . $Language->getText('tracker_admin_field_usage', 'usage_admin'), 'help' => 'TrackerAdministration.html#TrackerAndArtifactPermissionsManagement')); $ugroups_permissions = permission_get_tracker_ugroups_permissions($group_id, $atid); $ath->displayPermissionsTracker($ugroups_permissions); break; case 'fields': if ($update) { if ($request->exist('permissions') && is_array($request->get('permissions'))) { $fields = $art_field_fact->getAllUsedFields(); permission_process_update_fields_permissions($group_id, $atid, $fields, $request->get('permissions')); } } //display $ath->adminHeader(array('title' => $Language->getText('tracker_admin_field_usage', 'tracker_admin') . $Language->getText('tracker_admin_field_usage', 'usage_admin'), 'help' => 'TrackerAdministration.html#FieldPermissionsManagement')); $ugroups_permissions = permission_get_field_tracker_ugroups_permissions($group_id, $atid, $art_field_fact->getAllUsedFields(), false); $ath->displayPermissionsFieldsTracker($ugroups_permissions, $group_first, $selected_id); break; default: $ath->adminHeader(array('title' => $Language->getText('tracker_admin_field_usage', 'tracker_admin') . $Language->getText('tracker_admin_field_usage', 'usage_admin'), 'help' => 'TrackerAdministration.html#TrackerPermissionsManagement')); $ath->displayPermissionsGeneralMenu(); break; } $ath->footer(array());
function permission_process_update_fields_permissions($group_id, $atid, $fields, $permissions_wanted_by_user) { //The actual permissions $stored_ugroups_permissions = permission_get_field_tracker_ugroups_permissions($group_id, $atid, $fields); $permissions_updated = false; //some special ugroup names $anonymous_name = $GLOBALS['Language']->getText('project_ugroup', ugroup_get_name_from_id($GLOBALS['UGROUP_ANONYMOUS'])); $registered_name = $GLOBALS['Language']->getText('project_ugroup', ugroup_get_name_from_id($GLOBALS['UGROUP_REGISTERED'])); //We process the request foreach ($permissions_wanted_by_user as $field_id => $ugroups_permissions) { if (is_numeric($field_id) && isset($stored_ugroups_permissions[$field_id]) && $stored_ugroups_permissions[$field_id]['field']['shortname'] !== "comment_type_id") { //comment_type is not a "real" field $field_name = $stored_ugroups_permissions[$field_id]['field']['shortname']; $the_field_can_be_submitted_or_updated = $field_name !== "artifact_id" && $field_name !== "submitted_by" && $field_name !== "open_date"; $the_field_can_be_submitted = $the_field_can_be_submitted_or_updated; //(And add here those who can only be submitted) $the_field_can_be_updated = $the_field_can_be_submitted_or_updated; //(And add here those who can only be updated) //artifact_id#field_id $fake_object_id = permission_build_field_id($atid, $field_id); //small variables for history $add_submit_to_history = false; $add_read_to_history = false; $add_update_to_history = false; //We look for anonymous and registered users' permissions, both in the user's request and in the db $user_set_anonymous_to_submit = isset($ugroups_permissions[$GLOBALS['UGROUP_ANONYMOUS']]) && isset($ugroups_permissions[$GLOBALS['UGROUP_ANONYMOUS']]['submit']) && $ugroups_permissions[$GLOBALS['UGROUP_ANONYMOUS']]['submit'] === "on"; $user_set_anonymous_to_read = isset($ugroups_permissions[$GLOBALS['UGROUP_ANONYMOUS']]) && isset($ugroups_permissions[$GLOBALS['UGROUP_ANONYMOUS']]['others']) && $ugroups_permissions[$GLOBALS['UGROUP_ANONYMOUS']]['others'] === "0"; $user_set_anonymous_to_update = isset($ugroups_permissions[$GLOBALS['UGROUP_ANONYMOUS']]) && isset($ugroups_permissions[$GLOBALS['UGROUP_ANONYMOUS']]['others']) && $ugroups_permissions[$GLOBALS['UGROUP_ANONYMOUS']]['others'] === "1"; $user_set_registered_to_submit = isset($ugroups_permissions[$GLOBALS['UGROUP_REGISTERED']]) && isset($ugroups_permissions[$GLOBALS['UGROUP_REGISTERED']]['submit']) && $ugroups_permissions[$GLOBALS['UGROUP_REGISTERED']]['submit'] === "on"; $user_set_registered_to_read = isset($ugroups_permissions[$GLOBALS['UGROUP_REGISTERED']]) && isset($ugroups_permissions[$GLOBALS['UGROUP_REGISTERED']]['others']) && $ugroups_permissions[$GLOBALS['UGROUP_REGISTERED']]['others'] === "0"; $user_set_registered_to_update = isset($ugroups_permissions[$GLOBALS['UGROUP_REGISTERED']]) && isset($ugroups_permissions[$GLOBALS['UGROUP_REGISTERED']]['others']) && $ugroups_permissions[$GLOBALS['UGROUP_REGISTERED']]['others'] === "1"; $anonymous_is_already_set_to_submit = isset($stored_ugroups_permissions[$field_id]['ugroups'][$GLOBALS['UGROUP_ANONYMOUS']]['permissions']['TRACKER_FIELD_SUBMIT']); $anonymous_is_already_set_to_read = isset($stored_ugroups_permissions[$field_id]['ugroups'][$GLOBALS['UGROUP_ANONYMOUS']]['permissions']['TRACKER_FIELD_READ']); $anonymous_is_already_set_to_update = isset($stored_ugroups_permissions[$field_id]['ugroups'][$GLOBALS['UGROUP_ANONYMOUS']]['permissions']['TRACKER_FIELD_UPDATE']); $registered_is_already_set_to_submit = isset($stored_ugroups_permissions[$field_id]['ugroups'][$GLOBALS['UGROUP_REGISTERED']]['permissions']['TRACKER_FIELD_SUBMIT']); $registered_is_already_set_to_read = isset($stored_ugroups_permissions[$field_id]['ugroups'][$GLOBALS['UGROUP_REGISTERED']]['permissions']['TRACKER_FIELD_READ']); $registered_is_already_set_to_update = isset($stored_ugroups_permissions[$field_id]['ugroups'][$GLOBALS['UGROUP_REGISTERED']]['permissions']['TRACKER_FIELD_UPDATE']); //ANONYMOUS //////////////////////////////////////////////////////////////// //Firstly we set permissions for anonymous users if (isset($ugroups_permissions[$GLOBALS['UGROUP_ANONYMOUS']])) { $ugroup_permissions = $ugroups_permissions[$GLOBALS['UGROUP_ANONYMOUS']]; //SUBMIT Permission //----------------- if ($the_field_can_be_submitted && !$anonymous_is_already_set_to_submit && $user_set_anonymous_to_submit) { //if the ugroup is anonymous, we have to erase submit permissions for other ugroups foreach ($stored_ugroups_permissions[$field_id]['ugroups'] as $stored_ugroup_id => $stored_ugroup_permissions) { if ($stored_ugroup_id === $GLOBALS['UGROUP_ANONYMOUS']) { permission_add_ugroup($group_id, 'TRACKER_FIELD_SUBMIT', $fake_object_id, $stored_ugroup_id); $add_submit_to_history = true; $anonymous_is_already_set_to_submit = true; } else { if (isset($stored_ugroup_permissions['permissions']['TRACKER_FIELD_SUBMIT']) && (!isset($ugroups_permissions[$stored_ugroup_id]) || !isset($ugroups_permissions[$stored_ugroup_id]['submit']) || $ugroups_permissions[$stored_ugroup_id]['submit'] !== "on")) { $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('tracker_admin_permissions', 'ignore_g_anon_submit', array($stored_ugroup_permissions['ugroup']['name'], $anonymous_name))); permission_clear_ugroup_object($group_id, 'TRACKER_FIELD_SUBMIT', $stored_ugroup_id, $fake_object_id); $add_submit_to_history = true; } } } } else { if ($anonymous_is_already_set_to_submit && !$user_set_anonymous_to_submit) { permission_clear_ugroup_object($group_id, 'TRACKER_FIELD_SUBMIT', $GLOBALS['UGROUP_ANONYMOUS'], $fake_object_id); $add_submit_to_history = true; $anonymous_is_already_set_to_submit = false; } } //UPDATE Permission //--------------- if ($the_field_can_be_updated && !$anonymous_is_already_set_to_update && $user_set_anonymous_to_update) { //if the ugroup is anonymous, we have to erase submt permissions for other ugroups foreach ($stored_ugroups_permissions[$field_id]['ugroups'] as $stored_ugroup_id => $stored_ugroup_permissions) { if ($stored_ugroup_id === $GLOBALS['UGROUP_ANONYMOUS']) { permission_add_ugroup($group_id, 'TRACKER_FIELD_UPDATE', $fake_object_id, $stored_ugroup_id); $add_update_to_history = true; $anonymous_is_already_set_to_update = true; } else { if (!isset($ugroups_permissions[$stored_ugroup_id]) || !isset($ugroups_permissions[$stored_ugroup_id]['others']) || $ugroups_permissions[$stored_ugroup_id]['others'] !== "100") { if (isset($stored_ugroup_permissions['permissions']['TRACKER_FIELD_UPDATE'])) { $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('tracker_admin_permissions', 'ignore_g_anon_update', array($stored_ugroup_permissions['ugroup']['name'], $anonymous_name))); permission_clear_ugroup_object($group_id, 'TRACKER_FIELD_UPDATE', $stored_ugroup_id, $fake_object_id); $add_update_to_history = true; } if (isset($stored_ugroup_permissions['permissions']['TRACKER_FIELD_READ'])) { $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('tracker_admin_permissions', 'ignore_g_anon_update', array($stored_ugroup_permissions['ugroup']['name'], $anonymous_name))); permission_clear_ugroup_object($group_id, 'TRACKER_FIELD_READ', $stored_ugroup_id, $fake_object_id); $add_read_to_history = true; } } } } } else { if ($anonymous_is_already_set_to_update && !$user_set_anonymous_to_update) { permission_clear_ugroup_object($group_id, 'TRACKER_FIELD_UPDATE', $GLOBALS['UGROUP_ANONYMOUS'], $fake_object_id); $add_update_to_history = true; $anonymous_is_already_set_to_update = false; } } //READ Permission //--------------- if (!$anonymous_is_already_set_to_read && $user_set_anonymous_to_read) { //if the ugroup is anonymous, we have to erase submit permissions for other ugroups foreach ($stored_ugroups_permissions[$field_id]['ugroups'] as $stored_ugroup_id => $stored_ugroup_permissions) { if ($stored_ugroup_id === $GLOBALS['UGROUP_ANONYMOUS']) { permission_add_ugroup($group_id, 'TRACKER_FIELD_READ', $fake_object_id, $stored_ugroup_id); $add_read_to_history = true; $anonymous_is_already_set_to_read = true; } else { if (!isset($ugroups_permissions[$stored_ugroup_id]) || !isset($ugroups_permissions[$stored_ugroup_id]['others']) || $ugroups_permissions[$stored_ugroup_id]['others'] !== "100") { if (isset($stored_ugroup_permissions['permissions']['TRACKER_FIELD_READ'])) { $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('tracker_admin_permissions', 'ignore_g_anon_read', array($stored_ugroup_permissions['ugroup']['name'], $anonymous_name))); permission_clear_ugroup_object($group_id, 'TRACKER_FIELD_READ', $stored_ugroup_id, $fake_object_id); $add_read_to_history = true; } } } } } else { if ($anonymous_is_already_set_to_read && !$user_set_anonymous_to_read) { permission_clear_ugroup_object($group_id, 'TRACKER_FIELD_READ', $GLOBALS['UGROUP_ANONYMOUS'], $fake_object_id); $add_read_to_history = true; $anonymous_is_already_set_to_read = false; } } } //REGISTERED //////////////////////////////////////////////////////////////// //Secondly we set permissions for registered users if (isset($ugroups_permissions[$GLOBALS['UGROUP_REGISTERED']])) { $ugroup_permissions = $ugroups_permissions[$GLOBALS['UGROUP_REGISTERED']]; //SUBMIT Permission //----------------- if ($the_field_can_be_submitted && !$registered_is_already_set_to_submit && $user_set_registered_to_submit) { //if the ugroup is registered, we have to: // 1. check consistency with current permissions for anonymous users if ($user_set_anonymous_to_submit || $anonymous_is_already_set_to_submit) { $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('tracker_admin_permissions', 'ignore_g_anon_submit', array($stored_ugroups_permissions[$field_id]['ugroups'][$GLOBALS['UGROUP_REGISTERED']]['ugroup']['name'], $anonymous_name))); } else { // 2. erase submit permissions for other ugroups foreach ($stored_ugroups_permissions[$field_id]['ugroups'] as $stored_ugroup_id => $stored_ugroup_permissions) { if ($stored_ugroup_id === $GLOBALS['UGROUP_REGISTERED']) { permission_add_ugroup($group_id, 'TRACKER_FIELD_SUBMIT', $fake_object_id, $stored_ugroup_id); $add_submit_to_history = true; $registered_is_already_set_to_submit = true; } else { if ($stored_ugroup_id !== $GLOBALS['UGROUP_ANONYMOUS']) { if (isset($stored_ugroup_permissions['permissions']['TRACKER_FIELD_SUBMIT']) && (!isset($ugroups_permissions[$stored_ugroup_id]) || !isset($ugroups_permissions[$stored_ugroup_id]['submit']) || $ugroups_permissions[$stored_ugroup_id]['submit'] !== "on")) { $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('tracker_admin_permissions', 'ignore_g_regis_submit', array($stored_ugroup_permissions['ugroup']['name'], $registered_name))); permission_clear_ugroup_object($group_id, 'TRACKER_FIELD_SUBMIT', $stored_ugroup_id, $fake_object_id); $add_submit_to_history = true; } } } } } } else { if ($registered_is_already_set_to_submit && !$user_set_registered_to_submit) { permission_clear_ugroup_object($group_id, 'TRACKER_FIELD_SUBMIT', $GLOBALS['UGROUP_REGISTERED'], $fake_object_id); $add_submit_to_history = true; $registered_is_already_set_to_submit = false; } } //UPDATE Permission //--------------- if ($the_field_can_be_updated && !$registered_is_already_set_to_update && $user_set_registered_to_update) { //if the ugroup is registered, we have to: // 1. check consistency with current permissions for anonymous users if ($user_set_anonymous_to_update || $anonymous_is_already_set_to_update) { $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('tracker_admin_permissions', 'ignore_g_anon_update', array($stored_ugroups_permissions[$field_id]['ugroups'][$GLOBALS['UGROUP_REGISTERED']]['ugroup']['name'], $anonymous_name))); } else { // 2. erase update permissions for other ugroups foreach ($stored_ugroups_permissions[$field_id]['ugroups'] as $stored_ugroup_id => $stored_ugroup_permissions) { if ($stored_ugroup_id === $GLOBALS['UGROUP_REGISTERED']) { permission_add_ugroup($group_id, 'TRACKER_FIELD_UPDATE', $fake_object_id, $stored_ugroup_id); $add_update_to_history = true; $registered_is_already_set_to_update = true; } else { if ($stored_ugroup_id !== $GLOBALS['UGROUP_ANONYMOUS']) { //ugroups other than anonymous if (!isset($ugroups_permissions[$stored_ugroup_id]) || !isset($ugroups_permissions[$stored_ugroup_id]['others']) || $ugroups_permissions[$stored_ugroup_id]['others'] !== "100") { if (isset($stored_ugroup_permissions['permissions']['TRACKER_FIELD_UPDATE'])) { $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('tracker_admin_permissions', 'ignore_g_regis_update', array($stored_ugroup_permissions['ugroup']['name'], $registered_name))); permission_clear_ugroup_object($group_id, 'TRACKER_FIELD_UPDATE', $stored_ugroup_id, $fake_object_id); $add_update_to_history = true; } if (isset($stored_ugroup_permissions['permissions']['TRACKER_FIELD_READ'])) { $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('tracker_admin_permissions', 'ignore_g_regis_update', array($stored_ugroup_permissions['ugroup']['name'], $registered_name))); permission_clear_ugroup_object($group_id, 'TRACKER_FIELD_READ', $stored_ugroup_id, $fake_object_id); $add_read_to_history = true; } } } } } } } else { if ($registered_is_already_set_to_update && !$user_set_registered_to_update) { permission_clear_ugroup_object($group_id, 'TRACKER_FIELD_UPDATE', $GLOBALS['UGROUP_REGISTERED'], $fake_object_id); $add_update_to_history = true; $registered_is_already_set_to_update = false; } } //READ Permission //--------------- if (!$registered_is_already_set_to_read && $user_set_registered_to_read) { //if the ugroup is registered, we have to: // 1. check consistency with current permissions for anonymous users if ($user_set_anonymous_to_read || $anonymous_is_already_set_to_read || $anonymous_is_already_set_to_update) { $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('tracker_admin_permissions', 'ignore_g_anon_read', array($stored_ugroups_permissions[$field_id]['ugroups'][$GLOBALS['UGROUP_REGISTERED']]['ugroup']['name'], $anonymous_name))); } else { // 2. erase read permissions for other ugroups foreach ($stored_ugroups_permissions[$field_id]['ugroups'] as $stored_ugroup_id => $stored_ugroup_permissions) { if ($stored_ugroup_id === $GLOBALS['UGROUP_REGISTERED']) { permission_add_ugroup($group_id, 'TRACKER_FIELD_READ', $fake_object_id, $stored_ugroup_id); $add_read_to_history = true; $registered_is_already_set_to_read = true; } else { if ($stored_ugroup_id !== $GLOBALS['UGROUP_ANONYMOUS']) { //ugroups other than anonymous if (!isset($ugroups_permissions[$stored_ugroup_id]) || !isset($ugroups_permissions[$stored_ugroup_id]['others']) || $ugroups_permissions[$stored_ugroup_id]['others'] !== "100") { if (isset($stored_ugroup_permissions['permissions']['TRACKER_FIELD_READ'])) { $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('tracker_admin_permissions', 'ignore_g_regis_read', array($stored_ugroup_permissions['ugroup']['name'], $registered_name))); permission_clear_ugroup_object($group_id, 'TRACKER_FIELD_READ', $stored_ugroup_id, $fake_object_id); $add_read_to_history = true; } } } } } } } else { if ($registered_is_already_set_to_read && !$user_set_registered_to_read) { permission_clear_ugroup_object($group_id, 'TRACKER_FIELD_READ', $GLOBALS['UGROUP_REGISTERED'], $fake_object_id); $registered_is_already_set_to_read = false; } } } //OTHER INSIGNIFIANT UGROUPS //////////////////////////////////////////////////////////////// foreach ($ugroups_permissions as $ugroup_id => $ugroup_permissions) { if (is_numeric($ugroup_id) && $ugroup_id != $GLOBALS['UGROUP_REGISTERED'] && $ugroup_id != $GLOBALS['UGROUP_ANONYMOUS']) { $name_of_ugroup = $stored_ugroups_permissions[$field_id]['ugroups'][$ugroup_id]['ugroup']['name']; //SUBMIT Permission //----------------- if ($the_field_can_be_submitted && !isset($stored_ugroups_permissions[$field_id]['ugroups'][$ugroup_id]['permissions']['TRACKER_FIELD_SUBMIT']) && isset($ugroup_permissions['submit']) && $ugroup_permissions['submit'] === "on") { //if the ugroup is not anonymous and not registered, we have to: // check consistency with current permissions for anonymous users // and current permissions for registered users if ($user_set_anonymous_to_submit || $anonymous_is_already_set_to_submit) { $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('tracker_admin_permissions', 'ignore_g_anon_submit', array($name_of_ugroup, $anonymous_name))); } else { if ($user_set_registered_to_submit || $registered_is_already_set_to_submit) { $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('tracker_admin_permissions', 'ignore_g_regis_submit', array($name_of_ugroup, $registered_name))); } else { permission_add_ugroup($group_id, 'TRACKER_FIELD_SUBMIT', $fake_object_id, $ugroup_id); $add_submit_to_history = true; } } } else { if (isset($stored_ugroups_permissions[$field_id]['ugroups'][$ugroup_id]['permissions']['TRACKER_FIELD_SUBMIT']) && isset($ugroup_permissions['submit']) && $ugroup_permissions['submit'] !== "on") { //If we don't have already clear the permissions if (!$user_set_anonymous_to_submit && !$user_set_registered_to_submit) { permission_clear_ugroup_object($group_id, 'TRACKER_FIELD_SUBMIT', $ugroup_id, $fake_object_id); $add_submit_to_history = true; } } } //UPDATE Permission //----------------- if ($the_field_can_be_updated && !isset($stored_ugroups_permissions[$field_id]['ugroups'][$ugroup_id]['permissions']['TRACKER_FIELD_UPDATE']) && isset($ugroup_permissions['others']) && $ugroup_permissions['others'] === "1") { //if the ugroup is not anonymous and not registered, we have to: // check consistency with current permissions for anonymous users // and current permissions for registered users if ($user_set_anonymous_to_update || $anonymous_is_already_set_to_update) { $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('tracker_admin_permissions', 'ignore_g_anon_update', array($name_of_ugroup, $anonymous_name))); } else { if ($user_set_registered_to_update || $registered_is_already_set_to_update) { $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('tracker_admin_permissions', 'ignore_g_regis_update', array($name_of_ugroup, $registered_name))); } else { permission_add_ugroup($group_id, 'TRACKER_FIELD_UPDATE', $fake_object_id, $ugroup_id); $add_update_to_history = true; } } } else { if (isset($stored_ugroups_permissions[$field_id]['ugroups'][$ugroup_id]['permissions']['TRACKER_FIELD_UPDATE']) && isset($ugroup_permissions['others']) && $ugroup_permissions['others'] !== "1") { //If we don't have already clear the permissions if (!$user_set_anonymous_to_update && !$user_set_registered_to_update) { permission_clear_ugroup_object($group_id, 'TRACKER_FIELD_UPDATE', $ugroup_id, $fake_object_id); $add_update_to_history = true; } } } //READ Permission //----------------- if (!isset($stored_ugroups_permissions[$field_id]['ugroups'][$ugroup_id]['permissions']['TRACKER_FIELD_READ']) && isset($ugroup_permissions['others']) && $ugroup_permissions['others'] === "0") { //if the ugroup is not anonymous and not registered, we have to: // check consistency with current permissions for anonymous users // and current permissions for registered users if ($user_set_anonymous_to_read || $anonymous_is_already_set_to_read) { $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('tracker_admin_permissions', 'ignore_g_anon_read', array($name_of_ugroup, $anonymous_name))); } else { if ($user_set_registered_to_read || $registered_is_already_set_to_read) { $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('tracker_admin_permissions', 'ignore_g_regis_read', array($name_of_ugroup, $registered_name))); } else { if ($user_set_anonymous_to_update || $anonymous_is_already_set_to_update) { $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('tracker_admin_permissions', 'ignore_g_anon_update', array($name_of_ugroup, $anonymous_name))); } else { if ($user_set_registered_to_update || $registered_is_already_set_to_update) { $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('tracker_admin_permissions', 'ignore_g_regis_update', array($name_of_ugroup, $registered_name))); } else { permission_add_ugroup($group_id, 'TRACKER_FIELD_READ', $fake_object_id, $ugroup_id); $add_read_to_history = true; } } } } } else { if (isset($stored_ugroups_permissions[$field_id]['ugroups'][$ugroup_id]['permissions']['TRACKER_FIELD_READ']) && isset($ugroup_permissions['others']) && $ugroup_permissions['others'] !== "0") { //If we don't have already clear the permissions if (!$user_set_anonymous_to_read && !$user_set_registered_to_read) { permission_clear_ugroup_object($group_id, 'TRACKER_FIELD_READ', $ugroup_id, $fake_object_id); $add_read_to_history = true; } } } } } //history if ($add_submit_to_history) { permission_add_history($group_id, 'TRACKER_FIELD_SUBMIT', $fake_object_id); } if ($add_read_to_history) { permission_add_history($group_id, 'TRACKER_FIELD_READ', $fake_object_id); } if ($add_update_to_history) { permission_add_history($group_id, 'TRACKER_FIELD_UPDATE', $fake_object_id); } if (!$permissions_updated && ($add_submit_to_history || $add_read_to_history || $add_update_to_history)) { $permissions_updated = true; } } } //feedback if ($permissions_updated) { $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('project_admin_userperms', 'perm_upd')); } }