Files
MYSOPHAL/inc/ruleticket.class.php
2025-08-07 13:15:31 +01:00

791 lines
40 KiB
PHP

<?php
/**
* ---------------------------------------------------------------------
* GLPI - Gestionnaire Libre de Parc Informatique
* Copyright (C) 2015-2020 Teclib' and contributors.
*
* http://glpi-project.org
*
* based on GLPI - Gestionnaire Libre de Parc Informatique
* Copyright (C) 2003-2014 by the INDEPNET Development Team.
*
* ---------------------------------------------------------------------
*
* LICENSE
*
* This file is part of GLPI.
*
* GLPI is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* GLPI is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GLPI. If not, see <http://www.gnu.org/licenses/>.
* ---------------------------------------------------------------------
*/
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 "<table class='tab_cadre_fixe'>";
echo "<tr class='tab_bg_2'><td>".
__('Urgency or impact used in actions, think to add Priority: recompute action if needed.').
"</td></tr>\n";
echo "</table><br>";
}
}
/**
* @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 "<input type='hidden' name='entities_id' value='".$_SESSION["glpiactive_entity"]."'>";
}
}
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;
}
}