/** * Manage Validation add from input * * @since version 0.85 * * @param $input array : input array * * @return nothing **/ function manageValidationAdd($input) { //Action for send_validation rule if (isset($input["_add_validation"])) { if (isset($input['entities_id'])) { $entid = $input['entities_id']; } else { if (isset($this->fields['entities_id'])) { $entid = $this->fields['entities_id']; } else { return false; } } $validations_to_send = array(); if (!is_array($input["_add_validation"])) { $input["_add_validation"] = array($input["_add_validation"]); } foreach ($input["_add_validation"] as $key => $validation) { switch ($validation) { case 'requester_supervisor': if (isset($input['_groups_id_requester']) && $input['_groups_id_requester']) { $users = Group_User::getGroupUsers($input['_groups_id_requester'], "is_manager='1'"); foreach ($users as $data) { $validations_to_send[] = $data['id']; } } // Add to already set groups foreach ($this->getGroups(CommonITILActor::REQUESTER) as $d) { $users = Group_User::getGroupUsers($d['groups_id'], "is_manager='1'"); foreach ($users as $data) { $validations_to_send[] = $data['id']; } } break; case 'assign_supervisor': if (isset($input['_groups_id_assign']) && $input['_groups_id_assign']) { $users = Group_User::getGroupUsers($input['_groups_id_assign'], "is_manager='1'"); foreach ($users as $data) { $validations_to_send[] = $data['id']; } } foreach ($this->getGroups(CommonITILActor::ASSIGN) as $d) { $users = Group_User::getGroupUsers($d['groups_id'], "is_manager='1'"); foreach ($users as $data) { $validations_to_send[] = $data['id']; } } break; default: // Group case from rules if ($key === 'group') { foreach ($validation as $groups_id) { $validation_right = 'validate_incident'; if (isset($input['type']) && $input['type'] == Ticket::DEMAND_TYPE) { $validation_right = 'validate_request'; } $opt = array('groups_id' => $groups_id, 'right' => $validation_right, 'entity' => $entid); $data_users = TicketValidation::getGroupUserHaveRights($opt); foreach ($data_users as $user) { $validations_to_send[] = $user['id']; } } } else { $validations_to_send[] = $validation; } } } // Validation user added on ticket form if (isset($input['users_id_validate'])) { if (array_key_exists('groups_id', $input['users_id_validate'])) { foreach ($input['users_id_validate'] as $key => $validation_to_add) { if (is_numeric($key)) { $validations_to_send[] = $validation_to_add; } } } else { foreach ($input['users_id_validate'] as $key => $validation_to_add) { if (is_numeric($key)) { $validations_to_send[] = $validation_to_add; } } } } // Keep only one $validations_to_send = array_unique($validations_to_send); $validation = new TicketValidation(); if (count($validations_to_send)) { $values = array(); $values['tickets_id'] = $this->fields['id']; if (isset($input['id']) && $input['id'] != $this->fields['id']) { $values['_ticket_add'] = true; } // to know update by rules if (isset($input["_rule_process"])) { $values['_rule_process'] = $input["_rule_process"]; } // if auto_import, tranfert it for validation if (isset($input['_auto_import'])) { $values['_auto_import'] = $input['_auto_import']; } // Cron or rule process of hability to do if (Session::isCron() || isset($input["_auto_import"]) || isset($input["_rule_process"]) || $validation->can(-1, CREATE, $values)) { // cron or allowed user $add_done = false; foreach ($validations_to_send as $user) { // Do not auto add twice same validation if (!TicketValidation::alreadyExists($values['tickets_id'], $user)) { $values["users_id_validate"] = $user; if ($validation->add($values)) { $add_done = true; } } } if ($add_done) { Event::log($this->fields['id'], "ticket", 4, "tracking", sprintf(__('%1$s updates the item %2$s'), $_SESSION["glpiname"], $this->fields['id'])); } } } } return true; }
$param['groups_id'] = '__VALUE__'; Ajax::updateItemOnSelectEvent("dropdown_{$name}{$rand}", "show_list_users", $CFG_GLPI["root_doc"] . "/ajax/dropdownValidator.php", $param); if ($value) { $param['validatortype'] = 'list_users'; $param['groups_id'] = $value; unset($param['users_id_validate']['groups_id']); Ajax::updateItem('show_list_users', $CFG_GLPI["root_doc"] . "/ajax/dropdownValidator.php", $param); } echo "<br><span id='show_list_users'> </span>\n"; break; case 'list_users': if (isset($_POST['users_id_validate']['groups_id'])) { $_POST['users_id_validate'] = array(); } $opt = array('groups_id' => $_POST["groups_id"], 'right' => $_POST['right'], 'entity' => $_POST["entity"]); $data_users = TicketValidation::getGroupUserHaveRights($opt); $users = array(); $param['values'] = array(); $values = array(); if (isset($_POST['users_id_validate']) && is_array($_POST['users_id_validate'])) { $values = $_POST['users_id_validate']; } foreach ($data_users as $data) { $users[$data['id']] = formatUserName($data['id'], $data['name'], $data['realname'], $data['firstname']); if (in_array($data['id'], $values)) { $param['values'][] = $data['id']; } } // Display all users if (isset($_POST['all_users']) && $_POST['all_users']) { $param['values'] = array_keys($users);