#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]
This commit is contained in:
Romain Quetiez
2013-10-18 15:54:54 +00:00
parent 26dca89b19
commit edce93282b
4 changed files with 41 additions and 96 deletions

View File

@@ -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 @@
<type>LifecycleAction</type>
<code><![CDATA[ public function UpdateChildIncidentLog()
{
$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 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;

View File

@@ -1859,11 +1859,6 @@
<code><![CDATA[ public function resolveChilds($sStimulusCode)
{
$oMyChange = MetaModel::NewObject("CMDBChange");
$oMyChange->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 @@
<type>LifecycleAction</type>
<code><![CDATA[ public function UpdateChildRequestLog()
{
$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_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;

View File

@@ -1845,11 +1845,6 @@
<code><![CDATA[ public function resolveChilds($sStimulusCode)
{
$oMyChange = MetaModel::NewObject("CMDBChange");
$oMyChange->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 @@
<type>LifecycleAction</type>
<code><![CDATA[ public function UpdateChildRequestLog()
{
$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_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;

View File

@@ -572,30 +572,17 @@
<type>StimulusUserAction</type>
<code><![CDATA[ public function UpdateParentTicketLog()
{
$sLog = utils::ReadPostedParam('attr_log', null,false,'raw_data');
if ( $sLog != null)
$oLog = $this->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;
}]]></code>
</method>
<method id="OnUpdate">