Update KEDB and Problem Mgmt Modules

Review other modules

SVN:trunk[725]
This commit is contained in:
Erwan Taloc
2010-08-31 07:51:26 +00:00
parent e75b6f8dbb
commit a17c123f08
16 changed files with 1085 additions and 321 deletions

View File

@@ -71,12 +71,11 @@ abstract class Change extends Ticket
MetaModel::Init_AddAttribute(new AttributeExternalKey("manager_id", array("targetclass"=>"Person", "jointype"=>null, "allowed_values"=>new ValueSetObjects('SELECT Person AS p JOIN lnkTeamToContact AS l ON l.contact_id=p.id JOIN Team AS t ON l.team_id=t.id WHERE t.id = :this->manager_group_id'), "sql"=>"manager_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array("manager_group_id"))));
MetaModel::Init_AddAttribute(new AttributeExternalField("manager_email", array("allowed_values"=>null, "extkey_attcode"=>"manager_id", "target_attcode"=>"email", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeEnum("outage", array("allowed_values"=>new ValueSetEnum('yes,no'), "sql"=>"outage", "default_value"=>"no", "is_null_allowed"=>false, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeText("change_request", array("allowed_values"=>null, "sql"=>"change_request", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeText("fallback", array("allowed_values"=>null, "sql"=>"fallback", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_SetZListItems('details', array('title', 'org_id', 'ticket_log', 'start_date', 'document_list', 'ci_list', 'contact_list', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback'));
MetaModel::Init_SetZListItems('advanced_search', array('finalclass', 'ref', 'title', 'org_id', 'start_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback'));
MetaModel::Init_SetZListItems('standard_search', array('finalclass', 'ref', 'title', 'org_id', 'start_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback'));
MetaModel::Init_SetZListItems('details', array('title', 'org_id', 'description','ticket_log', 'start_date','end_date', 'document_list', 'ci_list', 'contact_list','incident_list', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'fallback'));
MetaModel::Init_SetZListItems('advanced_search', array('finalclass', 'ref', 'title', 'org_id', 'start_date', 'end_date','status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage'));
MetaModel::Init_SetZListItems('standard_search', array('finalclass', 'ref', 'title', 'org_id', 'start_date', 'end_date','status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage'));
MetaModel::Init_SetZListItems('list', array('finalclass', 'title', 'start_date', 'status'));
@@ -118,7 +117,9 @@ abstract class Change extends Ticket
'workgroup_id' => OPT_ATT_MANDATORY,
'supervisor_group_id' => OPT_ATT_MANDATORY,
'manager_group_id' => OPT_ATT_MANDATORY,
'change_request' => OPT_ATT_READONLY,
'description' => OPT_ATT_READONLY,
'requestor_id' => OPT_ATT_READONLY,
'title' => OPT_ATT_MANDATORY,
),
)
);
@@ -139,6 +140,8 @@ abstract class Change extends Ticket
'agent_id' => OPT_ATT_MUSTCHANGE,
'supervisor_id' => OPT_ATT_MUSTCHANGE,
'manager_id' => OPT_ATT_MUSTCHANGE,
'description' => OPT_ATT_READONLY,
'requestor_id' => OPT_ATT_READONLY,
),
)
);
@@ -208,7 +211,6 @@ abstract class Change extends Ticket
"attribute_list" => array(
'end_date' => OPT_ATT_READONLY,
'agent_id' => OPT_ATT_READONLY,
'change_request' => OPT_ATT_READONLY,
'fallback' => OPT_ATT_READONLY,
),
)
@@ -316,10 +318,10 @@ class RoutineChange extends Change
MetaModel::Init_InheritAttributes();
MetaModel::Init_InheritLifecycle();
MetaModel::Init_SetZListItems('details', array('title', 'org_id', 'ticket_log', 'start_date', 'document_list', 'ci_list', 'contact_list', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback'));
MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback'));
MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback'));
MetaModel::Init_SetZListItems('list', array('title', 'org_id', 'start_date', 'status', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback'));
MetaModel::Init_SetZListItems('details', array('title', 'org_id', 'description','ticket_log', 'start_date', 'end_date','document_list', 'ci_list', 'contact_list','incident_list', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'fallback'));
MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date', 'end_date','status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage'));
MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'start_date','end_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage'));
MetaModel::Init_SetZListItems('list', array('title', 'org_id', 'start_date', 'status', 'requestor_id'));
MetaModel::Init_DefineTransition("new", "ev_assign", array("target_state"=>"assigned", "actions"=>array(), "user_restriction"=>null));
MetaModel::Init_DefineTransition("assigned", "ev_plan", array("target_state"=>"plannedscheduled", "actions"=>array(), "user_restriction"=>null));
@@ -353,10 +355,10 @@ abstract class ApprovedChange extends Change
MetaModel::Init_AddAttribute(new AttributeDateTime("approval_date", array("allowed_values"=>null, "sql"=>"approval_date", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("approval_comment", array("allowed_values"=>null, "sql"=>"approval_comment", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_SetZListItems('details', array('title', 'org_id', 'ticket_log', 'start_date', 'document_list', 'ci_list', 'contact_list', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback', 'approval_date', 'approval_comment'));
MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback', 'approval_date', 'approval_comment'));
MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback', 'approval_date', 'approval_comment'));
MetaModel::Init_SetZListItems('list', array('title', 'org_id', 'start_date', 'status', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback', 'approval_date', 'approval_comment'));
MetaModel::Init_SetZListItems('details', array('title', 'org_id', 'description','ticket_log', 'start_date', 'end_date','document_list', 'ci_list', 'contact_list','incident_list', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'fallback', 'approval_date', 'approval_comment'));
MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date','end_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage','approval_date'));
MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'start_date','end_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'approval_date'));
MetaModel::Init_SetZListItems('list', array('title', 'org_id', 'start_date', 'status', 'requestor_id'));
MetaModel::Init_OverloadStateAttribute('new', 'approval_date', OPT_ATT_HIDDEN);
MetaModel::Init_OverloadStateAttribute('new', 'approval_comment', OPT_ATT_HIDDEN);
@@ -404,10 +406,10 @@ class NormalChange extends ApprovedChange
MetaModel::Init_AddAttribute(new AttributeDateTime("acceptance_date", array("allowed_values"=>null, "sql"=>"acceptance_date", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("acceptance_comment", array("allowed_values"=>null, "sql"=>"acceptance_comment", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_SetZListItems('details', array('title', 'org_id', 'ticket_log', 'start_date', 'document_list', 'ci_list', 'contact_list', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback', 'approval_date', 'approval_comment', 'acceptance_date', 'acceptance_comment'));
MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback'));
MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback'));
MetaModel::Init_SetZListItems('list', array('title', 'org_id', 'start_date', 'status', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback'));
MetaModel::Init_SetZListItems('details', array('title', 'org_id', 'description','ticket_log', 'start_date','end_date', 'document_list', 'ci_list', 'contact_list','incident_list', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update','close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'fallback', 'approval_date', 'approval_comment', 'acceptance_date', 'acceptance_comment'));
MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date', 'end_date','status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage'));
MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'start_date','end_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage'));
MetaModel::Init_SetZListItems('list', array('title', 'org_id', 'start_date', 'status', 'requestor_id'));
MetaModel::Init_OverloadStateAttribute('new', 'acceptance_date', OPT_ATT_HIDDEN);
MetaModel::Init_OverloadStateAttribute('new', 'acceptance_comment', OPT_ATT_HIDDEN);
@@ -463,10 +465,10 @@ class EmergencyChange extends ApprovedChange
MetaModel::Init_InheritAttributes();
MetaModel::Init_InheritLifecycle();
MetaModel::Init_SetZListItems('details', array('title', 'org_id', 'ticket_log', 'start_date', 'document_list', 'ci_list', 'contact_list', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback', 'approval_date', 'approval_comment'));
MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback', 'approval_date', 'approval_comment'));
MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback', 'approval_date', 'approval_comment'));
MetaModel::Init_SetZListItems('list', array('title', 'org_id', 'start_date', 'status', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'end_date', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'change_request', 'fallback', 'approval_date', 'approval_comment'));
MetaModel::Init_SetZListItems('details', array('title', 'org_id', 'description','ticket_log', 'start_date', 'end_date','document_list', 'ci_list', 'contact_list','incident_list', 'status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'fallback', 'approval_date', 'approval_comment'));
MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date','end_date', 'status', 'reason', 'requestor_id', 'workgroup_id', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'approval_date'));
MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'start_date', 'end_date','status', 'reason', 'requestor_id', 'workgroup_id', 'creation_date', 'last_update', 'close_date', 'impact', 'agent_id', 'agent_email', 'supervisor_group_id', 'supervisor_id', 'manager_group_id', 'manager_id', 'outage', 'approval_date'));
MetaModel::Init_SetZListItems('list', array('title', 'org_id', 'start_date', 'status', 'requestor_id'));
MetaModel::Init_DefineTransition("new", "ev_assign", array("target_state"=>"assigned", "actions"=>array(), "user_restriction"=>null));
MetaModel::Init_DefineTransition("assigned", "ev_plan", array("target_state"=>"plannedscheduled", "actions"=>array(), "user_restriction"=>null));

View File

@@ -299,28 +299,33 @@ Dict::Add('EN US', 'English', 'English', array(
// Class: Licence
//
Dict::Add('EN US', 'English', 'English', array(
'Class:Licence' => 'Licence',
'Class:Licence+' => '',
'Class:Licence/Attribute:provider' => 'Provider',
'Class:Licence/Attribute:provider+' => '',
'Class:Licence/Attribute:product' => 'Product',
'Class:Licence/Attribute:product+' => '',
'Class:Licence/Attribute:name' => 'Name',
'Class:Licence/Attribute:name+' => '',
'Class:Licence/Attribute:start' => 'Start date',
'Class:Licence/Attribute:start+' => '',
'Class:Licence/Attribute:end' => 'End date',
'Class:Licence/Attribute:end+' => '',
'Class:Licence/Attribute:licence_key' => 'Key',
'Class:Licence/Attribute:licence_key+' => '',
'Class:Licence/Attribute:scope' => 'Scope',
'Class:Licence/Attribute:scope+' => '',
'Class:Licence/Attribute:usage_limit' => 'Usage limit',
'Class:Licence/Attribute:usage_limit+' => '',
'Class:Licence/Attribute:usage_list' => 'Usage',
'Class:Licence/Attribute:usage_list+' => 'Application instances using this licence',
));
Dict::Add('EN US', 'English', 'English', array(
'Class:Licence' => 'Licence',
'Class:Licence+' => '',
'Class:Licence/Attribute:provider' => 'Provider',
'Class:Licence/Attribute:provider+' => '',
'Class:Licence/Attribute:org_id' => 'Owner',
'Class:Licence/Attribute:org_id+' => '',
'Class:Licence/Attribute:org_name' => 'Name',
'Class:Licence/Attribute:org_name+' => 'Common name',
'Class:Licence/Attribute:product' => 'Product',
'Class:Licence/Attribute:product+' => '',
'Class:Licence/Attribute:name' => 'Name',
'Class:Licence/Attribute:name+' => '',
'Class:Licence/Attribute:start' => 'Start date',
'Class:Licence/Attribute:start+' => '',
'Class:Licence/Attribute:end' => 'End date',
'Class:Licence/Attribute:end+' => '',
'Class:Licence/Attribute:licence_key' => 'Key',
'Class:Licence/Attribute:licence_key+' => '',
'Class:Licence/Attribute:scope' => 'Scope',
'Class:Licence/Attribute:scope+' => '',
'Class:Licence/Attribute:usage_limit' => 'Usage limit',
'Class:Licence/Attribute:usage_limit+' => '',
'Class:Licence/Attribute:usage_list' => 'Usage',
'Class:Licence/Attribute:usage_list+' => 'Application instances using this licence',
));
//
// Class: Subnet
@@ -490,8 +495,6 @@ Dict::Add('EN US', 'English', 'English', array(
'Class:SoftwareInstance/Attribute:licence_id+' => '',
'Class:SoftwareInstance/Attribute:licence_name' => 'Licence',
'Class:SoftwareInstance/Attribute:licence_name+' => '',
'Class:SoftwareInstance/Attribute:software_id' => 'Software',
'Class:SoftwareInstance/Attribute:software_id+' => '',
'Class:SoftwareInstance/Attribute:software_name' => 'Software',
'Class:SoftwareInstance/Attribute:software_name+' => '',
'Class:SoftwareInstance/Attribute:version' => 'Version',
@@ -504,21 +507,31 @@ Dict::Add('EN US', 'English', 'English', array(
// Class: ApplicationInstance
//
Dict::Add('EN US', 'English', 'English', array(
'Class:ApplicationInstance' => 'Application Instance',
'Class:ApplicationInstance+' => '',
));
Dict::Add('EN US', 'English', 'English', array(
'Class:ApplicationInstance' => 'Application Instance',
'Class:ApplicationInstance+' => '',
'Class:ApplicationInstance/Attribute:software_id' => 'Software',
'Class:ApplicationInstance/Attribute:software_id+' => '',
'Class:ApplicationInstance/Attribute:software_name' => 'Name',
'Class:ApplicationInstance/Attribute:software_name+' => '',
));
//
// Class: DBServerInstance
//
Dict::Add('EN US', 'English', 'English', array(
'Class:DBServerInstance' => 'DB Server Instance',
'Class:DBServerInstance+' => '',
'Class:DBServerInstance/Attribute:dbinstance_list' => 'Databases',
'Class:DBServerInstance/Attribute:dbinstance_list+' => 'Database sources',
));
Dict::Add('EN US', 'English', 'English', array(
'Class:DBServerInstance' => 'DB Server Instance',
'Class:DBServerInstance+' => '',
'Class:DBServerInstance/Attribute:software_id' => 'Software',
'Class:DBServerInstance/Attribute:software_id+' => '',
'Class:DBServerInstance/Attribute:software_name' => 'Name',
'Class:DBServerInstance/Attribute:software_name+' => '',
'Class:DBServerInstance/Attribute:dbinstance_list' => 'Databases',
'Class:DBServerInstance/Attribute:dbinstance_list+' => 'Database sources',
));
//
// Class: DatabaseInstance
@@ -584,64 +597,70 @@ Dict::Add('EN US', 'English', 'English', array(
// Class: NetworkInterface
//
Dict::Add('EN US', 'English', 'English', array(
'Class:NetworkInterface' => 'Network Interface',
'Class:NetworkInterface+' => '',
'Class:NetworkInterface/Attribute:device_id' => 'Device',
'Class:NetworkInterface/Attribute:device_id+' => '',
'Class:NetworkInterface/Attribute:device_name' => 'Device',
'Class:NetworkInterface/Attribute:device_name+' => '',
'Class:NetworkInterface/Attribute:logical_type' => 'Logical Type',
'Class:NetworkInterface/Attribute:logical_type+' => '',
'Class:NetworkInterface/Attribute:logical_type/Value:backup' => 'Backup',
'Class:NetworkInterface/Attribute:logical_type/Value:backup+' => '',
'Class:NetworkInterface/Attribute:logical_type/Value:logical' => 'Logical',
'Class:NetworkInterface/Attribute:logical_type/Value:logical+' => '',
'Class:NetworkInterface/Attribute:logical_type/Value:port' => 'Port',
'Class:NetworkInterface/Attribute:logical_type/Value:port+' => '',
'Class:NetworkInterface/Attribute:logical_type/Value:primary' => 'Primary',
'Class:NetworkInterface/Attribute:logical_type/Value:primary+' => '',
'Class:NetworkInterface/Attribute:logical_type/Value:secondary' => 'Secondary',
'Class:NetworkInterface/Attribute:logical_type/Value:secondary+' => '',
'Class:NetworkInterface/Attribute:physical_type' => 'Physical Type',
'Class:NetworkInterface/Attribute:physical_type+' => '',
'Class:NetworkInterface/Attribute:physical_type/Value:atm' => 'ATM',
'Class:NetworkInterface/Attribute:physical_type/Value:atm+' => '',
'Class:NetworkInterface/Attribute:physical_type/Value:ethernet' => 'Ethernet',
'Class:NetworkInterface/Attribute:physical_type/Value:ethernet+' => '',
'Class:NetworkInterface/Attribute:physical_type/Value:framerelay' => 'Frame Relay',
'Class:NetworkInterface/Attribute:physical_type/Value:framerelay+' => '',
'Class:NetworkInterface/Attribute:physical_type/Value:vlan' => 'VLAN',
'Class:NetworkInterface/Attribute:physical_type/Value:vlan+' => '',
'Class:NetworkInterface/Attribute:ip_address' => 'IP Address',
'Class:NetworkInterface/Attribute:ip_address+' => '',
'Class:NetworkInterface/Attribute:ip_mask' => 'IP Mask',
'Class:NetworkInterface/Attribute:ip_mask+' => '',
'Class:NetworkInterface/Attribute:mac_address' => 'MAC Address',
'Class:NetworkInterface/Attribute:mac_address+' => '',
'Class:NetworkInterface/Attribute:speed' => 'Speed',
'Class:NetworkInterface/Attribute:speed+' => '',
'Class:NetworkInterface/Attribute:duplex' => 'Duplex',
'Class:NetworkInterface/Attribute:duplex+' => '',
'Class:NetworkInterface/Attribute:duplex/Value:full' => 'Full',
'Class:NetworkInterface/Attribute:duplex/Value:full+' => '',
'Class:NetworkInterface/Attribute:duplex/Value:half' => 'Half',
'Class:NetworkInterface/Attribute:duplex/Value:half+' => '',
'Class:NetworkInterface/Attribute:duplex/Value:unknown' => 'Unknown',
'Class:NetworkInterface/Attribute:duplex/Value:unknown+' => '',
'Class:NetworkInterface/Attribute:connected_if' => 'Connected to',
'Class:NetworkInterface/Attribute:connected_if+' => 'Connected interface',
'Class:NetworkInterface/Attribute:connected_name' => 'Connected to',
'Class:NetworkInterface/Attribute:connected_name+' => '',
'Class:NetworkInterface/Attribute:connected_if_device_id' => 'Connected device',
'Class:NetworkInterface/Attribute:connected_if_device_id+' => '',
'Class:NetworkInterface/Attribute:link_type' => 'Link type',
'Class:NetworkInterface/Attribute:link_type+' => '',
'Class:NetworkInterface/Attribute:link_type/Value:uplink' => 'Up link',
'Class:NetworkInterface/Attribute:link_type/Value:uplink+' => '',
'Class:NetworkInterface/Attribute:link_type/Value:downlink' => 'Down link',
'Class:NetworkInterface/Attribute:link_type/Value:downlink+' => '',
));
Dict::Add('EN US', 'English', 'English', array(
'Class:NetworkInterface' => 'Network Interface',
'Class:NetworkInterface+' => '',
'Class:NetworkInterface/Attribute:device_id' => 'Device',
'Class:NetworkInterface/Attribute:device_id+' => '',
'Class:NetworkInterface/Attribute:device_name' => 'Device',
'Class:NetworkInterface/Attribute:device_name+' => '',
'Class:NetworkInterface/Attribute:logical_type' => 'Logical Type',
'Class:NetworkInterface/Attribute:logical_type+' => '',
'Class:NetworkInterface/Attribute:logical_type/Value:backup' => 'Backup',
'Class:NetworkInterface/Attribute:logical_type/Value:backup+' => '',
'Class:NetworkInterface/Attribute:logical_type/Value:logical' => 'Logical',
'Class:NetworkInterface/Attribute:logical_type/Value:logical+' => '',
'Class:NetworkInterface/Attribute:logical_type/Value:port' => 'Port',
'Class:NetworkInterface/Attribute:logical_type/Value:port+' => '',
'Class:NetworkInterface/Attribute:logical_type/Value:primary' => 'Primary',
'Class:NetworkInterface/Attribute:logical_type/Value:primary+' => '',
'Class:NetworkInterface/Attribute:logical_type/Value:secondary' => 'Secondary',
'Class:NetworkInterface/Attribute:logical_type/Value:secondary+' => '',
'Class:NetworkInterface/Attribute:physical_type' => 'Physical Type',
'Class:NetworkInterface/Attribute:physical_type+' => '',
'Class:NetworkInterface/Attribute:physical_type/Value:atm' => 'ATM',
'Class:NetworkInterface/Attribute:physical_type/Value:atm+' => '',
'Class:NetworkInterface/Attribute:physical_type/Value:ethernet' => 'Ethernet',
'Class:NetworkInterface/Attribute:physical_type/Value:ethernet+' => '',
'Class:NetworkInterface/Attribute:physical_type/Value:framerelay' => 'Frame Relay',
'Class:NetworkInterface/Attribute:physical_type/Value:framerelay+' => '',
'Class:NetworkInterface/Attribute:physical_type/Value:vlan' => 'VLAN',
'Class:NetworkInterface/Attribute:physical_type/Value:vlan+' => '',
'Class:NetworkInterface/Attribute:ip_address' => 'IP Address',
'Class:NetworkInterface/Attribute:ip_address+' => '',
'Class:NetworkInterface/Attribute:ip_mask' => 'IP Mask',
'Class:NetworkInterface/Attribute:ip_mask+' => '',
'Class:NetworkInterface/Attribute:mac_address' => 'MAC Address',
'Class:NetworkInterface/Attribute:mac_address+' => '',
'Class:NetworkInterface/Attribute:speed' => 'Speed',
'Class:NetworkInterface/Attribute:speed+' => '',
'Class:NetworkInterface/Attribute:duplex' => 'Duplex',
'Class:NetworkInterface/Attribute:duplex+' => '',
'Class:NetworkInterface/Attribute:duplex/Value:auto' => 'Auto',
'Class:NetworkInterface/Attribute:duplex/Value:auto+' => 'Auto',
'Class:NetworkInterface/Attribute:duplex/Value:full' => 'Full',
'Class:NetworkInterface/Attribute:duplex/Value:full+' => '',
'Class:NetworkInterface/Attribute:duplex/Value:half' => 'Half',
'Class:NetworkInterface/Attribute:duplex/Value:half+' => '',
'Class:NetworkInterface/Attribute:duplex/Value:unknown' => 'Unknown',
'Class:NetworkInterface/Attribute:duplex/Value:unknown+' => '',
'Class:NetworkInterface/Attribute:connected_if' => 'Connected to',
'Class:NetworkInterface/Attribute:connected_if+' => 'Connected interface',
'Class:NetworkInterface/Attribute:connected_name' => 'Connected to',
'Class:NetworkInterface/Attribute:connected_name+' => '',
'Class:NetworkInterface/Attribute:connected_if_device_id' => 'Connected device',
'Class:NetworkInterface/Attribute:connected_if_device_id+' => '',
'Class:NetworkInterface/Attribute:connected_if_device_id_name' => 'Device',
'Class:NetworkInterface/Attribute:connected_if_device_id_name+' => '',
'Class:NetworkInterface/Attribute:link_type' => 'Link type',
'Class:NetworkInterface/Attribute:link_type+' => '',
'Class:NetworkInterface/Attribute:link_type/Value:downlink' => 'Down link',
'Class:NetworkInterface/Attribute:link_type/Value:downlink+' => '',
'Class:NetworkInterface/Attribute:link_type/Value:uplink' => 'Up link',
'Class:NetworkInterface/Attribute:link_type/Value:uplink+' => '',
));
//
// Class: Device
@@ -955,5 +974,14 @@ Dict::Add('EN US', 'English', 'English', array(
'Menu:MobilePhone+' => 'All Mobile Phones',
'Menu:PC' => 'Personal Computers',
'Menu:PC+' => 'All Personal Computers',
'Menu:NewContact' => 'New Contact',
'Menu:NewContact+' => 'New Contact',
'Menu:SearchContacts' => 'Search for contacts',
'Menu:SearchContacts+' => 'Search for contacts',
'Menu:NewCI' => 'New CI',
'Menu:NewCI+' => 'New CI',
'Menu:SearchCIs' => 'Search for CIs',
'Menu:SearchCIs+' => 'Search for CIs',
));
?>

View File

@@ -164,7 +164,7 @@ class Person extends Contact
MetaModel::Init_AddAttribute(new AttributeString("first_name", array("allowed_values"=>null, "sql"=>"first_name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("employee_id", array("allowed_values"=>null, "sql"=>"employee_id", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_SetZListItems('details', array('name','first_name', 'org_id', 'status', 'location_id', 'email', 'phone', 'employee_id', 'contract_list', 'service_list', 'ticket_list', 'ci_list', 'team_list'));
MetaModel::Init_SetZListItems('details', array('name','first_name', 'org_id', 'status', 'location_id', 'email', 'phone', 'employee_id','team_list', 'contract_list', 'service_list', 'ticket_list', 'ci_list'));
MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'email', 'phone', 'location_id', 'first_name', 'employee_id'));
MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'email', 'phone', 'location_id', 'first_name', 'employee_id'));
MetaModel::Init_SetZListItems('list', array('first_name','status', 'org_id', 'email', 'phone', 'location_id'));
@@ -1048,6 +1048,24 @@ class NetworkInterface extends ConnectableCI
{
return $this->Get('device_name').' - '.$this->Get('name');
}
public static function GetRelationQueries($sRelCode)
{
switch ($sRelCode)
{
case "impacts":
$aRels = array(
"connected_devices" => array("sQuery"=>"SELECT Device AS dev JOIN NetworkInterface AS if1 ON if1.device_id = dev.id JOIN NetworkInterface AS if2 ON if2.connected_if = if1.id WHERE if2.id = :this->id AND if2.link_type='downlink'", "bPropagate"=>true, "iDistance"=>5),
);
return array_merge($aRels, parent::GetRelationQueries($sRelCode));
break;
default:
return parent::GetRelationQueries($sRelCode);
}
}
}
abstract class Device extends ConnectableCI
{

View File

@@ -43,9 +43,9 @@ class Incident extends ResponseTicket
MetaModel::Init_InheritAttributes();
MetaModel::Init_InheritLifecycle();
MetaModel::Init_SetZListItems('details', array('ref', 'title', 'org_id', 'description', 'ticket_log', 'start_date', 'tto_escalation_deadline', 'ttr_escalation_deadline', 'document_list', 'ci_list', 'contact_list', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'last_update', 'assignment_date', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment'));
MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'last_update', 'assignment_date', 'tto_escalation_deadline', 'ttr_escalation_deadline', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment'));
MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'last_update', 'assignment_date', 'tto_escalation_deadline', 'ttr_escalation_deadline', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment'));
MetaModel::Init_SetZListItems('details', array('ref', 'title', 'org_id', 'description', 'ticket_log', 'start_date', 'tto_escalation_deadline', 'ttr_escalation_deadline', 'document_list', 'ci_list', 'contact_list','incident_list', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'last_update', 'assignment_date', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment'));
MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment'));
MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment'));
MetaModel::Init_SetZListItems('list', array('ref', 'title', 'org_id', 'start_date', 'status', 'service_id', 'priority', 'workgroup_id', 'agent_id'));
}
@@ -77,6 +77,7 @@ class Incident extends ResponseTicket
{
$oNewLink = new lnkTicketToCI();
$oNewLink->Set('ci_id', $iKey);
$oNewLink->Set('impact', 'potentially impacted (automatically computed)');
$oToImpact->AddObject($oNewLink);
}
}
@@ -94,6 +95,39 @@ class Incident extends ResponseTicket
}
}
class lnkTicketToIncident extends cmdbAbstractObject
{
public static function Init()
{
$aParams = array
(
"category" => "bizmodel,searchable,incidentmgmt,requestmgmt",
"key_type" => "autoincrement",
"name_attcode" => "ticket_id",
"state_attcode" => "",
"reconc_keys" => array("ticket_id","incident_id"),
"db_table" => "lnktickettoincident",
"db_key_field" => "id",
"db_finalclass_field" => "",
"display_template" => "",
);
MetaModel::Init_Params($aParams);
MetaModel::Init_InheritAttributes();
MetaModel::Init_AddAttribute(new AttributeExternalKey("ticket_id", array("targetclass"=>"Ticket", "jointype"=>null, "allowed_values"=>null, "sql"=>"ticket_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("ticket_ref", array("allowed_values"=>null, "extkey_attcode"=>"ticket_id", "target_attcode"=>"ref", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalKey("incident_id", array("targetclass"=>"Incident", "jointype"=>null, "allowed_values"=>null, "sql"=>"incident_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("incident_ref", array("allowed_values"=>null, "extkey_attcode"=>"incident_id", "target_attcode"=>"ref", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("reason", array("allowed_values"=>null, "sql"=>"reason", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_SetZListItems('details', array('ticket_id', 'incident_id','reason'));
MetaModel::Init_SetZListItems('advanced_search', array('ticket_id', 'incident_id'));
MetaModel::Init_SetZListItems('standard_search', array('ticket_id', 'incident_id'));
MetaModel::Init_SetZListItems('list', array('ticket_id', 'incident_id','reason'));
}
}
$oMyMenuGroup = new MenuGroup('IncidentManagement', 40 /* fRank */);
new TemplateMenuNode('Incident:Overview', '../modules/itop-incident-mgmt-1.0.0/overview.html', $oMyMenuGroup->GetIndex() /* oParent */, 0 /* fRank */);
new NewObjectMenuNode('NewIncident', 'Incident', $oMyMenuGroup->GetIndex(), 1 /* fRank */);

View File

@@ -48,4 +48,95 @@
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: KnownError
//
Dict::Add('EN US', 'English', 'English', array(
'Class:KnownError' => 'Known Error',
'Class:KnownError+' => 'Error documented for a known issue',
'Class:KnownError/Attribute:name' => 'Name',
'Class:KnownError/Attribute:name+' => '',
'Class:KnownError/Attribute:org_id' => 'Customer',
'Class:KnownError/Attribute:org_id+' => '',
'Class:KnownError/Attribute:cust_name' => 'Customer Name',
'Class:KnownError/Attribute:cust_name+' => '',
'Class:KnownError/Attribute:problem_id' => 'Related Problem',
'Class:KnownError/Attribute:problem_id+' => '',
'Class:KnownError/Attribute:problem_ref' => 'Ref',
'Class:KnownError/Attribute:problem_ref+' => '',
'Class:KnownError/Attribute:symptom' => 'Symptom',
'Class:KnownError/Attribute:symptom+' => '',
'Class:KnownError/Attribute:root_cause' => 'Root Cause',
'Class:KnownError/Attribute:root_cause+' => '',
'Class:KnownError/Attribute:workaround' => 'Workaround',
'Class:KnownError/Attribute:workaround+' => '',
'Class:KnownError/Attribute:solution' => 'Solution',
'Class:KnownError/Attribute:solution+' => '',
'Class:KnownError/Attribute:error_code' => 'Error Code',
'Class:KnownError/Attribute:error_code+' => '',
'Class:KnownError/Attribute:domain' => 'Domain',
'Class:KnownError/Attribute:domain+' => '',
'Class:KnownError/Attribute:domain/Value:Application' => 'Application',
'Class:KnownError/Attribute:domain/Value:Application+' => 'Application',
'Class:KnownError/Attribute:domain/Value:Desktop' => 'Desktop',
'Class:KnownError/Attribute:domain/Value:Desktop+' => 'Desktop',
'Class:KnownError/Attribute:domain/Value:Network' => 'Network',
'Class:KnownError/Attribute:domain/Value:Network+' => 'Network',
'Class:KnownError/Attribute:domain/Value:Server' => 'Server',
'Class:KnownError/Attribute:domain/Value:Server+' => 'Server',
'Class:KnownError/Attribute:vendor' => 'Vendor',
'Class:KnownError/Attribute:vendor+' => '',
'Class:KnownError/Attribute:model' => 'Model',
'Class:KnownError/Attribute:model+' => '',
'Class:KnownError/Attribute:version' => 'Version',
'Class:KnownError/Attribute:version+' => '',
'Class:KnownError/Attribute:ci_list' => 'CIs',
'Class:KnownError/Attribute:ci_list+' => '',
'Class:KnownError/Attribute:document_list' => 'Documents',
'Class:KnownError/Attribute:document_list+' => '',
));
//
// Class: lnkInfraError
//
Dict::Add('EN US', 'English', 'English', array(
'Class:lnkInfraError' => 'InfraErrorLinks',
'Class:lnkInfraError+' => 'Infra related to a known error',
'Class:lnkInfraError/Attribute:infra_id' => 'CI',
'Class:lnkInfraError/Attribute:infra_id+' => '',
'Class:lnkInfraError/Attribute:infra_name' => 'CI Name',
'Class:lnkInfraError/Attribute:infra_name+' => '',
'Class:lnkInfraError/Attribute:infra_status' => 'CI Status',
'Class:lnkInfraError/Attribute:infra_status+' => '',
'Class:lnkInfraError/Attribute:error_id' => 'Error',
'Class:lnkInfraError/Attribute:error_id+' => '',
'Class:lnkInfraError/Attribute:error_name' => 'Error name',
'Class:lnkInfraError/Attribute:error_name+' => '',
'Class:lnkInfraError/Attribute:reason' => 'Reason',
'Class:lnkInfraError/Attribute:reason+' => '',
));
//
// Class: lnkDocumentError
//
Dict::Add('EN US', 'English', 'English', array(
'Class:lnkDocumentError' => 'DocumentsErrorLinks',
'Class:lnkDocumentError+' => 'A link between a document and a known error',
'Class:lnkDocumentError/Attribute:doc_id' => 'Document',
'Class:lnkDocumentError/Attribute:doc_id+' => '',
'Class:lnkDocumentError/Attribute:doc_name' => 'Document Name',
'Class:lnkDocumentError/Attribute:doc_name+' => '',
'Class:lnkDocumentError/Attribute:error_id' => 'Error',
'Class:lnkDocumentError/Attribute:error_id+' => '',
'Class:lnkDocumentError/Attribute:error_name' => 'Error Name',
'Class:lnkDocumentError/Attribute:error_name+' => '',
'Class:lnkDocumentError/Attribute:link_type' => 'Information',
'Class:lnkDocumentError/Attribute:link_type+' => '',
));
?>

View File

@@ -23,4 +23,148 @@
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
*/
////////////////////////////////////////////////////////////////////////////////////
/**
* Description of known error
*/
////////////////////////////////////////////////////////////////////////////////////
class KnownError extends cmdbAbstractObject
{
public static function Init()
{
$aParams = array
(
"category" => "bizmodel,searchable",
"name" => "Known Error",
"description" => "Error documented for a known issue",
"key_type" => "autoincrement",
"key_label" => "id",
"name_attcode" => "name",
"state_attcode" => "",
"reconc_keys" => array("org_id", "name"), // inherited attributes
"db_table" => "known_error",
"db_key_field" => "id",
"db_finalclass_field" => "",
"display_template" => "",
);
MetaModel::Init_Params($aParams);
MetaModel::Init_InheritAttributes();
MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalKey("org_id", array("targetclass"=>"Organization", "allowed_values"=>null, "sql"=>"cust_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("cust_name", array("allowed_values"=>null, "extkey_attcode"=> 'org_id', "target_attcode"=>"name")));
MetaModel::Init_AddAttribute(new AttributeExternalKey("problem_id", array("targetclass"=>"Problem", "allowed_values"=>null, "sql"=>"problem_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("problem_ref", array("allowed_values"=>null, "extkey_attcode"=> 'problem_id', "target_attcode"=>"ref")));
MetaModel::Init_AddAttribute(new AttributeText("symptom", array("allowed_values"=>null, "sql"=>"symptom", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeText("root_cause", array("allowed_values"=>null, "sql"=>"rootcause", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeText("workaround", array("allowed_values"=>null, "sql"=>"workaround", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeText("solution", array("allowed_values"=>null, "sql"=>"solution", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("error_code", array("allowed_values"=>null, "sql"=>"error_code", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeEnum("domain", array("allowed_values"=>new ValueSetEnum("Network, Server, Application, Desktop"), "sql"=>"domain", "default_value"=>"Application", "is_null_allowed"=>false, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("vendor", array("allowed_values"=>null, "sql"=>"vendor", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("model", array("allowed_values"=>null, "sql"=>"model", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("version", array("allowed_values"=>null, "sql"=>"version", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("ci_list", array("linked_class"=>"lnkInfraError", "ext_key_to_me"=>"error_id", "ext_key_to_remote"=>"infra_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("document_list", array("linked_class"=>"lnkDocumentError", "ext_key_to_me"=>"error_id", "ext_key_to_remote"=>"doc_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
MetaModel::Init_SetZListItems('details', array('name', 'org_id','problem_id','error_code','domain','vendor','model','version', 'symptom','root_cause','workaround','solution','ci_list','document_list')); // Attributes to be displayed for the complete details
MetaModel::Init_SetZListItems('list', array('org_id','problem_id','error_code', 'symptom')); // Attributes to be displayed for a list
// Search criteria
MetaModel::Init_SetZListItems('standard_search', array('name', 'org_id','problem_id','error_code','domain','symptom')); // Criteria of the std search form
MetaModel::Init_SetZListItems('advanced_search', array('name', 'org_id','problem_id', 'error_code','domain','symptom')); // Criteria of the advanced search form
}
}
////////////////////////////////////////////////////////////////////////////////////
/**
* n-n link between any Infra and a Known Error
*/
////////////////////////////////////////////////////////////////////////////////////
class lnkInfraError extends cmdbAbstractObject
{
public static function Init()
{
$aParams = array
(
"category" => "bizmodel,searchable",
"name" => "InfraErrorLinks",
"description" => "Infra related to a known error",
"key_type" => "autoincrement",
"key_label" => "link_id",
"name_attcode" => "", // ????
"state_attcode" => "",
"reconc_keys" => array("infra_id","error_id"), // ????
"db_table" => "infra_error_links",
"db_key_field" => "link_id",
"db_finalclass_field" => "",
"display_template" => "",
);
MetaModel::Init_Params($aParams);
MetaModel::Init_AddAttribute(new AttributeExternalKey("infra_id", array("targetclass"=>"FunctionalCI", "jointype"=> '',"allowed_values"=>null, "sql"=>"infra_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("infra_name", array("allowed_values"=>null, "extkey_attcode"=> 'infra_id', "target_attcode"=>"name")));
MetaModel::Init_AddAttribute(new AttributeExternalField("infra_status", array("allowed_values"=>null, "extkey_attcode"=> 'infra_id', "target_attcode"=>"status")));
MetaModel::Init_AddAttribute(new AttributeExternalKey("error_id", array("targetclass"=>"KnownError", "jointype"=> '', "allowed_values"=>null, "sql"=>"error_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("error_name", array( "allowed_values"=>null, "extkey_attcode"=> 'error_id', "target_attcode"=>"name")));
MetaModel::Init_AddAttribute(new AttributeString("reason", array("allowed_values"=>null, "sql"=>"dummy", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
// Display lists
MetaModel::Init_SetZListItems('details', array('infra_id', 'error_id','reason')); // Attributes to be displayed for a list
MetaModel::Init_SetZListItems('list', array('infra_id', 'infra_status','error_id','reason')); // Attributes to be displayed for a list
// Search criteria
MetaModel::Init_SetZListItems('standard_search', array('infra_id', 'error_id')); // Criteria of the std search form
MetaModel::Init_SetZListItems('advanced_search', array('infra_id', 'error_id')); // Criteria of the advanced search form
}
}
////////////////////////////////////////////////////////////////////////////////////
/**
* n-n link between any Contract and a Document
*/
////////////////////////////////////////////////////////////////////////////////////
class lnkDocumentError extends cmdbAbstractObject
{
public static function Init()
{
$aParams = array
(
"category" => "bizmodel,searchable",
"name" => "DocumentsErrorLinks",
"description" => "A link between a document and a known error",
"key_type" => "autoincrement",
"key_label" => "link_id",
"name_attcode" => "link_type",
"state_attcode" => "",
"reconc_keys" => array("doc_id", "error_id"),
"db_table" => "documents_error_link",
"db_key_field" => "link_id",
"db_finalclass_field" => "",
"display_template" => "../business/templates/default.html",
);
MetaModel::Init_Params($aParams);
MetaModel::Init_AddAttribute(new AttributeExternalKey("doc_id", array("targetclass"=>"Document","allowed_values"=>null, "sql"=>"doc_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("doc_name", array("allowed_values"=>null, "extkey_attcode"=> 'doc_id', "target_attcode"=>"name")));
MetaModel::Init_AddAttribute(new AttributeExternalKey("error_id", array("targetclass"=>"KnownError","allowed_values"=>null, "sql"=>"error_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("error_name", array("allowed_values"=>null, "extkey_attcode"=> 'error_id', "target_attcode"=>"name")));
MetaModel::Init_AddAttribute(new AttributeString("link_type", array("allowed_values"=>null, "sql"=>"link_type", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
// Display lists
MetaModel::Init_SetZListItems('details', array('doc_id', 'error_name', 'link_type')); // Attributes to be displayed for the complete details
MetaModel::Init_SetZListItems('list', array('doc_id', 'error_name', 'link_type')); // Attributes to be displayed for a list
}
}
$oMyMenuGroup = new MenuGroup('ProblemManagement', 42 /* fRank */);
new OQLMenuNode('Problem:KnownErrors', 'SELECT KnownError', $oMyMenuGroup->GetIndex(), 3 /* fRank */);
?>

View File

@@ -27,7 +27,6 @@ SetupWebPage::AddModule(
),
'dictionary' => array(
'en.dict.itop-knownerror-mgmt.php',
'es_cr.dict.itop-knownerror-mgmt.php',
),
'data.struct' => array(
//'data.struct.itop-knownerror-mgmt.xml',

View File

@@ -48,4 +48,113 @@
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
Dict::Add('EN US', 'English', 'English', array(
'Menu:ProblemManagement' => 'Problem Management',
'Menu:ProblemManagement+' => 'Problem Management',
'Menu:Problem:Overview' => 'Overview',
'Menu:Problem:Overview+' => 'Overview',
'Menu:NewProblem' => 'New Problem',
'Menu:NewProblem+' => 'New Problem',
'Menu:SearchProblems' => 'Search for Problems',
'Menu:SearchProblems+' => 'Search for Problems',
'Menu:Problem:KnownErrors' => 'All Known Errors',
'Menu:Problem:KnownErrors+' => 'All Known Errors',
'Menu:Problem:Shortcuts' => 'Shortcuts',
'Menu:Problem:MyProblems' => 'My Problems',
'Menu:Problem:MyProblems+' => 'My Problems',
'Menu:Problem:OpenProblems' => 'All Open problems',
'Menu:Problem:OpenProblems+' => 'All Open problems',
));
//
// Class: Problem
//
Dict::Add('EN US', 'English', 'English', array(
'Class:Problem' => 'Problem',
'Class:Problem+' => '',
'Class:Problem/Attribute:status' => 'Status',
'Class:Problem/Attribute:status+' => '',
'Class:Problem/Attribute:status/Value:new' => 'New',
'Class:Problem/Attribute:status/Value:new+' => '',
'Class:Problem/Attribute:status/Value:assigned' => 'Assigned',
'Class:Problem/Attribute:status/Value:assigned+' => '',
'Class:Problem/Attribute:status/Value:resolved' => 'Resolved',
'Class:Problem/Attribute:status/Value:resolved+' => '',
'Class:Problem/Attribute:status/Value:closed' => 'Closed',
'Class:Problem/Attribute:status/Value:closed+' => '',
'Class:Problem/Attribute:org_id' => 'Customer',
'Class:Problem/Attribute:org_id+' => '',
'Class:Problem/Attribute:org_name' => 'Name',
'Class:Problem/Attribute:org_name+' => 'Common name',
'Class:Problem/Attribute:service_id' => 'Service',
'Class:Problem/Attribute:service_id+' => '',
'Class:Problem/Attribute:service_name' => 'Name',
'Class:Problem/Attribute:service_name+' => '',
'Class:Problem/Attribute:servicesubcategory_id' => 'Service Category',
'Class:Problem/Attribute:servicesubcategory_id+' => '',
'Class:Problem/Attribute:servicesubcategory_name' => 'Name',
'Class:Problem/Attribute:servicesubcategory_name+' => '',
'Class:Problem/Attribute:product' => 'Product',
'Class:Problem/Attribute:product+' => '',
'Class:Problem/Attribute:impact' => 'Impact',
'Class:Problem/Attribute:impact+' => '',
'Class:Problem/Attribute:impact/Value:1' => 'A Person',
'Class:Problem/Attribute:impact/Value:1+' => '',
'Class:Problem/Attribute:impact/Value:2' => 'A Service',
'Class:Problem/Attribute:impact/Value:2+' => '',
'Class:Problem/Attribute:impact/Value:3' => 'A Department',
'Class:Problem/Attribute:impact/Value:3+' => '',
'Class:Problem/Attribute:urgency' => 'urgency',
'Class:Problem/Attribute:urgency+' => '',
'Class:Problem/Attribute:urgency/Value:1' => 'Low',
'Class:Problem/Attribute:urgency/Value:1+' => 'Low',
'Class:Problem/Attribute:urgency/Value:2' => 'Medium',
'Class:Problem/Attribute:urgency/Value:2+' => 'Medium',
'Class:Problem/Attribute:urgency/Value:3' => 'High',
'Class:Problem/Attribute:urgency/Value:3+' => 'High',
'Class:Problem/Attribute:priority' => 'priority',
'Class:Problem/Attribute:priority+' => '',
'Class:Problem/Attribute:priority/Value:1' => 'Low',
'Class:Problem/Attribute:priority/Value:1+' => '',
'Class:Problem/Attribute:priority/Value:2' => 'Medium',
'Class:Problem/Attribute:priority/Value:2+' => '',
'Class:Problem/Attribute:priority/Value:3' => 'High',
'Class:Problem/Attribute:priority/Value:3+' => '',
'Class:Problem/Attribute:workgroup_id' => 'WorkGroup',
'Class:Problem/Attribute:workgroup_id+' => '',
'Class:Problem/Attribute:workgroup_name' => 'Name',
'Class:Problem/Attribute:workgroup_name+' => '',
'Class:Problem/Attribute:agent_id' => 'Agent',
'Class:Problem/Attribute:agent_id+' => '',
'Class:Problem/Attribute:agent_name' => 'Agent Name',
'Class:Problem/Attribute:agent_name+' => '',
'Class:Problem/Attribute:agent_email' => 'Agent Email',
'Class:Problem/Attribute:agent_email+' => '',
'Class:Problem/Attribute:related_change_id' => 'Related Change',
'Class:Problem/Attribute:related_change_id+' => '',
'Class:Problem/Attribute:related_change_ref' => 'Ref',
'Class:Problem/Attribute:related_change_ref+' => '',
'Class:Problem/Attribute:close_date' => 'Close Date',
'Class:Problem/Attribute:close_date+' => '',
'Class:Problem/Attribute:last_update' => 'Last Update',
'Class:Problem/Attribute:last_update+' => '',
'Class:Problem/Attribute:assignment_date' => 'Assignment Date',
'Class:Problem/Attribute:assignment_date+' => '',
'Class:Problem/Attribute:resolution_date' => 'Resolution Date',
'Class:Problem/Attribute:resolution_date+' => '',
'Class:Problem/Attribute:knownerrors_list' => 'Known Errors',
'Class:Problem/Attribute:knownerrors_list+' => '',
'Class:Problem/Stimulus:ev_assign' => 'Assign',
'Class:Problem/Stimulus:ev_assign+' => '',
'Class:Problem/Stimulus:ev_reassign' => 'Reaassign',
'Class:Problem/Stimulus:ev_reassign+' => '',
'Class:Problem/Stimulus:ev_resolve' => 'Resolve',
'Class:Problem/Stimulus:ev_resolve+' => '',
'Class:Problem/Stimulus:ev_close' => 'Close',
'Class:Problem/Stimulus:ev_close+' => '',
));
?>

View File

@@ -23,4 +23,213 @@
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
*/
class Problem extends Ticket
{
public static function Init()
{
$aParams = array
(
"category" => "bizmodel,searchable,problemmgmt",
"key_type" => "autoincrement",
"name_attcode" => "ref",
"state_attcode" => "status",
"reconc_keys" => array("ref"),
"db_table" => "ticket_problem",
"db_key_field" => "id",
"db_finalclass_field" => "",
"display_template" => "",
);
MetaModel::Init_Params($aParams);
MetaModel::Init_InheritAttributes();
// MetaModel::Init_InheritLifecycle();
MetaModel::Init_AddAttribute(new AttributeEnum("status", array("allowed_values"=>new ValueSetEnum('new,assigned,resolved,closed'), "sql"=>"status", "default_value"=>"new", "is_null_allowed"=>false, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalKey("org_id", array("targetclass"=>"Organization", "jointype"=>null, "allowed_values"=>null, "sql"=>"org_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("org_name", array("allowed_values"=>null, "extkey_attcode"=>"org_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalKey("service_id", array("targetclass"=>"Service", "jointype"=>null, "allowed_values"=>new ValueSetObjects('SELECT Service AS s JOIN SLA AS sla ON sla.service_id=s.id JOIN lnkContractToSLA AS ln ON ln.sla_id=sla.id JOIN CustomerContract AS cc ON ln.contract_id=cc.id WHERE cc.org_id =:this->org_id'), "sql"=>"service_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array("org_id"))));
MetaModel::Init_AddAttribute(new AttributeExternalField("service_name", array("allowed_values"=>null, "extkey_attcode"=>"service_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalKey("servicesubcategory_id", array("targetclass"=>"ServiceSubcategory", "jointype"=>null, "allowed_values"=>new ValueSetObjects('SELECT ServiceSubcategory WHERE service_id = :this->service_id'), "sql"=>"servicesubcategory_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array("service_id"))));
MetaModel::Init_AddAttribute(new AttributeExternalField("servicesubcategory_name", array("allowed_values"=>null, "extkey_attcode"=>"servicesubcategory_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("product", array("allowed_values"=>null, "sql"=>"product", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeEnum("impact", array("allowed_values"=>new ValueSetEnum('1,2,3'), "sql"=>"impact", "default_value"=>"1", "is_null_allowed"=>false, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeEnum("urgency", array("allowed_values"=>new ValueSetEnum('1,2,3'), "sql"=>"urgency", "default_value"=>"1", "is_null_allowed"=>false, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeEnum("priority", array("allowed_values"=>new ValueSetEnum('1,2,3'), "sql"=>"priority", "default_value"=>"1", "is_null_allowed"=>false, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalKey("workgroup_id", array("targetclass"=>"Team", "jointype"=>null, "allowed_values"=>new ValueSetObjects('SELECT Team AS t JOIN CustomerContract AS cc ON cc.support_team_id=t.id JOIN lnkContractToSLA AS ln ON ln.contract_id=cc.id JOIN SLA AS sla ON ln.sla_id=sla.id WHERE sla.service_id = :this->service_id AND cc.org_id = :this->org_id'), "sql"=>"workgroup_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array("org_id","service_id"))));
MetaModel::Init_AddAttribute(new AttributeExternalField("workgroup_name", array("allowed_values"=>null, "extkey_attcode"=>"workgroup_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalKey("agent_id", array("targetclass"=>"Person", "jointype"=>null, "allowed_values"=>new ValueSetObjects('SELECT Person AS p JOIN lnkTeamToContact AS l ON l.contact_id=p.id JOIN Team AS t ON l.team_id=t.id WHERE t.id = :this->workgroup_id'), "sql"=>"agent_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array("workgroup_id"))));
MetaModel::Init_AddAttribute(new AttributeExternalField("agent_name", array("allowed_values"=>null, "extkey_attcode"=>"agent_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("agent_email", array("allowed_values"=>null, "extkey_attcode"=>"agent_id", "target_attcode"=>"email", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalKey("related_change_id", array("targetclass"=>"Change", "jointype"=>null, "allowed_values"=>null, "sql"=>"related_change_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("related_change_ref", array("allowed_values"=>null, "extkey_attcode"=>"related_change_id", "target_attcode"=>"ref", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeDateTime("close_date", array("allowed_values"=>null, "sql"=>"close_date", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeDateTime("last_update", array("allowed_values"=>null, "sql"=>"last_update", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeDateTime("assignment_date", array("allowed_values"=>null, "sql"=>"assignment_date", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeDateTime("resolution_date", array("allowed_values"=>null, "sql"=>"resolution_date", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeLinkedSet("knownerrors_list", array("linked_class"=>"KnownError", "ext_key_to_me"=>"problem_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
MetaModel::Init_SetZListItems('details', array('ref', 'title', 'org_id', 'description', 'ticket_log', 'start_date','knownerrors_list', 'document_list', 'ci_list', 'contact_list','incident_list', 'status', 'service_id', 'servicesubcategory_id','product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_change_id', 'close_date', 'last_update', 'assignment_date'));
MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_change_id', 'close_date'));
MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_change_id', 'close_date'));
MetaModel::Init_SetZListItems('list', array('ref', 'title', 'org_id', 'start_date', 'status', 'service_id', 'priority'));
// Lifecycle
MetaModel::Init_DefineState(
"new",
array(
"attribute_inherit" => null,
"attribute_list" => array(
'ref' => OPT_ATT_READONLY,
'ticket_log' => OPT_ATT_HIDDEN,
'related_change_id' => OPT_ATT_HIDDEN,
'description' => OPT_ATT_MUSTCHANGE,
'contact_list' => OPT_ATT_READONLY,
'start_date' => OPT_ATT_READONLY,
'last_update' => OPT_ATT_READONLY,
'assignment_date' => OPT_ATT_HIDDEN,
'resolution_date' => OPT_ATT_HIDDEN,
'close_date' => OPT_ATT_HIDDEN,
'org_id' => OPT_ATT_MUSTCHANGE,
'service_id' => OPT_ATT_MUSTCHANGE,
'servicesubcategory_id' => OPT_ATT_MUSTCHANGE,
'product' => OPT_ATT_MUSTPROMPT,
'impact' => OPT_ATT_MUSTCHANGE,
'urgency' => OPT_ATT_MUSTCHANGE,
'priority' => OPT_ATT_READONLY,
'workgroup_id' => OPT_ATT_MUSTCHANGE,
'agent_id' => OPT_ATT_HIDDEN,
'agent_email' => OPT_ATT_HIDDEN,
),
)
);
MetaModel::Init_DefineState(
"assigned",
array(
"attribute_inherit" => 'new',
"attribute_list" => array(
'title' => OPT_ATT_READONLY,
'org_id' => OPT_ATT_READONLY,
'ticket_log' => OPT_ATT_NORMAL,
'description' => OPT_ATT_READONLY,
'agent_id' => OPT_ATT_MUSTPROMPT | OPT_ATT_MANDATORY,
'agent_email' => OPT_ATT_READONLY,
'workgroup_id' => OPT_ATT_MUSTPROMPT | OPT_ATT_MANDATORY,
// 'related_change_id' => OPT_ATT_NORMAL,
),
)
);
MetaModel::Init_DefineState(
"resolved",
array(
"attribute_inherit" => 'assigned',
"attribute_list" => array(
'service_id' => OPT_ATT_READONLY,
'servicesubcategory_id' => OPT_ATT_READONLY,
'product' => OPT_ATT_READONLY,
'impact' => OPT_ATT_READONLY,
'workgroup_id' => OPT_ATT_READONLY,
'agent_id' => OPT_ATT_READONLY,
'urgency' => OPT_ATT_READONLY,
),
)
);
MetaModel::Init_DefineState(
"closed",
array(
"attribute_inherit" => 'resolved',
"attribute_list" => array(
'ticket_log' => OPT_ATT_READONLY,
'close_date' => OPT_ATT_READONLY,
),
)
);
MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_assign", array()));
MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_reassign", array()));
MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_resolve", array()));
MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_close", array()));
MetaModel::Init_DefineTransition("new", "ev_assign", array("target_state"=>"assigned", "actions"=>array('SetAssignedDate'), "user_restriction"=>null));
MetaModel::Init_DefineTransition("assigned", "ev_reassign", array("target_state"=>"assigned", "actions"=>array(), "user_restriction"=>null));
MetaModel::Init_DefineTransition("assigned", "ev_resolve", array("target_state"=>"resolved", "actions"=>array('SetResolveDate'), "user_restriction"=>null));
MetaModel::Init_DefineTransition("resolved", "ev_reassign", array("target_state"=>"assigned", "actions"=>array(), "user_restriction"=>null));
MetaModel::Init_DefineTransition("resolved", "ev_close", array("target_state"=>"closed", "actions"=>array('SetClosureDate'), "user_restriction"=>null));
}
// Lifecycle actions
//
public function SetAssignedDate($sStimulusCode)
{
$this->Set('assignment_date', time());
return true;
}
public function SetResolveDate($sStimulusCode)
{
$this->Set('resolution_date', time());
return true;
}
public function SetClosureDate($sStimulusCode)
{
$this->Set('close_date', time());
return true;
}
/** Compute the priority of the ticket based on its impact and urgency
* @return integer The priority of the ticket 1(high) .. 3(low)
*/
public function ComputePriority()
{
// priority[impact][urgency]
$aPriorities = array(
// single person
1 => array(
1 => 1,
2 => 1,
3 => 2,
),
// a group
2 => array(
1 => 1,
2 => 2,
3 => 3,
),
// a departement!
3 => array(
1 => 2,
2 => 3,
3 => 3,
),
);
$iPriority = $aPriorities[(int)$this->Get('impact')][(int)$this->Get('urgency')];
return $iPriority;
}
public function ComputeValues()
{
// Compute the priority of the ticket
$this->Set('priority', $this->ComputePriority());
$iKey = $this->GetKey();
if ($iKey < 0)
{
// Object not yet in the Database
$iKey = MetaModel::GetNextKey(get_class($this));
}
$sName = sprintf('P-%06d', $iKey);
$this->Set('ref', $sName);
}
}
$iIndex = ApplicationMenu::GetMenuIndexById('ProblemManagement');
new TemplateMenuNode('Problem:Overview', '../modules/itop-problem-mgmt-1.0.0/overview.html', $iIndex /* oParent */, 0 /* fRank */);
new NewObjectMenuNode('NewProblem', 'Problem', $iIndex, 1 /* fRank */);
new SearchMenuNode('SearchProblems', 'Problem', $iIndex, 2 /* fRank */);
$oShortcutNode = new TemplateMenuNode('Problem:Shortcuts', '', $iIndex, 4 /* fRank */);
new OQLMenuNode('Problem:MyProblems', 'SELECT Problem WHERE agent_id = :current_contact_id', $oShortcutNode->GetIndex(), 1 /* fRank */);
new OQLMenuNode('Problem:OpenProblems', 'SELECT Problem WHERE status IN ("new", "assigned", "resolved")', $oShortcutNode->GetIndex(), 3 /* fRank */);
?>

View File

@@ -56,23 +56,32 @@ Dict::Add('EN US', 'English', 'English', array(
// Class: UserRequest
//
Dict::Add('EN US', 'English', 'English', array(
'Class:UserRequest' => 'User Request',
'Class:UserRequest+' => '',
'Class:UserRequest/Attribute:freeze_reason' => 'Pending reason',
'Class:UserRequest/Attribute:freeze_reason+' => '',
'Class:UserRequest/Stimulus:ev_assign' => 'Assign',
'Class:UserRequest/Stimulus:ev_assign+' => '',
'Class:UserRequest/Stimulus:ev_freeze' => 'Mark as pending',
'Class:UserRequest/Stimulus:ev_freeze+' => '',
'Class:UserRequest/Stimulus:ev_reassign' => 'Reassign',
'Class:UserRequest/Stimulus:ev_reassign+' => '',
'Class:UserRequest/Stimulus:ev_timeout' => 'ev_timeout',
'Class:UserRequest/Stimulus:ev_timeout+' => '',
'Class:UserRequest/Stimulus:ev_resolve' => 'Mark as resolved',
'Class:UserRequest/Stimulus:ev_resolve+' => '',
'Class:UserRequest/Stimulus:ev_close' => 'Close',
'Class:UserRequest/Stimulus:ev_close+' => '',
));
Dict::Add('EN US', 'English', 'English', array(
'Class:UserRequest' => 'User Request',
'Class:UserRequest+' => '',
'Class:UserRequest/Attribute:request_type' => 'Request Type',
'Class:UserRequest/Attribute:request_type+' => '',
'Class:UserRequest/Attribute:request_type/Value:information' => 'Information',
'Class:UserRequest/Attribute:request_type/Value:information+' => 'Information',
'Class:UserRequest/Attribute:request_type/Value:issue' => 'Issue',
'Class:UserRequest/Attribute:request_type/Value:issue+' => 'Issue',
'Class:UserRequest/Attribute:request_type/Value:service request' => 'Service Request',
'Class:UserRequest/Attribute:request_type/Value:service request+' => 'Service Request',
'Class:UserRequest/Attribute:freeze_reason' => 'Pending reason',
'Class:UserRequest/Attribute:freeze_reason+' => '',
'Class:UserRequest/Stimulus:ev_assign' => 'Assign',
'Class:UserRequest/Stimulus:ev_assign+' => '',
'Class:UserRequest/Stimulus:ev_reassign' => 'Reassign',
'Class:UserRequest/Stimulus:ev_reassign+' => '',
'Class:UserRequest/Stimulus:ev_timeout' => 'ev_timeout',
'Class:UserRequest/Stimulus:ev_timeout+' => '',
'Class:UserRequest/Stimulus:ev_resolve' => 'Mark as resolved',
'Class:UserRequest/Stimulus:ev_resolve+' => '',
'Class:UserRequest/Stimulus:ev_close' => 'Close',
'Class:UserRequest/Stimulus:ev_close+' => '',
'Class:UserRequest/Stimulus:ev_freeze' => 'Mark as pending',
'Class:UserRequest/Stimulus:ev_freeze+' => '',
));
?>

View File

@@ -43,22 +43,25 @@ class UserRequest extends ResponseTicket
MetaModel::Init_InheritAttributes();
MetaModel::Init_InheritLifecycle();
MetaModel::Init_AddAttribute(new AttributeEnum("request_type", array("allowed_values"=>new ValueSetEnum('service request,issue,information'), "sql"=>"request_type", "default_value"=>"service request", "is_null_allowed"=>false, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("freeze_reason", array("allowed_values"=>null, "sql"=>"freeze_reason", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_SetZListItems('details', array('ref', 'title', 'org_id', 'description', 'ticket_log', 'start_date', 'tto_escalation_deadline', 'ttr_escalation_deadline', 'document_list', 'ci_list', 'contact_list', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'last_update', 'assignment_date', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment', 'freeze_reason'));
MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'last_update', 'assignment_date', 'tto_escalation_deadline', 'ttr_escalation_deadline', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment'));
MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'last_update', 'assignment_date', 'tto_escalation_deadline', 'ttr_escalation_deadline', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment'));
MetaModel::Init_SetZListItems('details', array('ref', 'title', 'org_id', 'description', 'request_type','ticket_log', 'start_date', 'tto_escalation_deadline', 'ttr_escalation_deadline', 'document_list', 'ci_list', 'contact_list','incident_list', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'last_update', 'assignment_date', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment', 'freeze_reason'));
MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'org_id', 'start_date', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment'));
MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'org_id', 'request_type','start_date', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment'));
MetaModel::Init_SetZListItems('list', array('ref', 'title', 'org_id', 'start_date', 'status', 'service_id', 'priority', 'workgroup_id', 'agent_id'));
MetaModel::Init_OverloadStateAttribute('frozen', 'freeze_reason', OPT_ATT_MANDATORY);
// The freeze reason remains hidden in all other states
MetaModel::Init_OverloadStateAttribute('new', 'request_type', OPT_ATT_MANDATORY);
MetaModel::Init_OverloadStateAttribute('new', 'freeze_reason', OPT_ATT_HIDDEN);
MetaModel::Init_OverloadStateAttribute('assigned', 'freeze_reason', OPT_ATT_HIDDEN);
MetaModel::Init_OverloadStateAttribute('frozen', 'freeze_reason', OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT);
MetaModel::Init_OverloadStateAttribute('escalated_tto', 'freeze_reason', OPT_ATT_HIDDEN);
MetaModel::Init_OverloadStateAttribute('escalated_ttr', 'freeze_reason', OPT_ATT_HIDDEN);
MetaModel::Init_OverloadStateAttribute('resolved', 'freeze_reason', OPT_ATT_HIDDEN);
MetaModel::Init_OverloadStateAttribute('closed', 'request_type', OPT_ATT_READONLY);
MetaModel::Init_OverloadStateAttribute('closed', 'freeze_reason', OPT_ATT_HIDDEN);
MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_freeze", array()));

View File

@@ -121,7 +121,7 @@ Dict::Add('EN US', 'English', 'English', array(
'Class:ProviderContract/Attribute:provider_name+' => '',
'Class:ProviderContract/Attribute:sla' => 'SLA',
'Class:ProviderContract/Attribute:sla+' => 'Service Level Agreement',
'Class:ProviderContract/Attribute:coverage' => 'Coverage',
'Class:ProviderContract/Attribute:coverage' => 'Service hours',
'Class:ProviderContract/Attribute:coverage+' => '',
));
@@ -148,7 +148,30 @@ Dict::Add('EN US', 'English', 'English', array(
'Class:CustomerContract/Attribute:provider_list+' => '',
'Class:CustomerContract/Attribute:sla_list' => 'SLAs',
'Class:CustomerContract/Attribute:sla_list+' => 'List of SLA related to the contract',
'Class:CustomerContract/Attribute:provider_list' => 'Underpinning Contracts',
'Class:CustomerContract/Attribute:sla_list+' => '',
));
//
// Class: lnkCustomerContractToProviderContract
//
Dict::Add('EN US', 'English', 'English', array(
'Class:lnkCustomerContractToProviderContract' => 'lnkCustomerContractToProviderContract',
'Class:lnkCustomerContractToProviderContract+' => '',
'Class:lnkCustomerContractToProviderContract/Attribute:customer_contract_id' => 'Customer Contract',
'Class:lnkCustomerContractToProviderContract/Attribute:customer_contract_id+' => '',
'Class:lnkCustomerContractToProviderContract/Attribute:customer_contract_name' => 'Name',
'Class:lnkCustomerContractToProviderContract/Attribute:customer_contract_name+' => '',
'Class:lnkCustomerContractToProviderContract/Attribute:provider_contract_id' => 'Provider Contract',
'Class:lnkCustomerContractToProviderContract/Attribute:provider_contract_id+' => '',
'Class:lnkCustomerContractToProviderContract/Attribute:provider_contract_name' => 'Name',
'Class:lnkCustomerContractToProviderContract/Attribute:provider_contract_name+' => '',
'Class:lnkCustomerContractToProviderContract/Attribute:provider_sla' => 'Provider SLA',
'Class:lnkCustomerContractToProviderContract/Attribute:provider_sla+' => 'Service Level Agreement',
'Class:lnkCustomerContractToProviderContract/Attribute:provider_coverage' => 'Service hours',
'Class:lnkCustomerContractToProviderContract/Attribute:provider_coverage+' => '',
));
//
// Class: lnkContractToSLA
@@ -165,7 +188,7 @@ Dict::Add('EN US', 'English', 'English', array(
'Class:lnkContractToSLA/Attribute:sla_id+' => '',
'Class:lnkContractToSLA/Attribute:sla_name' => 'SLA',
'Class:lnkContractToSLA/Attribute:sla_name+' => '',
'Class:lnkContractToSLA/Attribute:coverage' => 'Coverage',
'Class:lnkContractToSLA/Attribute:coverage' => 'Service Hours',
'Class:lnkContractToSLA/Attribute:coverage+' => '',
));
@@ -267,6 +290,8 @@ Dict::Add('EN US', 'English', 'English', array(
'Class:Service/Attribute:document_list+' => 'Documents attached to the service',
'Class:Service/Attribute:contact_list' => 'Contacts',
'Class:Service/Attribute:contact_list+' => 'Contacts having a role for this service',
'Class:Service/Tab:Related_Contracts' => 'Related Contracts',
'Class:Service/Tab:Related_Contracts+' => 'Contracts signed for this service',
));
//

View File

@@ -73,7 +73,7 @@ class ProviderContract extends Contract
"key_type" => "autoincrement",
"name_attcode" => "name",
"state_attcode" => "",
"reconc_keys" => array("name"),
"reconc_keys" => array("name","provider_id"),
"db_table" => "providercontract",
"db_key_field" => "id",
"db_finalclass_field" => "",
@@ -104,7 +104,7 @@ class CustomerContract extends Contract
"key_type" => "autoincrement",
"name_attcode" => "name",
"state_attcode" => "",
"reconc_keys" => array("name"),
"reconc_keys" => array("name","org_id","provider_id"),
"db_table" => "customercontract",
"db_key_field" => "id",
"db_finalclass_field" => "",
@@ -120,13 +120,47 @@ class CustomerContract extends Contract
MetaModel::Init_AddAttribute(new AttributeExternalKey("support_team_id", array("targetclass"=>"Team", "jointype"=>null, "allowed_values"=>new ValueSetObjects('SELECT Team WHERE Team.org_id = :this->provider_id'), "sql"=>"support_team_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array('provider_id'))));
MetaModel::Init_AddAttribute(new AttributeExternalField("support_team_name", array("allowed_values"=>null, "extkey_attcode"=>"support_team_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("sla_list", array("linked_class"=>"lnkContractToSLA", "ext_key_to_me"=>"contract_id", "ext_key_to_remote"=>"sla_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("provider_list", array("linked_class"=>"lnkCustomerContractToProviderContract", "ext_key_to_me"=>"customer_contract_id", "ext_key_to_remote"=>"provider_contract_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
MetaModel::Init_SetZListItems('details', array('name', 'org_id', 'description', 'start_date', 'end_date', 'cost', 'cost_currency', 'cost_unit', 'billing_frequency', 'contact_list', 'document_list', 'ci_list', 'provider_id', 'support_team_id', 'sla_list'));
MetaModel::Init_SetZListItems('details', array('name', 'org_id', 'description', 'start_date', 'end_date', 'cost', 'cost_currency', 'cost_unit', 'billing_frequency', 'contact_list', 'document_list', 'ci_list', 'provider_list','provider_id', 'support_team_id', 'sla_list'));
MetaModel::Init_SetZListItems('advanced_search', array('name', 'description', 'start_date', 'end_date', 'cost', 'cost_currency', 'cost_unit', 'billing_frequency', 'org_id', 'support_team_id'));
MetaModel::Init_SetZListItems('standard_search', array('name', 'description', 'org_id', 'start_date', 'end_date', 'cost', 'cost_currency', 'cost_unit', 'billing_frequency', 'provider_id', 'support_team_id'));
MetaModel::Init_SetZListItems('list', array('name', 'org_id', 'start_date', 'end_date', 'provider_id', 'support_team_id'));
}
}
class lnkCustomerContractToProviderContract extends cmdbAbstractObject
{
public static function Init()
{
$aParams = array
(
"category" => "bizmodel,searchable,servicemgmt",
"key_type" => "autoincrement",
"name_attcode" => "customer_contract_id",
"state_attcode" => "",
"reconc_keys" => array("customer_contract_id","provider_contract_id"),
"db_table" => "lnkcustomercontracttoprovider",
"db_key_field" => "id",
"db_finalclass_field" => "",
"display_template" => "",
);
MetaModel::Init_Params($aParams);
MetaModel::Init_InheritAttributes();
MetaModel::Init_AddAttribute(new AttributeExternalKey("customer_contract_id", array("targetclass"=>"CustomerContract", "jointype"=>null, "allowed_values"=>null, "sql"=>"customer_contract_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("customer_contract_name", array("allowed_values"=>null, "extkey_attcode"=>"customer_contract_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalKey("provider_contract_id", array("targetclass"=>"ProviderContract", "jointype"=>null, "allowed_values"=>null, "sql"=>"provider_contract_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("provider_contract_name", array("allowed_values"=>null, "extkey_attcode"=>"provider_contract_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("provider_sla", array("allowed_values"=>null, "extkey_attcode"=>"provider_contract_id", "target_attcode"=>"sla", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("provider_coverage", array("allowed_values"=>null, "extkey_attcode"=>"provider_contract_id", "target_attcode"=>"coverage", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_SetZListItems('details', array('customer_contract_id', 'provider_contract_id','provider_sla','provider_coverage'));
MetaModel::Init_SetZListItems('advanced_search', array('customer_contract_id', 'provider_contract_id'));
MetaModel::Init_SetZListItems('standard_search', array('customer_contract_id', 'provider_contract_id'));
MetaModel::Init_SetZListItems('list', array('customer_contract_id', 'provider_contract_id','provider_sla','provider_coverage'));
}
}
class lnkContractToSLA extends cmdbAbstractObject
{
@@ -138,7 +172,7 @@ class lnkContractToSLA extends cmdbAbstractObject
"key_type" => "autoincrement",
"name_attcode" => "contract_id",
"state_attcode" => "",
"reconc_keys" => array(),
"reconc_keys" => array("contract_id","sla_id"),
"db_table" => "lnkcontracttosla",
"db_key_field" => "id",
"db_finalclass_field" => "",
@@ -151,12 +185,13 @@ class lnkContractToSLA extends cmdbAbstractObject
MetaModel::Init_AddAttribute(new AttributeExternalField("contract_name", array("allowed_values"=>null, "extkey_attcode"=>"contract_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalKey("sla_id", array("targetclass"=>"SLA", "jointype"=>null, "allowed_values"=>null, "sql"=>"sla_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("sla_name", array("allowed_values"=>null, "extkey_attcode"=>"sla_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("sla_service_name", array("allowed_values"=>null, "extkey_attcode"=>"sla_id", "target_attcode"=>"service_name", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("coverage", array("allowed_values"=>null, "sql"=>"coverage", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_SetZListItems('details', array('contract_id', 'sla_id', 'coverage'));
MetaModel::Init_SetZListItems('details', array('contract_id', 'sla_id','sla_service_name', 'coverage'));
MetaModel::Init_SetZListItems('advanced_search', array('contract_id', 'sla_id', 'coverage'));
MetaModel::Init_SetZListItems('standard_search', array('contract_id', 'sla_id', 'coverage'));
MetaModel::Init_SetZListItems('list', array('contract_id', 'sla_id', 'coverage'));
MetaModel::Init_SetZListItems('list', array('contract_id', 'sla_id', 'sla_service_name','coverage'));
}
}
class lnkContractToDoc extends cmdbAbstractObject
@@ -170,7 +205,7 @@ class lnkContractToDoc extends cmdbAbstractObject
"key_type" => "autoincrement",
"name_attcode" => "contract_id",
"state_attcode" => "",
"reconc_keys" => array(),
"reconc_keys" => array("contract_id","document_id"),
"db_table" => "lnkcontracttodoc",
"db_key_field" => "id",
"db_finalclass_field" => "",
@@ -203,7 +238,7 @@ class lnkContractToContact extends cmdbAbstractObject
"key_type" => "autoincrement",
"name_attcode" => "contract_id",
"state_attcode" => "",
"reconc_keys" => array(),
"reconc_keys" => array("contract_id","contact_id"),
"db_table" => "lnkcontracttocontact",
"db_key_field" => "id",
"db_finalclass_field" => "",
@@ -236,7 +271,7 @@ class lnkContractToCI extends cmdbAbstractObject
"key_type" => "autoincrement",
"name_attcode" => "contract_id",
"state_attcode" => "",
"reconc_keys" => array(),
"reconc_keys" => array("contract_id","ci_id"),
"db_table" => "lnkcontracttoci",
"db_key_field" => "id",
"db_finalclass_field" => "",
@@ -268,7 +303,7 @@ class Service extends cmdbAbstractObject
"key_type" => "autoincrement",
"name_attcode" => "name",
"state_attcode" => "",
"reconc_keys" => array("name"),
"reconc_keys" => array("name","org_id"),
"db_table" => "service",
"db_key_field" => "id",
"db_finalclass_field" => "",
@@ -292,6 +327,22 @@ class Service extends cmdbAbstractObject
MetaModel::Init_SetZListItems('advanced_search', array('name', 'description', 'org_id', 'type', 'status'));
MetaModel::Init_SetZListItems('standard_search', array('name', 'description', 'org_id', 'type', 'status'));
MetaModel::Init_SetZListItems('list', array('name', 'description', 'org_id', 'type', 'status'));
}
function DisplayBareRelations(WebPage $oPage, $bEditMode = false)
{
parent::DisplayBareRelations($oPage, $bEditMode);
$aExtraParam = array ('menu' => false);
$ServiceID=$this->GetKey();
if (!$bEditMode)
{
$oPage->SetCurrentTab(Dict::S('Class:Service/Tab:Related_Contracts'));
$oCustomerContracts=new CMDBObjectSet(DBObjectSearch::FromOQL("SELECT CustomerContract AS cc JOIN lnkContractToSLA AS ln ON ln.contract_id=cc.id JOIN SLA AS sla ON ln.sla_id=sla.id WHERE sla.service_id=$ServiceID"));
self::DisplaySet($oPage,$oCustomerContracts,$aExtraParam);
}
}
}
class ServiceSubcategory extends cmdbAbstractObject
@@ -305,7 +356,7 @@ class ServiceSubcategory extends cmdbAbstractObject
"key_type" => "autoincrement",
"name_attcode" => "name",
"state_attcode" => "",
"reconc_keys" => array("name"),
"reconc_keys" => array("name","service_id"),
"db_table" => "servicesubcategory",
"db_key_field" => "id",
"db_finalclass_field" => "",
@@ -336,7 +387,7 @@ class SLA extends cmdbAbstractObject
"key_type" => "autoincrement",
"name_attcode" => "name",
"state_attcode" => "",
"reconc_keys" => array("name"),
"reconc_keys" => array("name","service_id"),
"db_table" => "sla",
"db_key_field" => "id",
"db_finalclass_field" => "",
@@ -400,7 +451,7 @@ class lnkSLTToSLA extends cmdbAbstractObject
"key_type" => "autoincrement",
"name_attcode" => "sla_id",
"state_attcode" => "",
"reconc_keys" => array(),
"reconc_keys" => array("sla_id","slt_id"),
"db_table" => "lnkslttosla",
"db_key_field" => "id",
"db_finalclass_field" => "",
@@ -435,7 +486,7 @@ class lnkServiceToDoc extends cmdbAbstractObject
"key_type" => "autoincrement",
"name_attcode" => "service_id",
"state_attcode" => "",
"reconc_keys" => array(),
"reconc_keys" => array("service_id","document_id"),
"db_table" => "lnkservicetodoc",
"db_key_field" => "id",
"db_finalclass_field" => "",
@@ -468,7 +519,7 @@ class lnkServiceToContact extends cmdbAbstractObject
"key_type" => "autoincrement",
"name_attcode" => "service_id",
"state_attcode" => "",
"reconc_keys" => array(),
"reconc_keys" => array("service_id","contact_id"),
"db_table" => "lnkservicetocontact",
"db_key_field" => "id",
"db_finalclass_field" => "",
@@ -501,7 +552,7 @@ class lnkServiceToCI extends cmdbAbstractObject
"key_type" => "autoincrement",
"name_attcode" => "service_id",
"state_attcode" => "",
"reconc_keys" => array(),
"reconc_keys" => array("service_id","ci_id"),
"db_table" => "lnkservicetoci",
"db_key_field" => "id",
"db_finalclass_field" => "",

View File

@@ -38,26 +38,35 @@
// Class: Ticket
//
Dict::Add('EN US', 'English', 'English', array(
'Class:Ticket' => 'Ticket',
'Class:Ticket+' => '',
'Class:Ticket/Attribute:ref' => 'Ref',
'Class:Ticket/Attribute:ref+' => '',
'Class:Ticket/Attribute:title' => 'Title',
'Class:Ticket/Attribute:title+' => '',
'Class:Ticket/Attribute:ticket_log' => 'Log',
'Class:Ticket/Attribute:ticket_log+' => '',
'Class:Ticket/Attribute:start_date' => 'Started',
'Class:Ticket/Attribute:start_date+' => '',
'Class:Ticket/Attribute:document_list' => 'Documents',
'Class:Ticket/Attribute:document_list+' => 'Documents related to the ticket',
'Class:Ticket/Attribute:ci_list' => 'CIs',
'Class:Ticket/Attribute:ci_list+' => 'CIs concerned by the incident',
'Class:Ticket/Attribute:contact_list' => 'Contacts',
'Class:Ticket/Attribute:contact_list+' => 'Team and persons involved',
'Class:Ticket/Attribute:finalclass' => 'Type',
'Class:Ticket/Attribute:finalclass+' => '',
));
//
// Class: Ticket
//
Dict::Add('EN US', 'English', 'English', array(
'Class:Ticket' => 'Ticket',
'Class:Ticket+' => '',
'Class:Ticket/Attribute:ref' => 'Ref',
'Class:Ticket/Attribute:ref+' => '',
'Class:Ticket/Attribute:title' => 'Title',
'Class:Ticket/Attribute:title+' => '',
'Class:Ticket/Attribute:description' => 'description',
'Class:Ticket/Attribute:description+' => '',
'Class:Ticket/Attribute:ticket_log' => 'Log',
'Class:Ticket/Attribute:ticket_log+' => '',
'Class:Ticket/Attribute:start_date' => 'Started',
'Class:Ticket/Attribute:start_date+' => '',
'Class:Ticket/Attribute:document_list' => 'Documents',
'Class:Ticket/Attribute:document_list+' => 'Documents related to the ticket',
'Class:Ticket/Attribute:ci_list' => 'CIs',
'Class:Ticket/Attribute:ci_list+' => 'CIs concerned by the incident',
'Class:Ticket/Attribute:contact_list' => 'Contacts',
'Class:Ticket/Attribute:contact_list+' => 'Team and persons involved',
'Class:Ticket/Attribute:incident_list' => 'Related Incidents',
'Class:Ticket/Attribute:incident_list+' => '',
'Class:Ticket/Attribute:finalclass' => 'Type',
'Class:Ticket/Attribute:finalclass+' => '',
));
//
// Class: lnkTicketToDoc
@@ -101,141 +110,158 @@ Dict::Add('EN US', 'English', 'English', array(
// Class: lnkTicketToCI
//
Dict::Add('EN US', 'English', 'English', array(
'Class:lnkTicketToCI' => 'Ticket/CI',
'Class:lnkTicketToCI+' => '',
'Class:lnkTicketToCI/Attribute:ticket_id' => 'Ticket',
'Class:lnkTicketToCI/Attribute:ticket_id+' => '',
'Class:lnkTicketToCI/Attribute:ticket_ref' => 'Ticket #',
'Class:lnkTicketToCI/Attribute:ticket_ref+' => '',
'Class:lnkTicketToCI/Attribute:ci_id' => 'CI',
'Class:lnkTicketToCI/Attribute:ci_id+' => '',
'Class:lnkTicketToCI/Attribute:ci_name' => 'CI',
'Class:lnkTicketToCI/Attribute:ci_name+' => '',
'Class:lnkTicketToCI/Attribute:ci_status' => 'CI status',
'Class:lnkTicketToCI/Attribute:ci_status+' => '',
));
Dict::Add('EN US', 'English', 'English', array(
'Class:lnkTicketToCI' => 'Ticket/CI',
'Class:lnkTicketToCI+' => '',
'Class:lnkTicketToCI/Attribute:ticket_id' => 'Ticket',
'Class:lnkTicketToCI/Attribute:ticket_id+' => '',
'Class:lnkTicketToCI/Attribute:ticket_ref' => 'Ticket #',
'Class:lnkTicketToCI/Attribute:ticket_ref+' => '',
'Class:lnkTicketToCI/Attribute:ci_id' => 'CI',
'Class:lnkTicketToCI/Attribute:ci_id+' => '',
'Class:lnkTicketToCI/Attribute:ci_name' => 'CI',
'Class:lnkTicketToCI/Attribute:ci_name+' => '',
'Class:lnkTicketToCI/Attribute:ci_status' => 'CI status',
'Class:lnkTicketToCI/Attribute:ci_status+' => '',
'Class:lnkTicketToCI/Attribute:impact' => 'Impact',
'Class:lnkTicketToCI/Attribute:impact+' => '',
));
//
// Class: ResponseTicket
//
Dict::Add('EN US', 'English', 'English', array(
'Class:ResponseTicket' => 'ResponseTicket',
'Class:ResponseTicket+' => '',
'Class:ResponseTicket/Attribute:status' => 'Status',
'Class:ResponseTicket/Attribute:status+' => '',
'Class:ResponseTicket/Attribute:status/Value:new' => 'New',
'Class:ResponseTicket/Attribute:status/Value:new+' => 'newly opened',
'Class:ResponseTicket/Attribute:status/Value:frozen' => 'Pending',
'Class:ResponseTicket/Attribute:status/Value:frozen+' => '',
'Class:ResponseTicket/Attribute:status/Value:escalated_tto' => 'Escalation/TTO',
'Class:ResponseTicket/Attribute:status/Value:escalated_tto+' => '',
'Class:ResponseTicket/Attribute:status/Value:assigned' => 'Assigned',
'Class:ResponseTicket/Attribute:status/Value:assigned+' => '',
'Class:ResponseTicket/Attribute:status/Value:escalated_ttr' => 'Escalation/TTR',
'Class:ResponseTicket/Attribute:status/Value:escalated_ttr+' => '',
'Class:ResponseTicket/Attribute:status/Value:resolved' => 'Resolved',
'Class:ResponseTicket/Attribute:status/Value:resolved+' => '',
'Class:ResponseTicket/Attribute:status/Value:closed' => 'Closed',
'Class:ResponseTicket/Attribute:status/Value:closed+' => '',
'Class:ResponseTicket/Attribute:caller_id' => 'Caller',
'Class:ResponseTicket/Attribute:caller_id+' => '',
'Class:ResponseTicket/Attribute:workgroup_name' => 'Workgroup',
'Class:ResponseTicket/Attribute:workgroup_name+' => '',
'Class:ResponseTicket/Attribute:org_id' => 'Customer',
'Class:ResponseTicket/Attribute:org_id+' => '',
'Class:ResponseTicket/Attribute:org_name' => 'Customer',
'Class:ResponseTicket/Attribute:org_name+' => '',
'Class:ResponseTicket/Attribute:service_id' => 'Service',
'Class:ResponseTicket/Attribute:service_id+' => '',
'Class:ResponseTicket/Attribute:servicesubcategory_id' => 'Service element',
'Class:ResponseTicket/Attribute:servicesubcategory_id+' => '',
'Class:ResponseTicket/Attribute:product' => 'Product',
'Class:ResponseTicket/Attribute:product+' => '',
'Class:ResponseTicket/Attribute:impact' => 'Impact',
'Class:ResponseTicket/Attribute:impact+' => '',
'Class:ResponseTicket/Attribute:impact/Value:1' => 'A person',
'Class:ResponseTicket/Attribute:impact/Value:1+' => '',
'Class:ResponseTicket/Attribute:impact/Value:2' => 'A service',
'Class:ResponseTicket/Attribute:impact/Value:2+' => '',
'Class:ResponseTicket/Attribute:impact/Value:3' => 'A department',
'Class:ResponseTicket/Attribute:impact/Value:3+' => '',
'Class:ResponseTicket/Attribute:urgency' => 'Urgency',
'Class:ResponseTicket/Attribute:urgency+' => '',
'Class:ResponseTicket/Attribute:urgency/Value:1' => 'Low',
'Class:ResponseTicket/Attribute:urgency/Value:1+' => '',
'Class:ResponseTicket/Attribute:urgency/Value:2' => 'Medium',
'Class:ResponseTicket/Attribute:urgency/Value:2+' => '',
'Class:ResponseTicket/Attribute:urgency/Value:3' => 'High',
'Class:ResponseTicket/Attribute:urgency/Value:3+' => '',
'Class:ResponseTicket/Attribute:priority' => 'Priority',
'Class:ResponseTicket/Attribute:priority+' => '',
'Class:ResponseTicket/Attribute:priority/Value:1' => 'Low',
'Class:ResponseTicket/Attribute:priority/Value:1+' => '',
'Class:ResponseTicket/Attribute:priority/Value:2' => 'Medium',
'Class:ResponseTicket/Attribute:priority/Value:2+' => '',
'Class:ResponseTicket/Attribute:priority/Value:3' => 'High',
'Class:ResponseTicket/Attribute:priority/Value:3+' => '',
'Class:ResponseTicket/Attribute:workgroup_id' => 'Workgroup',
'Class:ResponseTicket/Attribute:workgroup_id+' => '',
'Class:ResponseTicket/Attribute:agent_id' => 'Agent',
'Class:ResponseTicket/Attribute:agent_id+' => '',
'Class:ResponseTicket/Attribute:agent_name' => 'Agent',
'Class:ResponseTicket/Attribute:agent_name+' => '',
'Class:ResponseTicket/Attribute:agent_email' => 'Agent email',
'Class:ResponseTicket/Attribute:agent_email+' => '',
'Class:ResponseTicket/Attribute:related_change_id' => 'Related change',
'Class:ResponseTicket/Attribute:related_change_id+' => '',
'Class:ResponseTicket/Attribute:related_change_ref' => 'Related change',
'Class:ResponseTicket/Attribute:related_change_ref+' => '',
'Class:ResponseTicket/Attribute:close_date' => 'Closed',
'Class:ResponseTicket/Attribute:close_date+' => '',
'Class:ResponseTicket/Attribute:last_update' => 'Last update',
'Class:ResponseTicket/Attribute:last_update+' => '',
'Class:ResponseTicket/Attribute:assignment_date' => 'Assigned',
'Class:ResponseTicket/Attribute:assignment_date+' => '',
'Class:ResponseTicket/Attribute:tto_escalation_deadline' => 'TTO Escalation deadline',
'Class:ResponseTicket/Attribute:tto_escalation_deadline+' => '',
'Class:ResponseTicket/Attribute:ttr_escalation_deadline' => 'TTR Escalation deadline',
'Class:ResponseTicket/Attribute:ttr_escalation_deadline+' => '',
'Class:ResponseTicket/Attribute:closure_deadline' => 'Closure deadline',
'Class:ResponseTicket/Attribute:closure_deadline+' => '',
'Class:ResponseTicket/Attribute:resolution_code' => 'Resolution code',
'Class:ResponseTicket/Attribute:resolution_code+' => '',
'Class:ResponseTicket/Attribute:resolution_code/Value:couldnotreproduce' => 'Could not be reproduced',
'Class:ResponseTicket/Attribute:resolution_code/Value:couldnotreproduce+' => '',
'Class:ResponseTicket/Attribute:resolution_code/Value:duplicate' => 'Duplicate ticket',
'Class:ResponseTicket/Attribute:resolution_code/Value:duplicate+' => '',
'Class:ResponseTicket/Attribute:resolution_code/Value:fixed' => 'Fixed',
'Class:ResponseTicket/Attribute:resolution_code/Value:fixed+' => '',
'Class:ResponseTicket/Attribute:resolution_code/Value:irrelevant' => 'Irrelevant',
'Class:ResponseTicket/Attribute:resolution_code/Value:irrelevant+' => '',
'Class:ResponseTicket/Attribute:solution' => 'Solution',
'Class:ResponseTicket/Attribute:solution+' => '',
'Class:ResponseTicket/Attribute:user_satisfaction' => 'User satisfaction',
'Class:ResponseTicket/Attribute:user_satisfaction+' => '',
'Class:ResponseTicket/Attribute:user_satisfaction/Value:1' => '1',
'Class:ResponseTicket/Attribute:user_satisfaction/Value:1+' => '1',
'Class:ResponseTicket/Attribute:user_satisfaction/Value:2' => '2',
'Class:ResponseTicket/Attribute:user_satisfaction/Value:2+' => '2',
'Class:ResponseTicket/Attribute:user_satisfaction/Value:3' => '3',
'Class:ResponseTicket/Attribute:user_satisfaction/Value:3+' => '3',
'Class:ResponseTicket/Attribute:user_satisfaction/Value:4' => '4',
'Class:ResponseTicket/Attribute:user_satisfaction/Value:4+' => '4',
'Class:ResponseTicket/Attribute:user_commment' => 'User comment',
'Class:ResponseTicket/Attribute:user_commment+' => '',
'Class:ResponseTicket/Stimulus:ev_assign' => 'Assign',
'Class:ResponseTicket/Stimulus:ev_assign+' => '',
'Class:ResponseTicket/Stimulus:ev_reassign' => 'Reassign',
'Class:ResponseTicket/Stimulus:ev_reassign+' => '',
'Class:ResponseTicket/Stimulus:ev_timeout' => 'ev_timeout',
'Class:ResponseTicket/Stimulus:ev_timeout+' => '',
'Class:ResponseTicket/Stimulus:ev_resolve' => 'Mark a resolved',
'Class:ResponseTicket/Stimulus:ev_resolve+' => '',
'Class:ResponseTicket/Stimulus:ev_close' => 'Close',
'Class:ResponseTicket/Stimulus:ev_close+' => '',
));
Dict::Add('EN US', 'English', 'English', array(
'Class:ResponseTicket' => 'ResponseTicket',
'Class:ResponseTicket+' => '',
'Class:ResponseTicket/Attribute:status' => 'Status',
'Class:ResponseTicket/Attribute:status+' => '',
'Class:ResponseTicket/Attribute:status/Value:new' => 'New',
'Class:ResponseTicket/Attribute:status/Value:new+' => 'newly opened',
'Class:ResponseTicket/Attribute:status/Value:escalated_tto' => 'Escalation/TTO',
'Class:ResponseTicket/Attribute:status/Value:escalated_tto+' => '',
'Class:ResponseTicket/Attribute:status/Value:assigned' => 'Assigned',
'Class:ResponseTicket/Attribute:status/Value:assigned+' => '',
'Class:ResponseTicket/Attribute:status/Value:escalated_ttr' => 'Escalation/TTR',
'Class:ResponseTicket/Attribute:status/Value:escalated_ttr+' => '',
'Class:ResponseTicket/Attribute:status/Value:frozen' => 'Pending',
'Class:ResponseTicket/Attribute:status/Value:frozen+' => '',
'Class:ResponseTicket/Attribute:status/Value:resolved' => 'Resolved',
'Class:ResponseTicket/Attribute:status/Value:resolved+' => '',
'Class:ResponseTicket/Attribute:status/Value:closed' => 'Closed',
'Class:ResponseTicket/Attribute:status/Value:closed+' => '',
'Class:ResponseTicket/Attribute:caller_id' => 'Caller',
'Class:ResponseTicket/Attribute:caller_id+' => '',
'Class:ResponseTicket/Attribute:caller_email' => 'Email',
'Class:ResponseTicket/Attribute:caller_email+' => '',
'Class:ResponseTicket/Attribute:org_id' => 'Customer',
'Class:ResponseTicket/Attribute:org_id+' => '',
'Class:ResponseTicket/Attribute:org_name' => 'Customer',
'Class:ResponseTicket/Attribute:org_name+' => '',
'Class:ResponseTicket/Attribute:service_id' => 'Service',
'Class:ResponseTicket/Attribute:service_id+' => '',
'Class:ResponseTicket/Attribute:service_name' => 'Name',
'Class:ResponseTicket/Attribute:service_name+' => '',
'Class:ResponseTicket/Attribute:servicesubcategory_id' => 'Service element',
'Class:ResponseTicket/Attribute:servicesubcategory_id+' => '',
'Class:ResponseTicket/Attribute:servicesubcategory_name' => 'Name',
'Class:ResponseTicket/Attribute:servicesubcategory_name+' => '',
'Class:ResponseTicket/Attribute:product' => 'Product',
'Class:ResponseTicket/Attribute:product+' => '',
'Class:ResponseTicket/Attribute:impact' => 'Impact',
'Class:ResponseTicket/Attribute:impact+' => '',
'Class:ResponseTicket/Attribute:impact/Value:1' => 'A person',
'Class:ResponseTicket/Attribute:impact/Value:1+' => '',
'Class:ResponseTicket/Attribute:impact/Value:2' => 'A service',
'Class:ResponseTicket/Attribute:impact/Value:2+' => '',
'Class:ResponseTicket/Attribute:impact/Value:3' => 'A department',
'Class:ResponseTicket/Attribute:impact/Value:3+' => '',
'Class:ResponseTicket/Attribute:urgency' => 'Urgency',
'Class:ResponseTicket/Attribute:urgency+' => '',
'Class:ResponseTicket/Attribute:urgency/Value:1' => 'Low',
'Class:ResponseTicket/Attribute:urgency/Value:1+' => '',
'Class:ResponseTicket/Attribute:urgency/Value:2' => 'Medium',
'Class:ResponseTicket/Attribute:urgency/Value:2+' => '',
'Class:ResponseTicket/Attribute:urgency/Value:3' => 'High',
'Class:ResponseTicket/Attribute:urgency/Value:3+' => '',
'Class:ResponseTicket/Attribute:priority' => 'Priority',
'Class:ResponseTicket/Attribute:priority+' => '',
'Class:ResponseTicket/Attribute:priority/Value:1' => 'Low',
'Class:ResponseTicket/Attribute:priority/Value:1+' => '',
'Class:ResponseTicket/Attribute:priority/Value:2' => 'Medium',
'Class:ResponseTicket/Attribute:priority/Value:2+' => '',
'Class:ResponseTicket/Attribute:priority/Value:3' => 'High',
'Class:ResponseTicket/Attribute:priority/Value:3+' => '',
'Class:ResponseTicket/Attribute:workgroup_id' => 'Workgroup',
'Class:ResponseTicket/Attribute:workgroup_id+' => '',
'Class:ResponseTicket/Attribute:workgroup_name' => 'Workgroup',
'Class:ResponseTicket/Attribute:workgroup_name+' => '',
'Class:ResponseTicket/Attribute:agent_id' => 'Agent',
'Class:ResponseTicket/Attribute:agent_id+' => '',
'Class:ResponseTicket/Attribute:agent_name' => 'Agent',
'Class:ResponseTicket/Attribute:agent_name+' => '',
'Class:ResponseTicket/Attribute:agent_email' => 'Agent email',
'Class:ResponseTicket/Attribute:agent_email+' => '',
'Class:ResponseTicket/Attribute:related_problem_id' => 'Related Problem',
'Class:ResponseTicket/Attribute:related_problem_id+' => '',
'Class:ResponseTicket/Attribute:related_problem_ref' => 'Ref',
'Class:ResponseTicket/Attribute:related_problem_ref+' => '',
'Class:ResponseTicket/Attribute:related_change_id' => 'Related change',
'Class:ResponseTicket/Attribute:related_change_id+' => '',
'Class:ResponseTicket/Attribute:related_change_ref' => 'Related change',
'Class:ResponseTicket/Attribute:related_change_ref+' => '',
'Class:ResponseTicket/Attribute:close_date' => 'Closed',
'Class:ResponseTicket/Attribute:close_date+' => '',
'Class:ResponseTicket/Attribute:last_update' => 'Last update',
'Class:ResponseTicket/Attribute:last_update+' => '',
'Class:ResponseTicket/Attribute:assignment_date' => 'Assignment Date ',
'Class:ResponseTicket/Attribute:assignment_date+' => '',
'Class:ResponseTicket/Attribute:resolution_date' => 'Resolution Date',
'Class:ResponseTicket/Attribute:resolution_date+' => '',
'Class:ResponseTicket/Attribute:tto_escalation_deadline' => 'TTO Escalation deadline',
'Class:ResponseTicket/Attribute:tto_escalation_deadline+' => '',
'Class:ResponseTicket/Attribute:ttr_escalation_deadline' => 'TTR Escalation deadline',
'Class:ResponseTicket/Attribute:ttr_escalation_deadline+' => '',
'Class:ResponseTicket/Attribute:closure_deadline' => 'Closure deadline',
'Class:ResponseTicket/Attribute:closure_deadline+' => '',
'Class:ResponseTicket/Attribute:resolution_code' => 'Resolution code',
'Class:ResponseTicket/Attribute:resolution_code+' => '',
'Class:ResponseTicket/Attribute:resolution_code/Value:couldnotreproduce' => 'Could not be reproduced',
'Class:ResponseTicket/Attribute:resolution_code/Value:couldnotreproduce+' => '',
'Class:ResponseTicket/Attribute:resolution_code/Value:duplicate' => 'Duplicate ticket',
'Class:ResponseTicket/Attribute:resolution_code/Value:duplicate+' => '',
'Class:ResponseTicket/Attribute:resolution_code/Value:fixed' => 'Fixed',
'Class:ResponseTicket/Attribute:resolution_code/Value:fixed+' => '',
'Class:ResponseTicket/Attribute:resolution_code/Value:irrelevant' => 'Irrelevant',
'Class:ResponseTicket/Attribute:resolution_code/Value:irrelevant+' => '',
'Class:ResponseTicket/Attribute:solution' => 'Solution',
'Class:ResponseTicket/Attribute:solution+' => '',
'Class:ResponseTicket/Attribute:user_satisfaction' => 'User satisfaction',
'Class:ResponseTicket/Attribute:user_satisfaction+' => '',
'Class:ResponseTicket/Attribute:user_satisfaction/Value:1' => 'Bad',
'Class:ResponseTicket/Attribute:user_satisfaction/Value:1+' => 'Bad',
'Class:ResponseTicket/Attribute:user_satisfaction/Value:2' => 'Average',
'Class:ResponseTicket/Attribute:user_satisfaction/Value:2+' => 'Average',
'Class:ResponseTicket/Attribute:user_satisfaction/Value:3' => 'Good',
'Class:ResponseTicket/Attribute:user_satisfaction/Value:3+' => 'Good',
'Class:ResponseTicket/Attribute:user_satisfaction/Value:4' => 'Very Good',
'Class:ResponseTicket/Attribute:user_satisfaction/Value:4+' => 'Very Good',
'Class:ResponseTicket/Attribute:user_commment' => 'User comment',
'Class:ResponseTicket/Attribute:user_commment+' => '',
'Class:ResponseTicket/Stimulus:ev_assign' => 'Assign',
'Class:ResponseTicket/Stimulus:ev_assign+' => '',
'Class:ResponseTicket/Stimulus:ev_reassign' => 'Reassign',
'Class:ResponseTicket/Stimulus:ev_reassign+' => '',
'Class:ResponseTicket/Stimulus:ev_timeout' => 'Escalation',
'Class:ResponseTicket/Stimulus:ev_timeout+' => '',
'Class:ResponseTicket/Stimulus:ev_resolve' => 'Mark a resolved',
'Class:ResponseTicket/Stimulus:ev_resolve+' => '',
'Class:ResponseTicket/Stimulus:ev_close' => 'Close',
'Class:ResponseTicket/Stimulus:ev_close+' => '',
));
?>

View File

@@ -51,8 +51,9 @@ abstract class Ticket extends cmdbAbstractObject
MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("document_list", array("linked_class"=>"lnkTicketToDoc", "ext_key_to_me"=>"ticket_id", "ext_key_to_remote"=>"document_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("ci_list", array("linked_class"=>"lnkTicketToCI", "ext_key_to_me"=>"ticket_id", "ext_key_to_remote"=>"ci_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("contact_list", array("linked_class"=>"lnkTicketToContact", "ext_key_to_me"=>"ticket_id", "ext_key_to_remote"=>"contact_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("incident_list", array("linked_class"=>"lnkTicketToIncident", "ext_key_to_me"=>"ticket_id", "ext_key_to_remote"=>"incident_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
MetaModel::Init_SetZListItems('details', array('ref', 'title', 'description', 'ticket_log', 'start_date', 'document_list', 'ci_list', 'contact_list'));
MetaModel::Init_SetZListItems('details', array('ref', 'title', 'description', 'ticket_log', 'start_date', 'document_list', 'ci_list', 'contact_list','incident_list'));
MetaModel::Init_SetZListItems('advanced_search', array('finalclass', 'ref', 'title', 'ticket_log', 'start_date'));
MetaModel::Init_SetZListItems('standard_search', array('finalclass', 'ref', 'title', 'ticket_log', 'start_date'));
MetaModel::Init_SetZListItems('list', array('finalclass', 'ref', 'title', 'ticket_log', 'start_date'));
@@ -69,7 +70,7 @@ class lnkTicketToDoc extends cmdbAbstractObject
"key_type" => "autoincrement",
"name_attcode" => "ticket_id",
"state_attcode" => "",
"reconc_keys" => array(),
"reconc_keys" => array("ticket_id","document_id"),
"db_table" => "lnktickettodoc",
"db_key_field" => "id",
"db_finalclass_field" => "",
@@ -100,7 +101,7 @@ class lnkTicketToContact extends cmdbAbstractObject
"key_type" => "autoincrement",
"name_attcode" => "ticket_id",
"state_attcode" => "",
"reconc_keys" => array(),
"reconc_keys" => array("ticket_id","contact_id"),
"db_table" => "lnktickettocontact",
"db_key_field" => "id",
"db_finalclass_field" => "",
@@ -133,7 +134,7 @@ class lnkTicketToCI extends cmdbAbstractObject
"key_type" => "autoincrement",
"name_attcode" => "ticket_id",
"state_attcode" => "",
"reconc_keys" => array(),
"reconc_keys" => array("ticket_id","ci_id"),
"db_table" => "lnktickettoci",
"db_key_field" => "id",
"db_finalclass_field" => "",
@@ -147,11 +148,12 @@ class lnkTicketToCI extends cmdbAbstractObject
MetaModel::Init_AddAttribute(new AttributeExternalKey("ci_id", array("targetclass"=>"FunctionalCI", "jointype"=>null, "allowed_values"=>null, "sql"=>"ci_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("ci_name", array("allowed_values"=>null, "extkey_attcode"=>"ci_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("ci_status", array("allowed_values"=>null, "extkey_attcode"=>"ci_id", "target_attcode"=>"status", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("impact", array("allowed_values"=>null, "sql"=>"impact", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_SetZListItems('details', array('ticket_id', 'ci_id', 'ci_status'));
MetaModel::Init_SetZListItems('details', array('ticket_id', 'ci_id', 'impact','ci_status'));
MetaModel::Init_SetZListItems('advanced_search', array('ticket_id', 'ci_id', 'ci_status'));
MetaModel::Init_SetZListItems('standard_search', array('ticket_id', 'ci_id', 'ci_status'));
MetaModel::Init_SetZListItems('list', array('ticket_id', 'ci_id', 'ci_status'));
MetaModel::Init_SetZListItems('list', array('ticket_id', 'ci_id', 'impact','ci_status'));
}
}
@@ -201,6 +203,7 @@ abstract class ResponseTicket extends Ticket
MetaModel::Init_AddAttribute(new AttributeDateTime("close_date", array("allowed_values"=>null, "sql"=>"close_date", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeDateTime("last_update", array("allowed_values"=>null, "sql"=>"last_update", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeDateTime("assignment_date", array("allowed_values"=>null, "sql"=>"assignment_date", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeDateTime("resolution_date", array("allowed_values"=>null, "sql"=>"resolution_date", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeDeadline("tto_escalation_deadline", array("allowed_values"=>null, "sql"=>"tto_escalation_deadline", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeDeadline("ttr_escalation_deadline", array("allowed_values"=>null, "sql"=>"ttr_escalation_deadline", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeDeadline("closure_deadline", array("allowed_values"=>null, "sql"=>"closure_deadline", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
@@ -211,8 +214,8 @@ abstract class ResponseTicket extends Ticket
MetaModel::Init_SetZListItems('details', array('ref', 'title', 'org_id', 'ticket_log', 'start_date', 'tto_escalation_deadline', 'ttr_escalation_deadline', 'closure_deadline', 'document_list', 'ci_list', 'contact_list', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'last_update', 'assignment_date', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment'));
MetaModel::Init_SetZListItems('advanced_search', array('finalclass', 'ref', 'title', 'org_id', 'start_date', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'last_update', 'assignment_date', 'tto_escalation_deadline', 'ttr_escalation_deadline', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment'));
MetaModel::Init_SetZListItems('standard_search', array('finalclass', 'ref', 'title', 'org_id', 'start_date', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'last_update', 'assignment_date', 'tto_escalation_deadline', 'ttr_escalation_deadline', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment'));
MetaModel::Init_SetZListItems('list', array('finalclass', 'ref', 'title', 'org_id', 'start_date', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'last_update', 'assignment_date', 'tto_escalation_deadline', 'ttr_escalation_deadline', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment'));
MetaModel::Init_SetZListItems('standard_search', array('finalclass', 'ref', 'title', 'org_id', 'start_date', 'status', 'caller_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'close_date', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment'));
MetaModel::Init_SetZListItems('list', array('finalclass', 'ref', 'title', 'org_id', 'start_date', 'status', 'caller_id', 'service_id', 'priority', 'workgroup_id', 'agent_id', 'last_update'));
// Lifecycle
MetaModel::Init_DefineState(
@@ -229,6 +232,7 @@ abstract class ResponseTicket extends Ticket
'start_date' => OPT_ATT_READONLY,
'last_update' => OPT_ATT_READONLY,
'assignment_date' => OPT_ATT_HIDDEN,
'resolution_date' => OPT_ATT_HIDDEN,
'tto_escalation_deadline' => OPT_ATT_READONLY,
'ttr_escalation_deadline' => OPT_ATT_HIDDEN,
'closure_deadline' => OPT_ATT_HIDDEN,
@@ -273,6 +277,8 @@ abstract class ResponseTicket extends Ticket
'workgroup_id' => OPT_ATT_MUSTPROMPT | OPT_ATT_MANDATORY,
'tto_escalation_deadline' => OPT_ATT_HIDDEN,
'ttr_escalation_deadline' => OPT_ATT_READONLY,
'related_problem_id' => OPT_ATT_MUSTPROMPT,
// 'related_change_id' => OPT_ATT_MUSTPROMPT,
),
)
);
@@ -336,17 +342,17 @@ abstract class ResponseTicket extends Ticket
MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_resolve", array()));
MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_close", array()));
MetaModel::Init_DefineTransition("new", "ev_assign", array("target_state"=>"assigned", "actions"=>array(), "user_restriction"=>null));
MetaModel::Init_DefineTransition("new", "ev_assign", array("target_state"=>"assigned", "actions"=>array('SetAssignedDate'), "user_restriction"=>null));
MetaModel::Init_DefineTransition("new", "ev_timeout", array("target_state"=>"escalated_tto", "actions"=>array(), "user_restriction"=>null));
MetaModel::Init_DefineTransition("escalated_tto", "ev_assign", array("target_state"=>"assigned", "actions"=>array(), "user_restriction"=>null));
MetaModel::Init_DefineTransition("escalated_tto", "ev_assign", array("target_state"=>"assigned", "actions"=>array('SetAssignedDate'), "user_restriction"=>null));
MetaModel::Init_DefineTransition("assigned", "ev_reassign", array("target_state"=>"assigned", "actions"=>array(), "user_restriction"=>null));
MetaModel::Init_DefineTransition("assigned", "ev_timeout", array("target_state"=>"escalated_ttr", "actions"=>array(), "user_restriction"=>null));
MetaModel::Init_DefineTransition("assigned", "ev_resolve", array("target_state"=>"resolved", "actions"=>array('SetClosureDeadline'), "user_restriction"=>null));
MetaModel::Init_DefineTransition("assigned", "ev_resolve", array("target_state"=>"resolved", "actions"=>array('SetResolveDate','SetClosureDeadline'), "user_restriction"=>null));
MetaModel::Init_DefineTransition("escalated_ttr", "ev_reassign", array("target_state"=>"escalated_ttr", "actions"=>array(), "user_restriction"=>null));
MetaModel::Init_DefineTransition("escalated_ttr", "ev_resolve", array("target_state"=>"resolved", "actions"=>array('SetClosureDeadline'), "user_restriction"=>null));
MetaModel::Init_DefineTransition("escalated_ttr", "ev_resolve", array("target_state"=>"resolved", "actions"=>array('SetResolveDate','SetClosureDeadline'), "user_restriction"=>null));
MetaModel::Init_DefineTransition("resolved", "ev_reassign", array("target_state"=>"assigned", "actions"=>array(), "user_restriction"=>null));
MetaModel::Init_DefineTransition("resolved", "ev_close", array("target_state"=>"closed", "actions"=>array('SetClosureDate'), "user_restriction"=>null));
@@ -360,6 +366,16 @@ abstract class ResponseTicket extends Ticket
$this->Set('closure_deadline', time() + $iMaxWaitHours * 3600);
return true;
}
public function SetAssignedDate($sStimulusCode)
{
$this->Set('assignment_date', time());
return true;
}
public function SetResolveDate($sStimulusCode)
{
$this->Set('resolution_date', time());
return true;
}
public function SetClosureDate($sStimulusCode)
{
$this->Set('close_date', time());

View File

@@ -26,7 +26,7 @@ SetupWebPage::AddModule(
'dictionary' => array(
'en.dict.itop-tickets.php',
'fr.dict.itop-tickets.php',
'es_cr.dict.itop-tickets.php',
// 'es_cr.dict.itop-tickets.php',
),
'data.struct' => array(
'data.struct.ta-triggers.xml',