/** * @see CommonDBTM::prepareInputForAdd() **/ function prepareInputForAdd($input) { // Avoid duplicate entry $restrict = " `tickets_id` = '" . $input['tickets_id'] . "'\n AND `itemtype` = '" . $input['itemtype'] . "'\n AND `items_id` = '" . $input['items_id'] . "'"; if (countElementsInTable($this->getTable(), $restrict) > 0) { return false; } $ticket = new Ticket(); $ticket->getFromDB($input['tickets_id']); // Get item location if location is not already set in ticket if (empty($ticket->fields['locations_id'])) { if ($input["items_id"] > 0 && !empty($input["itemtype"])) { if ($item = getItemForItemtype($input["itemtype"])) { if ($item->getFromDB($input["items_id"])) { if ($item->isField('locations_id')) { $ticket->fields['items_locations'] = $item->fields['locations_id']; // Process Business Rules $rules = new RuleTicketCollection($ticket->fields['entities_id']); $ticket->fields = $rules->processAllRules(Toolbox::stripslashes_deep($ticket->fields), Toolbox::stripslashes_deep($ticket->fields), array('recursive' => true)); unset($ticket->fields['items_locations']); $ticket->updateInDB(array('locations_id')); } } } } } $group = new Group_Ticket(); $groups = $group->find("`tickets_id` = " . $input['tickets_id'] . " AND `type` = " . CommonITILActor::REQUESTER); if (count($groups) <= 0) { if ($input["items_id"] > 0 && !empty($input["itemtype"])) { if ($item = getItemForItemtype($input["itemtype"])) { if ($item->getFromDB($input["items_id"])) { if ($item->isField('groups_id')) { $ticket->fields['items_groups'] = $item->fields['groups_id']; // Process Business Rules $rules = new RuleTicketCollection($ticket->fields['entities_id']); $ticket->fields = $rules->processAllRules(Toolbox::stripslashes_deep($ticket->fields), Toolbox::stripslashes_deep($ticket->fields), array('recursive' => true)); unset($ticket->fields['items_groups']); $group->add(array('tickets_id' => $input['tickets_id'], 'groups_id' => $item->fields['groups_id'], 'type' => CommonITILActor::REQUESTER)); } } } } } return parent::prepareInputForAdd($input); }
$ticket->update($input); // Check if user assigned is in this new group $ticket_user = new Ticket_User(); $a_users = $ticket_user->find("`tickets_id`='" . $_POST['tickets_id'] . "'\n AND `type`='2'"); foreach ($a_users as $data) { $query = "SELECT * FROM `glpi_groups_users`\n WHERE `groups_id`='" . $_POST['group_assign'] . "'\n AND `users_id`='" . $data['users_id'] . "'\n LIMIT 1"; $result = $DB->query($query); if ($DB->numrows($result) == '0') { $ticket_user->delete($data); Event::log($_POST['tickets_id'], "ticket", 4, "tracking", $_SESSION["glpiname"] . " " . __('Deletion of an actor to the ticket')); } } $_SESSION['glpiactiveprofile']['assign_ticket'] = $assign_ticket_right; // delete group $group_ticket = new Group_Ticket(); $a_groups = $group_ticket->find("`tickets_id`='" . $_POST['tickets_id'] . "'\n AND `type`='2'"); foreach ($a_groups as $data) { if ($data['groups_id'] != $_POST['group_assign']) { $group_ticket->delete($data); Event::log($_POST['tickets_id'], "ticket", 4, "tracking", $_SESSION["glpiname"] . " " . __('Deletion of an actor to the ticket')); } } Html::back(); } else { if (isset($_POST['update']) and $_POST['_users_id_assign'] > 0) { $assign_ticket_right = $_SESSION['glpiactiveprofile']['assign_ticket']; $_SESSION['glpiactiveprofile']['assign_ticket'] = 1; // Add $ticket = new Ticket(); $input = array(); $input['id'] = $_POST['tickets_id'];
/** * * @param type $items_id id of the ticket */ static function createSubTicket($items_id) { global $CFG_GLPI; if ($_POST['slas_id'] == 0 || $_POST['groupsubticket'] == 0) { // return; } $ticket = new Ticket(); $ticketFollowup = new TicketFollowup(); $ticketTask = new TicketTask(); $document_Item = new Document_Item(); $ticket_User = new Ticket_User(); $group_Ticket = new Group_Ticket(); // Disable send notification $use_mailing = $CFG_GLPI["use_mailing"]; $CFG_GLPI["use_mailing"] = false; $ticket->getFromDB($items_id); unset($ticket->fields['id']); $ticket->fields['_link']['link'] = 1; $ticket->fields['_link']['tickets_id_1'] = 0; $ticket->fields['_link']['tickets_id_2'] = $items_id; $ticket->fields['bypassgrouponadd'] = true; $ticket->fields['slas_id'] = $_POST['slas_id']; $ticket->fields['date'] = date("Y-m-d H:i:s"); $ticket->fields = Toolbox::addslashes_deep($ticket->fields); foreach ($ticket->fields as $key => $value) { if ($value == '') { unset($ticket->fields[$key]); } } $new_tickets_id = $ticket->add($ticket->fields); $a_followups = $ticketFollowup->find("`tickets_id`='" . $items_id . "'", "`id`"); foreach ($a_followups as $data) { unset($data['id']); $data = Toolbox::addslashes_deep($data); $data['tickets_id'] = $new_tickets_id; $ticketFollowup->add($data); } $a_tasks = $ticketTask->find("`tickets_id`='" . $items_id . "'", "`id`"); foreach ($a_tasks as $data) { unset($data['id']); $data = Toolbox::addslashes_deep($data); $data['tickets_id'] = $new_tickets_id; foreach ($data as $key => $value) { if ($value == '') { unset($data[$key]); } } $ticketTask->add($data); } $a_documents = $document_Item->find("`items_id`='" . $items_id . "'\n AND `itemtype`='Ticket'", "`id`"); foreach ($a_documents as $data) { unset($data['id']); $data = Toolbox::addslashes_deep($data); $data['items_id'] = $new_tickets_id; $document_Item->add($data); } $a_ticketusers = $ticket_User->find("`tickets_id`='" . $items_id . "'\n AND `type`='1'", "`id`"); foreach ($a_ticketusers as $data) { unset($data['id']); $data = Toolbox::addslashes_deep($data); $data['tickets_id'] = $new_tickets_id; $ticket_User->add($data); } $a_ticketgroups = $group_Ticket->find("`tickets_id`='" . $items_id . "'\n AND `type`='1'", "`id`"); foreach ($a_ticketgroups as $data) { unset($data['id']); $data = Toolbox::addslashes_deep($data); $data['tickets_id'] = $new_tickets_id; $group_Ticket->add($data); } $CFG_GLPI["use_mailing"] = $use_mailing; $input = array(); $input['tickets_id'] = $new_tickets_id; $input['groups_id'] = $_POST['groupsubticket']; $input['type'] = 2; $group_Ticket->add($input); }
/** * On ticket category change, add ticket category group and user * @param CommonDBTM $item * @return nothing */ static function qualification(CommonDBTM $item) { global $DB; //get auto-assign mode (config in entity) $auto_assign_mode = Entity::getUsedConfig('auto_assign_mode', $_SESSION['glpiactive_entity']); if ($auto_assign_mode == Entity::CONFIG_NEVER) { return true; } //get category $category = new ITILCategory(); $category->getFromDB($item->input['itilcategories_id']); //category group if (!empty($category->fields['groups_id']) && $_SESSION['plugins']['escalade']['config']['reassign_group_from_cat']) { $group_ticket = new Group_Ticket(); //check if group is not already present $group_found = $group_ticket->find("tickets_id = '" . $item->fields['id'] . "' AND groups_id = '" . $category->fields['groups_id'] . "' AND type = 2"); if (empty($group_found)) { //add group to ticket $group_ticket->add(array('tickets_id' => $item->fields['id'], 'groups_id' => $category->fields['groups_id'], 'type' => CommonITILActor::ASSIGN)); } } //category user if (!empty($category->fields['users_id']) && $_SESSION['plugins']['escalade']['config']['reassign_tech_from_cat']) { $ticket_user = new Ticket_User(); //check if user is not already present $user_found = $ticket_user->find("tickets_id = '" . $item->fields['id'] . "' AND users_id = '" . $category->fields['users_id'] . "' AND type = 2"); if (empty($user_found)) { //add user to ticket $ticket_user->add(array('tickets_id' => $item->fields['id'], 'users_id' => $category->fields['users_id'], 'type' => CommonITILActor::ASSIGN)); } } }
static function notMultiple($item) { if ($_SESSION['glpiactiveprofile']['interface'] == 'central') { $peConfig = new PluginEscalationConfig(); $unique_assigned = $peConfig->getValue("unique_assigned", $item->fields['entities_id']); if ($unique_assigned == '1') { $ticket_User = new Ticket_User(); $group_Ticket = new Group_Ticket(); $group_User = new Group_User(); if (isset($item->input['_itil_assign'])) { if ($item->input['_itil_assign']['_type'] == 'user') { $in_group = 0; $a_groups = $group_Ticket->find("`type`='2'\n AND `tickets_id`='" . $item->fields['id'] . "'"); $groups = Group_User::getUserGroups($item->input['_itil_assign']['users_id']); if (count($a_groups) > 0) { foreach ($a_groups as $data) { foreach ($groups as $dat) { if ($dat['id'] == $data['groups_id']) { $in_group = 1; } } } } //if ($in_group == '0') { // unset($item->input['_itil_assign']['users_id']); //} } else { if ($item->input['_itil_assign']['_type'] == 'group') { $a_groups = $group_Ticket->find("`type`='2'\n AND `tickets_id`='" . $item->getID() . "'"); if (count($a_groups) > 0) { foreach ($a_groups as $data) { $group_Ticket->delete($data); } } $a_users = $ticket_User->find("`type`='2'\n AND `tickets_id`='" . $item->getID() . "'"); foreach ($a_users as $data) { if (countElementsInTable($group_User->getTable(), "`users_id`='" . $data['users_id'] . "'\n AND `groups_id`='" . $item->input['_itil_assign']['groups_id'] . "'") == '0') { $ticket_User->delete($data); } } } } } } } }