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)'; }