. * --------------------------------------------------------------------- */ if (!defined('GLPI_ROOT')) { die("Sorry. You can't access this file directly"); } class RuleTicket extends Rule { // From Rule static $rightname = 'rule_ticket'; public $can_sort = true; const PARENT = 1024; const ONADD = 1; const ONUPDATE = 2; function getTitle() { return __('Business rules for tickets'); } function maybeRecursive() { return true; } function isEntityAssign() { return true; } function canUnrecurs() { return true; } /** * @since 0.85 **/ static function getConditionsArray() { return [static::ONADD => __('Add'), static::ONUPDATE => __('Update'), static::ONADD|static::ONUPDATE => sprintf(__('%1$s / %2$s'), __('Add'), __('Update'))]; } /** * display title for action form * * @since 0.84.3 **/ function getTitleAction() { parent::getTitleAction(); $showwarning = false; if (isset($this->actions)) { foreach ($this->actions as $key => $val) { if (isset($val->fields['field'])) { if (in_array($val->fields['field'], ['impact', 'urgency'])) { $showwarning = true; } } } } if ($showwarning) { echo ""; echo "\n"; echo "
". __('Urgency or impact used in actions, think to add Priority: recompute action if needed.'). "

"; } } /** * @param $params **/ function addSpecificParamsForPreview($params) { if (!isset($params["entities_id"])) { $params["entities_id"] = $_SESSION["glpiactive_entity"]; } return $params; } /** * Function used to display type specific criterias during rule's preview * * @param $fields fields values **/ function showSpecificCriteriasForPreview($fields) { $entity_as_criteria = false; foreach ($this->criterias as $criteria) { if ($criteria->fields['criteria'] == 'entities_id') { $entity_as_criteria = true; break; } } if (!$entity_as_criteria) { echo ""; } } function executeActions($output, $params, array $input = []) { if (count($this->actions)) { foreach ($this->actions as $action) { switch ($action->fields["action_type"]) { case "send" : //recall & recall_ola $ticket = new Ticket(); if ($ticket->getFromDB($output['id'])) { NotificationEvent::raiseEvent($action->fields['field'], $ticket); } break; case "add_validation" : if (isset($output['_add_validation']) && !is_array($output['_add_validation'])) { $output['_add_validation'] = [$output['_add_validation']]; } switch ($action->fields['field']) { case 'users_id_validate_requester_supervisor' : $output['_add_validation'][] = 'requester_supervisor'; break; case 'users_id_validate_assign_supervisor' : $output['_add_validation'][] = 'assign_supervisor'; break; case 'groups_id_validate' : $output['_add_validation']['group'][] = $action->fields["value"]; break; case 'users_id_validate' : $output['_add_validation'][] = $action->fields["value"]; break; case 'responsible_id_validate': $output['_add_validation'][] = 'requester_responsible'; break; case 'validation_percent' : $output[$action->fields["field"]] = $action->fields["value"]; break; default : $output['_add_validation'][] = $action->fields["value"]; break; } break; case "assign" : $output[$action->fields["field"]] = $action->fields["value"]; // Special case of status if ($action->fields["field"] === 'status') { // Add a flag to remember that status was forced by rule $output['_do_not_compute_status'] = true; } // Special case of users_id_requester if ($action->fields["field"] === '_users_id_requester') { // Add groups of requester if (!isset($output['_groups_id_of_requester'])) { $output['_groups_id_of_requester'] = []; } foreach (Group_User::getUserGroups($action->fields["value"]) as $g) { $output['_groups_id_of_requester'][$g['id']] = $g['id']; } } // Special case for _users_id_requester, _users_id_observer and _users_id_assign if (in_array($action->fields["field"], ['_users_id_requester', '_users_id_observer', '_users_id_assign'])) { // must reset alternative_email field to prevent mix of user/email unset($output[$action->fields["field"].'_notif']); } // Special case of slas_id_ttr & slas_id_tto & olas_id_ttr & olas_id_tto if ($action->fields["field"] === 'slas_id_ttr' || $action->fields["field"] === 'slas_id_tto' ||$action->fields["field"] === 'olas_id_ttr' || $action->fields["field"] === 'olas_id_tto') { $output['_'.$action->fields["field"]] = $action->fields["value"]; } // special case of itil solution template if ($action->fields["field"] == 'solution_template') { //load template $template = new SolutionTemplate(); if ($template->getFromDB($action->fields["value"]) && $output['id'] != null) { $solution = new ITILSolution(); $solution->add([ "itemtype" => "Ticket", "solutiontypes_id" => $template->getField("solutiontypes_id"), "content" => Toolbox::addslashes_deep($template->getField('content')), "status" => CommonITILValidation::WAITING, "items_id" => $output['id']]); } } break; case "append" : $actions = $this->getActions(); $value = $action->fields["value"]; if (isset($actions[$action->fields["field"]]["appendtoarray"]) && isset($actions[$action->fields["field"]]["appendtoarrayfield"])) { $value = $actions[$action->fields["field"]]["appendtoarray"]; $value[$actions[$action->fields["field"]]["appendtoarrayfield"]] = $action->fields["value"]; } $output[$actions[$action->fields["field"]]["appendto"]][] = $value; // Special case of users_id_requester if ($action->fields["field"] === '_users_id_requester') { // Add groups of requester if (!isset($output['_groups_id_of_requester'])) { $output['_groups_id_of_requester'] = []; } foreach (Group_User::getUserGroups($action->fields["value"]) as $g) { $output['_groups_id_of_requester'][$g['id']] = $g['id']; } } break; case 'fromuser' : if (($action->fields['field'] == 'locations_id') && isset($output['users_locations'])) { $output['locations_id'] = $output['users_locations']; } break; case 'defaultfromuser' : if (( $action->fields['field'] == '_groups_id_requester') && isset($output['users_default_groups'])) { $output['_groups_id_requester'] = $output['users_default_groups']; } break; case 'fromitem' : if ($action->fields['field'] == 'locations_id' && isset($output['items_locations'])) { $output['locations_id'] = $output['items_locations']; } if ($action->fields['field'] == '_groups_id_requester' && isset($output['items_groups'])) { $output['_groups_id_requester'] = $output['items_groups']; } break; case 'compute' : // Value could be not set (from test) $urgency = (isset($output['urgency'])?$output['urgency']:3); $impact = (isset($output['impact'])?$output['impact']:3); // Apply priority_matrix from config $output['priority'] = Ticket::computePriority($urgency, $impact); break; case 'do_not_compute' : if ($action->fields['field'] == 'takeintoaccount_delay_stat' && $action->fields['value'] == 1) { $output['_do_not_compute_takeintoaccount'] = true; } break; case "affectbyip" : case "affectbyfqdn" : case "affectbymac" : if (!isset($output["entities_id"])) { $output["entities_id"] = $params["entities_id"]; } if (isset($this->regex_results[0])) { $regexvalue = RuleAction::getRegexResultById($action->fields["value"], $this->regex_results[0]); } else { $regexvalue = $action->fields["value"]; } switch ($action->fields["action_type"]) { case "affectbyip" : $result = IPAddress::getUniqueItemByIPAddress($regexvalue, $output["entities_id"]); break; case "affectbyfqdn" : $result= FQDNLabel::getUniqueItemByFQDN($regexvalue, $output["entities_id"]); break; case "affectbymac" : $result = NetworkPortInstantiation::getUniqueItemByMac($regexvalue, $output["entities_id"]); break; default: $result = []; } if (!empty($result)) { $output["items_id"] = []; $output["items_id"][$result["itemtype"]][] = $result["id"]; } break; case 'regex_result'; if ($action->fields["field"] == "_affect_itilcategory_by_code") { if (isset($this->regex_results[0])) { $regexvalue = RuleAction::getRegexResultById($action->fields["value"], $this->regex_results[0]); } else { $regexvalue = $action->fields["value"]; } if (!is_null($regexvalue)) { $target_itilcategory = ITILCategory::getITILCategoryIDByCode($regexvalue); if ($target_itilcategory != -1) { $output["itilcategories_id"] = $target_itilcategory; } } } break; } } } return $output; } /** * @param $output **/ function preProcessPreviewResults($output) { $output = parent::preProcessPreviewResults($output); return Ticket::showPreviewAssignAction($output); } function getCriterias() { static $criterias = []; if (count($criterias)) { return $criterias; } $criterias['name']['table'] = 'glpi_tickets'; $criterias['name']['field'] = 'name'; $criterias['name']['name'] = __('Title'); $criterias['name']['linkfield'] = 'name'; $criterias['content']['table'] = 'glpi_tickets'; $criterias['content']['field'] = 'content'; $criterias['content']['name'] = __('Description'); $criterias['content']['linkfield'] = 'content'; $criterias['date_mod']['table'] = 'glpi_tickets'; $criterias['date_mod']['field'] = 'date_mod'; $criterias['date_mod']['name'] = __('Last update'); $criterias['date_mod']['linkfield'] = 'date_mod'; $criterias['itilcategories_id']['table'] = 'glpi_itilcategories'; $criterias['itilcategories_id']['field'] = 'name'; $criterias['itilcategories_id']['name'] = __('Category')." - ".__('Name'); $criterias['itilcategories_id']['linkfield'] = 'itilcategories_id'; $criterias['itilcategories_id']['type'] = 'dropdown'; $criterias['itilcategories_id_cn']['table'] = 'glpi_itilcategories'; $criterias['itilcategories_id_cn']['field'] = 'completename'; $criterias['itilcategories_id_cn']['name'] = __('Category').' - '.__('Complete name'); $criterias['itilcategories_id_cn']['linkfield'] = 'itilcategories_id'; $criterias['itilcategories_id_cn']['type'] = 'dropdown'; $criterias['itilcategories_id_code']['table'] = 'glpi_itilcategories'; $criterias['itilcategories_id_code']['field'] = 'code'; $criterias['itilcategories_id_code']['name'] = __('Code representing the ticket category'); $criterias['type']['table'] = 'glpi_tickets'; $criterias['type']['field'] = 'type'; $criterias['type']['name'] = _n('Type', 'Types', 1); $criterias['type']['linkfield'] = 'type'; $criterias['type']['type'] = 'dropdown_tickettype'; $criterias['_users_id_requester']['table'] = 'glpi_users'; $criterias['_users_id_requester']['field'] = 'name'; $criterias['_users_id_requester']['name'] = _n('Requester', 'Requesters', 1); $criterias['_users_id_requester']['linkfield'] = '_users_id_requester'; $criterias['_users_id_requester']['type'] = 'dropdown_users'; $criterias['_users_id_requester']['linked_criteria'] = '_groups_id_of_requester'; $criterias['_groups_id_of_requester']['table'] = 'glpi_groups'; $criterias['_groups_id_of_requester']['field'] = 'completename'; $criterias['_groups_id_of_requester']['name'] = __('Requester in group'); $criterias['_groups_id_of_requester']['linkfield'] = '_groups_id_of_requester'; $criterias['_groups_id_of_requester']['type'] = 'dropdown'; $criterias['users_locations']['table'] = 'glpi_locations'; $criterias['users_locations']['field'] = 'completename'; $criterias['users_locations']['name'] = __('Requester location'); $criterias['users_locations']['linkfield'] = 'users_locations'; $criterias['users_locations']['type'] = 'dropdown'; $criterias['items_locations']['table'] = 'glpi_locations'; $criterias['items_locations']['field'] = 'completename'; $criterias['items_locations']['name'] = __('Item location'); $criterias['items_locations']['linkfield'] = 'items_locations'; $criterias['items_locations']['type'] = 'dropdown'; $criterias['items_groups']['table'] = 'glpi_groups'; $criterias['items_groups']['field'] = 'completename'; $criterias['items_groups']['name'] = __('Item group'); $criterias['items_groups']['linkfield'] = 'items_groups'; $criterias['items_groups']['type'] = 'dropdown'; $criterias['items_states']['table'] = 'glpi_states'; $criterias['items_states']['field'] = 'completename'; $criterias['items_states']['name'] = __('Item state'); $criterias['items_states']['linkfield'] = 'items_states'; $criterias['items_states']['type'] = 'dropdown'; $criterias['locations_id']['table'] = 'glpi_locations'; $criterias['locations_id']['field'] = 'completename'; $criterias['locations_id']['name'] = __('Ticket location'); $criterias['locations_id']['linkfield'] = 'locations_id'; $criterias['locations_id']['type'] = 'dropdown'; $criterias['_groups_id_requester']['table'] = 'glpi_groups'; $criterias['_groups_id_requester']['field'] = 'completename'; $criterias['_groups_id_requester']['name'] = _n('Requester group', 'Requester groups', 1); $criterias['_groups_id_requester']['linkfield'] = '_groups_id_requester'; $criterias['_groups_id_requester']['type'] = 'dropdown'; $criterias['_users_id_assign']['table'] = 'glpi_users'; $criterias['_users_id_assign']['field'] = 'name'; $criterias['_users_id_assign']['name'] = __('Technician'); $criterias['_users_id_assign']['linkfield'] = '_users_id_assign'; $criterias['_users_id_assign']['type'] = 'dropdown_users'; $criterias['_groups_id_assign']['table'] = 'glpi_groups'; $criterias['_groups_id_assign']['field'] = 'completename'; $criterias['_groups_id_assign']['name'] = __('Technician group'); $criterias['_groups_id_assign']['linkfield'] = '_groups_id_assign'; $criterias['_groups_id_assign']['type'] = 'dropdown'; $criterias['_groups_id_assign']['condition'] = ['is_assign' => 1]; $criterias['_suppliers_id_assign']['table'] = 'glpi_suppliers'; $criterias['_suppliers_id_assign']['field'] = 'name'; $criterias['_suppliers_id_assign']['name'] = __('Assigned to a supplier'); $criterias['_suppliers_id_assign']['linkfield'] = '_suppliers_id_assign'; $criterias['_suppliers_id_assign']['type'] = 'dropdown'; $criterias['_users_id_observer']['table'] = 'glpi_users'; $criterias['_users_id_observer']['field'] = 'name'; $criterias['_users_id_observer']['name'] = _n('Watcher', 'Watchers', 1); $criterias['_users_id_observer']['linkfield'] = '_users_id_observer'; $criterias['_users_id_observer']['type'] = 'dropdown_users'; $criterias['_groups_id_observer']['table'] = 'glpi_groups'; $criterias['_groups_id_observer']['field'] = 'completename'; $criterias['_groups_id_observer']['name'] = _n('Watcher group', 'Watcher groups', 1); $criterias['_groups_id_observer']['linkfield'] = '_groups_id_observer'; $criterias['_groups_id_observer']['type'] = 'dropdown'; $criterias['requesttypes_id']['table'] = 'glpi_requesttypes'; $criterias['requesttypes_id']['field'] = 'name'; $criterias['requesttypes_id']['name'] = RequestType::getTypeName(1); $criterias['requesttypes_id']['linkfield'] = 'requesttypes_id'; $criterias['requesttypes_id']['type'] = 'dropdown'; $criterias['itemtype']['table'] = 'glpi_tickets'; $criterias['itemtype']['field'] = 'itemtype'; $criterias['itemtype']['name'] = __('Item type'); $criterias['itemtype']['linkfield'] = 'itemtype'; $criterias['itemtype']['type'] = 'dropdown_tracking_itemtype'; $criterias['entities_id']['table'] = 'glpi_entities'; $criterias['entities_id']['field'] = 'name'; $criterias['entities_id']['name'] = Entity::getTypeName(1); $criterias['entities_id']['linkfield'] = 'entities_id'; $criterias['entities_id']['type'] = 'dropdown'; $criterias['profiles_id']['table'] = 'glpi_profiles'; $criterias['profiles_id']['field'] = 'name'; $criterias['profiles_id']['name'] = __('Default profile'); $criterias['profiles_id']['linkfield'] = 'profiles_id'; $criterias['profiles_id']['type'] = 'dropdown'; $criterias['urgency']['name'] = __('Urgency'); $criterias['urgency']['type'] = 'dropdown_urgency'; $criterias['impact']['name'] = __('Impact'); $criterias['impact']['type'] = 'dropdown_impact'; $criterias['priority']['name'] = __('Priority'); $criterias['priority']['type'] = 'dropdown_priority'; $criterias['status']['name'] = __('Status'); $criterias['status']['type'] = 'dropdown_status'; $criterias['_mailgate']['table'] = 'glpi_mailcollectors'; $criterias['_mailgate']['field'] = 'name'; $criterias['_mailgate']['name'] = __('Mails receiver'); $criterias['_mailgate']['linkfield'] = '_mailgate'; $criterias['_mailgate']['type'] = 'dropdown'; $criterias['_x-priority']['name'] = __('X-Priority email header'); $criterias['_x-priority']['table'] = ''; $criterias['_x-priority']['type'] = 'text'; $criterias['slas_id_ttr']['table'] = 'glpi_slas'; $criterias['slas_id_ttr']['field'] = 'name'; $criterias['slas_id_ttr']['name'] = sprintf(__('%1$s %2$s'), __('SLA'), __('Time to resolve')); $criterias['slas_id_ttr']['linkfield'] = 'slas_id_ttr'; $criterias['slas_id_ttr']['type'] = 'dropdown'; $criterias['slas_id_ttr']['condition'] = ['glpi_slas.type' => SLM::TTR]; $criterias['slas_id_tto']['table'] = 'glpi_slas'; $criterias['slas_id_tto']['field'] = 'name'; $criterias['slas_id_tto']['name'] = sprintf(__('%1$s %2$s'), __('SLA'), __('Time to own')); $criterias['slas_id_tto']['linkfield'] = 'slas_id_tto'; $criterias['slas_id_tto']['type'] = 'dropdown'; $criterias['slas_id_tto']['condition'] = ['glpi_slas.type' => SLM::TTO]; $criterias['olas_id_ttr']['table'] = 'glpi_olas'; $criterias['olas_id_ttr']['field'] = 'name'; $criterias['olas_id_ttr']['name'] = sprintf(__('%1$s %2$s'), __('OLA'), __('Time to resolve')); $criterias['olas_id_ttr']['linkfield'] = 'olas_id_ttr'; $criterias['olas_id_ttr']['type'] = 'dropdown'; $criterias['olas_id_ttr']['condition'] = ['glpi_olas.type' => SLM::TTR]; $criterias['olas_id_tto']['table'] = 'glpi_olas'; $criterias['olas_id_tto']['field'] = 'name'; $criterias['olas_id_tto']['name'] = sprintf(__('%1$s %2$s'), __('OLA'), __('Time to own')); $criterias['olas_id_tto']['linkfield'] = 'olas_id_tto'; $criterias['olas_id_tto']['type'] = 'dropdown'; $criterias['olas_id_tto']['condition'] = ['glpi_olas.type' => SLM::TTO]; $criterias['_date_creation_calendars_id'] = [ 'name' => __("Creation date is a working hour in calendar"), 'table' => Calendar::getTable(), 'field' => 'name', 'linkfield' => '_date_creation_calendars_id', 'type' => 'dropdown', ]; return $criterias; } function getActions() { $actions = []; $actions['itilcategories_id']['name'] = __('Category'); $actions['itilcategories_id']['type'] = 'dropdown'; $actions['itilcategories_id']['table'] = 'glpi_itilcategories'; $actions['_affect_itilcategory_by_code']['name'] = __('Ticket category from code'); $actions['_affect_itilcategory_by_code']['type'] = 'text'; $actions['_affect_itilcategory_by_code']['force_actions'] = ['regex_result']; $actions['type']['name'] = _n('Type', 'Types', 1); $actions['type']['table'] = 'glpi_tickets'; $actions['type']['type'] = 'dropdown_tickettype'; $actions['_users_id_requester']['name'] = _n('Requester', 'Requesters', 1); $actions['_users_id_requester']['type'] = 'dropdown_users'; $actions['_users_id_requester']['force_actions'] = ['assign', 'append']; $actions['_users_id_requester']['permitseveral'] = ['append']; $actions['_users_id_requester']['appendto'] = '_additional_requesters'; $actions['_users_id_requester']['appendtoarray'] = ['use_notification' => 1]; $actions['_users_id_requester']['appendtoarrayfield'] = 'users_id'; $actions['_groups_id_requester']['name'] = _n('Requester group', 'Requester groups', 1); $actions['_groups_id_requester']['type'] = 'dropdown'; $actions['_groups_id_requester']['table'] = 'glpi_groups'; $actions['_groups_id_requester']['condition'] = ['is_requester' => 1]; $actions['_groups_id_requester']['force_actions'] = ['assign', 'append', 'fromitem', 'defaultfromuser']; $actions['_groups_id_requester']['permitseveral'] = ['append']; $actions['_groups_id_requester']['appendto'] = '_additional_groups_requesters'; $actions['_users_id_assign']['name'] = __('Technician'); $actions['_users_id_assign']['type'] = 'dropdown_assign'; $actions['_users_id_assign']['force_actions'] = ['assign', 'append']; $actions['_users_id_assign']['permitseveral'] = ['append']; $actions['_users_id_assign']['appendto'] = '_additional_assigns'; $actions['_users_id_assign']['appendtoarray'] = ['use_notification' => 1]; $actions['_users_id_assign']['appendtoarrayfield'] = 'users_id'; $actions['_groups_id_assign']['table'] = 'glpi_groups'; $actions['_groups_id_assign']['name'] = __('Technician group'); $actions['_groups_id_assign']['type'] = 'dropdown'; $actions['_groups_id_assign']['condition'] = ['is_assign' => 1]; $actions['_groups_id_assign']['force_actions'] = ['assign', 'append']; $actions['_groups_id_assign']['permitseveral'] = ['append']; $actions['_groups_id_assign']['appendto'] = '_additional_groups_assigns'; $actions['_suppliers_id_assign']['table'] = 'glpi_suppliers'; $actions['_suppliers_id_assign']['name'] = __('Assigned to a supplier'); $actions['_suppliers_id_assign']['type'] = 'dropdown'; $actions['_suppliers_id_assign']['force_actions'] = ['assign', 'append']; $actions['_suppliers_id_assign']['permitseveral'] = ['append']; $actions['_suppliers_id_assign']['appendto'] = '_additional_suppliers_assigns'; $actions['_suppliers_id_assign']['appendtoarray'] = ['use_notification' => 1]; $actions['_suppliers_id_assign']['appendtoarrayfield'] = 'suppliers_id'; $actions['_users_id_observer']['name'] = _n('Watcher', 'Watchers', 1); $actions['_users_id_observer']['type'] = 'dropdown_users'; $actions['_users_id_observer']['force_actions'] = ['assign', 'append']; $actions['_users_id_observer']['permitseveral'] = ['append']; $actions['_users_id_observer']['appendto'] = '_additional_observers'; $actions['_users_id_observer']['appendtoarray'] = ['use_notification' => 1]; $actions['_users_id_observer']['appendtoarrayfield'] = 'users_id'; $actions['_groups_id_observer']['table'] = 'glpi_groups'; $actions['_groups_id_observer']['name'] = _n('Watcher group', 'Watcher groups', 1); $actions['_groups_id_observer']['type'] = 'dropdown'; $actions['_groups_id_observer']['condition'] = ['is_watcher' => 1]; $actions['_groups_id_observer']['force_actions'] = ['assign', 'append']; $actions['_groups_id_observer']['permitseveral'] = ['append']; $actions['_groups_id_observer']['appendto'] = '_additional_groups_observers'; $actions['urgency']['name'] = __('Urgency'); $actions['urgency']['type'] = 'dropdown_urgency'; $actions['impact']['name'] = __('Impact'); $actions['impact']['type'] = 'dropdown_impact'; $actions['priority']['name'] = __('Priority'); $actions['priority']['type'] = 'dropdown_priority'; $actions['priority']['force_actions'] = ['assign', 'compute']; $actions['status']['name'] = __('Status'); $actions['status']['type'] = 'dropdown_status'; $actions['affectobject']['name'] = _n('Associated element', 'Associated elements', Session::getPluralNumber()); $actions['affectobject']['type'] = 'text'; $actions['affectobject']['force_actions'] = ['affectbyip', 'affectbyfqdn', 'affectbymac']; $actions['slas_id_ttr']['table'] = 'glpi_slas'; $actions['slas_id_ttr']['field'] = 'name'; $actions['slas_id_ttr']['name'] = sprintf(__('%1$s %2$s'), __('SLA'), __('Time to resolve')); $actions['slas_id_ttr']['linkfield'] = 'slas_id_ttr'; $actions['slas_id_ttr']['type'] = 'dropdown'; $actions['slas_id_ttr']['condition'] = ['glpi_slas.type' => SLM::TTR]; $actions['slas_id_tto']['table'] = 'glpi_slas'; $actions['slas_id_tto']['field'] = 'name'; $actions['slas_id_tto']['name'] = sprintf(__('%1$s %2$s'), __('SLA'), __('Time to own')); $actions['slas_id_tto']['linkfield'] = 'slas_id_tto'; $actions['slas_id_tto']['type'] = 'dropdown'; $actions['slas_id_tto']['condition'] = ['glpi_slas.type' => SLM::TTO]; $actions['olas_id_ttr']['table'] = 'glpi_olas'; $actions['olas_id_ttr']['field'] = 'name'; $actions['olas_id_ttr']['name'] = sprintf(__('%1$s %2$s'), __('OLA'), __('Time to resolve')); $actions['olas_id_ttr']['linkfield'] = 'olas_id_ttr'; $actions['olas_id_ttr']['type'] = 'dropdown'; $actions['olas_id_ttr']['condition'] = ['glpi_olas.type' => SLM::TTR]; $actions['olas_id_tto']['table'] = 'glpi_olas'; $actions['olas_id_tto']['field'] = 'name'; $actions['olas_id_tto']['name'] = sprintf(__('%1$s %2$s'), __('OLA'), __('Time to own')); $actions['olas_id_tto']['linkfield'] = 'olas_id_tto'; $actions['olas_id_tto']['type'] = 'dropdown'; $actions['olas_id_tto']['condition'] = ['glpi_olas.type' => SLM::TTO]; $actions['users_id_validate']['name'] = sprintf(__('%1$s - %2$s'), __('Send an approval request'), User::getTypeName(1)); $actions['users_id_validate']['type'] = 'dropdown_users_validate'; $actions['users_id_validate']['force_actions'] = ['add_validation']; $actions['responsible_id_validate']['name'] = sprintf(__('%1$s - %2$s'), __('Send an approval request'), __('Responsible of the requester')); $actions['responsible_id_validate']['type'] = 'yesno'; $actions['responsible_id_validate']['force_actions'] = ['add_validation']; $actions['groups_id_validate']['name'] = sprintf(__('%1$s - %2$s'), __('Send an approval request'), Group::getTypeName(1)); $actions['groups_id_validate']['type'] = 'dropdown_groups_validate'; $actions['groups_id_validate']['force_actions'] = ['add_validation']; $actions['validation_percent']['name'] = sprintf(__('%1$s - %2$s'), __('Send an approval request'), __('Minimum validation required')); $actions['validation_percent']['type'] = 'dropdown_validation_percent'; $actions['users_id_validate_requester_supervisor']['name'] = __('Approval request to requester group manager'); $actions['users_id_validate_requester_supervisor']['type'] = 'yesno'; $actions['users_id_validate_requester_supervisor']['force_actions'] = ['add_validation']; $actions['users_id_validate_assign_supervisor']['name'] = __('Approval request to technician group manager'); $actions['users_id_validate_assign_supervisor']['type'] = 'yesno'; $actions['users_id_validate_assign_supervisor']['force_actions'] = ['add_validation']; $actions['locations_id']['name'] = Location::getTypeName(1); $actions['locations_id']['type'] = 'dropdown'; $actions['locations_id']['table'] = 'glpi_locations'; $actions['locations_id']['force_actions'] = ['assign', 'fromuser', 'fromitem']; $actions['requesttypes_id']['name'] = RequestType::getTypeName(1); $actions['requesttypes_id']['type'] = 'dropdown'; $actions['requesttypes_id']['table'] = 'glpi_requesttypes'; $actions['takeintoaccount_delay_stat']['name'] = __('Take into account delay'); $actions['takeintoaccount_delay_stat']['type'] = 'yesno'; $actions['takeintoaccount_delay_stat']['force_actions'] = ['do_not_compute']; $actions['solution_template']['name'] = _n('Solution template', 'Solution templates', 1); $actions['solution_template']['type'] = 'dropdown'; $actions['solution_template']['table'] = 'glpi_solutiontemplates'; $actions['solution_template']['force_actions'] = ['assign']; return $actions; } /** * @since 0.85 * * @see commonDBTM::getRights() **/ function getRights($interface = 'central') { $values = parent::getRights(); //TRANS: short for : Business rules for ticket (entity parent) $values[self::PARENT] = ['short' => __('Parent business'), 'long' => __('Business rules for ticket (entity parent)')]; return $values; } }