diff --git a/core/metamodel.class.php b/core/metamodel.class.php index 4de160a59..bef56b808 100644 --- a/core/metamodel.class.php +++ b/core/metamodel.class.php @@ -1292,6 +1292,12 @@ abstract class MetaModel self::$m_aTransitions[$sTargetClass][$sStateCode] = array(); } + public static function Init_OverloadStateAttribute($sStateCode, $sAttCode, $iFlags) + { + $sTargetClass = self::GetCallersPHPClass("Init"); + self::$m_aStates[$sTargetClass][$sStateCode]['attribute_list'][$sAttCode] = $iFlags; + } + public static function Init_DefineStimulus($oStimulus) { $sTargetClass = self::GetCallersPHPClass("Init"); diff --git a/modules/itop-change-mgmt-1.0.0/en.dict.itop-change-mgmt.php b/modules/itop-change-mgmt-1.0.0/en.dict.itop-change-mgmt.php index c24bd674b..bbc712c9b 100644 --- a/modules/itop-change-mgmt-1.0.0/en.dict.itop-change-mgmt.php +++ b/modules/itop-change-mgmt-1.0.0/en.dict.itop-change-mgmt.php @@ -23,6 +23,16 @@ * @license http://www.opensource.org/licenses/gpl-3.0.html LGPL */ +Dict::Add('EN US', 'English', 'English', array( + 'Menu:ChangeManagement' => 'Change management', + 'Menu:WaitingAcceptance' => 'Changes awaiting acceptance', + 'Menu:WaitingAcceptance+' => '', + 'Menu:WaitingApproval' => 'Changes awaiting approval', + 'Menu:WaitingApproval+' => '', + 'Menu:Changes' => 'All changes', + 'Menu:Changes+' => '', +)); + // Dictionnay conventions // Class: // Class:+ @@ -33,19 +43,293 @@ // Class:/Stimulus: // Class:/Stimulus:+ -////////////////////////////////////////////////////////////////////// -// Classes in 'bizmodel' -////////////////////////////////////////////////////////////////////// + +// +// Class: Change // -// Dictionnay conventions -// Class: -// Class:+ -// Class:/Attribute: -// Class:/Attribute:+ -// Class:/Attribute:/Value: -// Class:/Attribute:/Value:+ -// Class:/Stimulus: -// Class:/Stimulus:+ +Dict::Add('EN US', 'English', 'English', array( + 'Class:Change' => 'Change', + 'Class:Change+' => '', + 'Class:Change/Attribute:start_date' => 'Planned startup', + 'Class:Change/Attribute:start_date+' => '', + 'Class:Change/Attribute:status' => 'Status', + 'Class:Change/Attribute:status+' => '', + 'Class:Change/Attribute:status/Value:new' => 'New', + 'Class:Change/Attribute:status/Value:new+' => '', + 'Class:Change/Attribute:status/Value:validated' => 'Validated', + 'Class:Change/Attribute:status/Value:validated+' => '', + 'Class:Change/Attribute:status/Value:rejected' => 'Rejected', + 'Class:Change/Attribute:status/Value:rejected+' => '', + 'Class:Change/Attribute:status/Value:assigned' => 'Assigned', + 'Class:Change/Attribute:status/Value:assigned+' => '', + 'Class:Change/Attribute:status/Value:plannedscheduled' => 'Planned and scheduled', + 'Class:Change/Attribute:status/Value:plannedscheduled+' => '', + 'Class:Change/Attribute:status/Value:approved' => 'Approved', + 'Class:Change/Attribute:status/Value:approved+' => '', + 'Class:Change/Attribute:status/Value:notapproved' => 'Rejected', + 'Class:Change/Attribute:status/Value:notapproved+' => '', + 'Class:Change/Attribute:status/Value:implemented' => 'Implemented', + 'Class:Change/Attribute:status/Value:implemented+' => '', + 'Class:Change/Attribute:status/Value:monitored' => 'Monitored', + 'Class:Change/Attribute:status/Value:monitored+' => '', + 'Class:Change/Attribute:status/Value:closed' => 'Closed', + 'Class:Change/Attribute:status/Value:closed+' => '', + 'Class:Change/Attribute:reason' => 'Reason', + 'Class:Change/Attribute:reason+' => '', + 'Class:Change/Attribute:requestor_id' => 'Requestor', + 'Class:Change/Attribute:requestor_id+' => '', + 'Class:Change/Attribute:requestor_email' => 'Requestor', + 'Class:Change/Attribute:requestor_email+' => '', + 'Class:Change/Attribute:customer_id' => 'Customer', + 'Class:Change/Attribute:customer_id+' => '', + 'Class:Change/Attribute:customer_name' => 'Customer', + 'Class:Change/Attribute:customer_name+' => '', + 'Class:Change/Attribute:workgroup_id' => 'Workgroup', + 'Class:Change/Attribute:workgroup_id+' => '', + 'Class:Change/Attribute:workgroup_name' => 'Workgroup', + 'Class:Change/Attribute:workgroup_name+' => '', + 'Class:Change/Attribute:creation_date' => 'Created', + 'Class:Change/Attribute:creation_date+' => '', + 'Class:Change/Attribute:last_update' => 'Last update', + 'Class:Change/Attribute:last_update+' => '', + 'Class:Change/Attribute:end_date' => 'End date', + 'Class:Change/Attribute:end_date+' => '', + 'Class:Change/Attribute:close_date' => 'Closed', + 'Class:Change/Attribute:close_date+' => '', + 'Class:Change/Attribute:impact' => 'Impact', + 'Class:Change/Attribute:impact+' => '', + 'Class:Change/Attribute:agent_id' => 'Agent', + 'Class:Change/Attribute:agent_id+' => '', + 'Class:Change/Attribute:agent_name' => 'Agent', + 'Class:Change/Attribute:agent_name+' => '', + 'Class:Change/Attribute:agent_email' => 'Agent', + 'Class:Change/Attribute:agent_email+' => '', + 'Class:Change/Attribute:supervisor_group_id' => 'Supervisor team', + 'Class:Change/Attribute:supervisor_group_id+' => '', + 'Class:Change/Attribute:supervisor_group_name' => 'Supervisor team', + 'Class:Change/Attribute:supervisor_group_name+' => '', + 'Class:Change/Attribute:supervisor_id' => 'Supervisor', + 'Class:Change/Attribute:supervisor_id+' => '', + 'Class:Change/Attribute:supervisor_email' => 'Supervisor', + 'Class:Change/Attribute:supervisor_email+' => '', + 'Class:Change/Attribute:manager_group_id' => 'Manager team', + 'Class:Change/Attribute:manager_group_id+' => '', + 'Class:Change/Attribute:manager_group_name' => 'Manager team', + 'Class:Change/Attribute:manager_group_name+' => '', + 'Class:Change/Attribute:manager_id' => 'Manager', + 'Class:Change/Attribute:manager_id+' => '', + 'Class:Change/Attribute:manager_email' => 'Manager', + 'Class:Change/Attribute:manager_email+' => '', + 'Class:Change/Attribute:outage' => 'Outage', + 'Class:Change/Attribute:outage+' => '', + 'Class:Change/Attribute:change_request' => 'Request', + 'Class:Change/Attribute:change_request+' => '', + 'Class:Change/Attribute:change_log' => 'Log', + 'Class:Change/Attribute:change_log+' => '', + 'Class:Change/Attribute:fallback' => 'Fallback plan', + 'Class:Change/Attribute:fallback+' => '', + 'Class:Change/Stimulus:ev_validate' => 'Validate', + 'Class:Change/Stimulus:ev_validate+' => '', + 'Class:Change/Stimulus:ev_reject' => 'Reject', + 'Class:Change/Stimulus:ev_reject+' => '', + 'Class:Change/Stimulus:ev_assign' => 'Assign', + 'Class:Change/Stimulus:ev_assign+' => '', + 'Class:Change/Stimulus:ev_reopen' => 'Reopen', + 'Class:Change/Stimulus:ev_reopen+' => '', + 'Class:Change/Stimulus:ev_plan' => 'Plan', + 'Class:Change/Stimulus:ev_plan+' => '', + 'Class:Change/Stimulus:ev_approve' => 'Approve', + 'Class:Change/Stimulus:ev_approve+' => '', + 'Class:Change/Stimulus:ev_replan' => 'Replan', + 'Class:Change/Stimulus:ev_replan+' => '', + 'Class:Change/Stimulus:ev_notapprove' => 'Reject', + 'Class:Change/Stimulus:ev_notapprove+' => '', + 'Class:Change/Stimulus:ev_implement' => 'Implement', + 'Class:Change/Stimulus:ev_implement+' => '', + 'Class:Change/Stimulus:ev_monitor' => 'Monitor', + 'Class:Change/Stimulus:ev_monitor+' => '', + 'Class:Change/Stimulus:ev_finish' => 'Finish', + 'Class:Change/Stimulus:ev_finish+' => '', +)); + +// +// Class: RoutineChange +// + +Dict::Add('EN US', 'English', 'English', array( + 'Class:RoutineChange' => 'Routine Change', + 'Class:RoutineChange+' => '', + 'Class:Change/Attribute:status/Value:new' => 'New', + 'Class:Change/Attribute:status/Value:new+' => '', + 'Class:Change/Attribute:status/Value:assigned' => 'Assigned', + 'Class:Change/Attribute:status/Value:assigned+' => '', + 'Class:Change/Attribute:status/Value:plannedscheduled' => 'Planned and scheduled', + 'Class:Change/Attribute:status/Value:plannedscheduled+' => '', + 'Class:Change/Attribute:status/Value:approved' => 'Approved', + 'Class:Change/Attribute:status/Value:approved+' => '', + 'Class:Change/Attribute:status/Value:implemented' => 'Implemented', + 'Class:Change/Attribute:status/Value:implemented+' => '', + 'Class:Change/Attribute:status/Value:monitored' => 'Monitored', + 'Class:Change/Attribute:status/Value:monitored+' => '', + 'Class:Change/Attribute:status/Value:closed' => 'Closed', + 'Class:Change/Attribute:status/Value:closed+' => '', + 'Class:RoutineChange/Stimulus:ev_validate' => 'Validate', + 'Class:RoutineChange/Stimulus:ev_validate+' => '', + 'Class:RoutineChange/Stimulus:ev_assign' => 'Assign', + 'Class:RoutineChange/Stimulus:ev_assign+' => '', + 'Class:RoutineChange/Stimulus:ev_reopen' => 'Reopen', + 'Class:RoutineChange/Stimulus:ev_reopen+' => '', + 'Class:RoutineChange/Stimulus:ev_plan' => 'Plan', + 'Class:RoutineChange/Stimulus:ev_plan+' => '', + 'Class:RoutineChange/Stimulus:ev_replan' => 'Replan', + 'Class:RoutineChange/Stimulus:ev_replan+' => '', + 'Class:RoutineChange/Stimulus:ev_implement' => 'Implement', + 'Class:RoutineChange/Stimulus:ev_implement+' => '', + 'Class:RoutineChange/Stimulus:ev_monitor' => 'Monitor', + 'Class:RoutineChange/Stimulus:ev_monitor+' => '', + 'Class:RoutineChange/Stimulus:ev_finish' => 'Finish', + 'Class:RoutineChange/Stimulus:ev_finish+' => '', +)); + +// +// Class: ApprovedChange +// + +Dict::Add('EN US', 'English', 'English', array( + 'Class:ApprovedChange' => 'Approved Changes', + 'Class:ApprovedChange+' => '', + 'Class:ApprovedChange/Attribute:approval_date' => 'approval_date', + 'Class:ApprovedChange/Attribute:approval_date+' => '', + 'Class:ApprovedChange/Attribute:approval_comment' => 'approval_comment', + 'Class:ApprovedChange/Attribute:approval_comment+' => '', + 'Class:ApprovedChange/Stimulus:ev_validate' => 'Validate', + 'Class:ApprovedChange/Stimulus:ev_validate+' => '', + 'Class:ApprovedChange/Stimulus:ev_reject' => 'Reject', + 'Class:ApprovedChange/Stimulus:ev_reject+' => '', + 'Class:ApprovedChange/Stimulus:ev_assign' => 'Assign', + 'Class:ApprovedChange/Stimulus:ev_assign+' => '', + 'Class:ApprovedChange/Stimulus:ev_reopen' => 'Reopen', + 'Class:ApprovedChange/Stimulus:ev_reopen+' => '', + 'Class:ApprovedChange/Stimulus:ev_plan' => 'Plan', + 'Class:ApprovedChange/Stimulus:ev_plan+' => '', + 'Class:ApprovedChange/Stimulus:ev_approve' => 'Approve', + 'Class:ApprovedChange/Stimulus:ev_approve+' => '', + 'Class:ApprovedChange/Stimulus:ev_replan' => 'Replan', + 'Class:ApprovedChange/Stimulus:ev_replan+' => '', + 'Class:ApprovedChange/Stimulus:ev_notapprove' => 'Reject approval', + 'Class:ApprovedChange/Stimulus:ev_notapprove+' => '', + 'Class:ApprovedChange/Stimulus:ev_implement' => 'Implement', + 'Class:ApprovedChange/Stimulus:ev_implement+' => '', + 'Class:ApprovedChange/Stimulus:ev_monitor' => 'Monitor', + 'Class:ApprovedChange/Stimulus:ev_monitor+' => '', + 'Class:ApprovedChange/Stimulus:ev_finish' => 'Finish', + 'Class:ApprovedChange/Stimulus:ev_finish+' => '', +)); +// +// Class: NormalChange +// + +Dict::Add('EN US', 'English', 'English', array( + 'Class:NormalChange' => 'Normal Change', + 'Class:NormalChange+' => '', + 'Class:Change/Attribute:status/Value:new' => 'New', + 'Class:Change/Attribute:status/Value:new+' => '', + 'Class:Change/Attribute:status/Value:validated' => 'Validated', + 'Class:Change/Attribute:status/Value:validated+' => '', + 'Class:Change/Attribute:status/Value:rejected' => 'Rejected', + 'Class:Change/Attribute:status/Value:rejected+' => '', + 'Class:Change/Attribute:status/Value:assigned' => 'Assigned', + 'Class:Change/Attribute:status/Value:assigned+' => '', + 'Class:Change/Attribute:status/Value:plannedscheduled' => 'Planned and scheduled', + 'Class:Change/Attribute:status/Value:plannedscheduled+' => '', + 'Class:Change/Attribute:status/Value:approved' => 'Approved', + 'Class:Change/Attribute:status/Value:approved+' => '', + 'Class:Change/Attribute:status/Value:notapproved' => 'Rejected', + 'Class:Change/Attribute:status/Value:notapproved+' => '', + 'Class:Change/Attribute:status/Value:implemented' => 'Implemented', + 'Class:Change/Attribute:status/Value:implemented+' => '', + 'Class:Change/Attribute:status/Value:monitored' => 'Monitored', + 'Class:Change/Attribute:status/Value:monitored+' => '', + 'Class:Change/Attribute:status/Value:closed' => 'Closed', + 'Class:Change/Attribute:status/Value:closed+' => '', + 'Class:NormalChange/Attribute:acceptance_date' => 'Acceptance date', + 'Class:NormalChange/Attribute:acceptance_date+' => '', + 'Class:NormalChange/Attribute:acceptance_comment' => 'Acceptance comment', + 'Class:NormalChange/Attribute:acceptance_comment+' => '', + 'Class:NormalChange/Stimulus:ev_validate' => 'Validate', + 'Class:NormalChange/Stimulus:ev_validate+' => '', + 'Class:NormalChange/Stimulus:ev_reject' => 'Reject', + 'Class:NormalChange/Stimulus:ev_reject+' => '', + 'Class:NormalChange/Stimulus:ev_assign' => 'Assign', + 'Class:NormalChange/Stimulus:ev_assign+' => '', + 'Class:NormalChange/Stimulus:ev_reopen' => 'Reopen', + 'Class:NormalChange/Stimulus:ev_reopen+' => '', + 'Class:NormalChange/Stimulus:ev_plan' => 'Plan', + 'Class:NormalChange/Stimulus:ev_plan+' => '', + 'Class:NormalChange/Stimulus:ev_approve' => 'Approve', + 'Class:NormalChange/Stimulus:ev_approve+' => '', + 'Class:NormalChange/Stimulus:ev_replan' => 'Replan', + 'Class:NormalChange/Stimulus:ev_replan+' => '', + 'Class:NormalChange/Stimulus:ev_notapprove' => 'Reject approval', + 'Class:NormalChange/Stimulus:ev_notapprove+' => '', + 'Class:NormalChange/Stimulus:ev_implement' => 'Implement', + 'Class:NormalChange/Stimulus:ev_implement+' => '', + 'Class:NormalChange/Stimulus:ev_monitor' => 'Monitor', + 'Class:NormalChange/Stimulus:ev_monitor+' => '', + 'Class:NormalChange/Stimulus:ev_finish' => 'Finish', + 'Class:NormalChange/Stimulus:ev_finish+' => '', +)); + +// +// Class: EmergencyChange +// + +Dict::Add('EN US', 'English', 'English', array( + 'Class:EmergencyChange' => 'Emergency Change', + 'Class:EmergencyChange+' => '', + 'Class:Change/Attribute:status/Value:new' => 'New', + 'Class:Change/Attribute:status/Value:new+' => '', + 'Class:Change/Attribute:status/Value:validated' => 'Validated', + 'Class:Change/Attribute:status/Value:validated+' => '', + 'Class:Change/Attribute:status/Value:rejected' => 'Rejected', + 'Class:Change/Attribute:status/Value:rejected+' => '', + 'Class:Change/Attribute:status/Value:assigned' => 'Assigned', + 'Class:Change/Attribute:status/Value:assigned+' => '', + 'Class:Change/Attribute:status/Value:plannedscheduled' => 'Planned and scheduled', + 'Class:Change/Attribute:status/Value:plannedscheduled+' => '', + 'Class:Change/Attribute:status/Value:approved' => 'Approved', + 'Class:Change/Attribute:status/Value:approved+' => '', + 'Class:Change/Attribute:status/Value:notapproved' => 'Rejected', + 'Class:Change/Attribute:status/Value:notapproved+' => '', + 'Class:Change/Attribute:status/Value:implemented' => 'Implemented', + 'Class:Change/Attribute:status/Value:implemented+' => '', + 'Class:Change/Attribute:status/Value:monitored' => 'Monitored', + 'Class:Change/Attribute:status/Value:monitored+' => '', + 'Class:Change/Attribute:status/Value:closed' => 'Closed', + 'Class:Change/Attribute:status/Value:closed+' => '', + 'Class:EmergencyChange/Stimulus:ev_validate' => 'Validate', + 'Class:EmergencyChange/Stimulus:ev_validate+' => '', + 'Class:EmergencyChange/Stimulus:ev_reject' => 'Reject', + 'Class:EmergencyChange/Stimulus:ev_reject+' => '', + 'Class:EmergencyChange/Stimulus:ev_assign' => 'Assign', + 'Class:EmergencyChange/Stimulus:ev_assign+' => '', + 'Class:EmergencyChange/Stimulus:ev_reopen' => 'Reopen', + 'Class:EmergencyChange/Stimulus:ev_reopen+' => '', + 'Class:EmergencyChange/Stimulus:ev_plan' => 'Plan', + 'Class:EmergencyChange/Stimulus:ev_plan+' => '', + 'Class:EmergencyChange/Stimulus:ev_approve' => 'Approve', + 'Class:EmergencyChange/Stimulus:ev_approve+' => '', + 'Class:EmergencyChange/Stimulus:ev_replan' => 'Replan', + 'Class:EmergencyChange/Stimulus:ev_replan+' => '', + 'Class:EmergencyChange/Stimulus:ev_notapprove' => 'Reject approval', + 'Class:EmergencyChange/Stimulus:ev_notapprove+' => '', + 'Class:EmergencyChange/Stimulus:ev_implement' => 'Implement', + 'Class:EmergencyChange/Stimulus:ev_implement+' => '', + 'Class:EmergencyChange/Stimulus:ev_monitor' => 'Monitor', + 'Class:EmergencyChange/Stimulus:ev_monitor+' => '', + 'Class:EmergencyChange/Stimulus:ev_finish' => 'Finish', + 'Class:EmergencyChange/Stimulus:ev_finish+' => '', +)); ?> diff --git a/modules/itop-change-mgmt-1.0.0/model.itop-change-mgmt.php b/modules/itop-change-mgmt-1.0.0/model.itop-change-mgmt.php index 8b2dd15d0..169d99231 100644 --- a/modules/itop-change-mgmt-1.0.0/model.itop-change-mgmt.php +++ b/modules/itop-change-mgmt-1.0.0/model.itop-change-mgmt.php @@ -23,4 +23,404 @@ * @license http://www.opensource.org/licenses/gpl-3.0.html LGPL */ + + +abstract class Change extends Ticket +{ + + public static function Init() + { + $aParams = array + ( + "category" => "bizmodel,searchable,changemgmt", + "key_type" => "autoincrement", + "name_attcode" => "ref", + "state_attcode" => "status", + "reconc_keys" => array("ref"), + "db_table" => "change", + "db_key_field" => "id", + "db_finalclass_field" => "", + "display_template" => "", + ); + MetaModel::Init_Params($aParams); + MetaModel::Init_InheritAttributes(); + + MetaModel::Init_AddAttribute(new AttributeEnum("status", array("allowed_values"=>new ValueSetEnum('approved,assigned,closed,implemented,monitored,new,notapproved,plannedscheduled,rejected,validated'), "sql"=>"status", "default_value"=>"new", "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_AddAttribute(new AttributeExternalKey("requestor_id", array("targetclass"=>"Person", "jointype"=>null, "allowed_values"=>null, "sql"=>"requestor_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalField("requestor_email", array("allowed_values"=>null, "extkey_attcode"=>"requestor_id", "target_attcode"=>"email", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalKey("customer_id", array("targetclass"=>"Organization", "jointype"=>null, "allowed_values"=>null, "sql"=>"customer_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalField("customer_name", array("allowed_values"=>null, "extkey_attcode"=>"customer_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalKey("workgroup_id", array("targetclass"=>"Team", "jointype"=>null, "allowed_values"=>null, "sql"=>"workgroup_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array()))); + 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 AttributeDate("creation_date", array("allowed_values"=>null, "sql"=>"creation_date", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeDate("last_update", array("allowed_values"=>null, "sql"=>"last_update", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeDate("start_date", array("allowed_values"=>null, "sql"=>"start_date", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeDate("end_date", array("allowed_values"=>null, "sql"=>"end_date", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeDate("close_date", array("allowed_values"=>null, "sql"=>"close_date", "default_value"=>"", "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_AddAttribute(new AttributeExternalKey("agent_id", array("targetclass"=>"Person", "jointype"=>null, "allowed_values"=>null, "sql"=>"agent_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array()))); + 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("supervisor_group_id", array("targetclass"=>"Team", "jointype"=>null, "allowed_values"=>null, "sql"=>"supervisor_group_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalField("supervisor_group_name", array("allowed_values"=>null, "extkey_attcode"=>"supervisor_group_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalKey("supervisor_id", array("targetclass"=>"Person", "jointype"=>null, "allowed_values"=>null, "sql"=>"supervisor_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalField("supervisor_email", array("allowed_values"=>null, "extkey_attcode"=>"supervisor_id", "target_attcode"=>"email", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalKey("manager_group_id", array("targetclass"=>"Team", "jointype"=>null, "allowed_values"=>null, "sql"=>"manager_group_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalField("manager_group_name", array("allowed_values"=>null, "extkey_attcode"=>"manager_group_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array()))); + MetaModel::Init_AddAttribute(new AttributeExternalKey("manager_id", array("targetclass"=>"Person", "jointype"=>null, "allowed_values"=>null, "sql"=>"manager_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array()))); + 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 AttributeBoolean("outage", array("allowed_values"=>null, "sql"=>"outage", "default_value"=>"", "is_null_allowed"=>true, "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("change_log", array("allowed_values"=>null, "sql"=>"change_log", "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', 'ticket_log', 'start_date', 'document_list', 'ci_list', 'contact_list', 'status', 'reason', 'requestor_id', 'customer_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', 'change_log', 'fallback')); + MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'start_date', 'status', 'reason', 'requestor_id', 'customer_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', 'change_log', 'fallback')); + MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'start_date', 'status', 'reason', 'requestor_id', 'customer_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', 'change_log', 'fallback')); + MetaModel::Init_SetZListItems('list', array('title', 'start_date', 'status')); + + + MetaModel::Init_DefineState( + "new", + array( + "attribute_inherit" => null, + "attribute_list" => array( + 'ref' => OPT_ATT_READONLY, + 'title' => OPT_ATT_MANDATORY, + 'reason' => OPT_ATT_MANDATORY, + 'workgroup_id' => OPT_ATT_HIDDEN, + 'creation_date' => OPT_ATT_READONLY, + 'last_update' => OPT_ATT_READONLY, + 'end_date' => OPT_ATT_HIDDEN, + 'close_date' => OPT_ATT_HIDDEN, + 'agent_id' => OPT_ATT_HIDDEN, + 'supervisor_group_id' => OPT_ATT_HIDDEN, + 'supervisor_id' => OPT_ATT_HIDDEN, + 'manager_group_id' => OPT_ATT_HIDDEN, + 'manager_id' => OPT_ATT_HIDDEN, + ), + ) + ); + MetaModel::Init_DefineState( + "validated", + array( + "attribute_inherit" => 'new', + "attribute_list" => array( + 'title' => OPT_ATT_READONLY, + 'reason' => OPT_ATT_READONLY, + 'workgroup_id' => OPT_ATT_MUSTCHANGE, + 'change_request' => OPT_ATT_READONLY, + ), + ) + ); + MetaModel::Init_DefineState( + "rejected", + array( + "attribute_inherit" => 'new', + "attribute_list" => array( + ), + ) + ); + MetaModel::Init_DefineState( + "assigned", + array( + "attribute_inherit" => 'validated', + "attribute_list" => array( + 'workgroup_id' => OPT_ATT_MANDATORY, + 'agent_id' => OPT_ATT_MUSTCHANGE, + 'supervisor_group_id' => OPT_ATT_MUSTCHANGE, + 'supervisor_id' => OPT_ATT_MUSTCHANGE, + 'manager_group_id' => OPT_ATT_MUSTCHANGE, + 'manager_id' => OPT_ATT_MUSTCHANGE, + ), + ) + ); + MetaModel::Init_DefineState( + "plannedscheduled", + array( + "attribute_inherit" => 'assigned', + "attribute_list" => array( + 'requestor_id' => OPT_ATT_READONLY, + 'customer_id' => OPT_ATT_READONLY, + 'workgroup_id' => OPT_ATT_READONLY, + 'start_date' => OPT_ATT_MANDATORY, + 'end_date' => OPT_ATT_MANDATORY, + 'impact' => OPT_ATT_MANDATORY, + 'agent_id' => OPT_ATT_MANDATORY, + 'supervisor_group_id' => OPT_ATT_MANDATORY, + 'supervisor_id' => OPT_ATT_MANDATORY, + 'manager_group_id' => OPT_ATT_MANDATORY, + 'manager_id' => OPT_ATT_MANDATORY, + 'fallback' => OPT_ATT_MANDATORY, + ), + ) + ); + MetaModel::Init_DefineState( + "approved", + array( + "attribute_inherit" => 'plannedscheduled', + "attribute_list" => array( + 'start_date' => OPT_ATT_READONLY, + 'end_date' => OPT_ATT_MANDATORY, + 'impact' => OPT_ATT_READONLY, + 'supervisor_group_id' => OPT_ATT_READONLY, + 'supervisor_id' => OPT_ATT_READONLY, + 'manager_group_id' => OPT_ATT_READONLY, + 'manager_id' => OPT_ATT_READONLY, + 'outage' => OPT_ATT_READONLY, + ), + ) + ); + MetaModel::Init_DefineState( + "notapproved", + array( + "attribute_inherit" => 'plannedscheduled', + "attribute_list" => array( + 'impact' => OPT_ATT_READONLY, + 'supervisor_group_id' => OPT_ATT_READONLY, + 'supervisor_id' => OPT_ATT_READONLY, + 'manager_group_id' => OPT_ATT_READONLY, + 'manager_id' => OPT_ATT_READONLY, + ), + ) + ); + MetaModel::Init_DefineState( + "implemented", + array( + "attribute_inherit" => 'approved', + "attribute_list" => array( + ), + ) + ); + MetaModel::Init_DefineState( + "monitored", + array( + "attribute_inherit" => 'implemented', + "attribute_list" => array( + 'end_date' => OPT_ATT_READONLY, + 'agent_id' => OPT_ATT_READONLY, + 'change_request' => OPT_ATT_READONLY, + 'fallback' => OPT_ATT_READONLY, + ), + ) + ); + MetaModel::Init_DefineState( + "closed", + array( + "attribute_inherit" => 'implemented', + "attribute_list" => array( + 'close_date' => OPT_ATT_READONLY, + ), + ) + ); + + MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_validate", array())); + MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_reject", array())); + MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_assign", array())); + + MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_reopen", array())); + MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_plan", array())); + MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_approve", array())); + MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_replan", array())); + MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_notapprove", array())); + MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_implement", array())); + MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_monitor", array())); + MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_finish", array())); + + } + + public function SetClosureDate($sStimulusCode) + { + $this->Set('end_date', time()); + return true; + } + public function SetLastUpDate($sStimulusCode) + { + $this->Set('last_update', time()); + return true; + } + + public function ComputeValues() + { + $iKey = $this->GetKey(); + if ($iKey < 0) + { + // Object not yet in the Database + $iKey = MetaModel::GetNextKey(get_class($this)); + } + $sName = sprintf('C-%06d', $iKey); + $this->Set('ref', $sName); + } +} + +class RoutineChange extends Change +{ + public static function Init() + { + $aParams = array + ( + "category" => "bizmodel,searchable,changemgmt", + "key_type" => "autoincrement", + "name_attcode" => "ref", + "state_attcode" => "", + "reconc_keys" => array("ref"), + "db_table" => "change_routine", + "db_key_field" => "id", + "db_finalclass_field" => "", + "display_template" => "", + ); + MetaModel::Init_Params($aParams); + MetaModel::Init_InheritAttributes(); + MetaModel::Init_InheritLifecycle(); + + MetaModel::Init_SetZListItems('details', array('title', 'ticket_log', 'start_date', 'document_list', 'ci_list', 'contact_list', 'status', 'reason', 'requestor_id', 'customer_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', 'change_log', 'fallback')); + MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'start_date', 'status', 'reason', 'requestor_id', 'customer_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', 'change_log', 'fallback')); + MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'start_date', 'status', 'reason', 'requestor_id', 'customer_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', 'change_log', 'fallback')); + MetaModel::Init_SetZListItems('list', array('title', 'start_date', 'status', 'requestor_id', 'customer_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', 'change_log', 'fallback')); + + MetaModel::Init_DefineTransition("new", "ev_assign", array("target_state"=>"assigned", "actions"=>array('SetLastUpDate'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("assigned", "ev_plan", array("target_state"=>"plannedscheduled", "actions"=>array('SetLastUpDate'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("plannedscheduled", "ev_implement", array("target_state"=>"implemented", "actions"=>array('SetLastUpDate'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("implemented", "ev_monitor", array("target_state"=>"monitored", "actions"=>array('SetLastUpDate'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("implemented", "ev_finish", array("target_state"=>"closed", "actions"=>array('SetClosureDate','SetLastUpDate'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("monitored", "ev_finish", array("target_state"=>"closed", "actions"=>array('SetClosureDate','SetLastUpDate'), "user_restriction"=>null)); + } +} + +abstract class ApprovedChange extends Change +{ + public static function Init() + { + $aParams = array + ( + "category" => "bizmodel,searchable,changemgmt", + "key_type" => "autoincrement", + "name_attcode" => "ref", + "state_attcode" => "", + "reconc_keys" => array("ref"), + "db_table" => "change_approved", + "db_key_field" => "id", + "db_finalclass_field" => "", + "display_template" => "", + ); + MetaModel::Init_Params($aParams); + MetaModel::Init_InheritAttributes(); + MetaModel::Init_InheritLifecycle(); + + MetaModel::Init_AddAttribute(new AttributeDate("approval_date", array("allowed_values"=>null, "sql"=>"approval_date", "default_value"=>"", "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', 'ticket_log', 'start_date', 'document_list', 'ci_list', 'contact_list', 'status', 'reason', 'requestor_id', 'customer_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', 'change_log', 'fallback', 'approval_date', 'approval_comment')); + MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'start_date', 'status', 'reason', 'requestor_id', 'customer_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', 'change_log', 'fallback', 'approval_date', 'approval_comment')); + MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'start_date', 'status', 'reason', 'requestor_id', 'customer_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', 'change_log', 'fallback', 'approval_date', 'approval_comment')); + MetaModel::Init_SetZListItems('list', array('title', 'start_date', 'status', 'requestor_id', 'customer_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', 'change_log', 'fallback', 'approval_date', 'approval_comment')); + + MetaModel::Init_OverloadStateAttribute('new', 'approval_date', OPT_ATT_HIDDEN); + MetaModel::Init_OverloadStateAttribute('new', 'approval_comment', OPT_ATT_HIDDEN); + + MetaModel::Init_OverloadStateAttribute('approved', 'approval_date', OPT_ATT_MUSTCHANGE); + MetaModel::Init_OverloadStateAttribute('approved', 'approval_comment', OPT_ATT_MUSTCHANGE); + + MetaModel::Init_OverloadStateAttribute('implemented', 'approval_date', OPT_ATT_READONLY); + MetaModel::Init_OverloadStateAttribute('implemented', 'approval_comment', OPT_ATT_READONLY); + } +} + +class NormalChange extends ApprovedChange +{ + public static function Init() + { + $aParams = array + ( + "category" => "bizmodel,searchable,changemgmt", + "key_type" => "autoincrement", + "name_attcode" => "ref", + "state_attcode" => "", + "reconc_keys" => array("ref"), + "db_table" => "change_normal", + "db_key_field" => "id", + "db_finalclass_field" => "", + "display_template" => "", + ); + MetaModel::Init_Params($aParams); + MetaModel::Init_InheritAttributes(); + MetaModel::Init_InheritLifecycle(); + + MetaModel::Init_AddAttribute(new AttributeDate("acceptance_date", array("allowed_values"=>null, "sql"=>"acceptance_date", "default_value"=>"", "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', 'ticket_log', 'start_date', 'document_list', 'ci_list', 'contact_list', 'status', 'reason', 'requestor_id', 'customer_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', 'change_log', 'fallback', 'approval_date', 'approval_comment', 'acceptance_date', 'acceptance_comment')); + MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'start_date', 'status', 'reason', 'requestor_id', 'customer_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', 'change_log', 'fallback')); + MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'start_date', 'status', 'reason', 'requestor_id', 'customer_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', 'change_log', 'fallback')); + MetaModel::Init_SetZListItems('list', array('title', 'start_date', 'status', 'requestor_id', 'customer_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', 'change_log', 'fallback')); + + MetaModel::Init_OverloadStateAttribute('new', 'acceptance_date', OPT_ATT_HIDDEN); + MetaModel::Init_OverloadStateAttribute('new', 'acceptance_comment', OPT_ATT_HIDDEN); + + MetaModel::Init_OverloadStateAttribute('validated', 'acceptance_date', OPT_ATT_MUSTCHANGE); + MetaModel::Init_OverloadStateAttribute('validated', 'acceptance_comment', OPT_ATT_MUSTCHANGE); + + MetaModel::Init_OverloadStateAttribute('plannedschedule', 'acceptance_date', OPT_ATT_READONLY); + MetaModel::Init_OverloadStateAttribute('plannedschedule', 'acceptance_comment', OPT_ATT_READONLY); + + MetaModel::Init_DefineTransition("new", "ev_validate", array("target_state"=>"validated", "actions"=>array('SetLastUpDate'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("new", "ev_reject", array("target_state"=>"rejected", "actions"=>array('SetLastUpDate'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("rejected", "ev_reopen", array("target_state"=>"new", "actions"=>array('SetLastUpDate'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("validated", "ev_assign", array("target_state"=>"assigned", "actions"=>array('SetLastUpDate'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("assigned", "ev_plan", array("target_state"=>"plannedscheduled", "actions"=>array('SetLastUpDate'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("plannedscheduled", "ev_approve", array("target_state"=>"approved", "actions"=>array('SetLastUpDate'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("plannedscheduled", "ev_notapprove", array("target_state"=>"notapproved", "actions"=>array('SetLastUpDate'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("notapproved", "ev_replan", array("target_state"=>"plannedscheduled", "actions"=>array('SetLastUpDate'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("approved", "ev_implement", array("target_state"=>"implemented", "actions"=>array('SetLastUpDate'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("implemented", "ev_monitor", array("target_state"=>"monitored", "actions"=>array('SetLastUpDate'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("implemented", "ev_finish", array("target_state"=>"closed", "actions"=>array('SetClosureDate','SetLastUpDate'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("monitored", "ev_finish", array("target_state"=>"closed", "actions"=>array('SetClosureDate','SetLastUpDate'), "user_restriction"=>null)); + } +} + +class EmergencyChange extends ApprovedChange +{ + public static function Init() + { + $aParams = array + ( + "category" => "bizmodel,searchable,changemgmt", + "key_type" => "autoincrement", + "name_attcode" => "ref", + "state_attcode" => "", + "reconc_keys" => array("ref"), + "db_table" => "change_emergency", + "db_key_field" => "id", + "db_finalclass_field" => "", + "display_template" => "", + ); + MetaModel::Init_Params($aParams); + MetaModel::Init_InheritAttributes(); + MetaModel::Init_InheritLifecycle(); + + MetaModel::Init_SetZListItems('details', array('title', 'ticket_log', 'start_date', 'document_list', 'ci_list', 'contact_list', 'status', 'reason', 'requestor_id', 'customer_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', 'change_log', 'fallback', 'approval_date', 'approval_comment')); + MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'start_date', 'status', 'reason', 'requestor_id', 'customer_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', 'change_log', 'fallback', 'approval_date', 'approval_comment')); + MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'start_date', 'status', 'reason', 'requestor_id', 'customer_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', 'change_log', 'fallback', 'approval_date', 'approval_comment')); + MetaModel::Init_SetZListItems('list', array('title', 'start_date', 'status', 'requestor_id', 'customer_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', 'change_log', 'fallback', 'approval_date', 'approval_comment')); + + MetaModel::Init_DefineTransition("new", "ev_assign", array("target_state"=>"assigned", "actions"=>array('SetLastUpDate'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("assigned", "ev_plan", array("target_state"=>"plannedscheduled", "actions"=>array('SetLastUpDate'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("plannedscheduled", "ev_approve", array("target_state"=>"approved", "actions"=>array('SetLastUpDate'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("plannedscheduled", "ev_notapprove", array("target_state"=>"notapproved", "actions"=>array('SetLastUpDate'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("notapproved", "ev_replan", array("target_state"=>"plannedscheduled", "actions"=>array('SetLastUpDate'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("approved", "ev_implement", array("target_state"=>"implemented", "actions"=>array('SetLastUpDate'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("implemented", "ev_monitor", array("target_state"=>"monitored", "actions"=>array('SetLastUpDate'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("implemented", "ev_finish", array("target_state"=>"closed", "actions"=>array('SetClosureDate','SetLastUpDate'), "user_restriction"=>null)); + MetaModel::Init_DefineTransition("monitored", "ev_finish", array("target_state"=>"closed", "actions"=>array('SetClosureDate','SetLastUpDate'), "user_restriction"=>null)); + } +} + + +$oMyMenuGroup = new MenuGroup('ChangeManagement', 1 /* fRank */); + +new OQLMenuNode('Changes', 'SELECT Change', $oMyMenuGroup->GetIndex(), 0 /* fRank */); +new OQLMenuNode('WaitingApproval', 'SELECT ApprovedChange WHERE status IN ("new")', $oMyMenuGroup->GetIndex(), 0 /* fRank */); +new OQLMenuNode('WaitingAcceptance', 'SELECT NormalChange WHERE status IN ("new")', $oMyMenuGroup->GetIndex(), 0 /* fRank */); + ?> diff --git a/modules/itop-incident-mgmt-1.0.0/en.dict.itop-incident-mgmt.php b/modules/itop-incident-mgmt-1.0.0/en.dict.itop-incident-mgmt.php index c24bd674b..62818b4ab 100644 --- a/modules/itop-incident-mgmt-1.0.0/en.dict.itop-incident-mgmt.php +++ b/modules/itop-incident-mgmt-1.0.0/en.dict.itop-incident-mgmt.php @@ -23,6 +23,16 @@ * @license http://www.opensource.org/licenses/gpl-3.0.html LGPL */ +Dict::Add('EN US', 'English', 'English', array( + 'Menu:IncidentManagement' => 'Incidents', + 'Menu:Incidents' => 'Incidents', + 'Menu:Incidents+' => 'Incidents', + 'Menu:ClosedIncidents' => 'Closed incidents', + 'Menu:ClosedIncidents+' => 'Closed incidents', + 'Menu:OpenedIncidents' => 'Opened incidents', + 'Menu:OpenedIncidents+' => 'Opened incidents', +)); + // Dictionnay conventions // Class: // Class:+ @@ -33,19 +43,23 @@ // Class:/Stimulus: // Class:/Stimulus:+ -////////////////////////////////////////////////////////////////////// -// Classes in 'bizmodel' -////////////////////////////////////////////////////////////////////// +// +// Class: Incident // -// Dictionnay conventions -// Class: -// Class:+ -// Class:/Attribute: -// Class:/Attribute:+ -// Class:/Attribute:/Value: -// Class:/Attribute:/Value:+ -// Class:/Stimulus: -// Class:/Stimulus:+ +Dict::Add('EN US', 'English', 'English', array( + 'Class:Incident' => 'Incident', + 'Class:Incident+' => '', + 'Class:Incident/Stimulus:ev_assign' => 'Assign', + 'Class:Incident/Stimulus:ev_assign+' => '', + 'Class:Incident/Stimulus:ev_reassign' => 'Reassign', + 'Class:Incident/Stimulus:ev_reassign+' => '', + 'Class:Incident/Stimulus:ev_timeout' => 'ev_timeout', + 'Class:Incident/Stimulus:ev_timeout+' => '', + 'Class:Incident/Stimulus:ev_resolve' => 'Mark as resolved', + 'Class:Incident/Stimulus:ev_resolve+' => '', + 'Class:Incident/Stimulus:ev_close' => 'Close', + 'Class:Incident/Stimulus:ev_close+' => '', +)); ?> diff --git a/modules/itop-request-mgmt-1.0.0/en.dict.itop-request-mgmt.php b/modules/itop-request-mgmt-1.0.0/en.dict.itop-request-mgmt.php index c24bd674b..f029b367f 100644 --- a/modules/itop-request-mgmt-1.0.0/en.dict.itop-request-mgmt.php +++ b/modules/itop-request-mgmt-1.0.0/en.dict.itop-request-mgmt.php @@ -23,6 +23,16 @@ * @license http://www.opensource.org/licenses/gpl-3.0.html LGPL */ +Dict::Add('EN US', 'English', 'English', array( + 'Menu:RequestManagement' => 'Helpdesk', + 'Menu:UserRequests' => 'All requests', + 'Menu:UserRequests+' => 'All requests, whatever their state', + 'Menu:ClosedRequests' => 'Closed requests', + 'Menu:ClosedRequests+' => 'Closed requests', + 'Menu:OpenedRequests' => 'Opened requests', + 'Menu:OpenedRequests+' => 'Opened requests', +)); + // Dictionnay conventions // Class: // Class:+ @@ -33,19 +43,23 @@ // Class:/Stimulus: // Class:/Stimulus:+ -////////////////////////////////////////////////////////////////////// -// Classes in 'bizmodel' -////////////////////////////////////////////////////////////////////// +// +// Class: UserRequest // -// Dictionnay conventions -// Class: -// Class:+ -// Class:/Attribute: -// Class:/Attribute:+ -// Class:/Attribute:/Value: -// Class:/Attribute:/Value:+ -// Class:/Stimulus: -// Class:/Stimulus:+ +Dict::Add('EN US', 'English', 'English', array( + 'Class:UserRequest' => 'User Request', + 'Class:UserRequest+' => '', + '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+' => '', +)); ?> diff --git a/modules/itop-tickets-1.0.0/en.dict.itop-tickets.php b/modules/itop-tickets-1.0.0/en.dict.itop-tickets.php index c24bd674b..38a722398 100644 --- a/modules/itop-tickets-1.0.0/en.dict.itop-tickets.php +++ b/modules/itop-tickets-1.0.0/en.dict.itop-tickets.php @@ -33,19 +33,199 @@ // Class:/Stimulus: // Class:/Stimulus:+ -////////////////////////////////////////////////////////////////////// -// Classes in 'bizmodel' -////////////////////////////////////////////////////////////////////// + +// +// Class: Ticket // -// Dictionnay conventions -// Class: -// Class:+ -// Class:/Attribute: -// Class:/Attribute:+ -// Class:/Attribute:/Value: -// Class:/Attribute:/Value:+ -// Class:/Stimulus: -// Class:/Stimulus:+ +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' => 'finalclass', + 'Class:Ticket/Attribute:finalclass+' => '', +)); + +// +// Class: lnkTicketToDoc +// + +Dict::Add('EN US', 'English', 'English', array( + 'Class:lnkTicketToDoc' => 'lnkTicketToDoc', + 'Class:lnkTicketToDoc+' => '', + 'Class:lnkTicketToDoc/Attribute:ticket_id' => 'ticket_id', + 'Class:lnkTicketToDoc/Attribute:ticket_id+' => '', + 'Class:lnkTicketToDoc/Attribute:ticket_ref' => 'Ticket #', + 'Class:lnkTicketToDoc/Attribute:ticket_ref+' => '', + 'Class:lnkTicketToDoc/Attribute:document_id' => 'Document', + 'Class:lnkTicketToDoc/Attribute:document_id+' => '', + 'Class:lnkTicketToDoc/Attribute:document_name' => 'Document', + 'Class:lnkTicketToDoc/Attribute:document_name+' => '', +)); + +// +// Class: lnkTicketToContact +// + +Dict::Add('EN US', 'English', 'English', array( + 'Class:lnkTicketToContact' => 'lnkTicketToContact', + 'Class:lnkTicketToContact+' => '', + 'Class:lnkTicketToContact/Attribute:ticket_id' => 'ticket_id', + 'Class:lnkTicketToContact/Attribute:ticket_id+' => '', + 'Class:lnkTicketToContact/Attribute:ticket_ref' => 'Ticket #', + 'Class:lnkTicketToContact/Attribute:ticket_ref+' => '', + 'Class:lnkTicketToContact/Attribute:contact_id' => 'Contact', + 'Class:lnkTicketToContact/Attribute:contact_id+' => '', + 'Class:lnkTicketToContact/Attribute:contact_name' => 'Contact', + 'Class:lnkTicketToContact/Attribute:contact_name+' => '', + 'Class:lnkTicketToContact/Attribute:contact_email' => 'Email', + 'Class:lnkTicketToContact/Attribute:contact_email+' => '', +)); + +// +// Class: lnkTicketToCI +// + +Dict::Add('EN US', 'English', 'English', array( + 'Class:lnkTicketToCI' => 'lnkTicketToCI', + 'Class:lnkTicketToCI+' => '', + 'Class:lnkTicketToCI/Attribute:ticket_id' => 'ticket_id', + '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: 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: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:customer_id' => 'Customer', + 'Class:ResponseTicket/Attribute:customer_id+' => '', + 'Class:ResponseTicket/Attribute:customer_name' => 'Customer', + 'Class:ResponseTicket/Attribute:customer_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' => 'Lowest', + 'Class:ResponseTicket/Attribute:priority/Value:1+' => '', + 'Class:ResponseTicket/Attribute:priority/Value:2' => 'To be done', + 'Class:ResponseTicket/Attribute:priority/Value:2+' => '', + 'Class:ResponseTicket/Attribute:priority/Value:3' => 'Top priority', + '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:closure_date' => 'Closed', + 'Class:ResponseTicket/Attribute:closure_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:escalation_deadline' => 'Escalation deadline', + 'Class:ResponseTicket/Attribute:escalation_deadline+' => '', + 'Class:ResponseTicket/Attribute:closure_deadline' => 'Closure deadline', + 'Class:ResponseTicket/Attribute:closure_deadline+' => '', + 'Class:ResponseTicket/Attribute:resolution_code' => 'Resoluion 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+' => '', +)); + ?> diff --git a/modules/itop-tickets-1.0.0/module.itop-tickets.php b/modules/itop-tickets-1.0.0/module.itop-tickets.php index be2551011..1fbfa2f95 100644 --- a/modules/itop-tickets-1.0.0/module.itop-tickets.php +++ b/modules/itop-tickets-1.0.0/module.itop-tickets.php @@ -31,8 +31,8 @@ SetupWebPage::AddModule( // Documentation // - 'doc.manual_setup' => 'aaa', - 'doc.more_information' => 'aaa', + 'doc.manual_setup' => '', + 'doc.more_information' => '', ) );