From edce93282b8f7f67f89b89da93125143ecd8ba0d Mon Sep 17 00:00:00 2001 From: Romain Quetiez Date: Fri, 18 Oct 2013 15:54:54 +0000 Subject: [PATCH] #792 Duplicate entries in the parent/child tickets when updating the case log and applying a stimulus (e.g. Close the WO) at the same time. SVN:trunk[2930] --- .../datamodel.itop-incident-mgmt-itil.xml | 48 +++++++------------ .../datamodel.itop-request-mgmt-itil.xml | 31 ++++-------- .../datamodel.itop-request-mgmt.xml | 31 ++++-------- .../itop-tickets/datamodel.itop-tickets.xml | 27 +++-------- 4 files changed, 41 insertions(+), 96 deletions(-) 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 796de4bf1..76f02f0af 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 @@ -1534,14 +1534,10 @@ { if (!MetaModel::IsValidClass('UserRequest')) return true; // Do nothing - $sLogPublic = utils::ReadPostedParam('attr_public_log', null,false,'raw_data'); - if ( $sLogPublic != null) + $oLog = $this->Get('public_log'); + $sLogPublic = $oLog->GetModifiedEntry(); + if ($sLogPublic != '') { - $oMyChange = MetaModel::NewObject("CMDBChange"); - $oMyChange->Set("date", time()); - $sUserString = CMDBChange::GetCurrentUserName(); - $oMyChange->Set("userinfo", $sUserString."(automatic update)"); - $iChangeId = $oMyChange->DBInsert(); $sOQL = "SELECT UserRequest WHERE parent_incident_id=:ticket"; $oChildRequestSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL), array(), @@ -1552,18 +1548,14 @@ while($oRequest = $oChildRequestSet->Fetch()) { $oRequest->set('public_log',$sLogPublic); - $oRequest->DBUpdateTracked($oMyChange); + $oRequest->DBUpdate(); } } - $sLogPrivate = utils::ReadPostedParam('attr_private_log', null,false,'raw_data'); - if ( $sLogPrivate != null) + $oLog = $this->Get('private_log'); + $sLogPrivate = $oLog->GetModifiedEntry(); + if ($sLogPrivate != '') { - $oMyChange = MetaModel::NewObject("CMDBChange"); - $oMyChange->Set("date", time()); - $sUserString = CMDBChange::GetCurrentUserName(); - $oMyChange->Set("userinfo", $sUserString."(automatic update)"); - $iChangeId = $oMyChange->DBInsert(); $sOQL = "SELECT UserRequest WHERE parent_incident_id=:ticket"; $oChildRequestSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL), array(), @@ -1574,7 +1566,7 @@ while($oRequest = $oChildRequestSet->Fetch()) { $oRequest->set('private_log',$sLogPrivate); - $oRequest->DBUpdateTracked($oMyChange); + $oRequest->DBUpdate(); } } return true; @@ -1587,14 +1579,10 @@ LifecycleAction Get('public_log'); + $sLogPublic = $oLog->GetModifiedEntry(); + if ($sLogPublic != '') { - $oMyChange = MetaModel::NewObject("CMDBChange"); - $oMyChange->Set("date", time()); - $sUserString = CMDBChange::GetCurrentUserName(); - $oMyChange->Set("userinfo", $sUserString."(automatic update)"); - $iChangeId = $oMyChange->DBInsert(); $sOQL = "SELECT Incident WHERE parent_incident_id=:ticket"; $oChildIncidentSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL), array(), @@ -1605,18 +1593,14 @@ while($oIncident = $oChildIncidentSet->Fetch()) { $oIncident->set('public_log',$sLogPublic); - $oIncident->DBUpdateTracked($oMyChange); + $oIncident->DBUpdate(); } } - $sLogPrivate = utils::ReadPostedParam('attr_private_log', null,false,'raw_data'); - if ( $sLogPrivate != null) + $oLog = $this->Get('private_log'); + $sLogPrivate = $oLog->GetModifiedEntry(); + if ($sLogPrivate != '') { - $oMyChange = MetaModel::NewObject("CMDBChange"); - $oMyChange->Set("date", time()); - $sUserString = CMDBChange::GetCurrentUserName(); - $oMyChange->Set("userinfo", $sUserString."(automatic update)"); - $iChangeId = $oMyChange->DBInsert(); $sOQL = "SELECT Incident WHERE parent_incident_id=:ticket"; $oChildIncidentSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL), array(), @@ -1627,7 +1611,7 @@ while($oIncident = $oChildIncidentSet->Fetch()) { $oIncident->set('private_log',$sLogPrivate); - $oIncident->DBUpdateTracked($oMyChange); + $oIncident->DBUpdate(); } } return true; 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 4a49d2a3e..6d41746f5 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 @@ -1859,11 +1859,6 @@ Set("date", time()); - $sUserString = CMDBChange::GetCurrentUserName(); - $oMyChange->Set("userinfo", $sUserString."(automatic resolution)"); - $iChangeId = $oMyChange->DBInsert(); $sOQL = "SELECT UserRequest WHERE parent_request_id=:ticket"; $oChildRequestSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL), array(), @@ -1882,7 +1877,7 @@ $oRequest->set('resolution_code',$this->Get('resolution_code')); $oRequest->set('solution','Automatically resolved by request:[[UserRequest:'.$this->Get('ref').']]'); $oRequest->ApplyStimulus('ev_autoresolve'); - $oRequest->DBUpdateTracked($oMyChange); + $oRequest->DBUpdate(); } } return true; @@ -1895,14 +1890,10 @@ LifecycleAction Get('public_log'); + $sLogPublic = $oLog->GetModifiedEntry(); + if ($sLogPublic != '') { - $oMyChange = MetaModel::NewObject("CMDBChange"); - $oMyChange->Set("date", time()); - $sUserString = CMDBChange::GetCurrentUserName(); - $oMyChange->Set("userinfo", $sUserString."(automatic update)"); - $iChangeId = $oMyChange->DBInsert(); $sOQL = "SELECT UserRequest WHERE parent_request_id=:ticket"; $oChildRequestSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL), array(), @@ -1913,18 +1904,14 @@ while($oRequest = $oChildRequestSet->Fetch()) { $oRequest->set('public_log',$sLogPublic); - $oRequest->DBUpdateTracked($oMyChange); + $oRequest->DBUpdate(); } } - $sLogPrivate = utils::ReadPostedParam('attr_private_log', null,false,'raw_data'); - if ( $sLogPrivate != null) + $oLog = $this->Get('private_log'); + $sLogPrivate = $oLog->GetModifiedEntry(); + if ($sLogPrivate != '') { - $oMyChange = MetaModel::NewObject("CMDBChange"); - $oMyChange->Set("date", time()); - $sUserString = CMDBChange::GetCurrentUserName(); - $oMyChange->Set("userinfo", $sUserString."(automatic update)"); - $iChangeId = $oMyChange->DBInsert(); $sOQL = "SELECT UserRequest WHERE parent_request_id=:ticket"; $oChildRequestSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL), array(), @@ -1935,7 +1922,7 @@ while($oRequest = $oChildRequestSet->Fetch()) { $oRequest->set('private_log',$sLogPrivate); - $oRequest->DBUpdateTracked($oMyChange); + $oRequest->DBUpdate(); } } return true; 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 075378a0f..b5200b961 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 @@ -1845,11 +1845,6 @@ Set("date", time()); - $sUserString = CMDBChange::GetCurrentUserName(); - $oMyChange->Set("userinfo", $sUserString."(automatic resolution)"); - $iChangeId = $oMyChange->DBInsert(); $sOQL = "SELECT UserRequest WHERE parent_request_id=:ticket"; $oChildRequestSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL), array(), @@ -1868,7 +1863,7 @@ $oRequest->set('resolution_code',$this->Get('resolution_code')); $oRequest->set('solution','Automatically resolved by request:[[UserRequest:'.$this->Get('ref').']]'); $oRequest->ApplyStimulus('ev_autoresolve'); - $oRequest->DBUpdateTracked($oMyChange); + $oRequest->DBUpdate(); } } return true; @@ -1881,14 +1876,10 @@ LifecycleAction Get('public_log'); + $sLogPublic = $oLog->GetModifiedEntry(); + if ($sLogPublic != '') { - $oMyChange = MetaModel::NewObject("CMDBChange"); - $oMyChange->Set("date", time()); - $sUserString = CMDBChange::GetCurrentUserName(); - $oMyChange->Set("userinfo", $sUserString."(automatic update)"); - $iChangeId = $oMyChange->DBInsert(); $sOQL = "SELECT UserRequest WHERE parent_request_id=:ticket"; $oChildRequestSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL), array(), @@ -1899,18 +1890,14 @@ while($oRequest = $oChildRequestSet->Fetch()) { $oRequest->set('public_log',$sLogPublic); - $oRequest->DBUpdateTracked($oMyChange); + $oRequest->DBUpdate(); } } - $sLogPrivate = utils::ReadPostedParam('attr_private_log', null,false,'raw_data'); - if ( $sLogPrivate != null) + $oLog = $this->Get('private_log'); + $sLogPrivate = $oLog->GetModifiedEntry(); + if ($sLogPrivate != '') { - $oMyChange = MetaModel::NewObject("CMDBChange"); - $oMyChange->Set("date", time()); - $sUserString = CMDBChange::GetCurrentUserName(); - $oMyChange->Set("userinfo", $sUserString."(automatic update)"); - $iChangeId = $oMyChange->DBInsert(); $sOQL = "SELECT UserRequest WHERE parent_request_id=:ticket"; $oChildRequestSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL), array(), @@ -1921,7 +1908,7 @@ while($oRequest = $oChildRequestSet->Fetch()) { $oRequest->set('private_log',$sLogPrivate); - $oRequest->DBUpdateTracked($oMyChange); + $oRequest->DBUpdate(); } } return true; diff --git a/datamodels/2.x/itop-tickets/datamodel.itop-tickets.xml b/datamodels/2.x/itop-tickets/datamodel.itop-tickets.xml index 24f127808..ef7ffd1ae 100755 --- a/datamodels/2.x/itop-tickets/datamodel.itop-tickets.xml +++ b/datamodels/2.x/itop-tickets/datamodel.itop-tickets.xml @@ -572,30 +572,17 @@ StimulusUserAction Get('log'); + $sLog = $oLog->GetModifiedEntry(); + if ($sLog != '') { - $oMyChange = MetaModel::NewObject("CMDBChange"); - $oMyChange->Set("date", time()); - $sUserString = CMDBChange::GetCurrentUserName(); - $oMyChange->Set("userinfo", $sUserString); - $iChangeId = $oMyChange->DBInsert(); - $sOQL = "SELECT Ticket WHERE id=:ticket"; - $oParentTicketSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL), - array(), - array( - 'ticket' => $this->Get('ticket_id'), - ) - ); - while($oTicket = $oParentTicketSet->Fetch()) + $oTicket = MetaModel::GetObject('Ticket', $this->Get('ticket_id'), false); + if ($oTicket) { - $oTicket->set('private_log',$sLog); - $oTicket->DBUpdateTracked($oMyChange); + $oTicket->Set('private_log', $sLog); + $oTicket->DBUpdate(); } - } - return true; - }]]>