diff --git a/datamodels/2.x/itop-change-mgmt-itil/datamodel.itop-change-mgmt-itil.xml b/datamodels/2.x/itop-change-mgmt-itil/datamodel.itop-change-mgmt-itil.xml
index 3f1fb559b..559316f6e 100755
--- a/datamodels/2.x/itop-change-mgmt-itil/datamodel.itop-change-mgmt-itil.xml
+++ b/datamodels/2.x/itop-change-mgmt-itil/datamodel.itop-change-mgmt-itil.xml
@@ -976,14 +976,14 @@
-
+
EVENT_SERVICE_DB_INSERT_REQUESTED
- OnInsertRequested
+ OnChangeInsertRequested
0
-
+
EVENT_SERVICE_DB_UPDATE_REQUESTED
- OnUpdateRequested
+ OnChangeUpdateRequested
0
@@ -1027,12 +1027,12 @@
return true;
}]]>
-
+
false
public
- Overload-DBObject
+ Overload-ExNihilo
UpdateImpactedItems();
$this->SetIfNull('creation_date', time());
@@ -1040,12 +1040,12 @@
}]]>
-
+
false
public
- Overload-DBObject
+ Overload-ExNihilo
ListChanges();
if (array_key_exists('functionalcis_list', $aChanges))
diff --git a/datamodels/2.x/itop-change-mgmt/datamodel.itop-change-mgmt.xml b/datamodels/2.x/itop-change-mgmt/datamodel.itop-change-mgmt.xml
index eba26af97..fd595937b 100755
--- a/datamodels/2.x/itop-change-mgmt/datamodel.itop-change-mgmt.xml
+++ b/datamodels/2.x/itop-change-mgmt/datamodel.itop-change-mgmt.xml
@@ -513,14 +513,14 @@
-
+
EVENT_SERVICE_DB_INSERT_REQUESTED
- OnInsertRequested
+ OnChangeInsertRequested
0
-
+
EVENT_SERVICE_DB_UPDATE_REQUESTED
- OnUpdateRequested
+ OnChangeUpdateRequested
0
@@ -578,24 +578,24 @@
return true;
}]]>
-
+
false
public
- Overload-DBObject
+ Overload-ExNihilo
UpdateImpactedItems();
$this->SetIfNull('creation_date', time());
$this->SetIfNull('last_update', time());
}]]>
-
+
false
public
- Overload-DBObject
+ Overload-ExNihilo
ListChanges();
if (array_key_exists('functionalcis_list', $aChanges))
diff --git a/datamodels/2.x/itop-incident-mgmt-itil/datamodel.itop-incident-mgmt-itil.xml b/datamodels/2.x/itop-incident-mgmt-itil/datamodel.itop-incident-mgmt-itil.xml
index 4e6f55321..0e79ccc0b 100755
--- a/datamodels/2.x/itop-incident-mgmt-itil/datamodel.itop-incident-mgmt-itil.xml
+++ b/datamodels/2.x/itop-incident-mgmt-itil/datamodel.itop-incident-mgmt-itil.xml
@@ -1053,24 +1053,24 @@
-
+
EVENT_SERVICE_DB_INSERT_REQUESTED
- OnInsertRequested
+ OnIncidentInsertRequested
0
-
+
EVENT_SERVICE_DB_UPDATE_REQUESTED
- OnUpdateRequested
+ OnIncidentUpdateRequested
0
-
+
EVENT_SERVICE_DB_COMPUTE_VALUES
- OnComputeValues
+ OnIncidentComputeValues
0
-
+
EVENT_SERVICE_DB_CHECK_TO_WRITE
- OnCheckToWrite
+ OnIncidentCheckToWrite
0
@@ -1144,11 +1144,11 @@
return true;
}]]>
-
+
false
public
- Overload-DBObject
- Overload-ExNihilo
+ IsNew() && ($this->Get('parent_incident_id') == $this->GetKey()))
{
@@ -1198,11 +1198,11 @@
return $iPriority;
}]]>
-
+
false
public
- Overload-DBObject
- Overload-ExNihilo
+ UpdateImpactedItems();
}]]>
-
+
false
public
- Overload-DBObject
- Overload-ExNihilo
+ ComputeImpactedItems();
@@ -1496,11 +1496,11 @@
$this->SetIfNull('start_date', time());
}]]>
-
+
false
public
- Overload-DBObject
- Overload-ExNihilo
+ ListChanges();
if (array_key_exists('functionalcis_list', $aChanges))
diff --git a/datamodels/2.x/itop-problem-mgmt/datamodel.itop-problem-mgmt.xml b/datamodels/2.x/itop-problem-mgmt/datamodel.itop-problem-mgmt.xml
index 1fb57f3b8..c97b9b600 100755
--- a/datamodels/2.x/itop-problem-mgmt/datamodel.itop-problem-mgmt.xml
+++ b/datamodels/2.x/itop-problem-mgmt/datamodel.itop-problem-mgmt.xml
@@ -424,19 +424,19 @@
-
+
EVENT_SERVICE_DB_INSERT_REQUESTED
- OnInsertRequested
+ OnProblemInsertRequested
0
-
+
EVENT_SERVICE_DB_UPDATE_REQUESTED
- OnUpdateRequested
+ OnProblemUpdateRequested
0
-
+
EVENT_SERVICE_DB_COMPUTE_VALUES
- OnComputeValues
+ OnProblemComputeValues
0
@@ -537,31 +537,31 @@
return $iPriority;
}]]>
-
+
false
public
- Overload-DBObject
- Overload-ExNihilo
+ Set('priority', $this->ComputePriority());
}]]>
-
+
false
public
- Overload-DBObject
- Overload-ExNihilo
+ SetIfNull('start_date', time());
$this->SetIfNull('last_update', time());
}]]>
-
+
false
public
- Overload-DBObject
- Overload-ExNihilo
+ Set('last_update', time());
}]]>
diff --git a/datamodels/2.x/itop-request-mgmt-itil/datamodel.itop-request-mgmt-itil.xml b/datamodels/2.x/itop-request-mgmt-itil/datamodel.itop-request-mgmt-itil.xml
index 1b19bbb7c..79138568e 100755
--- a/datamodels/2.x/itop-request-mgmt-itil/datamodel.itop-request-mgmt-itil.xml
+++ b/datamodels/2.x/itop-request-mgmt-itil/datamodel.itop-request-mgmt-itil.xml
@@ -1199,24 +1199,24 @@
-
+
EVENT_SERVICE_DB_INSERT_REQUESTED
- OnInsertRequested
+ OnUserRequestInsertRequested
0
-
+
EVENT_SERVICE_DB_UPDATE_REQUESTED
- OnUpdateRequested
+ OnUserRequestUpdateRequested
0
-
+
EVENT_SERVICE_DB_COMPUTE_VALUES
- OnComputeValues
+ OnUserRequestComputeValues
0
-
+
EVENT_SERVICE_DB_CHECK_TO_WRITE
- OnCheckToWrite
+ OnUserRequestCheckToWrite
0
@@ -1304,11 +1304,11 @@
return true;
}]]>
-
+
false
public
- Overload-DBObject
- Overload-ExNihilo
+ IsNew() && ($this->Get('parent_request_id') == $this->GetKey()))
{
@@ -1358,11 +1358,11 @@
return $iPriority;
}]]>
-
+
false
public
- Overload-DBObject
- Overload-ExNihilo
+ Set('priority', $this->ComputePriority());
@@ -1555,24 +1555,24 @@
$this->UpdateImpactedItems();
}]]>
-
+
false
public
- Overload-DBObject
+ Overload-ExNihilo
ComputeImpactedItems();
$this->SetIfNull('last_update', time());
$this->SetIfNull('start_date', time());
}]]>
-
+
false
public
- Overload-DBObject
+ Overload-ExNihilo
ListChanges();
if (array_key_exists('functionalcis_list', $aChanges))
diff --git a/datamodels/2.x/itop-request-mgmt/datamodel.itop-request-mgmt.xml b/datamodels/2.x/itop-request-mgmt/datamodel.itop-request-mgmt.xml
index 6599945aa..b99a9930d 100755
--- a/datamodels/2.x/itop-request-mgmt/datamodel.itop-request-mgmt.xml
+++ b/datamodels/2.x/itop-request-mgmt/datamodel.itop-request-mgmt.xml
@@ -1232,24 +1232,24 @@
-
+
EVENT_SERVICE_DB_INSERT_REQUESTED
- OnInsertRequested
+ OnUserRequestInsertRequested
0
-
+
EVENT_SERVICE_DB_UPDATE_REQUESTED
- OnUpdateRequested
+ OnUserRequestUpdateRequested
0
-
+
EVENT_SERVICE_DB_COMPUTE_VALUES
- OnComputeValues
+ OnUserRequestComputeValues
0
-
+
EVENT_SERVICE_DB_CHECK_TO_WRITE
- OnCheckToWrite
+ OnUserRequestCheckToWrite
0
@@ -1337,11 +1337,11 @@
return true;
}]]>
-
+
false
public
- Overload-DBObject
- Overload-ExNihilo
+ IsNew() && ($this->Get('parent_request_id') == $this->GetKey()))
{
@@ -1392,11 +1392,11 @@
return $iPriority;
}]]>
-
+
false
public
- Overload-DBObject
- Overload-ExNihilo
+ Set('priority', $this->ComputePriority());
@@ -1601,12 +1601,12 @@
$this->UpdateImpactedItems();
}]]>
-
+
false
public
- Internal
+ Overload-ExNihilo
ComputeImpactedItems();
@@ -1614,12 +1614,12 @@
$this->SetIfNull('start_date', time());
}]]>
-
+
false
public
- Internal
+ Overload-ExNihilo
ListChanges();
if (array_key_exists('functionalcis_list', $aChanges))
diff --git a/datamodels/2.x/itop-service-mgmt-provider/datamodel.itop-service-mgmt-provider.xml b/datamodels/2.x/itop-service-mgmt-provider/datamodel.itop-service-mgmt-provider.xml
index e1bcfbfb9..6c8b5d4d2 100755
--- a/datamodels/2.x/itop-service-mgmt-provider/datamodel.itop-service-mgmt-provider.xml
+++ b/datamodels/2.x/itop-service-mgmt-provider/datamodel.itop-service-mgmt-provider.xml
@@ -1588,18 +1588,18 @@ public function PrefillSearchForm(&$aContextParam)
-
+
EVENT_SERVICE_DB_CHECK_TO_WRITE
- OnCheckToWrite
+ OnSLACheckToWrite
0
-
+
false
public
Get("customercontracts_list");
foreach ($aCustomerContracts as $sAttCode => $oCustomerContracts)
diff --git a/datamodels/2.x/itop-tickets/datamodel.itop-tickets.xml b/datamodels/2.x/itop-tickets/datamodel.itop-tickets.xml
index 0c0f8d5cf..6549746e0 100755
--- a/datamodels/2.x/itop-tickets/datamodel.itop-tickets.xml
+++ b/datamodels/2.x/itop-tickets/datamodel.itop-tickets.xml
@@ -214,19 +214,24 @@
0
-
-
+
+
+ EVENT_SERVICE_DB_INSERT_REQUESTED
+ OnTicketInsertRequested
+ -10
+
+
+
+
false
public
- Overload-DBObject
+ Overload-ExNihilo
MakeTicketRef($iNextId);
$this->SetIfNull('ref', $sRef);
- $iKey = parent::DBInsertNoReload();
- return $iKey;
}
]]>
diff --git a/pages/schema.php b/pages/schema.php
index d987a56d2..53a19c647 100644
--- a/pages/schema.php
+++ b/pages/schema.php
@@ -283,22 +283,24 @@ function DisplayEvents(WebPage $oPage, $sClass)
$oTable = DataTableUIBlockFactory::MakeForStaticData(Dict::S('UI:Schema:Events:Defined'), $aColumns, $aRows);
$oPage->AddSubBlock($oTable);
- $aClasses = [];
- foreach (MetaModel::EnumChildClasses($sClass, ENUM_CHILD_CLASSES_ALL) as $sChildClass) {
- if (MetaModel::IsAbstract($sChildClass)) {
- continue;
- }
- $aClasses[] = $sChildClass;
- }
$aSources = [];
- foreach ($aClasses as $sChildClass) {
- $oObject = MetaModel::NewObject($sChildClass);
- $aSources[] = $oObject->GetObjectUniqId();
- foreach (MetaModel::EnumParentClasses($sChildClass, ENUM_PARENT_CLASSES_ALL, false) as $sParentClass) {
- if (!in_array($sParentClass, $aSources)) {
- $aSources[] = $sParentClass;
+ if (MetaModel::IsAbstract($sClass)) {
+ foreach (MetaModel::EnumChildClasses($sClass, ENUM_CHILD_CLASSES_ALL) as $sChildClass) {
+ if (!MetaModel::IsAbstract($sChildClass)) {
+ $oObject = MetaModel::NewObject($sChildClass);
+ $aSources[] = $oObject->GetObjectUniqId();
+ break;
}
}
+ foreach (MetaModel::EnumParentClasses($sClass, ENUM_PARENT_CLASSES_ALL, false) as $sParentClass) {
+ $aSources[] = $sParentClass;
+ }
+ } else {
+ $oObject = MetaModel::NewObject($sClass);
+ $aSources[] = $oObject->GetObjectUniqId();
+ foreach (MetaModel::EnumParentClasses($sClass, ENUM_PARENT_CLASSES_ALL, false) as $sParentClass) {
+ $aSources[] = $sParentClass;
+ }
}
$aListeners = [];
foreach (array_keys($aEvents) as $sEvent) {
@@ -321,9 +323,19 @@ function DisplayEvents(WebPage $oPage, $sClass)
'module' => ['label' => 'Module'],
];
$aRows = [];
+ $oReflectionClass = new ReflectionClass($sClass);
foreach ($aListeners as $aListener) {
if (is_object($aListener['callback'][0])) {
- $sListener = get_class($aListener['callback'][0]).'->'.$aListener['callback'][1].'(Combodo\iTop\Service\EventData $oEventData)';
+ $sListenerClass = $sClass;
+ if ($aListener['callback'][0] != $sClass) {
+ $oListenerReflectionClass = new ReflectionClass(get_class($aListener['callback'][0]));
+ if (!$oListenerReflectionClass->isSubclassOf($sClass)) {
+ $sListenerClass = get_class($aListener['callback'][0]);
+ } elseif (!$oReflectionClass->hasMethod($aListener['callback'][1])) {
+ continue;
+ }
+ }
+ $sListener = $sListenerClass.'->'.$aListener['callback'][1].'(Combodo\iTop\Service\EventData $oEventData)';
} else {
$sListener = $aListener['callback'][0].'::'.$aListener['callback'][1].'(Combodo\iTop\Service\EventData $oEventData)';
}