diff --git a/inc/config.class.php b/inc/config.class.php index 78763852..fb3783cf 100644 --- a/inc/config.class.php +++ b/inc/config.class.php @@ -170,6 +170,7 @@ function hide_show_history(val) { 0 => __("No"), 1 => __('First'), 2 => __('Last'), + 3 => __('Default user\'s group', 'escalade') ]; $rand = mt_rand(); diff --git a/inc/ticket.class.php b/inc/ticket.class.php index 793be334..8a5e8cc3 100644 --- a/inc/ticket.class.php +++ b/inc/ticket.class.php @@ -366,31 +366,46 @@ static function assignUserGroup(Ticket $ticket) { || $_SESSION['plugins']['escalade']['config']['use_assign_user_group_creation'] == 0) { return false; } - + if (isset($ticket->input['_users_id_assign']) && $ticket->input['_users_id_assign'] > 0 && (!isset($ticket->input['_groups_id_assign']) || $ticket->input['_groups_id_assign'] <= 0)) { - if ($_SESSION['plugins']['escalade']['config']['use_assign_user_group'] == 1) { - // First group - $ticket->input['_groups_id_assign'] - = PluginEscaladeUser::getTechnicianGroup($ticket->input['entities_id'], - $ticket->input['_users_id_assign'], - true); - //prevent adding empty group - if (empty($ticket->input['_groups_id_assign'])) { - unset($ticket->input['_groups_id_assign']); - } - } else { - // All groups - $ticket->input['_additional_groups_assigns'] - = PluginEscaladeUser::getTechnicianGroup($ticket->input['entities_id'], - $ticket->input['_users_id_assign'], - false); - //prevent adding empty group - if (empty($ticket->input['_additional_groups_assigns'])) { - unset($ticket->input['_additional_groups_assigns']); - } + switch ($_SESSION['plugins']['escalade']['config']['use_assign_user_group']) { + case 1 : + // First group + $ticket->input['_groups_id_assign'] + = PluginEscaladeUser::getTechnicianGroup($ticket->input['entities_id'], + $ticket->input['_users_id_assign'], + true); + //prevent adding empty group + if (empty($ticket->input['_groups_id_assign'])) { + unset($ticket->input['_groups_id_assign']); + } + break; + case 2: + // Last groups + $ticket->input['_additional_groups_assigns'] + = PluginEscaladeUser::getTechnicianGroup($ticket->input['entities_id'], + $ticket->input['_users_id_assign'], + false); + //prevent adding empty group + if (empty($ticket->input['_additional_groups_assigns'])) { + unset($ticket->input['_additional_groups_assigns']); + } + break; + + case 3: + //User's default group + $ticket->input['_additional_groups_assigns'] + = PluginEscaladeUser::getUserDefaultGroup($item->fields['users_id']); + if (empty($ticket->input['_additional_groups_assigns'])) { + //prevent adding empty group + if (empty($ticket->input['_additional_groups_assigns'])) { + unset($ticket->input['_additional_groups_assigns']); + } + } + break; } } @@ -534,16 +549,22 @@ static function item_add_user(Ticket_User $item, $type = CommonITILActor::ASSIGN return true; } - if ($_SESSION['plugins']['escalade']['config']['use_assign_user_group'] == 1) { - // First group - $groups_id = PluginEscaladeUser::getTechnicianGroup($ticket->fields['entities_id'], - $item->fields['users_id'], - true); - } else { - // All groups - $groups_id = PluginEscaladeUser::getTechnicianGroup($ticket->fields['entities_id'], - $item->fields['users_id'], - false); + switch ($_SESSION['plugins']['escalade']['config']['use_assign_user_group']) { + case 1: + // First group + $groups_id = PluginEscaladeUser::getTechnicianGroup($ticket->fields['entities_id'], + $item->fields['users_id'], + true); + break; + case 2: + // All groups + $groups_id = PluginEscaladeUser::getTechnicianGroup($ticket->fields['entities_id'], + $item->fields['users_id'], + false); + break; + case 3: + $groups_id = PluginEscaladeUser::getUserDefaultGroup($item->fields['users_id']); + break; } if (!empty($groups_id)) { diff --git a/inc/user.class.php b/inc/user.class.php index 177e8a0a..7351bd95 100644 --- a/inc/user.class.php +++ b/inc/user.class.php @@ -107,6 +107,17 @@ static function getTechnicianGroup($entity, $userid, $first = true) { return self::getUserGroup($entity, $userid, '`is_assign`', $first); } + static function getUserDefaultGroup($users_id) { + $groups_id = 0; + + $user = new User(); + $user->getFromDB($users_id); + if ($user->fields['groups_id']) { + $groups_id = $user->fields['groups_id']; + } + return $groups_id; + } + function showForm($ID, array $options = []) { $is_exist = $this->getFromDBByCrit(['users_id' => $ID]);